diff options
Diffstat (limited to 'searx/static/themes')
235 files changed, 19287 insertions, 0 deletions
diff --git a/searx/static/themes/courgette/css/style-rtl.css b/searx/static/themes/courgette/css/style-rtl.css new file mode 100644 index 000000000..e47453393 --- /dev/null +++ b/searx/static/themes/courgette/css/style-rtl.css @@ -0,0 +1 @@ +#search_submit,#sidebar,.right{right:auto;left:0}.q{padding:.5em 1em .5em 3em}.result .favicon{float:right;margin-left:.5em;margin-right:0}#results{padding:0 32px 0 272px}.search.center{padding-right:0;padding-left:17em}#pagination form+form{float:left;margin-top:-2em}.engine-table{text-align:right}
\ No newline at end of file diff --git a/searx/static/themes/courgette/css/style.css b/searx/static/themes/courgette/css/style.css new file mode 100644 index 000000000..508c4b605 --- /dev/null +++ b/searx/static/themes/courgette/css/style.css @@ -0,0 +1 @@ +a,h2{color:#666}.center,html{position:relative}#categories_container>div,.top_margin a{display:inline-block}#categories,.center{text-align:center}#categories .hidden,.cache_link,.highlight .c,.highlight .cm,.highlight .ge,.highlight .sd{font-style:italic}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]{-webkit-appearance:textfield}h2{text-transform:uppercase}body{font-family:sans-serif;line-height:1.5;margin:0;background:#EEE}html{min-height:100%}.title h1{font-size:7em;color:#3498DB;margin:-20px auto 0;line-height:100px;padding-bottom:20px}.center{max-width:70em;background:rgba(255,255,255,.6);padding:2em;margin:7% auto 0}.center.search{position:static;width:auto;background:0 0;margin:auto;padding-top:1.8em}@media screen and (min-width:1001px){.center:after{content:"";z-index:-1;background:url(../img/bg-body-index.jpg) no-repeat;background-size:cover;width:100%;height:100%;top:0;left:0;position:fixed}.center.search:after{content:none}}.autocompleter-choices{position:absolute;margin:0;padding:0;background:#FFF}.autocompleter-choices li{padding:.5em 1em}.autocompleter-choices li:hover{background:#3498DB;color:#FFF;cursor:pointer}.top_margin{position:absolute;bottom:-3.5em;width:100%;left:0}.top_margin a{margin-right:1em;color:#FFF;text-decoration:none}.top_margin a:focus,.top_margin a:hover{text-decoration:underline}@media screen and (max-width:1000px){.center{background:0 0}.top_margin a{color:#333}}.checkbox_container{margin-top:1.5em}.checkbox_container label{padding:.5em 1em;color:#333;cursor:pointer;font-size:.9em}.checkbox_container input[type=checkbox]:checked+label,.checkbox_container label:hover{background:#3498DB;color:#FFF}.checkbox_container input[type=checkbox]{position:absolute;top:-9999px}#categories .hidden{display:none;position:absolute;bottom:1em;left:0;text-align:center;width:100%;font-size:.9em;color:#333}#categories:hover .hidden,.right a{display:block}@media screen and (max-width:900px){#categories_container{letter-spacing:-5px}#categories_container>div{letter-spacing:normal;margin-top:1em}.checkbox_container{margin:0}.checkbox_container label{display:block;background:#CCC;padding:1em;border:1px solid #FFF}.top_margin{position:static}#categories .hidden{position:static;display:block}}@media screen and (max-width:900px) and (min-width:501px){#categories_container>div{width:31%;margin-left:2.333%}#categories_container>div:nth-child(3n+1){margin-left:0}}@media screen and (max-width:500px){#categories_container>div{width:48%;margin-left:2%;font-size:.9em}#categories_container>div:nth-child(2n+1){margin-left:0}.title h1{background:url(../img/searx-mobile.png) no-repeat;width:200px;height:39px}}#search_wrapper{position:relative}.q{padding:.5em 3em .5em 1em;width:100%;font-size:1.5em;border:0;color:#666}.cache_link,.result p{font-size:.9em}#search_submit{position:absolute;top:0;right:0;border:0;background:url(../img/search-icon.png) center center/65% auto no-repeat #3498DB;text-indent:-9999px;width:5em;height:100%;cursor:pointer}#sidebar,.right{position:fixed;width:15em;right:0;text-align:right}#search_submit:focus,#search_submit:hover{background-color:#0665A2}#sidebar{background:#3498DB;top:0;height:100%;padding:1.5em}.right{bottom:1.5em;z-index:1;padding:0 1.5em}.right a{color:#FFF;text-decoration:none}#sidebar form,#suggestions form,.row fieldset{display:inline-block}.right a:focus,.right a:hover{text-decoration:underline}#preferences{background:url(../img/preference-icon.png) right center/12% auto no-repeat;padding-right:1.8em}#search_url input{border:0;padding:.5em}#sidebar>div{margin-bottom:1em;color:#FFF}#sidebar input[type=submit]{background:#CCC;border:0;padding:.5em 1em;cursor:pointer;margin-top:.5em}#sidebar input[type=submit]:focus,#sidebar input[type=submit]:hover{color:#FFF;background-color:#0665A2}#results{padding:0 17em 0 2em}.result .engines{text-align:right}.result .content{margin:0;color:#666}.result .url{margin-top:0;color:#FF6530}.result .favicon{float:left;position:relative;top:.5em;margin-right:.5em}.definition_result{background:#CCC;padding:1em}.definition_result .result_title,.definition_result p{margin:0}.result_title{margin-bottom:0;font-weight:400}.result_title a{color:#3498DB;text-decoration:none}#answers,#suggestions span{color:#666}.result_title a:focus,.result_title a:hover{text-decoration:underline}.cache_link{color:#666}.search.center{padding-right:17em}#answers{border:2px solid #3498DB;padding:20px;text-align:center;max-width:70em;margin:0 auto 20px}#suggestions{margin-bottom:1em}#suggestions form{vertical-align:top;margin-bottom:.5em}#suggestions input[type=submit]{color:#333;padding:.5em 1em;border:0;background:#CCC;cursor:pointer}#suggestions input[type=submit]:focus,#suggestions input[type=submit]:hover{background:#3498DB;color:#FFF}#pagination{margin:1.5em 0 2em}#pagination form+form{float:right;margin-top:-2em}input[type=submit]{display:inline-block;background:#3498DB;color:#FFF;border:0;padding:.6em 1em;cursor:pointer}input[type=submit]:focus,input[type=submit]:hover{background:#0665A2}.row{max-width:60em;margin:auto}.row a{color:#3498DB}.row form{letter-spacing:-5px}.row form>*{letter-spacing:normal}.row p{margin:0}.row fieldset{width:48%;vertical-align:top}.row fieldset:last-of-type{display:block;width:auto;background:0 0;padding:0}fieldset,table tr:nth-child(odd){background:#CCC}.row fieldset:nth-child(odd){margin-right:2%}.row fieldset:nth-child(2){min-height:10.5em}@media screen and (max-width:900px){.row{margin:0 1em}.row fieldset{width:49%}.row fieldset,.row fieldset:nth-child(odd){margin-right:0}.row fieldset:first-child{width:100%;margin-right:0}.row fieldset:nth-child(even){margin-right:2%}}@media screen and (max-width:800px){.row fieldset,select{width:100%}table{font-size:.8em}#sidebar,.right{display:none}#results{padding:0 2em}.search.center{padding-right:2em}}@media screen and (max-width:400px){.row #categories_container>div{width:100%;margin-left:0}}fieldset{border:0;margin:1em 0;padding:1.5em}table{width:100%;text-align:left;border:1px solid #CCC;border-collapse:collapse}table th{background:#999;color:#FFF}table td,table th{padding:.5em 1em;border:1px solid #FFF}.engine_checkbox label{padding:.5em;background:#3498DB;color:#FFF;cursor:pointer}.engine_checkbox .deny{background:#3498DB}.engine_checkbox .allow{display:none;background:#666}.engine_checkbox input{display:none}.engine_checkbox input:checked+.allow{display:inline}.engine_checkbox input:checked+.allow+.deny{display:none}.row input[type=submit]{font-size:1em;margin:1em 0 2em}.row .right{position:static;display:inline-block}.row .right a{color:#333;width:auto;text-align:left;padding:0}.small_font{font-size:.8em}table th{padding:1em}legend{background:#EEE;padding:0 1em;position:relative}select{border:1px solid #DDD;padding:.5em .8em;font-size:1em}.highlight .hll{background-color:#ffc}.highlight{font-weight:700;background:#f8f8f8}.highlight .c{color:#408080}.highlight .err{border:1px solid red}.highlight .k{color:green;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#408080}.highlight .cp{color:#BC7A00}.highlight .c1,.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#A00000}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00A000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04D}.highlight .kc,.highlight .kd,.highlight .kn{color:green;font-weight:700}.highlight .kp{color:green}.highlight .kr{color:green;font-weight:700}.highlight .kt{color:#B00040}.highlight .m{color:#666}.highlight .s{color:#BA2121}.highlight .na{color:#7D9029}.highlight .nb{color:green}.highlight .nc{color:#00F;font-weight:700}.highlight .no{color:#800}.highlight .nd{color:#A2F}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#00F}.highlight .nl{color:#A0A000}.highlight .nn{color:#00F;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#19177C}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#666}.highlight .s2,.highlight .sb,.highlight .sc{color:#BA2121}.highlight .sd{color:#BA2121}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#BA2121}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#B68}.highlight .s1{color:#BA2121}.highlight .ss{color:#19177C}.highlight .bp{color:green}.highlight .vc,.highlight .vg,.highlight .vi{color:#19177C}.highlight .il{color:#666}.highlight pre{overflow:auto}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}
\ No newline at end of file diff --git a/searx/static/themes/courgette/img/bg-body-index.jpg b/searx/static/themes/courgette/img/bg-body-index.jpg Binary files differnew file mode 100644 index 000000000..ff28f5fc1 --- /dev/null +++ b/searx/static/themes/courgette/img/bg-body-index.jpg diff --git a/searx/static/themes/courgette/img/favicon.png b/searx/static/themes/courgette/img/favicon.png Binary files differnew file mode 100644 index 000000000..3818d3d60 --- /dev/null +++ b/searx/static/themes/courgette/img/favicon.png diff --git a/searx/static/themes/courgette/img/github_ribbon.png b/searx/static/themes/courgette/img/github_ribbon.png Binary files differnew file mode 100644 index 000000000..3799c2ea1 --- /dev/null +++ b/searx/static/themes/courgette/img/github_ribbon.png diff --git a/searx/static/themes/courgette/img/icons/icon_500px.ico b/searx/static/themes/courgette/img/icons/icon_500px.ico Binary files differnew file mode 100644 index 000000000..b01aa20b5 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_500px.ico diff --git a/searx/static/themes/courgette/img/icons/icon_bing.ico b/searx/static/themes/courgette/img/icons/icon_bing.ico Binary files differnew file mode 100644 index 000000000..5702749c1 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_bing.ico diff --git a/searx/static/themes/courgette/img/icons/icon_dailymotion.ico b/searx/static/themes/courgette/img/icons/icon_dailymotion.ico Binary files differnew file mode 100644 index 000000000..b161a57fb --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_dailymotion.ico diff --git a/searx/static/themes/courgette/img/icons/icon_deezer.ico b/searx/static/themes/courgette/img/icons/icon_deezer.ico Binary files differnew file mode 100644 index 000000000..d38c9b1f6 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_deezer.ico diff --git a/searx/static/themes/courgette/img/icons/icon_deviantart.ico b/searx/static/themes/courgette/img/icons/icon_deviantart.ico Binary files differnew file mode 100644 index 000000000..26c353325 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_deviantart.ico diff --git a/searx/static/themes/courgette/img/icons/icon_digg.ico b/searx/static/themes/courgette/img/icons/icon_digg.ico Binary files differnew file mode 100644 index 000000000..162e57038 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_digg.ico diff --git a/searx/static/themes/courgette/img/icons/icon_duckduckgo.ico b/searx/static/themes/courgette/img/icons/icon_duckduckgo.ico Binary files differnew file mode 100644 index 000000000..d093082cb --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_duckduckgo.ico diff --git a/searx/static/themes/courgette/img/icons/icon_flickr.ico b/searx/static/themes/courgette/img/icons/icon_flickr.ico Binary files differnew file mode 100644 index 000000000..e2304c587 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_flickr.ico diff --git a/searx/static/themes/courgette/img/icons/icon_github.ico b/searx/static/themes/courgette/img/icons/icon_github.ico Binary files differnew file mode 100644 index 000000000..133f0ca35 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_github.ico diff --git a/searx/static/themes/courgette/img/icons/icon_google play apps.ico b/searx/static/themes/courgette/img/icons/icon_google play apps.ico Binary files differnew file mode 100644 index 000000000..74c84470b --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_google play apps.ico diff --git a/searx/static/themes/courgette/img/icons/icon_google play movies.ico b/searx/static/themes/courgette/img/icons/icon_google play movies.ico Binary files differnew file mode 100644 index 000000000..74c84470b --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_google play movies.ico diff --git a/searx/static/themes/courgette/img/icons/icon_google play music.ico b/searx/static/themes/courgette/img/icons/icon_google play music.ico Binary files differnew file mode 100644 index 000000000..74c84470b --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_google play music.ico diff --git a/searx/static/themes/courgette/img/icons/icon_google.ico b/searx/static/themes/courgette/img/icons/icon_google.ico Binary files differnew file mode 100644 index 000000000..f594697d2 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_google.ico diff --git a/searx/static/themes/courgette/img/icons/icon_kickass.ico b/searx/static/themes/courgette/img/icons/icon_kickass.ico Binary files differnew file mode 100644 index 000000000..4aa2c77a5 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_kickass.ico diff --git a/searx/static/themes/courgette/img/icons/icon_openstreetmap.ico b/searx/static/themes/courgette/img/icons/icon_openstreetmap.ico Binary files differnew file mode 100644 index 000000000..b65863656 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_openstreetmap.ico diff --git a/searx/static/themes/courgette/img/icons/icon_searchcode code.ico b/searx/static/themes/courgette/img/icons/icon_searchcode code.ico Binary files differnew file mode 100644 index 000000000..dc099ef70 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_searchcode code.ico diff --git a/searx/static/themes/courgette/img/icons/icon_searchcode doc.ico b/searx/static/themes/courgette/img/icons/icon_searchcode doc.ico Binary files differnew file mode 100644 index 000000000..dc099ef70 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_searchcode doc.ico diff --git a/searx/static/themes/courgette/img/icons/icon_searchcode.ico b/searx/static/themes/courgette/img/icons/icon_searchcode.ico Binary files differnew file mode 100644 index 000000000..dc099ef70 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_searchcode.ico diff --git a/searx/static/themes/courgette/img/icons/icon_soundcloud.ico b/searx/static/themes/courgette/img/icons/icon_soundcloud.ico Binary files differnew file mode 100644 index 000000000..4130bea1b --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_soundcloud.ico diff --git a/searx/static/themes/courgette/img/icons/icon_stackoverflow.ico b/searx/static/themes/courgette/img/icons/icon_stackoverflow.ico Binary files differnew file mode 100644 index 000000000..b2242bc6c --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_stackoverflow.ico diff --git a/searx/static/themes/courgette/img/icons/icon_startpage.ico b/searx/static/themes/courgette/img/icons/icon_startpage.ico Binary files differnew file mode 100644 index 000000000..44b94a986 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_startpage.ico diff --git a/searx/static/themes/courgette/img/icons/icon_subtitleseeker.ico b/searx/static/themes/courgette/img/icons/icon_subtitleseeker.ico Binary files differnew file mode 100644 index 000000000..9a0565558 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_subtitleseeker.ico diff --git a/searx/static/themes/courgette/img/icons/icon_twitter.ico b/searx/static/themes/courgette/img/icons/icon_twitter.ico Binary files differnew file mode 100644 index 000000000..b4a71699a --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_twitter.ico diff --git a/searx/static/themes/courgette/img/icons/icon_vimeo.ico b/searx/static/themes/courgette/img/icons/icon_vimeo.ico Binary files differnew file mode 100644 index 000000000..4fe4336da --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_vimeo.ico diff --git a/searx/static/themes/courgette/img/icons/icon_wikipedia.ico b/searx/static/themes/courgette/img/icons/icon_wikipedia.ico Binary files differnew file mode 100644 index 000000000..e70021849 --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_wikipedia.ico diff --git a/searx/static/themes/courgette/img/icons/icon_yahoo.ico b/searx/static/themes/courgette/img/icons/icon_yahoo.ico Binary files differnew file mode 100644 index 000000000..9bd1d9f7c --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_yahoo.ico diff --git a/searx/static/themes/courgette/img/icons/icon_youtube.ico b/searx/static/themes/courgette/img/icons/icon_youtube.ico Binary files differnew file mode 100644 index 000000000..977887dbb --- /dev/null +++ b/searx/static/themes/courgette/img/icons/icon_youtube.ico diff --git a/searx/static/themes/courgette/img/preference-icon.png b/searx/static/themes/courgette/img/preference-icon.png Binary files differnew file mode 100644 index 000000000..57e991cc6 --- /dev/null +++ b/searx/static/themes/courgette/img/preference-icon.png diff --git a/searx/static/themes/courgette/img/search-icon.png b/searx/static/themes/courgette/img/search-icon.png Binary files differnew file mode 100644 index 000000000..9bc7a222c --- /dev/null +++ b/searx/static/themes/courgette/img/search-icon.png diff --git a/searx/static/themes/courgette/img/searx-mobile.png b/searx/static/themes/courgette/img/searx-mobile.png Binary files differnew file mode 100644 index 000000000..31dd7d16f --- /dev/null +++ b/searx/static/themes/courgette/img/searx-mobile.png diff --git a/searx/static/themes/courgette/img/searx.png b/searx/static/themes/courgette/img/searx.png Binary files differnew file mode 100644 index 000000000..68c2e4ffd --- /dev/null +++ b/searx/static/themes/courgette/img/searx.png diff --git a/searx/static/themes/courgette/img/searx_logo.svg b/searx/static/themes/courgette/img/searx_logo.svg new file mode 100644 index 000000000..67a2d4588 --- /dev/null +++ b/searx/static/themes/courgette/img/searx_logo.svg @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="searx_logo.svg" + inkscape:export-filename="/home/a/magnif.png" + inkscape:export-xdpi="203.1774" + inkscape:export-ydpi="203.1774"> + <defs + id="defs4"> + <linearGradient + inkscape:collect="always" + id="linearGradient3857"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3859" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3861" /> + </linearGradient> + <linearGradient + id="linearGradient3790"> + <stop + style="stop-color:#a9a9a9;stop-opacity:1;" + offset="0" + id="stop3792" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="1" + id="stop3794" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3790" + id="radialGradient3798" + cx="294.45947" + cy="208.37973" + fx="294.45947" + fy="208.37973" + r="107.58125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3857" + id="linearGradient3865" + x1="120.68947" + y1="239.61774" + x2="120.68947" + y2="602.17517" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3790" + id="linearGradient3912" + x1="186.74416" + y1="354.42426" + x2="255.84358" + y2="254.35953" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" /> + <filter + inkscape:collect="always" + id="filter4024" + x="-0.12996517" + width="1.2599303" + y="-0.14709377" + height="1.2941875"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="6.4759344" + id="feGaussianBlur4026" /> + </filter> + <filter + inkscape:collect="always" + id="filter3983" + x="-1.0608404" + width="3.1216809" + y="-0.31017202" + height="1.620344"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="9.392858" + id="feGaussianBlur3985" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="30.708726" + inkscape:cy="948.08556" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1364" + inkscape:window-height="663" + inkscape:window-x="0" + inkscape:window-y="30" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z" + id="path3814-0-7" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z" + id="path3814-0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z" + id="rect3804" /> + <path + sodipodi:type="arc" + style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2987" + sodipodi:cx="294.45947" + sodipodi:cy="208.37973" + sodipodi:rx="107.58125" + sodipodi:ry="107.58125" + d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z" + transform="translate(-107.07617,-60.609153)" /> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3757" + sodipodi:cx="131.82491" + sodipodi:cy="299.29346" + sodipodi:rx="101.52033" + sodipodi:ry="101.52033" + d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z" + transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" /> + <path + sodipodi:type="arc" + style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3800" + sodipodi:cx="183.34268" + sodipodi:cy="156.35687" + sodipodi:rx="27.274118" + sodipodi:ry="27.274118" + d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z" + transform="translate(5,-7.1428572)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3802" + sodipodi:cx="197.9899" + sodipodi:cy="203.32896" + sodipodi:rx="5.5558391" + sodipodi:ry="5.5558391" + d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z" + transform="translate(1.4847712,-63.564549)" /> + <rect + style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)" + id="rect3916" + width="2.2392972" + height="159.43797" + x="19.525793" + y="337.8396" + rx="2.8666623" + ry="9.0007057" + transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" /> + </g> +</svg> diff --git a/searx/static/themes/courgette/js/searx.js b/searx/static/themes/courgette/js/searx.js new file mode 100644 index 000000000..92a25e349 --- /dev/null +++ b/searx/static/themes/courgette/js/searx.js @@ -0,0 +1,45 @@ +if(searx.autocompleter) { + window.addEvent('domready', function() { + new Autocompleter.Request.JSON('q', './autocompleter', { + postVar:'q', + postData:{ + 'format': 'json' + }, + ajaxOptions:{ + timeout: 5 // Correct option? + }, + 'minLength': 4, + // 'selectMode': 'type-ahead', + cache: true, + delay: 300 + }); + }); +} + +(function (w, d) { + 'use strict'; + function addListener(el, type, fn) { + if (el.addEventListener) { + el.addEventListener(type, fn, false); + } else { + el.attachEvent('on' + type, fn); + } + } + + function placeCursorAtEnd() { + if (this.setSelectionRange) { + var len = this.value.length * 2; + this.setSelectionRange(len, len); + } + } + + addListener(w, 'load', function () { + var qinput = d.getElementById('q'); + if (qinput !== null && qinput.value === "") { + addListener(qinput, 'focus', placeCursorAtEnd); + qinput.focus(); + } + }); + +})(window, document); + diff --git a/searx/static/themes/courgette/less/style-rtl.less b/searx/static/themes/courgette/less/style-rtl.less new file mode 100644 index 000000000..3e357d3d8 --- /dev/null +++ b/searx/static/themes/courgette/less/style-rtl.less @@ -0,0 +1,42 @@ +.q { + padding: 0.5em 1em 0.5em 3em; +} + +#search_submit { + left: 0; + right:auto; +} + +.result .favicon { + float: right; + margin-left: 0.5em; + margin-right: 0; +} + +#sidebar { + right: auto; + left: 0; +} + +#results { + padding: 0px 32px 0px 272px; +} + +.search.center { + padding-right: 0; + padding-left: 17em; +} + +.right { + right: auto; + left: 0; +} + +#pagination form + form { + float: left; + margin-top: -2em; +} + +.engine-table { + text-align:right; +}
\ No newline at end of file diff --git a/searx/static/themes/courgette/less/style.less b/searx/static/themes/courgette/less/style.less new file mode 100644 index 000000000..26da72812 --- /dev/null +++ b/searx/static/themes/courgette/less/style.less @@ -0,0 +1,695 @@ + +@color-main: #3498DB; +@color-focus: #0665A2; +@color-other-links: #666; +@color-fonts: #333; +@center-width: 70em; + + + + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="search"] { + -webkit-appearance: textfield; +} + +h2 { + color: @color-other-links; + text-transform: uppercase; +} + +body { + font-family: sans-serif; + line-height: 1.5; + margin: 0; + background: #EEE; +} + +html { + position: relative; + min-height: 100%; +} + +a { + color: @color-other-links; +} + +.title h1 { + font-size:7em; + color:@color-main; + margin:0 auto; + line-height:100px; + margin-top:-20px; + padding-bottom:20px; +} + +.center { + max-width: @center-width; + text-align: center; + background: rgba(255,255,255,0.6); + padding: 2em; + margin: 7% auto 0; + position: relative; +} + +.center.search { + position: static; + width: auto; + background: none; + margin: auto; + padding-top: 1.8em; +} + +@media screen and (min-width: 1001px) { + .center:after { + content: ""; + z-index: -1; + background: url(../img/bg-body-index.jpg) no-repeat; + background-size: cover; + width: 100%; + height: 100%; + top: 0; + left: 0; + position: fixed; + } + .center.search:after { + content: none; + } +} + +.autocompleter-choices { + position: absolute; + margin: 0; + padding: 0; + background: #FFF; +} + +.autocompleter-choices li { + padding: 0.5em 1em; +} + +.autocompleter-choices li:hover { + background: @color-main; + color: #FFF; + cursor: pointer; +} + +#categories { + text-align: center; +} + +.top_margin { + position: absolute; + bottom: -3.5em; + width: 100%; + left: 0; +} + +.top_margin a { + display: inline-block; + margin-right: 1em; + color: #FFF; + text-decoration: none; +} + +.top_margin a:hover, +.top_margin a:focus { + text-decoration: underline; +} + +@media screen and (max-width: 1000px) { + .center { background: none; } + .top_margin a { + color: @color-fonts; + } +} + +.checkbox_container { margin-top: 1.5em; } +.checkbox_container label { + padding: 0.5em 1em; + color: @color-fonts; + cursor: pointer; + font-size: 0.9em; +} + +.checkbox_container label:hover { + background: @color-main; + color: #FFF; +} + +.checkbox_container input[type="checkbox"] { + position: absolute; + top: -9999px; +} + +.checkbox_container input[type="checkbox"]:checked + label { + background: @color-main; + color: #FFF; +} + +#categories_container > div { + display: inline-block; +} + +#categories .hidden { + display: none; + position: absolute; + bottom: 1em; + left: 0; + text-align: center; + width: 100%; + font-size: 0.9em; + font-style: italic; + color: @color-fonts; +} + +#categories:hover .hidden { + display: block; +} + +@media screen and (max-width: 900px) { + #categories_container { letter-spacing: -5px; } + #categories_container > div { + letter-spacing: normal; + margin-top: 1em; + } + .checkbox_container { + margin: 0; + } + .checkbox_container label { + display: block; + background: #CCC; + padding: 1em; + border: 1px solid #FFF; + } + .top_margin { position: static; } + #categories .hidden { + position: static; + display: block; + } +} + +@media screen and (max-width: 900px) and (min-width: 501px) { + #categories_container > div { + width: 31%; + margin-left: 2.333%; + } + #categories_container > div:nth-child(3n+1) { margin-left: 0; } +} + +@media screen and (max-width: 500px) { + #categories_container > div { + width: 48%; + margin-left: 2%; + font-size: 0.9em; + } + #categories_container > div:nth-child(2n+1) { margin-left: 0; } + .title h1 { + background: url(../img/searx-mobile.png) no-repeat; + width: 200px; + height: 39px; + } +} + +#search_wrapper { + position: relative; +} + +.q { + padding: 0.5em 3em 0.5em 1em; + width: 100%; + font-size: 1.5em; + border: 0; + color: #666; +} + +#search_submit { + position: absolute; + top: 0; + right: 0; + border: 0; + background:url("../img/search-icon.png") no-repeat scroll center center / 65% auto @color-main; + text-indent: -9999px; + width: 5em; + height: 100%; + cursor: pointer; +} + +#search_submit:hover, +#search_submit:focus { + background-color: @color-focus; +} + +#sidebar { + background: @color-main; + position: fixed; + top: 0; + right: 0; + width: 15em; + height: 100%; + padding: 1.5em; + text-align: right; +} + +.right { + position: fixed; + bottom: 1.5em; + width: 15em; + right: 0; + z-index: 1; + padding: 0 1.5em; + text-align: right; +} + +.right a { + color: #FFF; + display: block; + text-decoration: none; +} + +.right a:hover, +.right a:focus { + text-decoration: underline; +} + +#preferences { + background: url("../img/preference-icon.png") no-repeat right center / 12% auto; + padding-right: 1.8em; +} + +#preferences:hover, +#preferences:focus { + +} + +#search_url input { + border: 0; + padding: 0.5em; +} + +#sidebar > div { + margin-bottom: 1em; + color: #FFF; +} + +#sidebar form { + display: inline-block; +} + +#sidebar input[type="submit"] { + background: #CCC; + border: 0; + padding: 0.5em 1em; + cursor: pointer; + margin-top: 0.5em; +} + +#sidebar input[type="submit"]:hover, +#sidebar input[type="submit"]:focus { + color: #FFF; + background-color: @color-focus; +} + +#results { + padding-right: 17em; + padding-left: 2em; + padding: 0 17em 0 2em; +} + +.result p { + font-size: 0.9em; +} + +.result .engines { + text-align: right; +} + +.result .content { + margin: 0; + color: #666; +} + +.result .url { + margin-top: 0; + color: #FF6530; +} + +.result .favicon { + float: left; + position: relative; + top: 0.5em; + margin-right: 0.5em; +} + +.definition_result { + background: #CCC; + padding: 1em; +} + +.definition_result .result_title, +.definition_result p { + margin: 0; +} + +.result_title { + margin-bottom: 0; + font-weight: normal; +} + +.highlight { + font-weight: bold; +} + +.result_title a { + color: @color-main; + text-decoration: none; +} + +.result_title a:hover, +.result_title a:focus { + text-decoration: underline; +} + +.cache_link { + color: #666; + font-size: 0.9em; + font-style: italic; +} + +.search.center { + padding-right: 17em; +} + +#answers { + border: 2px solid @color-main; + padding: 20px; + color:#666; + text-align: center; + max-width:@center-width; + margin:0 auto 20px; +} + +#suggestions { margin-bottom: 1em; } + +#suggestions span { color: #666; } + +#suggestions form { + display: inline-block; + vertical-align: top; + margin-bottom: 0.5em; +} + +#suggestions input[type="submit"] { + color: @color-fonts; + padding: 0.5em 1em; + border: 0; + background: #CCC; + cursor:pointer; +} + +#suggestions input[type="submit"]:hover, +#suggestions input[type="submit"]:focus { + background: @color-main; + color: #FFF; +} + +#pagination { + margin: 1.5em 0 2em; +} + +#pagination form + form { + float: right; + margin-top: -2em; +} + +input[type="submit"] { + display: inline-block; + background: @color-main; + color: #FFF; + border: 0; + padding: 0.6em 1em; + cursor: pointer; +} + +input[type="submit"]:hover, +input[type="submit"]:focus { + background: @color-focus; +} + +.row { + max-width: 60em; + margin: auto; +} + +.row a { + color: @color-main; +} + +.row form { + letter-spacing: -5px; +} + +.row form > * { letter-spacing: normal; } + +.row p { margin: 0; } + +.row fieldset { + display: inline-block; + width: 48%; + vertical-align: top; +} + +.row fieldset:last-of-type { + display: block; + width: auto; + background: none; + padding: 0; +} + +.row fieldset:nth-child(odd) { + margin-right: 2%; +} + +.row fieldset:nth-child(2) { + min-height: 10.5em; +} + +@media screen and (max-width: 900px) { + .row { + margin: 0 1em; + } + + .row fieldset { width: 49%; } + .row fieldset, + .row fieldset:nth-child(odd) { + margin-right: 0; + } + + .row fieldset:first-child { + width: 100%; + margin-right: 0; + } + + .row fieldset:nth-child(even) { + margin-right: 2%; + } +} + +@media screen and (max-width: 800px) { + .row fieldset { width: 100%; } + + select { width: 100%; } + + table { font-size: 0.8em; } + .right {display: none;} + #sidebar { display: none; } + #results { padding: 0 2em; } + .search.center { + padding-right: 2em; + } +} + +@media screen and (max-width: 400px) { + .row #categories_container > div { + width: 100%; + margin-left: 0; + } +} + +fieldset { + border: 0; + margin: 1em 0; + background: #CCC; + padding: 1.5em; +} + +table { + width: 100%; + text-align: left; + border: 1px solid #CCC; + border-collapse: collapse; +} + +table th { + background: #999; + color: #FFF; +} + +table tr:nth-child(odd) { + background: #CCC; +} + +table th, +table td { + padding: 0.5em 1em; + border: 1px solid #FFF; +} + +.engine_checkbox label { + padding: 0.5em; + background: @color-main; + color: #FFF; + cursor: pointer; +} + +.engine_checkbox .deny { + background: @color-main; +} + +.engine_checkbox .allow { + display: none; + background: #666; +} + +.engine_checkbox input { + display: none; +} + +.engine_checkbox input:checked + .allow { + display: inline; +} + +.engine_checkbox input:checked + .allow + .deny{ + display: none; +} + +.row input[type="submit"] { + font-size: 1em; + margin: 1em 0 2em; +} + +.row .right { + position: static; + display: inline-block; + +} + +.row .right a { + color: @color-fonts; + width: auto; + text-align: left; + padding: 0; +} + +.small_font { + font-size: 0.8em; +} + +table th { + padding: 1em; +} + +legend { + background: #EEE; + padding: 0 1em; + position: relative; +} + +select { + border: 1px solid #DDD; + padding: 0.5em 0.8em; + font-size: 1em; +} + +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #408080; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ + +.highlight pre { overflow: auto; } + +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} + +.highlight .lineno::selection { background: transparent; } /* WebKit/Blink Browsers */ +.highlight .lineno::-moz-selection { background: transparent; } /* Gecko Browsers */ diff --git a/searx/static/themes/legacy/css/style-rtl.css b/searx/static/themes/legacy/css/style-rtl.css new file mode 100644 index 000000000..65ad6638e --- /dev/null +++ b/searx/static/themes/legacy/css/style-rtl.css @@ -0,0 +1 @@ +#search_submit{left:1px;right:auto}.result .favicon{float:right;margin-left:.5em;margin-right:0}
\ No newline at end of file diff --git a/searx/static/themes/legacy/css/style.css b/searx/static/themes/legacy/css/style.css new file mode 100644 index 000000000..ca746a369 --- /dev/null +++ b/searx/static/themes/legacy/css/style.css @@ -0,0 +1 @@ +.highlight .c,.highlight .cm,.highlight .ge,.highlight .sd{font-style:italic}#categories,.highlight .lineno{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#container,.search,body,html{padding:0;margin:0}div.title h1,input[type=checkbox]{visibility:hidden}#categories,.checkbox_container label,.engine_checkbox label,.highlight .lineno{-webkit-touch-callout:none;-khtml-user-select:none}#answers input[type=submit],#infoboxes input[type=submit],#sidebar input[type=submit],#suggestions input[type=submit],.result_title a:hover,.torrent_result a:hover{text-decoration:underline}#infoboxes,.result .content,.result .url,.result h3{word-wrap:break-word}#apis,#infoboxes .infobox br,#pagination,#pagination br,.result,.result .content br.last{clear:both}.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#408080}.highlight .err{border:1px solid red}.highlight .k{color:green;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#408080}.highlight .cp{color:#BC7A00}.highlight .c1,.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#A00000}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00A000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04D}.highlight .kc,.highlight .kd,.highlight .kn{color:green;font-weight:700}.highlight .kp{color:green}.highlight .kr{color:green;font-weight:700}.highlight .kt{color:#B00040}.highlight .m{color:#666}.highlight .s{color:#BA2121}.highlight .na{color:#7D9029}.highlight .nb{color:green}.highlight .nc{color:#00F;font-weight:700}.highlight .no{color:#800}.highlight .nd{color:#A2F}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#00F}.highlight .nl{color:#A0A000}.highlight .nn{color:#00F;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#19177C}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#666}.highlight .s2,.highlight .sb,.highlight .sc{color:#BA2121}.highlight .sd{color:#BA2121}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#BA2121}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#B68}.highlight .s1{color:#BA2121}.highlight .ss{color:#19177C}.highlight .bp{color:green}.highlight .vc,.highlight .vg,.highlight .vi{color:#19177C}.highlight .il{color:#666}.highlight pre{overflow:auto}.highlight .lineno{user-select:none;cursor:default}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444}#container{width:100%;position:absolute;top:0}.search .checkbox_container label{font-size:.9em;border-bottom:2px solid #E8E7E6}.search .checkbox_container label:hover{border-bottom:2px solid #3498DB}.search .checkbox_container input[type=checkbox]:checked+label{border-bottom:2px solid #2980B9}#search_wrapper{position:relative;width:50em;padding:10px}.center #search_wrapper{margin-left:auto;margin-right:auto}.q,ul.autocompleter-choices{margin:0;border:1px solid #3498DB}.q{background:#FFF;color:#222;font-size:16px;height:28px;outline:0;padding:2px 2px 2px 8px;padding-right:0!important;width:100%;z-index:2}#search_submit{position:absolute;top:13px;right:1px;padding:0;border:0;background:url(../img/search-icon.png) no-repeat;background-size:24px 24px;opacity:.8;width:24px;height:30px;font-size:0}@media screen and (max-width:50em){#search_wrapper{width:90%;clear:both;overflow:hidden}}ul.autocompleter-choices{position:absolute;padding:0;list-style:none;border-left-color:#3498DB;border-right-color:#3498DB;border-bottom-color:#3498DB;text-align:left;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;z-index:50;background-color:#FFF;color:#444}ul.autocompleter-choices li{position:relative;margin:-2px 0 0;padding:.2em 1.5em .2em 1em;display:block;float:none!important;cursor:pointer;font-weight:400;white-space:nowrap;font-size:1em;line-height:1.5em}ul.autocompleter-choices li.autocompleter-selected{background-color:#444;color:#FFF}ul.autocompleter-choices li.autocompleter-selected span.autocompleter-queried{color:#9FCFFF}ul.autocompleter-choices span.autocompleter-queried{display:inline;float:none;font-weight:700;margin:0;padding:0}.row{max-width:800px;margin:20px auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}.row p{padding:0 10px;max-width:700px}.row h3,.row ul{margin:4px 8px}.hmarg{margin:0 20px;border:1px solid #3498DB;padding:4px 10px}a:active.hmarg,a:hover.hmarg,a:link.hmarg,a:visited.hmarg{color:#3498DB}.top_margin{margin-top:60px}.center{text-align:center}h1{font-size:5em}div.title{background:url(../img/searx.png) center no-repeat;width:100%;min-height:80px}input[type=submit]{padding:2px 6px;margin:2px 4px;display:inline-block;background:#3498DB;color:#FFF;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}fieldset{margin:8px;border:1px solid #3498DB}#categories{margin:0 10px;user-select:none}.checkbox_container{display:inline-block;position:relative;margin:0 3px;padding:0}.checkbox_container input{display:none}.checkbox_container label,.engine_checkbox label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container input[type=checkbox]:checked+label{background:#3498DB;color:#FFF}.engine_checkbox{padding:4px}label.allow{background:#E74C3C;padding:4px 8px;color:#FFF;display:none}label.deny{background:#2ECC71;padding:4px 8px;color:#444;display:inline}.engine_checkbox input[type=checkbox]:checked+label:nth-child(2)+label{display:none}.engine_checkbox input[type=checkbox]:checked+label.allow{display:inline}a{text-decoration:none;color:#1a11be}a:visited{color:#8E44AD}.result{margin:19px 0 18px;padding:0}.result_title{margin-bottom:0}.result_title a{color:#2980B9;font-weight:400;font-size:1.1em}.result_title a:visited{color:#8E44AD}.cache_link{font-size:10px!important}.result h3{font-size:1em;margin:5px 0 1px;padding:0}.result .content,.result .url,.small_font{font-size:.8em}.result .content{margin:0;padding:0;max-width:54em;line-height:1.24}.result .content img{float:left;margin-right:5px;max-width:200px;max-height:100px}.result .url{margin:0 0 3px;padding:0;max-width:54em;color:#C0392B}.result .published_date{font-size:.8em;color:#888;Margin:5px 20px}.result .thumbnail{width:400px}.engines{color:#888}.small p{margin:2px 0}.right{float:right}.invisible{display:none}.left{float:left}.highlight{color:#094089}.content .highlight{color:#000}.image_result{display:inline-block;margin:10px;position:relative;max-height:160px}.image_result img{border:0;max-height:160px}.image_result p{margin:0;padding:0}.image_result p span a{display:none;color:#FFF}.image_result p:hover span a{display:block;position:absolute;bottom:0;right:0;padding:4px;background-color:rgba(0,0,0,.6);font-size:.7em}#categories_container,.percentage{position:relative}.torrent_result{border-left:10px solid #d3d3d3;padding-left:3px}.torrent_result p{margin:3px;font-size:.8em}.torrent_result a{color:#2980B9}.torrent_result a:visited{color:#8E44AD}.definition_result{border-left:10px solid gray;padding-left:3px}.percentage{width:300px}.percentage div{background:#444}table{width:100%}.result-table{margin-bottom:10px}#infoboxes,#sidebar{margin:0 2px 5px 5px;padding:0 2px 2px}td{padding:0 4px}tr:hover{background:#DDD}#results{margin:auto auto 20px;padding:0;width:50em}#sidebar{position:fixed;bottom:10px;left:10px;width:14em}#answers input,#infoboxes input,#sidebar input,#suggestions input{padding:0;margin:3px;font-size:.8em;display:inline-block;background:0 0;color:#444;cursor:pointer}#suggestions form{display:inline}#answers,#suggestions{margin-top:20px;max-width:45em}#suggestions-title{color:#888}#answers{border:2px solid #2980B9;padding:20px}#answers form,#infoboxes form{min-width:210px}#infoboxes{position:absolute;top:100px;right:20px;max-width:21em}#infoboxes .infobox{margin:10px 0;border:1px solid #ddd;padding:5px;font-size:.8em}#infoboxes .infobox img{max-width:90%;max-heigt:12em;display:block;margin:5px;padding:5px}#infoboxes .infobox h2{margin:0}#apis,#search_url{margin-top:8px}#infoboxes .infobox table{table-layout:fixed}#infoboxes .infobox table td{vertical-align:top}#infoboxes .infobox input{font-size:1em}#search_url input{border:1px solid #888;padding:4px;color:#444;width:14em;display:block;margin:4px;font-size:.8em}#preferences{top:10px;padding:0;border:0;background:url(../img/preference-icon.png) no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%}.github{display:none}.checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0}.preferences_container{display:none;postion:fixed!important;top:100px;right:0}}@media screen and (max-width:75em){div.title h1{font-size:1em}html.touch #categories{width:95%;height:30px;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}html.touch #categories #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #categories #categories_container .checkbox_container{display:inline-block;width:auto}#answers,#suggestions{margin-top:5px}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin:auto}#sidebar{position:static;max-width:50em;margin:0 0 2px;padding:0;float:none;border:none;width:auto}#sidebar input{border:0}#apis,#search_url{display:none}.result{border-top:1px solid #E8E7E6;margin:8px 0}.image_result,.image_result img,.result .thumbnail{max-width:98%}}.favicon{float:left;margin-right:4px;margin-top:2px}.preferences_back{background:#3498DB;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#FFF}.hidden{opacity:0;overflow:hidden;font-size:.8em;position:absolute;bottom:-20px;width:100%;text-position:center;background:#fff;transition:opacity 1s ease}#categories_container:hover .hidden{transition:opacity 1s ease;opacity:.8}
\ No newline at end of file diff --git a/searx/static/themes/legacy/img/favicon.png b/searx/static/themes/legacy/img/favicon.png Binary files differnew file mode 100644 index 000000000..3818d3d60 --- /dev/null +++ b/searx/static/themes/legacy/img/favicon.png diff --git a/searx/static/themes/legacy/img/github_ribbon.png b/searx/static/themes/legacy/img/github_ribbon.png Binary files differnew file mode 100644 index 000000000..3799c2ea1 --- /dev/null +++ b/searx/static/themes/legacy/img/github_ribbon.png diff --git a/searx/static/themes/legacy/img/icons/icon_500px.ico b/searx/static/themes/legacy/img/icons/icon_500px.ico Binary files differnew file mode 100644 index 000000000..b01aa20b5 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_500px.ico diff --git a/searx/static/themes/legacy/img/icons/icon_bing.ico b/searx/static/themes/legacy/img/icons/icon_bing.ico Binary files differnew file mode 100644 index 000000000..5702749c1 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_bing.ico diff --git a/searx/static/themes/legacy/img/icons/icon_dailymotion.ico b/searx/static/themes/legacy/img/icons/icon_dailymotion.ico Binary files differnew file mode 100644 index 000000000..b161a57fb --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_dailymotion.ico diff --git a/searx/static/themes/legacy/img/icons/icon_deezer.ico b/searx/static/themes/legacy/img/icons/icon_deezer.ico Binary files differnew file mode 100644 index 000000000..d38c9b1f6 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_deezer.ico diff --git a/searx/static/themes/legacy/img/icons/icon_deviantart.ico b/searx/static/themes/legacy/img/icons/icon_deviantart.ico Binary files differnew file mode 100644 index 000000000..26c353325 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_deviantart.ico diff --git a/searx/static/themes/legacy/img/icons/icon_digg.ico b/searx/static/themes/legacy/img/icons/icon_digg.ico Binary files differnew file mode 100644 index 000000000..162e57038 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_digg.ico diff --git a/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico b/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico Binary files differnew file mode 100644 index 000000000..d093082cb --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico diff --git a/searx/static/themes/legacy/img/icons/icon_flickr.ico b/searx/static/themes/legacy/img/icons/icon_flickr.ico Binary files differnew file mode 100644 index 000000000..e2304c587 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_flickr.ico diff --git a/searx/static/themes/legacy/img/icons/icon_github.ico b/searx/static/themes/legacy/img/icons/icon_github.ico Binary files differnew file mode 100644 index 000000000..133f0ca35 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_github.ico diff --git a/searx/static/themes/legacy/img/icons/icon_google play apps.ico b/searx/static/themes/legacy/img/icons/icon_google play apps.ico Binary files differnew file mode 100644 index 000000000..74c84470b --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_google play apps.ico diff --git a/searx/static/themes/legacy/img/icons/icon_google play movies.ico b/searx/static/themes/legacy/img/icons/icon_google play movies.ico Binary files differnew file mode 100644 index 000000000..74c84470b --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_google play movies.ico diff --git a/searx/static/themes/legacy/img/icons/icon_google play music.ico b/searx/static/themes/legacy/img/icons/icon_google play music.ico Binary files differnew file mode 100644 index 000000000..74c84470b --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_google play music.ico diff --git a/searx/static/themes/legacy/img/icons/icon_google.ico b/searx/static/themes/legacy/img/icons/icon_google.ico Binary files differnew file mode 100644 index 000000000..f594697d2 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_google.ico diff --git a/searx/static/themes/legacy/img/icons/icon_kickass.ico b/searx/static/themes/legacy/img/icons/icon_kickass.ico Binary files differnew file mode 100644 index 000000000..4aa2c77a5 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_kickass.ico diff --git a/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico b/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico Binary files differnew file mode 100644 index 000000000..b65863656 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico diff --git a/searx/static/themes/legacy/img/icons/icon_searchcode code.ico b/searx/static/themes/legacy/img/icons/icon_searchcode code.ico Binary files differnew file mode 100644 index 000000000..dc099ef70 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_searchcode code.ico diff --git a/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico b/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico Binary files differnew file mode 100644 index 000000000..dc099ef70 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico diff --git a/searx/static/themes/legacy/img/icons/icon_searchcode.ico b/searx/static/themes/legacy/img/icons/icon_searchcode.ico Binary files differnew file mode 100644 index 000000000..dc099ef70 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_searchcode.ico diff --git a/searx/static/themes/legacy/img/icons/icon_soundcloud.ico b/searx/static/themes/legacy/img/icons/icon_soundcloud.ico Binary files differnew file mode 100644 index 000000000..4130bea1b --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_soundcloud.ico diff --git a/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico b/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico Binary files differnew file mode 100644 index 000000000..b2242bc6c --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico diff --git a/searx/static/themes/legacy/img/icons/icon_startpage.ico b/searx/static/themes/legacy/img/icons/icon_startpage.ico Binary files differnew file mode 100644 index 000000000..44b94a986 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_startpage.ico diff --git a/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico b/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico Binary files differnew file mode 100644 index 000000000..9a0565558 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico diff --git a/searx/static/themes/legacy/img/icons/icon_twitter.ico b/searx/static/themes/legacy/img/icons/icon_twitter.ico Binary files differnew file mode 100644 index 000000000..b4a71699a --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_twitter.ico diff --git a/searx/static/themes/legacy/img/icons/icon_vimeo.ico b/searx/static/themes/legacy/img/icons/icon_vimeo.ico Binary files differnew file mode 100644 index 000000000..4fe4336da --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_vimeo.ico diff --git a/searx/static/themes/legacy/img/icons/icon_wikipedia.ico b/searx/static/themes/legacy/img/icons/icon_wikipedia.ico Binary files differnew file mode 100644 index 000000000..e70021849 --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_wikipedia.ico diff --git a/searx/static/themes/legacy/img/icons/icon_yahoo.ico b/searx/static/themes/legacy/img/icons/icon_yahoo.ico Binary files differnew file mode 100644 index 000000000..9bd1d9f7c --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_yahoo.ico diff --git a/searx/static/themes/legacy/img/icons/icon_youtube.ico b/searx/static/themes/legacy/img/icons/icon_youtube.ico Binary files differnew file mode 100644 index 000000000..977887dbb --- /dev/null +++ b/searx/static/themes/legacy/img/icons/icon_youtube.ico diff --git a/searx/static/themes/legacy/img/preference-icon.png b/searx/static/themes/legacy/img/preference-icon.png Binary files differnew file mode 100644 index 000000000..8bdee641d --- /dev/null +++ b/searx/static/themes/legacy/img/preference-icon.png diff --git a/searx/static/themes/legacy/img/search-icon.png b/searx/static/themes/legacy/img/search-icon.png Binary files differnew file mode 100644 index 000000000..d70310b5d --- /dev/null +++ b/searx/static/themes/legacy/img/search-icon.png diff --git a/searx/static/themes/legacy/img/searx.png b/searx/static/themes/legacy/img/searx.png Binary files differnew file mode 100644 index 000000000..a98f12a1d --- /dev/null +++ b/searx/static/themes/legacy/img/searx.png diff --git a/searx/static/themes/legacy/img/searx_logo.svg b/searx/static/themes/legacy/img/searx_logo.svg new file mode 100644 index 000000000..67a2d4588 --- /dev/null +++ b/searx/static/themes/legacy/img/searx_logo.svg @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="searx_logo.svg" + inkscape:export-filename="/home/a/magnif.png" + inkscape:export-xdpi="203.1774" + inkscape:export-ydpi="203.1774"> + <defs + id="defs4"> + <linearGradient + inkscape:collect="always" + id="linearGradient3857"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3859" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3861" /> + </linearGradient> + <linearGradient + id="linearGradient3790"> + <stop + style="stop-color:#a9a9a9;stop-opacity:1;" + offset="0" + id="stop3792" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="1" + id="stop3794" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3790" + id="radialGradient3798" + cx="294.45947" + cy="208.37973" + fx="294.45947" + fy="208.37973" + r="107.58125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3857" + id="linearGradient3865" + x1="120.68947" + y1="239.61774" + x2="120.68947" + y2="602.17517" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3790" + id="linearGradient3912" + x1="186.74416" + y1="354.42426" + x2="255.84358" + y2="254.35953" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" /> + <filter + inkscape:collect="always" + id="filter4024" + x="-0.12996517" + width="1.2599303" + y="-0.14709377" + height="1.2941875"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="6.4759344" + id="feGaussianBlur4026" /> + </filter> + <filter + inkscape:collect="always" + id="filter3983" + x="-1.0608404" + width="3.1216809" + y="-0.31017202" + height="1.620344"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="9.392858" + id="feGaussianBlur3985" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="30.708726" + inkscape:cy="948.08556" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1364" + inkscape:window-height="663" + inkscape:window-x="0" + inkscape:window-y="30" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z" + id="path3814-0-7" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z" + id="path3814-0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z" + id="rect3804" /> + <path + sodipodi:type="arc" + style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2987" + sodipodi:cx="294.45947" + sodipodi:cy="208.37973" + sodipodi:rx="107.58125" + sodipodi:ry="107.58125" + d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z" + transform="translate(-107.07617,-60.609153)" /> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3757" + sodipodi:cx="131.82491" + sodipodi:cy="299.29346" + sodipodi:rx="101.52033" + sodipodi:ry="101.52033" + d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z" + transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" /> + <path + sodipodi:type="arc" + style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3800" + sodipodi:cx="183.34268" + sodipodi:cy="156.35687" + sodipodi:rx="27.274118" + sodipodi:ry="27.274118" + d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z" + transform="translate(5,-7.1428572)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3802" + sodipodi:cx="197.9899" + sodipodi:cy="203.32896" + sodipodi:rx="5.5558391" + sodipodi:ry="5.5558391" + d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z" + transform="translate(1.4847712,-63.564549)" /> + <rect + style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)" + id="rect3916" + width="2.2392972" + height="159.43797" + x="19.525793" + y="337.8396" + rx="2.8666623" + ry="9.0007057" + transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" /> + </g> +</svg> diff --git a/searx/static/themes/legacy/js/searx.js b/searx/static/themes/legacy/js/searx.js new file mode 100644 index 000000000..d6d5b74bb --- /dev/null +++ b/searx/static/themes/legacy/js/searx.js @@ -0,0 +1,49 @@ +if(searx.autocompleter) { + window.addEvent('domready', function() { + new Autocompleter.Request.JSON('q', './autocompleter', { + postVar:'q', + postData:{ + 'format': 'json' + }, + ajaxOptions:{ + timeout: 5 // Correct option? + }, + 'minLength': 4, + 'selectMode': false, + cache: true, + delay: 300 + }); + }); +} + +(function (w, d) { + 'use strict'; + function addListener(el, type, fn) { + if (el.addEventListener) { + el.addEventListener(type, fn, false); + } else { + el.attachEvent('on' + type, fn); + } + } + + function placeCursorAtEnd() { + if (this.setSelectionRange) { + var len = this.value.length * 2; + this.setSelectionRange(len, len); + } + } + + addListener(w, 'load', function () { + var qinput = d.getElementById('q'); + if (qinput !== null && qinput.value === "") { + addListener(qinput, 'focus', placeCursorAtEnd); + qinput.focus(); + } + }); + + if (!!('ontouchstart' in window)) { + document.getElementsByTagName("html")[0].className += " touch"; + } + +})(window, document); + diff --git a/searx/static/themes/legacy/less/autocompleter.less b/searx/static/themes/legacy/less/autocompleter.less new file mode 100644 index 000000000..4ab2508f8 --- /dev/null +++ b/searx/static/themes/legacy/less/autocompleter.less @@ -0,0 +1,61 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +ul { + &.autocompleter-choices { + position: absolute; + margin: 0; + padding: 0; + list-style: none; + border: 1px solid @color-autocompleter-choices-border; + border-left-color: @color-autocompleter-choices-border-left-right; + border-right-color: @color-autocompleter-choices-border-left-right; + border-bottom-color: @color-autocompleter-choices-border-bottom; + text-align: left; + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + z-index: 50; + background-color: @color-autocompleter-choices-background; + color: @color-autocompleter-choices-font; + + li { + position: relative; + margin: -2px 0 0 0; + padding: 0.2em 1.5em 0.2em 1em; + display: block; + float: none !important; + cursor: pointer; + font-weight: normal; + white-space: nowrap; + font-size: 1em; + line-height: 1.5em; + + &.autocompleter-selected { + background-color: @color-autocompleter-selected-background; + color: @color-autocompleter-selected-font; + + span.autocompleter-queried { + color: @color-autocompleter-selected-queried-font; + } + } + } + + span.autocompleter-queried { + display: inline; + float: none; + font-weight: bold; + margin: 0; + padding: 0; + } + } +} + +/*.autocompleter-loading { + //background-image: url(images/spinner.gif); + background-repeat: no-repeat; + background-position: right 50%; +}*/ + +/*textarea.autocompleter-loading { + background-position: right bottom; +}*/ diff --git a/searx/static/themes/legacy/less/code.less b/searx/static/themes/legacy/less/code.less new file mode 100644 index 000000000..a688dd98d --- /dev/null +++ b/searx/static/themes/legacy/less/code.less @@ -0,0 +1,83 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #408080; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ + +.highlight pre { + overflow: auto; +} + +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + + &::selection { + background: transparent; /* WebKit/Blink Browsers */ + } + &::-moz-selection { + background: transparent; /* Gecko Browsers */ + } +} diff --git a/searx/static/themes/legacy/less/definitions.less b/searx/static/themes/legacy/less/definitions.less new file mode 100644 index 000000000..0ac0cc90c --- /dev/null +++ b/searx/static/themes/legacy/less/definitions.less @@ -0,0 +1,119 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ + +/// Basic Colors + +@color-base: #3498DB; +@color-base-dark: #2980B9; +@color-base-light: #ECF0F1; +@color-highlight: #094089; +@color-black: #000000; + +/// General + +@color-font: #444; +@color-font-light: #888; + +@color-red: #C0392B; + +@color-url-font: #1a11be; +@color-url-visited-font: #8E44AD; +@results-width: 50em; + + +/// Start-Screen + +// hmarg +@color-hmarg-border: @color-base; +@color-hmarg-font: @color-base; +@color-hmarg-font-hover: @color-base; + + +/// Search-Input + +@color-search-border: @color-base; +@color-search-background: #FFF; +@color-search-font: #222; + +/// Autocompleter + +@color-autocompleter-choices-background: #FFF; +@color-autocompleter-choices-border: @color-base; +@color-autocompleter-choices-border-left-right: @color-base; +@color-autocompleter-choices-border-bottom: @color-base; + +@color-autocompleter-choices-font: #444; + +/// Answers +@color-answers-border: @color-base-dark; + +// Selected +@color-autocompleter-selected-background: #444; +@color-autocompleter-selected-font: #FFF; +@color-autocompleter-selected-queried-font: #9FCFFF; + +/// Categories + +@color-categories-item-selected: @color-base; +@color-categories-item-selected-font: #FFF; + +@color-categories-item-border-selected: @color-base-dark; +@color-categories-item-border-unselected: #E8E7E6; +@color-categories-item-border-unselected-hover: @color-base; + + +/// Results + +@color-suggestions-button-background: @color-base; +@color-suggestions-button-font: #FFF; + +@color-download-button-background: @color-base; +@color-download-button-font: #FFF; + +@color-result-search-background: @color-base-light; + +@color-result-definition-border: gray; +@color-result-torrent-border: lightgray; +@color-result-top-border: #E8E7E6; + +// Link to result +@color-result-link-font: @color-base-dark; +@color-result-link-visited-font: @color-url-visited-font; + +// Url to result +@color-result-url-font: @color-red; + +// Publish Date +@color-result-publishdate-font: @color-font-light; + +// Images +@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6); +@color-result-image-span-font: #FFF; + +// Search-URL +@color-result-search-url-border: #888; +@color-result-search-url-font: #444; + + +/// Settings + +@color-settings-fieldset: @color-base; +@color-settings-tr-hover: #DDD; + +// Labels +@color-settings-label-allowed-background: #E74C3C; +@color-settings-label-allowed-font: #FFF; + +@color-settings-label-deny-background: #2ECC71; +@color-settings-label-deny-font: @color-font; + +@color-settings-return-background: @color-base; +@color-settings-return-font: #FFF; + +/// Other + +@color-engines-font: @color-font-light; +@color-percentage-div-background: #444; diff --git a/searx/static/themes/legacy/less/mixins.less b/searx/static/themes/legacy/less/mixins.less new file mode 100644 index 000000000..dbccce6e3 --- /dev/null +++ b/searx/static/themes/legacy/less/mixins.less @@ -0,0 +1,27 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +// Mixins + +.text-size-adjust (@property: 100%) { + -webkit-text-size-adjust: @property; + -ms-text-size-adjust: @property; + -moz-text-size-adjust: @property; + text-size-adjust: @property; +} + +.rounded-corners (@radius: 4px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +.user-select () { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} diff --git a/searx/static/themes/legacy/less/search.less b/searx/static/themes/legacy/less/search.less new file mode 100644 index 000000000..d285ca734 --- /dev/null +++ b/searx/static/themes/legacy/less/search.less @@ -0,0 +1,68 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +.search { + padding: 0; + margin: 0; + .checkbox_container label { + font-size: 0.9em; + border-bottom: 2px solid @color-categories-item-border-unselected; + } + + .checkbox_container label:hover { + border-bottom: 2px solid @color-categories-item-border-unselected-hover; + } + + .checkbox_container input[type="checkbox"]:checked + label { + border-bottom: 2px solid @color-categories-item-border-selected; + } +} + +#search_wrapper { + position: relative; + width: @results-width; + padding: 10px; +} + +.center #search_wrapper { + margin-left: auto; + margin-right: auto; +} + +.q { + background: none repeat scroll 0 0 @color-search-background; + border: 1px solid @color-search-border; + color: @color-search-font; + font-size: 16px; + height: 28px; + margin: 0; + outline: medium none; + padding: 2px; + padding-left: 8px; + padding-right: 0px !important; + width: 100%; + z-index: 2; +} + +#search_submit { + position: absolute; + top: 13px; + right: 1px; + padding: 0; + border: 0; + background: url('../img/search-icon.png') no-repeat; + background-size: 24px 24px; + opacity: 0.8; + width: 24px; + height: 30px; + font-size: 0; +} + +@media screen and (max-width: @results-width) { + #search_wrapper { + width: 90%; + clear:both; + overflow: hidden + } +} diff --git a/searx/static/themes/legacy/less/style-rtl.less b/searx/static/themes/legacy/less/style-rtl.less new file mode 100644 index 000000000..eac53c1f8 --- /dev/null +++ b/searx/static/themes/legacy/less/style-rtl.less @@ -0,0 +1,11 @@ +#search_submit { + left: 1px; + right:auto; +} + +.result .favicon { + float: right; + margin-left: 0.5em; + margin-right: 0; +} + diff --git a/searx/static/themes/legacy/less/style.less b/searx/static/themes/legacy/less/style.less new file mode 100644 index 000000000..bbeaf105e --- /dev/null +++ b/searx/static/themes/legacy/less/style.less @@ -0,0 +1,743 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To convert "style.less" to "style.css" run: $make styles + */ + +@import "definitions.less"; + +@import "mixins.less"; + +@import "code.less"; + +// Main LESS-Code + +html { + font-family: sans-serif; + font-size: 0.9em; + .text-size-adjust; + color: @color-font; + padding: 0; + margin: 0; +} + +body, #container { + padding: 0; + margin: 0; +} + +#container { + width: 100%; + position: absolute; + top: 0; +} + +// Search-Field + +@import "search.less"; + +// Autocompleter + +@import "autocompleter.less"; + +.row { + max-width: 800px; + margin: 20px auto; + text-align: justify; + + h1 { + font-size: 3em; + margin-top: 50px; + } + + p { + padding: 0 10px; + max-width: 700px; + } + + h3,ul { + margin: 4px 8px; + } +} + +.hmarg { + margin: 0 20px; + border: 1px solid @color-hmarg-border; + padding: 4px 10px; +} + +a { + &:link.hmarg { + color: @color-hmarg-font; + } + + &:visited.hmarg { + color: @color-hmarg-font; + } + + &:active.hmarg { + color: @color-hmarg-font-hover; + } + + &:hover.hmarg { + color: @color-hmarg-font-hover; + } +} + +.top_margin { + margin-top: 60px; +} + +.center { + text-align: center; +} + +h1 { + font-size: 5em; +} + +div.title { + background: url('../img/searx.png') no-repeat; + width: 100%; + min-height: 80px; + background-position: center; + + h1 { + visibility: hidden; + } +} + +input[type="submit"] { + padding: 2px 6px; + margin: 2px 4px; + display: inline-block; + background: @color-download-button-background; + color: @color-download-button-font; + .rounded-corners; + border: 0; + cursor: pointer; +} + +input[type="checkbox"] { + visibility: hidden; +} + +fieldset { + margin: 8px; + border: 1px solid @color-settings-fieldset; +} + +#categories { + margin: 0 10px; + .user-select; +} + +.checkbox_container { + display: inline-block; + position: relative; + margin: 0 3px; + padding: 0px; + + input { + display: none; + } +} + +.checkbox_container label, .engine_checkbox label { + cursor: pointer; + padding: 4px 10px; + margin: 0; + display: block; + text-transform: capitalize; + .user-select; +} + +.checkbox_container input[type="checkbox"]:checked + label { + background: @color-categories-item-selected; + color: @color-categories-item-selected-font; +} + +.engine_checkbox { + padding: 4px; +} + +label { + &.allow { + background: @color-settings-label-allowed-background; + padding: 4px 8px; + color: @color-settings-label-allowed-font; + display: none; + } + + &.deny { + background: @color-settings-label-deny-background; + padding: 4px 8px; + color: @color-settings-label-deny-font; + display: inline; + } +} + +.engine_checkbox input[type="checkbox"]:checked + label { + &:nth-child(2) + label { + display: none; + } + + &.allow { + display: inline; + } +} + +a { + text-decoration: none; + color: @color-url-font; + + &:visited { + color: @color-url-visited-font; + } +} + +.result { + margin: 19px 0 18px 0; + padding: 0; + clear: both; +} + +.result_title { + margin-bottom: 0; + + a { + color: @color-result-link-font; + font-weight: normal; + font-size: 1.1em; + + &:hover { + text-decoration: underline; + } + + &:visited { + color: @color-result-link-visited-font; + } + } +} + +.cache_link { + font-size: 10px !important; +} + +.result { + h3 { + font-size: 1em; + word-wrap:break-word; + margin: 5px 0 1px 0; + padding: 0 + } + + .content { + font-size: 0.8em; + margin: 0; + padding: 0; + max-width: 54em; + word-wrap:break-word; + line-height: 1.24; + + img { + float: left; + margin-right: 5px; + max-width: 200px; + max-height: 100px; + } + + br.last { + clear: both; + } + } + + .url { + font-size: 0.8em; + margin: 0 0 3px 0; + padding: 0; + max-width: 54em; + word-wrap:break-word; + color: @color-result-url-font; + } + + .published_date { + font-size: 0.8em; + color: @color-result-publishdate-font; + Margin: 5px 20px; + } + + .thumbnail { + width: 400px; + } +} + +.engines { + color: @color-engines-font; +} + +.small_font { + font-size: 0.8em; +} + +.small p { + margin: 2px 0; +} + +.right { + float: right; +} + +.invisible { + display: none; +} + +.left { + float: left; +} + +.highlight { + color: @color-highlight; +} + +.content .highlight { + color: @color-black; +} + +.image_result { + display: inline-block; + margin: 10px 10px; + position: relative; + max-height: 160px; + + img { + border: 0; + max-height: 160px; + } + + p { + margin: 0; + padding: 0; + + span a { + display: none; + color: @color-result-image-span-font; + } + + &:hover span a { + display: block; + position: absolute; + bottom: 0; + right: 0; + padding: 4px; + background-color: @color-result-image-span-background-hover; + font-size: 0.7em; + } + } +} + +.torrent_result { + border-left: 10px solid @color-result-torrent-border; + padding-left: 3px; + + p { + margin: 3px; + font-size: 0.8em; + } + + a { + color: @color-result-link-font; + + &:hover { + text-decoration: underline; + } + + &:visited { + color: @color-result-link-visited-font; + } + } +} + +.definition_result { + border-left: 10px solid @color-result-definition-border; + padding-left: 3px; +} + +.percentage { + position: relative; + width: 300px; + + div { + background: @color-percentage-div-background; + } +} + +table { + width: 100%; +} + +.result-table { + margin-bottom: 10px; +} + +td { + padding: 0 4px; +} + +tr { + &:hover { + background: @color-settings-tr-hover; + } +} + +#results { + margin: auto; + padding: 0; + width: @results-width; + margin-bottom: 20px; +} + +#sidebar { + position: fixed; + bottom: 10px; + left: 10px; + margin: 0 2px 5px 5px; + padding: 0 2px 2px 2px; + width: 14em; + + input { + padding: 0; + margin: 3px; + font-size: 0.8em; + display: inline-block; + background: transparent; + color: @color-result-search-url-font; + cursor: pointer; + } + input[type="submit"] { + text-decoration: underline; + } +} + +#suggestions { + + form { + display: inline; + } + +} + +#suggestions, #answers { + + margin-top: 20px; + max-width: 45em; + +} + +#suggestions, #answers, #infoboxes { + + input { + padding: 0; + margin: 3px; + font-size: 0.8em; + display: inline-block; + background: transparent; + color: @color-result-search-url-font; + cursor: pointer; + } + + input[type="submit"] { + text-decoration: underline; + } + +} + +#suggestions-title { + +color: @color-font-light; + + +} + +#answers { + + border: 2px solid @color-answers-border; + padding: 20px; + +} + +#answers, #infoboxes { + form { + min-width: 210px; + } +} + + +#infoboxes { + position: absolute; + top: 100px; + right: 20px; + margin: 0px 2px 5px 5px; + padding: 0px 2px 2px; + max-width: 21em; + word-wrap: break-word; + + .infobox { + margin: 10px 0 10px; + border: 1px solid #ddd; + padding: 5px; + font-size: 0.8em; + /* box-shadow: 0px 0px 5px #CCC; */ + + img { + max-width: 90%; + max-heigt: 12em; + display: block; + margin: 5px; + padding: 5px; + } + + h2 { + margin: 0; + } + + table { + table-layout: fixed; + + td { + vertical-align: top; + } + + } + + input { + font-size: 1em; + } + + br { + clear: both; + } + + } +} + +#search_url { + margin-top: 8px; + + input { + border: 1px solid @color-result-search-url-border; + padding: 4px; + color: @color-result-search-url-font; + width: 14em; + display: block; + margin: 4px; + font-size: 0.8em; + } +} + +#preferences { + top: 10px; + padding: 0; + border: 0; + background: url('../img/preference-icon.png') no-repeat; + background-size: 28px 28px; + opacity: 0.8; + width: 28px; + height: 30px; + display: block; + + * { + display: none; + } +} + +#pagination { + clear: both; + + br { + clear: both; + } +} + +#apis { + margin-top: 8px; + clear: both; +} + +#categories_container { + position: relative; +} + +@media screen and (max-width: @results-width) { + + #results { + margin: auto; + padding: 0; + width: 90%; + } + + .github { + display: none; + } + + .checkbox_container { + display: block; + width: 90%; + //float: left; + + label { + border-bottom: 0; + } + } + + .preferences_container { + display: none; + postion: fixed !important; + top: 100px; + right: 0px; + } + +} + +@media screen and (max-width: 75em) { + + div.title { + + h1 { + font-size: 1em; + } + } + + html.touch #categories { + width: 95%; + height: 30px; + text-align: left; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + + #categories_container { + width: 1000px; + width: -moz-max-content; + width: -webkit-max-content; + width: max-content; + + .checkbox_container { + display: inline-block; + width: auto; + } + } + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + #suggestions, #answers { + margin-top: 5px; + } + + #infoboxes { + position: inherit; + max-width: inherit; + + .infobox { + clear:both; + + img { + float: left; + max-width: 10em; + } + } + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + #sidebar { + position: static; + max-width: @results-width; + margin: 0 0 2px 0; + padding: 0; + float: none; + border: none; + width: auto; + input { + border: 0; + } + } + + #apis { + display: none; + } + + #search_url { + display: none; + } + + .result { + border-top: 1px solid @color-result-top-border; + margin: 8px 0 8px 0; + + .thumbnail { + max-width: 98%; + } + } + + .image_result { + max-width: 98%; + img { + max-width: 98%; + } + } +} + +.favicon { + float: left; + margin-right: 4px; + margin-top: 2px; +} + +.preferences_back { + background: none repeat scroll 0 0 @color-settings-return-background; + border: 0 none; + .rounded-corners; + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 4px 6px; + + a { + color: @color-settings-return-font; + } +} + +.hidden { + opacity: 0; + overflow: hidden; + font-size: 0.8em; + position: absolute; + bottom: -20px; + width: 100%; + text-position: center; + background: white; + transition: opacity 1s ease; +} + +#categories_container:hover .hidden { + transition: opacity 1s ease; + opacity: 0.8; +} diff --git a/searx/static/themes/oscar/.gitignore b/searx/static/themes/oscar/.gitignore new file mode 100644 index 000000000..c2658d7d1 --- /dev/null +++ b/searx/static/themes/oscar/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/searx/static/themes/oscar/README.rst b/searx/static/themes/oscar/README.rst new file mode 100644 index 000000000..e7daa8719 --- /dev/null +++ b/searx/static/themes/oscar/README.rst @@ -0,0 +1,17 @@ +install dependencies +~~~~~~~~~~~~~~~~~~~~ + +run this command in the directory ``searx/static/themes/oscar`` + +``npm install`` + +compile sources +~~~~~~~~~~~~~~~ + +run this command in the directory ``searx/static/themes/oscar`` + +``grunt`` + +or in the root directory: + +``make grunt`` diff --git a/searx/static/themes/oscar/css/leaflet.min.css b/searx/static/themes/oscar/css/leaflet.min.css new file mode 100644 index 000000000..bca0c58b9 --- /dev/null +++ b/searx/static/themes/oscar/css/leaflet.min.css @@ -0,0 +1,93 @@ +.leaflet-map-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-pane,.leaflet-tile-container,.leaflet-overlay-pane,.leaflet-shadow-pane,.leaflet-marker-pane,.leaflet-popup-pane,.leaflet-overlay-pane svg,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0} +.leaflet-container{overflow:hidden;-ms-touch-action:none} +.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none} +.leaflet-marker-icon,.leaflet-marker-shadow{display:block} +.leaflet-container img{max-width:none !important} +.leaflet-container img.leaflet-image-layer{max-width:15000px !important} +.leaflet-tile{filter:inherit;visibility:hidden} +.leaflet-tile-loaded{visibility:inherit} +.leaflet-zoom-box{width:0;height:0} +.leaflet-overlay-pane svg{-moz-user-select:none} +.leaflet-tile-pane{z-index:2} +.leaflet-objects-pane{z-index:3} +.leaflet-overlay-pane{z-index:4} +.leaflet-shadow-pane{z-index:5} +.leaflet-marker-pane{z-index:6} +.leaflet-popup-pane{z-index:7} +.leaflet-vml-shape{width:1px;height:1px} +.lvml{behavior:url(#default#VML);display:inline-block;position:absolute} +.leaflet-control{position:relative;z-index:7;pointer-events:auto} +.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none} +.leaflet-top{top:0} +.leaflet-right{right:0} +.leaflet-bottom{bottom:0} +.leaflet-left{left:0} +.leaflet-control{float:left;clear:both} +.leaflet-right .leaflet-control{float:right} +.leaflet-top .leaflet-control{margin-top:10px} +.leaflet-bottom .leaflet-control{margin-bottom:10px} +.leaflet-left .leaflet-control{margin-left:10px} +.leaflet-right .leaflet-control{margin-right:10px} +.leaflet-fade-anim .leaflet-tile,.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear} +.leaflet-fade-anim .leaflet-tile-loaded,.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1} +.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0, 0, .25, 1);-moz-transition:-moz-transform .25s cubic-bezier(0, 0, .25, 1);-o-transition:-o-transform .25s cubic-bezier(0, 0, .25, 1);transition:transform .25s cubic-bezier(0, 0, .25, 1)} +.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile,.leaflet-touching .leaflet-zoom-animated{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none} +.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden} +.leaflet-clickable{cursor:pointer} +.leaflet-container{cursor:-webkit-grab;cursor:-moz-grab} +.leaflet-popup-pane,.leaflet-control{cursor:auto} +.leaflet-dragging .leaflet-container,.leaflet-dragging .leaflet-clickable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing} +.leaflet-container{background:#ddd;outline:0} +.leaflet-container a{color:#0078a8} +.leaflet-container a.leaflet-active{outline:2px solid #ffa500} +.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,0.5)} +.leaflet-container{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif} +.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,0.65);border-radius:4px} +.leaflet-bar a,.leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000} +.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block} +.leaflet-bar a:hover{background-color:#f4f4f4} +.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px} +.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none} +.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb} +.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px} +.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px 'Lucida Console',Monaco,monospace;text-indent:1px} +.leaflet-control-zoom-out{font-size:20px} +.leaflet-touch .leaflet-control-zoom-in{font-size:22px} +.leaflet-touch .leaflet-control-zoom-out{font-size:24px} +.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,0.4);background:#fff;border-radius:5px} +.leaflet-control-layers-toggle{background-image:url(../img/map/layers.png);width:36px;height:36px} +.leaflet-retina .leaflet-control-layers-toggle{background-image:url(../img/map/layers-2x.png);background-size:26px 26px} +.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px} +.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none} +.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative} +.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff} +.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px} +.leaflet-control-layers label{display:block} +.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px} +.leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,0.7);margin:0} +.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333} +.leaflet-control-attribution a{text-decoration:none} +.leaflet-control-attribution a:hover{text-decoration:underline} +.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px} +.leaflet-left .leaflet-control-scale{margin-left:5px} +.leaflet-bottom .leaflet-control-scale{margin-bottom:5px} +.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:content-box;box-sizing:content-box;background:#fff;background:rgba(255,255,255,0.5)} +.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px} +.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777} +.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none} +.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,0.2);background-clip:padding-box} +.leaflet-popup{position:absolute;text-align:center} +.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px} +.leaflet-popup-content{margin:13px 19px;line-height:1.4} +.leaflet-popup-content p{margin:18px 0} +.leaflet-popup-tip-container{margin:0 auto;width:40px;height:20px;position:relative;overflow:hidden} +.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)} +.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;box-shadow:0 3px 14px rgba(0,0,0,0.4)} +.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:bold;background:transparent} +.leaflet-container a.leaflet-popup-close-button:hover{color:#999} +.leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd} +.leaflet-oldie .leaflet-popup-content-wrapper{zoom:1} +.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)} +.leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px} +.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999} +.leaflet-div-icon{background:#fff;border:1px solid #666} diff --git a/searx/static/themes/oscar/css/logicodev-dark.css b/searx/static/themes/oscar/css/logicodev-dark.css new file mode 100644 index 000000000..07f422f8e --- /dev/null +++ b/searx/static/themes/oscar/css/logicodev-dark.css @@ -0,0 +1,732 @@ +.searx-navbar { + background: #29314d; + height: 2.3rem; + font-size: 1.3rem; + line-height: 1.3rem; + padding: 0.5rem; + font-weight: bold; + margin-bottom: 0.8rem; +} +.searx-navbar a, +.searx-navbar a:hover { + margin-right: 2.0rem; + color: white; + text-decoration: none; +} +.searx-navbar .instance a { + color: #01d7d4; + margin-left: 2.0rem; +} +#main-logo { + margin-top: 20vh; + margin-bottom: 25px; +} +#main-logo > img { + max-width: 350px; + width: 80%; +} +* { + border-radius: 0 !important; +} +html { + position: relative; + min-height: 100%; + color: #29314d; +} +body { + /* Margin bottom by footer height */ + font-family: 'Roboto', Helvetica, Arial, sans-serif; + margin-bottom: 80px; + background-color: white; +} +body a { + color: #0088cc; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; + text-align: center; + color: #999; +} +input[type=checkbox]:checked + .label_hide_if_checked, +input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { + display: none; +} +input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, +input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { + display: none; +} +.onoff-checkbox { + width: 15%; +} +.onoffswitch { + position: relative; + width: 110px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; +} +.onoffswitch-inner { + display: block; + transition: margin 0.3s ease-in 0s; +} +.onoffswitch-inner:before, +.onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 30px; + padding: 0; + line-height: 40px; + font-size: 20px; + box-sizing: border-box; + content: ""; + background-color: #EEEEEE; +} +.onoffswitch-switch { + display: block; + width: 37px; + background-color: #01d7d4; + position: absolute; + top: 0; + bottom: 0; + right: 0px; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-right: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 71px; + background-color: #A1A1A1; +} +.result_header { + margin-top: 0px; + margin-bottom: 2px; + font-size: 16px; +} +.result_header .favicon { + margin-bottom: -3px; +} +.result_header a { + color: #29314d; + text-decoration: none; +} +.result_header a:hover { + color: #0088cc; +} +.result_header a:visited { + color: #684898; +} +.result_header a .highlight { + background-color: #f6f9fa; +} +.result-content, +.result-format, +.result-source { + margin-top: 2px; + margin-bottom: 0; + word-wrap: break-word; + color: #666666; + font-size: 13px; +} +.result-content .highlight, +.result-format .highlight, +.result-source .highlight { + font-weight: bold; +} +.result-source { + font-size: 10px; + float: left; +} +.result-format { + font-size: 10px; + float: right; +} +.external-link { + color: #069025; + font-size: 12px; + margin-bottom: 15px; +} +.external-link a { + margin-right: 3px; +} +.result-default, +.result-code, +.result-torrent, +.result-videos, +.result-map { + clear: both; + padding: 2px 4px; +} +.result-default:hover, +.result-code:hover, +.result-torrent:hover, +.result-videos:hover, +.result-map:hover { + background-color: #f6f9fa; +} +.result-images { + float: left !important; + width: 24%; + margin: .5%; +} +.result-images a { + display: block; + width: 100%; + background-size: cover; +} +.img-thumbnail { + margin: 5px; + max-height: 128px; + min-height: 128px; +} +.result-videos { + clear: both; +} +.result-videos hr { + margin: 5px 0 15px 0; +} +.result-videos .collapse { + width: 100%; +} +.result-videos .in { + margin-bottom: 8px; +} +.result-torrent { + clear: both; +} +.result-torrent b { + margin-right: 5px; + margin-left: 5px; +} +.result-torrent .seeders { + color: #2ecc71; +} +.result-torrent .leechers { + color: #f35e77; +} +.result-map { + clear: both; +} +.result-code { + clear: both; +} +.result-code .code-fork, +.result-code .code-fork a { + color: #666666; +} +.suggestion_item { + margin: 2px 5px; + max-width: 100%; +} +.suggestion_item .btn { + max-width: 100%; + white-space: normal; + word-wrap: break-word; + text-align: left; +} +.result_download { + margin-right: 5px; +} +#pagination { + margin-top: 30px; + padding-bottom: 60px; +} +.label-default { + color: #a4a4a4; + background: transparent; +} +.result .text-muted small { + word-wrap: break-word; +} +.modal-wrapper { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); +} +.modal-wrapper { + background-clip: padding-box; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0 none; + position: relative; +} +.infobox .panel-heading { + background-color: #f6f9fa; +} +.infobox .panel-heading .panel-title { + font-weight: 700; +} +.infobox p { + font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important; + font-style: italic; +} +.infobox .btn { + background-color: #2ecc71; + border: none; +} +.infobox .btn a { + color: white; + margin: 5px; +} +.infobox .infobox_part { + margin-bottom: 20px; + word-wrap: break-word; + table-layout: fixed; +} +.infobox .infobox_part:last-child { + margin-bottom: 0; +} +.search_categories, +#categories { + text-transform: capitalize; + margin-bottom: 0.5rem; + display: flex; + flex-wrap: wrap; + flex-flow: row wrap; + align-content: stretch; +} +.search_categories label, +#categories label, +.search_categories .input-group-addon, +#categories .input-group-addon { + flex-grow: 1; + flex-basis: auto; + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: #dddddd 1px solid; + border-right: none; + color: #666666; + padding-bottom: 0.4rem; + padding-top: 0.4rem; + text-align: center; + min-width: 50px; +} +.search_categories label:last-child, +#categories label:last-child, +.search_categories .input-group-addon:last-child, +#categories .input-group-addon:last-child { + border-right: #dddddd 1px solid; +} +.search_categories input[type="checkbox"]:checked + label, +#categories input[type="checkbox"]:checked + label { + color: #29314d; + font-weight: bold; + border-bottom: #01d7d4 5px solid; +} +#main-logo { + margin-top: 10vh; + margin-bottom: 25px; +} +#main-logo > img { + max-width: 350px; + width: 80%; +} +#q { + box-shadow: none; + border-right: none; + border-color: #a4a4a4; +} +#search_form .input-group-btn .btn { + border-color: #a4a4a4; +} +#search_form .input-group-btn .btn:hover { + background-color: #2ecc71; + color: white; +} +.custom-select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: #dddddd 1px solid; + color: #666666; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ +cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn +sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8 +6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0 +ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w +Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb +7jwaAAAAAElFTkSuQmCC) 96% no-repeat; +} +.search-margin { + margin-bottom: 0.6em; +} +#advanced-search-container { + display: none; + text-align: left; + margin-bottom: 1rem; + clear: both; +} +#advanced-search-container label, +#advanced-search-container .input-group-addon { + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: #dddddd 1px solid; + border-right: none; + color: #666666; + padding-bottom: 0.4rem; + padding-right: 0.7rem; + padding-left: 0.7rem; +} +#advanced-search-container label:last-child, +#advanced-search-container .input-group-addon:last-child { + border-right: #dddddd 1px solid; +} +#advanced-search-container input[type="radio"] { + display: none; +} +#advanced-search-container input[type="radio"]:checked + label { + color: #29314d; + font-weight: bold; + border-bottom: #01d7d4 5px solid; +} +#check-advanced { + display: none; +} +#check-advanced:checked ~ #advanced-search-container { + display: block; +} +.advanced { + padding: 0; + margin-top: 0.3rem; + text-align: right; +} +.advanced label, +.advanced select { + cursor: pointer; +} +.cursor-text { + cursor: text !important; +} +.cursor-pointer { + cursor: pointer !important; +} +pre, +code { + font-family: 'Ubuntu Mono', 'Courier New', 'Lucida Console', monospace !important; +} +.lineno { + margin-right: 5px; +} +.highlight .hll { + background-color: #ffffcc; +} +.highlight { + background: #f8f8f8; +} +.highlight .c { + color: #556366; + font-style: italic; +} +/* Comment */ +.highlight .err { + border: 1px solid #ffa92f; +} +/* Error */ +.highlight .k { + color: #BE74D5; + font-weight: bold; +} +/* Keyword */ +.highlight .o { + color: #d19a66; +} +/* Operator */ +.highlight .cm { + color: #556366; + font-style: italic; +} +/* Comment.Multiline */ +.highlight .cp { + color: #bc7a00; +} +/* Comment.Preproc */ +.highlight .c1 { + color: #556366; + font-style: italic; +} +/* Comment.Single */ +.highlight .cs { + color: #556366; + font-style: italic; +} +/* Comment.Special */ +.highlight .gd { + color: #a00000; +} +/* Generic.Deleted */ +.highlight .ge { + font-style: italic; +} +/* Generic.Emph */ +.highlight .gr { + color: #ff0000; +} +/* Generic.Error */ +.highlight .gh { + color: #000080; + font-weight: bold; +} +/* Generic.Heading */ +.highlight .gi { + color: #00a000; +} +/* Generic.Inserted */ +.highlight .go { + color: #888888; +} +/* Generic.Output */ +.highlight .gp { + color: #000080; + font-weight: bold; +} +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold; +} +/* Generic.Strong */ +.highlight .gu { + color: #800080; + font-weight: bold; +} +/* Generic.Subheading */ +.highlight .gt { + color: #0044dd; +} +/* Generic.Traceback */ +.highlight .kc { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Constant */ +.highlight .kd { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Declaration */ +.highlight .kn { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Namespace */ +.highlight .kp { + color: #be74d5; +} +/* Keyword.Pseudo */ +.highlight .kr { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Reserved */ +.highlight .kt { + color: #d46c72; +} +/* Keyword.Type */ +.highlight .m { + color: #d19a66; +} +/* Literal.Number */ +.highlight .s { + color: #86c372; +} +/* Literal.String */ +.highlight .na { + color: #7d9029; +} +/* Name.Attribute */ +.highlight .nb { + color: #be74d5; +} +/* Name.Builtin */ +.highlight .nc { + color: #61AFEF; + font-weight: bold; +} +/* Name.Class */ +.highlight .no { + color: #d19a66; +} +/* Name.Constant */ +.highlight .nd { + color: #aa22ff; +} +/* Name.Decorator */ +.highlight .ni { + color: #999999; + font-weight: bold; +} +/* Name.Entity */ +.highlight .ne { + color: #D2413A; + font-weight: bold; +} +/* Name.Exception */ +.highlight .nf { + color: #61afef; +} +/* Name.Function */ +.highlight .nl { + color: #a0a000; +} +/* Name.Label */ +.highlight .nn { + color: #61AFEF; + font-weight: bold; +} +/* Name.Namespace */ +.highlight .nt { + color: #BE74D5; + font-weight: bold; +} +/* Name.Tag */ +.highlight .nv { + color: #dfc06f; +} +/* Name.Variable */ +.highlight .ow { + color: #AA22FF; + font-weight: bold; +} +/* Operator.Word */ +.highlight .w { + color: #d7dae0; +} +/* Text.Whitespace */ +.highlight .mf { + color: #d19a66; +} +/* Literal.Number.Float */ +.highlight .mh { + color: #d19a66; +} +/* Literal.Number.Hex */ +.highlight .mi { + color: #d19a66; +} +/* Literal.Number.Integer */ +.highlight .mo { + color: #d19a66; +} +/* Literal.Number.Oct */ +.highlight .sb { + color: #86c372; +} +/* Literal.String.Backtick */ +.highlight .sc { + color: #86c372; +} +/* Literal.String.Char */ +.highlight .sd { + color: #86C372; + font-style: italic; +} +/* Literal.String.Doc */ +.highlight .s2 { + color: #86c372; +} +/* Literal.String.Double */ +.highlight .se { + color: #BB6622; + font-weight: bold; +} +/* Literal.String.Escape */ +.highlight .sh { + color: #86c372; +} +/* Literal.String.Heredoc */ +.highlight .si { + color: #BB6688; + font-weight: bold; +} +/* Literal.String.Interpol */ +.highlight .sx { + color: #be74d5; +} +/* Literal.String.Other */ +.highlight .sr { + color: #bb6688; +} +/* Literal.String.Regex */ +.highlight .s1 { + color: #86c372; +} +/* Literal.String.Single */ +.highlight .ss { + color: #dfc06f; +} +/* Literal.String.Symbol */ +.highlight .bp { + color: #be74d5; +} +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: #dfc06f; +} +/* Name.Variable.Class */ +.highlight .vg { + color: #dfc06f; +} +/* Name.Variable.Global */ +.highlight .vi { + color: #dfc06f; +} +/* Name.Variable.Instance */ +.highlight .il { + color: #d19a66; +} +/* Literal.Number.Integer.Long */ +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + color: #556366; +} +.highlight .lineno::selection { + background: transparent; + /* WebKit/Blink Browsers */ +} +.highlight .lineno::-moz-selection { + background: transparent; + /* Gecko Browsers */ +} +.highlight pre { + background-color: #282C34; + color: #D7DAE0; + border: none; + margin-bottom: 25px; + font-size: 15px; + padding: 20px 10px; +} +.highlight { + font-weight: 700; +} +.table > tbody > tr > td, +.table > tbody > tr > th { + vertical-align: middle !important; +} diff --git a/searx/static/themes/oscar/css/logicodev-dark.min.css b/searx/static/themes/oscar/css/logicodev-dark.min.css new file mode 100644 index 000000000..06e7fb0a9 --- /dev/null +++ b/searx/static/themes/oscar/css/logicodev-dark.min.css @@ -0,0 +1 @@ +*{border-radius:0!important}html{position:relative;min-height:100%;color:#29314d}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin-bottom:80px;background-color:#fff}body a{color:#08c}.footer{position:absolute;bottom:0;width:100%;height:60px;text-align:center;color:#999}input[type=checkbox]:checked+.label_hide_if_checked,input[type=checkbox]:checked+.label_hide_if_not_checked+.label_hide_if_checked{display:none}input[type=checkbox]:not(:checked)+.label_hide_if_not_checked,input[type=checkbox]:not(:checked)+.label_hide_if_checked+.label_hide_if_not_checked{display:none}.onoff-checkbox{width:15%}.onoffswitch{position:relative;width:110px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #FFF!important;border-radius:50px!important}.onoffswitch-inner{display:block;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{display:block;float:left;width:50%;height:30px;padding:0;line-height:40px;font-size:20px;box-sizing:border-box;content:"";background-color:#EEE}.onoffswitch-switch{display:block;width:37px;background-color:#01d7d4;position:absolute;top:0;bottom:0;right:0;border:2px solid #FFF!important;border-radius:50px!important;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-right:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:71px;background-color:#A1A1A1}.result_header{margin-top:0;margin-bottom:2px;font-size:16px}.result_header .favicon{margin-bottom:-3px}.result_header a{color:#29314d;text-decoration:none}.result_header a:hover{color:#08c}.result_header a:visited{color:#684898}.result_header a .highlight{background-color:#f6f9fa}.result-content,.result-format,.result-source{margin-top:2px;margin-bottom:0;word-wrap:break-word;color:#666;font-size:13px}.result-content .highlight,.result-format .highlight,.result-source .highlight{font-weight:700}.result-source{font-size:10px;float:left}.result-format{font-size:10px;float:right}.external-link{color:#069025;font-size:12px;margin-bottom:15px}.external-link a{margin-right:3px}.result-default,.result-code,.result-torrent,.result-videos,.result-map{clear:both;padding:2px 4px}.result-default:hover,.result-code:hover,.result-torrent:hover,.result-videos:hover,.result-map:hover{background-color:#f6f9fa}.result-images{float:left!important;width:24%;margin:.5%}.result-images a{display:block;width:100%;background-size:cover}.img-thumbnail{margin:5px;max-height:128px;min-height:128px}.result-videos{clear:both}.result-videos hr{margin:5px 0 15px 0}.result-videos .collapse{width:100%}.result-videos .in{margin-bottom:8px}.result-torrent{clear:both}.result-torrent b{margin-right:5px;margin-left:5px}.result-torrent .seeders{color:#2ecc71}.result-torrent .leechers{color:#f35e77}.result-map{clear:both}.result-code{clear:both}.result-code .code-fork,.result-code .code-fork a{color:#666}.suggestion_item{margin:2px 5px;max-width:100%}.suggestion_item .btn{max-width:100%;white-space:normal;word-wrap:break-word;text-align:left}.result_download{margin-right:5px}#pagination{margin-top:30px;padding-bottom:60px}.label-default{color:#a4a4a4;background:0 0}.result .text-muted small{word-wrap:break-word}.modal-wrapper{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-wrapper{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0 none;position:relative}.infobox .panel-heading{background-color:#f6f9fa}.infobox .panel-heading .panel-title{font-weight:700}.infobox p{font-family:"DejaVu Serif",Georgia,Cambria,"Times New Roman",Times,serif!important;font-style:italic}.infobox .btn{background-color:#2ecc71;border:none}.infobox .btn a{color:#fff;margin:5px}.infobox .infobox_part{margin-bottom:20px;word-wrap:break-word;table-layout:fixed}.infobox .infobox_part:last-child{margin-bottom:0}.search_categories,#categories{text-transform:capitalize;margin-bottom:.5rem;display:flex;flex-wrap:wrap;flex-flow:row wrap;align-content:stretch}.search_categories label,#categories label,.search_categories .input-group-addon,#categories .input-group-addon{flex-grow:1;flex-basis:auto;font-size:1.2rem;font-weight:400;background-color:#fff;border:#ddd 1px solid;border-right:none;color:#666;padding-bottom:.4rem;padding-top:.4rem;text-align:center;min-width:50px}.search_categories label:last-child,#categories label:last-child,.search_categories .input-group-addon:last-child,#categories .input-group-addon:last-child{border-right:#ddd 1px solid}.search_categories input[type=checkbox]:checked+label,#categories input[type=checkbox]:checked+label{color:#29314d;font-weight:700;border-bottom:#01d7d4 5px solid}#main-logo{margin-top:10vh;margin-bottom:25px}#main-logo>img{max-width:350px;width:80%}#q{box-shadow:none;border-right:none;border-color:#a4a4a4}#search_form .input-group-btn .btn{border-color:#a4a4a4}#search_form .input-group-btn .btn:hover{background-color:#2ecc71;color:#fff}.custom-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;font-size:1.2rem;font-weight:400;background-color:#fff;border:#ddd 1px solid;color:#666;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGnsAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW86/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC) 96% no-repeat}.search-margin{margin-bottom:.6em}#advanced-search-container{display:none;text-align:left;margin-bottom:1rem;clear:both}#advanced-search-container label,#advanced-search-container .input-group-addon{font-size:1.2rem;font-weight:400;background-color:#fff;border:#ddd 1px solid;border-right:none;color:#666;padding-bottom:.4rem;padding-right:.7rem;padding-left:.7rem}#advanced-search-container label:last-child,#advanced-search-container .input-group-addon:last-child{border-right:#ddd 1px solid}#advanced-search-container input[type=radio]{display:none}#advanced-search-container input[type=radio]:checked+label{color:#29314d;font-weight:700;border-bottom:#01d7d4 5px solid}#check-advanced{display:none}#check-advanced:checked~#advanced-search-container{display:block}.advanced{padding:0;margin-top:.3rem;text-align:right}.advanced label,.advanced select{cursor:pointer}.cursor-text{cursor:text!important}.cursor-pointer{cursor:pointer!important}pre,code{font-family:'Ubuntu Mono','Courier New','Lucida Console',monospace!important}.lineno{margin-right:5px}.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#556366;font-style:italic}.highlight .err{border:1px solid #ffa92f}.highlight .k{color:#BE74D5;font-weight:700}.highlight .o{color:#d19a66}.highlight .cm{color:#556366;font-style:italic}.highlight .cp{color:#bc7a00}.highlight .c1{color:#556366;font-style:italic}.highlight .cs{color:#556366;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04d}.highlight .kc{color:#BE74D5;font-weight:700}.highlight .kd{color:#BE74D5;font-weight:700}.highlight .kn{color:#BE74D5;font-weight:700}.highlight .kp{color:#be74d5}.highlight .kr{color:#BE74D5;font-weight:700}.highlight .kt{color:#d46c72}.highlight .m{color:#d19a66}.highlight .s{color:#86c372}.highlight .na{color:#7d9029}.highlight .nb{color:#be74d5}.highlight .nc{color:#61AFEF;font-weight:700}.highlight .no{color:#d19a66}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#61afef}.highlight .nl{color:#a0a000}.highlight .nn{color:#61AFEF;font-weight:700}.highlight .nt{color:#BE74D5;font-weight:700}.highlight .nv{color:#dfc06f}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#d7dae0}.highlight .mf{color:#d19a66}.highlight .mh{color:#d19a66}.highlight .mi{color:#d19a66}.highlight .mo{color:#d19a66}.highlight .sb{color:#86c372}.highlight .sc{color:#86c372}.highlight .sd{color:#86C372;font-style:italic}.highlight .s2{color:#86c372}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#86c372}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:#be74d5}.highlight .sr{color:#b68}.highlight .s1{color:#86c372}.highlight .ss{color:#dfc06f}.highlight .bp{color:#be74d5}.highlight .vc{color:#dfc06f}.highlight .vg{color:#dfc06f}.highlight .vi{color:#dfc06f}.highlight .il{color:#d19a66}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;color:#556366}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}.highlight pre{background-color:#282C34;color:#D7DAE0;border:none;margin-bottom:25px;font-size:15px;padding:20px 10px}.highlight{font-weight:700}.table>tbody>tr>td,.table>tbody>tr>th{vertical-align:middle!important}body{background:#1d1f21 none!important;color:#D5D8D7!important}a{color:#41a2ce!important;text-decoration:none!important}a:hover{color:#5F89AC!important}input,button,textarea,select{border:1px solid #282a2e!important;background-color:#444!important;color:#BBB!important}input:focus,button:focus,textarea:focus,select:focus{border:1px solid #C5C8C6!important;box-shadow:initial!important}div#advanced-search-container div#categories label{background:0 0;border:1px solid #282a2e}ul.nav li a{border:0!important;border-bottom:1px solid #4d3f43!important}#categories *,.modal-wrapper *{background:#1d1f21 none!important;color:#D5D8D7!important}#categories *{border:1px solid #3d3f43!important}#categories :checked+label{border-bottom:4px solid #3d9f94!important}.result-content,.result-source,.result-format{color:#B5B8B7!important}.external-link{color:#35B887!important}.table-striped tr td,.table-striped tr th{border-color:#4d3f43!important}.highlight{background:#333!important}.navbar{background:#1d1f21 none;border:none}.navbar .active,.menu{background:none!important}.label-default{background:0 0;color:#BBB}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus,.nav-tabs.nav-justified>.active>a{background-color:#282a2e!important}.result-default:hover,.result-code:hover,.result-torrent:hover,.result-videos:hover,.result-map:hover{background-color:#222426}.btn{color:#BBB;background-color:#444;border:1px solid #282a2e}.btn:hover{color:#444!important;background-color:#BBB!important}.btn-primary.active{color:#C5C8C6;background-color:#5F89AC;border-color:#5F89AC}.panel{border:1px solid #111;background:0 0}.panel-heading{color:#C5C8C6!important;background:#282a2e!important;border-bottom:none}.panel-body{color:#C5C8C6!important;background:#1d1f21!important;border-color:#111!important}p.btn.btn-default{background:0 0}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th,.table-striped>thead>tr:nth-child(odd)>th{background:#2d2f32 none!important;color:#D5D8D7!important}.label-success{background:#1d6f42 none!important}.label-danger{background:#ad1f12 none!important}.searx-navbar{background:#333334;height:2.3rem;font-size:1.3rem;line-height:1.3rem;padding:.5rem;font-weight:700;margin-bottom:.8rem}.searx-navbar a,.searx-navbar a:hover{margin-right:2rem;color:#fff;text-decoration:none}.searx-navbar .instance a{color:#01d7d4;margin-left:2rem}#main-logo{margin-top:20vh;margin-bottom:25px}#main-logo>img{max-width:350px;width:80%}.onoffswitch-inner:before,.onoffswitch-inner:after{background:#1d1f21 none!important}.onoffswitch-switch,.onoffswitch-label{border:2px solid #3d3f43!important}.nav>li>a:hover,.nav>li>a:focus{background-color:#3d3f43!important}.img-thumbnail,.thumbnail{padding:0;line-height:1.42857143;background:0 0;border:none}.modal-content{background:#1d1f21 none!important}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background:rgba(240,0,0,.56)!important;color:#C5C8C6!important}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background:rgba(237,59,59,.61)!important;color:#C5C8C6!important}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background:#66696e!important}.btn-success{color:#C5C8C6;background:#449d44}.btn-danger{color:#C5C8C6;background:#d9534f}.well{background:#444;border-color:#282a2e}.highlight{background-color:transparent!important}
\ No newline at end of file diff --git a/searx/static/themes/oscar/css/logicodev.css b/searx/static/themes/oscar/css/logicodev.css new file mode 100644 index 000000000..5e78ac749 --- /dev/null +++ b/searx/static/themes/oscar/css/logicodev.css @@ -0,0 +1,931 @@ +* { + border-radius: 0 !important; +} +html { + position: relative; + min-height: 100%; + color: #29314d; +} +body { + /* Margin bottom by footer height */ + font-family: 'Roboto', Helvetica, Arial, sans-serif; + margin-bottom: 80px; + background-color: white; +} +body a { + color: #0088cc; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; + text-align: center; + color: #999; +} +input[type=checkbox]:checked + .label_hide_if_checked, +input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { + display: none; +} +input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, +input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { + display: none; +} +.onoff-checkbox { + width: 15%; +} +.onoffswitch { + position: relative; + width: 110px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; +} +.onoffswitch-inner { + display: block; + transition: margin 0.3s ease-in 0s; +} +.onoffswitch-inner:before, +.onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 30px; + padding: 0; + line-height: 40px; + font-size: 20px; + box-sizing: border-box; + content: ""; + background-color: #EEEEEE; +} +.onoffswitch-switch { + display: block; + width: 37px; + background-color: #01d7d4; + position: absolute; + top: 0; + bottom: 0; + right: 0px; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-right: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 71px; + background-color: #A1A1A1; +} +.result_header { + margin-top: 0px; + margin-bottom: 2px; + font-size: 16px; +} +.result_header .favicon { + margin-bottom: -3px; +} +.result_header a { + color: #29314d; + text-decoration: none; +} +.result_header a:hover { + color: #0088cc; +} +.result_header a:visited { + color: #684898; +} +.result_header a .highlight { + background-color: #f6f9fa; +} +.result-content, +.result-format, +.result-source { + margin-top: 2px; + margin-bottom: 0; + word-wrap: break-word; + color: #666666; + font-size: 13px; +} +.result-content .highlight, +.result-format .highlight, +.result-source .highlight { + font-weight: bold; +} +.result-source { + font-size: 10px; + float: left; +} +.result-format { + font-size: 10px; + float: right; +} +.external-link { + color: #069025; + font-size: 12px; + margin-bottom: 15px; +} +.external-link a { + margin-right: 3px; +} +.result-default, +.result-code, +.result-torrent, +.result-videos, +.result-map { + clear: both; + padding: 2px 4px; +} +.result-default:hover, +.result-code:hover, +.result-torrent:hover, +.result-videos:hover, +.result-map:hover { + background-color: #f6f9fa; +} +.result-images { + float: left !important; + width: 24%; + margin: .5%; +} +.result-images a { + display: block; + width: 100%; + background-size: cover; +} +.img-thumbnail { + margin: 5px; + max-height: 128px; + min-height: 128px; +} +.result-videos { + clear: both; +} +.result-videos hr { + margin: 5px 0 15px 0; +} +.result-videos .collapse { + width: 100%; +} +.result-videos .in { + margin-bottom: 8px; +} +.result-torrent { + clear: both; +} +.result-torrent b { + margin-right: 5px; + margin-left: 5px; +} +.result-torrent .seeders { + color: #2ecc71; +} +.result-torrent .leechers { + color: #f35e77; +} +.result-map { + clear: both; +} +.result-code { + clear: both; +} +.result-code .code-fork, +.result-code .code-fork a { + color: #666666; +} +.suggestion_item { + margin: 2px 5px; + max-width: 100%; +} +.suggestion_item .btn { + max-width: 100%; + white-space: normal; + word-wrap: break-word; + text-align: left; +} +.result_download { + margin-right: 5px; +} +#pagination { + margin-top: 30px; + padding-bottom: 60px; +} +.label-default { + color: #a4a4a4; + background: transparent; +} +.result .text-muted small { + word-wrap: break-word; +} +.modal-wrapper { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); +} +.modal-wrapper { + background-clip: padding-box; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0 none; + position: relative; +} +.infobox .panel-heading { + background-color: #f6f9fa; +} +.infobox .panel-heading .panel-title { + font-weight: 700; +} +.infobox p { + font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important; + font-style: italic; +} +.infobox .btn { + background-color: #2ecc71; + border: none; +} +.infobox .btn a { + color: white; + margin: 5px; +} +.infobox .infobox_part { + margin-bottom: 20px; + word-wrap: break-word; + table-layout: fixed; +} +.infobox .infobox_part:last-child { + margin-bottom: 0; +} +.search_categories, +#categories { + text-transform: capitalize; + margin-bottom: 0.5rem; + display: flex; + flex-wrap: wrap; + flex-flow: row wrap; + align-content: stretch; +} +.search_categories label, +#categories label, +.search_categories .input-group-addon, +#categories .input-group-addon { + flex-grow: 1; + flex-basis: auto; + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: #dddddd 1px solid; + border-right: none; + color: #666666; + padding-bottom: 0.4rem; + padding-top: 0.4rem; + text-align: center; + min-width: 50px; +} +.search_categories label:last-child, +#categories label:last-child, +.search_categories .input-group-addon:last-child, +#categories .input-group-addon:last-child { + border-right: #dddddd 1px solid; +} +.search_categories input[type="checkbox"]:checked + label, +#categories input[type="checkbox"]:checked + label { + color: #29314d; + font-weight: bold; + border-bottom: #01d7d4 5px solid; +} +#main-logo { + margin-top: 10vh; + margin-bottom: 25px; +} +#main-logo > img { + max-width: 350px; + width: 80%; +} +#q { + box-shadow: none; + border-right: none; + border-color: #a4a4a4; +} +#search_form .input-group-btn .btn { + border-color: #a4a4a4; +} +#search_form .input-group-btn .btn:hover { + background-color: #2ecc71; + color: white; +} +.custom-select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: #dddddd 1px solid; + color: #666666; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ +cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn +sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8 +6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0 +ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w +Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb +7jwaAAAAAElFTkSuQmCC) 96% no-repeat; +} +.search-margin { + margin-bottom: 0.6em; +} +#advanced-search-container { + display: none; + text-align: left; + margin-bottom: 1rem; + clear: both; +} +#advanced-search-container label, +#advanced-search-container .input-group-addon { + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: #dddddd 1px solid; + border-right: none; + color: #666666; + padding-bottom: 0.4rem; + padding-right: 0.7rem; + padding-left: 0.7rem; +} +#advanced-search-container label:last-child, +#advanced-search-container .input-group-addon:last-child { + border-right: #dddddd 1px solid; +} +#advanced-search-container input[type="radio"] { + display: none; +} +#advanced-search-container input[type="radio"]:checked + label { + color: #29314d; + font-weight: bold; + border-bottom: #01d7d4 5px solid; +} +#check-advanced { + display: none; +} +#check-advanced:checked ~ #advanced-search-container { + display: block; +} +.advanced { + padding: 0; + margin-top: 0.3rem; + text-align: right; +} +.advanced label, +.advanced select { + cursor: pointer; +} +.cursor-text { + cursor: text !important; +} +.cursor-pointer { + cursor: pointer !important; +} +pre, +code { + font-family: 'Ubuntu Mono', 'Courier New', 'Lucida Console', monospace !important; +} +.lineno { + margin-right: 5px; +} +.highlight .hll { + background-color: #ffffcc; +} +.highlight { + background: #f8f8f8; +} +.highlight .c { + color: #556366; + font-style: italic; +} +/* Comment */ +.highlight .err { + border: 1px solid #ffa92f; +} +/* Error */ +.highlight .k { + color: #BE74D5; + font-weight: bold; +} +/* Keyword */ +.highlight .o { + color: #d19a66; +} +/* Operator */ +.highlight .cm { + color: #556366; + font-style: italic; +} +/* Comment.Multiline */ +.highlight .cp { + color: #bc7a00; +} +/* Comment.Preproc */ +.highlight .c1 { + color: #556366; + font-style: italic; +} +/* Comment.Single */ +.highlight .cs { + color: #556366; + font-style: italic; +} +/* Comment.Special */ +.highlight .gd { + color: #a00000; +} +/* Generic.Deleted */ +.highlight .ge { + font-style: italic; +} +/* Generic.Emph */ +.highlight .gr { + color: #ff0000; +} +/* Generic.Error */ +.highlight .gh { + color: #000080; + font-weight: bold; +} +/* Generic.Heading */ +.highlight .gi { + color: #00a000; +} +/* Generic.Inserted */ +.highlight .go { + color: #888888; +} +/* Generic.Output */ +.highlight .gp { + color: #000080; + font-weight: bold; +} +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold; +} +/* Generic.Strong */ +.highlight .gu { + color: #800080; + font-weight: bold; +} +/* Generic.Subheading */ +.highlight .gt { + color: #0044dd; +} +/* Generic.Traceback */ +.highlight .kc { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Constant */ +.highlight .kd { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Declaration */ +.highlight .kn { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Namespace */ +.highlight .kp { + color: #be74d5; +} +/* Keyword.Pseudo */ +.highlight .kr { + color: #BE74D5; + font-weight: bold; +} +/* Keyword.Reserved */ +.highlight .kt { + color: #d46c72; +} +/* Keyword.Type */ +.highlight .m { + color: #d19a66; +} +/* Literal.Number */ +.highlight .s { + color: #86c372; +} +/* Literal.String */ +.highlight .na { + color: #7d9029; +} +/* Name.Attribute */ +.highlight .nb { + color: #be74d5; +} +/* Name.Builtin */ +.highlight .nc { + color: #61AFEF; + font-weight: bold; +} +/* Name.Class */ +.highlight .no { + color: #d19a66; +} +/* Name.Constant */ +.highlight .nd { + color: #aa22ff; +} +/* Name.Decorator */ +.highlight .ni { + color: #999999; + font-weight: bold; +} +/* Name.Entity */ +.highlight .ne { + color: #D2413A; + font-weight: bold; +} +/* Name.Exception */ +.highlight .nf { + color: #61afef; +} +/* Name.Function */ +.highlight .nl { + color: #a0a000; +} +/* Name.Label */ +.highlight .nn { + color: #61AFEF; + font-weight: bold; +} +/* Name.Namespace */ +.highlight .nt { + color: #BE74D5; + font-weight: bold; +} +/* Name.Tag */ +.highlight .nv { + color: #dfc06f; +} +/* Name.Variable */ +.highlight .ow { + color: #AA22FF; + font-weight: bold; +} +/* Operator.Word */ +.highlight .w { + color: #d7dae0; +} +/* Text.Whitespace */ +.highlight .mf { + color: #d19a66; +} +/* Literal.Number.Float */ +.highlight .mh { + color: #d19a66; +} +/* Literal.Number.Hex */ +.highlight .mi { + color: #d19a66; +} +/* Literal.Number.Integer */ +.highlight .mo { + color: #d19a66; +} +/* Literal.Number.Oct */ +.highlight .sb { + color: #86c372; +} +/* Literal.String.Backtick */ +.highlight .sc { + color: #86c372; +} +/* Literal.String.Char */ +.highlight .sd { + color: #86C372; + font-style: italic; +} +/* Literal.String.Doc */ +.highlight .s2 { + color: #86c372; +} +/* Literal.String.Double */ +.highlight .se { + color: #BB6622; + font-weight: bold; +} +/* Literal.String.Escape */ +.highlight .sh { + color: #86c372; +} +/* Literal.String.Heredoc */ +.highlight .si { + color: #BB6688; + font-weight: bold; +} +/* Literal.String.Interpol */ +.highlight .sx { + color: #be74d5; +} +/* Literal.String.Other */ +.highlight .sr { + color: #bb6688; +} +/* Literal.String.Regex */ +.highlight .s1 { + color: #86c372; +} +/* Literal.String.Single */ +.highlight .ss { + color: #dfc06f; +} +/* Literal.String.Symbol */ +.highlight .bp { + color: #be74d5; +} +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: #dfc06f; +} +/* Name.Variable.Class */ +.highlight .vg { + color: #dfc06f; +} +/* Name.Variable.Global */ +.highlight .vi { + color: #dfc06f; +} +/* Name.Variable.Instance */ +.highlight .il { + color: #d19a66; +} +/* Literal.Number.Integer.Long */ +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + color: #556366; +} +.highlight .lineno::selection { + background: transparent; + /* WebKit/Blink Browsers */ +} +.highlight .lineno::-moz-selection { + background: transparent; + /* Gecko Browsers */ +} +.highlight pre { + background-color: #282C34; + color: #D7DAE0; + border: none; + margin-bottom: 25px; + font-size: 15px; + padding: 20px 10px; +} +.highlight { + font-weight: 700; +} +.table > tbody > tr > td, +.table > tbody > tr > th { + vertical-align: middle !important; +} +/*Global*/ +body { + background: #1d1f21 none !important; + color: #D5D8D7 !important; +} +a { + color: #41a2ce !important; + text-decoration: none !important; +} +a:hover { + color: #5F89AC !important; +} +input, +button, +textarea, +select { + border: 1px solid #282a2e !important; + background-color: #444 !important; + color: #BBB !important; +} +input:focus, +button:focus, +textarea:focus, +select:focus { + border: 1px solid #C5C8C6 !important; + box-shadow: initial !important; +} +div#advanced-search-container div#categories label { + background: none; + border: 1px solid #282a2e; +} +ul.nav li a { + border: 0 !important; + border-bottom: 1px solid #4d3f43 !important; +} +#categories *, +.modal-wrapper * { + background: #1d1f21 none !important; + color: #D5D8D7 !important; +} +#categories * { + border: 1px solid #3d3f43 !important; +} +#categories *:checked + label { + border-bottom: 4px solid #3d9f94 !important; +} +.result-content, +.result-source, +.result-format { + color: #B5B8B7 !important; +} +.external-link { + color: #35B887 !important; +} +.table-striped tr td, +.table-striped tr th { + border-color: #4d3f43 !important; +} +.highlight { + background: #333333 !important; +} +/*nav*/ +.navbar { + background: #1d1f21 none; + border: none; +} +.navbar .active, +.menu { + background: none !important; +} +.label-default { + background: none; + color: #BBB; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus, +.nav-tabs.nav-justified > .active > a { + background-color: #282a2e !important; +} +/*Search Page*/ +.result-default:hover, +.result-code:hover, +.result-torrent:hover, +.result-videos:hover, +.result-map:hover { + background-color: #222426; +} +/*buttons*/ +.btn { + color: #BBB; + background-color: #444 ; + border: 1px solid #282a2e; +} +.btn:hover { + color: #444 !important; + background-color: #BBB !important; +} +.btn-primary.active { + color: #C5C8C6; + background-color: #5F89AC; + border-color: #5F89AC; +} +/*Right Pannels*/ +.panel { + border: 1px solid #111; + background: none; +} +.panel-heading { + color: #C5C8C6 !important; + background: #282a2e !important; + border-bottom: none; +} +.panel-body { + color: #C5C8C6 !important; + background: #1d1f21 !important; + border-color: #111 !important; +} +p.btn.btn-default { + background: none; +} +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th, +.table-striped > thead > tr:nth-child(odd) > th { + background: #2d2f32 none !important; + color: #D5D8D7 !important; +} +.label-success { + background: #1d6f42 none !important; +} +.label-danger { + background: #ad1f12 none !important; +} +.searx-navbar { + background: #333334; + height: 2.3rem; + font-size: 1.3rem; + line-height: 1.3rem; + padding: 0.5rem; + font-weight: bold; + margin-bottom: 0.8rem; +} +.searx-navbar a, +.searx-navbar a:hover { + margin-right: 2.0rem; + color: white; + text-decoration: none; +} +.searx-navbar .instance a { + color: #01d7d4; + margin-left: 2.0rem; +} +#main-logo { + margin-top: 20vh; + margin-bottom: 25px; +} +#main-logo > img { + max-width: 350px; + width: 80%; +} +.onoffswitch-inner:before, +.onoffswitch-inner:after { + background: #1d1f21 none !important; +} +.onoffswitch-switch, +.onoffswitch-label { + border: 2px solid #3d3f43 !important; +} +.nav > li > a:hover, +.nav > li > a:focus { + background-color: #3d3f43 !important; +} +/*Images search*/ +.img-thumbnail, +.thumbnail { + padding: 0px; + line-height: 1.42857143; + background: none; + border: none; +} +.modal-content { + background: #1d1f21 none !important; +} +/*Preferences*/ +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background: rgba(240, 0, 0, 0.56) !important; + color: #C5C8C6 !important; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background: rgba(237, 59, 59, 0.61) !important; + color: #C5C8C6 !important; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background: #66696e !important; +} +.btn-success { + color: #C5C8C6; + background: #449d44; +} +.btn-danger { + color: #C5C8C6; + background: #d9534f; +} +.well { + background: #444; + border-color: #282a2e; +} +.highlight { + background-color: transparent !important; +} diff --git a/searx/static/themes/oscar/css/logicodev.min.css b/searx/static/themes/oscar/css/logicodev.min.css new file mode 100644 index 000000000..7f093e717 --- /dev/null +++ b/searx/static/themes/oscar/css/logicodev.min.css @@ -0,0 +1 @@ +.searx-navbar{background:#29314d;height:2.3rem;font-size:1.3rem;line-height:1.3rem;padding:.5rem;font-weight:700;margin-bottom:.8rem}.searx-navbar a,.searx-navbar a:hover{margin-right:2rem;color:#fff;text-decoration:none}.searx-navbar .instance a{color:#01d7d4;margin-left:2rem}#main-logo{margin-top:20vh;margin-bottom:25px}#main-logo>img{max-width:350px;width:80%}*{border-radius:0!important}html{position:relative;min-height:100%;color:#29314d}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin-bottom:80px;background-color:#fff}body a{color:#08c}.footer{position:absolute;bottom:0;width:100%;height:60px;text-align:center;color:#999}input[type=checkbox]:checked+.label_hide_if_checked,input[type=checkbox]:checked+.label_hide_if_not_checked+.label_hide_if_checked{display:none}input[type=checkbox]:not(:checked)+.label_hide_if_not_checked,input[type=checkbox]:not(:checked)+.label_hide_if_checked+.label_hide_if_not_checked{display:none}.onoff-checkbox{width:15%}.onoffswitch{position:relative;width:110px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #FFF!important;border-radius:50px!important}.onoffswitch-inner{display:block;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{display:block;float:left;width:50%;height:30px;padding:0;line-height:40px;font-size:20px;box-sizing:border-box;content:"";background-color:#EEE}.onoffswitch-switch{display:block;width:37px;background-color:#01d7d4;position:absolute;top:0;bottom:0;right:0;border:2px solid #FFF!important;border-radius:50px!important;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-right:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:71px;background-color:#A1A1A1}.result_header{margin-top:0;margin-bottom:2px;font-size:16px}.result_header .favicon{margin-bottom:-3px}.result_header a{color:#29314d;text-decoration:none}.result_header a:hover{color:#08c}.result_header a:visited{color:#684898}.result_header a .highlight{background-color:#f6f9fa}.result-content,.result-format,.result-source{margin-top:2px;margin-bottom:0;word-wrap:break-word;color:#666;font-size:13px}.result-content .highlight,.result-format .highlight,.result-source .highlight{font-weight:700}.result-source{font-size:10px;float:left}.result-format{font-size:10px;float:right}.external-link{color:#069025;font-size:12px;margin-bottom:15px}.external-link a{margin-right:3px}.result-default,.result-code,.result-torrent,.result-videos,.result-map{clear:both;padding:2px 4px}.result-default:hover,.result-code:hover,.result-torrent:hover,.result-videos:hover,.result-map:hover{background-color:#f6f9fa}.result-images{float:left!important;width:24%;margin:.5%}.result-images a{display:block;width:100%;background-size:cover}.img-thumbnail{margin:5px;max-height:128px;min-height:128px}.result-videos{clear:both}.result-videos hr{margin:5px 0 15px 0}.result-videos .collapse{width:100%}.result-videos .in{margin-bottom:8px}.result-torrent{clear:both}.result-torrent b{margin-right:5px;margin-left:5px}.result-torrent .seeders{color:#2ecc71}.result-torrent .leechers{color:#f35e77}.result-map{clear:both}.result-code{clear:both}.result-code .code-fork,.result-code .code-fork a{color:#666}.suggestion_item{margin:2px 5px;max-width:100%}.suggestion_item .btn{max-width:100%;white-space:normal;word-wrap:break-word;text-align:left}.result_download{margin-right:5px}#pagination{margin-top:30px;padding-bottom:60px}.label-default{color:#a4a4a4;background:0 0}.result .text-muted small{word-wrap:break-word}.modal-wrapper{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-wrapper{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0 none;position:relative}.infobox .panel-heading{background-color:#f6f9fa}.infobox .panel-heading .panel-title{font-weight:700}.infobox p{font-family:"DejaVu Serif",Georgia,Cambria,"Times New Roman",Times,serif!important;font-style:italic}.infobox .btn{background-color:#2ecc71;border:none}.infobox .btn a{color:#fff;margin:5px}.infobox .infobox_part{margin-bottom:20px;word-wrap:break-word;table-layout:fixed}.infobox .infobox_part:last-child{margin-bottom:0}.search_categories,#categories{text-transform:capitalize;margin-bottom:.5rem;display:flex;flex-wrap:wrap;flex-flow:row wrap;align-content:stretch}.search_categories label,#categories label,.search_categories .input-group-addon,#categories .input-group-addon{flex-grow:1;flex-basis:auto;font-size:1.2rem;font-weight:400;background-color:#fff;border:#ddd 1px solid;border-right:none;color:#666;padding-bottom:.4rem;padding-top:.4rem;text-align:center;min-width:50px}.search_categories label:last-child,#categories label:last-child,.search_categories .input-group-addon:last-child,#categories .input-group-addon:last-child{border-right:#ddd 1px solid}.search_categories input[type=checkbox]:checked+label,#categories input[type=checkbox]:checked+label{color:#29314d;font-weight:700;border-bottom:#01d7d4 5px solid}#main-logo{margin-top:10vh;margin-bottom:25px}#main-logo>img{max-width:350px;width:80%}#q{box-shadow:none;border-right:none;border-color:#a4a4a4}#search_form .input-group-btn .btn{border-color:#a4a4a4}#search_form .input-group-btn .btn:hover{background-color:#2ecc71;color:#fff}.custom-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;font-size:1.2rem;font-weight:400;background-color:#fff;border:#ddd 1px solid;color:#666;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGnsAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW86/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC) 96% no-repeat}.search-margin{margin-bottom:.6em}#advanced-search-container{display:none;text-align:left;margin-bottom:1rem;clear:both}#advanced-search-container label,#advanced-search-container .input-group-addon{font-size:1.2rem;font-weight:400;background-color:#fff;border:#ddd 1px solid;border-right:none;color:#666;padding-bottom:.4rem;padding-right:.7rem;padding-left:.7rem}#advanced-search-container label:last-child,#advanced-search-container .input-group-addon:last-child{border-right:#ddd 1px solid}#advanced-search-container input[type=radio]{display:none}#advanced-search-container input[type=radio]:checked+label{color:#29314d;font-weight:700;border-bottom:#01d7d4 5px solid}#check-advanced{display:none}#check-advanced:checked~#advanced-search-container{display:block}.advanced{padding:0;margin-top:.3rem;text-align:right}.advanced label,.advanced select{cursor:pointer}.cursor-text{cursor:text!important}.cursor-pointer{cursor:pointer!important}pre,code{font-family:'Ubuntu Mono','Courier New','Lucida Console',monospace!important}.lineno{margin-right:5px}.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#556366;font-style:italic}.highlight .err{border:1px solid #ffa92f}.highlight .k{color:#BE74D5;font-weight:700}.highlight .o{color:#d19a66}.highlight .cm{color:#556366;font-style:italic}.highlight .cp{color:#bc7a00}.highlight .c1{color:#556366;font-style:italic}.highlight .cs{color:#556366;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04d}.highlight .kc{color:#BE74D5;font-weight:700}.highlight .kd{color:#BE74D5;font-weight:700}.highlight .kn{color:#BE74D5;font-weight:700}.highlight .kp{color:#be74d5}.highlight .kr{color:#BE74D5;font-weight:700}.highlight .kt{color:#d46c72}.highlight .m{color:#d19a66}.highlight .s{color:#86c372}.highlight .na{color:#7d9029}.highlight .nb{color:#be74d5}.highlight .nc{color:#61AFEF;font-weight:700}.highlight .no{color:#d19a66}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#61afef}.highlight .nl{color:#a0a000}.highlight .nn{color:#61AFEF;font-weight:700}.highlight .nt{color:#BE74D5;font-weight:700}.highlight .nv{color:#dfc06f}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#d7dae0}.highlight .mf{color:#d19a66}.highlight .mh{color:#d19a66}.highlight .mi{color:#d19a66}.highlight .mo{color:#d19a66}.highlight .sb{color:#86c372}.highlight .sc{color:#86c372}.highlight .sd{color:#86C372;font-style:italic}.highlight .s2{color:#86c372}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#86c372}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:#be74d5}.highlight .sr{color:#b68}.highlight .s1{color:#86c372}.highlight .ss{color:#dfc06f}.highlight .bp{color:#be74d5}.highlight .vc{color:#dfc06f}.highlight .vg{color:#dfc06f}.highlight .vi{color:#dfc06f}.highlight .il{color:#d19a66}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;color:#556366}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}.highlight pre{background-color:#282C34;color:#D7DAE0;border:none;margin-bottom:25px;font-size:15px;padding:20px 10px}.highlight{font-weight:700}.table>tbody>tr>td,.table>tbody>tr>th{vertical-align:middle!important}
\ No newline at end of file diff --git a/searx/static/themes/oscar/css/pointhi.css b/searx/static/themes/oscar/css/pointhi.css new file mode 100644 index 000000000..4e167687c --- /dev/null +++ b/searx/static/themes/oscar/css/pointhi.css @@ -0,0 +1,562 @@ +html { + position: relative; + min-height: 100%; +} +body { + /* Margin bottom by footer height */ + margin-bottom: 80px; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; +} +input[type=checkbox]:checked + .label_hide_if_checked, +input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { + display: none; +} +input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, +input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { + display: none; +} +.onoff-checkbox { + width: 15%; +} +.onoffswitch { + position: relative; + width: 110px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; +} +.onoffswitch-inner { + display: block; + transition: margin 0.3s ease-in 0s; +} +.onoffswitch-inner:before, +.onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 30px; + padding: 0; + line-height: 40px; + font-size: 20px; + box-sizing: border-box; + content: ""; + background-color: #EEEEEE; +} +.onoffswitch-switch { + display: block; + width: 37px; + background-color: #00CC00; + position: absolute; + top: 0; + bottom: 0; + right: 0px; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-right: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 71px; + background-color: #A1A1A1; +} +.result_header { + margin-bottom: 5px; + margin-top: 20px; +} +.result_header .favicon { + margin-bottom: -3px; +} +.result_header a { + vertical-align: bottom; +} +.result_header a .highlight { + font-weight: bold; +} +.result-content { + margin-top: 5px; + word-wrap: break-word; +} +.result-content .highlight { + font-weight: bold; +} +.result-default { + clear: both; +} +.result-images { + float: left !important; + height: 138px; +} +.img-thumbnail { + margin: 5px; + max-height: 128px; +} +.result-videos { + clear: both; +} +.result-torrents { + clear: both; +} +.result-map { + clear: both; +} +.result-code { + clear: both; +} +.suggestion_item { + margin: 2px 5px; + max-width: 100%; +} +.suggestion_item .btn { + max-width: 100%; + white-space: normal; + word-wrap: break-word; + text-align: left; +} +.result_download { + margin-right: 5px; +} +#pagination { + margin-top: 30px; + padding-bottom: 50px; +} +.label-default { + color: #AAA; + background: #FFF; +} +.result .text-muted small { + word-wrap: break-word; +} +.modal-wrapper { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); +} +.modal-wrapper { + background-clip: padding-box; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0 none; + position: relative; +} +.infobox .infobox_part { + margin-bottom: 20px; + word-wrap: break-word; + table-layout: fixed; +} +.infobox .infobox_part:last-child { + margin-bottom: 0; +} +.search_categories, +#categories { + text-transform: capitalize; + margin-bottom: 1.5rem; + margin-top: 1.5rem; + display: flex; + flex-wrap: wrap; + align-content: stretch; +} +.search_categories label, +#categories label, +.search_categories .input-group-addon, +#categories .input-group-addon { + flex-grow: 1; + flex-basis: auto; + font-size: 1.3rem; + font-weight: normal; + background-color: white; + border: #DDD 1px solid; + border-right: none; + color: #333; + padding-bottom: 0.8rem; + padding-top: 0.8rem; + text-align: center; + min-width: 50px; +} +.search_categories label:last-child, +#categories label:last-child, +.search_categories .input-group-addon:last-child, +#categories .input-group-addon:last-child { + border-right: #DDD 1px solid; +} +.search_categories input[type="checkbox"]:checked + label, +#categories input[type="checkbox"]:checked + label { + color: black; + font-weight: bold; + background-color: #EEE; +} +#advanced-search-container { + display: none; + text-align: center; + margin-bottom: 1rem; + clear: both; +} +#advanced-search-container label, +#advanced-search-container .input-group-addon { + font-size: 1.3rem; + font-weight: normal; + background-color: white; + border: #DDD 1px solid; + border-right: none; + color: #333; + padding-bottom: 0.8rem; + padding-left: 1.2rem; + padding-right: 1.2rem; +} +#advanced-search-container label:last-child, +#advanced-search-container .input-group-addon:last-child { + border-right: #DDD 1px solid; +} +#advanced-search-container input[type="radio"] { + display: none; +} +#advanced-search-container input[type="radio"]:checked + label { + color: black; + font-weight: bold; + background-color: #EEE; +} +#check-advanced { + display: none; +} +#check-advanced:checked ~ #advanced-search-container { + display: block; +} +.advanced { + padding: 0; + margin-top: 0.3rem; + text-align: right; +} +.advanced label, +.advanced select { + cursor: pointer; +} +.cursor-text { + cursor: text !important; +} +.cursor-pointer { + cursor: pointer !important; +} +.highlight .hll { + background-color: #ffffcc; +} +.highlight { + background: #f8f8f8; +} +.highlight .c { + color: #408080; + font-style: italic; +} +/* Comment */ +.highlight .err { + border: 1px solid #ff0000; +} +/* Error */ +.highlight .k { + color: #008000; + font-weight: bold; +} +/* Keyword */ +.highlight .o { + color: #666666; +} +/* Operator */ +.highlight .cm { + color: #408080; + font-style: italic; +} +/* Comment.Multiline */ +.highlight .cp { + color: #bc7a00; +} +/* Comment.Preproc */ +.highlight .c1 { + color: #408080; + font-style: italic; +} +/* Comment.Single */ +.highlight .cs { + color: #408080; + font-style: italic; +} +/* Comment.Special */ +.highlight .gd { + color: #a00000; +} +/* Generic.Deleted */ +.highlight .ge { + font-style: italic; +} +/* Generic.Emph */ +.highlight .gr { + color: #ff0000; +} +/* Generic.Error */ +.highlight .gh { + color: #000080; + font-weight: bold; +} +/* Generic.Heading */ +.highlight .gi { + color: #00a000; +} +/* Generic.Inserted */ +.highlight .go { + color: #888888; +} +/* Generic.Output */ +.highlight .gp { + color: #000080; + font-weight: bold; +} +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold; +} +/* Generic.Strong */ +.highlight .gu { + color: #800080; + font-weight: bold; +} +/* Generic.Subheading */ +.highlight .gt { + color: #0044dd; +} +/* Generic.Traceback */ +.highlight .kc { + color: #008000; + font-weight: bold; +} +/* Keyword.Constant */ +.highlight .kd { + color: #008000; + font-weight: bold; +} +/* Keyword.Declaration */ +.highlight .kn { + color: #008000; + font-weight: bold; +} +/* Keyword.Namespace */ +.highlight .kp { + color: #008000; +} +/* Keyword.Pseudo */ +.highlight .kr { + color: #008000; + font-weight: bold; +} +/* Keyword.Reserved */ +.highlight .kt { + color: #b00040; +} +/* Keyword.Type */ +.highlight .m { + color: #666666; +} +/* Literal.Number */ +.highlight .s { + color: #ba2121; +} +/* Literal.String */ +.highlight .na { + color: #7d9029; +} +/* Name.Attribute */ +.highlight .nb { + color: #008000; +} +/* Name.Builtin */ +.highlight .nc { + color: #0000FF; + font-weight: bold; +} +/* Name.Class */ +.highlight .no { + color: #880000; +} +/* Name.Constant */ +.highlight .nd { + color: #aa22ff; +} +/* Name.Decorator */ +.highlight .ni { + color: #999999; + font-weight: bold; +} +/* Name.Entity */ +.highlight .ne { + color: #D2413A; + font-weight: bold; +} +/* Name.Exception */ +.highlight .nf { + color: #0000ff; +} +/* Name.Function */ +.highlight .nl { + color: #a0a000; +} +/* Name.Label */ +.highlight .nn { + color: #0000FF; + font-weight: bold; +} +/* Name.Namespace */ +.highlight .nt { + color: #008000; + font-weight: bold; +} +/* Name.Tag */ +.highlight .nv { + color: #19177c; +} +/* Name.Variable */ +.highlight .ow { + color: #AA22FF; + font-weight: bold; +} +/* Operator.Word */ +.highlight .w { + color: #bbbbbb; +} +/* Text.Whitespace */ +.highlight .mf { + color: #666666; +} +/* Literal.Number.Float */ +.highlight .mh { + color: #666666; +} +/* Literal.Number.Hex */ +.highlight .mi { + color: #666666; +} +/* Literal.Number.Integer */ +.highlight .mo { + color: #666666; +} +/* Literal.Number.Oct */ +.highlight .sb { + color: #ba2121; +} +/* Literal.String.Backtick */ +.highlight .sc { + color: #ba2121; +} +/* Literal.String.Char */ +.highlight .sd { + color: #BA2121; + font-style: italic; +} +/* Literal.String.Doc */ +.highlight .s2 { + color: #ba2121; +} +/* Literal.String.Double */ +.highlight .se { + color: #BB6622; + font-weight: bold; +} +/* Literal.String.Escape */ +.highlight .sh { + color: #ba2121; +} +/* Literal.String.Heredoc */ +.highlight .si { + color: #BB6688; + font-weight: bold; +} +/* Literal.String.Interpol */ +.highlight .sx { + color: #008000; +} +/* Literal.String.Other */ +.highlight .sr { + color: #bb6688; +} +/* Literal.String.Regex */ +.highlight .s1 { + color: #ba2121; +} +/* Literal.String.Single */ +.highlight .ss { + color: #19177c; +} +/* Literal.String.Symbol */ +.highlight .bp { + color: #008000; +} +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: #19177c; +} +/* Name.Variable.Class */ +.highlight .vg { + color: #19177c; +} +/* Name.Variable.Global */ +.highlight .vi { + color: #19177c; +} +/* Name.Variable.Instance */ +.highlight .il { + color: #666666; +} +/* Literal.Number.Integer.Long */ +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} +.highlight .lineno::selection { + background: transparent; + /* WebKit/Blink Browsers */ +} +.highlight .lineno::-moz-selection { + background: transparent; + /* Gecko Browsers */ +} +.searx-navbar { + background: #eee; + color: #aaa; + height: 2.3rem; + font-size: 1.3rem; + line-height: 1.3rem; + padding: 0.5rem; + font-weight: bold; + margin-bottom: 1.3rem; +} +.searx-navbar a, +.searx-navbar a:hover { + margin-right: 2.0rem; + text-decoration: none; +} +.searx-navbar .instance a { + color: #444; + margin-left: 2.0rem; +} +.table > tbody > tr > td, +.table > tbody > tr > th { + vertical-align: middle !important; +} diff --git a/searx/static/themes/oscar/css/pointhi.min.css b/searx/static/themes/oscar/css/pointhi.min.css new file mode 100644 index 000000000..c0ff52e97 --- /dev/null +++ b/searx/static/themes/oscar/css/pointhi.min.css @@ -0,0 +1 @@ +html{position:relative;min-height:100%}body{margin-bottom:80px}.footer{position:absolute;bottom:0;width:100%;height:60px}input[type=checkbox]:checked+.label_hide_if_checked,input[type=checkbox]:checked+.label_hide_if_not_checked+.label_hide_if_checked{display:none}input[type=checkbox]:not(:checked)+.label_hide_if_not_checked,input[type=checkbox]:not(:checked)+.label_hide_if_checked+.label_hide_if_not_checked{display:none}.onoff-checkbox{width:15%}.onoffswitch{position:relative;width:110px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #FFF!important;border-radius:50px!important}.onoffswitch-inner{display:block;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{display:block;float:left;width:50%;height:30px;padding:0;line-height:40px;font-size:20px;box-sizing:border-box;content:"";background-color:#EEE}.onoffswitch-switch{display:block;width:37px;background-color:#0C0;position:absolute;top:0;bottom:0;right:0;border:2px solid #FFF!important;border-radius:50px!important;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-right:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:71px;background-color:#A1A1A1}.result_header{margin-bottom:5px;margin-top:20px}.result_header .favicon{margin-bottom:-3px}.result_header a{vertical-align:bottom}.result_header a .highlight{font-weight:700}.result-content{margin-top:5px;word-wrap:break-word}.result-content .highlight{font-weight:700}.result-default{clear:both}.result-images{float:left!important;height:138px}.img-thumbnail{margin:5px;max-height:128px}.result-videos{clear:both}.result-torrents{clear:both}.result-map{clear:both}.result-code{clear:both}.suggestion_item{margin:2px 5px;max-width:100%}.suggestion_item .btn{max-width:100%;white-space:normal;word-wrap:break-word;text-align:left}.result_download{margin-right:5px}#pagination{margin-top:30px;padding-bottom:50px}.label-default{color:#AAA;background:#FFF}.result .text-muted small{word-wrap:break-word}.modal-wrapper{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-wrapper{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0 none;position:relative}.infobox .infobox_part{margin-bottom:20px;word-wrap:break-word;table-layout:fixed}.infobox .infobox_part:last-child{margin-bottom:0}.search_categories,#categories{text-transform:capitalize;margin-bottom:1.5rem;margin-top:1.5rem;display:flex;flex-wrap:wrap;align-content:stretch}.search_categories label,#categories label,.search_categories .input-group-addon,#categories .input-group-addon{flex-grow:1;flex-basis:auto;font-size:1.3rem;font-weight:400;background-color:#fff;border:#DDD 1px solid;border-right:none;color:#333;padding-bottom:.8rem;padding-top:.8rem;text-align:center;min-width:50px}.search_categories label:last-child,#categories label:last-child,.search_categories .input-group-addon:last-child,#categories .input-group-addon:last-child{border-right:#DDD 1px solid}.search_categories input[type=checkbox]:checked+label,#categories input[type=checkbox]:checked+label{color:#000;font-weight:700;background-color:#EEE}#advanced-search-container{display:none;text-align:center;margin-bottom:1rem;clear:both}#advanced-search-container label,#advanced-search-container .input-group-addon{font-size:1.3rem;font-weight:400;background-color:#fff;border:#DDD 1px solid;border-right:none;color:#333;padding-bottom:.8rem;padding-left:1.2rem;padding-right:1.2rem}#advanced-search-container label:last-child,#advanced-search-container .input-group-addon:last-child{border-right:#DDD 1px solid}#advanced-search-container input[type=radio]{display:none}#advanced-search-container input[type=radio]:checked+label{color:#000;font-weight:700;background-color:#EEE}#check-advanced{display:none}#check-advanced:checked~#advanced-search-container{display:block}.advanced{padding:0;margin-top:.3rem;text-align:right}.advanced label,.advanced select{cursor:pointer}.cursor-text{cursor:text!important}.cursor-pointer{cursor:pointer!important}.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#408080;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:green;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#408080;font-style:italic}.highlight .cp{color:#bc7a00}.highlight .c1{color:#408080;font-style:italic}.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04d}.highlight .kc{color:green;font-weight:700}.highlight .kd{color:green;font-weight:700}.highlight .kn{color:green;font-weight:700}.highlight .kp{color:green}.highlight .kr{color:green;font-weight:700}.highlight .kt{color:#b00040}.highlight .m{color:#666}.highlight .s{color:#ba2121}.highlight .na{color:#7d9029}.highlight .nb{color:green}.highlight .nc{color:#00F;font-weight:700}.highlight .no{color:#800}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#00f}.highlight .nl{color:#a0a000}.highlight .nn{color:#00F;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#19177c}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#bbb}.highlight .mf{color:#666}.highlight .mh{color:#666}.highlight .mi{color:#666}.highlight .mo{color:#666}.highlight .sb{color:#ba2121}.highlight .sc{color:#ba2121}.highlight .sd{color:#BA2121;font-style:italic}.highlight .s2{color:#ba2121}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#ba2121}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#b68}.highlight .s1{color:#ba2121}.highlight .ss{color:#19177c}.highlight .bp{color:green}.highlight .vc{color:#19177c}.highlight .vg{color:#19177c}.highlight .vi{color:#19177c}.highlight .il{color:#666}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}.searx-navbar{background:#eee;color:#aaa;height:2.3rem;font-size:1.3rem;line-height:1.3rem;padding:.5rem;font-weight:700;margin-bottom:1.3rem}.searx-navbar a,.searx-navbar a:hover{margin-right:2rem;text-decoration:none}.searx-navbar .instance a{color:#444;margin-left:2rem}.table>tbody>tr>td,.table>tbody>tr>th{vertical-align:middle!important}
\ No newline at end of file diff --git a/searx/static/themes/oscar/gruntfile.js b/searx/static/themes/oscar/gruntfile.js new file mode 100644 index 000000000..def035dba --- /dev/null +++ b/searx/static/themes/oscar/gruntfile.js @@ -0,0 +1,96 @@ +module.exports = function(grunt) { + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + concat: { + options: { + separator: ';' + }, + dist: { + src: ['js/searx_src/*.js'], + dest: 'js/searx.js' + } + }, + uglify: { + options: { + banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + }, + dist: { + files: { + 'js/searx.min.js': ['<%= concat.dist.dest %>'] + } + } + }, + jshint: { + files: ['gruntfile.js', 'js/searx_src/*.js'], + options: { + reporterOutput: "", + // options here to override JSHint defaults + globals: { + jQuery: true, + console: true, + module: true, + document: true + } + } + }, + less: { + development: { + options: { + paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"] + //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + }, + files: {"css/pointhi.css": "less/pointhi/oscar.less", + "css/logicodev.css": "less/logicodev-dark/oscar.less", + "css/logicodev-dark.css": "less/logicodev/oscar.less"} + }, + production: { + options: { + paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"], + //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n', + cleancss: true + }, + files: {"css/pointhi.min.css": "less/pointhi/oscar.less", + "css/logicodev.min.css": "less/logicodev/oscar.less", + "css/logicodev-dark.min.css": "less/logicodev-dark/oscar.less"} + }, + /* + // built with ./manage.sh styles + bootstrap: { + options: { + paths: ["less/bootstrap"], + cleancss: true + }, + files: {"css/bootstrap.min.css": "less/bootstrap/bootstrap.less"} + }, + */ + }, + watch: { + scripts: { + files: ['<%= jshint.files %>'], + tasks: ['jshint', 'concat', 'uglify'] + }, + oscar_styles: { + files: ['less/pointhi/**/*.less'], + tasks: ['less:development', 'less:production'] + }, + bootstrap_styles: { + files: ['less/bootstrap/**/*.less'], + tasks: ['less:bootstrap'] + } + } + }); + + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-less'); + + grunt.registerTask('test', ['jshint']); + + grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less']); + + grunt.registerTask('styles', ['less']); + +}; diff --git a/searx/static/themes/oscar/img/favicon.png b/searx/static/themes/oscar/img/favicon.png Binary files differnew file mode 100644 index 000000000..15b45753f --- /dev/null +++ b/searx/static/themes/oscar/img/favicon.png diff --git a/searx/static/themes/oscar/img/icons/1337x.png b/searx/static/themes/oscar/img/icons/1337x.png Binary files differnew file mode 100644 index 000000000..a9164d454 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/1337x.png diff --git a/searx/static/themes/oscar/img/icons/README.md b/searx/static/themes/oscar/img/icons/README.md new file mode 100644 index 000000000..0e3ad1c03 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/README.md @@ -0,0 +1,2 @@ +Source: http://www.iconspedia.com/pack/flat-gradient-social-icons-4384/ +License: Free for non commercial use. diff --git a/searx/static/themes/oscar/img/icons/amazon.png b/searx/static/themes/oscar/img/icons/amazon.png Binary files differnew file mode 100644 index 000000000..b4abf7d81 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/amazon.png diff --git a/searx/static/themes/oscar/img/icons/dailymotion.png b/searx/static/themes/oscar/img/icons/dailymotion.png Binary files differnew file mode 100644 index 000000000..88e4801b6 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/dailymotion.png diff --git a/searx/static/themes/oscar/img/icons/deviantart.png b/searx/static/themes/oscar/img/icons/deviantart.png Binary files differnew file mode 100644 index 000000000..cec53bcea --- /dev/null +++ b/searx/static/themes/oscar/img/icons/deviantart.png diff --git a/searx/static/themes/oscar/img/icons/facebook.png b/searx/static/themes/oscar/img/icons/facebook.png Binary files differnew file mode 100644 index 000000000..ac5a59493 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/facebook.png diff --git a/searx/static/themes/oscar/img/icons/flickr.png b/searx/static/themes/oscar/img/icons/flickr.png Binary files differnew file mode 100644 index 000000000..2496313ad --- /dev/null +++ b/searx/static/themes/oscar/img/icons/flickr.png diff --git a/searx/static/themes/oscar/img/icons/github.png b/searx/static/themes/oscar/img/icons/github.png Binary files differnew file mode 100644 index 000000000..9463a828a --- /dev/null +++ b/searx/static/themes/oscar/img/icons/github.png diff --git a/searx/static/themes/oscar/img/icons/invidious.png b/searx/static/themes/oscar/img/icons/invidious.png Binary files differnew file mode 100644 index 000000000..a94c969d8 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/invidious.png diff --git a/searx/static/themes/oscar/img/icons/kickass.png b/searx/static/themes/oscar/img/icons/kickass.png Binary files differnew file mode 100644 index 000000000..567d1039f --- /dev/null +++ b/searx/static/themes/oscar/img/icons/kickass.png diff --git a/searx/static/themes/oscar/img/icons/openstreetmap.png b/searx/static/themes/oscar/img/icons/openstreetmap.png Binary files differnew file mode 100644 index 000000000..4f88c9643 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/openstreetmap.png diff --git a/searx/static/themes/oscar/img/icons/photon.png b/searx/static/themes/oscar/img/icons/photon.png Binary files differnew file mode 100644 index 000000000..0d0732027 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/photon.png diff --git a/searx/static/themes/oscar/img/icons/searchcode code.png b/searx/static/themes/oscar/img/icons/searchcode code.png Binary files differnew file mode 100644 index 000000000..517434af0 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/searchcode code.png diff --git a/searx/static/themes/oscar/img/icons/searchcode doc.png b/searx/static/themes/oscar/img/icons/searchcode doc.png Binary files differnew file mode 100644 index 000000000..517434af0 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/searchcode doc.png diff --git a/searx/static/themes/oscar/img/icons/soundcloud.png b/searx/static/themes/oscar/img/icons/soundcloud.png Binary files differnew file mode 100644 index 000000000..851efdd35 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/soundcloud.png diff --git a/searx/static/themes/oscar/img/icons/stackoverflow.png b/searx/static/themes/oscar/img/icons/stackoverflow.png Binary files differnew file mode 100644 index 000000000..812176ad2 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/stackoverflow.png diff --git a/searx/static/themes/oscar/img/icons/twitter.png b/searx/static/themes/oscar/img/icons/twitter.png Binary files differnew file mode 100644 index 000000000..f71c1973a --- /dev/null +++ b/searx/static/themes/oscar/img/icons/twitter.png diff --git a/searx/static/themes/oscar/img/icons/vimeo.png b/searx/static/themes/oscar/img/icons/vimeo.png Binary files differnew file mode 100644 index 000000000..0238d24d2 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/vimeo.png diff --git a/searx/static/themes/oscar/img/icons/wikipedia.png b/searx/static/themes/oscar/img/icons/wikipedia.png Binary files differnew file mode 100644 index 000000000..f77168382 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/wikipedia.png diff --git a/searx/static/themes/oscar/img/icons/youtube.png b/searx/static/themes/oscar/img/icons/youtube.png Binary files differnew file mode 100644 index 000000000..4dc2ffbc5 --- /dev/null +++ b/searx/static/themes/oscar/img/icons/youtube.png diff --git a/searx/static/themes/oscar/img/loader.gif b/searx/static/themes/oscar/img/loader.gif Binary files differnew file mode 100644 index 000000000..419cdeeda --- /dev/null +++ b/searx/static/themes/oscar/img/loader.gif diff --git a/searx/static/themes/oscar/img/logo_searx_a.png b/searx/static/themes/oscar/img/logo_searx_a.png Binary files differnew file mode 100644 index 000000000..9427900c8 --- /dev/null +++ b/searx/static/themes/oscar/img/logo_searx_a.png diff --git a/searx/static/themes/oscar/img/logo_searx_a_n.png b/searx/static/themes/oscar/img/logo_searx_a_n.png Binary files differnew file mode 100644 index 000000000..5b24aea8c --- /dev/null +++ b/searx/static/themes/oscar/img/logo_searx_a_n.png diff --git a/searx/static/themes/oscar/img/map/layers-2x.png b/searx/static/themes/oscar/img/map/layers-2x.png Binary files differnew file mode 100644 index 000000000..0b30da678 --- /dev/null +++ b/searx/static/themes/oscar/img/map/layers-2x.png diff --git a/searx/static/themes/oscar/img/map/layers.png b/searx/static/themes/oscar/img/map/layers.png Binary files differnew file mode 100644 index 000000000..4297fd9ee --- /dev/null +++ b/searx/static/themes/oscar/img/map/layers.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-green.png b/searx/static/themes/oscar/img/map/marker-icon-2x-green.png Binary files differnew file mode 100644 index 000000000..7446bb031 --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-2x-green.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png b/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png Binary files differnew file mode 100644 index 000000000..ecd67736f --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-red.png b/searx/static/themes/oscar/img/map/marker-icon-2x-red.png Binary files differnew file mode 100644 index 000000000..1d2e197c6 --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-2x-red.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x.png b/searx/static/themes/oscar/img/map/marker-icon-2x.png Binary files differnew file mode 100644 index 000000000..0015b6495 --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-2x.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-green.png b/searx/static/themes/oscar/img/map/marker-icon-green.png Binary files differnew file mode 100644 index 000000000..f48ef41df --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-green.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-orange.png b/searx/static/themes/oscar/img/map/marker-icon-orange.png Binary files differnew file mode 100644 index 000000000..d0d22205c --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-orange.png diff --git a/searx/static/themes/oscar/img/map/marker-icon-red.png b/searx/static/themes/oscar/img/map/marker-icon-red.png Binary files differnew file mode 100644 index 000000000..7a92b9e04 --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon-red.png diff --git a/searx/static/themes/oscar/img/map/marker-icon.png b/searx/static/themes/oscar/img/map/marker-icon.png Binary files differnew file mode 100644 index 000000000..e2e9f757f --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-icon.png diff --git a/searx/static/themes/oscar/img/map/marker-shadow.png b/searx/static/themes/oscar/img/map/marker-shadow.png Binary files differnew file mode 100644 index 000000000..d1e773c71 --- /dev/null +++ b/searx/static/themes/oscar/img/map/marker-shadow.png diff --git a/searx/static/themes/oscar/img/searx_logo.png b/searx/static/themes/oscar/img/searx_logo.png Binary files differnew file mode 100644 index 000000000..307b42f12 --- /dev/null +++ b/searx/static/themes/oscar/img/searx_logo.png diff --git a/searx/static/themes/oscar/js/leaflet-0.7.3.min.js b/searx/static/themes/oscar/js/leaflet-0.7.3.min.js new file mode 100644 index 000000000..03434b77d --- /dev/null +++ b/searx/static/themes/oscar/js/leaflet-0.7.3.min.js @@ -0,0 +1,9 @@ +/* + Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com + (c) 2010-2013, Vladimir Agafonkin + (c) 2010-2011, CloudMade +*/ +!function(t,e,i){var n=t.L,o={};o.version="0.7.3","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?void(o=!0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),void t.apply(i,a))}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,n){var o=e[n];if(o===i)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;i<o.length&&!n;i++)n=t[o[i]+e];return n}function i(e){var i=+new Date,o=Math.max(0,16-(i-n));return n=i+o,t.setTimeout(e,o)}var n=0,s=t.requestAnimationFrame||e("RequestAnimationFrame")||i,a=t.cancelAnimationFrame||e("CancelAnimationFrame")||e("CancelRequestAnimationFrame")||function(e){t.clearTimeout(e)};o.Util.requestAnimFrame=function(e,n,a,r){return e=o.bind(e,n),a&&s===i?void e():s.call(t,e,r)},o.Util.cancelAnimFrame=function(e){e&&a.call(t,e)}}(),o.extend=o.Util.extend,o.bind=o.Util.bind,o.stamp=o.Util.stamp,o.setOptions=o.Util.setOptions,o.Class=function(){},o.Class.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this._initHooks&&this.callInitHooks()},i=function(){};i.prototype=this.prototype;var n=new i;n.constructor=e,e.prototype=n;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&(e[s]=this[s]);t.statics&&(o.extend(e,t.statics),delete t.statics),t.includes&&(o.Util.extend.apply(null,[n].concat(t.includes)),delete t.includes),t.options&&n.options&&(t.options=o.extend({},n.options,t.options)),o.extend(n,t),n._initHooks=[];var a=this;return e.__super__=a.prototype,n.callInitHooks=function(){if(!this._initHooksCalled){a.prototype.callInitHooks&&a.prototype.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=n._initHooks.length;e>t;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=t.navigator&&t.navigator.msPointerEnabled&&t.navigator.msMaxTouchPoints&&!t.PointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled&&t.navigator.maxTouchPoints||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix&&!c,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&function(){var t="ontouchstart";if(m||t in g)return!0;var i=e.createElement("div"),n=!1;return i.setAttribute?(i.setAttribute(t,"return;"),"function"==typeof i[t]&&(n=!0),i.removeAttribute(t),i=null,n):!1}();o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;n<t.length;n++)if(t[n]in i)return t[n];return!1},getTranslateString:function(t){var e=o.Browser.webkit3d,i="translate"+(e?"3d":"")+"(",n=(e?",0":"")+")";return i+t.x+"px,"+t.y+"px"+n},getScaleString:function(t,e){var i=o.DomUtil.getTranslateString(e.add(e.multiplyBy(-1*t))),n=" scale("+t+") ";return i+n},setPosition:function(t,e,i){t._leaflet_pos=e,!i&&o.Browser.any3d?t.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(e):(t.style.left=e.x+"px",t.style.top=e.y+"px")},getPosition:function(t){return t._leaflet_pos}},o.DomUtil.TRANSFORM=o.DomUtil.testProp(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),o.DomUtil.TRANSITION=o.DomUtil.testProp(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),o.DomUtil.TRANSITION_END="webkitTransition"===o.DomUtil.TRANSITION||"OTransition"===o.DomUtil.TRANSITION?o.DomUtil.TRANSITION+"End":"transitionend",function(){if("onselectstart"in e)o.extend(o.DomUtil,{disableTextSelection:function(){o.DomEvent.on(t,"selectstart",o.DomEvent.preventDefault)},enableTextSelection:function(){o.DomEvent.off(t,"selectstart",o.DomEvent.preventDefault)}});else{var i=o.DomUtil.testProp(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);o.extend(o.DomUtil,{disableTextSelection:function(){if(i){var t=e.documentElement.style;this._userSelect=t[i],t[i]="none"}},enableTextSelection:function(){i&&(e.documentElement.style[i]=this._userSelect,delete this._userSelect)}})}o.extend(o.DomUtil,{disableImageDrag:function(){o.DomEvent.on(t,"dragstart",o.DomEvent.preventDefault)},enableImageDrag:function(){o.DomEvent.off(t,"dragstart",o.DomEvent.preventDefault)}})}(),o.LatLng=function(t,e,n){if(t=parseFloat(t),e=parseFloat(e),isNaN(t)||isNaN(e))throw new Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=t,this.lng=e,n!==i&&(this.alt=parseFloat(n))},o.extend(o.LatLng,{DEG_TO_RAD:Math.PI/180,RAD_TO_DEG:180/Math.PI,MAX_MARGIN:1e-9}),o.LatLng.prototype={equals:function(t){if(!t)return!1;t=o.latLng(t);var e=Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng));return e<=o.LatLng.MAX_MARGIN},toString:function(t){return"LatLng("+o.Util.formatNum(this.lat,t)+", "+o.Util.formatNum(this.lng,t)+")"},distanceTo:function(t){t=o.latLng(t);var e=6378137,i=o.LatLng.DEG_TO_RAD,n=(t.lat-this.lat)*i,s=(t.lng-this.lng)*i,a=this.lat*i,r=t.lat*i,h=Math.sin(n/2),l=Math.sin(s/2),u=h*h+l*l*Math.cos(a)*Math.cos(r);return 2*e*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))},wrap:function(t,e){var i=this.lng;return t=t||-180,e=e||180,i=(i+e)%(e-t)+(t>i||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n)),a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return s=e&&e.maxZoom?Math.min(e.maxZoom,s):s,this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x<r.x||n.y<r.y:r.contains(n);while(u&&a>=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire("viewreset",{hard:!i}),a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-1/0,o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_; +return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395",projection:o.Projection.Mercator,transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-1/0);for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||i<this.options.minZoom)){var s=o.bounds(e.min.divideBy(n)._floor(),e.max.divideBy(n)._floor());this._addTilesFromCenterOut(s),(this.options.unloadInvisibleTiles||this.options.reuseTiles)&&this._removeOtherTiles(s)}}},_addTilesFromCenterOut:function(t){var i,n,s,a=[],r=t.getCenter();for(i=t.min.y;i<=t.max.y;i++)for(n=t.min.x;n<=t.max.x;n++)s=new o.Point(n,i),this._tileShouldBeLoaded(s)&&a.push(s);var h=a.length;if(0!==h){a.sort(function(t,e){return t.distanceTo(r)-e.distanceTo(r)});var l=e.createDocumentFragment();for(this._tilesToLoad||this.fire("loading"),this._tilesToLoad+=h,n=0;h>n;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=e.tileSize,o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(i<t.min.x||i>t.max.x||n<t.min.y||n>t.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;i.width=i.height=e.detectRetina&&o.Browser.retina?2*n:n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i=o.point("shadow"===e?n.shadowAnchor||n.iconAnchor:n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){if(this._icon){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;i<e.length;i++)o.DomEvent.on(t,e[i],this._fireMouseEvent,this);o.Handler.MarkerDrag&&(this.dragging=new o.Handler.MarkerDrag(this),this.options.draggable&&this.dragging.enable())}},_onMouseClick:function(t){var e=this.dragging&&this.dragging.moved();(this.hasEventListeners(t.type)||e)&&o.DomEvent.stopPropagation(t),e||(this.dragging&&this.dragging._enabled||!this._map.dragging||!this._map.dragging.moved())&&this.fire(t.type,{originalEvent:t,latlng:this._latlng})},_onKeyPress:function(t){13===t.keyCode&&this.fire("click",{originalEvent:t,latlng:this._latlng})},_fireMouseEvent:function(t){this.fire(t.type,{originalEvent:t,latlng:this._latlng}),"contextmenu"===t.type&&this.hasEventListeners(t.type)&&o.DomEvent.preventDefault(t),"mousedown"!==t.type?o.DomEvent.stopPropagation(t):o.DomEvent.preventDefault(t)},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){o.DomUtil.setOpacity(this._icon,this.options.opacity),this._shadow&&o.DomUtil.setOpacity(this._shadow,this.options.opacity)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)}}),o.marker=function(t,e){return new o.Marker(t,e)},o.DivIcon=o.Icon.extend({options:{iconSize:[12,12],className:"leaflet-div-icon",html:!1},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:e.createElement("div"),n=this.options;return i.innerHTML=n.html!==!1?n.html:"",n.bgPos&&(i.style.backgroundPosition=-n.bgPos.x+"px "+-n.bgPos.y+"px"),this._setIconStyles(i,"icon"),i},createShadow:function(){return null}}),o.divIcon=function(t){return new o.DivIcon(t)},o.Map.mergeOptions({closePopupOnClick:!0}),o.Popup=o.Class.extend({includes:o.Mixin.Events,options:{minWidth:50,maxWidth:300,autoPan:!0,closeButton:!0,offset:[0,7],autoPanPadding:[5,5],keepInView:!1,className:"",zoomAnimation:!0},initialize:function(t,e){o.setOptions(this,t),this._source=e,this._animated=o.Browser.any3d&&this.options.zoomAnimation,this._isOpen=!1},onAdd:function(t){this._map=t,this._container||this._initLayout();var e=t.options.fadeAnimation;e&&o.DomUtil.setOpacity(this._container,0),t._panes.popupPane.appendChild(this._container),t.on(this._getEvents(),this),this.update(),e&&o.DomUtil.setOpacity(this._container,1),this.fire("open"),t.fire("popupopen",{popup:this}),this._source&&this._source.fire("popupopen",{popup:this})},addTo:function(t){return t.addLayer(this),this},openOn:function(t){return t.openPopup(this),this},onRemove:function(t){t._panes.popupPane.removeChild(this._container),o.Util.falseFn(this._container.offsetWidth),t.off(this._getEvents(),this),t.options.fadeAnimation&&o.DomUtil.setOpacity(this._container,0),this._map=null,this.fire("close"),t.fire("popupclose",{popup:this}),this._source&&this._source.fire("popupclose",{popup:this})},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},_getEvents:function(){var t={viewreset:this._updatePosition};return this._animated&&(t.zoomanim=this._zoomAnimation),("closeOnClick"in this.options?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t,e="leaflet-popup",i=e+" "+this.options.className+" leaflet-zoom-"+(this._animated?"animated":"hide"),n=this._container=o.DomUtil.create("div",i);this.options.closeButton&&(t=this._closeButton=o.DomUtil.create("a",e+"-close-button",n),t.href="#close",t.innerHTML="×",o.DomEvent.disableClickPropagation(t),o.DomEvent.on(t,"click",this._onCloseButtonClick,this));var s=this._wrapper=o.DomUtil.create("div",e+"-content-wrapper",n);o.DomEvent.disableClickPropagation(s),this._contentNode=o.DomUtil.create("div",e+"-content",s),o.DomEvent.disableScrollPropagation(this._contentNode),o.DomEvent.on(s,"contextmenu",o.DomEvent.stopPropagation),this._tipContainer=o.DomUtil.create("div",e+"-tip-container",n),this._tip=o.DomUtil.create("div",e+"-tip",this._tipContainer)},_updateContent:function(){if(this._content){if("string"==typeof this._content)this._contentNode.innerHTML=this._content;else{for(;this._contentNode.hasChildNodes();)this._contentNode.removeChild(this._contentNode.firstChild);this._contentNode.appendChild(this._content)}this.fire("contentupdate")}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var n=t.offsetHeight,s=this.options.maxHeight,a="leaflet-popup-scrolled";s&&n>s?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e<t.length;e++)o.DomEvent.on(this._container,t[e],this._fireMouseEvent,this)}},_onMouseClick:function(t){this._map.dragging&&this._map.dragging.moved()||this._fireMouseEvent(t)},_fireMouseEvent:function(t){if(this.hasEventListeners(t.type)){var e=this._map,i=e.mouseEventToContainerPoint(t),n=e.containerPointToLayerPoint(i),s=e.layerPointToLatLng(n);this.fire(t.type,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t}),"contextmenu"===t.type&&o.DomEvent.preventDefault(t),"mousemove"!==t.type&&o.DomEvent.stopPropagation(t)}}}),o.Map.include({_initPathRoot:function(){this._pathRoot||(this._pathRoot=o.Path.prototype._createElement("svg"),this._panes.overlayPane.appendChild(this._pathRoot),this.options.zoomAnimation&&o.Browser.any3d?(o.DomUtil.addClass(this._pathRoot,"leaflet-zoom-animated"),this.on({zoomanim:this._animatePathZoom,zoomend:this._endPathZoom})):o.DomUtil.addClass(this._pathRoot,"leaflet-zoom-hide"),this.on("moveend",this._updateSvgViewport),this._updateSvgViewport()) +},_animatePathZoom:function(t){var e=this.getZoomScale(t.zoom),i=this._getCenterOffset(t.center)._multiplyBy(-e)._add(this._pathViewport.min);this._pathRoot.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(i)+" scale("+e+") ",this._pathZooming=!0},_endPathZoom:function(){this._pathZooming=!1},_updateSvgViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max,n=i.x-e.x,s=i.y-e.y,a=this._pathRoot,r=this._panes.overlayPane;o.Browser.mobileWebkit&&r.removeChild(a),o.DomUtil.setPosition(a,e),a.setAttribute("width",n),a.setAttribute("height",s),a.setAttribute("viewBox",[e.x,e.y,n,s].join(" ")),o.Browser.mobileWebkit&&r.appendChild(a)}}}),o.Path.include({bindPopup:function(t,e){return t instanceof o.Popup?this._popup=t:((!this._popup||e)&&(this._popup=new o.Popup(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on("click",this._openPopup,this).on("remove",this.closePopup,this),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this._openPopup).off("remove",this.closePopup),this._popupHandlersAdded=!1),this},openPopup:function(t){return this._popup&&(t=t||this._latlng||this._latlngs[Math.floor(this._latlngs.length/2)],this._openPopup({latlng:t})),this},closePopup:function(){return this._popup&&this._popup._close(),this},_openPopup:function(t){this._popup.setLatLng(t.latlng),this._map.openPopup(this._popup)}}),o.Browser.vml=!o.Browser.svg&&function(){try{var t=e.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,t.dashStyle=i.dashArray?o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):"",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this.fire("remove"),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill()),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click",this._onClick,this))},_onClick:function(t){this._containsPoint(t.layerPoint)&&this.fire("click",t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.x<e.min.x?i|=1:t.x>e.max.x&&(i|=2),t.y<e.min.y?i|=4:t.y>e.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return void(this._parts=[n]);this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+e<t.min.x||i.y+e<t.min.y}}),o.circle=function(t,e,i){return new o.Circle(t,e,i)},o.CircleMarker=o.Circle.extend({options:{radius:10,weight:2},initialize:function(t,e){o.Circle.prototype.initialize.call(this,t,null,e),this._radius=this.options.radius},projectLatlngs:function(){this._point=this._map.latLngToLayerPoint(this._latlng)},_updateStyle:function(){o.Circle.prototype._updateStyle.call(this),this.setRadius(this.options.radius)},setLatLng:function(t){return o.Circle.prototype.setLatLng.call(this,t),this._popup&&this._popup._isOpen&&this._popup.setLatLng(t),this},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius}}),o.circleMarker=function(t,e){return new o.CircleMarker(t,e)},o.Polyline.include(o.Path.CANVAS?{_containsPoint:function(t,e){var i,n,s,a,r,h,l,u=this.options.weight/2;for(o.Browser.touch&&(u+=10),i=0,a=this._parts.length;a>i;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,e){if(!e)return new o.Point(t.clientX,t.clientY);var i=e.getBoundingClientRect();return new o.Point(t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop)},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&500>n||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!(t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(o.DomEvent.stopPropagation(t),o.Draggable._disabled||(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),this._moving)))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return void(this._moved=!0);var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.Browser.touch&&Math.abs(s.x)+Math.abs(s.y)<3||(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,o.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget)))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(){o.DomUtil.removeClass(e.body,"leaflet-dragging"),this._lastTarget&&(o.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[t],this._onMove).off(e,o.Draggable.END[t],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)<Math.abs(s+i)?o:s;this._draggable._newPos.x=a},_onDragEnd:function(t){var e=this._map,i=e.options,n=+new Date-this._lastTime,s=!i.inertia||n>i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],s[a]="function"==typeof n?n.bind(h):n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n);case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){o.DomEvent.preventDefault(t);for(var e=!1,i=0;i<r.length;i++)if(r[i].pointerId===t.pointerId){e=!0; +break}e||r.push(t),t.touches=r.slice(),t.changedTouches=[t],n(t)};if(t[a+"touchstart"+s]=h,t.addEventListener(this.POINTER_DOWN,h,!1),!this._pointerDocumentListener){var l=function(t){for(var e=0;e<r.length;e++)if(r[e].pointerId===t.pointerId){r.splice(e,1);break}};e.documentElement.addEventListener(this.POINTER_UP,l,!1),e.documentElement.addEventListener(this.POINTER_CANCEL,l,!1),this._pointerDocumentListener=!0}return this},addPointerListenerMove:function(t,e,i,n){function o(t){if(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons){for(var e=0;e<a.length;e++)if(a[e].pointerId===t.pointerId){a[e]=t;break}t.touches=a.slice(),t.changedTouches=[t],i(t)}}var s="_leaflet_",a=this._pointers;return t[s+"touchmove"+n]=o,t.addEventListener(this.POINTER_MOVE,o,!1),this},addPointerListenerEnd:function(t,e,i,n){var o="_leaflet_",s=this._pointers,a=function(t){for(var e=0;e<s.length;e++)if(s[e].pointerId===t.pointerId){s.splice(e,1);break}t.touches=s.slice(),t.changedTouches=[t],i(t)};return t[o+"touchend"+n]=a,t.addEventListener(this.POINTER_UP,a,!1),t.addEventListener(this.POINTER_CANCEL,a,!1),this},removePointerListener:function(t,e,i){var n="_leaflet_",o=t[n+e+i];switch(e){case"touchstart":t.removeEventListener(this.POINTER_DOWN,o,!1);break;case"touchmove":t.removeEventListener(this.POINTER_MOVE,o,!1);break;case"touchend":t.removeEventListener(this.POINTER_UP,o,!1),t.removeEventListener(this.POINTER_CANCEL,o,!1)}return this}}),o.Map.mergeOptions({touchZoom:o.Browser.touch&&!o.Browser.android23,bounceAtZoomLimits:!0}),o.Map.TouchZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var n=i.mouseEventToLayerPoint(t.touches[0]),s=i.mouseEventToLayerPoint(t.touches[1]),a=i._getCenterLayerPoint();this._startCenter=n.add(s)._divideBy(2),this._startDist=n.distanceTo(s),this._moved=!1,this._zooming=!0,this._centerOffset=a.subtract(this._startCenter),i._panAnim&&i._panAnim.stop(),o.DomEvent.on(e,"touchmove",this._onTouchMove,this).on(e,"touchend",this._onTouchEnd,this),o.DomEvent.preventDefault(t)}},_onTouchMove:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&this._zooming){var i=e.mouseEventToLayerPoint(t.touches[0]),n=e.mouseEventToLayerPoint(t.touches[1]);this._scale=i.distanceTo(n)/this._startDist,this._delta=i._add(n)._divideBy(2)._subtract(this._startCenter),1!==this._scale&&(e.options.bounceAtZoomLimits||!(e.getZoom()===e.getMinZoom()&&this._scale<1||e.getZoom()===e.getMaxZoom()&&this._scale>1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"';i&&(n+=' checked="checked"'),n+="/>";var o=e.createElement("div");return o.innerHTML=n,o.firstChild},_addItem:function(t){var i,n=e.createElement("label"),s=this._map.hasLayer(t.layer);t.overlay?(i=e.createElement("input"),i.type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=s):i=this._createRadioElement("leaflet-base-layers",s),i.layerId=o.stamp(t.layer),o.DomEvent.on(i,"click",this._onInputClick,this);var a=e.createElement("span");a.innerHTML=" "+t.name,n.appendChild(i),n.appendChild(a);var r=t.overlay?this._overlaysList:this._baseLayersList;return r.appendChild(n),n},_onInputClick:function(){var t,e,i,n=this._form.getElementsByTagName("input"),o=n.length;for(this._handlingClick=!0,t=0;o>t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a})},this)},_onZoomTransitionEnd:function(){this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth),this._animating=!1},_clearBgBuffer:function(){var t=this._map;!t||t._animatingZoom||t.touchZoom._zooming||(this._bgBuffer.innerHTML="",this._bgBuffer.style[o.DomUtil.TRANSFORM]="")},_prepareBgBuffer:function(){var t=this._tileContainer,e=this._bgBuffer,i=this._getLoadedTilesPercentage(e),n=this._getLoadedTilesPercentage(t);return e&&i>.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document);
\ No newline at end of file diff --git a/searx/static/themes/oscar/js/searx.js b/searx/static/themes/oscar/js/searx.js new file mode 100644 index 000000000..927aeb422 --- /dev/null +++ b/searx/static/themes/oscar/js/searx.js @@ -0,0 +1,356 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +requirejs.config({ + baseUrl: './static/themes/oscar/js', + paths: { + app: '../app' + } +}); +;/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2019 by Alexandre Flament + */ +window.searx = (function(d) { + 'use strict'; + + // add data- properties + var script = d.currentScript || (function() { + var scripts = d.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + return { + autocompleter: script.getAttribute('data-autocompleter') === 'true', + method: script.getAttribute('data-method') + }; +})(document); +;/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +if(searx.autocompleter) { + searx.searchResults = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + remote: './autocompleter?q=%QUERY' + }); + searx.searchResults.initialize(); +} + +$(document).ready(function(){ + if(searx.autocompleter) { + $('#q').typeahead(null, { + name: 'search-results', + displayKey: function(result) { + return result; + }, + source: searx.searchResults.ttAdapter() + }); + } +}); +;/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +$(document).ready(function(){ + /** + * focus element if class="autofocus" and id="q" + */ + $('#q.autofocus').focus(); + + /** + * select full content on click if class="select-all-on-click" + */ + $(".select-all-on-click").click(function () { + $(this).select(); + }); + + /** + * change text during btn-collapse click if possible + */ + $('.btn-collapse').click(function() { + var btnTextCollapsed = $(this).data('btn-text-collapsed'); + var btnTextNotCollapsed = $(this).data('btn-text-not-collapsed'); + + if(btnTextCollapsed !== '' && btnTextNotCollapsed !== '') { + if($(this).hasClass('collapsed')) { + new_html = $(this).html().replace(btnTextCollapsed, btnTextNotCollapsed); + } else { + new_html = $(this).html().replace(btnTextNotCollapsed, btnTextCollapsed); + } + $(this).html(new_html); + } + }); + + /** + * change text during btn-toggle click if possible + */ + $('.btn-toggle .btn').click(function() { + var btnClass = 'btn-' + $(this).data('btn-class'); + var btnLabelDefault = $(this).data('btn-label-default'); + var btnLabelToggled = $(this).data('btn-label-toggled'); + if(btnLabelToggled !== '') { + if($(this).hasClass('btn-default')) { + new_html = $(this).html().replace(btnLabelDefault, btnLabelToggled); + } else { + new_html = $(this).html().replace(btnLabelToggled, btnLabelDefault); + } + $(this).html(new_html); + } + $(this).toggleClass(btnClass); + $(this).toggleClass('btn-default'); + }); + + /** + * change text during btn-toggle click if possible + */ + $('.media-loader').click(function() { + var target = $(this).data('target'); + var iframe_load = $(target + ' > iframe'); + var srctest = iframe_load.attr('src'); + if(srctest === undefined || srctest === false){ + iframe_load.attr('src', iframe_load.data('src')); + } + }); + + /** + * Select or deselect every categories on double clic + */ + $(".btn-sm").dblclick(function() { + var btnClass = 'btn-' + $(this).data('btn-class'); // primary + if($(this).hasClass('btn-default')) { + $(".btn-sm > input").attr('checked', 'checked'); + $(".btn-sm > input").prop("checked", true); + $(".btn-sm").addClass(btnClass); + $(".btn-sm").addClass('active'); + $(".btn-sm").removeClass('btn-default'); + } else { + $(".btn-sm > input").attr('checked', ''); + $(".btn-sm > input").removeAttr('checked'); + $(".btn-sm > input").checked = false; + $(".btn-sm").removeClass(btnClass); + $(".btn-sm").removeClass('active'); + $(".btn-sm").addClass('btn-default'); + } + }); +}); +;/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +$(document).ready(function(){ + $(".searx_overpass_request").on( "click", function( event ) { + var overpass_url = "https://overpass-api.de/api/interpreter?data="; + var query_start = overpass_url + "[out:json][timeout:25];("; + var query_end = ");out meta;"; + + var osm_id = $(this).data('osm-id'); + var osm_type = $(this).data('osm-type'); + var result_table = $(this).data('result-table'); + var result_table_loadicon = "#" + $(this).data('result-table-loadicon'); + + // tags which can be ignored + var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ]; + + if(osm_id && osm_type && result_table) { + result_table = "#" + result_table; + var query = null; + switch(osm_type) { + case 'node': + query = query_start + "node(" + osm_id + ");" + query_end; + break; + case 'way': + query = query_start + "way(" + osm_id + ");" + query_end; + break; + case 'relation': + query = query_start + "relation(" + osm_id + ");" + query_end; + break; + default: + break; + } + if(query) { + //alert(query); + var ajaxRequest = $.ajax( query ) + .done(function( html) { + if(html && html.elements && html.elements[0]) { + var element = html.elements[0]; + var newHtml = $(result_table).html(); + for (var row in element.tags) { + if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) { + newHtml += "<tr><td>" + row + "</td><td>"; + switch(row) { + case "phone": + case "fax": + newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>"; + break; + case "email": + newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "website": + case "url": + newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikidata": + newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikipedia": + if(element.tags[row].indexOf(":") != -1) { + newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>"; + break; + } + /* jshint ignore:start */ + default: + /* jshint ignore:end */ + newHtml += element.tags[row]; + break; + } + newHtml += "</td></tr>"; + } + } + $(result_table).html(newHtml); + $(result_table).removeClass('hidden'); + $(result_table_loadicon).addClass('hidden'); + } + }) + .fail(function() { + $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">could not load data!</p>"); + }); + } + } + + // this event occour only once per element + $( this ).off( event ); + }); + + $(".searx_init_map").on( "click", function( event ) { + var leaflet_target = $(this).data('leaflet-target'); + var map_lon = $(this).data('map-lon'); + var map_lat = $(this).data('map-lat'); + var map_zoom = $(this).data('map-zoom'); + var map_boundingbox = $(this).data('map-boundingbox'); + var map_geojson = $(this).data('map-geojson'); + + require(['leaflet-0.7.3.min'], function(leaflet) { + if(map_boundingbox) { + southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); + northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]); + map_bounds = L.latLngBounds(southWest, northEast); + } + + // TODO hack + // change default imagePath + L.Icon.Default.imagePath = "./static/themes/oscar/img/map"; + + // init map + var map = L.map(leaflet_target); + + // create the tile layer with correct attribution + var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); + + var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; + var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); + + // init map view + if(map_bounds) { + // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021 + setTimeout(function () { + map.fitBounds(map_bounds, { + maxZoom:17 + }); + }, 0); + } else if (map_lon && map_lat) { + if(map_zoom) + map.setView(new L.LatLng(map_lat, map_lon),map_zoom); + else + map.setView(new L.LatLng(map_lat, map_lon),8); + } + + map.addLayer(osmMapnik); + + var baseLayers = { + "OSM Mapnik": osmMapnik/*, + "OSM Wikimedia": osmWikimedia*/ + }; + + L.control.layers(baseLayers).addTo(map); + + + if(map_geojson) + L.geoJson(map_geojson).addTo(map); + /*else if(map_bounds) + L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/ + }); + + // this event occour only once per element + $( this ).off( event ); + }); +}); diff --git a/searx/static/themes/oscar/js/searx.min.js b/searx/static/themes/oscar/js/searx.min.js new file mode 100644 index 000000000..354d9f2fe --- /dev/null +++ b/searx/static/themes/oscar/js/searx.min.js @@ -0,0 +1,2 @@ +/*! oscar/searx.min.js | 06-08-2019 | https://github.com/asciimoo/searx */ +requirejs.config({baseUrl:"./static/themes/oscar/js",paths:{app:"../app"}}),window.searx=function(a){"use strict";var b=a.currentScript||function(){var b=a.getElementsByTagName("script");return b[b.length-1]}();return{autocompleter:"true"===b.getAttribute("data-autocompleter"),method:b.getAttribute("data-method")}}(document),searx.autocompleter&&(searx.searchResults=new Bloodhound({datumTokenizer:Bloodhound.tokenizers.obj.whitespace("value"),queryTokenizer:Bloodhound.tokenizers.whitespace,remote:"./autocompleter?q=%QUERY"}),searx.searchResults.initialize()),$(document).ready(function(){searx.autocompleter&&$("#q").typeahead(null,{name:"search-results",displayKey:function(a){return a},source:searx.searchResults.ttAdapter()})}),$(document).ready(function(){$("#q.autofocus").focus(),$(".select-all-on-click").click(function(){$(this).select()}),$(".btn-collapse").click(function(){var a=$(this).data("btn-text-collapsed"),b=$(this).data("btn-text-not-collapsed");""!==a&&""!==b&&($(this).hasClass("collapsed")?new_html=$(this).html().replace(a,b):new_html=$(this).html().replace(b,a),$(this).html(new_html))}),$(".btn-toggle .btn").click(function(){var a="btn-"+$(this).data("btn-class"),b=$(this).data("btn-label-default"),c=$(this).data("btn-label-toggled");""!==c&&($(this).hasClass("btn-default")?new_html=$(this).html().replace(b,c):new_html=$(this).html().replace(c,b),$(this).html(new_html)),$(this).toggleClass(a),$(this).toggleClass("btn-default")}),$(".media-loader").click(function(){var a=$(this).data("target"),b=$(a+" > iframe"),c=b.attr("src");void 0!==c&&!1!==c||b.attr("src",b.data("src"))}),$(".btn-sm").dblclick(function(){var a="btn-"+$(this).data("btn-class");$(this).hasClass("btn-default")?($(".btn-sm > input").attr("checked","checked"),$(".btn-sm > input").prop("checked",!0),$(".btn-sm").addClass(a),$(".btn-sm").addClass("active"),$(".btn-sm").removeClass("btn-default")):($(".btn-sm > input").attr("checked",""),$(".btn-sm > input").removeAttr("checked"),$(".btn-sm > input").checked=!1,$(".btn-sm").removeClass(a),$(".btn-sm").removeClass("active"),$(".btn-sm").addClass("btn-default"))})}),$(document).ready(function(){$(".searx_overpass_request").on("click",function(a){var b="https://overpass-api.de/api/interpreter?data=",c=b+"[out:json][timeout:25];(",d=");out meta;",e=$(this).data("osm-id"),f=$(this).data("osm-type"),g=$(this).data("result-table"),h="#"+$(this).data("result-table-loadicon"),i=["addr:city","addr:country","addr:housenumber","addr:postcode","addr:street"];if(e&&f&&g){g="#"+g;var j=null;switch(f){case"node":j=c+"node("+e+");"+d;break;case"way":j=c+"way("+e+");"+d;break;case"relation":j=c+"relation("+e+");"+d}if(j){$.ajax(j).done(function(a){if(a&&a.elements&&a.elements[0]){var b=a.elements[0],c=$(g).html();for(var d in b.tags)if(null===b.tags.name||-1==i.indexOf(d)){switch(c+="<tr><td>"+d+"</td><td>",d){case"phone":case"fax":c+='<a href="tel:'+b.tags[d].replace(/ /g,"")+'">'+b.tags[d]+"</a>";break;case"email":c+='<a href="mailto:'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"website":case"url":c+='<a href="'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikidata":c+='<a href="https://www.wikidata.org/wiki/'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikipedia":if(-1!=b.tags[d].indexOf(":")){c+='<a href="https://'+b.tags[d].substring(0,b.tags[d].indexOf(":"))+".wikipedia.org/wiki/"+b.tags[d].substring(b.tags[d].indexOf(":")+1)+'">'+b.tags[d]+"</a>";break}default:c+=b.tags[d]}c+="</td></tr>"}$(g).html(c),$(g).removeClass("hidden"),$(h).addClass("hidden")}}).fail(function(){$(h).html($(h).html()+'<p class="text-muted">could not load data!</p>')})}}$(this).off(a)}),$(".searx_init_map").on("click",function(a){var b=$(this).data("leaflet-target"),c=$(this).data("map-lon"),d=$(this).data("map-lat"),e=$(this).data("map-zoom"),f=$(this).data("map-boundingbox"),g=$(this).data("map-geojson");require(["leaflet-0.7.3.min"],function(a){f&&(southWest=L.latLng(f[0],f[2]),northEast=L.latLng(f[1],f[3]),map_bounds=L.latLngBounds(southWest,northEast)),L.Icon.Default.imagePath="./static/themes/oscar/img/map";var h=L.map(b),i="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",j='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',k=new L.TileLayer(i,{minZoom:1,maxZoom:19,attribution:j}),l="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",m='Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';new L.TileLayer(l,{minZoom:1,maxZoom:19,attribution:m});map_bounds?setTimeout(function(){h.fitBounds(map_bounds,{maxZoom:17})},0):c&&d&&(e?h.setView(new L.LatLng(d,c),e):h.setView(new L.LatLng(d,c),8)),h.addLayer(k);var n={"OSM Mapnik":k};L.control.layers(n).addTo(h),g&&L.geoJson(g).addTo(h)}),$(this).off(a)})});
\ No newline at end of file diff --git a/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js b/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js new file mode 100644 index 000000000..e7c2abdac --- /dev/null +++ b/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js @@ -0,0 +1,23 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +requirejs.config({ + baseUrl: './static/themes/oscar/js', + paths: { + app: '../app' + } +}); diff --git a/searx/static/themes/oscar/js/searx_src/01_init.js b/searx/static/themes/oscar/js/searx_src/01_init.js new file mode 100644 index 000000000..690365c7f --- /dev/null +++ b/searx/static/themes/oscar/js/searx_src/01_init.js @@ -0,0 +1,30 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2019 by Alexandre Flament + */ +window.searx = (function(d) { + 'use strict'; + + // add data- properties + var script = d.currentScript || (function() { + var scripts = d.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + return { + autocompleter: script.getAttribute('data-autocompleter') === 'true', + method: script.getAttribute('data-method') + }; +})(document); diff --git a/searx/static/themes/oscar/js/searx_src/autocompleter.js b/searx/static/themes/oscar/js/searx_src/autocompleter.js new file mode 100644 index 000000000..0907f8e34 --- /dev/null +++ b/searx/static/themes/oscar/js/searx_src/autocompleter.js @@ -0,0 +1,37 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +if(searx.autocompleter) { + searx.searchResults = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + remote: './autocompleter?q=%QUERY' + }); + searx.searchResults.initialize(); +} + +$(document).ready(function(){ + if(searx.autocompleter) { + $('#q').typeahead(null, { + name: 'search-results', + displayKey: function(result) { + return result; + }, + source: searx.searchResults.ttAdapter() + }); + } +}); diff --git a/searx/static/themes/oscar/js/searx_src/element_modifiers.js b/searx/static/themes/oscar/js/searx_src/element_modifiers.js new file mode 100644 index 000000000..4264d4c0d --- /dev/null +++ b/searx/static/themes/oscar/js/searx_src/element_modifiers.js @@ -0,0 +1,99 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +$(document).ready(function(){ + /** + * focus element if class="autofocus" and id="q" + */ + $('#q.autofocus').focus(); + + /** + * select full content on click if class="select-all-on-click" + */ + $(".select-all-on-click").click(function () { + $(this).select(); + }); + + /** + * change text during btn-collapse click if possible + */ + $('.btn-collapse').click(function() { + var btnTextCollapsed = $(this).data('btn-text-collapsed'); + var btnTextNotCollapsed = $(this).data('btn-text-not-collapsed'); + + if(btnTextCollapsed !== '' && btnTextNotCollapsed !== '') { + if($(this).hasClass('collapsed')) { + new_html = $(this).html().replace(btnTextCollapsed, btnTextNotCollapsed); + } else { + new_html = $(this).html().replace(btnTextNotCollapsed, btnTextCollapsed); + } + $(this).html(new_html); + } + }); + + /** + * change text during btn-toggle click if possible + */ + $('.btn-toggle .btn').click(function() { + var btnClass = 'btn-' + $(this).data('btn-class'); + var btnLabelDefault = $(this).data('btn-label-default'); + var btnLabelToggled = $(this).data('btn-label-toggled'); + if(btnLabelToggled !== '') { + if($(this).hasClass('btn-default')) { + new_html = $(this).html().replace(btnLabelDefault, btnLabelToggled); + } else { + new_html = $(this).html().replace(btnLabelToggled, btnLabelDefault); + } + $(this).html(new_html); + } + $(this).toggleClass(btnClass); + $(this).toggleClass('btn-default'); + }); + + /** + * change text during btn-toggle click if possible + */ + $('.media-loader').click(function() { + var target = $(this).data('target'); + var iframe_load = $(target + ' > iframe'); + var srctest = iframe_load.attr('src'); + if(srctest === undefined || srctest === false){ + iframe_load.attr('src', iframe_load.data('src')); + } + }); + + /** + * Select or deselect every categories on double clic + */ + $(".btn-sm").dblclick(function() { + var btnClass = 'btn-' + $(this).data('btn-class'); // primary + if($(this).hasClass('btn-default')) { + $(".btn-sm > input").attr('checked', 'checked'); + $(".btn-sm > input").prop("checked", true); + $(".btn-sm").addClass(btnClass); + $(".btn-sm").addClass('active'); + $(".btn-sm").removeClass('btn-default'); + } else { + $(".btn-sm > input").attr('checked', ''); + $(".btn-sm > input").removeAttr('checked'); + $(".btn-sm > input").checked = false; + $(".btn-sm").removeClass(btnClass); + $(".btn-sm").removeClass('active'); + $(".btn-sm").addClass('btn-default'); + } + }); +}); diff --git a/searx/static/themes/oscar/js/searx_src/leaflet_map.js b/searx/static/themes/oscar/js/searx_src/leaflet_map.js new file mode 100644 index 000000000..3c8c616b1 --- /dev/null +++ b/searx/static/themes/oscar/js/searx_src/leaflet_map.js @@ -0,0 +1,167 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> + */ + +$(document).ready(function(){ + $(".searx_overpass_request").on( "click", function( event ) { + var overpass_url = "https://overpass-api.de/api/interpreter?data="; + var query_start = overpass_url + "[out:json][timeout:25];("; + var query_end = ");out meta;"; + + var osm_id = $(this).data('osm-id'); + var osm_type = $(this).data('osm-type'); + var result_table = $(this).data('result-table'); + var result_table_loadicon = "#" + $(this).data('result-table-loadicon'); + + // tags which can be ignored + var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ]; + + if(osm_id && osm_type && result_table) { + result_table = "#" + result_table; + var query = null; + switch(osm_type) { + case 'node': + query = query_start + "node(" + osm_id + ");" + query_end; + break; + case 'way': + query = query_start + "way(" + osm_id + ");" + query_end; + break; + case 'relation': + query = query_start + "relation(" + osm_id + ");" + query_end; + break; + default: + break; + } + if(query) { + //alert(query); + var ajaxRequest = $.ajax( query ) + .done(function( html) { + if(html && html.elements && html.elements[0]) { + var element = html.elements[0]; + var newHtml = $(result_table).html(); + for (var row in element.tags) { + if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) { + newHtml += "<tr><td>" + row + "</td><td>"; + switch(row) { + case "phone": + case "fax": + newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>"; + break; + case "email": + newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "website": + case "url": + newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikidata": + newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikipedia": + if(element.tags[row].indexOf(":") != -1) { + newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>"; + break; + } + /* jshint ignore:start */ + default: + /* jshint ignore:end */ + newHtml += element.tags[row]; + break; + } + newHtml += "</td></tr>"; + } + } + $(result_table).html(newHtml); + $(result_table).removeClass('hidden'); + $(result_table_loadicon).addClass('hidden'); + } + }) + .fail(function() { + $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">could not load data!</p>"); + }); + } + } + + // this event occour only once per element + $( this ).off( event ); + }); + + $(".searx_init_map").on( "click", function( event ) { + var leaflet_target = $(this).data('leaflet-target'); + var map_lon = $(this).data('map-lon'); + var map_lat = $(this).data('map-lat'); + var map_zoom = $(this).data('map-zoom'); + var map_boundingbox = $(this).data('map-boundingbox'); + var map_geojson = $(this).data('map-geojson'); + + require(['leaflet-0.7.3.min'], function(leaflet) { + if(map_boundingbox) { + southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); + northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]); + map_bounds = L.latLngBounds(southWest, northEast); + } + + // TODO hack + // change default imagePath + L.Icon.Default.imagePath = "./static/themes/oscar/img/map"; + + // init map + var map = L.map(leaflet_target); + + // create the tile layer with correct attribution + var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); + + var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; + var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); + + // init map view + if(map_bounds) { + // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021 + setTimeout(function () { + map.fitBounds(map_bounds, { + maxZoom:17 + }); + }, 0); + } else if (map_lon && map_lat) { + if(map_zoom) + map.setView(new L.LatLng(map_lat, map_lon),map_zoom); + else + map.setView(new L.LatLng(map_lat, map_lon),8); + } + + map.addLayer(osmMapnik); + + var baseLayers = { + "OSM Mapnik": osmMapnik/*, + "OSM Wikimedia": osmWikimedia*/ + }; + + L.control.layers(baseLayers).addTo(map); + + + if(map_geojson) + L.geoJson(map_geojson).addTo(map); + /*else if(map_bounds) + L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/ + }); + + // this event occour only once per element + $( this ).off( event ); + }); +}); diff --git a/searx/static/themes/oscar/less/logicodev-dark/oscar.less b/searx/static/themes/oscar/less/logicodev-dark/oscar.less new file mode 100644 index 000000000..e788b8cba --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev-dark/oscar.less @@ -0,0 +1,245 @@ +@import "../logicodev/variables.less"; +@import "../logicodev/footer.less"; +@import "../logicodev/checkbox.less"; +@import "../logicodev/onoff.less"; +@import "../logicodev/results.less"; +@import "../logicodev/infobox.less"; +@import "../logicodev/search.less"; +@import "../logicodev/advanced.less"; +@import "../logicodev/cursor.less"; +@import "../logicodev/code.less"; +@import "../logicodev/preferences.less"; + +/*Global*/ +body { + background:#1d1f21 none !important; + color:#D5D8D7 !important; +} + +a { + color:#41a2ce !important; + text-decoration: none !important; +} + +a:hover { + color:#5F89AC !important; +} + +input, button, textarea, select { + border: 1px solid #282a2e !important; + background-color: #444 !important; + color: #BBB !important; +} + +input:focus, button:focus, textarea:focus, select:focus { + border: 1px solid #C5C8C6 !important; + box-shadow: initial !important; +} + +div#advanced-search-container div#categories label{ + background:none; + border: 1px solid #282a2e; +} + +ul.nav li a { + border: 0 !important; + border-bottom: 1px solid #4d3f43 !important; +} + +#categories *, .modal-wrapper * { + background:#1d1f21 none !important; + color:#D5D8D7 !important; +} + +#categories *, { + border: 1px solid #3d3f43 !important; +} + +#categories *:checked + label { + border-bottom: 4px solid #3d9f94 !important; +} + +.result-content, .result-source, .result-format { + color:#B5B8B7 !important; +} + +.external-link { + color:#35B887 !important; +} + +.table-striped tr td, .table-striped tr th { + border-color: #4d3f43 !important; +} + +.highlight { + background: #333333 !important; +} + +/*nav*/ +.navbar{ + background:#1d1f21 none; + border: none; +} + +.navbar .active, .menu { + background: none !important; +} + +.label-default { + background: none; + color: #BBB; +} + +.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus, .nav-tabs.nav-justified > .active > a{ + background-color: #282a2e !important; + +} + +/*Search Page*/ +.result-default:hover, .result-code:hover, .result-torrent:hover, .result-videos:hover, .result-map:hover { + background-color: #222426; +} + +/*buttons*/ +.btn { + color: #BBB; + background-color: #444 ; + border: 1px solid #282a2e; +} + +.btn:hover { + color:#444 !important; + background-color: #BBB !important; +} + +.btn-primary.active { + color: #C5C8C6; + background-color: #5F89AC; + border-color: #5F89AC; +} + +/*Right Pannels*/ +.panel { + border: 1px solid #111; + background: none; +} + +.panel-heading { + color: #C5C8C6 !important; + background: #282a2e !important; + border-bottom: none; +} + +.panel-body { + color: #C5C8C6 !important; + background: #1d1f21 !important; + border-color: #111 !important; +} + +p.btn.btn-default{ + background: none; +} + +.table-striped>tbody>tr:nth-child(odd)>td, .table-striped>tbody>tr:nth-child(odd)>th, .table-striped>thead>tr:nth-child(odd)>th { + background:#2d2f32 none !important; + color:#D5D8D7 !important; +} + +.label-success { + background:#1d6f42 none !important; +} + +.label-danger { + background:#ad1f12 none !important; +} + +.searx-navbar { + background: #333334; + height: 2.3rem; + font-size: 1.3rem; + line-height: 1.3rem; + padding: 0.5rem; + font-weight: bold; + margin-bottom: 0.8rem; + + a, a:hover { + margin-right: 2.0rem; + color: white; + text-decoration: none; + } + + .instance a { + color: @light-green; + margin-left: 2.0rem; + } +} + +#main-logo { + margin-top: 20vh; + margin-bottom: 25px; + + & > img { + max-width: 350px; + width: 80%; + } +} + +.onoffswitch-inner:before, .onoffswitch-inner:after { + background:#1d1f21 none !important; +} + +.onoffswitch-switch, .onoffswitch-label { + border: 2px solid #3d3f43 !important; +} + +.nav>li>a:hover, .nav>li>a:focus { + background-color: #3d3f43 !important; +} + +/*Images search*/ +.img-thumbnail, .thumbnail { + padding: 0px; + line-height: 1.42857143; + background: none; + border: none; +} + +.modal-content { + background:#1d1f21 none !important; +} + +/*Preferences*/ + +.table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { + background: RGBA(240, 0, 0, 0.56) !important; + color: #C5C8C6 !important; +} + +.table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { + background: RGBA(237, 59, 59, 0.61) !important; + color: #C5C8C6 !important; +} + +.table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th { + background: rgb(102, 105, 110) !important; +} + +.btn-success { + color: #C5C8C6; + background: #449d44; +} + +.btn-danger { + color: #C5C8C6; + background: #d9534f; + +} + +.well { + background: #444; + border-color: #282a2e; +} + +.highlight { + background-color: transparent !important; +} diff --git a/searx/static/themes/oscar/less/logicodev/advanced.less b/searx/static/themes/oscar/less/logicodev/advanced.less new file mode 100644 index 000000000..4c3827b30 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/advanced.less @@ -0,0 +1,49 @@ +#advanced-search-container { + display: none; + text-align: left; + margin-bottom: 1rem; + clear: both; + + label, .input-group-addon { + font-size: 1.2rem; + font-weight:normal; + background-color: white; + border: @mild-gray 1px solid; + border-right: none; + color: @dark-gray; + padding-bottom: 0.4rem; + padding-right: 0.7rem; + padding-left: 0.7rem; + } + + label:last-child, .input-group-addon:last-child { + border-right: @mild-gray 1px solid; + } + + input[type="radio"] { + display: none; + } + + input[type="radio"]:checked + label{ + color: @black; + font-weight: bold; + border-bottom: @light-green 5px solid; + } +} + +#check-advanced { + display: none; +} + +#check-advanced:checked ~ #advanced-search-container { + display: block; +} + +.advanced { + padding: 0; + margin-top: 0.3rem; + text-align: right; + label, select { + cursor: pointer; + } +} diff --git a/searx/static/themes/oscar/less/logicodev/checkbox.less b/searx/static/themes/oscar/less/logicodev/checkbox.less new file mode 100644 index 000000000..6428b36ed --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/checkbox.less @@ -0,0 +1,9 @@ +// Hide element if checkbox is checked +input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { + display:none; +} + +// Hide element if checkbox is not checked +input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { + display:none; +} diff --git a/searx/static/themes/oscar/less/logicodev/code.less b/searx/static/themes/oscar/less/logicodev/code.less new file mode 100644 index 000000000..491b30e5a --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/code.less @@ -0,0 +1,101 @@ +pre, code{ + font-family: 'Ubuntu Mono', 'Courier New', 'Lucida Console', monospace !important; +} + +.lineno{ + margin-right: 5px; +} + +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #556366; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid @orange } /* Error */ +.highlight .k { color: #BE74D5; font-weight: bold } /* Keyword */ +.highlight .o { color: #D19A66 } /* Operator */ +.highlight .cm { color: #556366; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .c1 { color: #556366; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #556366; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #BE74D5; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #BE74D5; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #BE74D5; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #BE74D5 } /* Keyword.Pseudo */ +.highlight .kr { color: #BE74D5; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #D46C72 } /* Keyword.Type */ +.highlight .m { color: #D19A66 } /* Literal.Number */ +.highlight .s { color: #86C372 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #BE74D5 } /* Name.Builtin */ +.highlight .nc { color: #61AFEF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #D19A66 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #61AFEF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #61AFEF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #BE74D5; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #DFC06F } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #D7DAE0 } /* Text.Whitespace */ +.highlight .mf { color: #D19A66 } /* Literal.Number.Float */ +.highlight .mh { color: #D19A66 } /* Literal.Number.Hex */ +.highlight .mi { color: #D19A66 } /* Literal.Number.Integer */ +.highlight .mo { color: #D19A66 } /* Literal.Number.Oct */ +.highlight .sb { color: #86C372 } /* Literal.String.Backtick */ +.highlight .sc { color: #86C372 } /* Literal.String.Char */ +.highlight .sd { color: #86C372; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #86C372 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #86C372 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #BE74D5 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #86C372 } /* Literal.String.Single */ +.highlight .ss { color: #DFC06F } /* Literal.String.Symbol */ +.highlight .bp { color: #BE74D5 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #DFC06F } /* Name.Variable.Class */ +.highlight .vg { color: #DFC06F } /* Name.Variable.Global */ +.highlight .vi { color: #DFC06F } /* Name.Variable.Instance */ +.highlight .il { color: #D19A66 } /* Literal.Number.Integer.Long */ + +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + color: #556366; + + &::selection { + background: transparent; /* WebKit/Blink Browsers */ + } + &::-moz-selection { + background: transparent; /* Gecko Browsers */ + } +} + +.highlight pre { + background-color: #282C34; + color: #D7DAE0; + border: none; + margin-bottom: 25px; + font-size: 15px; + padding: 20px 10px; +} + +.highlight { + font-weight: 700; +} diff --git a/searx/static/themes/oscar/less/logicodev/cursor.less b/searx/static/themes/oscar/less/logicodev/cursor.less new file mode 100644 index 000000000..cbc1ea6fc --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/cursor.less @@ -0,0 +1,8 @@ +// display cursor +.cursor-text { + cursor: text !important; +} + +.cursor-pointer { + cursor: pointer !important; +} diff --git a/searx/static/themes/oscar/less/logicodev/footer.less b/searx/static/themes/oscar/less/logicodev/footer.less new file mode 100644 index 000000000..d23a0cc97 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/footer.less @@ -0,0 +1,30 @@ +// Sticky footer styles +*{ + border-radius: 0 !important; +} +html { + position: relative; + min-height: 100%; + color: @black; +} + +body { + /* Margin bottom by footer height */ + font-family: 'Roboto', Helvetica, Arial, sans-serif; + margin-bottom: 80px; + background-color: white; + + a{ + color: @blue; + } +} + +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; + text-align: center; + color: #999; +} diff --git a/searx/static/themes/oscar/less/logicodev/infobox.less b/searx/static/themes/oscar/less/logicodev/infobox.less new file mode 100644 index 000000000..954f4507a --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/infobox.less @@ -0,0 +1,37 @@ +.infobox { + + .panel-heading{ + background-color: @dim-gray; + + .panel-title{ + font-weight: 700; + } + } + + + p{ + font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important; + font-style: italic; + } + + .btn{ + background-color: @green; + border: none; + + a{ + color: white; + margin: 5px; + } + } + + .infobox_part { + margin-bottom: 20px; + word-wrap: break-word; + table-layout: fixed; + + } + + .infobox_part:last-child { + margin-bottom: 0; + } +} diff --git a/searx/static/themes/oscar/less/logicodev/navbar.less b/searx/static/themes/oscar/less/logicodev/navbar.less new file mode 100644 index 000000000..6e4f9ee10 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/navbar.less @@ -0,0 +1,30 @@ +.searx-navbar { + background: @black; + height: 2.3rem; + font-size: 1.3rem; + line-height: 1.3rem; + padding: 0.5rem; + font-weight: bold; + margin-bottom: 0.8rem; + + a, a:hover { + margin-right: 2.0rem; + color: white; + text-decoration: none; + } + + .instance a { + color: @light-green; + margin-left: 2.0rem; + } +} + +#main-logo { + margin-top: 20vh; + margin-bottom: 25px; + + & > img { + max-width: 350px; + width: 80%; + } +} diff --git a/searx/static/themes/oscar/less/logicodev/onoff.less b/searx/static/themes/oscar/less/logicodev/onoff.less new file mode 100644 index 000000000..f47189216 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/onoff.less @@ -0,0 +1,57 @@ +.onoff-checkbox { + width:15%; +} +.onoffswitch { + position: relative; + width: 110px; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select: none; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; +} +.onoffswitch-inner { + display: block; + transition: margin 0.3s ease-in 0s; +} + +.onoffswitch-inner:before, .onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 30px; + padding: 0; + line-height: 40px; + font-size: 20px; + box-sizing: border-box; + content: ""; + background-color: #EEEEEE; +} + +.onoffswitch-switch { + display: block; + width: 37px; + background-color: @light-green; + position: absolute; + top: 0; + bottom: 0; + right: 0px; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-right: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 71px; + background-color: #A1A1A1; +} diff --git a/searx/static/themes/oscar/less/logicodev/oscar.less b/searx/static/themes/oscar/less/logicodev/oscar.less new file mode 100644 index 000000000..da80d1e94 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/oscar.less @@ -0,0 +1,23 @@ +@import "variables.less"; + +@import "navbar.less"; + +@import "footer.less"; + +@import "checkbox.less"; + +@import "onoff.less"; + +@import "results.less"; + +@import "infobox.less"; + +@import "search.less"; + +@import "advanced.less"; + +@import "cursor.less"; + +@import "code.less"; + +@import "preferences.less"; diff --git a/searx/static/themes/oscar/less/logicodev/preferences.less b/searx/static/themes/oscar/less/logicodev/preferences.less new file mode 100644 index 000000000..9672d5011 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/preferences.less @@ -0,0 +1,3 @@ +.table > tbody > tr > td, .table > tbody > tr > th { + vertical-align: middle !important; +} diff --git a/searx/static/themes/oscar/less/logicodev/results.less b/searx/static/themes/oscar/less/logicodev/results.less new file mode 100644 index 000000000..5e7e1336a --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/results.less @@ -0,0 +1,187 @@ +.result_header { + margin-top: 0px; + margin-bottom: 2px; + font-size: 16px; + + .favicon { + margin-bottom:-3px; + } + + a { + color: @black; + text-decoration: none; + + &:hover{ + color: @blue; + } + + &:visited{ + color: @violet; + } + + .highlight { + background-color: @dim-gray; + // Chrome hack: bold is different size than normal + // https://stackoverflow.com/questions/20713988/weird-text-alignment-issue-in-css-when-bolded-lucida-sans + } + } +} + +.result-content, .result-format, .result-source { + margin-top: 2px; + margin-bottom: 0; + word-wrap: break-word; + color: @dark-gray; + font-size: 13px; + + + .highlight { + font-weight:bold; + } + +} + +.result-source { + font-size: 10px; + float: left; +} + +.result-format { + font-size: 10px; + float: right; +} + +.external-link { + color: @dark-green; + font-size: 12px; + margin-bottom: 15px; + + a { + margin-right: 3px; + } +} + +// default formating of results +.result-default, .result-code, .result-torrent, .result-videos, .result-map { + clear: both; + padding: 2px 4px; + &:hover{ + background-color: @dim-gray; + } +} + + +// image formating of results +.result-images { + float: left !important; + width: 24%; + margin: .5%; + a { + display: block; + width: 100%; + background-size: cover; + } +} + +.img-thumbnail { + margin: 5px; + max-height: 128px; + min-height: 128px; +} + +// video formating of results +.result-videos { + clear: both; + + hr{ + margin: 5px 0 15px 0; + } + + .collapse{ + width: 100%; + } + + .in{ + margin-bottom: 8px; + } +} + +// torrent formating of results +.result-torrent { + clear: both; + + b{ + margin-right: 5px; + margin-left: 5px; + } + + .seeders{ + color: @green; + } + + .leechers{ + color: @red; + } +} + +// map formating of results +.result-map { + clear: both; +} + +// code formating of results +.result-code { + clear: both; + + .code-fork, .code-fork a{ + color: @dark-gray; + } + +} + +// suggestion +.suggestion_item { + margin: 2px 5px; + max-width: 100%; + + .btn { + max-width: 100%; + white-space: normal; + word-wrap: break-word; + text-align: left; + } +} + +// download result +.result_download { + margin-right: 5px; +} + +// page forward, backward +#pagination { + margin-top: 30px; + padding-bottom: 60px; +} + +.label-default { + color: @gray; + background: transparent; +} + +.result .text-muted small { + word-wrap: break-word; +} + +.modal-wrapper { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); +} + +.modal-wrapper { + background-clip: padding-box; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0 none; + position: relative; +} diff --git a/searx/static/themes/oscar/less/logicodev/search.less b/searx/static/themes/oscar/less/logicodev/search.less new file mode 100644 index 000000000..d65e30563 --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/search.less @@ -0,0 +1,80 @@ +.search_categories, #categories { + text-transform: capitalize; + margin-bottom: 0.5rem; + display: flex; + flex-wrap: wrap; + flex-flow: row wrap; + align-content: stretch; + + label, .input-group-addon { + flex-grow: 1; + flex-basis: auto; + font-size: 1.2rem; + font-weight: normal; + background-color: white; + border: @mild-gray 1px solid; + border-right: none; + color: @dark-gray; + padding-bottom: 0.4rem; + padding-top: 0.4rem; + text-align: center; + min-width: 50px; + } + label:last-child, .input-group-addon:last-child { + border-right: @mild-gray 1px solid; + } + + input[type="checkbox"]:checked + label { + color: @black; + font-weight: bold; + border-bottom: @light-green 5px solid; + } +} + +#main-logo{ + margin-top: 10vh; + margin-bottom: 25px; +} + +#main-logo > img { + max-width: 350px; + width: 80%; +} + +#q{ + box-shadow: none; + border-right: none; + border-color: @gray; +} + + #search_form .input-group-btn .btn{ + border-color: @gray; + } + + #search_form .input-group-btn .btn:hover{ + background-color: @green; + color: white; + } + +.custom-select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + font-size: 1.2rem; + font-weight:normal; + background-color: white; + border: @mild-gray 1px solid; + color: @dark-gray; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ +cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn +sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8 +6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0 +ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w +Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb +7jwaAAAAAElFTkSuQmCC) 96% no-repeat; +} + +.search-margin { + margin-bottom: 0.6em; +}
\ No newline at end of file diff --git a/searx/static/themes/oscar/less/logicodev/variables.less b/searx/static/themes/oscar/less/logicodev/variables.less new file mode 100644 index 000000000..5966ee66b --- /dev/null +++ b/searx/static/themes/oscar/less/logicodev/variables.less @@ -0,0 +1,13 @@ +@black: #29314D; +@gray: #A4A4A4; +@dim-gray: #F6F9FA; +@dark-gray: #666; +@middle-gray: #F5F5F5; +@mild-gray: #DDD; +@blue: #0088CC; +@red: #F35E77; +@violet: #684898; +@dark-green: #069025; +@green: #2ecc71; +@light-green: #01D7D4; +@orange: #FFA92F; diff --git a/searx/static/themes/oscar/less/pointhi/advanced.less b/searx/static/themes/oscar/less/pointhi/advanced.less new file mode 100644 index 000000000..23bfdb0d2 --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/advanced.less @@ -0,0 +1,49 @@ +#advanced-search-container { + display: none; + text-align: center; + margin-bottom: 1rem; + clear: both; + + label, .input-group-addon { + font-size: 1.3rem; + font-weight:normal; + background-color: white; + border: #DDD 1px solid; + border-right: none; + color: #333; + padding-bottom: 0.8rem; + padding-left: 1.2rem; + padding-right: 1.2rem; + } + + label:last-child, .input-group-addon:last-child { + border-right: #DDD 1px solid; + } + + input[type="radio"] { + display: none; + } + + input[type="radio"]:checked + label { + color: black; + font-weight: bold; + background-color: #EEE; + } +} + +#check-advanced { + display: none; +} + +#check-advanced:checked ~ #advanced-search-container { + display: block; +} + +.advanced { + padding: 0; + margin-top: 0.3rem; + text-align: right; + label, select { + cursor: pointer; + } +} diff --git a/searx/static/themes/oscar/less/pointhi/checkbox.less b/searx/static/themes/oscar/less/pointhi/checkbox.less new file mode 100644 index 000000000..6428b36ed --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/checkbox.less @@ -0,0 +1,9 @@ +// Hide element if checkbox is checked +input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { + display:none; +} + +// Hide element if checkbox is not checked +input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { + display:none; +} diff --git a/searx/static/themes/oscar/less/pointhi/code.less b/searx/static/themes/oscar/less/pointhi/code.less new file mode 100644 index 000000000..70a2a5d49 --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/code.less @@ -0,0 +1,79 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #408080; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ + +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + + &::selection { + background: transparent; /* WebKit/Blink Browsers */ + } + &::-moz-selection { + background: transparent; /* Gecko Browsers */ + } +} diff --git a/searx/static/themes/oscar/less/pointhi/cursor.less b/searx/static/themes/oscar/less/pointhi/cursor.less new file mode 100644 index 000000000..cbc1ea6fc --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/cursor.less @@ -0,0 +1,8 @@ +// display cursor +.cursor-text { + cursor: text !important; +} + +.cursor-pointer { + cursor: pointer !important; +} diff --git a/searx/static/themes/oscar/less/pointhi/footer.less b/searx/static/themes/oscar/less/pointhi/footer.less new file mode 100644 index 000000000..0b25e735f --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/footer.less @@ -0,0 +1,19 @@ +// Sticky footer styles + +html { + position: relative; + min-height: 100%; +} + +body { + /* Margin bottom by footer height */ + margin-bottom: 80px; +} + +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; +} diff --git a/searx/static/themes/oscar/less/pointhi/infobox.less b/searx/static/themes/oscar/less/pointhi/infobox.less new file mode 100644 index 000000000..df51b002e --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/infobox.less @@ -0,0 +1,11 @@ +.infobox { + .infobox_part { + margin-bottom: 20px; + word-wrap: break-word; + table-layout: fixed; + } + + .infobox_part:last-child { + margin-bottom: 0; + } +} diff --git a/searx/static/themes/oscar/less/pointhi/navbar.less b/searx/static/themes/oscar/less/pointhi/navbar.less new file mode 100644 index 000000000..a057f8240 --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/navbar.less @@ -0,0 +1,20 @@ +.searx-navbar { + background: #eee; + color: #aaa; + height: 2.3rem; + font-size: 1.3rem; + line-height: 1.3rem; + padding: 0.5rem; + font-weight: bold; + margin-bottom: 1.3rem; + + a, a:hover { + margin-right: 2.0rem; + text-decoration: none; + } + + .instance a { + color: #444; + margin-left: 2.0rem; + } +} diff --git a/searx/static/themes/oscar/less/pointhi/onoff.less b/searx/static/themes/oscar/less/pointhi/onoff.less new file mode 100644 index 000000000..72b289a23 --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/onoff.less @@ -0,0 +1,57 @@ +.onoff-checkbox { + width:15%; +} +.onoffswitch { + position: relative; + width: 110px; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select: none; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; +} +.onoffswitch-inner { + display: block; + transition: margin 0.3s ease-in 0s; +} + +.onoffswitch-inner:before, .onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 30px; + padding: 0; + line-height: 40px; + font-size: 20px; + box-sizing: border-box; + content: ""; + background-color: #EEEEEE; +} + +.onoffswitch-switch { + display: block; + width: 37px; + background-color: #00CC00; + position: absolute; + top: 0; + bottom: 0; + right: 0px; + border: 2px solid #FFFFFF !important; + border-radius: 50px !important; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-right: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 71px; + background-color: #A1A1A1; +} diff --git a/searx/static/themes/oscar/less/pointhi/oscar.less b/searx/static/themes/oscar/less/pointhi/oscar.less new file mode 100644 index 000000000..fc1c525ff --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/oscar.less @@ -0,0 +1,21 @@ +@import "footer.less"; + +@import "checkbox.less"; + +@import "onoff.less"; + +@import "results.less"; + +@import "infobox.less"; + +@import "search.less"; + +@import "advanced.less"; + +@import "cursor.less"; + +@import "code.less"; + +@import "navbar.less"; + +@import "preferences.less"; diff --git a/searx/static/themes/oscar/less/pointhi/preferences.less b/searx/static/themes/oscar/less/pointhi/preferences.less new file mode 100644 index 000000000..9672d5011 --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/preferences.less @@ -0,0 +1,3 @@ +.table > tbody > tr > td, .table > tbody > tr > th { + vertical-align: middle !important; +} diff --git a/searx/static/themes/oscar/less/pointhi/results.less b/searx/static/themes/oscar/less/pointhi/results.less new file mode 100644 index 000000000..13266c007 --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/results.less @@ -0,0 +1,109 @@ + +.result_header { + margin-bottom:5px; + margin-top:20px; + + .favicon { + margin-bottom:-3px; + } + + a { + vertical-align: bottom; + + .highlight { + font-weight:bold; + } + } +} + +.result-content { + margin-top: 5px; + word-wrap: break-word; + + .highlight { + font-weight:bold; + } +} + +// default formating of results +.result-default { + clear: both; +} + +// image formating of results +.result-images { + float: left !important; + height: 138px; +} + +.img-thumbnail { + margin: 5px; + max-height: 128px; +} + +// video formating of results +.result-videos { + clear: both; +} + +// torrent formating of results +.result-torrents { + clear: both; +} + +// map formating of results +.result-map { + clear: both; +} + +// code formating of results +.result-code { + clear: both; +} + +// suggestion +.suggestion_item { + margin: 2px 5px; + max-width: 100%; + + .btn { + max-width: 100%; + white-space: normal; + word-wrap: break-word; + text-align: left; + } +} + +// download result +.result_download { + margin-right: 5px; +} + +// page forward, backward +#pagination { + margin-top: 30px; + padding-bottom: 50px; +} + +.label-default { + color: #AAA; + background: #FFF; +} + +.result .text-muted small { + word-wrap: break-word; +} + +.modal-wrapper { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); +} + +.modal-wrapper { + background-clip: padding-box; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0 none; + position: relative; +} diff --git a/searx/static/themes/oscar/less/pointhi/search.less b/searx/static/themes/oscar/less/pointhi/search.less new file mode 100644 index 000000000..5ff73360a --- /dev/null +++ b/searx/static/themes/oscar/less/pointhi/search.less @@ -0,0 +1,33 @@ +.search_categories, #categories { + text-transform: capitalize; + margin-bottom: 1.5rem; + margin-top: 1.5rem; + display: flex; + flex-wrap: wrap; + align-content: stretch; + + label, .input-group-addon { + flex-grow: 1; + flex-basis: auto; + font-size: 1.3rem; + font-weight: normal; + background-color: white; + border: #DDD 1px solid; + border-right: none; + color: #333; + padding-bottom: 0.8rem; + padding-top: 0.8rem; + text-align: center; + min-width: 50px; + } + + label:last-child, .input-group-addon:last-child { + border-right: #DDD 1px solid; + } + + input[type="checkbox"]:checked + label{ + color: black; + font-weight: bold; + background-color: #EEE; + } +} diff --git a/searx/static/themes/oscar/package.json b/searx/static/themes/oscar/package.json new file mode 100644 index 000000000..5b10fcf9f --- /dev/null +++ b/searx/static/themes/oscar/package.json @@ -0,0 +1,15 @@ +{ + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-uglify": "~0.6.0", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-concat": "~0.5.0", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-less": "~0.11.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + } +} diff --git a/searx/static/themes/pix-art/css/style.css b/searx/static/themes/pix-art/css/style.css new file mode 100644 index 000000000..776291335 --- /dev/null +++ b/searx/static/themes/pix-art/css/style.css @@ -0,0 +1 @@ +#container,.search,body,html{padding:0;margin:0}.q,html{font-family:"Courier New",Courier,monospace}div.title h1,input[type=checkbox]{visibility:hidden}#container,#logo,#search_submit{position:absolute}#apis,#pagination,#pagination br{clear:both}#categories_container,#search_wrapper,.percentage{position:relative}html{font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444}canvas{image-rendering:optimizeSpeed;image-rendering:-moz-crisp-edges;image-rendering:-webkit-optimize-contrast;image-rendering:optimize-contrast;image-rendering:pixelated;-ms-interpolation-mode:nearest-neighbor;width:32px;height:32px}#container{width:100%;top:0}#search_wrapper{width:50em;padding:10px}.center #search_wrapper{margin-left:auto;margin-right:auto}.q{background:#FFF;border:1px solid #3498DB;color:#222;font-size:16px;height:28px;margin:0;outline:0;padding:2px 2px 2px 8px;padding-right:0!important;width:100%;z-index:2}#search_submit{top:15px;right:5px;padding:0;border:0;background:url(../img/search-icon-pixel.png) no-repeat;background-size:24px 24px;opacity:.8;width:24px;height:24px;font-size:0}@media screen and (max-width:50em){#search_wrapper{width:90%;clear:both;overflow:hidden}}.row{max-width:800px;margin:20px auto;text-align:justify}#pagination,.center{text-align:center}.row h1{font-size:3em;margin-top:50px}.row p{padding:0 10px;max-width:700px}.row h3,.row ul{margin:4px 8px}.hmarg{margin:0 20px;border:1px solid #3498DB;padding:4px 10px}a:active.hmarg,a:hover.hmarg,a:link.hmarg,a:visited.hmarg{color:#3498DB}.top_margin{margin-top:60px}h1{font-size:5em}div.title{background:url(../img/searx-pixel.png) center no-repeat;width:100%;min-height:80px}input[type=button],input[type=submit]{font-family:"Courier New",Courier,monospace;padding:4px 12px;margin:2px 4px;display:inline-block;background:#3498DB;color:#FFF;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}input[type=button]:disabled{cursor:progress}fieldset{margin:8px;border:1px solid #3498DB}#logo{top:13px;left:10px}#categories{margin:0 10px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container{display:inline-block;position:relative;margin:0 3px;padding:0}.checkbox_container input{display:none}.checkbox_container label,.engine_checkbox label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container input[type=checkbox]:checked+label{background:#3498DB;color:#FFF}.engine_checkbox{padding:4px}label.allow{background:#E74C3C;padding:4px 8px;color:#FFF;display:none}label.deny{background:#2ECC71;padding:4px 8px;color:#444;display:inline}.engine_checkbox input[type=checkbox]:checked+label:nth-child(2)+label{display:none}.engine_checkbox input[type=checkbox]:checked+label.allow{display:inline}#preferences *,.invisible{display:none}a{text-decoration:none;color:#1a11be}a:visited{color:#8E44AD}.engines{color:#888}.small_font{font-size:.8em}.small p{margin:2px 0}#apis,#search_url{margin-top:8px}.right{float:right}.favicon,.left{float:left}.highlight{color:#094089}.content .highlight{color:#000}.percentage{width:300px}.percentage div{background:#444}table{width:100%}td{padding:0 4px}tr:hover{background:#DDD}#results{margin:auto auto 20px;padding:0;width:50em}#search_url input{border:1px solid #888;padding:4px;color:#444;width:14em;display:block;margin:4px;font-size:.8em}#preferences{top:10px;padding:0;border:0;background:url(../img/preference-icon-pixel.png) no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%}.checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0}.preferences_container{display:none;postion:fixed!important;top:100px;right:0}}@media screen and (max-width:75em){div.title h1{font-size:1em}html.touch #categories{width:95%;height:30px;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}html.touch #categories #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #categories #categories_container .checkbox_container{display:inline-block;width:auto}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin:auto}#apis,#logo,#search_url{display:none}}.favicon{margin-right:4px;margin-top:2px}.preferences_back{background:#3498DB;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#FFF}.hidden{opacity:0;overflow:hidden;font-size:.8em;position:absolute;bottom:-20px;width:100%;text-position:center;background:#fff;transition:opacity 1s ease}#categories_container:hover .hidden{transition:opacity 1s ease;opacity:.8}
\ No newline at end of file diff --git a/searx/static/themes/pix-art/img/favicon.png b/searx/static/themes/pix-art/img/favicon.png Binary files differnew file mode 100644 index 000000000..3818d3d60 --- /dev/null +++ b/searx/static/themes/pix-art/img/favicon.png diff --git a/searx/static/themes/pix-art/img/preference-icon-pixel.png b/searx/static/themes/pix-art/img/preference-icon-pixel.png Binary files differnew file mode 100644 index 000000000..424e01e87 --- /dev/null +++ b/searx/static/themes/pix-art/img/preference-icon-pixel.png diff --git a/searx/static/themes/pix-art/img/search-icon-pixel.png b/searx/static/themes/pix-art/img/search-icon-pixel.png Binary files differnew file mode 100644 index 000000000..8235882eb --- /dev/null +++ b/searx/static/themes/pix-art/img/search-icon-pixel.png diff --git a/searx/static/themes/pix-art/img/searx-pixel-small.png b/searx/static/themes/pix-art/img/searx-pixel-small.png Binary files differnew file mode 100644 index 000000000..75b476c7f --- /dev/null +++ b/searx/static/themes/pix-art/img/searx-pixel-small.png diff --git a/searx/static/themes/pix-art/img/searx-pixel.png b/searx/static/themes/pix-art/img/searx-pixel.png Binary files differnew file mode 100644 index 000000000..6aee5812b --- /dev/null +++ b/searx/static/themes/pix-art/img/searx-pixel.png diff --git a/searx/static/themes/pix-art/js/searx.js b/searx/static/themes/pix-art/js/searx.js new file mode 100644 index 000000000..5eb0af99d --- /dev/null +++ b/searx/static/themes/pix-art/js/searx.js @@ -0,0 +1,141 @@ +if(searx.autocompleter) { + window.addEvent('domready', function() { + new Autocompleter.Request.JSON('q', '/autocompleter', { + postVar:'q', + postData:{ + 'format': 'json' + }, + ajaxOptions:{ + timeout: 5 // Correct option? + }, + 'minLength': 4, + 'selectMode': false, + cache: true, + delay: 300 + }); + }); +} + +(function (w, d) { + 'use strict'; + function addListener(el, type, fn) { + if (el.addEventListener) { + el.addEventListener(type, fn, false); + } else { + el.attachEvent('on' + type, fn); + } + } + + function placeCursorAtEnd() { + if (this.setSelectionRange) { + var len = this.value.length * 2; + this.setSelectionRange(len, len); + } + } + + addListener(w, 'load', function () { + var qinput = d.getElementById('q'); + if (qinput !== null && qinput.value === "") { + addListener(qinput, 'focus', placeCursorAtEnd); + qinput.focus(); + } + }); + + if (!!('ontouchstart' in window)) { + document.getElementsByTagName("html")[0].className += " touch"; + } + +})(window, document); + +var xmlHttp + +function GetXmlHttpObject(){ + + var xmlHttp = null; + + try { + // Firefox, Opera 8.0+, Safari + xmlHttp = new XMLHttpRequest(); + } + catch (e) { + // Internet Explorer + try { + xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); + } + catch (e){ + xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); + } + } + return xmlHttp; +} + +var timer; + +// Load more results +function load_more(query,page){ + + xmlHttp = GetXmlHttpObject(); + clearTimeout(timer); + + if(xmlHttp == null){ + alert ("Your browser does not support AJAX!"); + return; + } + + favicons[page] = []; + + xmlHttp.onreadystatechange = function(){ + + var loader = document.getElementById('load_more'); + + // If 4, response OK + if (xmlHttp.readyState == 4){ + + var res = xmlHttp.responseText; + + clearTimeout(timer); + timer = setTimeout(function(){},6000); + + var results = document.getElementById('results_list'); + + var newNode = document.createElement('span'); + newNode.innerHTML = res; + results_list.appendChild(newNode); + + var scripts = newNode.getElementsByTagName('script'); + for (var ix = 0; ix < scripts.length; ix++) { + eval(scripts[ix].text); + } + + load_images(page); + document.getElementById("load_more").onclick = function() { load_more(query, (page+1)); } + loader.removeAttribute("disabled"); + + } else { + loader.disabled = 'disabled'; + } + } + var url = "/"; + var params = "q="+query+"&pageno="+page+"&category_general=1&category_files=1&category_images=1&category_it=1&category_map=1&category_music=1&category_news=1&category_social+media=1&category_videos=1"; + xmlHttp.open("POST",url,true); + xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xmlHttp.setRequestHeader("Content-length", params.length); + xmlHttp.setRequestHeader("Connection", "close"); + xmlHttp.send(params); +} + +// Load the images on the canvas in the page +function load_images(page){ + var arrayLength = favicons[page].length; + for (var i = 1; i < arrayLength+1; i++) { + var img = new Image(); + img.setAttribute("i",i) + img.onload = function () { + var id = 'canvas-'+page+'-'+this.getAttribute("i"); + var can = document.getElementById(id); + var ctx = can.getContext("2d"); + ctx.drawImage(this, 0, 0, 16, 16); + }; + img.src = favicons[page][i]; + } +}
\ No newline at end of file diff --git a/searx/static/themes/pix-art/less/definitions.less b/searx/static/themes/pix-art/less/definitions.less new file mode 100644 index 000000000..0ac0cc90c --- /dev/null +++ b/searx/static/themes/pix-art/less/definitions.less @@ -0,0 +1,119 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ + +/// Basic Colors + +@color-base: #3498DB; +@color-base-dark: #2980B9; +@color-base-light: #ECF0F1; +@color-highlight: #094089; +@color-black: #000000; + +/// General + +@color-font: #444; +@color-font-light: #888; + +@color-red: #C0392B; + +@color-url-font: #1a11be; +@color-url-visited-font: #8E44AD; +@results-width: 50em; + + +/// Start-Screen + +// hmarg +@color-hmarg-border: @color-base; +@color-hmarg-font: @color-base; +@color-hmarg-font-hover: @color-base; + + +/// Search-Input + +@color-search-border: @color-base; +@color-search-background: #FFF; +@color-search-font: #222; + +/// Autocompleter + +@color-autocompleter-choices-background: #FFF; +@color-autocompleter-choices-border: @color-base; +@color-autocompleter-choices-border-left-right: @color-base; +@color-autocompleter-choices-border-bottom: @color-base; + +@color-autocompleter-choices-font: #444; + +/// Answers +@color-answers-border: @color-base-dark; + +// Selected +@color-autocompleter-selected-background: #444; +@color-autocompleter-selected-font: #FFF; +@color-autocompleter-selected-queried-font: #9FCFFF; + +/// Categories + +@color-categories-item-selected: @color-base; +@color-categories-item-selected-font: #FFF; + +@color-categories-item-border-selected: @color-base-dark; +@color-categories-item-border-unselected: #E8E7E6; +@color-categories-item-border-unselected-hover: @color-base; + + +/// Results + +@color-suggestions-button-background: @color-base; +@color-suggestions-button-font: #FFF; + +@color-download-button-background: @color-base; +@color-download-button-font: #FFF; + +@color-result-search-background: @color-base-light; + +@color-result-definition-border: gray; +@color-result-torrent-border: lightgray; +@color-result-top-border: #E8E7E6; + +// Link to result +@color-result-link-font: @color-base-dark; +@color-result-link-visited-font: @color-url-visited-font; + +// Url to result +@color-result-url-font: @color-red; + +// Publish Date +@color-result-publishdate-font: @color-font-light; + +// Images +@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6); +@color-result-image-span-font: #FFF; + +// Search-URL +@color-result-search-url-border: #888; +@color-result-search-url-font: #444; + + +/// Settings + +@color-settings-fieldset: @color-base; +@color-settings-tr-hover: #DDD; + +// Labels +@color-settings-label-allowed-background: #E74C3C; +@color-settings-label-allowed-font: #FFF; + +@color-settings-label-deny-background: #2ECC71; +@color-settings-label-deny-font: @color-font; + +@color-settings-return-background: @color-base; +@color-settings-return-font: #FFF; + +/// Other + +@color-engines-font: @color-font-light; +@color-percentage-div-background: #444; diff --git a/searx/static/themes/pix-art/less/mixins.less b/searx/static/themes/pix-art/less/mixins.less new file mode 100644 index 000000000..dbccce6e3 --- /dev/null +++ b/searx/static/themes/pix-art/less/mixins.less @@ -0,0 +1,27 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +// Mixins + +.text-size-adjust (@property: 100%) { + -webkit-text-size-adjust: @property; + -ms-text-size-adjust: @property; + -moz-text-size-adjust: @property; + text-size-adjust: @property; +} + +.rounded-corners (@radius: 4px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +.user-select () { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} diff --git a/searx/static/themes/pix-art/less/search.less b/searx/static/themes/pix-art/less/search.less new file mode 100644 index 000000000..f5ac33ee1 --- /dev/null +++ b/searx/static/themes/pix-art/less/search.less @@ -0,0 +1,57 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +.search { + padding: 0; + margin: 0; +} + +#search_wrapper { + position: relative; + width: @results-width; + padding: 10px; +} + +.center #search_wrapper { + margin-left: auto; + margin-right: auto; +} + +.q { + background: none repeat scroll 0 0 @color-search-background; + border: 1px solid @color-search-border; + color: @color-search-font; + font-size: 16px; + font-family: "Courier New", Courier, monospace; + height: 28px; + margin: 0; + outline: medium none; + padding: 2px; + padding-left: 8px; + padding-right: 0px !important; + width: 100%; + z-index: 2; +} + +#search_submit { + position: absolute; + top: 15px; + right: 5px; + padding: 0; + border: 0; + background: url('../img/search-icon-pixel.png') no-repeat; + background-size: 24px 24px; + opacity: 0.8; + width: 24px; + height: 24px; + font-size: 0; +} + +@media screen and (max-width: @results-width) { + #search_wrapper { + width: 90%; + clear:both; + overflow: hidden + } +} diff --git a/searx/static/themes/pix-art/less/style.less b/searx/static/themes/pix-art/less/style.less new file mode 100644 index 000000000..a2088e985 --- /dev/null +++ b/searx/static/themes/pix-art/less/style.less @@ -0,0 +1,451 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To convert "style.less" to "style.css" run: $make styles + */ + +@import "definitions.less"; + +@import "mixins.less"; + + +// Main LESS-Code + +html { + font-family: "Courier New", Courier, monospace; + font-size: 0.9em; + .text-size-adjust; + color: @color-font; + padding: 0; + margin: 0; +} + +body, #container { + padding: 0; + margin: 0; +} + +canvas { + image-rendering: optimizeSpeed; + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-optimize-contrast; + image-rendering: optimize-contrast; + image-rendering: pixelated; + -ms-interpolation-mode: nearest-neighbor; + width:32px; + height:32px; +} + +#container { + width: 100%; + position: absolute; + top: 0; +} + +// Search-Field + +@import "search.less"; + +.row { + max-width: 800px; + margin: 20px auto; + text-align: justify; + + h1 { + font-size: 3em; + margin-top: 50px; + } + + p { + padding: 0 10px; + max-width: 700px; + } + + h3,ul { + margin: 4px 8px; + } +} + +.hmarg { + margin: 0 20px; + border: 1px solid @color-hmarg-border; + padding: 4px 10px; +} + +a { + &:link.hmarg { + color: @color-hmarg-font; + } + + &:visited.hmarg { + color: @color-hmarg-font; + } + + &:active.hmarg { + color: @color-hmarg-font-hover; + } + + &:hover.hmarg { + color: @color-hmarg-font-hover; + } +} + +.top_margin { + margin-top: 60px; +} + +.center { + text-align: center; +} + +h1 { + font-size: 5em; +} + +div.title { + background: url('../img/searx-pixel.png') no-repeat; + width: 100%; + min-height: 80px; + background-position: center; + + h1 { + visibility: hidden; + } +} + +input[type="button"], +input[type="submit"] { + font-family: "Courier New", Courier, monospace; + padding: 4px 12px; + margin: 2px 4px; + display: inline-block; + background: @color-download-button-background; + color: @color-download-button-font; + .rounded-corners; + border: 0; + cursor: pointer; +} + +input[type="button"]:disabled { + cursor: progress; +} + +input[type="checkbox"] { + visibility: hidden; +} + +fieldset { + margin: 8px; + border: 1px solid @color-settings-fieldset; +} + +#logo { + position: absolute; + top: 13px; + left: 10px; +} + +#categories { + margin: 0 10px; + .user-select; +} + +.checkbox_container { + display: inline-block; + position: relative; + margin: 0 3px; + padding: 0px; + + input { + display: none; + } +} + +.checkbox_container label, .engine_checkbox label { + cursor: pointer; + padding: 4px 10px; + margin: 0; + display: block; + text-transform: capitalize; + .user-select; +} + +.checkbox_container input[type="checkbox"]:checked + label { + background: @color-categories-item-selected; + color: @color-categories-item-selected-font; +} + +.engine_checkbox { + padding: 4px; +} + +label { + &.allow { + background: @color-settings-label-allowed-background; + padding: 4px 8px; + color: @color-settings-label-allowed-font; + display: none; + } + + &.deny { + background: @color-settings-label-deny-background; + padding: 4px 8px; + color: @color-settings-label-deny-font; + display: inline; + } +} + +.engine_checkbox input[type="checkbox"]:checked + label { + &:nth-child(2) + label { + display: none; + } + + &.allow { + display: inline; + } +} + +a { + text-decoration: none; + color: @color-url-font; + + &:visited { + color: @color-url-visited-font; + } +} + +.engines { + color: @color-engines-font; +} + +.small_font { + font-size: 0.8em; +} + +.small p { + margin: 2px 0; +} + +.right { + float: right; +} + +.invisible { + display: none; +} + +.left { + float: left; +} + +.highlight { + color: @color-highlight; +} + +.content .highlight { + color: @color-black; +} + +.percentage { + position: relative; + width: 300px; + + div { + background: @color-percentage-div-background; + } +} + +table { + width: 100%; +} + +td { + padding: 0 4px; +} + +tr { + &:hover { + background: @color-settings-tr-hover; + } +} + +#results { + margin: auto; + padding: 0; + width: @results-width; + margin-bottom: 20px; +} + +#search_url { + margin-top: 8px; + + input { + border: 1px solid @color-result-search-url-border; + padding: 4px; + color: @color-result-search-url-font; + width: 14em; + display: block; + margin: 4px; + font-size: 0.8em; + } +} + +#preferences { + top: 10px; + padding: 0; + border: 0; + background: url('../img/preference-icon-pixel.png') no-repeat; + background-size: 28px 28px; + opacity: 0.8; + width: 28px; + height: 30px; + display: block; + + * { + display: none; + } +} + +#pagination { + clear: both; + text-align: center; + br { + clear: both; + } +} + +#apis { + margin-top: 8px; + clear: both; +} + +#categories_container { + position: relative; +} + +@media screen and (max-width: @results-width) { + + #results { + margin: auto; + padding: 0; + width: 90%; + } + + .checkbox_container { + display: block; + width: 90%; + //float: left; + + label { + border-bottom: 0; + } + } + + .preferences_container { + display: none; + postion: fixed !important; + top: 100px; + right: 0px; + } + +} + +@media screen and (max-width: 75em) { + + div.title { + + h1 { + font-size: 1em; + } + } + + html.touch #categories { + width: 95%; + height: 30px; + text-align: left; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + + #categories_container { + width: 1000px; + width: -moz-max-content; + width: -webkit-max-content; + width: max-content; + + .checkbox_container { + display: inline-block; + width: auto; + } + } + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + #apis { + display: none; + } + + #search_url { + display: none; + } + + #logo { + display: none; + } +} + +.favicon { + float: left; + margin-right: 4px; + margin-top: 2px; +} + +.preferences_back { + background: none repeat scroll 0 0 @color-settings-return-background; + border: 0 none; + .rounded-corners; + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 4px 6px; + + a { + color: @color-settings-return-font; + } +} + +.hidden { + opacity: 0; + overflow: hidden; + font-size: 0.8em; + position: absolute; + bottom: -20px; + width: 100%; + text-position: center; + background: white; + transition: opacity 1s ease; +} + +#categories_container:hover .hidden { + transition: opacity 1s ease; + opacity: 0.8; +} diff --git a/searx/static/themes/simple/.jshintignore b/searx/static/themes/simple/.jshintignore new file mode 100644 index 000000000..3b2b7148f --- /dev/null +++ b/searx/static/themes/simple/.jshintignore @@ -0,0 +1 @@ +js/searx_src/autocomplete.js diff --git a/searx/static/themes/simple/css/searx-rtl.css b/searx/static/themes/simple/css/searx-rtl.css new file mode 100644 index 000000000..2e904e5eb --- /dev/null +++ b/searx/static/themes/simple/css/searx-rtl.css @@ -0,0 +1,2177 @@ +/*! searx | 06-08-2019 | https://github.com/asciimoo/searx */ +/* +* searx, A privacy-respecting, hackable metasearch engine +* +* To convert "style.less" to "style.css" run: $make styles +*/ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; +} +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; +} +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; +} +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; +} +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; +} +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; +} +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; +} +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; +} +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; +} +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; +} +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ +/* +* searx, A privacy-respecting, hackable metasearch engine +*/ +.highlight .hll { + background-color: #ffffcc; +} +.highlight { + background: #f8f8f8; +} +.highlight .c { + color: #408080; + font-style: italic; +} +/* Comment */ +.highlight .err { + border: 1px solid #FF0000; +} +/* Error */ +.highlight .k { + color: #008000; + font-weight: bold; +} +/* Keyword */ +.highlight .o { + color: #666666; +} +/* Operator */ +.highlight .cm { + color: #408080; + font-style: italic; +} +/* Comment.Multiline */ +.highlight .cp { + color: #BC7A00; +} +/* Comment.Preproc */ +.highlight .c1 { + color: #408080; + font-style: italic; +} +/* Comment.Single */ +.highlight .cs { + color: #408080; + font-style: italic; +} +/* Comment.Special */ +.highlight .gd { + color: #A00000; +} +/* Generic.Deleted */ +.highlight .ge { + font-style: italic; +} +/* Generic.Emph */ +.highlight .gr { + color: #FF0000; +} +/* Generic.Error */ +.highlight .gh { + color: #000080; + font-weight: bold; +} +/* Generic.Heading */ +.highlight .gi { + color: #00A000; +} +/* Generic.Inserted */ +.highlight .go { + color: #888888; +} +/* Generic.Output */ +.highlight .gp { + color: #000080; + font-weight: bold; +} +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold; +} +/* Generic.Strong */ +.highlight .gu { + color: #800080; + font-weight: bold; +} +/* Generic.Subheading */ +.highlight .gt { + color: #0044DD; +} +/* Generic.Traceback */ +.highlight .kc { + color: #008000; + font-weight: bold; +} +/* Keyword.Constant */ +.highlight .kd { + color: #008000; + font-weight: bold; +} +/* Keyword.Declaration */ +.highlight .kn { + color: #008000; + font-weight: bold; +} +/* Keyword.Namespace */ +.highlight .kp { + color: #008000; +} +/* Keyword.Pseudo */ +.highlight .kr { + color: #008000; + font-weight: bold; +} +/* Keyword.Reserved */ +.highlight .kt { + color: #B00040; +} +/* Keyword.Type */ +.highlight .m { + color: #666666; +} +/* Literal.Number */ +.highlight .s { + color: #BA2121; +} +/* Literal.String */ +.highlight .na { + color: #7D9029; +} +/* Name.Attribute */ +.highlight .nb { + color: #008000; +} +/* Name.Builtin */ +.highlight .nc { + color: #0000FF; + font-weight: bold; +} +/* Name.Class */ +.highlight .no { + color: #880000; +} +/* Name.Constant */ +.highlight .nd { + color: #AA22FF; +} +/* Name.Decorator */ +.highlight .ni { + color: #999999; + font-weight: bold; +} +/* Name.Entity */ +.highlight .ne { + color: #D2413A; + font-weight: bold; +} +/* Name.Exception */ +.highlight .nf { + color: #0000FF; +} +/* Name.Function */ +.highlight .nl { + color: #A0A000; +} +/* Name.Label */ +.highlight .nn { + color: #0000FF; + font-weight: bold; +} +/* Name.Namespace */ +.highlight .nt { + color: #008000; + font-weight: bold; +} +/* Name.Tag */ +.highlight .nv { + color: #19177C; +} +/* Name.Variable */ +.highlight .ow { + color: #AA22FF; + font-weight: bold; +} +/* Operator.Word */ +.highlight .w { + color: #bbbbbb; +} +/* Text.Whitespace */ +.highlight .mf { + color: #666666; +} +/* Literal.Number.Float */ +.highlight .mh { + color: #666666; +} +/* Literal.Number.Hex */ +.highlight .mi { + color: #666666; +} +/* Literal.Number.Integer */ +.highlight .mo { + color: #666666; +} +/* Literal.Number.Oct */ +.highlight .sb { + color: #BA2121; +} +/* Literal.String.Backtick */ +.highlight .sc { + color: #BA2121; +} +/* Literal.String.Char */ +.highlight .sd { + color: #BA2121; + font-style: italic; +} +/* Literal.String.Doc */ +.highlight .s2 { + color: #BA2121; +} +/* Literal.String.Double */ +.highlight .se { + color: #BB6622; + font-weight: bold; +} +/* Literal.String.Escape */ +.highlight .sh { + color: #BA2121; +} +/* Literal.String.Heredoc */ +.highlight .si { + color: #BB6688; + font-weight: bold; +} +/* Literal.String.Interpol */ +.highlight .sx { + color: #008000; +} +/* Literal.String.Other */ +.highlight .sr { + color: #BB6688; +} +/* Literal.String.Regex */ +.highlight .s1 { + color: #BA2121; +} +/* Literal.String.Single */ +.highlight .ss { + color: #19177C; +} +/* Literal.String.Symbol */ +.highlight .bp { + color: #008000; +} +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: #19177C; +} +/* Name.Variable.Class */ +.highlight .vg { + color: #19177C; +} +/* Name.Variable.Global */ +.highlight .vi { + color: #19177C; +} +/* Name.Variable.Instance */ +.highlight .il { + color: #666666; +} +/* Literal.Number.Integer.Long */ +.highlight pre { + overflow: auto; +} +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} +.highlight .lineno::selection { + background: transparent; + /* WebKit/Blink Browsers */ +} +.highlight .lineno::-moz-selection { + background: transparent; + /* Gecko Browsers */ +} +html.no-js .hide_if_nojs { + display: none; +} +html.js .show_if_nojs { + display: none; +} +.center { + text-align: center; +} +.right { + float: right ; +} +.left { + float: left; +} +.invisible { + display: none !important; +} +.list-unstyled { + list-style-type: none; +} +.list-unstyled li { + margin-top: 4px; + margin-bottom: 4px; +} +.danger { + background-color: #fae1e1; +} +.badge { + display: inline-block; + color: #fff; + background-color: #777; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + min-width: 10px; + padding: 1px 5px; + border-radius: 5px; +} +kbd { + padding: 2px 4px; + margin: 1px; + font-size: 90%; + color: white; + background: black; +} +table { + width: 100%; +} +table.striped tr { + border-bottom: 1px solid #ececec; +} +th { + padding: 0.4em; +} +td { + padding: 0 4px; +} +tr:hover { + background: #ececec; +} +div.selectable_url { + border: 1px solid #888; + padding: 4px; + color: #444; + width: 100%; + display: block; + margin: 0.1em; + overflow: hidden; + height: 1.2em; + line-height: 1.2em; +} +div.selectable_url pre { + display: block; + font-size: 0.8em; + word-break: break-all; + margin: 0.1em; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: element; + user-select: all; +} +.dialog-error { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + color: #db3434; + background: #fae1e1; + border-color: #db3434; +} +.dialog-error:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family: "ion"; + font-size: 1.5em; +} +.dialog-error .close { + float: right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; +} +.dialog-error ul, +.dialog-error ol, +.dialog-error p { + margin: 1px 0 0 0; +} +.dialog-error table { + width: auto; +} +.dialog-error tr { + vertical-align: text-top; +} +.dialog-error tr:hover { + background: transparent; +} +.dialog-error td { + padding: 0 1em 0 0; +} +.dialog-error h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; +} +.dialog-error:before { + content: "\f110"; +} +.dialog-warning { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + color: #dbba34; + background: #faf5e1; + border-color: #dbba34; +} +.dialog-warning:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family: "ion"; + font-size: 1.5em; +} +.dialog-warning .close { + float: right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; +} +.dialog-warning ul, +.dialog-warning ol, +.dialog-warning p { + margin: 1px 0 0 0; +} +.dialog-warning table { + width: auto; +} +.dialog-warning tr { + vertical-align: text-top; +} +.dialog-warning tr:hover { + background: transparent; +} +.dialog-warning td { + padding: 0 1em 0 0; +} +.dialog-warning h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; +} +.dialog-warning:before { + content: "\f10f"; +} +.dialog-modal { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + background: white; + position: fixed; + top: 50%; + left: 50%; + /* bring your own prefixes */ + transform: translate(-50%, -50%); + z-index: 100000; + margin: 0 50% 0 0; + box-shadow: 0 0 1em; +} +.dialog-modal:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family: "ion"; + font-size: 1.5em; +} +.dialog-modal .close { + float: right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; +} +.dialog-modal ul, +.dialog-modal ol, +.dialog-modal p { + margin: 1px 0 0 0; +} +.dialog-modal table { + width: auto; +} +.dialog-modal tr { + vertical-align: text-top; +} +.dialog-modal tr:hover { + background: transparent; +} +.dialog-modal td { + padding: 0 1em 0 0; +} +.dialog-modal h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; +} +.btn-collapse { + cursor: pointer; +} +.scrollx { + overflow-x: auto; + overflow-y: hidden; + display: block; + padding: 0; + margin: 0; + border: none; +} +/* -- tabs --*/ +.tabs .tabs > label { + font-size: 90%; +} +.tabs { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + width: 100%; + min-width: 100%; +} +.tabs > * { + order: 2; +} +.tabs > input[type=radio] { + display: none; +} +.tabs > label { + order: 1; + padding: 0.7em; + margin: 0 0.7em; + letter-spacing: 0.5px; + text-transform: uppercase; + border: solid white; + border-width: 0px 0px 2px 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tabs > label:hover { + border-bottom: 2px solid #084999; +} +.tabs > section { + min-width: 100%; + padding: 0.7rem 0; + box-sizing: border-box; + border-top: 1px solid black; + display: none; +} +.tabs > label:last-of-type { + border-bottom: 2px solid #084999; + background: #3498DB; + color: #FFF; + font-weight: bold; + letter-spacing: -0.1px; +} +.tabs > section:last-of-type { + display: block; +} +html body .tabs > input:checked ~ section { + display: none; +} +html body .tabs > input:checked ~ label { + position: inherited; + background: inherit; + border-bottom: 2px solid transparent; + font-weight: normal; + color: inherit; +} +html body .tabs > input:checked ~ label:hover { + border-bottom: 2px solid #084999; +} +html body .tabs > input:checked + label { + border-bottom: 2px solid #084999; + background: #3498DB; + color: #FFF; + font-weight: bold; + letter-spacing: -0.1px; +} +html body .tabs > input:checked + label + section { + display: block; +} +/* -- select -- */ +select { + height: 28px; + margin: 0 1em 0 0; + padding: 2px 8px 2px 0 !important; + color: #222; + font-size: 12px; + z-index: 2; +} +select:hover, +select:focus { + cursor: pointer; +} +@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { + select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + border-bottom: 1px solid #d7d7d7; + background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTI4LDE5MiAyNTYsMzIwIDM4NCwxOTIiLz48L2c+PC9zdmc+Cg==) no-repeat; + background-position-x: 105%; + background-size: 2em; + background-origin: content-box; + outline: medium none; + } + select:hover, + select:focus { + border-bottom: 1px solid #3498DB; + } +} +/* -- checkbox-onoff -- */ +@supports (border-radius: 50px) { + .checkbox-onoff { + display: inline-block; + width: 40px; + height: 10px; + background: #dcdcdc; + margin: 8px auto; + position: relative; + border-radius: 50px; + } + .checkbox-onoff label { + display: block; + width: 20px; + height: 20px; + position: absolute; + top: -5px; + cursor: pointer; + border-radius: 50px; + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.3); + transition: all 0.4s ease; + left: 27px; + background-color: #3498DB; + } + .checkbox-onoff input[type=checkbox] { + visibility: hidden; + } + .checkbox-onoff input[type=checkbox]:checked + label { + left: -5px; + background: #dcdcdc; + } +} +/* -- checkbox --*/ +@supports (transform: rotate(-45deg)) { + .checkbox { + width: 20px; + position: relative; + margin: 20px auto; + } + .checkbox label { + width: 20px; + height: 20px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + background: white; + border-radius: 4px; + box-shadow: inset 0px 1px 1px white, 0px 1px 4px rgba(0, 0, 0, 0.5); + } + .checkbox label:after { + content: ''; + width: 9px; + height: 5px; + position: absolute; + top: 4px; + left: 4px; + border: 3px solid #333; + border-top: none; + border-right: none; + background: transparent; + opacity: 0; + transform: rotate(-45deg); + } + .checkbox input[type=checkbox] { + visibility: hidden; + } + .checkbox input[type=checkbox]:checked + label:after { + border-color: #3498DB; + opacity: 1; + } + .checkbox input[disabled] + label { + background-color: transparent !important; + box-shadow: none !important; + cursor: inherit; + } + .checkbox input:not(:checked):not([readonly]):not([disabled]) + label:hover::after { + opacity: 0.5; + } +} +@media screen and (max-width: 50em) { + .tabs > label { + width: 100%; + } +} +/* -- loader -- */ +.loader, +.loader:after { + border-radius: 50%; + width: 2em; + height: 2em; +} +.loader { + margin: 1em auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: 0.5em solid rgba(0, 0, 0, 0.2); + border-right: 0.5em solid rgba(0, 0, 0, 0.2); + border-bottom: 0.5em solid rgba(0, 0, 0, 0.2); + border-left: 0.5em solid rgba(255, 255, 255, 0); + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.2s infinite linear; + animation: load8 1.2s infinite linear; +} +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */ +.autocomplete { + position: absolute; + max-height: 0; + overflow-y: hidden; + text-align: left; +} +.autocomplete:active, +.autocomplete:focus, +.autocomplete:hover { + background-color: white; +} +.autocomplete:empty { + display: none; +} +.autocomplete > ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.autocomplete > ul > li { + cursor: pointer; + padding: 5px 0 5px 10px; +} +.autocomplete > ul > li.active, +.autocomplete > ul > li:active, +.autocomplete > ul > li:focus { + background-color: #3498DB; +} +.autocomplete > ul > li.active a:active, +.autocomplete > ul > li:active a:active, +.autocomplete > ul > li:focus a:active, +.autocomplete > ul > li.active a:focus, +.autocomplete > ul > li:active a:focus, +.autocomplete > ul > li:focus a:focus, +.autocomplete > ul > li.active a:hover, +.autocomplete > ul > li:active a:hover, +.autocomplete > ul > li:focus a:hover { + text-decoration: none; +} +.autocomplete > ul > li.locked { + cursor: inherit; +} +.autocomplete.open { + display: block; + background-color: white; + border: 1px solid #3498DB; + max-height: 500px; + overflow-y: auto; + z-index: 100; +} +.autocomplete.open:empty { + display: none; +} +@media screen and (max-width: 50em) { + .autocomplete { + bottom: 0; + } + .autocomplete > ul > li { + padding: 7px 0 7px 10px; + border-bottom: 1px solid #E8E7E6; + text-align: left; + } +} +@font-face { + font-family: "ion"; + src: url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51"); + src: url("../fonts/ion.eot?#iefix") format("embedded-opentype"), url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + font-weight: normal; + font-style: normal; +} +.ion-icon { + display: inline-block; + vertical-align: middle; + line-height: 1; + font-weight: normal; + font-style: normal; + speak: none; + text-decoration: inherit; + text-transform: none; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.ion-icon:before { + font-family: "ion"; +} +.ion-navicon-round:before { + content: "\f101"; +} +.ion-search:before { + content: "\f102"; +} +.ion-play:before { + content: "\f103"; +} +.ion-link:before { + content: "\f104"; +} +.ion-chevron-up:before { + content: "\f105"; +} +.ion-chevron-left:before { + content: "\f106"; +} +.ion-chevron-right:before { + content: "\f107"; +} +.ion-arrow-down-a:before { + content: "\f108"; +} +.ion-arrow-up-a:before { + content: "\f109"; +} +.ion-arrow-swap:before { + content: "\f10a"; +} +.ion-arrow-dropdown:before { + content: "\f10b"; +} +.ion-globe:before { + content: "\f10c"; +} +.ion-time:before { + content: "\f10d"; +} +.ion-location:before { + content: "\f10e"; +} +.ion-warning:before { + content: "\f10f"; +} +.ion-error:before { + content: "\f110"; +} +.ion-film-outline:before { + content: "\f111"; +} +.ion-music-note:before { + content: "\f112"; +} +.ion-more-vertical:before { + content: "\f113"; +} +.ion-magnet:before { + content: "\f114"; +} +.ion-close:before { + content: "\f115"; +} +.ion-icon-big { + display: inline-block; + vertical-align: middle; + line-height: 1; + font-weight: normal; + font-style: normal; + speak: none; + text-decoration: inherit; + text-transform: none; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 149%; +} +.ion-icon-big:before { + font-family: "ion"; +} +.index { + text-align: center; +} +.index .title { + background: url('../img/searx.png') no-repeat; + width: 100%; + min-height: 80px; + background-position: center; +} +.index h1 { + font-size: 5em; + visibility: hidden; +} +.index #search { + margin: 0 auto; + background: inherit; + border: inherit; +} +.index .search_filters { + display: block; + margin: 1em 0; +} +.index .category label { + padding: 6px 10px; + border-bottom: initial !important; +} +@media screen and (max-width: 75em) { + div.title h1 { + font-size: 1em; + } +} +#main_preferences form { + width: 100%; +} +#main_preferences fieldset { + margin: 8px; + border: none; +} +#main_preferences legend { + margin: 0; + padding: 5px 0 0 0; + display: block; + float: left; + width: 300px; +} +#main_preferences .value { + margin: 0; + padding: 0; + float: left; + width: 15em; +} +#main_preferences .description { + margin: 0; + padding: 5px 0 0 0; + float: left; + width: 50%; + color: #909090; + font-size: 90%; +} +#main_preferences select { + width: 200px; + font-size: inherit !important; +} +#main_preferences table { + border-collapse: collapse; +} +#main_preferences table td { + text-align: center; +} +#main_preferences table.cookies { + width: auto; +} +#main_preferences table.cookies th, +#main_preferences table.cookies td { + text-align: left; + padding: 0.25em; +} +#main_preferences table.cookies th:first-child, +#main_preferences table.cookies td:first-child { + padding-right: 4em; +} +#main_preferences table.cookies > tbody > tr:nth-child(even) > th, +#main_preferences table.cookies > tbody > tr:nth-child(even) > td { + background-color: #ececec; +} +#main_preferences .name, +#main_preferences .shortcut { + text-align: left; +} +#main_preferences .preferences_back { + background: none repeat scroll 0 0 #3498DB; + color: white; + border: 0 none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 0.5em; +} +#main_preferences .preferences_back a { + display: block; + color: #FFF; +} +#main_preferences .preferences_back a::first-letter { + text-transform: uppercase; +} +#main_preferences div.selectable_url pre { + width: 100%; +} +@media screen and (max-width: 75em) { + .preferences_back { + clear: both; + } +} +/* +* searx, A privacy-respecting, hackable metasearch engine +*/ +#search { + padding: 0 2em; + margin: 0; + background: #f7f7f7; + border-bottom: 1px solid #d7d7d7; +} +#search_wrapper { + padding: 10px 0; +} +.search_box { + margin: 0 12px 0 0; + display: inline-flex; + flex-direction: row; + white-space: nowrap; + /* + &:has(q:focus) { + box-shadow: 0px 0px 5px #CCC; +} +*/ +} +#clear_search { + display: block; + border-collapse: separate; + box-sizing: border-box; + width: 1.8em; + margin: 0; + padding: 2px; + height: 2.2em; + background: none repeat scroll 0 0 #FFF; + border-top: 1px solid #3498DB; + border-bottom: 1px solid #3498DB; + border-right: none; + border-left: none; + border-radius: 0px; + outline: none; + color: #222; + font-size: 16px; + z-index: 10000; +} +#clear_search:hover { + color: #3498DB; +} +#clear_search.empty * { + display: none; +} +#q::-ms-clear, +#q::-webkit-search-cancel-button { + display: none; +} +#q, +#send_search { + display: block !important; + border-collapse: separate; + box-sizing: border-box; + margin: 0; + padding: 2px; + height: 2.2em; + background: none repeat scroll 0 0 #FFF; + border: 1px solid #3498DB; + border-radius: 0px; + outline: none; + color: #222; + font-size: 16px; + z-index: 2; +} +#q { + outline: medium none; + padding-left: 8px; + padding-right: 0px !important; + border-right: none; + width: 40em; +} +#send_search { + border-left: none; + width: 2.2em; +} +#send_search:hover { + cursor: pointer; + background-color: #3498DB; + color: #ECF0F1; +} +.no-js #send_search { + width: auto !important; +} +.search_filters { + display: inline-block; + vertical-align: middle; +} +@media screen and (max-width: 75em) { + #categories { + font-size: 90%; + clear: both; + } + #categories .checkbox_container { + margin-top: 2px; + margin: auto; + } + html.touch #main_index #categories_container, + html.touch #main_results #categories_container { + width: 1000px; + width: -moz-max-content; + width: -webkit-max-content; + width: max-content; + } + html.touch #main_index #categories_container .category, + html.touch #main_results #categories_container .category { + display: inline-block; + width: auto; + } + html.touch #main_index #categories, + html.touch #main_results #categories { + width: 100%; + margin: 0; + text-align: left; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + } +} +@media screen and (max-width: 50em) { + #search { + width: 100%; + margin: 0; + padding: 0.1em 0 0 0; + } + #search_wrapper { + width: 100%; + margin: 0 0 0.7em 0; + padding: 0; + } + .search_box { + width: 99%; + margin: 0.1em; + padding: 0 0.1em 0 0; + display: flex; + flex-direction: row; + } + #q { + width: auto !important; + flex: 1; + } + .search_filters { + display: block; + margin: 0.5em; + } + .language, + .time_range { + width: 45%; + } + .category { + display: block; + width: 90%; + } + .category label { + border-bottom: 0; + } +} +#categories { + margin: 0 10px 0 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#categories::-webkit-scrollbar { + width: 0; + height: 0; +} +.category { + display: inline-block; + position: relative; + margin: 0 3px; + padding: 0px; + /*label:hover { + border-bottom: 2px solid @color-categories-item-border-unselected-hover; + }*/ +} +.category input { + display: none; +} +.category label { + cursor: pointer; + padding: 4px 10px; + margin: 0; + display: block; + text-transform: capitalize; + font-size: 0.9em; + border-bottom: 2px solid transparent; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.category input[type="checkbox"]:focus + label { + box-shadow: 0px 0px 8px #3498DB; +} +.category input[type="checkbox"]:checked + label { + background: #3498DB; + color: #FFF; + border-bottom: 2px solid #084999; +} +#categories_container { + position: relative; +} +#categories_container .help { + position: absolute; + width: 100%; + bottom: -20px; + overflow: hidden; + opacity: 0; + transition: opacity 1s ease; + font-size: 0.8em; + text-position: center; + background: white; +} +#categories_container:hover .help { + opacity: 0.8; + transition: opacity 1s ease; +} +html { + font-family: arial, sans-serif; + font-size: 0.9em; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + text-size-adjust: 100%; + color: #444; + padding: 0; + margin: 0; +} +body, +main { + padding: 0; + margin: 0; +} +main { + width: 100%; +} +footer { + bottom: 0; + width: 100%; + height: 50px; +} +#main_preferences, +#main_about, +#main_stats { + margin: 3em; + width: auto; +} +footer { + bottom: 0; + height: 3em; + margin: 1em 0; + padding: 1em 0; + clear: both; + width: 100%; + text-align: center; +} +footer p { + font-size: 0.9em; +} +#main_preferences h1, +#main_stats h1 { + background: url('../img/searx.png') no-repeat; + background-size: auto 75%; + min-height: 40px; + margin: 0 auto; +} +#main_preferences h1 span, +#main_stats h1 span { + visibility: hidden; +} +input[type="submit"], +#results button[type="submit"] { + padding: 0.5rem; + margin: 2px 4px; + display: inline-block; + background: #3498DB; + color: #FFF; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: 0; + cursor: pointer; +} +a { + text-decoration: none; + color: #29314d; +} +a:visited { + color: #684898; +} +a:visited .highlight { + color: #684898; +} +article[data-vim-selected] { + background: #f7f7f7; +} +article[data-vim-selected]::before { + position: absolute; + left: 1em; + padding: 2px; + content: ">"; + font-weight: bold; + color: #3498DB; +} +article.result-images[data-vim-selected] { + background: #3498DB; +} +article.result-images[data-vim-selected]::before { + display: none; + content: ""; +} +.result { + margin: 19px 0 18px 0; + padding: 0; +} +.result h3 { + font-size: 1.1em; + word-wrap: break-word; + margin: 5px 0 1px 0; + padding: 0; + margin-bottom: 0; +} +.result h3 a { + color: #084999; + font-weight: normal; + font-size: 1.1em; +} +.result h3 a:visited { + color: #684898; +} +.result h3 a:focus, +.result h3 a:hover { + text-decoration: underline; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} +.result .cache_link, +.result .proxyfied_link { + font-size: 0.9em !important; +} +.result .content, +.result .stat, +.result .altlink { + font-size: 0.9em; + margin: 0; + padding: 0; + max-width: 54em; + word-wrap: break-word; + line-height: 1.24; +} +.result .content .highlight, +.result .stat .highlight, +.result .altlink .highlight { + color: #000000; + background: inherit; + font-weight: bold; +} +.result .codelines .highlight { + color: inherit; + background: inherit; + font-weight: normal; +} +.result .url { + font-size: 0.9em; + margin: 0 0 3px 0; + padding: 0; + max-width: 54em; + word-wrap: break-word; + color: #25a55b; +} +.result .published_date { + font-size: 0.8em; + color: #888; +} +.result img.thumbnail { + float: left; + padding: 0 5px 10px 0; + width: 20em; + min-width: 20em; + min-height: 8em; +} +.result img.image { + float: left; + padding: 0 5px 10px 0; + width: 100px; + max-height: 100px; + object-fit: scale-down; + object-position: right top; +} +.result .break { + clear: both; +} +.category-social .image { + width: auto !important; + min-width: 48px; + min-height: 48px; + padding: 0 5px 25px 0 !important; +} +.result-videos .content { + overflow: hidden; +} +.engines { + float: right; + color: #888; +} +.engines span { + font-size: smaller; + margin: 0 0.5em 0 0; +} +.small_font { + font-size: 0.8em; +} +.highlight { + color: #094089; + background: inherit; + font-weight: bold; +} +.result-images { + display: inline-block; + margin: 0; + padding: 0; + position: relative; + max-height: 200px; +} +.result-images img { + float: inherit; + margin: 0; + padding: 0; + border: none; + max-height: 200px; + background: #084999; +} +.result-images span a { + display: none; + color: #FFF; +} +.result-images:hover span a { + display: block; + position: absolute; + bottom: 0; + right: 0; + padding: 4px; + margin: 0 0 4px 4px; + background-color: rgba(0, 0, 0, 0.6); + font-size: 0.7em; +} +.torrent_result { + border-left: 10px solid lightgray; + padding-left: 3px; +} +.torrent_result p { + margin: 3px; + font-size: 0.8em; +} +.torrent_result a { + color: #084999; +} +.torrent_result a:hover { + text-decoration: underline; +} +.torrent_result a:visited { + color: #684898; +} +#results { + margin: 2em 2em 20px 2em; + padding: 0; + width: 50em; +} +#suggestions .wrapper { + display: flex; + flex-flow: row wrap; + justify-content: flex-end; +} +#suggestions .wrapper form { + display: inline-block; + flex: 1 1 50%; +} +#suggestions, +#answers, +#corrections { + max-width: 50em; +} +#suggestions input, +#answers input, +#infoboxes input, +#corrections input { + padding: 0; + margin: 3px; + font-size: 0.9em; + display: inline-block; + background: transparent; + color: #444; + cursor: pointer; +} +#suggestions input[type="submit"], +#answers input[type="submit"], +#infoboxes input[type="submit"], +#corrections input[type="submit"], +#suggestions .infobox .url a, +#answers .infobox .url a, +#infoboxes .infobox .url a, +#corrections .infobox .url a { + color: #084999; + text-decoration: none; + font-size: 0.9rem; +} +#suggestions input[type="submit"]:hover, +#answers input[type="submit"]:hover, +#infoboxes input[type="submit"]:hover, +#corrections input[type="submit"]:hover, +#suggestions .infobox .url a:hover, +#answers .infobox .url a:hover, +#infoboxes .infobox .url a:hover, +#corrections .infobox .url a:hover { + text-decoration: underline; +} +#corrections { + display: flex; + flex-flow: row wrap; + margin: 1em 0; +} +#corrections h4, +#corrections input[type="submit"] { + display: inline-block; + margin: 0 0.5em 0 0; +} +#corrections input[type="submit"]::after { + content: ", "; +} +#suggestions .title, +#search_url .title, +#apis .title { + margin: 2em 0 0.5em 0; + color: #444; +} +#answers { + margin: 10px 8px 10px 8px; + border: 1px solid #ddd; + padding: 0.9em; + box-shadow: 0px 0px 5px #CCC; +} +#answers h4 { + display: none; +} +#answers .answer { + display: block; + font-size: 1.2em; + font-weight: bold; +} +#answers form, +#infoboxes form { + min-width: 210px; +} +#sidebar { + position: absolute; + top: 100px; + left: 57em; + margin: 0px 2px 5px 5px; + padding: 0px 2px 2px; + max-width: 25em; + word-wrap: break-word; +} +#sidebar .infobox { + margin: 10px 0 10px; + border: 1px solid #ddd; + padding: 0.9em; + font-size: 0.9em; + box-shadow: 0px 0px 5px #CCC; +} +#sidebar .infobox h2 { + margin: 0 0 .5em 0; +} +#sidebar .infobox img { + max-width: 100%; + max-height: 12em; + display: block; + margin: 0; + padding: 0; +} +#sidebar .infobox dl { + margin: 0.5em 0; +} +#sidebar .infobox dt { + display: inline; + margin: 0.5em 0.25em 0.5em 0; + padding: 0; + font-weight: bold; +} +#sidebar .infobox dd { + display: inline; + margin: 0.5em 0; + padding: 0; +} +#sidebar .infobox input { + font-size: 1em; +} +#sidebar .infobox br { + clear: both; +} +#sidebar .infobox .attributes, +#sidebar .infobox .urls { + clear: both; +} +#search_url { + margin-top: 8px; +} +#search_url div.selectable_url pre { + width: 200em; +} +#linkto_preferences { + position: absolute; + right: 10px; + top: 0.9em; + padding: 0; + border: 0; + display: block; + font-size: 1.2em; + color: #222; +} +#linkto_preferences a:link *, +#linkto_preferences a:hover *, +#linkto_preferences a:visited *, +#linkto_preferences a:active * { + color: #222; +} +#pagination { + clear: both; +} +#pagination br { + clear: both; +} +#apis { + margin-top: 8px; + clear: both; +} +#backToTop { + border: 1px solid #ddd; + margin: 0 0 0 2em; + padding: 0; + font-size: 1em; + box-shadow: 0px 0px 5px #CCC; + background: white; + position: fixed; + bottom: 85px; + left: 50em; + transition: opacity 0.5s; + opacity: 0; +} +#backToTop a { + display: block; + margin: 0; + padding: 0.6em; +} +@media screen and (max-width: 75em) { + #main_preferences, + #main_about, + #main_stats { + margin: 0.5em; + width: auto; + } + #suggestions, + #answers { + margin-top: 1em; + } + #infoboxes { + position: inherit; + max-width: inherit; + } + #infoboxes .infobox { + clear: both; + } + #infoboxes .infobox img { + float: left; + max-width: 10em; + margin: 0.5em 0.5em 0.5em 0; + } + #sidebar { + position: static; + max-width: 50em; + margin: 0 0 2px 0; + padding: 0; + float: none; + border: none; + width: auto; + } + #sidebar input { + border: 0; + } + #apis { + display: none; + } + #search_url { + display: none; + } + .result { + border-bottom: 1px solid #E8E7E6; + margin: 0; + padding-top: 8px; + padding-bottom: 6px; + } + .result h3 { + margin: 0 0 1px 0; + } + .result .thumbnail { + max-width: 98%; + } + .result .url span.url { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + } + .result .url a { + float: right; + padding: 0 0.5em; + } + .result .engines { + float: right; + padding: 0 0 3px 0; + } + .result-images { + border-bottom: none !important; + } + .image_result { + max-width: 98%; + } + .image_result img { + max-width: 98%; + } +} +#main_results div#results.only_template_images { + flex-direction: column; + width: auto; + display: flex; +} +#main_results div#results.only_template_images #sidebar { + position: relative; + top: auto; + order: 2; +} +#main_results div#results.only_template_images #urls { + position: relative; + order: 1; +} +#main_results div#results.only_template_images #backToTop { + right: 0.5em; + left: auto; +} +#main_results div#results.only_template_images #pagination { + position: relative; + order: 3; +} +@media screen and (max-width: 50em) { + article[data-vim-selected]::before { + display: none; + content: ""; + } + #linkto_preferences { + display: none; + postion: fixed !important; + top: 100px; + right: 0px; + } + #sidebar { + margin: 0 5px 2px 5px; + } + #corrections { + margin: 1em 5px 1em 5px; + } + #results { + margin: 0; + padding: 0; + width: initial; + } + #backToTop { + left: 40em; + bottom: 35px; + } + .result { + padding: 8px 10px 6px 10px; + } + .result-images { + margin: 0; + padding: 0; + border: none; + } +} +@media screen and (max-width: 35em) { + .result-videos img.thumbnail { + float: none !important; + } + .result-videos .content { + overflow: inherit; + } +} +#search_submit { + left: 1px; + right: auto; +} diff --git a/searx/static/themes/simple/css/searx-rtl.min.css b/searx/static/themes/simple/css/searx-rtl.min.css new file mode 100644 index 000000000..fc54981b0 --- /dev/null +++ b/searx/static/themes/simple/css/searx-rtl.min.css @@ -0,0 +1 @@ +/*! searx | 06-08-2019 | https://github.com/asciimoo/searx *//*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}[type=checkbox],[type=radio],legend{padding:0;box-sizing:border-box}.badge,.center{text-align:center}.badge,progress,sub,sup{vertical-align:baseline}.autocomplete>ul,.list-unstyled{list-style-type:none}.tabs>section,legend{box-sizing:border-box}#main_preferences h1 span,#main_stats h1 span,.index h1{visibility:hidden}#apis,#pagination,#pagination br,#sidebar .infobox .attributes,#sidebar .infobox .urls,#sidebar .infobox br,.result .break,footer{clear:both}html{line-height:1.15}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}.highlight pre,textarea{overflow:auto}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}.badge,.search_box{white-space:nowrap}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.highlight .c,.highlight .cm,.highlight .ge,.highlight .sd{font-style:italic}.dialog-error:before,.dialog-modal:before,.dialog-warning:before,.ion-icon-big:before,.ion-icon:before{font-family:ion}details{display:block}summary{display:list-item}[hidden],html.js .show_if_nojs,html.no-js .hide_if_nojs,template{display:none}.highlight .hll{background-color:#ffc}.highlight .c{color:#408080}.highlight .err{border:1px solid red}.highlight .k{color:green;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#408080}.highlight .cp{color:#BC7A00}.highlight .c1,.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#A00000}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00A000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04D}.highlight .kc,.highlight .kd,.highlight .kn{color:green;font-weight:700}.highlight .kp{color:green}.highlight .kr{color:green;font-weight:700}.highlight .kt{color:#B00040}.highlight .m{color:#666}.highlight .s{color:#BA2121}.highlight .na{color:#7D9029}.highlight .nb{color:green}.highlight .nc{color:#00F;font-weight:700}.highlight .no{color:#800}.highlight .nd{color:#A2F}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#00F}.highlight .nl{color:#A0A000}.highlight .nn{color:#00F;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#19177C}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#666}.highlight .s2,.highlight .sb,.highlight .sc{color:#BA2121}.highlight .sd{color:#BA2121}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#BA2121}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#B68}.highlight .s1{color:#BA2121}.highlight .ss{color:#19177C}.highlight .bp{color:green}.highlight .vc,.highlight .vg,.highlight .vi{color:#19177C}.highlight .il{color:#666}.badge,kbd{color:#fff}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.btn-collapse,.tabs>label,select:focus,select:hover{cursor:pointer}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}.right{float:right}.left{float:left}.invisible{display:none!important}.list-unstyled li{margin-top:4px;margin-bottom:4px}.danger{background-color:#fae1e1}.badge{display:inline-block;background-color:#777;min-width:10px;padding:1px 5px;border-radius:5px}.dialog-error tr,.dialog-modal tr,.dialog-warning tr{vertical-align:text-top}kbd{padding:2px 4px;margin:1px;font-size:90%;background:#000}table{width:100%}table.striped tr{border-bottom:1px solid #ececec}th{padding:.4em}td{padding:0 4px}tr:hover{background:#ececec}div.selectable_url{border:1px solid #888;padding:4px;color:#444;width:100%;display:block;margin:.1em;overflow:hidden;height:1.2em;line-height:1.2em}div.selectable_url pre{display:block;font-size:.8em;word-break:break-all;margin:.1em;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:element;user-select:all}#categories,.tabs>label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none}.dialog-error{position:relative;width:70%;padding:1em 1em 1em 2.7em;margin:0 8% 1em;border:1px solid #db3434;border-radius:4px;text-align:left;color:#db3434;background:#fae1e1}.dialog-error:before{position:absolute;top:.5em;left:.5em;font-size:1.5em;content:"\f110"}.dialog-error .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-error ol,.dialog-error p,.dialog-error ul{margin:1px 0 0}.dialog-error table{width:auto}.dialog-error tr:hover{background:0 0}.dialog-error td{padding:0 1em 0 0}.dialog-error h4{margin-top:.3em;margin-bottom:.3em}.dialog-warning{position:relative;width:70%;padding:1em 1em 1em 2.7em;margin:0 8% 1em;border:1px solid #dbba34;border-radius:4px;text-align:left;color:#dbba34;background:#faf5e1}.dialog-warning:before{position:absolute;top:.5em;left:.5em;font-size:1.5em;content:"\f10f"}.dialog-warning .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-warning ol,.dialog-warning p,.dialog-warning ul{margin:1px 0 0}.dialog-warning table{width:auto}.dialog-warning tr:hover{background:0 0}.dialog-warning td{padding:0 1em 0 0}.dialog-warning h4{margin-top:.3em;margin-bottom:.3em}.dialog-modal{width:70%;padding:1em 1em 1em 2.7em;border:1px solid #000;border-radius:4px;text-align:left;background:#fff;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100000;margin:0 50% 0 0;box-shadow:0 0 1em}.dialog-modal:before{position:absolute;top:.5em;left:.5em;font-size:1.5em}.dialog-modal .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-modal ol,.dialog-modal p,.dialog-modal ul{margin:1px 0 0}.dialog-modal table{width:auto}.dialog-modal tr:hover{background:0 0}.dialog-modal td{padding:0 1em 0 0}.dialog-modal h4{margin-top:.3em;margin-bottom:.3em}.scrollx{overflow-x:auto;overflow-y:hidden;display:block;padding:0;margin:0;border:none}.tabs .tabs>label{font-size:90%}.tabs{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-wrap:wrap;width:100%;min-width:100%}.tabs>*{order:2}.tabs>input[type=radio]{display:none}.tabs>label{order:1;padding:.7em;margin:0 .7em;letter-spacing:.5px;text-transform:uppercase;border:solid #fff;border-width:0 0 2px;user-select:none}.tabs>label:hover,.tabs>label:last-of-type{border-bottom:2px solid #084999}.tabs>section{min-width:100%;padding:.7rem 0;border-top:1px solid #000;display:none}.tabs>label:last-of-type{background:#3498DB;color:#FFF;font-weight:700;letter-spacing:-.1px}.tabs>section:last-of-type{display:block}html body .tabs>input:checked~section{display:none}html body .tabs>input:checked~label{position:inherited;background:inherit;border-bottom:2px solid transparent;font-weight:400;color:inherit}html body .tabs>input:checked~label:hover{border-bottom:2px solid #084999}html body .tabs>input:checked+label{border-bottom:2px solid #084999;background:#3498DB;color:#FFF;font-weight:700;letter-spacing:-.1px}html body .tabs>input:checked+label+section{display:block}select{height:28px;margin:0 1em 0 0;padding:2px 8px 2px 0!important;color:#222;font-size:12px;z-index:2}@supports ((background-position-x:100%) and ((appearance:none) or (-webkit-appearance:none) or (-moz-appearance:none))){select{appearance:none;-webkit-appearance:none;-moz-appearance:none;border:none;border-bottom:1px solid #d7d7d7;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTI4LDE5MiAyNTYsMzIwIDM4NCwxOTIiLz48L2c+PC9zdmc+Cg==) no-repeat;background-position-x:105%;background-size:2em;background-origin:content-box;outline:0}select:focus,select:hover{border-bottom:1px solid #3498DB}}@supports (border-radius:50px){.checkbox-onoff{display:inline-block;width:40px;height:10px;background:#dcdcdc;margin:8px auto;position:relative;border-radius:50px}.checkbox-onoff label{display:block;width:20px;height:20px;position:absolute;top:-5px;cursor:pointer;border-radius:50px;box-shadow:0 3px 5px 0 rgba(0,0,0,.3);transition:all .4s ease;left:27px;background-color:#3498DB}.checkbox-onoff input[type=checkbox]{visibility:hidden}.checkbox-onoff input[type=checkbox]:checked+label{left:-5px;background:#dcdcdc}}@supports (transform:rotate(-45deg)){.checkbox{width:20px;position:relative;margin:20px auto}.checkbox label{width:20px;height:20px;cursor:pointer;position:absolute;top:0;left:0;background:#fff;border-radius:4px;box-shadow:inset 0 1px 1px #fff,0 1px 4px rgba(0,0,0,.5)}.checkbox label:after{content:'';width:9px;height:5px;position:absolute;top:4px;left:4px;border:3px solid #333;border-top:none;border-right:none;background:0 0;opacity:0;transform:rotate(-45deg)}.checkbox input[type=checkbox]{visibility:hidden}.checkbox input[type=checkbox]:checked+label:after{border-color:#3498DB;opacity:1}.checkbox input[disabled]+label{background-color:transparent!important;box-shadow:none!important;cursor:inherit}.checkbox input:not(:checked):not([readonly]):not([disabled])+label:hover::after{opacity:.5}}@media screen and (max-width:50em){.tabs>label{width:100%}}.loader,.loader:after{border-radius:50%;width:2em;height:2em}.loader{margin:1em auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);border-left:.5em solid rgba(255,255,255,0);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.2s infinite linear;animation:load8 1.2s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */.autocomplete{position:absolute;max-height:0;overflow-y:hidden;text-align:left}#categories_container,.category{position:relative}.autocomplete:active,.autocomplete:focus,.autocomplete:hover{background-color:#fff}#send_search:hover,.autocomplete>ul>li.active,.autocomplete>ul>li:active,.autocomplete>ul>li:focus{background-color:#3498DB}.autocomplete:empty{display:none}.autocomplete>ul{margin:0;padding:0}.autocomplete>ul>li{cursor:pointer;padding:5px 0 5px 10px}.autocomplete>ul>li.active a:active,.autocomplete>ul>li.active a:focus,.autocomplete>ul>li.active a:hover,.autocomplete>ul>li:active a:active,.autocomplete>ul>li:active a:focus,.autocomplete>ul>li:active a:hover,.autocomplete>ul>li:focus a:active,.autocomplete>ul>li:focus a:focus,.autocomplete>ul>li:focus a:hover{text-decoration:none}.autocomplete>ul>li.locked{cursor:inherit}.autocomplete.open{display:block;background-color:#fff;border:1px solid #3498DB;max-height:500px;overflow-y:auto;z-index:100}.autocomplete.open:empty{display:none}.ion-icon,.ion-icon-big{display:inline-block;line-height:1;font-weight:400;font-style:normal;speak:none;text-decoration:inherit;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}@media screen and (max-width:50em){.autocomplete{bottom:0}.autocomplete>ul>li{padding:7px 0 7px 10px;border-bottom:1px solid #E8E7E6;text-align:left}}#main_preferences table td,.index{text-align:center}@font-face{font-family:ion;src:url(../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51);src:url(../fonts/ion.eot?#iefix) format("embedded-opentype"),url(../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51) format("woff2"),url(../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51) format("woff"),url(../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51) format("truetype"),url(../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion) format("svg");font-weight:400;font-style:normal}.ion-navicon-round:before{content:"\f101"}.ion-search:before{content:"\f102"}.ion-play:before{content:"\f103"}.ion-link:before{content:"\f104"}.ion-chevron-up:before{content:"\f105"}.ion-chevron-left:before{content:"\f106"}.ion-chevron-right:before{content:"\f107"}.ion-arrow-down-a:before{content:"\f108"}.ion-arrow-up-a:before{content:"\f109"}.ion-arrow-swap:before{content:"\f10a"}.ion-arrow-dropdown:before{content:"\f10b"}.ion-globe:before{content:"\f10c"}.ion-time:before{content:"\f10d"}.ion-location:before{content:"\f10e"}.ion-warning:before{content:"\f10f"}.ion-error:before{content:"\f110"}.ion-film-outline:before{content:"\f111"}.ion-music-note:before{content:"\f112"}.ion-more-vertical:before{content:"\f113"}.ion-magnet:before{content:"\f114"}.ion-close:before{content:"\f115"}.ion-icon-big{font-size:149%}.index .title{background:url(../img/searx.png) center no-repeat;width:100%;min-height:80px}.index h1{font-size:5em}.index #search{margin:0 auto;background:inherit;border:inherit}.index .search_filters{display:block;margin:1em 0}.index .category label{padding:6px 10px;border-bottom:initial!important}@media screen and (max-width:75em){div.title h1{font-size:1em}.preferences_back{clear:both}}#main_preferences form{width:100%}#main_preferences fieldset{margin:8px;border:none}#main_preferences legend{margin:0;padding:5px 0 0;display:block;float:left;width:300px}#main_preferences .value{margin:0;padding:0;float:left;width:15em}#main_preferences .description{margin:0;padding:5px 0 0;float:left;width:50%;color:#909090;font-size:90%}#main_preferences select{width:200px;font-size:inherit!important}#main_preferences table{border-collapse:collapse}#main_preferences table.cookies{width:auto}#main_preferences div.selectable_url pre,footer,main{width:100%}#main_preferences table.cookies td,#main_preferences table.cookies th{text-align:left;padding:.25em}#main_preferences table.cookies td:first-child,#main_preferences table.cookies th:first-child{padding-right:4em}#main_preferences table.cookies>tbody>tr:nth-child(even)>td,#main_preferences table.cookies>tbody>tr:nth-child(even)>th{background-color:#ececec}#main_preferences .name,#main_preferences .shortcut{text-align:left}#main_preferences .preferences_back{background:#3498DB;color:#fff;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:.5em}#main_preferences .preferences_back a{display:block;color:#FFF}#main_preferences .preferences_back a::first-letter{text-transform:uppercase}#search{padding:0 2em;margin:0;background:#f7f7f7;border-bottom:1px solid #d7d7d7}#search_wrapper{padding:10px 0}.search_box{margin:0 12px 0 0;display:inline-flex;flex-direction:row}#clear_search,#q,#send_search{border-collapse:separate;box-sizing:border-box;margin:0;padding:2px;height:2.2em;background:#FFF;color:#222;font-size:16px;outline:0}#clear_search{display:block;width:1.8em;border-top:1px solid #3498DB;border-bottom:1px solid #3498DB;border-right:none;border-left:none;border-radius:0;z-index:10000}#clear_search:hover{color:#3498DB}#clear_search.empty *{display:none}#q::-ms-clear,#q::-webkit-search-cancel-button{display:none}#q,#send_search{display:block!important;border:1px solid #3498DB;border-radius:0;z-index:2}#q{outline:0;padding-left:8px;padding-right:0!important;border-right:none;width:40em}#send_search{border-left:none;width:2.2em}#send_search:hover{cursor:pointer;color:#ECF0F1}.no-js #send_search{width:auto!important}.search_filters{display:inline-block;vertical-align:middle}@media screen and (max-width:75em){#categories{font-size:90%;clear:both}#categories .checkbox_container{margin:auto}html.touch #main_index #categories_container,html.touch #main_results #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #main_index #categories_container .category,html.touch #main_results #categories_container .category{display:inline-block;width:auto}html.touch #main_index #categories,html.touch #main_results #categories{width:100%;margin:0;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}}@media screen and (max-width:50em){#search{width:100%;margin:0;padding:.1em 0 0}#search_wrapper{width:100%;margin:0 0 .7em;padding:0}.search_box{width:99%;margin:.1em;padding:0 .1em 0 0;display:flex;flex-direction:row}#q{width:auto!important;flex:1}.search_filters{display:block;margin:.5em}.language,.time_range{width:45%}.category{display:block;width:90%}.category label{border-bottom:0}}#categories{margin:0 10px 0 0;user-select:none}#categories::-webkit-scrollbar{width:0;height:0}.category{display:inline-block;margin:0 3px;padding:0}.category input{display:none}.category label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;font-size:.9em;border-bottom:2px solid transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body,html,main{padding:0;margin:0}.category input[type=checkbox]:focus+label{box-shadow:0 0 8px #3498DB}.category input[type=checkbox]:checked+label{background:#3498DB;color:#FFF;border-bottom:2px solid #084999}#categories_container .help{position:absolute;width:100%;bottom:-20px;overflow:hidden;opacity:0;transition:opacity 1s ease;font-size:.8em;text-position:center;background:#fff}footer p,html{font-size:.9em}#categories_container:hover .help{opacity:.8;transition:opacity 1s ease}html{font-family:arial,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444}#main_about,#main_preferences,#main_stats{margin:3em;width:auto}footer{bottom:0;height:3em;margin:1em 0;padding:1em 0;text-align:center}#main_preferences h1,#main_stats h1{background:url(../img/searx.png) no-repeat;background-size:auto 75%;min-height:40px;margin:0 auto}#results button[type=submit],input[type=submit]{padding:.5rem;margin:2px 4px;display:inline-block;background:#3498DB;color:#FFF;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}a{text-decoration:none;color:#29314d}a:visited,a:visited .highlight{color:#684898}article[data-vim-selected]{background:#f7f7f7}article[data-vim-selected]::before{position:absolute;left:1em;padding:2px;content:">";font-weight:700;color:#3498DB}article.result-images[data-vim-selected]{background:#3498DB}article.result-images[data-vim-selected]::before{display:none;content:""}.result{margin:19px 0 18px;padding:0}.result h3{font-size:1.1em;word-wrap:break-word;margin:5px 0 0;padding:0}.result h3 a{color:#084999;font-weight:400;font-size:1.1em}.result h3 a:visited{color:#684898}.result h3 a:focus,.result h3 a:hover{text-decoration:underline;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.result .cache_link,.result .proxyfied_link{font-size:.9em!important}.result .altlink,.result .content,.result .stat,.result .url{font-size:.9em;padding:0;max-width:54em;word-wrap:break-word}.result .altlink,.result .content,.result .stat{margin:0;line-height:1.24}.result .altlink .highlight,.result .content .highlight,.result .stat .highlight{color:#000;background:inherit;font-weight:700}.result .codelines .highlight{color:inherit;background:inherit;font-weight:400}.result .url{margin:0 0 3px;color:#25a55b}.result .published_date{font-size:.8em;color:#888}.result img.thumbnail{float:left;padding:0 5px 10px 0;width:20em;min-width:20em;min-height:8em}.result img.image{float:left;padding:0 5px 10px 0;width:100px;max-height:100px;object-fit:scale-down;object-position:right top}.category-social .image{width:auto!important;min-width:48px;min-height:48px;padding:0 5px 25px 0!important}.result-videos .content{overflow:hidden}.engines{float:right;color:#888}.engines span{font-size:smaller;margin:0 .5em 0 0}.result-images,.result-images img{margin:0;padding:0;max-height:200px}.small_font{font-size:.8em}.highlight{color:#094089;background:inherit;font-weight:700}.result-images{display:inline-block;position:relative}.result-images img{float:inherit;border:none;background:#084999}.result-images span a{display:none;color:#FFF}.result-images:hover span a{display:block;position:absolute;bottom:0;right:0;padding:4px;margin:0 0 4px 4px;background-color:rgba(0,0,0,.6);font-size:.7em}.torrent_result{border-left:10px solid #d3d3d3;padding-left:3px}#answers,#backToTop,#sidebar .infobox{border:1px solid #ddd;box-shadow:0 0 5px #CCC}.torrent_result p{margin:3px;font-size:.8em}.torrent_result a{color:#084999}.torrent_result a:hover{text-decoration:underline}.torrent_result a:visited{color:#684898}#results{margin:2em 2em 20px;padding:0;width:50em}#suggestions .wrapper{display:flex;flex-flow:row wrap;justify-content:flex-end}#suggestions .wrapper form{display:inline-block;flex:1 1 50%}#answers,#corrections,#suggestions{max-width:50em}#answers input,#corrections input,#infoboxes input,#suggestions input{padding:0;margin:3px;font-size:.9em;display:inline-block;background:0 0;color:#444;cursor:pointer}#answers .infobox .url a,#answers input[type=submit],#corrections .infobox .url a,#corrections input[type=submit],#infoboxes .infobox .url a,#infoboxes input[type=submit],#suggestions .infobox .url a,#suggestions input[type=submit]{color:#084999;text-decoration:none;font-size:.9rem}#answers .infobox .url a:hover,#answers input[type=submit]:hover,#corrections .infobox .url a:hover,#corrections input[type=submit]:hover,#infoboxes .infobox .url a:hover,#infoboxes input[type=submit]:hover,#suggestions .infobox .url a:hover,#suggestions input[type=submit]:hover{text-decoration:underline}#corrections{display:flex;flex-flow:row wrap;margin:1em 0}#corrections h4,#corrections input[type=submit]{display:inline-block;margin:0 .5em 0 0}#corrections input[type=submit]::after{content:", "}#apis .title,#search_url .title,#suggestions .title{margin:2em 0 .5em;color:#444}#answers{margin:10px 8px;padding:.9em}#answers h4{display:none}#answers .answer{display:block;font-size:1.2em;font-weight:700}#answers form,#infoboxes form{min-width:210px}#sidebar{position:absolute;top:100px;left:57em;margin:0 2px 5px 5px;padding:0 2px 2px;max-width:25em;word-wrap:break-word}#sidebar .infobox{margin:10px 0;padding:.9em;font-size:.9em}#sidebar .infobox h2{margin:0 0 .5em}#sidebar .infobox img{max-width:100%;max-height:12em;display:block;margin:0;padding:0}#sidebar .infobox dl{margin:.5em 0}#sidebar .infobox dt{display:inline;margin:.5em .25em .5em 0;padding:0;font-weight:700}#sidebar .infobox dd{display:inline;margin:.5em 0;padding:0}#apis,#search_url{margin-top:8px}#sidebar .infobox input{font-size:1em}#search_url div.selectable_url pre{width:200em}#linkto_preferences{position:absolute;right:10px;top:.9em;padding:0;border:0;display:block;font-size:1.2em;color:#222}#linkto_preferences a:active *,#linkto_preferences a:hover *,#linkto_preferences a:link *,#linkto_preferences a:visited *{color:#222}#backToTop{margin:0 0 0 2em;padding:0;font-size:1em;background:#fff;position:fixed;bottom:85px;left:50em;transition:opacity .5s;opacity:0}#backToTop a{display:block;margin:0;padding:.6em}@media screen and (max-width:75em){#main_about,#main_preferences,#main_stats{margin:.5em;width:auto}#answers,#suggestions{margin-top:1em}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em;margin:.5em .5em .5em 0}#sidebar{position:static;max-width:50em;margin:0 0 2px;padding:0;float:none;border:none;width:auto}.image_result,.image_result img,.result .thumbnail{max-width:98%}#sidebar input{border:0}#apis,#search_url{display:none}.result{border-bottom:1px solid #E8E7E6;margin:0;padding-top:8px;padding-bottom:6px}.result h3{margin:0 0 1px}.result .url span.url{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}.result .url a{float:right;padding:0 .5em}.result .engines{float:right;padding:0 0 3px}.result-images{border-bottom:none!important}}#main_results div#results.only_template_images{flex-direction:column;width:auto;display:flex}#main_results div#results.only_template_images #sidebar{position:relative;top:auto;order:2}#main_results div#results.only_template_images #urls{position:relative;order:1}#main_results div#results.only_template_images #backToTop{right:.5em;left:auto}#main_results div#results.only_template_images #pagination{position:relative;order:3}@media screen and (max-width:50em){article[data-vim-selected]::before{display:none;content:""}#linkto_preferences{display:none;postion:fixed!important;top:100px;right:0}#sidebar{margin:0 5px 2px}#corrections{margin:1em 5px}#results{margin:0;padding:0;width:initial}#backToTop{left:40em;bottom:35px}.result{padding:8px 10px 6px}.result-images{margin:0;padding:0;border:none}}@media screen and (max-width:35em){.result-videos img.thumbnail{float:none!important}.result-videos .content{overflow:inherit}}#search_submit{left:1px;right:auto}
\ No newline at end of file diff --git a/searx/static/themes/simple/css/searx.css b/searx/static/themes/simple/css/searx.css new file mode 100644 index 000000000..697f46b0e --- /dev/null +++ b/searx/static/themes/simple/css/searx.css @@ -0,0 +1,2173 @@ +/*! searx | 06-08-2019 | https://github.com/asciimoo/searx */ +/* +* searx, A privacy-respecting, hackable metasearch engine +* +* To convert "style.less" to "style.css" run: $make styles +*/ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; +} +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; +} +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; +} +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; +} +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; +} +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; +} +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; +} +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; +} +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; +} +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; +} +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ +/* +* searx, A privacy-respecting, hackable metasearch engine +*/ +.highlight .hll { + background-color: #ffffcc; +} +.highlight { + background: #f8f8f8; +} +.highlight .c { + color: #408080; + font-style: italic; +} +/* Comment */ +.highlight .err { + border: 1px solid #FF0000; +} +/* Error */ +.highlight .k { + color: #008000; + font-weight: bold; +} +/* Keyword */ +.highlight .o { + color: #666666; +} +/* Operator */ +.highlight .cm { + color: #408080; + font-style: italic; +} +/* Comment.Multiline */ +.highlight .cp { + color: #BC7A00; +} +/* Comment.Preproc */ +.highlight .c1 { + color: #408080; + font-style: italic; +} +/* Comment.Single */ +.highlight .cs { + color: #408080; + font-style: italic; +} +/* Comment.Special */ +.highlight .gd { + color: #A00000; +} +/* Generic.Deleted */ +.highlight .ge { + font-style: italic; +} +/* Generic.Emph */ +.highlight .gr { + color: #FF0000; +} +/* Generic.Error */ +.highlight .gh { + color: #000080; + font-weight: bold; +} +/* Generic.Heading */ +.highlight .gi { + color: #00A000; +} +/* Generic.Inserted */ +.highlight .go { + color: #888888; +} +/* Generic.Output */ +.highlight .gp { + color: #000080; + font-weight: bold; +} +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold; +} +/* Generic.Strong */ +.highlight .gu { + color: #800080; + font-weight: bold; +} +/* Generic.Subheading */ +.highlight .gt { + color: #0044DD; +} +/* Generic.Traceback */ +.highlight .kc { + color: #008000; + font-weight: bold; +} +/* Keyword.Constant */ +.highlight .kd { + color: #008000; + font-weight: bold; +} +/* Keyword.Declaration */ +.highlight .kn { + color: #008000; + font-weight: bold; +} +/* Keyword.Namespace */ +.highlight .kp { + color: #008000; +} +/* Keyword.Pseudo */ +.highlight .kr { + color: #008000; + font-weight: bold; +} +/* Keyword.Reserved */ +.highlight .kt { + color: #B00040; +} +/* Keyword.Type */ +.highlight .m { + color: #666666; +} +/* Literal.Number */ +.highlight .s { + color: #BA2121; +} +/* Literal.String */ +.highlight .na { + color: #7D9029; +} +/* Name.Attribute */ +.highlight .nb { + color: #008000; +} +/* Name.Builtin */ +.highlight .nc { + color: #0000FF; + font-weight: bold; +} +/* Name.Class */ +.highlight .no { + color: #880000; +} +/* Name.Constant */ +.highlight .nd { + color: #AA22FF; +} +/* Name.Decorator */ +.highlight .ni { + color: #999999; + font-weight: bold; +} +/* Name.Entity */ +.highlight .ne { + color: #D2413A; + font-weight: bold; +} +/* Name.Exception */ +.highlight .nf { + color: #0000FF; +} +/* Name.Function */ +.highlight .nl { + color: #A0A000; +} +/* Name.Label */ +.highlight .nn { + color: #0000FF; + font-weight: bold; +} +/* Name.Namespace */ +.highlight .nt { + color: #008000; + font-weight: bold; +} +/* Name.Tag */ +.highlight .nv { + color: #19177C; +} +/* Name.Variable */ +.highlight .ow { + color: #AA22FF; + font-weight: bold; +} +/* Operator.Word */ +.highlight .w { + color: #bbbbbb; +} +/* Text.Whitespace */ +.highlight .mf { + color: #666666; +} +/* Literal.Number.Float */ +.highlight .mh { + color: #666666; +} +/* Literal.Number.Hex */ +.highlight .mi { + color: #666666; +} +/* Literal.Number.Integer */ +.highlight .mo { + color: #666666; +} +/* Literal.Number.Oct */ +.highlight .sb { + color: #BA2121; +} +/* Literal.String.Backtick */ +.highlight .sc { + color: #BA2121; +} +/* Literal.String.Char */ +.highlight .sd { + color: #BA2121; + font-style: italic; +} +/* Literal.String.Doc */ +.highlight .s2 { + color: #BA2121; +} +/* Literal.String.Double */ +.highlight .se { + color: #BB6622; + font-weight: bold; +} +/* Literal.String.Escape */ +.highlight .sh { + color: #BA2121; +} +/* Literal.String.Heredoc */ +.highlight .si { + color: #BB6688; + font-weight: bold; +} +/* Literal.String.Interpol */ +.highlight .sx { + color: #008000; +} +/* Literal.String.Other */ +.highlight .sr { + color: #BB6688; +} +/* Literal.String.Regex */ +.highlight .s1 { + color: #BA2121; +} +/* Literal.String.Single */ +.highlight .ss { + color: #19177C; +} +/* Literal.String.Symbol */ +.highlight .bp { + color: #008000; +} +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: #19177C; +} +/* Name.Variable.Class */ +.highlight .vg { + color: #19177C; +} +/* Name.Variable.Global */ +.highlight .vi { + color: #19177C; +} +/* Name.Variable.Instance */ +.highlight .il { + color: #666666; +} +/* Literal.Number.Integer.Long */ +.highlight pre { + overflow: auto; +} +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} +.highlight .lineno::selection { + background: transparent; + /* WebKit/Blink Browsers */ +} +.highlight .lineno::-moz-selection { + background: transparent; + /* Gecko Browsers */ +} +html.no-js .hide_if_nojs { + display: none; +} +html.js .show_if_nojs { + display: none; +} +.center { + text-align: center; +} +.right { + float: right ; +} +.left { + float: left; +} +.invisible { + display: none !important; +} +.list-unstyled { + list-style-type: none; +} +.list-unstyled li { + margin-top: 4px; + margin-bottom: 4px; +} +.danger { + background-color: #fae1e1; +} +.badge { + display: inline-block; + color: #fff; + background-color: #777; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + min-width: 10px; + padding: 1px 5px; + border-radius: 5px; +} +kbd { + padding: 2px 4px; + margin: 1px; + font-size: 90%; + color: white; + background: black; +} +table { + width: 100%; +} +table.striped tr { + border-bottom: 1px solid #ececec; +} +th { + padding: 0.4em; +} +td { + padding: 0 4px; +} +tr:hover { + background: #ececec; +} +div.selectable_url { + border: 1px solid #888; + padding: 4px; + color: #444; + width: 100%; + display: block; + margin: 0.1em; + overflow: hidden; + height: 1.2em; + line-height: 1.2em; +} +div.selectable_url pre { + display: block; + font-size: 0.8em; + word-break: break-all; + margin: 0.1em; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: element; + user-select: all; +} +.dialog-error { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + color: #db3434; + background: #fae1e1; + border-color: #db3434; +} +.dialog-error:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family: "ion"; + font-size: 1.5em; +} +.dialog-error .close { + float: right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; +} +.dialog-error ul, +.dialog-error ol, +.dialog-error p { + margin: 1px 0 0 0; +} +.dialog-error table { + width: auto; +} +.dialog-error tr { + vertical-align: text-top; +} +.dialog-error tr:hover { + background: transparent; +} +.dialog-error td { + padding: 0 1em 0 0; +} +.dialog-error h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; +} +.dialog-error:before { + content: "\f110"; +} +.dialog-warning { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + color: #dbba34; + background: #faf5e1; + border-color: #dbba34; +} +.dialog-warning:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family: "ion"; + font-size: 1.5em; +} +.dialog-warning .close { + float: right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; +} +.dialog-warning ul, +.dialog-warning ol, +.dialog-warning p { + margin: 1px 0 0 0; +} +.dialog-warning table { + width: auto; +} +.dialog-warning tr { + vertical-align: text-top; +} +.dialog-warning tr:hover { + background: transparent; +} +.dialog-warning td { + padding: 0 1em 0 0; +} +.dialog-warning h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; +} +.dialog-warning:before { + content: "\f10f"; +} +.dialog-modal { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + background: white; + position: fixed; + top: 50%; + left: 50%; + /* bring your own prefixes */ + transform: translate(-50%, -50%); + z-index: 100000; + margin: 0 50% 0 0; + box-shadow: 0 0 1em; +} +.dialog-modal:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family: "ion"; + font-size: 1.5em; +} +.dialog-modal .close { + float: right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; +} +.dialog-modal ul, +.dialog-modal ol, +.dialog-modal p { + margin: 1px 0 0 0; +} +.dialog-modal table { + width: auto; +} +.dialog-modal tr { + vertical-align: text-top; +} +.dialog-modal tr:hover { + background: transparent; +} +.dialog-modal td { + padding: 0 1em 0 0; +} +.dialog-modal h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; +} +.btn-collapse { + cursor: pointer; +} +.scrollx { + overflow-x: auto; + overflow-y: hidden; + display: block; + padding: 0; + margin: 0; + border: none; +} +/* -- tabs --*/ +.tabs .tabs > label { + font-size: 90%; +} +.tabs { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + width: 100%; + min-width: 100%; +} +.tabs > * { + order: 2; +} +.tabs > input[type=radio] { + display: none; +} +.tabs > label { + order: 1; + padding: 0.7em; + margin: 0 0.7em; + letter-spacing: 0.5px; + text-transform: uppercase; + border: solid white; + border-width: 0px 0px 2px 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tabs > label:hover { + border-bottom: 2px solid #084999; +} +.tabs > section { + min-width: 100%; + padding: 0.7rem 0; + box-sizing: border-box; + border-top: 1px solid black; + display: none; +} +.tabs > label:last-of-type { + border-bottom: 2px solid #084999; + background: #3498DB; + color: #FFF; + font-weight: bold; + letter-spacing: -0.1px; +} +.tabs > section:last-of-type { + display: block; +} +html body .tabs > input:checked ~ section { + display: none; +} +html body .tabs > input:checked ~ label { + position: inherited; + background: inherit; + border-bottom: 2px solid transparent; + font-weight: normal; + color: inherit; +} +html body .tabs > input:checked ~ label:hover { + border-bottom: 2px solid #084999; +} +html body .tabs > input:checked + label { + border-bottom: 2px solid #084999; + background: #3498DB; + color: #FFF; + font-weight: bold; + letter-spacing: -0.1px; +} +html body .tabs > input:checked + label + section { + display: block; +} +/* -- select -- */ +select { + height: 28px; + margin: 0 1em 0 0; + padding: 2px 8px 2px 0 !important; + color: #222; + font-size: 12px; + z-index: 2; +} +select:hover, +select:focus { + cursor: pointer; +} +@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { + select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + border-bottom: 1px solid #d7d7d7; + background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTI4LDE5MiAyNTYsMzIwIDM4NCwxOTIiLz48L2c+PC9zdmc+Cg==) no-repeat; + background-position-x: 105%; + background-size: 2em; + background-origin: content-box; + outline: medium none; + } + select:hover, + select:focus { + border-bottom: 1px solid #3498DB; + } +} +/* -- checkbox-onoff -- */ +@supports (border-radius: 50px) { + .checkbox-onoff { + display: inline-block; + width: 40px; + height: 10px; + background: #dcdcdc; + margin: 8px auto; + position: relative; + border-radius: 50px; + } + .checkbox-onoff label { + display: block; + width: 20px; + height: 20px; + position: absolute; + top: -5px; + cursor: pointer; + border-radius: 50px; + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.3); + transition: all 0.4s ease; + left: 27px; + background-color: #3498DB; + } + .checkbox-onoff input[type=checkbox] { + visibility: hidden; + } + .checkbox-onoff input[type=checkbox]:checked + label { + left: -5px; + background: #dcdcdc; + } +} +/* -- checkbox --*/ +@supports (transform: rotate(-45deg)) { + .checkbox { + width: 20px; + position: relative; + margin: 20px auto; + } + .checkbox label { + width: 20px; + height: 20px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + background: white; + border-radius: 4px; + box-shadow: inset 0px 1px 1px white, 0px 1px 4px rgba(0, 0, 0, 0.5); + } + .checkbox label:after { + content: ''; + width: 9px; + height: 5px; + position: absolute; + top: 4px; + left: 4px; + border: 3px solid #333; + border-top: none; + border-right: none; + background: transparent; + opacity: 0; + transform: rotate(-45deg); + } + .checkbox input[type=checkbox] { + visibility: hidden; + } + .checkbox input[type=checkbox]:checked + label:after { + border-color: #3498DB; + opacity: 1; + } + .checkbox input[disabled] + label { + background-color: transparent !important; + box-shadow: none !important; + cursor: inherit; + } + .checkbox input:not(:checked):not([readonly]):not([disabled]) + label:hover::after { + opacity: 0.5; + } +} +@media screen and (max-width: 50em) { + .tabs > label { + width: 100%; + } +} +/* -- loader -- */ +.loader, +.loader:after { + border-radius: 50%; + width: 2em; + height: 2em; +} +.loader { + margin: 1em auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: 0.5em solid rgba(0, 0, 0, 0.2); + border-right: 0.5em solid rgba(0, 0, 0, 0.2); + border-bottom: 0.5em solid rgba(0, 0, 0, 0.2); + border-left: 0.5em solid rgba(255, 255, 255, 0); + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.2s infinite linear; + animation: load8 1.2s infinite linear; +} +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */ +.autocomplete { + position: absolute; + max-height: 0; + overflow-y: hidden; + text-align: left; +} +.autocomplete:active, +.autocomplete:focus, +.autocomplete:hover { + background-color: white; +} +.autocomplete:empty { + display: none; +} +.autocomplete > ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.autocomplete > ul > li { + cursor: pointer; + padding: 5px 0 5px 10px; +} +.autocomplete > ul > li.active, +.autocomplete > ul > li:active, +.autocomplete > ul > li:focus { + background-color: #3498DB; +} +.autocomplete > ul > li.active a:active, +.autocomplete > ul > li:active a:active, +.autocomplete > ul > li:focus a:active, +.autocomplete > ul > li.active a:focus, +.autocomplete > ul > li:active a:focus, +.autocomplete > ul > li:focus a:focus, +.autocomplete > ul > li.active a:hover, +.autocomplete > ul > li:active a:hover, +.autocomplete > ul > li:focus a:hover { + text-decoration: none; +} +.autocomplete > ul > li.locked { + cursor: inherit; +} +.autocomplete.open { + display: block; + background-color: white; + border: 1px solid #3498DB; + max-height: 500px; + overflow-y: auto; + z-index: 100; +} +.autocomplete.open:empty { + display: none; +} +@media screen and (max-width: 50em) { + .autocomplete { + bottom: 0; + } + .autocomplete > ul > li { + padding: 7px 0 7px 10px; + border-bottom: 1px solid #E8E7E6; + text-align: left; + } +} +@font-face { + font-family: "ion"; + src: url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51"); + src: url("../fonts/ion.eot?#iefix") format("embedded-opentype"), url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + font-weight: normal; + font-style: normal; +} +.ion-icon { + display: inline-block; + vertical-align: middle; + line-height: 1; + font-weight: normal; + font-style: normal; + speak: none; + text-decoration: inherit; + text-transform: none; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.ion-icon:before { + font-family: "ion"; +} +.ion-navicon-round:before { + content: "\f101"; +} +.ion-search:before { + content: "\f102"; +} +.ion-play:before { + content: "\f103"; +} +.ion-link:before { + content: "\f104"; +} +.ion-chevron-up:before { + content: "\f105"; +} +.ion-chevron-left:before { + content: "\f106"; +} +.ion-chevron-right:before { + content: "\f107"; +} +.ion-arrow-down-a:before { + content: "\f108"; +} +.ion-arrow-up-a:before { + content: "\f109"; +} +.ion-arrow-swap:before { + content: "\f10a"; +} +.ion-arrow-dropdown:before { + content: "\f10b"; +} +.ion-globe:before { + content: "\f10c"; +} +.ion-time:before { + content: "\f10d"; +} +.ion-location:before { + content: "\f10e"; +} +.ion-warning:before { + content: "\f10f"; +} +.ion-error:before { + content: "\f110"; +} +.ion-film-outline:before { + content: "\f111"; +} +.ion-music-note:before { + content: "\f112"; +} +.ion-more-vertical:before { + content: "\f113"; +} +.ion-magnet:before { + content: "\f114"; +} +.ion-close:before { + content: "\f115"; +} +.ion-icon-big { + display: inline-block; + vertical-align: middle; + line-height: 1; + font-weight: normal; + font-style: normal; + speak: none; + text-decoration: inherit; + text-transform: none; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 149%; +} +.ion-icon-big:before { + font-family: "ion"; +} +.index { + text-align: center; +} +.index .title { + background: url('../img/searx.png') no-repeat; + width: 100%; + min-height: 80px; + background-position: center; +} +.index h1 { + font-size: 5em; + visibility: hidden; +} +.index #search { + margin: 0 auto; + background: inherit; + border: inherit; +} +.index .search_filters { + display: block; + margin: 1em 0; +} +.index .category label { + padding: 6px 10px; + border-bottom: initial !important; +} +@media screen and (max-width: 75em) { + div.title h1 { + font-size: 1em; + } +} +#main_preferences form { + width: 100%; +} +#main_preferences fieldset { + margin: 8px; + border: none; +} +#main_preferences legend { + margin: 0; + padding: 5px 0 0 0; + display: block; + float: left; + width: 300px; +} +#main_preferences .value { + margin: 0; + padding: 0; + float: left; + width: 15em; +} +#main_preferences .description { + margin: 0; + padding: 5px 0 0 0; + float: left; + width: 50%; + color: #909090; + font-size: 90%; +} +#main_preferences select { + width: 200px; + font-size: inherit !important; +} +#main_preferences table { + border-collapse: collapse; +} +#main_preferences table td { + text-align: center; +} +#main_preferences table.cookies { + width: auto; +} +#main_preferences table.cookies th, +#main_preferences table.cookies td { + text-align: left; + padding: 0.25em; +} +#main_preferences table.cookies th:first-child, +#main_preferences table.cookies td:first-child { + padding-right: 4em; +} +#main_preferences table.cookies > tbody > tr:nth-child(even) > th, +#main_preferences table.cookies > tbody > tr:nth-child(even) > td { + background-color: #ececec; +} +#main_preferences .name, +#main_preferences .shortcut { + text-align: left; +} +#main_preferences .preferences_back { + background: none repeat scroll 0 0 #3498DB; + color: white; + border: 0 none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 0.5em; +} +#main_preferences .preferences_back a { + display: block; + color: #FFF; +} +#main_preferences .preferences_back a::first-letter { + text-transform: uppercase; +} +#main_preferences div.selectable_url pre { + width: 100%; +} +@media screen and (max-width: 75em) { + .preferences_back { + clear: both; + } +} +/* +* searx, A privacy-respecting, hackable metasearch engine +*/ +#search { + padding: 0 2em; + margin: 0; + background: #f7f7f7; + border-bottom: 1px solid #d7d7d7; +} +#search_wrapper { + padding: 10px 0; +} +.search_box { + margin: 0 12px 0 0; + display: inline-flex; + flex-direction: row; + white-space: nowrap; + /* + &:has(q:focus) { + box-shadow: 0px 0px 5px #CCC; +} +*/ +} +#clear_search { + display: block; + border-collapse: separate; + box-sizing: border-box; + width: 1.8em; + margin: 0; + padding: 2px; + height: 2.2em; + background: none repeat scroll 0 0 #FFF; + border-top: 1px solid #3498DB; + border-bottom: 1px solid #3498DB; + border-right: none; + border-left: none; + border-radius: 0px; + outline: none; + color: #222; + font-size: 16px; + z-index: 10000; +} +#clear_search:hover { + color: #3498DB; +} +#clear_search.empty * { + display: none; +} +#q::-ms-clear, +#q::-webkit-search-cancel-button { + display: none; +} +#q, +#send_search { + display: block !important; + border-collapse: separate; + box-sizing: border-box; + margin: 0; + padding: 2px; + height: 2.2em; + background: none repeat scroll 0 0 #FFF; + border: 1px solid #3498DB; + border-radius: 0px; + outline: none; + color: #222; + font-size: 16px; + z-index: 2; +} +#q { + outline: medium none; + padding-left: 8px; + padding-right: 0px !important; + border-right: none; + width: 40em; +} +#send_search { + border-left: none; + width: 2.2em; +} +#send_search:hover { + cursor: pointer; + background-color: #3498DB; + color: #ECF0F1; +} +.no-js #send_search { + width: auto !important; +} +.search_filters { + display: inline-block; + vertical-align: middle; +} +@media screen and (max-width: 75em) { + #categories { + font-size: 90%; + clear: both; + } + #categories .checkbox_container { + margin-top: 2px; + margin: auto; + } + html.touch #main_index #categories_container, + html.touch #main_results #categories_container { + width: 1000px; + width: -moz-max-content; + width: -webkit-max-content; + width: max-content; + } + html.touch #main_index #categories_container .category, + html.touch #main_results #categories_container .category { + display: inline-block; + width: auto; + } + html.touch #main_index #categories, + html.touch #main_results #categories { + width: 100%; + margin: 0; + text-align: left; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + } +} +@media screen and (max-width: 50em) { + #search { + width: 100%; + margin: 0; + padding: 0.1em 0 0 0; + } + #search_wrapper { + width: 100%; + margin: 0 0 0.7em 0; + padding: 0; + } + .search_box { + width: 99%; + margin: 0.1em; + padding: 0 0.1em 0 0; + display: flex; + flex-direction: row; + } + #q { + width: auto !important; + flex: 1; + } + .search_filters { + display: block; + margin: 0.5em; + } + .language, + .time_range { + width: 45%; + } + .category { + display: block; + width: 90%; + } + .category label { + border-bottom: 0; + } +} +#categories { + margin: 0 10px 0 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#categories::-webkit-scrollbar { + width: 0; + height: 0; +} +.category { + display: inline-block; + position: relative; + margin: 0 3px; + padding: 0px; + /*label:hover { + border-bottom: 2px solid @color-categories-item-border-unselected-hover; + }*/ +} +.category input { + display: none; +} +.category label { + cursor: pointer; + padding: 4px 10px; + margin: 0; + display: block; + text-transform: capitalize; + font-size: 0.9em; + border-bottom: 2px solid transparent; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.category input[type="checkbox"]:focus + label { + box-shadow: 0px 0px 8px #3498DB; +} +.category input[type="checkbox"]:checked + label { + background: #3498DB; + color: #FFF; + border-bottom: 2px solid #084999; +} +#categories_container { + position: relative; +} +#categories_container .help { + position: absolute; + width: 100%; + bottom: -20px; + overflow: hidden; + opacity: 0; + transition: opacity 1s ease; + font-size: 0.8em; + text-position: center; + background: white; +} +#categories_container:hover .help { + opacity: 0.8; + transition: opacity 1s ease; +} +html { + font-family: arial, sans-serif; + font-size: 0.9em; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + text-size-adjust: 100%; + color: #444; + padding: 0; + margin: 0; +} +body, +main { + padding: 0; + margin: 0; +} +main { + width: 100%; +} +footer { + bottom: 0; + width: 100%; + height: 50px; +} +#main_preferences, +#main_about, +#main_stats { + margin: 3em; + width: auto; +} +footer { + bottom: 0; + height: 3em; + margin: 1em 0; + padding: 1em 0; + clear: both; + width: 100%; + text-align: center; +} +footer p { + font-size: 0.9em; +} +#main_preferences h1, +#main_stats h1 { + background: url('../img/searx.png') no-repeat; + background-size: auto 75%; + min-height: 40px; + margin: 0 auto; +} +#main_preferences h1 span, +#main_stats h1 span { + visibility: hidden; +} +input[type="submit"], +#results button[type="submit"] { + padding: 0.5rem; + margin: 2px 4px; + display: inline-block; + background: #3498DB; + color: #FFF; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: 0; + cursor: pointer; +} +a { + text-decoration: none; + color: #29314d; +} +a:visited { + color: #684898; +} +a:visited .highlight { + color: #684898; +} +article[data-vim-selected] { + background: #f7f7f7; +} +article[data-vim-selected]::before { + position: absolute; + left: 1em; + padding: 2px; + content: ">"; + font-weight: bold; + color: #3498DB; +} +article.result-images[data-vim-selected] { + background: #3498DB; +} +article.result-images[data-vim-selected]::before { + display: none; + content: ""; +} +.result { + margin: 19px 0 18px 0; + padding: 0; +} +.result h3 { + font-size: 1.1em; + word-wrap: break-word; + margin: 5px 0 1px 0; + padding: 0; + margin-bottom: 0; +} +.result h3 a { + color: #084999; + font-weight: normal; + font-size: 1.1em; +} +.result h3 a:visited { + color: #684898; +} +.result h3 a:focus, +.result h3 a:hover { + text-decoration: underline; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} +.result .cache_link, +.result .proxyfied_link { + font-size: 0.9em !important; +} +.result .content, +.result .stat, +.result .altlink { + font-size: 0.9em; + margin: 0; + padding: 0; + max-width: 54em; + word-wrap: break-word; + line-height: 1.24; +} +.result .content .highlight, +.result .stat .highlight, +.result .altlink .highlight { + color: #000000; + background: inherit; + font-weight: bold; +} +.result .codelines .highlight { + color: inherit; + background: inherit; + font-weight: normal; +} +.result .url { + font-size: 0.9em; + margin: 0 0 3px 0; + padding: 0; + max-width: 54em; + word-wrap: break-word; + color: #25a55b; +} +.result .published_date { + font-size: 0.8em; + color: #888; +} +.result img.thumbnail { + float: left; + padding: 0 5px 10px 0; + width: 20em; + min-width: 20em; + min-height: 8em; +} +.result img.image { + float: left; + padding: 0 5px 10px 0; + width: 100px; + max-height: 100px; + object-fit: scale-down; + object-position: right top; +} +.result .break { + clear: both; +} +.category-social .image { + width: auto !important; + min-width: 48px; + min-height: 48px; + padding: 0 5px 25px 0 !important; +} +.result-videos .content { + overflow: hidden; +} +.engines { + float: right; + color: #888; +} +.engines span { + font-size: smaller; + margin: 0 0.5em 0 0; +} +.small_font { + font-size: 0.8em; +} +.highlight { + color: #094089; + background: inherit; + font-weight: bold; +} +.result-images { + display: inline-block; + margin: 0; + padding: 0; + position: relative; + max-height: 200px; +} +.result-images img { + float: inherit; + margin: 0; + padding: 0; + border: none; + max-height: 200px; + background: #084999; +} +.result-images span a { + display: none; + color: #FFF; +} +.result-images:hover span a { + display: block; + position: absolute; + bottom: 0; + right: 0; + padding: 4px; + margin: 0 0 4px 4px; + background-color: rgba(0, 0, 0, 0.6); + font-size: 0.7em; +} +.torrent_result { + border-left: 10px solid lightgray; + padding-left: 3px; +} +.torrent_result p { + margin: 3px; + font-size: 0.8em; +} +.torrent_result a { + color: #084999; +} +.torrent_result a:hover { + text-decoration: underline; +} +.torrent_result a:visited { + color: #684898; +} +#results { + margin: 2em 2em 20px 2em; + padding: 0; + width: 50em; +} +#suggestions .wrapper { + display: flex; + flex-flow: row wrap; + justify-content: flex-end; +} +#suggestions .wrapper form { + display: inline-block; + flex: 1 1 50%; +} +#suggestions, +#answers, +#corrections { + max-width: 50em; +} +#suggestions input, +#answers input, +#infoboxes input, +#corrections input { + padding: 0; + margin: 3px; + font-size: 0.9em; + display: inline-block; + background: transparent; + color: #444; + cursor: pointer; +} +#suggestions input[type="submit"], +#answers input[type="submit"], +#infoboxes input[type="submit"], +#corrections input[type="submit"], +#suggestions .infobox .url a, +#answers .infobox .url a, +#infoboxes .infobox .url a, +#corrections .infobox .url a { + color: #084999; + text-decoration: none; + font-size: 0.9rem; +} +#suggestions input[type="submit"]:hover, +#answers input[type="submit"]:hover, +#infoboxes input[type="submit"]:hover, +#corrections input[type="submit"]:hover, +#suggestions .infobox .url a:hover, +#answers .infobox .url a:hover, +#infoboxes .infobox .url a:hover, +#corrections .infobox .url a:hover { + text-decoration: underline; +} +#corrections { + display: flex; + flex-flow: row wrap; + margin: 1em 0; +} +#corrections h4, +#corrections input[type="submit"] { + display: inline-block; + margin: 0 0.5em 0 0; +} +#corrections input[type="submit"]::after { + content: ", "; +} +#suggestions .title, +#search_url .title, +#apis .title { + margin: 2em 0 0.5em 0; + color: #444; +} +#answers { + margin: 10px 8px 10px 8px; + border: 1px solid #ddd; + padding: 0.9em; + box-shadow: 0px 0px 5px #CCC; +} +#answers h4 { + display: none; +} +#answers .answer { + display: block; + font-size: 1.2em; + font-weight: bold; +} +#answers form, +#infoboxes form { + min-width: 210px; +} +#sidebar { + position: absolute; + top: 100px; + left: 57em; + margin: 0px 2px 5px 5px; + padding: 0px 2px 2px; + max-width: 25em; + word-wrap: break-word; +} +#sidebar .infobox { + margin: 10px 0 10px; + border: 1px solid #ddd; + padding: 0.9em; + font-size: 0.9em; + box-shadow: 0px 0px 5px #CCC; +} +#sidebar .infobox h2 { + margin: 0 0 .5em 0; +} +#sidebar .infobox img { + max-width: 100%; + max-height: 12em; + display: block; + margin: 0; + padding: 0; +} +#sidebar .infobox dl { + margin: 0.5em 0; +} +#sidebar .infobox dt { + display: inline; + margin: 0.5em 0.25em 0.5em 0; + padding: 0; + font-weight: bold; +} +#sidebar .infobox dd { + display: inline; + margin: 0.5em 0; + padding: 0; +} +#sidebar .infobox input { + font-size: 1em; +} +#sidebar .infobox br { + clear: both; +} +#sidebar .infobox .attributes, +#sidebar .infobox .urls { + clear: both; +} +#search_url { + margin-top: 8px; +} +#search_url div.selectable_url pre { + width: 200em; +} +#linkto_preferences { + position: absolute; + right: 10px; + top: 0.9em; + padding: 0; + border: 0; + display: block; + font-size: 1.2em; + color: #222; +} +#linkto_preferences a:link *, +#linkto_preferences a:hover *, +#linkto_preferences a:visited *, +#linkto_preferences a:active * { + color: #222; +} +#pagination { + clear: both; +} +#pagination br { + clear: both; +} +#apis { + margin-top: 8px; + clear: both; +} +#backToTop { + border: 1px solid #ddd; + margin: 0 0 0 2em; + padding: 0; + font-size: 1em; + box-shadow: 0px 0px 5px #CCC; + background: white; + position: fixed; + bottom: 85px; + left: 50em; + transition: opacity 0.5s; + opacity: 0; +} +#backToTop a { + display: block; + margin: 0; + padding: 0.6em; +} +@media screen and (max-width: 75em) { + #main_preferences, + #main_about, + #main_stats { + margin: 0.5em; + width: auto; + } + #suggestions, + #answers { + margin-top: 1em; + } + #infoboxes { + position: inherit; + max-width: inherit; + } + #infoboxes .infobox { + clear: both; + } + #infoboxes .infobox img { + float: left; + max-width: 10em; + margin: 0.5em 0.5em 0.5em 0; + } + #sidebar { + position: static; + max-width: 50em; + margin: 0 0 2px 0; + padding: 0; + float: none; + border: none; + width: auto; + } + #sidebar input { + border: 0; + } + #apis { + display: none; + } + #search_url { + display: none; + } + .result { + border-bottom: 1px solid #E8E7E6; + margin: 0; + padding-top: 8px; + padding-bottom: 6px; + } + .result h3 { + margin: 0 0 1px 0; + } + .result .thumbnail { + max-width: 98%; + } + .result .url span.url { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + } + .result .url a { + float: right; + padding: 0 0.5em; + } + .result .engines { + float: right; + padding: 0 0 3px 0; + } + .result-images { + border-bottom: none !important; + } + .image_result { + max-width: 98%; + } + .image_result img { + max-width: 98%; + } +} +#main_results div#results.only_template_images { + flex-direction: column; + width: auto; + display: flex; +} +#main_results div#results.only_template_images #sidebar { + position: relative; + top: auto; + order: 2; +} +#main_results div#results.only_template_images #urls { + position: relative; + order: 1; +} +#main_results div#results.only_template_images #backToTop { + right: 0.5em; + left: auto; +} +#main_results div#results.only_template_images #pagination { + position: relative; + order: 3; +} +@media screen and (max-width: 50em) { + article[data-vim-selected]::before { + display: none; + content: ""; + } + #linkto_preferences { + display: none; + postion: fixed !important; + top: 100px; + right: 0px; + } + #sidebar { + margin: 0 5px 2px 5px; + } + #corrections { + margin: 1em 5px 1em 5px; + } + #results { + margin: 0; + padding: 0; + width: initial; + } + #backToTop { + left: 40em; + bottom: 35px; + } + .result { + padding: 8px 10px 6px 10px; + } + .result-images { + margin: 0; + padding: 0; + border: none; + } +} +@media screen and (max-width: 35em) { + .result-videos img.thumbnail { + float: none !important; + } + .result-videos .content { + overflow: inherit; + } +} diff --git a/searx/static/themes/simple/css/searx.min.css b/searx/static/themes/simple/css/searx.min.css new file mode 100644 index 000000000..5dc9fd30b --- /dev/null +++ b/searx/static/themes/simple/css/searx.min.css @@ -0,0 +1 @@ +/*! searx | 06-08-2019 | https://github.com/asciimoo/searx *//*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}[type=checkbox],[type=radio],legend{padding:0;box-sizing:border-box}.badge,.center{text-align:center}.badge,progress,sub,sup{vertical-align:baseline}.autocomplete>ul,.list-unstyled{list-style-type:none}.tabs>section,legend{box-sizing:border-box}#main_preferences h1 span,#main_stats h1 span,.index h1{visibility:hidden}#apis,#pagination,#pagination br,#sidebar .infobox .attributes,#sidebar .infobox .urls,#sidebar .infobox br,.result .break,footer{clear:both}html{line-height:1.15}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}.highlight pre,textarea{overflow:auto}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}.badge,.search_box{white-space:nowrap}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.highlight .c,.highlight .cm,.highlight .ge,.highlight .sd{font-style:italic}.dialog-error:before,.dialog-modal:before,.dialog-warning:before,.ion-icon-big:before,.ion-icon:before{font-family:ion}details{display:block}summary{display:list-item}[hidden],html.js .show_if_nojs,html.no-js .hide_if_nojs,template{display:none}.highlight .hll{background-color:#ffc}.highlight .c{color:#408080}.highlight .err{border:1px solid red}.highlight .k{color:green;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#408080}.highlight .cp{color:#BC7A00}.highlight .c1,.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#A00000}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00A000}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04D}.highlight .kc,.highlight .kd,.highlight .kn{color:green;font-weight:700}.highlight .kp{color:green}.highlight .kr{color:green;font-weight:700}.highlight .kt{color:#B00040}.highlight .m{color:#666}.highlight .s{color:#BA2121}.highlight .na{color:#7D9029}.highlight .nb{color:green}.highlight .nc{color:#00F;font-weight:700}.highlight .no{color:#800}.highlight .nd{color:#A2F}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#D2413A;font-weight:700}.highlight .nf{color:#00F}.highlight .nl{color:#A0A000}.highlight .nn{color:#00F;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#19177C}.highlight .ow{color:#A2F;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#666}.highlight .s2,.highlight .sb,.highlight .sc{color:#BA2121}.highlight .sd{color:#BA2121}.highlight .se{color:#B62;font-weight:700}.highlight .sh{color:#BA2121}.highlight .si{color:#B68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#B68}.highlight .s1{color:#BA2121}.highlight .ss{color:#19177C}.highlight .bp{color:green}.highlight .vc,.highlight .vg,.highlight .vi{color:#19177C}.highlight .il{color:#666}.badge,kbd{color:#fff}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.btn-collapse,.tabs>label,select:focus,select:hover{cursor:pointer}.highlight .lineno::selection{background:0 0}.highlight .lineno::-moz-selection{background:0 0}.right{float:right}.left{float:left}.invisible{display:none!important}.list-unstyled li{margin-top:4px;margin-bottom:4px}.danger{background-color:#fae1e1}.badge{display:inline-block;background-color:#777;min-width:10px;padding:1px 5px;border-radius:5px}.dialog-error tr,.dialog-modal tr,.dialog-warning tr{vertical-align:text-top}kbd{padding:2px 4px;margin:1px;font-size:90%;background:#000}table{width:100%}table.striped tr{border-bottom:1px solid #ececec}th{padding:.4em}td{padding:0 4px}tr:hover{background:#ececec}div.selectable_url{border:1px solid #888;padding:4px;color:#444;width:100%;display:block;margin:.1em;overflow:hidden;height:1.2em;line-height:1.2em}div.selectable_url pre{display:block;font-size:.8em;word-break:break-all;margin:.1em;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:element;user-select:all}#categories,.tabs>label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none}.dialog-error{position:relative;width:70%;padding:1em 1em 1em 2.7em;margin:0 8% 1em;border:1px solid #db3434;border-radius:4px;text-align:left;color:#db3434;background:#fae1e1}.dialog-error:before{position:absolute;top:.5em;left:.5em;font-size:1.5em;content:"\f110"}.dialog-error .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-error ol,.dialog-error p,.dialog-error ul{margin:1px 0 0}.dialog-error table{width:auto}.dialog-error tr:hover{background:0 0}.dialog-error td{padding:0 1em 0 0}.dialog-error h4{margin-top:.3em;margin-bottom:.3em}.dialog-warning{position:relative;width:70%;padding:1em 1em 1em 2.7em;margin:0 8% 1em;border:1px solid #dbba34;border-radius:4px;text-align:left;color:#dbba34;background:#faf5e1}.dialog-warning:before{position:absolute;top:.5em;left:.5em;font-size:1.5em;content:"\f10f"}.dialog-warning .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-warning ol,.dialog-warning p,.dialog-warning ul{margin:1px 0 0}.dialog-warning table{width:auto}.dialog-warning tr:hover{background:0 0}.dialog-warning td{padding:0 1em 0 0}.dialog-warning h4{margin-top:.3em;margin-bottom:.3em}.dialog-modal{width:70%;padding:1em 1em 1em 2.7em;border:1px solid #000;border-radius:4px;text-align:left;background:#fff;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100000;margin:0 50% 0 0;box-shadow:0 0 1em}.dialog-modal:before{position:absolute;top:.5em;left:.5em;font-size:1.5em}.dialog-modal .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-modal ol,.dialog-modal p,.dialog-modal ul{margin:1px 0 0}.dialog-modal table{width:auto}.dialog-modal tr:hover{background:0 0}.dialog-modal td{padding:0 1em 0 0}.dialog-modal h4{margin-top:.3em;margin-bottom:.3em}.scrollx{overflow-x:auto;overflow-y:hidden;display:block;padding:0;margin:0;border:none}.tabs .tabs>label{font-size:90%}.tabs{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-wrap:wrap;width:100%;min-width:100%}.tabs>*{order:2}.tabs>input[type=radio]{display:none}.tabs>label{order:1;padding:.7em;margin:0 .7em;letter-spacing:.5px;text-transform:uppercase;border:solid #fff;border-width:0 0 2px;user-select:none}.tabs>label:hover,.tabs>label:last-of-type{border-bottom:2px solid #084999}.tabs>section{min-width:100%;padding:.7rem 0;border-top:1px solid #000;display:none}.tabs>label:last-of-type{background:#3498DB;color:#FFF;font-weight:700;letter-spacing:-.1px}.tabs>section:last-of-type{display:block}html body .tabs>input:checked~section{display:none}html body .tabs>input:checked~label{position:inherited;background:inherit;border-bottom:2px solid transparent;font-weight:400;color:inherit}html body .tabs>input:checked~label:hover{border-bottom:2px solid #084999}html body .tabs>input:checked+label{border-bottom:2px solid #084999;background:#3498DB;color:#FFF;font-weight:700;letter-spacing:-.1px}html body .tabs>input:checked+label+section{display:block}select{height:28px;margin:0 1em 0 0;padding:2px 8px 2px 0!important;color:#222;font-size:12px;z-index:2}@supports ((background-position-x:100%) and ((appearance:none) or (-webkit-appearance:none) or (-moz-appearance:none))){select{appearance:none;-webkit-appearance:none;-moz-appearance:none;border:none;border-bottom:1px solid #d7d7d7;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTI4LDE5MiAyNTYsMzIwIDM4NCwxOTIiLz48L2c+PC9zdmc+Cg==) no-repeat;background-position-x:105%;background-size:2em;background-origin:content-box;outline:0}select:focus,select:hover{border-bottom:1px solid #3498DB}}@supports (border-radius:50px){.checkbox-onoff{display:inline-block;width:40px;height:10px;background:#dcdcdc;margin:8px auto;position:relative;border-radius:50px}.checkbox-onoff label{display:block;width:20px;height:20px;position:absolute;top:-5px;cursor:pointer;border-radius:50px;box-shadow:0 3px 5px 0 rgba(0,0,0,.3);transition:all .4s ease;left:27px;background-color:#3498DB}.checkbox-onoff input[type=checkbox]{visibility:hidden}.checkbox-onoff input[type=checkbox]:checked+label{left:-5px;background:#dcdcdc}}@supports (transform:rotate(-45deg)){.checkbox{width:20px;position:relative;margin:20px auto}.checkbox label{width:20px;height:20px;cursor:pointer;position:absolute;top:0;left:0;background:#fff;border-radius:4px;box-shadow:inset 0 1px 1px #fff,0 1px 4px rgba(0,0,0,.5)}.checkbox label:after{content:'';width:9px;height:5px;position:absolute;top:4px;left:4px;border:3px solid #333;border-top:none;border-right:none;background:0 0;opacity:0;transform:rotate(-45deg)}.checkbox input[type=checkbox]{visibility:hidden}.checkbox input[type=checkbox]:checked+label:after{border-color:#3498DB;opacity:1}.checkbox input[disabled]+label{background-color:transparent!important;box-shadow:none!important;cursor:inherit}.checkbox input:not(:checked):not([readonly]):not([disabled])+label:hover::after{opacity:.5}}@media screen and (max-width:50em){.tabs>label{width:100%}}.loader,.loader:after{border-radius:50%;width:2em;height:2em}.loader{margin:1em auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);border-left:.5em solid rgba(255,255,255,0);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.2s infinite linear;animation:load8 1.2s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */.autocomplete{position:absolute;max-height:0;overflow-y:hidden;text-align:left}#categories_container,.category{position:relative}.autocomplete:active,.autocomplete:focus,.autocomplete:hover{background-color:#fff}#send_search:hover,.autocomplete>ul>li.active,.autocomplete>ul>li:active,.autocomplete>ul>li:focus{background-color:#3498DB}.autocomplete:empty{display:none}.autocomplete>ul{margin:0;padding:0}.autocomplete>ul>li{cursor:pointer;padding:5px 0 5px 10px}.autocomplete>ul>li.active a:active,.autocomplete>ul>li.active a:focus,.autocomplete>ul>li.active a:hover,.autocomplete>ul>li:active a:active,.autocomplete>ul>li:active a:focus,.autocomplete>ul>li:active a:hover,.autocomplete>ul>li:focus a:active,.autocomplete>ul>li:focus a:focus,.autocomplete>ul>li:focus a:hover{text-decoration:none}.autocomplete>ul>li.locked{cursor:inherit}.autocomplete.open{display:block;background-color:#fff;border:1px solid #3498DB;max-height:500px;overflow-y:auto;z-index:100}.autocomplete.open:empty{display:none}.ion-icon,.ion-icon-big{display:inline-block;line-height:1;font-weight:400;font-style:normal;speak:none;text-decoration:inherit;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}@media screen and (max-width:50em){.autocomplete{bottom:0}.autocomplete>ul>li{padding:7px 0 7px 10px;border-bottom:1px solid #E8E7E6;text-align:left}}#main_preferences table td,.index{text-align:center}@font-face{font-family:ion;src:url(../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51);src:url(../fonts/ion.eot?#iefix) format("embedded-opentype"),url(../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51) format("woff2"),url(../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51) format("woff"),url(../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51) format("truetype"),url(../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion) format("svg");font-weight:400;font-style:normal}.ion-navicon-round:before{content:"\f101"}.ion-search:before{content:"\f102"}.ion-play:before{content:"\f103"}.ion-link:before{content:"\f104"}.ion-chevron-up:before{content:"\f105"}.ion-chevron-left:before{content:"\f106"}.ion-chevron-right:before{content:"\f107"}.ion-arrow-down-a:before{content:"\f108"}.ion-arrow-up-a:before{content:"\f109"}.ion-arrow-swap:before{content:"\f10a"}.ion-arrow-dropdown:before{content:"\f10b"}.ion-globe:before{content:"\f10c"}.ion-time:before{content:"\f10d"}.ion-location:before{content:"\f10e"}.ion-warning:before{content:"\f10f"}.ion-error:before{content:"\f110"}.ion-film-outline:before{content:"\f111"}.ion-music-note:before{content:"\f112"}.ion-more-vertical:before{content:"\f113"}.ion-magnet:before{content:"\f114"}.ion-close:before{content:"\f115"}.ion-icon-big{font-size:149%}.index .title{background:url(../img/searx.png) center no-repeat;width:100%;min-height:80px}.index h1{font-size:5em}.index #search{margin:0 auto;background:inherit;border:inherit}.index .search_filters{display:block;margin:1em 0}.index .category label{padding:6px 10px;border-bottom:initial!important}@media screen and (max-width:75em){div.title h1{font-size:1em}.preferences_back{clear:both}}#main_preferences form{width:100%}#main_preferences fieldset{margin:8px;border:none}#main_preferences legend{margin:0;padding:5px 0 0;display:block;float:left;width:300px}#main_preferences .value{margin:0;padding:0;float:left;width:15em}#main_preferences .description{margin:0;padding:5px 0 0;float:left;width:50%;color:#909090;font-size:90%}#main_preferences select{width:200px;font-size:inherit!important}#main_preferences table{border-collapse:collapse}#main_preferences table.cookies{width:auto}#main_preferences div.selectable_url pre,footer,main{width:100%}#main_preferences table.cookies td,#main_preferences table.cookies th{text-align:left;padding:.25em}#main_preferences table.cookies td:first-child,#main_preferences table.cookies th:first-child{padding-right:4em}#main_preferences table.cookies>tbody>tr:nth-child(even)>td,#main_preferences table.cookies>tbody>tr:nth-child(even)>th{background-color:#ececec}#main_preferences .name,#main_preferences .shortcut{text-align:left}#main_preferences .preferences_back{background:#3498DB;color:#fff;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:.5em}#main_preferences .preferences_back a{display:block;color:#FFF}#main_preferences .preferences_back a::first-letter{text-transform:uppercase}#search{padding:0 2em;margin:0;background:#f7f7f7;border-bottom:1px solid #d7d7d7}#search_wrapper{padding:10px 0}.search_box{margin:0 12px 0 0;display:inline-flex;flex-direction:row}#clear_search,#q,#send_search{border-collapse:separate;box-sizing:border-box;margin:0;padding:2px;height:2.2em;background:#FFF;color:#222;font-size:16px;outline:0}#clear_search{display:block;width:1.8em;border-top:1px solid #3498DB;border-bottom:1px solid #3498DB;border-right:none;border-left:none;border-radius:0;z-index:10000}#clear_search:hover{color:#3498DB}#clear_search.empty *{display:none}#q::-ms-clear,#q::-webkit-search-cancel-button{display:none}#q,#send_search{display:block!important;border:1px solid #3498DB;border-radius:0;z-index:2}#q{outline:0;padding-left:8px;padding-right:0!important;border-right:none;width:40em}#send_search{border-left:none;width:2.2em}#send_search:hover{cursor:pointer;color:#ECF0F1}.no-js #send_search{width:auto!important}.search_filters{display:inline-block;vertical-align:middle}@media screen and (max-width:75em){#categories{font-size:90%;clear:both}#categories .checkbox_container{margin:auto}html.touch #main_index #categories_container,html.touch #main_results #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #main_index #categories_container .category,html.touch #main_results #categories_container .category{display:inline-block;width:auto}html.touch #main_index #categories,html.touch #main_results #categories{width:100%;margin:0;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}}@media screen and (max-width:50em){#search{width:100%;margin:0;padding:.1em 0 0}#search_wrapper{width:100%;margin:0 0 .7em;padding:0}.search_box{width:99%;margin:.1em;padding:0 .1em 0 0;display:flex;flex-direction:row}#q{width:auto!important;flex:1}.search_filters{display:block;margin:.5em}.language,.time_range{width:45%}.category{display:block;width:90%}.category label{border-bottom:0}}#categories{margin:0 10px 0 0;user-select:none}#categories::-webkit-scrollbar{width:0;height:0}.category{display:inline-block;margin:0 3px;padding:0}.category input{display:none}.category label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;font-size:.9em;border-bottom:2px solid transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body,html,main{padding:0;margin:0}.category input[type=checkbox]:focus+label{box-shadow:0 0 8px #3498DB}.category input[type=checkbox]:checked+label{background:#3498DB;color:#FFF;border-bottom:2px solid #084999}#categories_container .help{position:absolute;width:100%;bottom:-20px;overflow:hidden;opacity:0;transition:opacity 1s ease;font-size:.8em;text-position:center;background:#fff}footer p,html{font-size:.9em}#categories_container:hover .help{opacity:.8;transition:opacity 1s ease}html{font-family:arial,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444}#main_about,#main_preferences,#main_stats{margin:3em;width:auto}footer{bottom:0;height:3em;margin:1em 0;padding:1em 0;text-align:center}#main_preferences h1,#main_stats h1{background:url(../img/searx.png) no-repeat;background-size:auto 75%;min-height:40px;margin:0 auto}#results button[type=submit],input[type=submit]{padding:.5rem;margin:2px 4px;display:inline-block;background:#3498DB;color:#FFF;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}a{text-decoration:none;color:#29314d}a:visited,a:visited .highlight{color:#684898}article[data-vim-selected]{background:#f7f7f7}article[data-vim-selected]::before{position:absolute;left:1em;padding:2px;content:">";font-weight:700;color:#3498DB}article.result-images[data-vim-selected]{background:#3498DB}article.result-images[data-vim-selected]::before{display:none;content:""}.result{margin:19px 0 18px;padding:0}.result h3{font-size:1.1em;word-wrap:break-word;margin:5px 0 0;padding:0}.result h3 a{color:#084999;font-weight:400;font-size:1.1em}.result h3 a:visited{color:#684898}.result h3 a:focus,.result h3 a:hover{text-decoration:underline;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.result .cache_link,.result .proxyfied_link{font-size:.9em!important}.result .altlink,.result .content,.result .stat,.result .url{font-size:.9em;padding:0;max-width:54em;word-wrap:break-word}.result .altlink,.result .content,.result .stat{margin:0;line-height:1.24}.result .altlink .highlight,.result .content .highlight,.result .stat .highlight{color:#000;background:inherit;font-weight:700}.result .codelines .highlight{color:inherit;background:inherit;font-weight:400}.result .url{margin:0 0 3px;color:#25a55b}.result .published_date{font-size:.8em;color:#888}.result img.thumbnail{float:left;padding:0 5px 10px 0;width:20em;min-width:20em;min-height:8em}.result img.image{float:left;padding:0 5px 10px 0;width:100px;max-height:100px;object-fit:scale-down;object-position:right top}.category-social .image{width:auto!important;min-width:48px;min-height:48px;padding:0 5px 25px 0!important}.result-videos .content{overflow:hidden}.engines{float:right;color:#888}.engines span{font-size:smaller;margin:0 .5em 0 0}.result-images,.result-images img{margin:0;padding:0;max-height:200px}.small_font{font-size:.8em}.highlight{color:#094089;background:inherit;font-weight:700}.result-images{display:inline-block;position:relative}.result-images img{float:inherit;border:none;background:#084999}.result-images span a{display:none;color:#FFF}.result-images:hover span a{display:block;position:absolute;bottom:0;right:0;padding:4px;margin:0 0 4px 4px;background-color:rgba(0,0,0,.6);font-size:.7em}.torrent_result{border-left:10px solid #d3d3d3;padding-left:3px}#answers,#backToTop,#sidebar .infobox{border:1px solid #ddd;box-shadow:0 0 5px #CCC}.torrent_result p{margin:3px;font-size:.8em}.torrent_result a{color:#084999}.torrent_result a:hover{text-decoration:underline}.torrent_result a:visited{color:#684898}#results{margin:2em 2em 20px;padding:0;width:50em}#suggestions .wrapper{display:flex;flex-flow:row wrap;justify-content:flex-end}#suggestions .wrapper form{display:inline-block;flex:1 1 50%}#answers,#corrections,#suggestions{max-width:50em}#answers input,#corrections input,#infoboxes input,#suggestions input{padding:0;margin:3px;font-size:.9em;display:inline-block;background:0 0;color:#444;cursor:pointer}#answers .infobox .url a,#answers input[type=submit],#corrections .infobox .url a,#corrections input[type=submit],#infoboxes .infobox .url a,#infoboxes input[type=submit],#suggestions .infobox .url a,#suggestions input[type=submit]{color:#084999;text-decoration:none;font-size:.9rem}#answers .infobox .url a:hover,#answers input[type=submit]:hover,#corrections .infobox .url a:hover,#corrections input[type=submit]:hover,#infoboxes .infobox .url a:hover,#infoboxes input[type=submit]:hover,#suggestions .infobox .url a:hover,#suggestions input[type=submit]:hover{text-decoration:underline}#corrections{display:flex;flex-flow:row wrap;margin:1em 0}#corrections h4,#corrections input[type=submit]{display:inline-block;margin:0 .5em 0 0}#corrections input[type=submit]::after{content:", "}#apis .title,#search_url .title,#suggestions .title{margin:2em 0 .5em;color:#444}#answers{margin:10px 8px;padding:.9em}#answers h4{display:none}#answers .answer{display:block;font-size:1.2em;font-weight:700}#answers form,#infoboxes form{min-width:210px}#sidebar{position:absolute;top:100px;left:57em;margin:0 2px 5px 5px;padding:0 2px 2px;max-width:25em;word-wrap:break-word}#sidebar .infobox{margin:10px 0;padding:.9em;font-size:.9em}#sidebar .infobox h2{margin:0 0 .5em}#sidebar .infobox img{max-width:100%;max-height:12em;display:block;margin:0;padding:0}#sidebar .infobox dl{margin:.5em 0}#sidebar .infobox dt{display:inline;margin:.5em .25em .5em 0;padding:0;font-weight:700}#sidebar .infobox dd{display:inline;margin:.5em 0;padding:0}#apis,#search_url{margin-top:8px}#sidebar .infobox input{font-size:1em}#search_url div.selectable_url pre{width:200em}#linkto_preferences{position:absolute;right:10px;top:.9em;padding:0;border:0;display:block;font-size:1.2em;color:#222}#linkto_preferences a:active *,#linkto_preferences a:hover *,#linkto_preferences a:link *,#linkto_preferences a:visited *{color:#222}#backToTop{margin:0 0 0 2em;padding:0;font-size:1em;background:#fff;position:fixed;bottom:85px;left:50em;transition:opacity .5s;opacity:0}#backToTop a{display:block;margin:0;padding:.6em}@media screen and (max-width:75em){#main_about,#main_preferences,#main_stats{margin:.5em;width:auto}#answers,#suggestions{margin-top:1em}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em;margin:.5em .5em .5em 0}#sidebar{position:static;max-width:50em;margin:0 0 2px;padding:0;float:none;border:none;width:auto}.image_result,.image_result img,.result .thumbnail{max-width:98%}#sidebar input{border:0}#apis,#search_url{display:none}.result{border-bottom:1px solid #E8E7E6;margin:0;padding-top:8px;padding-bottom:6px}.result h3{margin:0 0 1px}.result .url span.url{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}.result .url a{float:right;padding:0 .5em}.result .engines{float:right;padding:0 0 3px}.result-images{border-bottom:none!important}}#main_results div#results.only_template_images{flex-direction:column;width:auto;display:flex}#main_results div#results.only_template_images #sidebar{position:relative;top:auto;order:2}#main_results div#results.only_template_images #urls{position:relative;order:1}#main_results div#results.only_template_images #backToTop{right:.5em;left:auto}#main_results div#results.only_template_images #pagination{position:relative;order:3}@media screen and (max-width:50em){article[data-vim-selected]::before{display:none;content:""}#linkto_preferences{display:none;postion:fixed!important;top:100px;right:0}#sidebar{margin:0 5px 2px}#corrections{margin:1em 5px}#results{margin:0;padding:0;width:initial}#backToTop{left:40em;bottom:35px}.result{padding:8px 10px 6px}.result-images{margin:0;padding:0;border:none}}@media screen and (max-width:35em){.result-videos img.thumbnail{float:none!important}.result-videos .content{overflow:inherit}}
\ No newline at end of file diff --git a/searx/static/themes/simple/fonts/ion.css b/searx/static/themes/simple/fonts/ion.css new file mode 100644 index 000000000..ebf6c6259 --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.css @@ -0,0 +1,139 @@ +/* Generated by grunt-webfont */ + + +@font-face { + font-family:"ion"; + src:url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51"); + src:url("../fonts/ion.eot?#iefix") format("embedded-opentype"), + url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), + url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), + url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), + url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + font-weight:normal; + font-style:normal; +} + +.ion-icon { + + font-family:"ion"; + + display:inline-block; + vertical-align:middle; + line-height:1; + font-weight:normal; + font-style:normal; + speak:none; + text-decoration:inherit; + text-transform:none; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; +} + + +/* Icons */ + + +.ion-navicon-round:before { + content:"\f101"; +} + + +.ion-search:before { + content:"\f102"; +} + + +.ion-play:before { + content:"\f103"; +} + + +.ion-link:before { + content:"\f104"; +} + + +.ion-chevron-up:before { + content:"\f105"; +} + + +.ion-chevron-left:before { + content:"\f106"; +} + + +.ion-chevron-right:before { + content:"\f107"; +} + + +.ion-arrow-down-a:before { + content:"\f108"; +} + + +.ion-arrow-up-a:before { + content:"\f109"; +} + + +.ion-arrow-swap:before { + content:"\f10a"; +} + + +.ion-arrow-dropdown:before { + content:"\f10b"; +} + + +.ion-globe:before { + content:"\f10c"; +} + + +.ion-time:before { + content:"\f10d"; +} + + +.ion-location:before { + content:"\f10e"; +} + + +.ion-warning:before { + content:"\f10f"; +} + + +.ion-error:before { + content:"\f110"; +} + + +.ion-film-outline:before { + content:"\f111"; +} + + +.ion-music-note:before { + content:"\f112"; +} + + +.ion-more-vertical:before { + content:"\f113"; +} + + +.ion-magnet:before { + content:"\f114"; +} + + +.ion-close:before { + content:"\f115"; +} diff --git a/searx/static/themes/simple/fonts/ion.eot b/searx/static/themes/simple/fonts/ion.eot Binary files differnew file mode 100644 index 000000000..96b3ee98c --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.eot diff --git a/searx/static/themes/simple/fonts/ion.html b/searx/static/themes/simple/fonts/ion.html new file mode 100644 index 000000000..d92237994 --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.html @@ -0,0 +1,268 @@ +<!doctype html> +<html> + <head> + <meta charset="utf-8"> + <title>ion</title> + <style> + body { + margin:0; + padding:10px 20px; + background:#fff; + color:#222; + } + h1, div, footer { + font-family:"Helvetica Neue", Arial, sans-serif; + } + h1 { + margin:0 0 20px; + font-size:32px; + font-weight:normal; + } + h1 small { + font-size: 0.8em; + padding-left: 2em; + } + .icons { + margin-bottom:40px; + -webkit-column-count:5; + -moz-column-count:5; + column-count:5; + -webkit-column-gap:20px; + -moz-column-gap:20px; + column-gap:20px; + } + .icons__item, + .icons__item i { + line-height:2em; + cursor:pointer; + overflow:hidden; + } + .icons__item:hover { + color:#3c90be; + } + .icons__item i { + display:inline-block; + width:32px; + text-align:center; + } + .icons__item:hover i { + -webkit-transform:scale(1.5); + transform:scale(1.5); + } + footer { + margin-top:40px; + font-size:14px; + color:#999; + } + + /* Generated by grunt-webfont */ + + +@font-face { + font-family:"ion"; + src:url("ion.eot?ce7a0ead692560b4405a96d5b8471f51"); + src:url("ion.eot?#iefix") format("embedded-opentype"), + url("ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), + url("ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), + url("ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), + url("ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + font-weight:normal; + font-style:normal; +} + +.ion-icon { + + font-family:"ion"; + + display:inline-block; + vertical-align:middle; + line-height:1; + font-weight:normal; + font-style:normal; + speak:none; + text-decoration:inherit; + text-transform:none; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; +} + + +/* Icons */ + + +.ion-navicon-round:before { + content:"\f101"; +} + + +.ion-search:before { + content:"\f102"; +} + + +.ion-play:before { + content:"\f103"; +} + + +.ion-link:before { + content:"\f104"; +} + + +.ion-chevron-up:before { + content:"\f105"; +} + + +.ion-chevron-left:before { + content:"\f106"; +} + + +.ion-chevron-right:before { + content:"\f107"; +} + + +.ion-arrow-down-a:before { + content:"\f108"; +} + + +.ion-arrow-up-a:before { + content:"\f109"; +} + + +.ion-arrow-swap:before { + content:"\f10a"; +} + + +.ion-arrow-dropdown:before { + content:"\f10b"; +} + + +.ion-globe:before { + content:"\f10c"; +} + + +.ion-time:before { + content:"\f10d"; +} + + +.ion-location:before { + content:"\f10e"; +} + + +.ion-warning:before { + content:"\f10f"; +} + + +.ion-error:before { + content:"\f110"; +} + + +.ion-film-outline:before { + content:"\f111"; +} + + +.ion-music-note:before { + content:"\f112"; +} + + +.ion-more-vertical:before { + content:"\f113"; +} + + +.ion-magnet:before { + content:"\f114"; +} + + +.ion-close:before { + content:"\f115"; +} + + </style> + </head> + <body> + <h1>ion</h1> + + <div class="icons" id="icons"> + + <div class="icons__item" data-name="navicon-round"><i class="ion-icon ion-navicon-round"></i> ion-navicon-round</div> + + <div class="icons__item" data-name="search"><i class="ion-icon ion-search"></i> ion-search</div> + + <div class="icons__item" data-name="play"><i class="ion-icon ion-play"></i> ion-play</div> + + <div class="icons__item" data-name="link"><i class="ion-icon ion-link"></i> ion-link</div> + + <div class="icons__item" data-name="chevron-up"><i class="ion-icon ion-chevron-up"></i> ion-chevron-up</div> + + <div class="icons__item" data-name="chevron-left"><i class="ion-icon ion-chevron-left"></i> ion-chevron-left</div> + + <div class="icons__item" data-name="chevron-right"><i class="ion-icon ion-chevron-right"></i> ion-chevron-right</div> + + <div class="icons__item" data-name="arrow-down-a"><i class="ion-icon ion-arrow-down-a"></i> ion-arrow-down-a</div> + + <div class="icons__item" data-name="arrow-up-a"><i class="ion-icon ion-arrow-up-a"></i> ion-arrow-up-a</div> + + <div class="icons__item" data-name="arrow-swap"><i class="ion-icon ion-arrow-swap"></i> ion-arrow-swap</div> + + <div class="icons__item" data-name="arrow-dropdown"><i class="ion-icon ion-arrow-dropdown"></i> ion-arrow-dropdown</div> + + <div class="icons__item" data-name="globe"><i class="ion-icon ion-globe"></i> ion-globe</div> + + <div class="icons__item" data-name="time"><i class="ion-icon ion-time"></i> ion-time</div> + + <div class="icons__item" data-name="location"><i class="ion-icon ion-location"></i> ion-location</div> + + <div class="icons__item" data-name="warning"><i class="ion-icon ion-warning"></i> ion-warning</div> + + <div class="icons__item" data-name="error"><i class="ion-icon ion-error"></i> ion-error</div> + + <div class="icons__item" data-name="film-outline"><i class="ion-icon ion-film-outline"></i> ion-film-outline</div> + + <div class="icons__item" data-name="music-note"><i class="ion-icon ion-music-note"></i> ion-music-note</div> + + <div class="icons__item" data-name="more-vertical"><i class="ion-icon ion-more-vertical"></i> ion-more-vertical</div> + + <div class="icons__item" data-name="magnet"><i class="ion-icon ion-magnet"></i> ion-magnet</div> + + <div class="icons__item" data-name="close"><i class="ion-icon ion-close"></i> ion-close</div> + + </div> + + + + <h1>Usage</h1> + <pre><code><i class="ion-icon ion-<span id="name">name</span>"></i></code></pre> + + + <footer>Generated by <a href="https://github.com/sapegin/grunt-webfont">grunt-webfont</a>.</footer> + + <script> + (function() { + document.getElementById('icons').onclick = function(e) { + e = e || window.event; + var name = e.target.getAttribute('data-name') || e.target.parentNode.getAttribute('data-name'); + document.getElementById('name').innerHTML = name; + + } + })(); + </script> + </body> +</html> diff --git a/searx/static/themes/simple/fonts/ion.svg b/searx/static/themes/simple/fonts/ion.svg new file mode 100644 index 000000000..97ca930bb --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.svg @@ -0,0 +1,105 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<!-- +2018-8-11: Created with FontForge (http://fontforge.org) +--> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> +<metadata> +Created by FontForge 20170924 at Sat Aug 11 14:26:20 2018 + By alexandre,,, + +</metadata> +<defs> +<font id="ion" horiz-adv-x="512" > + <font-face + font-family="ion" + font-weight="400" + font-stretch="normal" + units-per-em="512" + panose-1="2 0 5 9 0 0 0 0 0 0" + ascent="448" + descent="-64" + bbox="27.2368 -31.9632 479.993 415.9" + underline-thickness="25.6" + underline-position="-51.2" + unicode-range="U+F101-F115" + /> + <missing-glyph /> + <glyph glyph-name="arrow-down-a" unicode="" +d="M256.5 -0.5l-192 192h112v192h160v-192h112z" /> + <glyph glyph-name="arrow-dropdown" unicode="" +d="M128 256h256l-128 -128z" /> + <glyph glyph-name="arrow-swap" unicode="" +d="M64 120c0 4.40039 3.59961 8 8 8h248v64l128 -96l-128 -96v64h-248c-4.40039 0 -8 3.59961 -8 8v48zM448 264c0 -4.40039 -3.59961 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4.40039 0 8 -3.59961 8 -8v-48z" /> + <glyph glyph-name="arrow-up-a" unicode="" +d="M256.5 383.5l192 -192h-112v-192h-160v192h-112z" /> + <glyph glyph-name="chevron-left" unicode="" +d="M213.7 192l167.2 -174.2c4.19922 -4.2998 4.09961 -11.3994 -0.200195 -15.7998l-29.9004 -30.5996c-4.2998 -4.40039 -11.2998 -4.5 -15.5 -0.200195l-204.2 212.7c-2.09961 2.19922 -3.09961 5.09961 -3 8.09961c-0.199219 2.90039 0.800781 5.90039 3 8.09961 +l204.2 212.601c4.2002 4.2998 11.2002 4.2002 15.5 -0.200195l29.9004 -30.5996c4.2998 -4.40039 4.39941 -11.5 0.200195 -15.8008l-167.2 -174.1v0v0z" /> + <glyph glyph-name="chevron-right" unicode="" +d="M298.3 192v0v0l-167.2 174.1c-4.19922 4.30078 -4.09961 11.4004 0.200195 15.8008l29.9004 30.5996c4.2998 4.40039 11.2998 4.5 15.5 0.200195l204.2 -212.7c2.19922 -2.2002 3.19922 -5.2002 3 -8.09961c0.0996094 -3 -0.900391 -5.90039 -3 -8.10059l-204.2 -212.6 +c-4.2002 -4.2998 -11.2002 -4.2002 -15.5 0.200195l-29.9004 30.5996c-4.2998 4.40039 -4.39941 11.5 -0.200195 15.7998z" /> + <glyph glyph-name="chevron-up" unicode="" +d="M256 234.3l-174.2 -167.2c-4.2998 -4.19922 -11.3994 -4.09961 -15.7998 0.200195l-30.5996 29.9004c-4.40039 4.2998 -4.5 11.2998 -0.200195 15.5l212.7 204.2c2.19922 2.09961 5.09961 3.09961 8.09961 3c2.90039 0.199219 5.90039 -0.800781 8.09961 -3l212.7 -204.2 +c4.2998 -4.2002 4.2002 -11.2002 -0.200195 -15.5l-30.5996 -29.9004c-4.40039 -4.2998 -11.5 -4.39941 -15.7998 -0.200195l-174.2 167.2v0v0z" /> + <glyph glyph-name="close" unicode="" +d="M405 311.202l-119.202 -119.202l119.202 -119.202l-29.7979 -29.7979l-119.202 119.202l-119.202 -119.202l-29.7979 29.7979l119.202 119.202l-119.202 119.202l29.7979 29.7979l119.202 -119.202l119.202 119.202z" /> + <glyph glyph-name="error" unicode="" +d="M256 400c114.4 0 208 -93.6006 208 -208s-93.5996 -208 -208 -208s-208 93.6006 -208 208s93.5996 208 208 208zM280 88v40h-48v-40h48zM280 176v128h-48v-128h48z" /> + <glyph glyph-name="film-outline" unicode="" +d="M56 360h400v-336h-400v336zM128 40v48h-56v-48h56zM128 104v48h-56v-48h56zM128 168v48h-56v-48h56zM128 232v48h-56v-48h56zM128 296v48h-56v-48h56zM368 40v144h-224v-144h224zM368 200v144h-224v-144h224zM440 40v48h-56v-48h56zM440 104v48h-56v-48h56zM440 168v48 +h-56v-48h56zM440 232v48h-56v-48h56zM440 296v48h-56v-48h56z" /> + <glyph glyph-name="globe" unicode="" +d="M256 400c114.875 0 208 -93.125 208 -208s-93.125 -208 -208 -208c-114.876 0 -208 93.125 -208 208s93.124 208 208 208zM234.451 15.001c6.04297 15.0449 19.9453 28.6484 7.27344 39.1172c-8.17285 6.75 -15.6123 13.6279 -23.1104 21.125 +c-2.47461 2.47363 -9.9082 19.7109 -8.35156 22.3916c5.10254 8.78613 5.76367 14.8613 8.12988 24.7236c2.94336 12.2627 -3.33398 15.4434 -13.3828 21.8389c-15.2256 9.68848 -28.9629 22.4844 -43.3213 33.4941c-7.11719 5.45508 -17.4365 10.0986 -20.0195 18.9521 +c-2.64062 9.05078 -3.97363 20.2598 -9.40039 28.0781c-13.9277 20.0752 -11.5791 34.9678 -9.93945 58.7627c0.449219 6.52637 -1.30371 15.6572 -2.01367 24.1748c-27.5654 -32.2354 -42.6016 -72.7891 -42.6016 -115.659c0 -47.6221 18.5439 -92.3926 52.2178 -126.067 +c28.541 -28.54 65.0557 -46.2061 104.52 -50.9316zM382.067 65.9326c23.0352 23.0381 38.9873 51.2695 46.7686 82.0527c-8.34668 -1.19141 -18.3838 2.22754 -18.3838 2.22754s-21.7363 23.707 -23.5244 44.5723c-1.85645 21.667 0.498047 38.3945 -2.89551 56.8105 +c-2.87988 15.624 -19.2803 31.5 -26.6729 46.3018c-6.9209 13.8555 -13.7334 27.7031 -20.2646 41.7451c2.25098 -0.848633 4.90039 -1.40234 6.96484 -2.62305c4.99902 0.636719 9.43066 1.22949 13.4629 1.59082c-22.5381 15.6758 -48.2725 25.8418 -75.5225 29.7998 +v-8.33887l3.55273 -9.27734l-13.7783 -12.9951l-8.67578 2.79492l-9.92383 10.2334l-9.94336 11.8008l-14.084 5.66016c-15.7236 -2.36133 -30.9346 -6.78711 -45.3105 -13.1523c0.360352 -2.30762 0.662109 -4.64453 0.662109 -7.13281 +c7.17383 2.98926 15.2764 5.04883 22.4502 8.03906c2.96289 1.23438 12.7529 -7.1748 15.6221 -8.96777c-4.0957 -4.70996 -20.5576 -15.4434 -21.3574 -21.3574c-0.316406 -2.33984 6.50586 -6.06348 6.45117 -9.69141 +c-0.0878906 -5.74609 -0.173828 -11.4912 -0.259766 -17.2373c3.24414 2.76172 20.0342 20.3672 21.9404 20.8594c12.7256 3.2832 34.3916 -17.7646 36.249 -25.1934c1.8584 -7.42871 -21.6514 -23.6826 -32.6113 -34.0469 +c-8.39941 -7.94434 -24.8086 -12.5137 -19.8037 -24.2285c1.62695 -3.80957 10.0508 -20.0156 5.21191 -24.0586c-5.92188 -4.94824 -14.7686 8.97656 -17.3418 12.0938c-8.15332 9.87695 -25.626 6.02539 -37.9082 6.47852c0 -17.4209 -0.757812 -31.1885 14.9229 -42.9971 +c15.1943 -11.4434 29.5967 -24.7061 47.0771 -32.3389c12.7637 -5.57129 35.7158 6.53613 47.0205 -1.41699c15.8672 -11.165 29.3066 -21.624 47.1611 -29.375c7.93359 -3.44531 32.418 -19.8828 25.3525 -30.7812c-4.96582 -7.66211 -9.87305 -14.8848 -13.5771 -23.2168 +c-3.70703 -8.34375 -12.5957 -18.876 -19.6924 -24.3525c-8.15918 -6.29199 -16.9551 -17.1455 -21.8955 -29.3623c34.8574 6.5957 66.9229 23.4482 92.5566 49.0811z" /> + <glyph glyph-name="link" unicode="" +d="M256.5 240h-0.5v0h0.5zM368.5 288c44.2002 0 79.5 -35.2998 79.5 -79.5v-32c0 -44.2002 -35.2998 -80.5 -79.5 -80.5h-112c-32.7002 0 -61 19.7998 -73.5996 48c-4.40039 10 -6.90039 21 -6.90039 32.5v31.5h48v-31.5c0 -17.5996 14.9004 -32.5 32.5 -32.5h112 +c17.5996 0 31.5 14.9004 31.5 32.5v32c0 17.5996 -13.9004 31.5 -31.5 31.5h-0.5h-16.4004c-5.59961 31 -31.5996 48 -31.5996 48h48.5zM329.6 240c4.10059 -9.59961 6.40039 -20.2998 6.40039 -31.5v-32v-0.5h-48v0.5v32c0 17.5996 -13.9004 31.5 -31.5 31.5h-0.5h-111.5 +c-17.5996 0 -32.5 -13.9004 -32.5 -31.5v-32c0 -17.5996 14.9004 -32.5 32.5 -32.5h15.4004c6.2998 -31 32.0996 -48 32.0996 -48h-47.5c-44.2002 0 -80.5 36.2998 -80.5 80.5v32c0 44.2002 36.2998 79.5 80.5 79.5h112c33 0 61 -19.7002 73.0996 -48z" /> + <glyph glyph-name="location" unicode="" +d="M256 384c65.9004 0 119.3 -53.7002 119.3 -120c0 -114.6 -119.3 -264 -119.3 -264s-119.3 149.4 -119.3 264c0 66.2998 53.3994 120 119.3 120zM256 205.8c31.2002 0 56.4004 25.4004 56.4004 56.7002c0 31.4004 -25.2002 56.7998 -56.4004 56.7998 +c-31.0996 0 -56.4004 -25.5 -56.4004 -56.7998s25.2002 -56.7002 56.4004 -56.7002z" /> + <glyph glyph-name="magnet" unicode="" +d="M27.7061 117.644h86.2139v-67.7236h-86.2256zM184.326 327c0 -0.199219 0.166992 -0.366211 0.367188 -0.366211c27.7676 0 67.3604 -3.08398 67.3604 -42.7246v-141.625c0 -0.197266 0.163086 -0.362305 0.358398 -0.366211 +c28.75 -0.636719 57.4912 0.0107422 86.2236 0c0.208984 -0.000976562 0.366211 0.183594 0.367188 0.364258c0.238281 50.8672 0 101.591 0 150.867c-0.250977 43.4795 -13.5273 70.627 -43.2588 92.6426c-33.1963 25.7178 -71.71 27.2451 -112.575 27.3818 +c-40.8711 -0.136719 -79.3877 -1.66406 -112.583 -27.3818c-29.7207 -22.0166 -42.9971 -49.1611 -43.248 -92.6445c0 -49.2715 -0.227539 -99.999 0 -150.876c0.000976562 -0.208984 0.185547 -0.365234 0.367188 -0.365234c28.7324 0.0224609 57.4854 -0.625 86.2236 0 +c0.196289 0.00390625 0.358398 0.170898 0.358398 0.366211v141.625c0 39.6406 39.6045 42.7363 67.3604 42.7363c0.200195 0 0.367188 0.166992 0.367188 0.366211s-0.166992 0.366211 -0.367188 0.366211c-27.6299 0 -68.0938 -3.06348 -68.0938 -43.4688v-141.266 +c-28.2832 -0.604492 -56.9688 0.0244141 -85.4844 0.0078125c-0.223633 50.5547 0.00195312 101.386 0.00195312 150.508c0.249023 43.3125 13.4043 70.168 42.957 92.0605c32.9863 25.5547 71.2646 27.0957 112.144 27.2324 +c40.8623 -0.136719 79.1436 -1.67773 112.13 -27.2324c29.5645 -21.8926 42.7188 -48.7461 42.9678 -92.0625c0 -49.1631 0.238281 -99.6865 0.00195312 -150.495c-28.3008 0.00585938 -56.9746 -0.62793 -85.4844 -0.0078125v141.267 +c0 40.4043 -40.4521 43.457 -68.0938 43.457c-0.200195 0 -0.367188 -0.166992 -0.367188 -0.366211zM184.692 327.005c27.7061 0 67.7236 -3.07227 67.7236 -43.1006v-141.615c28.7422 -0.639648 57.4834 0.0117188 86.2256 0c0.232422 50.8633 0 101.586 0 150.854 +c-0.255859 43.4033 -13.4746 70.3994 -43.1133 92.3574c-33.0938 25.6348 -71.4932 27.1709 -112.36 27.3105c-40.8672 -0.139648 -79.2666 -1.67578 -112.36 -27.3105c-29.6377 -21.958 -42.8574 -48.9541 -43.1016 -92.3574c0 -49.2686 -0.232422 -99.9912 0 -150.866 +c28.7422 0.0234375 57.4834 -0.62793 86.2139 0v141.615c0 40.0293 40.0293 43.1123 67.7236 43.1123zM252.463 117.644h86.2021v-67.7236h-86.2021v67.7236z" /> + <glyph glyph-name="more-vertical" unicode="" +d="M296 312c0 -22.002 -17.998 -40 -40 -40s-40 17.998 -40 40s17.998 40 40 40s40 -17.998 40 -40zM296 72c0 -22.002 -17.998 -40 -40 -40s-40 17.998 -40 40s17.998 40 40 40s40 -17.998 40 -40zM296 192c0 -22.002 -17.998 -40 -40 -40s-40 17.998 -40 40 +s17.998 40 40 40s40 -17.998 40 -40z" /> + <glyph glyph-name="music-note" unicode="" +d="M426 415.9c12.0996 0 22 -9.5 22.0996 -21.2002v-302.8c0 -24.7002 -3 -42.9004 -12 -54.9004h-0.199219c-9.10059 -15 -25 -21 -43.2002 -21h-37.2002c-28.2998 0 -51.2002 19.9004 -51.2002 48s22.9004 48 51.2002 48h60.5v192l-208 -38v-232 +c0 -8.2998 -3.40039 -27 -13 -41.0996c-1 -1.80078 -2.09961 -3.40039 -3.40039 -5c-0.5 -0.600586 -0.899414 -1.5 -1.5 -2.10059c-0.0996094 -0.0996094 -0.299805 -0.0996094 -0.399414 -0.200195c-9.40039 -10.5996 -23 -17.5 -38.2998 -17.5h-36.2002 +c-28.2002 0 -51.2998 20 -51.2998 48s23.0996 48 51.0996 48v-0.0996094h61v286.5c1 14.5 13.5 27.9004 27.2998 31.5996l217.601 33.2002s2.89941 0.600586 5.09961 0.600586z" /> + <glyph glyph-name="navicon-round" unicode="" +d="M417.4 224c16.8994 0 30.5996 -14.2998 30.5996 -32s-13.7002 -32 -30.5996 -32h-322.801c-16.8994 0 -30.5996 14.2998 -30.5996 32s13.7002 32 30.5996 32h322.801zM417.4 352c16.8994 0 30.5996 -14.2998 30.5996 -32s-13.7002 -32 -30.5996 -32h-322.801 +c-16.8994 0 -30.5996 14.2998 -30.5996 32s13.7002 32 30.5996 32h322.801zM417.4 96c16.8994 0 30.5996 -14.2998 30.5996 -32s-13.7002 -32 -30.5996 -32h-322.801c-16.8994 0 -30.5996 14.2998 -30.5996 32s13.7002 32 30.5996 32h322.801z" /> + <glyph glyph-name="play" unicode="" +d="M405.2 215.1c6.59961 -5.59961 10.7998 -13.7998 10.7998 -23.0996s-4.2002 -17.5996 -10.7998 -23.0996l-278.101 -165.5c-3.69922 -2 -7.09961 -3.40039 -11.1992 -3.40039c-10.9004 0 -19.8008 9 -19.8008 20h-0.0996094v344h0.0996094c0 11 8.90039 20 19.8008 20 +c4 0 7.5 -1.2002 10.8994 -3.2002z" /> + <glyph glyph-name="search" unicode="" +d="M445 61.2998c4 -4 4 -10.3994 0 -14.5l-43.2998 -43.7998c-1.90039 -2 -4.60059 -3.09961 -7.2998 -3.09961c-2.7002 0 -5.40039 1.19922 -7.30078 3.09961l-84.3994 85.5996c-24.6006 -14.6992 -52.2002 -22.3994 -80.1006 -22.3994 +c-87.3994 0 -158.6 71.2998 -158.6 158.899c0 87.6006 71.2002 158.9 158.6 158.9c87.4004 0 158.601 -71.2998 158.601 -158.9c0 -27 -7.2002 -53.7998 -21 -77.8994zM222.6 322.1c-53.3994 0 -96.7998 -43.5 -96.7998 -97s43.4004 -97 96.7998 -97 +c53.4004 0 96.8008 43.5 96.8008 97s-43.4004 97 -96.8008 97z" /> + <glyph glyph-name="time" unicode="" +d="M256 405c117.149 0 213 -95.8506 213 -213s-94.7891 -213 -213 -213s-213 95.8506 -213 213s94.7891 213 213 213zM256 21.5996c93.7178 0 170.4 76.6826 170.4 170.4s-76.6826 170.4 -170.4 170.4s-170.4 -76.6836 -170.4 -170.4s76.6826 -170.4 170.4 -170.4z +M266.65 298.5v-111.824l95.8496 -56.4434l-15.9746 -26.625l-111.825 67.0928v127.8h31.9502z" /> + <glyph glyph-name="warning" unicode="" +d="M476.7 25.7998c2.7998 -4.89941 4.7998 -13 1.7998 -17.8994c-2.90039 -4.90039 -8.2002 -7.90039 -14 -7.90039h-417.1c-5.80078 0 -11.1006 3 -14 7.90039c-2.90039 4.89941 -0.900391 12.8994 1.89941 17.8994l206.601 349.5c2.7998 5 8.19922 8.7002 14.0996 8.7002 +c5.7998 0 11.2002 -3.7002 14.0996 -8.7002zM288 48v48h-64v-48h64zM288 128v144h-64v-144h64z" /> + </font> +</defs></svg> diff --git a/searx/static/themes/simple/fonts/ion.ttf b/searx/static/themes/simple/fonts/ion.ttf Binary files differnew file mode 100644 index 000000000..ccc5482b5 --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.ttf diff --git a/searx/static/themes/simple/fonts/ion.woff b/searx/static/themes/simple/fonts/ion.woff Binary files differnew file mode 100644 index 000000000..0b7fe877a --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.woff diff --git a/searx/static/themes/simple/fonts/ion.woff2 b/searx/static/themes/simple/fonts/ion.woff2 Binary files differnew file mode 100644 index 000000000..30b902da2 --- /dev/null +++ b/searx/static/themes/simple/fonts/ion.woff2 diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js new file mode 100644 index 000000000..c372ec730 --- /dev/null +++ b/searx/static/themes/simple/gruntfile.js @@ -0,0 +1,161 @@ +module.exports = function(grunt) { + + const path = require('path'); + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + watch: { + scripts: { + files: ['<%= jshint.files %>', 'less/*.less'], + tasks: ['jshint', 'concat', 'uglify', 'webfont', 'less:development', 'less:production'] + } + }, + jshint: { + files: ['js/searx_src/*.js', 'js/searx_header/*.js'], + options: { + reporterOutput: "", + proto: true, + // options here to override JSHint defaults + globals: { + browser: true, + jQuery: false, + devel: true + } + } + }, + concat: { + head_and_body: { + options: { + separator: ';' + }, + files: { + 'js/searx.head.js': ['js/searx_head/*.js'], + 'js/searx.js': ['js/searx_src/*.js'] + } + } + }, + uglify: { + options: { + banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n', + output: { + comments: 'some' + }, + ie8: false, + warnings: true, + compress: false, + mangle: true, + sourceMap: true + }, + dist: { + files: { + 'js/searx.head.min.js': ['js/searx.head.js'], + 'js/searx.min.js': ['js/searx.js'] + } + } + }, + less: { + development: { + options: { + paths: ["less"], + banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + }, + files: { + "css/searx.css": "less/style.less", + "css/searx-rtl.css": "less/style-rtl.less" + } + }, + production: { + options: { + paths: ["less"], + plugins: [ + new (require('less-plugin-clean-css'))({ + advanced: true, + compatibility: '*' + }) + ], + banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + }, + files: { + "css/searx.min.css": "less/style.less", + "css/searx-rtl.min.css": "less/style-rtl.less" + } + }, + }, + webfont: { + icons: { + // src: 'node_modules/ionicons-npm/src/*.svg', + src: [ + 'node_modules/ionicons-npm/src/navicon-round.svg', + 'node_modules/ionicons-npm/src/search.svg', + 'node_modules/ionicons-npm/src/play.svg', + 'node_modules/ionicons-npm/src/link.svg', + 'node_modules/ionicons-npm/src/chevron-up.svg', + 'node_modules/ionicons-npm/src/chevron-left.svg', + 'node_modules/ionicons-npm/src/chevron-right.svg', + 'node_modules/ionicons-npm/src/arrow-down-a.svg', + 'node_modules/ionicons-npm/src/arrow-up-a.svg', + 'node_modules/ionicons-npm/src/arrow-swap.svg', + 'node_modules/ionicons-npm/src/telephone.svg', + 'node_modules/ionicons-npm/src/android-arrow-dropdown.svg', + 'node_modules/ionicons-npm/src/android-globe.svg', + 'node_modules/ionicons-npm/src/android-time.svg', + 'node_modules/ionicons-npm/src/location.svg', + 'node_modules/ionicons-npm/src/alert-circled.svg', + 'node_modules/ionicons-npm/src/android-alert.svg', + 'node_modules/ionicons-npm/src/ios-film-outline.svg', + 'node_modules/ionicons-npm/src/music-note.svg', + 'node_modules/ionicons-npm/src/ion-close-round.svg', + 'node_modules/ionicons-npm/src/android-more-vertical.svg', + 'magnet.svg', + 'node_modules/ionicons-npm/src/android-close.svg', + ], + dest: 'fonts', + destLess: 'less', + options: { + font: 'ion', + hashes : true, + syntax: 'bem', + styles : 'font,icon', + types : 'eot,woff2,woff,ttf,svg', + order : 'eot,woff2,woff,ttf,svg', + stylesheets : ['css', 'less'], + relativeFontPath : '../fonts/', + autoHint : false, + normalize : false, + // ligatures : true, + optimize : true, + // fontHeight : 400, + rename : function(name) { + basename = path.basename(name); + if (basename === 'android-alert.svg') { + return 'error.svg'; + } + if (basename === 'alert-circled.svg') { + return 'warning.svg'; + } + if (basename === 'ion-close-round.svg') { + return 'close.svg'; + } + return basename.replace(/(ios|md|android)-/i, ''); + }, + templateOptions: { + baseClass: 'ion-icon', + classPrefix: 'ion-' + } + } + } + } + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + grunt.loadNpmTasks('grunt-webfont'); + + grunt.registerTask('test', ['jshint']); + + grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less:development', 'less:production']); +}; diff --git a/searx/static/themes/simple/img/favicon.png b/searx/static/themes/simple/img/favicon.png Binary files differnew file mode 100644 index 000000000..36be5fc01 --- /dev/null +++ b/searx/static/themes/simple/img/favicon.png diff --git a/searx/static/themes/simple/img/logo_searx_a.png b/searx/static/themes/simple/img/logo_searx_a.png Binary files differnew file mode 100644 index 000000000..2db081710 --- /dev/null +++ b/searx/static/themes/simple/img/logo_searx_a.png diff --git a/searx/static/themes/simple/img/searx.png b/searx/static/themes/simple/img/searx.png Binary files differnew file mode 100644 index 000000000..98538da3a --- /dev/null +++ b/searx/static/themes/simple/img/searx.png diff --git a/searx/static/themes/simple/img/searx_logo.svg b/searx/static/themes/simple/img/searx_logo.svg new file mode 100644 index 000000000..67a2d4588 --- /dev/null +++ b/searx/static/themes/simple/img/searx_logo.svg @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="searx_logo.svg" + inkscape:export-filename="/home/a/magnif.png" + inkscape:export-xdpi="203.1774" + inkscape:export-ydpi="203.1774"> + <defs + id="defs4"> + <linearGradient + inkscape:collect="always" + id="linearGradient3857"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3859" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3861" /> + </linearGradient> + <linearGradient + id="linearGradient3790"> + <stop + style="stop-color:#a9a9a9;stop-opacity:1;" + offset="0" + id="stop3792" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="1" + id="stop3794" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3790" + id="radialGradient3798" + cx="294.45947" + cy="208.37973" + fx="294.45947" + fy="208.37973" + r="107.58125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3857" + id="linearGradient3865" + x1="120.68947" + y1="239.61774" + x2="120.68947" + y2="602.17517" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3790" + id="linearGradient3912" + x1="186.74416" + y1="354.42426" + x2="255.84358" + y2="254.35953" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" /> + <filter + inkscape:collect="always" + id="filter4024" + x="-0.12996517" + width="1.2599303" + y="-0.14709377" + height="1.2941875"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="6.4759344" + id="feGaussianBlur4026" /> + </filter> + <filter + inkscape:collect="always" + id="filter3983" + x="-1.0608404" + width="3.1216809" + y="-0.31017202" + height="1.620344"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="9.392858" + id="feGaussianBlur3985" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="30.708726" + inkscape:cy="948.08556" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1364" + inkscape:window-height="663" + inkscape:window-x="0" + inkscape:window-y="30" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z" + id="path3814-0-7" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z" + id="path3814-0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z" + id="rect3804" /> + <path + sodipodi:type="arc" + style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2987" + sodipodi:cx="294.45947" + sodipodi:cy="208.37973" + sodipodi:rx="107.58125" + sodipodi:ry="107.58125" + d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z" + transform="translate(-107.07617,-60.609153)" /> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3757" + sodipodi:cx="131.82491" + sodipodi:cy="299.29346" + sodipodi:rx="101.52033" + sodipodi:ry="101.52033" + d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z" + transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" /> + <path + sodipodi:type="arc" + style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3800" + sodipodi:cx="183.34268" + sodipodi:cy="156.35687" + sodipodi:rx="27.274118" + sodipodi:ry="27.274118" + d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z" + transform="translate(5,-7.1428572)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3802" + sodipodi:cx="197.9899" + sodipodi:cy="203.32896" + sodipodi:rx="5.5558391" + sodipodi:ry="5.5558391" + d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z" + transform="translate(1.4847712,-63.564549)" /> + <rect + style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)" + id="rect3916" + width="2.2392972" + height="159.43797" + x="19.525793" + y="337.8396" + rx="2.8666623" + ry="9.0007057" + transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" /> + </g> +</svg> diff --git a/searx/static/themes/simple/js/searx.head.js b/searx/static/themes/simple/js/searx.head.js new file mode 100644 index 000000000..3ac61c8ae --- /dev/null +++ b/searx/static/themes/simple/js/searx.head.js @@ -0,0 +1,40 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2019 by Alexandre Flament +* +*/ +(function(w, d) { + 'use strict'; + + // add data- properties + var script = d.currentScript || (function() { + var scripts = d.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + // try to detect touch screen + w.searx = { + touch: (("ontouchstart" in w) || w.DocumentTouch && document instanceof DocumentTouch) || false, + method: script.getAttribute('data-method'), + autocompleter: script.getAttribute('data-autocompleter') === 'true', + search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true', + infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true', + static_path: script.getAttribute('data-static-path'), + no_item_found: script.getAttribute('data-no-item-found') + } + + // update the css + d.getElementsByTagName("html")[0].className = (w.searx.touch)?"js touch":"js"; +})(window, document);
\ No newline at end of file diff --git a/searx/static/themes/simple/js/searx.head.min.js b/searx/static/themes/simple/js/searx.head.min.js new file mode 100644 index 000000000..00c711c79 --- /dev/null +++ b/searx/static/themes/simple/js/searx.head.min.js @@ -0,0 +1,4 @@ +/*! simple/searx.min.js | 06-08-2019 | https://github.com/asciimoo/searx */ + +(function(t,e){"use strict";var a=e.currentScript||function(){var t=e.getElementsByTagName("script");return t[t.length-1]}();t.searx={touch:"ontouchstart"in t||t.DocumentTouch&&document instanceof DocumentTouch||false,method:a.getAttribute("data-method"),autocompleter:a.getAttribute("data-autocompleter")==="true",search_on_category_select:a.getAttribute("data-search-on-category-select")==="true",infinite_scroll:a.getAttribute("data-infinite-scroll")==="true",static_path:a.getAttribute("data-static-path"),no_item_found:a.getAttribute("data-no-item-found")};e.getElementsByTagName("html")[0].className=t.searx.touch?"js touch":"js"})(window,document); +//# sourceMappingURL=searx.head.min.js.map
\ No newline at end of file diff --git a/searx/static/themes/simple/js/searx.head.min.js.map b/searx/static/themes/simple/js/searx.head.min.js.map new file mode 100644 index 000000000..d19ad5a44 --- /dev/null +++ b/searx/static/themes/simple/js/searx.head.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["searx.head.js"],"names":["w","d","script","currentScript","scripts","getElementsByTagName","length","searx","touch","DocumentTouch","document","method","getAttribute","autocompleter","search_on_category_select","infinite_scroll","static_path","no_item_found","className","window"],"mappings":";;CAiBA,SAAUA,EAAGC,GACT,aAGA,IAAIC,EAASD,EAAEE,eAAkB,WAC7B,IAAIC,EAAUH,EAAEI,qBAAqB,UACrC,OAAOD,EAAQA,EAAQE,OAAS,GAFH,GAMjCN,EAAEO,MAAQ,CACNC,MAAS,iBAAkBR,GAAMA,EAAES,eAAiBC,oBAAoBD,eAAkB,MAC1FE,OAAQT,EAAOU,aAAa,eAC5BC,cAAeX,EAAOU,aAAa,wBAA0B,OAC7DE,0BAA2BZ,EAAOU,aAAa,oCAAsC,OACrFG,gBAAiBb,EAAOU,aAAa,0BAA4B,OACjEI,YAAad,EAAOU,aAAa,oBACjCK,cAAef,EAAOU,aAAa,uBAIvCX,EAAEI,qBAAqB,QAAQ,GAAGa,UAAalB,EAAEO,MAAW,MAAE,WAAW,MArB7E,CAsBGY,OAAQT","file":"searx.head.min.js"}
\ No newline at end of file diff --git a/searx/static/themes/simple/js/searx.js b/searx/static/themes/simple/js/searx.js new file mode 100644 index 000000000..e191f2487 --- /dev/null +++ b/searx/static/themes/simple/js/searx.js @@ -0,0 +1,1573 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +* +*/ +window.searx = (function(w, d) { + + 'use strict'; + + // not invented here tookit with bugs fixed elsewhere + // purposes : be just good enough and as small as possible + + // from https://plainjs.com/javascript/events/live-binding-event-handlers-14/ + if (w.Element) { + (function(ElementPrototype) { + ElementPrototype.matches = ElementPrototype.matches || + ElementPrototype.matchesSelector || + ElementPrototype.webkitMatchesSelector || + ElementPrototype.msMatchesSelector || + function(selector) { + var node = this, nodes = (node.parentNode || node.document).querySelectorAll(selector), i = -1; + while (nodes[++i] && nodes[i] != node); + return !!nodes[i]; + }; + })(Element.prototype); + } + + function callbackSafe(callback, el, e) { + try { + callback.call(el, e); + } catch (exception) { + console.log(exception); + } + } + + var searx = window.searx || {}; + + searx.on = function(obj, eventType, callback, useCapture) { + useCapture = useCapture || false; + if (typeof obj !== 'string') { + // obj HTMLElement, HTMLDocument + obj.addEventListener(eventType, callback, useCapture); + } else { + // obj is a selector + d.addEventListener(eventType, function(e) { + var el = e.target || e.srcElement, found = false; + while (el && el.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement; + if (found) callbackSafe(callback, el, e); + }, useCapture); + } + }; + + searx.ready = function(callback) { + if (document.readyState != 'loading') { + callback.call(w); + } else { + w.addEventListener('DOMContentLoaded', callback.bind(w)); + } + }; + + searx.http = function(method, url, callback) { + var req = new XMLHttpRequest(), + resolve = function() {}, + reject = function() {}, + promise = { + then: function(callback) { resolve = callback; return promise; }, + catch: function(callback) { reject = callback; return promise; } + }; + + try { + req.open(method, url, true); + + // On load + req.onload = function() { + if (req.status == 200) { + resolve(req.response, req.responseType); + } else { + reject(Error(req.statusText)); + } + }; + + // Handle network errors + req.onerror = function() { + reject(Error("Network Error")); + }; + + req.onabort = function() { + reject(Error("Transaction is aborted")); + }; + + // Make the request + req.send(); + } catch (ex) { + reject(ex); + } + + return promise; + }; + + searx.loadStyle = function(src) { + var path = searx.static_path + src, + id = "style_" + src.replace('.', '_'), + s = d.getElementById(id); + if (s === null) { + s = d.createElement('link'); + s.setAttribute('id', id); + s.setAttribute('rel', 'stylesheet'); + s.setAttribute('type', 'text/css'); + s.setAttribute('href', path); + d.body.appendChild(s); + } + }; + + searx.loadScript = function(src, callback) { + var path = searx.static_path + src, + id = "script_" + src.replace('.', '_'), + s = d.getElementById(id); + if (s === null) { + s = d.createElement('script'); + s.setAttribute('id', id); + s.setAttribute('src', path); + s.onload = callback; + s.onerror = function() { + s.setAttribute('error', '1'); + }; + d.body.appendChild(s); + } else if (!s.hasAttribute('error')) { + try { + callback.apply(s, []); + } catch (exception) { + console.log(exception); + } + } else { + console.log("callback not executed : script '" + path + "' not loaded."); + } + }; + + searx.insertBefore = function (newNode, referenceNode) { + element.parentNode.insertBefore(newNode, referenceNode); + }; + + searx.insertAfter = function(newNode, referenceNode) { + referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); + }; + + searx.on('.close', 'click', function(e) { + var el = e.target || e.srcElement; + this.parentNode.classList.add('invisible'); + }); + + return searx; +})(window, document); +;(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +/* + * @license MIT + * + * Autocomplete.js v2.6.3 + * Developed by Baptiste Donaux + * http://autocomplete-js.com + * + * (c) 2017, Baptiste Donaux + */ +"use strict"; +var ConditionOperator; +(function (ConditionOperator) { + ConditionOperator[ConditionOperator["AND"] = 0] = "AND"; + ConditionOperator[ConditionOperator["OR"] = 1] = "OR"; +})(ConditionOperator || (ConditionOperator = {})); +var EventType; +(function (EventType) { + EventType[EventType["KEYDOWN"] = 0] = "KEYDOWN"; + EventType[EventType["KEYUP"] = 1] = "KEYUP"; +})(EventType || (EventType = {})); +/** + * Core + * + * @class + * @author Baptiste Donaux <baptiste.donaux@gmail.com> @baptistedonaux + */ +var AutoComplete = (function () { + // Constructor + function AutoComplete(params, selector) { + if (params === void 0) { params = {}; } + if (selector === void 0) { selector = "[data-autocomplete]"; } + if (Array.isArray(selector)) { + selector.forEach(function (s) { + new AutoComplete(params, s); + }); + } + else if (typeof selector == "string") { + var elements = document.querySelectorAll(selector); + Array.prototype.forEach.call(elements, function (input) { + new AutoComplete(params, input); + }); + } + else { + var specificParams = AutoComplete.merge(AutoComplete.defaults, params, { + DOMResults: document.createElement("div") + }); + AutoComplete.prototype.create(specificParams, selector); + return specificParams; + } + } + AutoComplete.prototype.create = function (params, element) { + params.Input = element; + if (params.Input.nodeName.match(/^INPUT$/i) && (params.Input.hasAttribute("type") === false || params.Input.getAttribute("type").match(/^TEXT|SEARCH$/i))) { + params.Input.setAttribute("autocomplete", "off"); + params._Position(params); + params.Input.parentNode.appendChild(params.DOMResults); + params.$Listeners = { + blur: params._Blur.bind(params), + destroy: AutoComplete.prototype.destroy.bind(null, params), + focus: params._Focus.bind(params), + keyup: AutoComplete.prototype.event.bind(null, params, EventType.KEYUP), + keydown: AutoComplete.prototype.event.bind(null, params, EventType.KEYDOWN), + position: params._Position.bind(params) + }; + for (var event in params.$Listeners) { + params.Input.addEventListener(event, params.$Listeners[event]); + } + } + }; + AutoComplete.prototype.getEventsByType = function (params, type) { + var mappings = {}; + for (var key in params.KeyboardMappings) { + var event = EventType.KEYUP; + if (params.KeyboardMappings[key].Event !== undefined) { + event = params.KeyboardMappings[key].Event; + } + if (event == type) { + mappings[key] = params.KeyboardMappings[key]; + } + } + return mappings; + }; + AutoComplete.prototype.event = function (params, type, event) { + var eventIdentifier = function (condition) { + if ((match === true && mapping.Operator == ConditionOperator.AND) || (match === false && mapping.Operator == ConditionOperator.OR)) { + condition = AutoComplete.merge({ + Not: false + }, condition); + if (condition.hasOwnProperty("Is")) { + if (condition.Is == event.keyCode) { + match = !condition.Not; + } + else { + match = condition.Not; + } + } + else if (condition.hasOwnProperty("From") && condition.hasOwnProperty("To")) { + if (event.keyCode >= condition.From && event.keyCode <= condition.To) { + match = !condition.Not; + } + else { + match = condition.Not; + } + } + } + }; + for (var name in AutoComplete.prototype.getEventsByType(params, type)) { + var mapping = AutoComplete.merge({ + Operator: ConditionOperator.AND + }, params.KeyboardMappings[name]), match = ConditionOperator.AND == mapping.Operator; + mapping.Conditions.forEach(eventIdentifier); + if (match === true) { + mapping.Callback.call(params, event); + } + } + }; + AutoComplete.prototype.makeRequest = function (params, callback) { + var propertyHttpHeaders = Object.getOwnPropertyNames(params.HttpHeaders), request = new XMLHttpRequest(), method = params._HttpMethod(), url = params._Url(), queryParams = params._Pre(), queryParamsStringify = encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(queryParams); + if (method.match(/^GET$/i)) { + if (url.indexOf("?") !== -1) { + url += "&" + queryParamsStringify; + } + else { + url += "?" + queryParamsStringify; + } + } + request.open(method, url, true); + for (var i = propertyHttpHeaders.length - 1; i >= 0; i--) { + request.setRequestHeader(propertyHttpHeaders[i], params.HttpHeaders[propertyHttpHeaders[i]]); + } + request.onreadystatechange = function () { + if (request.readyState == 4 && request.status == 200) { + params.$Cache[queryParams] = request.response; + callback(request.response); + } + }; + return request; + }; + AutoComplete.prototype.ajax = function (params, request, timeout) { + if (timeout === void 0) { timeout = true; } + if (params.$AjaxTimer) { + window.clearTimeout(params.$AjaxTimer); + } + if (timeout === true) { + params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay); + } + else { + if (params.Request) { + params.Request.abort(); + } + params.Request = request; + params.Request.send(params._QueryArg() + "=" + params._Pre()); + } + }; + AutoComplete.prototype.cache = function (params, callback) { + var response = params._Cache(params._Pre()); + if (response === undefined) { + var request = AutoComplete.prototype.makeRequest(params, callback); + AutoComplete.prototype.ajax(params, request); + } + else { + callback(response); + } + }; + AutoComplete.prototype.destroy = function (params) { + for (var event in params.$Listeners) { + params.Input.removeEventListener(event, params.$Listeners[event]); + } + params.DOMResults.parentNode.removeChild(params.DOMResults); + }; + return AutoComplete; +}()); +AutoComplete.merge = function () { + var merge = {}, tmp; + for (var i = 0; i < arguments.length; i++) { + for (tmp in arguments[i]) { + merge[tmp] = arguments[i][tmp]; + } + } + return merge; +}; +AutoComplete.defaults = { + Delay: 150, + EmptyMessage: "No result here", + Highlight: { + getRegex: function (value) { + return new RegExp(value, "ig"); + }, + transform: function (value) { + return "<strong>" + value + "</strong>"; + } + }, + HttpHeaders: { + "Content-type": "application/x-www-form-urlencoded" + }, + Limit: 0, + MinChars: 0, + HttpMethod: "GET", + QueryArg: "q", + Url: null, + KeyboardMappings: { + "Enter": { + Conditions: [{ + Is: 13, + Not: false + }], + Callback: function (event) { + if (this.DOMResults.getAttribute("class").indexOf("open") != -1) { + var liActive = this.DOMResults.querySelector("li.active"); + if (liActive !== null) { + event.preventDefault(); + this._Select(liActive); + this.DOMResults.setAttribute("class", "autocomplete"); + } + } + }, + Operator: ConditionOperator.AND, + Event: EventType.KEYDOWN + }, + "KeyUpAndDown_down": { + Conditions: [{ + Is: 38, + Not: false + }, + { + Is: 40, + Not: false + }], + Callback: function (event) { + event.preventDefault(); + }, + Operator: ConditionOperator.OR, + Event: EventType.KEYDOWN + }, + "KeyUpAndDown_up": { + Conditions: [{ + Is: 38, + Not: false + }, + { + Is: 40, + Not: false + }], + Callback: function (event) { + event.preventDefault(); + var first = this.DOMResults.querySelector("li:first-child:not(.locked)"), last = this.DOMResults.querySelector("li:last-child:not(.locked)"), active = this.DOMResults.querySelector("li.active"); + if (active) { + var currentIndex = Array.prototype.indexOf.call(active.parentNode.children, active), position = currentIndex + (event.keyCode - 39), lisCount = this.DOMResults.getElementsByTagName("li").length; + if (position < 0) { + position = lisCount - 1; + } + else if (position >= lisCount) { + position = 0; + } + active.classList.remove("active"); + active.parentElement.children.item(position).classList.add("active"); + } + else if (last && event.keyCode == 38) { + last.classList.add("active"); + } + else if (first) { + first.classList.add("active"); + } + }, + Operator: ConditionOperator.OR, + Event: EventType.KEYUP + }, + "AlphaNum": { + Conditions: [{ + Is: 13, + Not: true + }, { + From: 35, + To: 40, + Not: true + }], + Callback: function () { + var oldValue = this.Input.getAttribute("data-autocomplete-old-value"), currentValue = this._Pre(); + if (currentValue !== "" && currentValue.length >= this._MinChars()) { + if (!oldValue || currentValue != oldValue) { + this.DOMResults.setAttribute("class", "autocomplete open"); + } + AutoComplete.prototype.cache(this, function (response) { + this._Render(this._Post(response)); + this._Open(); + }.bind(this)); + } + }, + Operator: ConditionOperator.AND, + Event: EventType.KEYUP + } + }, + DOMResults: null, + Request: null, + Input: null, + /** + * Return the message when no result returns + */ + _EmptyMessage: function () { + var emptyMessage = ""; + if (this.Input.hasAttribute("data-autocomplete-empty-message")) { + emptyMessage = this.Input.getAttribute("data-autocomplete-empty-message"); + } + else if (this.EmptyMessage !== false) { + emptyMessage = this.EmptyMessage; + } + else { + emptyMessage = ""; + } + return emptyMessage; + }, + /** + * Returns the maximum number of results + */ + _Limit: function () { + var limit = this.Input.getAttribute("data-autocomplete-limit"); + if (isNaN(limit) || limit === null) { + return this.Limit; + } + return parseInt(limit, 10); + }, + /** + * Returns the minimum number of characters entered before firing ajax + */ + _MinChars: function () { + var minchars = this.Input.getAttribute("data-autocomplete-minchars"); + if (isNaN(minchars) || minchars === null) { + return this.MinChars; + } + return parseInt(minchars, 10); + }, + /** + * Apply transformation on labels response + */ + _Highlight: function (label) { + return label.replace(this.Highlight.getRegex(this._Pre()), this.Highlight.transform); + }, + /** + * Returns the HHTP method to use + */ + _HttpMethod: function () { + if (this.Input.hasAttribute("data-autocomplete-method")) { + return this.Input.getAttribute("data-autocomplete-method"); + } + return this.HttpMethod; + }, + /** + * Returns the query param to use + */ + _QueryArg: function () { + if (this.Input.hasAttribute("data-autocomplete-param-name")) { + return this.Input.getAttribute("data-autocomplete-param-name"); + } + return this.QueryArg; + }, + /** + * Returns the URL to use for AJAX request + */ + _Url: function () { + if (this.Input.hasAttribute("data-autocomplete")) { + return this.Input.getAttribute("data-autocomplete"); + } + return this.Url; + }, + /** + * Manage the close + */ + _Blur: function (now) { + if (now === true) { + this.DOMResults.setAttribute("class", "autocomplete"); + this.Input.setAttribute("data-autocomplete-old-value", this.Input.value); + } + else { + var params = this; + setTimeout(function () { + params._Blur(true); + }, 150); + } + }, + /** + * Manage the cache + */ + _Cache: function (value) { + return this.$Cache[value]; + }, + /** + * Manage the open + */ + _Focus: function () { + var oldValue = this.Input.getAttribute("data-autocomplete-old-value"); + if ((!oldValue || this.Input.value != oldValue) && this._MinChars() <= this.Input.value.length) { + this.DOMResults.setAttribute("class", "autocomplete open"); + } + }, + /** + * Bind all results item if one result is opened + */ + _Open: function () { + var params = this; + Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"), function (li) { + if (li.getAttribute("class") != "locked") { + li.onclick = function (event) { + params._Select(li); + }; + li.onmouseenter = function () { + var active = params.DOMResults.querySelector("li.active"); + if (active !== li) { + if (active !== null) { + active.classList.remove("active"); + } + li.classList.add("active"); + } + }; + } + }); + }, + /** + * Position the results HTML element + */ + _Position: function () { + this.DOMResults.setAttribute("class", "autocomplete"); + this.DOMResults.setAttribute("style", "top:" + (this.Input.offsetTop + this.Input.offsetHeight) + "px;left:" + this.Input.offsetLeft + "px;width:" + this.Input.clientWidth + "px;"); + }, + /** + * Execute the render of results DOM element + */ + _Render: function (response) { + var ul; + if (typeof response == "string") { + ul = this._RenderRaw(response); + } + else { + ul = this._RenderResponseItems(response); + } + if (this.DOMResults.hasChildNodes()) { + this.DOMResults.removeChild(this.DOMResults.childNodes[0]); + } + this.DOMResults.appendChild(ul); + }, + /** + * ResponseItems[] rendering + */ + _RenderResponseItems: function (response) { + var ul = document.createElement("ul"), li = document.createElement("li"), limit = this._Limit(); + // Order + if (limit < 0) { + response = response.reverse(); + } + else if (limit === 0) { + limit = response.length; + } + for (var item = 0; item < Math.min(Math.abs(limit), response.length); item++) { + li.innerHTML = response[item].Label; + li.setAttribute("data-autocomplete-value", response[item].Value); + ul.appendChild(li); + li = document.createElement("li"); + } + return ul; + }, + /** + * string response rendering (RAW HTML) + */ + _RenderRaw: function (response) { + var ul = document.createElement("ul"), li = document.createElement("li"); + if (response.length > 0) { + this.DOMResults.innerHTML = response; + } + else { + var emptyMessage = this._EmptyMessage(); + if (emptyMessage !== "") { + li.innerHTML = emptyMessage; + li.setAttribute("class", "locked"); + ul.appendChild(li); + } + } + return ul; + }, + /** + * Deal with request response + */ + _Post: function (response) { + try { + var returnResponse = []; + //JSON return + var json = JSON.parse(response); + if (Object.keys(json).length === 0) { + return ""; + } + if (Array.isArray(json)) { + for (var i = 0; i < Object.keys(json).length; i++) { + returnResponse[returnResponse.length] = { "Value": json[i], "Label": this._Highlight(json[i]) }; + } + } + else { + for (var value in json) { + returnResponse.push({ + "Value": value, + "Label": this._Highlight(json[value]) + }); + } + } + return returnResponse; + } + catch (event) { + //HTML return + return response; + } + }, + /** + * Return the autocomplete value to send (before request) + */ + _Pre: function () { + return this.Input.value; + }, + /** + * Choice one result item + */ + _Select: function (item) { + console.log('test test test'); + if (item.hasAttribute("data-autocomplete-value")) { + this.Input.value = item.getAttribute("data-autocomplete-value"); + } + else { + this.Input.value = item.innerHTML; + } + this.Input.setAttribute("data-autocomplete-old-value", this.Input.value); + }, + $AjaxTimer: null, + $Cache: {}, + $Listeners: {} +}; +module.exports = AutoComplete; + +},{}]},{},[1])(1) +}); +;/** +* +* Google Image Layout v0.0.1 +* Description, by Anh Trinh. +* Heavily modified for searx +* http://trinhtrunganh.com +* +* @license Free to use under the MIT License. +* +*/ +(function(w, d) { + 'use strict'; + + function ImageLayout(container_selector, results_selector, img_selector, maxHeight) { + this.container_selector = container_selector; + this.results_selector = results_selector; + this.img_selector = img_selector; + this.margin = 10; + this.maxHeight = maxHeight; + this._alignAllDone = true; + } + + /** + * Get the height that make all images fit the container + * + * width = w1 + w2 + w3 + ... = r1*h + r2*h + r3*h + ... + * + * @param {[type]} images the images to be calculated + * @param {[type]} width the container witdth + * @param {[type]} margin the margin between each image + * + * @return {[type]} the height + */ + ImageLayout.prototype._getHeigth = function(images, width) { + var r = 0, + img; + + width -= images.length * this.margin; + for (var i = 0; i < images.length; i++) { + img = images[i]; + if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) { + r += img.naturalWidth / img.naturalHeight; + } else { + // assume that not loaded images are square + r += 1; + } + } + + return width / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3 + }; + + ImageLayout.prototype._setSize = function(images, height) { + var img, imgWidth, imagesLength = images.length; + for (var i = 0; i < imagesLength; i++) { + img = images[i]; + if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) { + imgWidth = height * img.naturalWidth / img.naturalHeight; + } else { + // not loaded image : make it square as _getHeigth said it + imgWidth = height; + } + img.style.width = imgWidth + 'px'; + img.style.height = height + 'px'; + img.style.marginLeft = '3px'; + img.style.marginTop = '3px'; + img.style.marginRight = this.margin - 7 + 'px'; // -4 is the negative margin of the inline element + img.style.marginBottom = this.margin - 7 + 'px'; + } + }; + + ImageLayout.prototype._alignImgs = function(imgGroup) { + var slice, h, + containerWidth = d.querySelector(this.container_selector).clientWidth; + + w: while (imgGroup.length > 0) { + for (var i = 1; i <= imgGroup.length; i++) { + slice = imgGroup.slice(0, i); + h = this._getHeigth(slice, containerWidth); + if (h < this.maxHeight) { + this._setSize(slice, h); + imgGroup = imgGroup.slice(i); + continue w; + } + } + this._setSize(slice, Math.min(this.maxHeight, h)); + break; + } + }; + + ImageLayout.prototype.align = function(results_selector) { + var results_selectorNode = d.querySelectorAll(this.results_selector), + results_length = results_selectorNode.length, + previous = null, + current = null, + imgGroup = []; + for (var i = 0; i < results_length; i++) { + current = results_selectorNode[i]; + if (current.previousElementSibling !== previous && imgGroup.length > 0) { + // the current image is not conected to previous one + // so the current image is the start of a new group of images. + // so call _alignImgs to align the current group + this._alignImgs(imgGroup); + // and start a new empty group of images + imgGroup = []; + } + // add the current image to the group (only the img tag) + imgGroup.push(current.querySelector(this.img_selector)); + // update the previous variable + previous = current; + } + // align the remaining images + if (imgGroup.length > 0) { + this._alignImgs(imgGroup); + } + }; + + ImageLayout.prototype.watch = function() { + var i, img, imgGroup, imgNodeLength, + obj = this, + results_nodes = d.querySelectorAll(this.results_selector), + results_length = results_nodes.length; + + function align(e) { + obj.align(); + } + + function throttleAlign(e) { + if (obj._alignAllDone) { + obj._alignAllDone = false; + setTimeout(function() { + obj.align(); + obj._alignAllDone = true; + }, 100); + } + } + + w.addEventListener('resize', throttleAlign); + w.addEventListener('pageshow', align); + + for (i = 0; i < results_length; i++) { + img = results_nodes[i].querySelector(this.img_selector); + if (typeof img !== 'undefined') { + img.addEventListener('load', throttleAlign); + img.addEventListener('error', throttleAlign); + } + } + }; + + w.searx.ImageLayout = ImageLayout; + +})(window, document); +;searx.ready(function() { + + searx.on('.result', 'click', function() { + highlightResult(this)(true); + }); + + searx.on('.result a', 'focus', function(e) { + var el = e.target; + while (el !== undefined) { + if (el.classList.contains('result')) { + if (el.getAttribute("data-vim-selected") === null) { + highlightResult(el)(true); + } + break; + } + el = el.parentNode; + } + }, true); + + var vimKeys = { + 27: { + key: 'Escape', + fun: removeFocus, + des: 'remove focus from the focused input', + cat: 'Control' + }, + 73: { + key: 'i', + fun: searchInputFocus, + des: 'focus on the search input', + cat: 'Control' + }, + 66: { + key: 'b', + fun: scrollPage(-window.innerHeight), + des: 'scroll one page up', + cat: 'Navigation' + }, + 70: { + key: 'f', + fun: scrollPage(window.innerHeight), + des: 'scroll one page down', + cat: 'Navigation' + }, + 85: { + key: 'u', + fun: scrollPage(-window.innerHeight / 2), + des: 'scroll half a page up', + cat: 'Navigation' + }, + 68: { + key: 'd', + fun: scrollPage(window.innerHeight / 2), + des: 'scroll half a page down', + cat: 'Navigation' + }, + 71: { + key: 'g', + fun: scrollPageTo(-document.body.scrollHeight, 'top'), + des: 'scroll to the top of the page', + cat: 'Navigation' + }, + 86: { + key: 'v', + fun: scrollPageTo(document.body.scrollHeight, 'bottom'), + des: 'scroll to the bottom of the page', + cat: 'Navigation' + }, + 75: { + key: 'k', + fun: highlightResult('up'), + des: 'select previous search result', + cat: 'Results' + }, + 74: { + key: 'j', + fun: highlightResult('down'), + des: 'select next search result', + cat: 'Results' + }, + 80: { + key: 'p', + fun: pageButtonClick(0), + des: 'go to previous page', + cat: 'Results' + }, + 78: { + key: 'n', + fun: pageButtonClick(1), + des: 'go to next page', + cat: 'Results' + }, + 79: { + key: 'o', + fun: openResult(false), + des: 'open search result', + cat: 'Results' + }, + 84: { + key: 't', + fun: openResult(true), + des: 'open the result in a new tab', + cat: 'Results' + }, + 82: { + key: 'r', + fun: reloadPage, + des: 'reload page from the server', + cat: 'Control' + }, + 72: { + key: 'h', + fun: toggleHelp, + des: 'toggle help window', + cat: 'Other' + } + }; + + searx.on(document, "keydown", function(e) { + // check for modifiers so we don't break browser's hotkeys + if (vimKeys.hasOwnProperty(e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) { + var tagName = e.target.tagName.toLowerCase(); + if (e.keyCode === 27) { + if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') { + vimKeys[e.keyCode].fun(); + } + } else { + if (e.target === document.body || tagName === 'a' || tagName === 'button') { + e.preventDefault(); + vimKeys[e.keyCode].fun(); + } + } + } + }); + + function highlightResult(which) { + return function(noScroll) { + var current = document.querySelector('.result[data-vim-selected]'), + effectiveWhich = which; + if (current === null) { + // no selection : choose the first one + current = document.querySelector('.result'); + if (current === null) { + // no first one : there are no results + return; + } + // replace up/down actions by selecting first one + if (which === "down" || which === "up") { + effectiveWhich = current; + } + } + + var next, results = document.querySelectorAll('.result'); + + if (typeof effectiveWhich !== 'string') { + next = effectiveWhich; + } else { + switch (effectiveWhich) { + case 'visible': + var top = document.documentElement.scrollTop || document.body.scrollTop; + var bot = top + document.documentElement.clientHeight; + + for (var i = 0; i < results.length; i++) { + next = results[i]; + var etop = next.offsetTop; + var ebot = etop + next.clientHeight; + + if ((ebot <= bot) && (etop > top)) { + break; + } + } + break; + case 'down': + next = current.nextElementSibling; + if (next === null) { + next = results[0]; + } + break; + case 'up': + next = current.previousElementSibling; + if (next === null) { + next = results[results.length - 1]; + } + break; + case 'bottom': + next = results[results.length - 1]; + break; + case 'top': + /* falls through */ + default: + next = results[0]; + } + } + + if (next) { + current.removeAttribute('data-vim-selected'); + next.setAttribute('data-vim-selected', 'true'); + var link = next.querySelector('h3 a') || next.querySelector('a'); + if (link !== null) { + link.focus(); + } + if (!noScroll) { + scrollPageToSelected(); + } + } + }; + } + + function reloadPage() { + document.location.reload(true); + } + + function removeFocus() { + if (document.activeElement) { + document.activeElement.blur(); + } + } + + function pageButtonClick(num) { + return function() { + var buttons = $('div#pagination button[type="submit"]'); + if (buttons.length !== 2) { + console.log('page navigation with this theme is not supported'); + return; + } + if (num >= 0 && num < buttons.length) { + buttons[num].click(); + } else { + console.log('pageButtonClick(): invalid argument'); + } + }; + } + + function scrollPageToSelected() { + var sel = document.querySelector('.result[data-vim-selected]'); + if (sel === null) { + return; + } + var wtop = document.documentElement.scrollTop || document.body.scrollTop, + wheight = document.documentElement.clientHeight, + etop = sel.offsetTop, + ebot = etop + sel.clientHeight, + offset = 120; + // first element ? + if ((sel.previousElementSibling === null) && (ebot < wheight)) { + // set to the top of page if the first element + // is fully included in the viewport + window.scroll(window.scrollX, 0); + return; + } + if (wtop > (etop - offset)) { + window.scroll(window.scrollX, etop - offset); + } else { + var wbot = wtop + wheight; + if (wbot < (ebot + offset)) { + window.scroll(window.scrollX, ebot - wheight + offset); + } + } + } + + function scrollPage(amount) { + return function() { + window.scrollBy(0, amount); + highlightResult('visible')(); + }; + } + + function scrollPageTo(position, nav) { + return function() { + window.scrollTo(0, position); + highlightResult(nav)(); + }; + } + + function searchInputFocus() { + window.scrollTo(0, 0); + document.querySelector('#q').focus(); + } + + function openResult(newTab) { + return function() { + var link = document.querySelector('.result[data-vim-selected] h3 a'); + if (link !== null) { + var url = link.getAttribute('href'); + if (newTab) { + window.open(url); + } else { + window.location.href = url; + } + } + }; + } + + function initHelpContent(divElement) { + var categories = {}; + + for (var k in vimKeys) { + var key = vimKeys[k]; + categories[key.cat] = categories[key.cat] || []; + categories[key.cat].push(key); + } + + var sorted = Object.keys(categories).sort(function(a, b) { + return categories[b].length - categories[a].length; + }); + + if (sorted.length === 0) { + return; + } + + var html = '<a href="#" class="close" aria-label="close" title="close">×</a>'; + html += '<h3>How to navigate searx with Vim-like hotkeys</h3>'; + html += '<table>'; + + for (var i = 0; i < sorted.length; i++) { + var cat = categories[sorted[i]]; + + var lastCategory = i === (sorted.length - 1); + var first = i % 2 === 0; + + if (first) { + html += '<tr>'; + } + html += '<td>'; + + html += '<h4>' + cat[0].cat + '</h4>'; + html += '<ul class="list-unstyled">'; + + for (var cj in cat) { + html += '<li><kbd>' + cat[cj].key + '</kbd> ' + cat[cj].des + '</li>'; + } + + html += '</ul>'; + html += '</td>'; // col-sm-* + + if (!first || lastCategory) { + html += '</tr>'; // row + } + } + + html += '</table>'; + + divElement.innerHTML = html; + } + + function toggleHelp() { + var helpPanel = document.querySelector('#vim-hotkeys-help'); + console.log(helpPanel); + if (helpPanel === undefined || helpPanel === null) { + // first call + helpPanel = document.createElement('div'); + helpPanel.id = 'vim-hotkeys-help'; + helpPanel.className='dialog-modal'; + helpPanel.style='width: 40%'; + initHelpContent(helpPanel); + var body = document.getElementsByTagName('body')[0]; + body.appendChild(helpPanel); + } else { + // togggle hidden + helpPanel.classList.toggle('invisible'); + return; + } + + } + +}); +;/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +*/ +(function (w, d, searx) { + 'use strict'; + + searx.ready(function () { + searx.on('.searx_overpass_request', 'click', function(event) { + // no more request + this.classList.remove("searx_overpass_request"); + + // + var overpass_url = "https://overpass-api.de/api/interpreter?data="; + var query_start = overpass_url + "[out:json][timeout:25];("; + var query_end = ");out meta;"; + + var osm_id = this.dataset.osmId; + var osm_type = this.dataset.osmType; + var result_table = d.querySelector("#" + this.dataset.resultTable); + var result_table_loadicon = d.querySelector("#" + this.dataset.resultTableLoadicon); + + // tags which can be ignored + var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ]; + + if(osm_id && osm_type && result_table) { + var query = null; + switch(osm_type) { + case 'node': + query = query_start + "node(" + osm_id + ");" + query_end; + break; + case 'way': + query = query_start + "way(" + osm_id + ");" + query_end; + break; + case 'relation': + query = query_start + "relation(" + osm_id + ");" + query_end; + break; + default: + break; + } + if(query) { + // console.log(query); + searx.http( 'GET', query ).then(function(html, contentType) { + html = JSON.parse(html); + if(html && html.elements && html.elements[0]) { + var element = html.elements[0]; + var newHtml = ""; + for (var row in element.tags) { + if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) { + newHtml += "<tr><td>" + row + "</td><td>"; + switch(row) { + case "phone": + case "fax": + newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>"; + break; + case "email": + newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "website": + case "url": + newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikidata": + newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikipedia": + if(element.tags[row].indexOf(":") != -1) { + newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>"; + break; + } + /* jshint ignore:start */ + default: + /* jshint ignore:end */ + newHtml += element.tags[row]; + break; + } + newHtml += "</td></tr>"; + } + } + result_table_loadicon.parentNode.removeChild(result_table_loadicon); + result_table.classList.remove('invisible'); + result_table.querySelector("tbody").innerHTML = newHtml; + } + }) + .catch(function() { + result_table_loadicon.classList.remove('invisible'); + result_table_loadicon.innerHTML = "could not load data!"; + }); + } + } + + // this event occour only once per element + event.preventDefault(); + }); + + searx.on('.searx_init_map', 'click', function(event) { + // no more request + this.classList.remove("searx_init_map"); + + // + var leaflet_target = this.dataset.leafletTarget; + var map_lon = parseFloat(this.dataset.mapLon); + var map_lat = parseFloat(this.dataset.mapLat); + var map_zoom = parseFloat(this.dataset.mapZoom); + var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox); + var map_geojson = JSON.parse(this.dataset.mapGeojson); + + searx.loadStyle('leaflet/leaflet.css'); + searx.loadScript('leaflet/leaflet.js', function() { + var map_bounds = null; + if(map_boundingbox) { + var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); + var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]); + map_bounds = L.latLngBounds(southWest, northEast); + } + + // init map + var map = L.map(leaflet_target); + // create the tile layer with correct attribution + var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); + var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; + var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); + // init map view + if(map_bounds) { + // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021 + // Still useful ? + setTimeout(function () { + map.fitBounds(map_bounds, { + maxZoom:17 + }); + }, 0); + } else if (map_lon && map_lat) { + if(map_zoom) { + map.setView(new L.latLng(map_lat, map_lon),map_zoom); + } else { + map.setView(new L.latLng(map_lat, map_lon),8); + } + } + + map.addLayer(osmMapnik); + + var baseLayers = { + "OSM Mapnik": osmMapnik/*, + "OSM Wikimedia": osmWikimedia*/ + }; + + L.control.layers(baseLayers).addTo(map); + + if(map_geojson) { + L.geoJson(map_geojson).addTo(map); + } /*else if(map_bounds) { + L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map); + }*/ + }); + + // this event occour only once per element + event.preventDefault(); + }); + }); +})(window, document, window.searx); +;/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +*/ +(function(w, d, searx) { + 'use strict'; + + searx.ready(function() { + searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 200); + searx.image_thumbnail_layout.watch(); + + searx.on('.btn-collapse', 'click', function(event) { + var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed'); + var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed'); + var target = this.getAttribute('data-target'); + var targetElement = d.querySelector(target); + var html = this.innerHTML; + if (this.classList.contains('collapsed')) { + html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed); + } else { + html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed); + } + this.innerHTML = html; + this.classList.toggle('collapsed'); + targetElement.classList.toggle('invisible'); + }); + + searx.on('.media-loader', 'click', function(event) { + var target = this.getAttribute('data-target'); + var iframe_load = d.querySelector(target + ' > iframe'); + var srctest = iframe_load.getAttribute('src'); + if (srctest === null || srctest === undefined || srctest === false) { + iframe_load.setAttribute('src', iframe_load.getAttribute('data-src')); + } + }); + + w.addEventListener('scroll', function() { + var e = d.getElementById('backToTop'), + scrollTop = document.documentElement.scrollTop || document.body.scrollTop; + if (e !== null) { + if (scrollTop >= 200) { + e.style.opacity = 1; + } else { + e.style.opacity = 0; + } + } + }); + + }); + +})(window, document, window.searx); +;/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +*/ +(function(w, d, searx) { + 'use strict'; + + var firstFocus = true, qinput_id = "q", qinput; + + function placeCursorAtEnd(element) { + if (element.setSelectionRange) { + var len = element.value.length; + element.setSelectionRange(len, len); + } + } + + function submitIfQuery() { + if (qinput.value.length > 0) { + var search = document.getElementById('search'); + setTimeout(search.submit.bind(search), 0); + } + } + + function createClearButton(qinput) { + var cs = document.getElementById('clear_search'); + var updateClearButton = function() { + if (qinput.value.length === 0) { + cs.classList.add("empty"); + } else { + cs.classList.remove("empty"); + } + }; + + // update status, event listener + updateClearButton(); + cs.addEventListener('click', function() { + qinput.value=''; + qinput.focus(); + updateClearButton(); + }); + qinput.addEventListener('keyup', updateClearButton, false); + } + + searx.ready(function() { + qinput = d.getElementById(qinput_id); + + function placeCursorAtEndOnce(e) { + if (firstFocus) { + placeCursorAtEnd(qinput); + firstFocus = false; + } else { + // e.preventDefault(); + } + } + + if (qinput !== null) { + // clear button + createClearButton(qinput); + + // autocompleter + if (searx.autocompleter) { + searx.autocomplete = AutoComplete.call(w, { + Url: "./autocompleter", + EmptyMessage: searx.no_item_found, + HttpMethod: searx.method, + MinChars: 4, + Delay: 300, + }, "#" + qinput_id); + + // hack, see : https://github.com/autocompletejs/autocomplete.js/issues/37 + w.addEventListener('resize', function() { + var event = new CustomEvent("position"); + qinput.dispatchEvent(event); + }); + } + + qinput.addEventListener('focus', placeCursorAtEndOnce, false); + qinput.focus(); + } + + // vanilla js version of search_on_category_select.js + if (qinput !== null && searx.search_on_category_select) { + d.querySelector('.help').className='invisible'; + + searx.on('#categories input', 'change', function(e) { + var i, categories = d.querySelectorAll('#categories input[type="checkbox"]'); + for(i=0; i<categories.length; i++) { + if (categories[i] !== this && categories[i].checked) { + categories[i].click(); + } + } + if (! this.checked) { + this.click(); + } + submitIfQuery(); + return false; + }); + + searx.on(d.getElementById('time_range'), 'change', submitIfQuery); + searx.on(d.getElementById('language'), 'change', submitIfQuery); + } + + }); + +})(window, document, window.searx); diff --git a/searx/static/themes/simple/js/searx.min.js b/searx/static/themes/simple/js/searx.min.js new file mode 100644 index 000000000..42e8a845c --- /dev/null +++ b/searx/static/themes/simple/js/searx.min.js @@ -0,0 +1,25 @@ +/*! simple/searx.min.js | 06-08-2019 | https://github.com/asciimoo/searx */ + +window.searx=function(t,a){"use strict";if(t.Element){(function(e){e.matches=e.matches||e.matchesSelector||e.webkitMatchesSelector||e.msMatchesSelector||function(e){var t=this,n=(t.parentNode||t.document).querySelectorAll(e),i=-1;while(n[++i]&&n[i]!=t);return!!n[i]}})(Element.prototype)}function o(e,t,n){try{e.call(t,n)}catch(e){console.log(e)}}var s=window.searx||{};s.on=function(i,e,r,t){t=t||false;if(typeof i!=="string"){i.addEventListener(e,r,t)}else{a.addEventListener(e,function(e){var t=e.target||e.srcElement,n=false;while(t&&t.matches&&t!==a&&!(n=t.matches(i)))t=t.parentElement;if(n)o(r,t,e)},t)}};s.ready=function(e){if(document.readyState!="loading"){e.call(t)}else{t.addEventListener("DOMContentLoaded",e.bind(t))}};s.http=function(e,t,n){var i=new XMLHttpRequest,r=function(){},a=function(){},o={then:function(e){r=e;return o},catch:function(e){a=e;return o}};try{i.open(e,t,true);i.onload=function(){if(i.status==200){r(i.response,i.responseType)}else{a(Error(i.statusText))}};i.onerror=function(){a(Error("Network Error"))};i.onabort=function(){a(Error("Transaction is aborted"))};i.send()}catch(e){a(e)}return o};s.loadStyle=function(e){var t=s.static_path+e,n="style_"+e.replace(".","_"),i=a.getElementById(n);if(i===null){i=a.createElement("link");i.setAttribute("id",n);i.setAttribute("rel","stylesheet");i.setAttribute("type","text/css");i.setAttribute("href",t);a.body.appendChild(i)}};s.loadScript=function(e,t){var n=s.static_path+e,i="script_"+e.replace(".","_"),r=a.getElementById(i);if(r===null){r=a.createElement("script");r.setAttribute("id",i);r.setAttribute("src",n);r.onload=t;r.onerror=function(){r.setAttribute("error","1")};a.body.appendChild(r)}else if(!r.hasAttribute("error")){try{t.apply(r,[])}catch(e){console.log(e)}}else{console.log("callback not executed : script '"+n+"' not loaded.")}};s.insertBefore=function(e,t){element.parentNode.insertBefore(e,t)};s.insertAfter=function(e,t){t.parentNode.insertBefore(e,t.nextSibling)};s.on(".close","click",function(e){var t=e.target||e.srcElement;this.parentNode.classList.add("invisible")});return s}(window,document);(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.AutoComplete=e()}})(function(){var e,t,n;return function a(o,s,l){function u(n,e){if(!s[n]){if(!o[n]){var t=typeof require=="function"&&require;if(!e&&t)return t(n,!0);if(c)return c(n,!0);var i=new Error("Cannot find module '"+n+"'");throw i.code="MODULE_NOT_FOUND",i}var r=s[n]={exports:{}};o[n][0].call(r.exports,function(e){var t=o[n][1][e];return u(t?t:e)},r,r.exports,a,o,s,l)}return s[n].exports}var c=typeof require=="function"&&require;for(var e=0;e<l.length;e++)u(l[e]);return u}({1:[function(e,t,n){ +/* + * @license MIT + * + * Autocomplete.js v2.6.3 + * Developed by Baptiste Donaux + * http://autocomplete-js.com + * + * (c) 2017, Baptiste Donaux + */ +"use strict";var l;(function(e){e[e["AND"]=0]="AND";e[e["OR"]=1]="OR"})(l||(l={}));var a;(function(e){e[e["KEYDOWN"]=0]="KEYDOWN";e[e["KEYUP"]=1]="KEYUP"})(a||(a={}));var i=function(){function s(t,e){if(t===void 0){t={}}if(e===void 0){e="[data-autocomplete]"}if(Array.isArray(e)){e.forEach(function(e){new s(t,e)})}else if(typeof e=="string"){var n=document.querySelectorAll(e);Array.prototype.forEach.call(n,function(e){new s(t,e)})}else{var i=s.merge(s.defaults,t,{DOMResults:document.createElement("div")});s.prototype.create(i,e);return i}}s.prototype.create=function(e,t){e.Input=t;if(e.Input.nodeName.match(/^INPUT$/i)&&(e.Input.hasAttribute("type")===false||e.Input.getAttribute("type").match(/^TEXT|SEARCH$/i))){e.Input.setAttribute("autocomplete","off");e._Position(e);e.Input.parentNode.appendChild(e.DOMResults);e.$Listeners={blur:e._Blur.bind(e),destroy:s.prototype.destroy.bind(null,e),focus:e._Focus.bind(e),keyup:s.prototype.event.bind(null,e,a.KEYUP),keydown:s.prototype.event.bind(null,e,a.KEYDOWN),position:e._Position.bind(e)};for(var n in e.$Listeners){e.Input.addEventListener(n,e.$Listeners[n])}}};s.prototype.getEventsByType=function(e,t){var n={};for(var i in e.KeyboardMappings){var r=a.KEYUP;if(e.KeyboardMappings[i].Event!==undefined){r=e.KeyboardMappings[i].Event}if(r==t){n[i]=e.KeyboardMappings[i]}}return n};s.prototype.event=function(e,t,n){var i=function(e){if(o===true&&a.Operator==l.AND||o===false&&a.Operator==l.OR){e=s.merge({Not:false},e);if(e.hasOwnProperty("Is")){if(e.Is==n.keyCode){o=!e.Not}else{o=e.Not}}else if(e.hasOwnProperty("From")&&e.hasOwnProperty("To")){if(n.keyCode>=e.From&&n.keyCode<=e.To){o=!e.Not}else{o=e.Not}}}};for(var r in s.prototype.getEventsByType(e,t)){var a=s.merge({Operator:l.AND},e.KeyboardMappings[r]),o=l.AND==a.Operator;a.Conditions.forEach(i);if(o===true){a.Callback.call(e,n)}}};s.prototype.makeRequest=function(e,t){var n=Object.getOwnPropertyNames(e.HttpHeaders),i=new XMLHttpRequest,r=e._HttpMethod(),a=e._Url(),o=e._Pre(),s=encodeURIComponent(e._QueryArg())+"="+encodeURIComponent(o);if(r.match(/^GET$/i)){if(a.indexOf("?")!==-1){a+="&"+s}else{a+="?"+s}}i.open(r,a,true);for(var l=n.length-1;l>=0;l--){i.setRequestHeader(n[l],e.HttpHeaders[n[l]])}i.onreadystatechange=function(){if(i.readyState==4&&i.status==200){e.$Cache[o]=i.response;t(i.response)}};return i};s.prototype.ajax=function(e,t,n){if(n===void 0){n=true}if(e.$AjaxTimer){window.clearTimeout(e.$AjaxTimer)}if(n===true){e.$AjaxTimer=window.setTimeout(s.prototype.ajax.bind(null,e,t,false),e.Delay)}else{if(e.Request){e.Request.abort()}e.Request=t;e.Request.send(e._QueryArg()+"="+e._Pre())}};s.prototype.cache=function(e,t){var n=e._Cache(e._Pre());if(n===undefined){var i=s.prototype.makeRequest(e,t);s.prototype.ajax(e,i)}else{t(n)}};s.prototype.destroy=function(e){for(var t in e.$Listeners){e.Input.removeEventListener(t,e.$Listeners[t])}e.DOMResults.parentNode.removeChild(e.DOMResults)};return s}();i.merge=function(){var e={},t;for(var n=0;n<arguments.length;n++){for(t in arguments[n]){e[t]=arguments[n][t]}}return e};i.defaults={Delay:150,EmptyMessage:"No result here",Highlight:{getRegex:function(e){return new RegExp(e,"ig")},transform:function(e){return"<strong>"+e+"</strong>"}},HttpHeaders:{"Content-type":"application/x-www-form-urlencoded"},Limit:0,MinChars:0,HttpMethod:"GET",QueryArg:"q",Url:null,KeyboardMappings:{Enter:{Conditions:[{Is:13,Not:false}],Callback:function(e){if(this.DOMResults.getAttribute("class").indexOf("open")!=-1){var t=this.DOMResults.querySelector("li.active");if(t!==null){e.preventDefault();this._Select(t);this.DOMResults.setAttribute("class","autocomplete")}}},Operator:l.AND,Event:a.KEYDOWN},KeyUpAndDown_down:{Conditions:[{Is:38,Not:false},{Is:40,Not:false}],Callback:function(e){e.preventDefault()},Operator:l.OR,Event:a.KEYDOWN},KeyUpAndDown_up:{Conditions:[{Is:38,Not:false},{Is:40,Not:false}],Callback:function(e){e.preventDefault();var t=this.DOMResults.querySelector("li:first-child:not(.locked)"),n=this.DOMResults.querySelector("li:last-child:not(.locked)"),i=this.DOMResults.querySelector("li.active");if(i){var r=Array.prototype.indexOf.call(i.parentNode.children,i),a=r+(e.keyCode-39),o=this.DOMResults.getElementsByTagName("li").length;if(a<0){a=o-1}else if(a>=o){a=0}i.classList.remove("active");i.parentElement.children.item(a).classList.add("active")}else if(n&&e.keyCode==38){n.classList.add("active")}else if(t){t.classList.add("active")}},Operator:l.OR,Event:a.KEYUP},AlphaNum:{Conditions:[{Is:13,Not:true},{From:35,To:40,Not:true}],Callback:function(){var e=this.Input.getAttribute("data-autocomplete-old-value"),t=this._Pre();if(t!==""&&t.length>=this._MinChars()){if(!e||t!=e){this.DOMResults.setAttribute("class","autocomplete open")}i.prototype.cache(this,function(e){this._Render(this._Post(e));this._Open()}.bind(this))}},Operator:l.AND,Event:a.KEYUP}},DOMResults:null,Request:null,Input:null,_EmptyMessage:function(){var e="";if(this.Input.hasAttribute("data-autocomplete-empty-message")){e=this.Input.getAttribute("data-autocomplete-empty-message")}else if(this.EmptyMessage!==false){e=this.EmptyMessage}else{e=""}return e},_Limit:function(){var e=this.Input.getAttribute("data-autocomplete-limit");if(isNaN(e)||e===null){return this.Limit}return parseInt(e,10)},_MinChars:function(){var e=this.Input.getAttribute("data-autocomplete-minchars");if(isNaN(e)||e===null){return this.MinChars}return parseInt(e,10)},_Highlight:function(e){return e.replace(this.Highlight.getRegex(this._Pre()),this.Highlight.transform)},_HttpMethod:function(){if(this.Input.hasAttribute("data-autocomplete-method")){return this.Input.getAttribute("data-autocomplete-method")}return this.HttpMethod},_QueryArg:function(){if(this.Input.hasAttribute("data-autocomplete-param-name")){return this.Input.getAttribute("data-autocomplete-param-name")}return this.QueryArg},_Url:function(){if(this.Input.hasAttribute("data-autocomplete")){return this.Input.getAttribute("data-autocomplete")}return this.Url},_Blur:function(e){if(e===true){this.DOMResults.setAttribute("class","autocomplete");this.Input.setAttribute("data-autocomplete-old-value",this.Input.value)}else{var t=this;setTimeout(function(){t._Blur(true)},150)}},_Cache:function(e){return this.$Cache[e]},_Focus:function(){var e=this.Input.getAttribute("data-autocomplete-old-value");if((!e||this.Input.value!=e)&&this._MinChars()<=this.Input.value.length){this.DOMResults.setAttribute("class","autocomplete open")}},_Open:function(){var n=this;Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"),function(t){if(t.getAttribute("class")!="locked"){t.onclick=function(e){n._Select(t)};t.onmouseenter=function(){var e=n.DOMResults.querySelector("li.active");if(e!==t){if(e!==null){e.classList.remove("active")}t.classList.add("active")}}}})},_Position:function(){this.DOMResults.setAttribute("class","autocomplete");this.DOMResults.setAttribute("style","top:"+(this.Input.offsetTop+this.Input.offsetHeight)+"px;left:"+this.Input.offsetLeft+"px;width:"+this.Input.clientWidth+"px;")},_Render:function(e){var t;if(typeof e=="string"){t=this._RenderRaw(e)}else{t=this._RenderResponseItems(e)}if(this.DOMResults.hasChildNodes()){this.DOMResults.removeChild(this.DOMResults.childNodes[0])}this.DOMResults.appendChild(t)},_RenderResponseItems:function(e){var t=document.createElement("ul"),n=document.createElement("li"),i=this._Limit();if(i<0){e=e.reverse()}else if(i===0){i=e.length}for(var r=0;r<Math.min(Math.abs(i),e.length);r++){n.innerHTML=e[r].Label;n.setAttribute("data-autocomplete-value",e[r].Value);t.appendChild(n);n=document.createElement("li")}return t},_RenderRaw:function(e){var t=document.createElement("ul"),n=document.createElement("li");if(e.length>0){this.DOMResults.innerHTML=e}else{var i=this._EmptyMessage();if(i!==""){n.innerHTML=i;n.setAttribute("class","locked");t.appendChild(n)}}return t},_Post:function(t){try{var e=[];var n=JSON.parse(t);if(Object.keys(n).length===0){return""}if(Array.isArray(n)){for(var i=0;i<Object.keys(n).length;i++){e[e.length]={Value:n[i],Label:this._Highlight(n[i])}}}else{for(var r in n){e.push({Value:r,Label:this._Highlight(n[r])})}}return e}catch(e){return t}},_Pre:function(){return this.Input.value},_Select:function(e){console.log("test test test");if(e.hasAttribute("data-autocomplete-value")){this.Input.value=e.getAttribute("data-autocomplete-value")}else{this.Input.value=e.innerHTML}this.Input.setAttribute("data-autocomplete-old-value",this.Input.value)},$AjaxTimer:null,$Cache:{},$Listeners:{}};t.exports=i},{}]},{},[1])(1)}); +/** +* +* Google Image Layout v0.0.1 +* Description, by Anh Trinh. +* Heavily modified for searx +* http://trinhtrunganh.com +* +* @license Free to use under the MIT License. +* +*/ +(function(u,c){"use strict";function e(e,t,n,i){this.container_selector=e;this.results_selector=t;this.img_selector=n;this.margin=10;this.maxHeight=i;this._alignAllDone=true}e.prototype._getHeigth=function(e,t){var n=0,i;t-=e.length*this.margin;for(var r=0;r<e.length;r++){i=e[r];if(i.naturalWidth>0&&i.naturalHeight>0){n+=i.naturalWidth/i.naturalHeight}else{n+=1}}return t/n};e.prototype._setSize=function(e,t){var n,i,r=e.length;for(var a=0;a<r;a++){n=e[a];if(n.naturalWidth>0&&n.naturalHeight>0){i=t*n.naturalWidth/n.naturalHeight}else{i=t}n.style.width=i+"px";n.style.height=t+"px";n.style.marginLeft="3px";n.style.marginTop="3px";n.style.marginRight=this.margin-7+"px";n.style.marginBottom=this.margin-7+"px"}};e.prototype._alignImgs=function(e){var t,n,i=c.querySelector(this.container_selector).clientWidth;e:while(e.length>0){for(var r=1;r<=e.length;r++){t=e.slice(0,r);n=this._getHeigth(t,i);if(n<this.maxHeight){this._setSize(t,n);e=e.slice(r);continue e}}this._setSize(t,Math.min(this.maxHeight,n));break}};e.prototype.align=function(e){var t=c.querySelectorAll(this.results_selector),n=t.length,i=null,r=null,a=[];for(var o=0;o<n;o++){r=t[o];if(r.previousElementSibling!==i&&a.length>0){this._alignImgs(a);a=[]}a.push(r.querySelector(this.img_selector));i=r}if(a.length>0){this._alignImgs(a)}};e.prototype.watch=function(){var e,t,n,i,r=this,a=c.querySelectorAll(this.results_selector),o=a.length;function s(e){r.align()}function l(e){if(r._alignAllDone){r._alignAllDone=false;setTimeout(function(){r.align();r._alignAllDone=true},100)}}u.addEventListener("resize",l);u.addEventListener("pageshow",s);for(e=0;e<o;e++){t=a[e].querySelector(this.img_selector);if(typeof t!=="undefined"){t.addEventListener("load",l);t.addEventListener("error",l)}}};u.searx.ImageLayout=e})(window,document);searx.ready(function(){searx.on(".result","click",function(){n(this)(true)});searx.on(".result a","focus",function(e){var t=e.target;while(t!==undefined){if(t.classList.contains("result")){if(t.getAttribute("data-vim-selected")===null){n(t)(true)}break}t=t.parentNode}},true);var d={27:{key:"Escape",fun:t,des:"remove focus from the focused input",cat:"Control"},73:{key:"i",fun:o,des:"focus on the search input",cat:"Control"},66:{key:"b",fun:r(-window.innerHeight),des:"scroll one page up",cat:"Navigation"},70:{key:"f",fun:r(window.innerHeight),des:"scroll one page down",cat:"Navigation"},85:{key:"u",fun:r(-window.innerHeight/2),des:"scroll half a page up",cat:"Navigation"},68:{key:"d",fun:r(window.innerHeight/2),des:"scroll half a page down",cat:"Navigation"},71:{key:"g",fun:a(-document.body.scrollHeight,"top"),des:"scroll to the top of the page",cat:"Navigation"},86:{key:"v",fun:a(document.body.scrollHeight,"bottom"),des:"scroll to the bottom of the page",cat:"Navigation"},75:{key:"k",fun:n("up"),des:"select previous search result",cat:"Results"},74:{key:"j",fun:n("down"),des:"select next search result",cat:"Results"},80:{key:"p",fun:i(0),des:"go to previous page",cat:"Results"},78:{key:"n",fun:i(1),des:"go to next page",cat:"Results"},79:{key:"o",fun:s(false),des:"open search result",cat:"Results"},84:{key:"t",fun:s(true),des:"open the result in a new tab",cat:"Results"},82:{key:"r",fun:e,des:"reload page from the server",cat:"Control"},72:{key:"h",fun:u,des:"toggle help window",cat:"Other"}};searx.on(document,"keydown",function(e){if(d.hasOwnProperty(e.keyCode)&&!e.ctrlKey&&!e.altKey&&!e.shiftKey&&!e.metaKey){var t=e.target.tagName.toLowerCase();if(e.keyCode===27){if(t==="input"||t==="select"||t==="textarea"){d[e.keyCode].fun()}}else{if(e.target===document.body||t==="a"||t==="button"){e.preventDefault();d[e.keyCode].fun()}}}});function n(d){return function(e){var t=document.querySelector(".result[data-vim-selected]"),n=d;if(t===null){t=document.querySelector(".result");if(t===null){return}if(d==="down"||d==="up"){n=t}}var i,r=document.querySelectorAll(".result");if(typeof n!=="string"){i=n}else{switch(n){case"visible":var a=document.documentElement.scrollTop||document.body.scrollTop;var o=a+document.documentElement.clientHeight;for(var s=0;s<r.length;s++){i=r[s];var l=i.offsetTop;var u=l+i.clientHeight;if(u<=o&&l>a){break}}break;case"down":i=t.nextElementSibling;if(i===null){i=r[0]}break;case"up":i=t.previousElementSibling;if(i===null){i=r[r.length-1]}break;case"bottom":i=r[r.length-1];break;case"top":default:i=r[0]}}if(i){t.removeAttribute("data-vim-selected");i.setAttribute("data-vim-selected","true");var c=i.querySelector("h3 a")||i.querySelector("a");if(c!==null){c.focus()}if(!e){f()}}}}function e(){document.location.reload(true)}function t(){if(document.activeElement){document.activeElement.blur()}}function i(t){return function(){var e=$('div#pagination button[type="submit"]');if(e.length!==2){console.log("page navigation with this theme is not supported");return}if(t>=0&&t<e.length){e[t].click()}else{console.log("pageButtonClick(): invalid argument")}}}function f(){var e=document.querySelector(".result[data-vim-selected]");if(e===null){return}var t=document.documentElement.scrollTop||document.body.scrollTop,n=document.documentElement.clientHeight,i=e.offsetTop,r=i+e.clientHeight,a=120;if(e.previousElementSibling===null&&r<n){window.scroll(window.scrollX,0);return}if(t>i-a){window.scroll(window.scrollX,i-a)}else{var o=t+n;if(o<r+a){window.scroll(window.scrollX,r-n+a)}}}function r(e){return function(){window.scrollBy(0,e);n("visible")()}}function a(e,t){return function(){window.scrollTo(0,e);n(t)()}}function o(){window.scrollTo(0,0);document.querySelector("#q").focus()}function s(n){return function(){var e=document.querySelector(".result[data-vim-selected] h3 a");if(e!==null){var t=e.getAttribute("href");if(n){window.open(t)}else{window.location.href=t}}}}function l(e){var n={};for(var t in d){var i=d[t];n[i.cat]=n[i.cat]||[];n[i.cat].push(i)}var r=Object.keys(n).sort(function(e,t){return n[t].length-n[e].length});if(r.length===0){return}var a='<a href="#" class="close" aria-label="close" title="close">×</a>';a+="<h3>How to navigate searx with Vim-like hotkeys</h3>";a+="<table>";for(var o=0;o<r.length;o++){var s=n[r[o]];var l=o===r.length-1;var u=o%2===0;if(u){a+="<tr>"}a+="<td>";a+="<h4>"+s[0].cat+"</h4>";a+='<ul class="list-unstyled">';for(var c in s){a+="<li><kbd>"+s[c].key+"</kbd> "+s[c].des+"</li>"}a+="</ul>";a+="</td>";if(!u||l){a+="</tr>"}}a+="</table>";e.innerHTML=a}function u(){var e=document.querySelector("#vim-hotkeys-help");console.log(e);if(e===undefined||e===null){e=document.createElement("div");e.id="vim-hotkeys-help";e.className="dialog-modal";e.style="width: 40%";l(e);var t=document.getElementsByTagName("body")[0];t.appendChild(e)}else{e.classList.toggle("invisible");return}}});(function(e,c,v){"use strict";v.ready(function(){v.on(".searx_overpass_request","click",function(e){this.classList.remove("searx_overpass_request");var t="https://overpass-api.de/api/interpreter?data=";var n=t+"[out:json][timeout:25];(";var i=");out meta;";var r=this.dataset.osmId;var a=this.dataset.osmType;var o=c.querySelector("#"+this.dataset.resultTable);var s=c.querySelector("#"+this.dataset.resultTableLoadicon);var l=["addr:city","addr:country","addr:housenumber","addr:postcode","addr:street"];if(r&&a&&o){var u=null;switch(a){case"node":u=n+"node("+r+");"+i;break;case"way":u=n+"way("+r+");"+i;break;case"relation":u=n+"relation("+r+");"+i;break;default:break}if(u){v.http("GET",u).then(function(e,t){e=JSON.parse(e);if(e&&e.elements&&e.elements[0]){var n=e.elements[0];var i="";for(var r in n.tags){if(n.tags.name===null||l.indexOf(r)==-1){i+="<tr><td>"+r+"</td><td>";switch(r){case"phone":case"fax":i+='<a href="tel:'+n.tags[r].replace(/ /g,"")+'">'+n.tags[r]+"</a>";break;case"email":i+='<a href="mailto:'+n.tags[r]+'">'+n.tags[r]+"</a>";break;case"website":case"url":i+='<a href="'+n.tags[r]+'">'+n.tags[r]+"</a>";break;case"wikidata":i+='<a href="https://www.wikidata.org/wiki/'+n.tags[r]+'">'+n.tags[r]+"</a>";break;case"wikipedia":if(n.tags[r].indexOf(":")!=-1){i+='<a href="https://'+n.tags[r].substring(0,n.tags[r].indexOf(":"))+".wikipedia.org/wiki/"+n.tags[r].substring(n.tags[r].indexOf(":")+1)+'">'+n.tags[r]+"</a>";break}default:i+=n.tags[r];break}i+="</td></tr>"}}s.parentNode.removeChild(s);o.classList.remove("invisible");o.querySelector("tbody").innerHTML=i}}).catch(function(){s.classList.remove("invisible");s.innerHTML="could not load data!"})}}e.preventDefault()});v.on(".searx_init_map","click",function(e){this.classList.remove("searx_init_map");var d=this.dataset.leafletTarget;var f=parseFloat(this.dataset.mapLon);var p=parseFloat(this.dataset.mapLat);var h=parseFloat(this.dataset.mapZoom);var m=JSON.parse(this.dataset.mapBoundingbox);var g=JSON.parse(this.dataset.mapGeojson);v.loadStyle("leaflet/leaflet.css");v.loadScript("leaflet/leaflet.js",function(){var e=null;if(m){var t=L.latLng(m[0],m[2]);var n=L.latLng(m[1],m[3]);e=L.latLngBounds(t,n)}var i=L.map(d);var r="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";var a='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';var o=new L.TileLayer(r,{minZoom:1,maxZoom:19,attribution:a});var s="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png";var l='Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';var u=new L.TileLayer(s,{minZoom:1,maxZoom:19,attribution:l});if(e){setTimeout(function(){i.fitBounds(e,{maxZoom:17})},0)}else if(f&&p){if(h){i.setView(new L.latLng(p,f),h)}else{i.setView(new L.latLng(p,f),8)}}i.addLayer(o);var c={"OSM Mapnik":o};L.control.layers(c).addTo(i);if(g){L.geoJson(g).addTo(i)}});e.preventDefault()})})})(window,document,window.searx);(function(e,o,t){"use strict";t.ready(function(){t.image_thumbnail_layout=new t.ImageLayout("#urls","#urls .result-images","img.image_thumbnail",200);t.image_thumbnail_layout.watch();t.on(".btn-collapse","click",function(e){var t=this.getAttribute("data-btn-text-collapsed");var n=this.getAttribute("data-btn-text-not-collapsed");var i=this.getAttribute("data-target");var r=o.querySelector(i);var a=this.innerHTML;if(this.classList.contains("collapsed")){a=a.replace(t,n)}else{a=a.replace(n,t)}this.innerHTML=a;this.classList.toggle("collapsed");r.classList.toggle("invisible")});t.on(".media-loader","click",function(e){var t=this.getAttribute("data-target");var n=o.querySelector(t+" > iframe");var i=n.getAttribute("src");if(i===null||i===undefined||i===false){n.setAttribute("src",n.getAttribute("data-src"))}});e.addEventListener("scroll",function(){var e=o.getElementById("backToTop"),t=document.documentElement.scrollTop||document.body.scrollTop;if(e!==null){if(t>=200){e.style.opacity=1}else{e.style.opacity=0}}})})})(window,document,window.searx);(function(t,i,n){"use strict";var r=true,a="q",o;function s(e){if(e.setSelectionRange){var t=e.value.length;e.setSelectionRange(t,t)}}function l(){if(o.value.length>0){var e=document.getElementById("search");setTimeout(e.submit.bind(e),0)}}function u(e){var t=document.getElementById("clear_search");var n=function(){if(e.value.length===0){t.classList.add("empty")}else{t.classList.remove("empty")}};n();t.addEventListener("click",function(){e.value="";e.focus();n()});e.addEventListener("keyup",n,false)}n.ready(function(){o=i.getElementById(a);function e(e){if(r){s(o);r=false}else{}}if(o!==null){u(o);if(n.autocompleter){n.autocomplete=AutoComplete.call(t,{Url:"./autocompleter",EmptyMessage:n.no_item_found,HttpMethod:n.method,MinChars:4,Delay:300},"#"+a);t.addEventListener("resize",function(){var e=new CustomEvent("position");o.dispatchEvent(e)})}o.addEventListener("focus",e,false);o.focus()}if(o!==null&&n.search_on_category_select){i.querySelector(".help").className="invisible";n.on("#categories input","change",function(e){var t,n=i.querySelectorAll('#categories input[type="checkbox"]');for(t=0;t<n.length;t++){if(n[t]!==this&&n[t].checked){n[t].click()}}if(!this.checked){this.click()}l();return false});n.on(i.getElementById("time_range"),"change",l);n.on(i.getElementById("language"),"change",l)}})})(window,document,window.searx); +//# sourceMappingURL=searx.min.js.map
\ No newline at end of file diff --git a/searx/static/themes/simple/js/searx.min.js.map b/searx/static/themes/simple/js/searx.min.js.map new file mode 100644 index 000000000..d7a1eeac8 --- /dev/null +++ b/searx/static/themes/simple/js/searx.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["searx.js"],"names":["window","searx","w","d","Element","ElementPrototype","matches","matchesSelector","webkitMatchesSelector","msMatchesSelector","selector","node","this","nodes","parentNode","document","querySelectorAll","i","prototype","callbackSafe","callback","el","e","call","exception","console","log","on","obj","eventType","useCapture","addEventListener","target","srcElement","found","parentElement","ready","readyState","bind","http","method","url","req","XMLHttpRequest","resolve","reject","promise","then","catch","open","onload","status","response","responseType","Error","statusText","onerror","onabort","send","ex","loadStyle","src","path","static_path","id","replace","s","getElementById","createElement","setAttribute","body","appendChild","loadScript","hasAttribute","apply","insertBefore","newNode","referenceNode","element","insertAfter","nextSibling","classList","add","f","exports","module","define","amd","g","global","self","AutoComplete","t","n","r","o","u","a","require","code","l","length","1","ConditionOperator","EventType","params","Array","isArray","forEach","elements","input","specificParams","merge","defaults","DOMResults","create","Input","nodeName","match","getAttribute","_Position","$Listeners","blur","_Blur","destroy","focus","_Focus","keyup","event","KEYUP","keydown","KEYDOWN","position","getEventsByType","type","mappings","key","KeyboardMappings","Event","undefined","eventIdentifier","condition","mapping","Operator","AND","OR","Not","hasOwnProperty","Is","keyCode","From","To","name","Conditions","Callback","makeRequest","propertyHttpHeaders","Object","getOwnPropertyNames","HttpHeaders","request","_HttpMethod","_Url","queryParams","_Pre","queryParamsStringify","encodeURIComponent","_QueryArg","indexOf","setRequestHeader","onreadystatechange","$Cache","ajax","timeout","$AjaxTimer","clearTimeout","setTimeout","Delay","Request","abort","cache","_Cache","removeEventListener","removeChild","tmp","arguments","EmptyMessage","Highlight","getRegex","value","RegExp","transform","Content-type","Limit","MinChars","HttpMethod","QueryArg","Url","Enter","liActive","querySelector","preventDefault","_Select","KeyUpAndDown_down","KeyUpAndDown_up","first","last","active","currentIndex","children","lisCount","getElementsByTagName","remove","item","AlphaNum","oldValue","currentValue","_MinChars","_Render","_Post","_Open","_EmptyMessage","emptyMessage","_Limit","limit","isNaN","parseInt","minchars","_Highlight","label","now","li","onclick","onmouseenter","offsetTop","offsetHeight","offsetLeft","clientWidth","ul","_RenderRaw","_RenderResponseItems","hasChildNodes","childNodes","reverse","Math","min","abs","innerHTML","Label","Value","returnResponse","json","JSON","parse","keys","push","ImageLayout","container_selector","results_selector","img_selector","maxHeight","margin","_alignAllDone","_getHeigth","images","width","img","naturalWidth","naturalHeight","_setSize","height","imgWidth","imagesLength","style","marginLeft","marginTop","marginRight","marginBottom","_alignImgs","imgGroup","slice","h","containerWidth","align","results_selectorNode","results_length","previous","current","previousElementSibling","watch","imgNodeLength","results_nodes","throttleAlign","highlightResult","contains","vimKeys","27","fun","removeFocus","des","cat","73","searchInputFocus","66","scrollPage","innerHeight","70","85","68","71","scrollPageTo","scrollHeight","86","75","74","80","pageButtonClick","78","79","openResult","84","82","reloadPage","72","toggleHelp","ctrlKey","altKey","shiftKey","metaKey","tagName","toLowerCase","which","noScroll","effectiveWhich","next","results","top","documentElement","scrollTop","bot","clientHeight","etop","ebot","nextElementSibling","removeAttribute","link","scrollPageToSelected","location","reload","activeElement","num","buttons","$","click","sel","wtop","wheight","offset","scroll","scrollX","wbot","amount","scrollBy","nav","scrollTo","newTab","href","initHelpContent","divElement","categories","k","sorted","sort","b","html","lastCategory","cj","helpPanel","className","toggle","overpass_url","query_start","query_end","osm_id","dataset","osmId","osm_type","osmType","result_table","resultTable","result_table_loadicon","resultTableLoadicon","osm_ignore_tags","query","contentType","newHtml","row","tags","substring","leaflet_target","leafletTarget","map_lon","parseFloat","mapLon","map_lat","mapLat","map_zoom","mapZoom","map_boundingbox","mapBoundingbox","map_geojson","mapGeojson","map_bounds","southWest","L","latLng","northEast","latLngBounds","map","osmMapnikUrl","osmMapnikAttrib","osmMapnik","TileLayer","minZoom","maxZoom","attribution","osmWikimediaUrl","osmWikimediaAttrib","osmWikimedia","fitBounds","setView","addLayer","baseLayers","OSM Mapnik","control","layers","addTo","geoJson","image_thumbnail_layout","btnLabelCollapsed","btnLabelNotCollapsed","targetElement","iframe_load","srctest","opacity","firstFocus","qinput_id","qinput","placeCursorAtEnd","setSelectionRange","len","submitIfQuery","search","submit","createClearButton","cs","updateClearButton","placeCursorAtEndOnce","autocompleter","autocomplete","no_item_found","CustomEvent","dispatchEvent","search_on_category_select","checked"],"mappings":";;AAiBAA,OAAOC,MAAQ,SAAUC,EAAGC,GAE1B,aAMA,GAAID,EAAEE,QAAS,EACb,SAAUC,GACRA,EAAiBC,QAAUD,EAAiBC,SAC5CD,EAAiBE,iBACjBF,EAAiBG,uBACjBH,EAAiBI,mBACjB,SAASC,GACP,IAAIC,EAAOC,KAAMC,GAASF,EAAKG,YAAcH,EAAKI,UAAUC,iBAAiBN,GAAWO,GAAK,EAC7F,MAAOJ,IAAQI,IAAMJ,EAAMI,IAAMN,GACjC,QAASE,EAAMI,KARnB,CAUGb,QAAQc,WAGb,SAASC,EAAaC,EAAUC,EAAIC,GAClC,IACEF,EAASG,KAAKF,EAAIC,GAClB,MAAOE,GACPC,QAAQC,IAAIF,IAIhB,IAAIvB,EAAQD,OAAOC,OAAS,GAE5BA,EAAM0B,GAAK,SAASC,EAAKC,EAAWT,EAAUU,GAC5CA,EAAaA,GAAc,MAC3B,UAAWF,IAAQ,SAAU,CAE3BA,EAAIG,iBAAiBF,EAAWT,EAAUU,OACrC,CAEL3B,EAAE4B,iBAAiBF,EAAW,SAASP,GACrC,IAAID,EAAKC,EAAEU,QAAUV,EAAEW,WAAYC,EAAQ,MAC3C,MAAOb,GAAMA,EAAGf,SAAWe,IAAOlB,KAAO+B,EAAQb,EAAGf,QAAQsB,IAAOP,EAAKA,EAAGc,cAC3E,GAAID,EAAOf,EAAaC,EAAUC,EAAIC,IACrCQ,KAIP7B,EAAMmC,MAAQ,SAAShB,GACrB,GAAIL,SAASsB,YAAc,UAAW,CACpCjB,EAASG,KAAKrB,OACT,CACLA,EAAE6B,iBAAiB,mBAAoBX,EAASkB,KAAKpC,MAIzDD,EAAMsC,KAAO,SAASC,EAAQC,EAAKrB,GACjC,IAAIsB,EAAM,IAAIC,eACdC,EAAU,aACVC,EAAS,aACTC,EAAU,CACRC,KAAM,SAAS3B,GAAYwB,EAAUxB,EAAU,OAAO0B,GACtDE,MAAO,SAAS5B,GAAYyB,EAASzB,EAAU,OAAO0B,IAGxD,IACEJ,EAAIO,KAAKT,EAAQC,EAAK,MAGtBC,EAAIQ,OAAS,WACX,GAAIR,EAAIS,QAAU,IAAK,CACrBP,EAAQF,EAAIU,SAAUV,EAAIW,kBACrB,CACLR,EAAOS,MAAMZ,EAAIa,eAKrBb,EAAIc,QAAU,WACZX,EAAOS,MAAM,mBAGfZ,EAAIe,QAAU,WACZZ,EAAOS,MAAM,4BAIfZ,EAAIgB,OACJ,MAAOC,GACPd,EAAOc,GAGT,OAAOb,GAGT7C,EAAM2D,UAAY,SAASC,GACzB,IAAIC,EAAO7D,EAAM8D,YAAcF,EAC/BG,EAAK,SAAWH,EAAII,QAAQ,IAAK,KACjCC,EAAI/D,EAAEgE,eAAeH,GACrB,GAAIE,IAAM,KAAM,CACdA,EAAI/D,EAAEiE,cAAc,QACpBF,EAAEG,aAAa,KAAML,GACrBE,EAAEG,aAAa,MAAO,cACtBH,EAAEG,aAAa,OAAQ,YACvBH,EAAEG,aAAa,OAAQP,GACvB3D,EAAEmE,KAAKC,YAAYL,KAIvBjE,EAAMuE,WAAa,SAASX,EAAKzC,GAC/B,IAAI0C,EAAO7D,EAAM8D,YAAcF,EAC/BG,EAAK,UAAYH,EAAII,QAAQ,IAAK,KAClCC,EAAI/D,EAAEgE,eAAeH,GACrB,GAAIE,IAAM,KAAM,CACdA,EAAI/D,EAAEiE,cAAc,UACpBF,EAAEG,aAAa,KAAML,GACrBE,EAAEG,aAAa,MAAOP,GACtBI,EAAEhB,OAAS9B,EACX8C,EAAEV,QAAU,WACVU,EAAEG,aAAa,QAAS,MAE1BlE,EAAEmE,KAAKC,YAAYL,QACd,IAAKA,EAAEO,aAAa,SAAU,CACnC,IACErD,EAASsD,MAAMR,EAAG,IAClB,MAAO1C,GACPC,QAAQC,IAAIF,QAET,CACLC,QAAQC,IAAI,mCAAqCoC,EAAO,mBAI5D7D,EAAM0E,aAAe,SAAUC,EAASC,GACtCC,QAAQhE,WAAW6D,aAAaC,EAASC,IAG3C5E,EAAM8E,YAAc,SAASH,EAASC,GACpCA,EAAc/D,WAAW6D,aAAaC,EAASC,EAAcG,cAG/D/E,EAAM0B,GAAG,SAAU,QAAS,SAASL,GACnC,IAAID,EAAKC,EAAEU,QAAUV,EAAEW,WACvBrB,KAAKE,WAAWmE,UAAUC,IAAI,eAGhC,OAAOjF,EAjJM,CAkJZD,OAAQe,WACV,SAAUoE,GAAG,UAAUC,UAAU,iBAAiBC,SAAS,YAAY,CAACA,OAAOD,QAAQD,SAAS,UAAUG,SAAS,YAAYA,OAAOC,IAAI,CAACD,OAAO,GAAGH,OAAO,CAAC,IAAIK,EAAE,UAAUxF,SAAS,YAAY,CAACwF,EAAExF,YAAY,UAAUyF,SAAS,YAAY,CAACD,EAAEC,YAAY,UAAUC,OAAO,YAAY,CAACF,EAAEE,SAAS,CAACF,EAAE5E,KAAK4E,EAAEG,aAAeR,MAAjU,CAAwU,WAAW,IAAIG,EAAOD,EAAOD,EAAQ,OAAO,SAAU9D,EAAEsE,EAAEC,EAAEC,GAAG,SAAS5B,EAAE6B,EAAEC,GAAG,IAAIH,EAAEE,GAAG,CAAC,IAAIH,EAAEG,GAAG,CAAC,IAAIE,SAASC,SAAS,YAAYA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEF,GAAG,GAAG,GAAG9E,EAAE,OAAOA,EAAE8E,GAAG,GAAG,IAAIZ,EAAE,IAAI7B,MAAM,uBAAuByC,EAAE,KAAK,MAAMZ,EAAEgB,KAAK,mBAAmBhB,EAAE,IAAIiB,EAAEP,EAAEE,GAAG,CAACX,QAAQ,IAAIQ,EAAEG,GAAG,GAAGxE,KAAK6E,EAAEhB,QAAQ,SAAS9D,GAAG,IAAIuE,EAAED,EAAEG,GAAG,GAAGzE,GAAG,OAAO4C,EAAE2B,EAAEA,EAAEvE,IAAI8E,EAAEA,EAAEhB,QAAQ9D,EAAEsE,EAAEC,EAAEC,GAAG,OAAOD,EAAEE,GAAGX,QAAQ,IAAInE,SAASiF,SAAS,YAAYA,QAAQ,IAAI,IAAIH,EAAE,EAAEA,EAAED,EAAEO,OAAON,IAAI7B,EAAE4B,EAAEC,IAAI,OAAO7B,EAAvb,CAA2b,CAACoC,EAAE,CAAC,SAASJ,EAAQb,EAAOD;;;;;;;;;;AAU50B,aACA,IAAImB,GACJ,SAAWA,GACPA,EAAkBA,EAAkB,OAAS,GAAK,MAClDA,EAAkBA,EAAkB,MAAQ,GAAK,MAFrD,CAGGA,IAAsBA,EAAoB,KAC7C,IAAIC,GACJ,SAAWA,GACPA,EAAUA,EAAU,WAAa,GAAK,UACtCA,EAAUA,EAAU,SAAW,GAAK,SAFxC,CAGGA,IAAcA,EAAY,KAO7B,IAAIb,EAAgB,WAEhB,SAASA,EAAac,EAAQ/F,GAC1B,GAAI+F,SAAgB,EAAG,CAAEA,EAAS,GAClC,GAAI/F,SAAkB,EAAG,CAAEA,EAAW,sBACtC,GAAIgG,MAAMC,QAAQjG,GAAW,CACzBA,EAASkG,QAAQ,SAAU1C,GACvB,IAAIyB,EAAac,EAAQvC,UAG5B,UAAWxD,GAAY,SAAU,CAClC,IAAImG,EAAW9F,SAASC,iBAAiBN,GACzCgG,MAAMxF,UAAU0F,QAAQrF,KAAKsF,EAAU,SAAUC,GAC7C,IAAInB,EAAac,EAAQK,SAG5B,CACD,IAAIC,EAAiBpB,EAAaqB,MAAMrB,EAAasB,SAAUR,EAAQ,CACnES,WAAYnG,SAASqD,cAAc,SAEvCuB,EAAazE,UAAUiG,OAAOJ,EAAgBrG,GAC9C,OAAOqG,GAGfpB,EAAazE,UAAUiG,OAAS,SAAUV,EAAQ3B,GAC9C2B,EAAOW,MAAQtC,EACf,GAAI2B,EAAOW,MAAMC,SAASC,MAAM,cAAgBb,EAAOW,MAAM3C,aAAa,UAAY,OAASgC,EAAOW,MAAMG,aAAa,QAAQD,MAAM,mBAAoB,CACvJb,EAAOW,MAAM/C,aAAa,eAAgB,OAC1CoC,EAAOe,UAAUf,GACjBA,EAAOW,MAAMtG,WAAWyD,YAAYkC,EAAOS,YAC3CT,EAAOgB,WAAa,CAChBC,KAAMjB,EAAOkB,MAAMrF,KAAKmE,GACxBmB,QAASjC,EAAazE,UAAU0G,QAAQtF,KAAK,KAAMmE,GACnDoB,MAAOpB,EAAOqB,OAAOxF,KAAKmE,GAC1BsB,MAAOpC,EAAazE,UAAU8G,MAAM1F,KAAK,KAAMmE,EAAQD,EAAUyB,OACjEC,QAASvC,EAAazE,UAAU8G,MAAM1F,KAAK,KAAMmE,EAAQD,EAAU2B,SACnEC,SAAU3B,EAAOe,UAAUlF,KAAKmE,IAEpC,IAAK,IAAIuB,KAASvB,EAAOgB,WAAY,CACjChB,EAAOW,MAAMrF,iBAAiBiG,EAAOvB,EAAOgB,WAAWO,OAInErC,EAAazE,UAAUmH,gBAAkB,SAAU5B,EAAQ6B,GACvD,IAAIC,EAAW,GACf,IAAK,IAAIC,KAAO/B,EAAOgC,iBAAkB,CACrC,IAAIT,EAAQxB,EAAUyB,MACtB,GAAIxB,EAAOgC,iBAAiBD,GAAKE,QAAUC,UAAW,CAClDX,EAAQvB,EAAOgC,iBAAiBD,GAAKE,MAEzC,GAAIV,GAASM,EAAM,CACfC,EAASC,GAAO/B,EAAOgC,iBAAiBD,IAGhD,OAAOD,GAEX5C,EAAazE,UAAU8G,MAAQ,SAAUvB,EAAQ6B,EAAMN,GACnD,IAAIY,EAAkB,SAAUC,GAC5B,GAAKvB,IAAU,MAAQwB,EAAQC,UAAYxC,EAAkByC,KAAS1B,IAAU,OAASwB,EAAQC,UAAYxC,EAAkB0C,GAAK,CAChIJ,EAAYlD,EAAaqB,MAAM,CAC3BkC,IAAK,OACNL,GACH,GAAIA,EAAUM,eAAe,MAAO,CAChC,GAAIN,EAAUO,IAAMpB,EAAMqB,QAAS,CAC/B/B,GAASuB,EAAUK,QAElB,CACD5B,EAAQuB,EAAUK,UAGrB,GAAIL,EAAUM,eAAe,SAAWN,EAAUM,eAAe,MAAO,CACzE,GAAInB,EAAMqB,SAAWR,EAAUS,MAAQtB,EAAMqB,SAAWR,EAAUU,GAAI,CAClEjC,GAASuB,EAAUK,QAElB,CACD5B,EAAQuB,EAAUK,QAKlC,IAAK,IAAIM,KAAQ7D,EAAazE,UAAUmH,gBAAgB5B,EAAQ6B,GAAO,CACnE,IAAIQ,EAAUnD,EAAaqB,MAAM,CAC7B+B,SAAUxC,EAAkByC,KAC7BvC,EAAOgC,iBAAiBe,IAAQlC,EAAQf,EAAkByC,KAAOF,EAAQC,SAC5ED,EAAQW,WAAW7C,QAAQgC,GAC3B,GAAItB,IAAU,KAAM,CAChBwB,EAAQY,SAASnI,KAAKkF,EAAQuB,MAI1CrC,EAAazE,UAAUyI,YAAc,SAAUlD,EAAQrF,GACnD,IAAIwI,EAAsBC,OAAOC,oBAAoBrD,EAAOsD,aAAcC,EAAU,IAAIrH,eAAkBH,EAASiE,EAAOwD,cAAexH,EAAMgE,EAAOyD,OAAQC,EAAc1D,EAAO2D,OAAQC,EAAuBC,mBAAmB7D,EAAO8D,aAAe,IAAMD,mBAAmBH,GACpR,GAAI3H,EAAO8E,MAAM,UAAW,CACxB,GAAI7E,EAAI+H,QAAQ,QAAU,EAAG,CACzB/H,GAAO,IAAM4H,MAEZ,CACD5H,GAAO,IAAM4H,GAGrBL,EAAQ/G,KAAKT,EAAQC,EAAK,MAC1B,IAAK,IAAIxB,EAAI2I,EAAoBvD,OAAS,EAAGpF,GAAK,EAAGA,IAAK,CACtD+I,EAAQS,iBAAiBb,EAAoB3I,GAAIwF,EAAOsD,YAAYH,EAAoB3I,KAE5F+I,EAAQU,mBAAqB,WACzB,GAAIV,EAAQ3H,YAAc,GAAK2H,EAAQ7G,QAAU,IAAK,CAClDsD,EAAOkE,OAAOR,GAAeH,EAAQ5G,SACrChC,EAAS4I,EAAQ5G,YAGzB,OAAO4G,GAEXrE,EAAazE,UAAU0J,KAAO,SAAUnE,EAAQuD,EAASa,GACrD,GAAIA,SAAiB,EAAG,CAAEA,EAAU,KACpC,GAAIpE,EAAOqE,WAAY,CACnB9K,OAAO+K,aAAatE,EAAOqE,YAE/B,GAAID,IAAY,KAAM,CAClBpE,EAAOqE,WAAa9K,OAAOgL,WAAWrF,EAAazE,UAAU0J,KAAKtI,KAAK,KAAMmE,EAAQuD,EAAS,OAAQvD,EAAOwE,WAE5G,CACD,GAAIxE,EAAOyE,QAAS,CAChBzE,EAAOyE,QAAQC,QAEnB1E,EAAOyE,QAAUlB,EACjBvD,EAAOyE,QAAQxH,KAAK+C,EAAO8D,YAAc,IAAM9D,EAAO2D,UAG9DzE,EAAazE,UAAUkK,MAAQ,SAAU3E,EAAQrF,GAC7C,IAAIgC,EAAWqD,EAAO4E,OAAO5E,EAAO2D,QACpC,GAAIhH,IAAauF,UAAW,CACxB,IAAIqB,EAAUrE,EAAazE,UAAUyI,YAAYlD,EAAQrF,GACzDuE,EAAazE,UAAU0J,KAAKnE,EAAQuD,OAEnC,CACD5I,EAASgC,KAGjBuC,EAAazE,UAAU0G,QAAU,SAAUnB,GACvC,IAAK,IAAIuB,KAASvB,EAAOgB,WAAY,CACjChB,EAAOW,MAAMkE,oBAAoBtD,EAAOvB,EAAOgB,WAAWO,IAE9DvB,EAAOS,WAAWpG,WAAWyK,YAAY9E,EAAOS,aAEpD,OAAOvB,EAhJQ,GAkJnBA,EAAaqB,MAAQ,WACjB,IAAIA,EAAQ,GAAIwE,EAChB,IAAK,IAAIvK,EAAI,EAAGA,EAAIwK,UAAUpF,OAAQpF,IAAK,CACvC,IAAKuK,KAAOC,UAAUxK,GAAI,CACtB+F,EAAMwE,GAAOC,UAAUxK,GAAGuK,IAGlC,OAAOxE,GAEXrB,EAAasB,SAAW,CACpBgE,MAAO,IACPS,aAAc,iBACdC,UAAW,CACPC,SAAU,SAAUC,GAChB,OAAO,IAAIC,OAAOD,EAAO,OAE7BE,UAAW,SAAUF,GACjB,MAAO,WAAaA,EAAQ,cAGpC9B,YAAa,CACTiC,eAAgB,qCAEpBC,MAAO,EACPC,SAAU,EACVC,WAAY,MACZC,SAAU,IACVC,IAAK,KACL5D,iBAAkB,CACd6D,MAAS,CACL7C,WAAY,CAAC,CACLL,GAAI,GACJF,IAAK,QAEbQ,SAAU,SAAU1B,GAChB,GAAIpH,KAAKsG,WAAWK,aAAa,SAASiD,QAAQ,UAAY,EAAG,CAC7D,IAAI+B,EAAW3L,KAAKsG,WAAWsF,cAAc,aAC7C,GAAID,IAAa,KAAM,CACnBvE,EAAMyE,iBACN7L,KAAK8L,QAAQH,GACb3L,KAAKsG,WAAW7C,aAAa,QAAS,mBAIlD0E,SAAUxC,EAAkByC,IAC5BN,MAAOlC,EAAU2B,SAErBwE,kBAAqB,CACjBlD,WAAY,CAAC,CACLL,GAAI,GACJF,IAAK,OAET,CACIE,GAAI,GACJF,IAAK,QAEbQ,SAAU,SAAU1B,GAChBA,EAAMyE,kBAEV1D,SAAUxC,EAAkB0C,GAC5BP,MAAOlC,EAAU2B,SAErByE,gBAAmB,CACfnD,WAAY,CAAC,CACLL,GAAI,GACJF,IAAK,OAET,CACIE,GAAI,GACJF,IAAK,QAEbQ,SAAU,SAAU1B,GAChBA,EAAMyE,iBACN,IAAII,EAAQjM,KAAKsG,WAAWsF,cAAc,+BAAgCM,EAAOlM,KAAKsG,WAAWsF,cAAc,8BAA+BO,EAASnM,KAAKsG,WAAWsF,cAAc,aACrL,GAAIO,EAAQ,CACR,IAAIC,EAAetG,MAAMxF,UAAUsJ,QAAQjJ,KAAKwL,EAAOjM,WAAWmM,SAAUF,GAAS3E,EAAW4E,GAAgBhF,EAAMqB,QAAU,IAAK6D,EAAWtM,KAAKsG,WAAWiG,qBAAqB,MAAM9G,OAC3L,GAAI+B,EAAW,EAAG,CACdA,EAAW8E,EAAW,OAErB,GAAI9E,GAAY8E,EAAU,CAC3B9E,EAAW,EAEf2E,EAAO9H,UAAUmI,OAAO,UACxBL,EAAO5K,cAAc8K,SAASI,KAAKjF,GAAUnD,UAAUC,IAAI,eAE1D,GAAI4H,GAAQ9E,EAAMqB,SAAW,GAAI,CAClCyD,EAAK7H,UAAUC,IAAI,eAElB,GAAI2H,EAAO,CACZA,EAAM5H,UAAUC,IAAI,YAG5B6D,SAAUxC,EAAkB0C,GAC5BP,MAAOlC,EAAUyB,OAErBqF,SAAY,CACR7D,WAAY,CAAC,CACLL,GAAI,GACJF,IAAK,MACN,CACCI,KAAM,GACNC,GAAI,GACJL,IAAK,OAEbQ,SAAU,WACN,IAAI6D,EAAW3M,KAAKwG,MAAMG,aAAa,+BAAgCiG,EAAe5M,KAAKwJ,OAC3F,GAAIoD,IAAiB,IAAMA,EAAanH,QAAUzF,KAAK6M,YAAa,CAChE,IAAKF,GAAYC,GAAgBD,EAAU,CACvC3M,KAAKsG,WAAW7C,aAAa,QAAS,qBAE1CsB,EAAazE,UAAUkK,MAAMxK,KAAM,SAAUwC,GACzCxC,KAAK8M,QAAQ9M,KAAK+M,MAAMvK,IACxBxC,KAAKgN,SACPtL,KAAK1B,SAGfmI,SAAUxC,EAAkByC,IAC5BN,MAAOlC,EAAUyB,QAGzBf,WAAY,KACZgE,QAAS,KACT9D,MAAO,KAIPyG,cAAe,WACX,IAAIC,EAAe,GACnB,GAAIlN,KAAKwG,MAAM3C,aAAa,mCAAoC,CAC5DqJ,EAAelN,KAAKwG,MAAMG,aAAa,wCAEtC,GAAI3G,KAAK8K,eAAiB,MAAO,CAClCoC,EAAelN,KAAK8K,iBAEnB,CACDoC,EAAe,GAEnB,OAAOA,GAKXC,OAAQ,WACJ,IAAIC,EAAQpN,KAAKwG,MAAMG,aAAa,2BACpC,GAAI0G,MAAMD,IAAUA,IAAU,KAAM,CAChC,OAAOpN,KAAKqL,MAEhB,OAAOiC,SAASF,EAAO,KAK3BP,UAAW,WACP,IAAIU,EAAWvN,KAAKwG,MAAMG,aAAa,8BACvC,GAAI0G,MAAME,IAAaA,IAAa,KAAM,CACtC,OAAOvN,KAAKsL,SAEhB,OAAOgC,SAASC,EAAU,KAK9BC,WAAY,SAAUC,GAClB,OAAOA,EAAMpK,QAAQrD,KAAK+K,UAAUC,SAAShL,KAAKwJ,QAASxJ,KAAK+K,UAAUI,YAK9E9B,YAAa,WACT,GAAIrJ,KAAKwG,MAAM3C,aAAa,4BAA6B,CACrD,OAAO7D,KAAKwG,MAAMG,aAAa,4BAEnC,OAAO3G,KAAKuL,YAKhB5B,UAAW,WACP,GAAI3J,KAAKwG,MAAM3C,aAAa,gCAAiC,CACzD,OAAO7D,KAAKwG,MAAMG,aAAa,gCAEnC,OAAO3G,KAAKwL,UAKhBlC,KAAM,WACF,GAAItJ,KAAKwG,MAAM3C,aAAa,qBAAsB,CAC9C,OAAO7D,KAAKwG,MAAMG,aAAa,qBAEnC,OAAO3G,KAAKyL,KAKhB1E,MAAO,SAAU2G,GACb,GAAIA,IAAQ,KAAM,CACd1N,KAAKsG,WAAW7C,aAAa,QAAS,gBACtCzD,KAAKwG,MAAM/C,aAAa,8BAA+BzD,KAAKwG,MAAMyE,WAEjE,CACD,IAAIpF,EAAS7F,KACboK,WAAW,WACPvE,EAAOkB,MAAM,OACd,OAMX0D,OAAQ,SAAUQ,GACd,OAAOjL,KAAK+J,OAAOkB,IAKvB/D,OAAQ,WACJ,IAAIyF,EAAW3M,KAAKwG,MAAMG,aAAa,+BACvC,KAAMgG,GAAY3M,KAAKwG,MAAMyE,OAAS0B,IAAa3M,KAAK6M,aAAe7M,KAAKwG,MAAMyE,MAAMxF,OAAQ,CAC5FzF,KAAKsG,WAAW7C,aAAa,QAAS,uBAM9CuJ,MAAO,WACH,IAAInH,EAAS7F,KACb8F,MAAMxF,UAAU0F,QAAQrF,KAAKX,KAAKsG,WAAWiG,qBAAqB,MAAO,SAAUoB,GAC/E,GAAIA,EAAGhH,aAAa,UAAY,SAAU,CACxCgH,EAAGC,QAAU,SAAUxG,GACjBvB,EAAOiG,QAAQ6B,IAEnBA,EAAGE,aAAe,WACd,IAAI1B,EAAStG,EAAOS,WAAWsF,cAAc,aAC7C,GAAIO,IAAWwB,EAAI,CACf,GAAIxB,IAAW,KAAM,CACjBA,EAAO9H,UAAUmI,OAAO,UAE5BmB,EAAGtJ,UAAUC,IAAI,gBASrCsC,UAAW,WACP5G,KAAKsG,WAAW7C,aAAa,QAAS,gBACtCzD,KAAKsG,WAAW7C,aAAa,QAAS,QAAUzD,KAAKwG,MAAMsH,UAAY9N,KAAKwG,MAAMuH,cAAgB,WAAa/N,KAAKwG,MAAMwH,WAAa,YAAchO,KAAKwG,MAAMyH,YAAc,QAKlLnB,QAAS,SAAUtK,GACf,IAAI0L,EACJ,UAAW1L,GAAY,SAAU,CAC7B0L,EAAKlO,KAAKmO,WAAW3L,OAEpB,CACD0L,EAAKlO,KAAKoO,qBAAqB5L,GAEnC,GAAIxC,KAAKsG,WAAW+H,gBAAiB,CACjCrO,KAAKsG,WAAWqE,YAAY3K,KAAKsG,WAAWgI,WAAW,IAE3DtO,KAAKsG,WAAW3C,YAAYuK,IAKhCE,qBAAsB,SAAU5L,GAC5B,IAAI0L,EAAK/N,SAASqD,cAAc,MAAOmK,EAAKxN,SAASqD,cAAc,MAAO4J,EAAQpN,KAAKmN,SAEvF,GAAIC,EAAQ,EAAG,CACX5K,EAAWA,EAAS+L,eAEnB,GAAInB,IAAU,EAAG,CAClBA,EAAQ5K,EAASiD,OAErB,IAAK,IAAIgH,EAAO,EAAGA,EAAO+B,KAAKC,IAAID,KAAKE,IAAItB,GAAQ5K,EAASiD,QAASgH,IAAQ,CAC1EkB,EAAGgB,UAAYnM,EAASiK,GAAMmC,MAC9BjB,EAAGlK,aAAa,0BAA2BjB,EAASiK,GAAMoC,OAC1DX,EAAGvK,YAAYgK,GACfA,EAAKxN,SAASqD,cAAc,MAEhC,OAAO0K,GAKXC,WAAY,SAAU3L,GAClB,IAAI0L,EAAK/N,SAASqD,cAAc,MAAOmK,EAAKxN,SAASqD,cAAc,MACnE,GAAIhB,EAASiD,OAAS,EAAG,CACrBzF,KAAKsG,WAAWqI,UAAYnM,MAE3B,CACD,IAAI0K,EAAelN,KAAKiN,gBACxB,GAAIC,IAAiB,GAAI,CACrBS,EAAGgB,UAAYzB,EACfS,EAAGlK,aAAa,QAAS,UACzByK,EAAGvK,YAAYgK,IAGvB,OAAOO,GAKXnB,MAAO,SAAUvK,GACb,IACI,IAAIsM,EAAiB,GAErB,IAAIC,EAAOC,KAAKC,MAAMzM,GACtB,GAAIyG,OAAOiG,KAAKH,GAAMtJ,SAAW,EAAG,CAChC,MAAO,GAEX,GAAIK,MAAMC,QAAQgJ,GAAO,CACrB,IAAK,IAAI1O,EAAI,EAAGA,EAAI4I,OAAOiG,KAAKH,GAAMtJ,OAAQpF,IAAK,CAC/CyO,EAAeA,EAAerJ,QAAU,CAAEoJ,MAASE,EAAK1O,GAAIuO,MAAS5O,KAAKwN,WAAWuB,EAAK1O,UAG7F,CACD,IAAK,IAAI4K,KAAS8D,EAAM,CACpBD,EAAeK,KAAK,CAChBN,MAAS5D,EACT2D,MAAS5O,KAAKwN,WAAWuB,EAAK9D,OAI1C,OAAO6D,EAEX,MAAO1H,GAEH,OAAO5E,IAMfgH,KAAM,WACF,OAAOxJ,KAAKwG,MAAMyE,OAKtBa,QAAS,SAAUW,GACtB5L,QAAQC,IAAI,kBACL,GAAI2L,EAAK5I,aAAa,2BAA4B,CAC9C7D,KAAKwG,MAAMyE,MAAQwB,EAAK9F,aAAa,+BAEpC,CACD3G,KAAKwG,MAAMyE,MAAQwB,EAAKkC,UAE5B3O,KAAKwG,MAAM/C,aAAa,8BAA+BzD,KAAKwG,MAAMyE,QAEtEf,WAAY,KACZH,OAAQ,GACRlD,WAAY,IAEhBpC,EAAOD,QAAUO,GAEf,KAAK,GAAG,CAAC,GAthB0W,CAshBtW;;;;;;;;;;;CAYf,SAAUzF,EAAGC,GACX,aAEA,SAAS6P,EAAYC,EAAoBC,EAAkBC,EAAcC,GACvExP,KAAKqP,mBAAqBA,EAC1BrP,KAAKsP,iBAAmBA,EACxBtP,KAAKuP,aAAeA,EACpBvP,KAAKyP,OAAS,GACdzP,KAAKwP,UAAYA,EACjBxP,KAAK0P,cAAgB,KAcvBN,EAAY9O,UAAUqP,WAAa,SAASC,EAAQC,GAClD,IAAI3K,EAAI,EACR4K,EAEAD,GAASD,EAAOnK,OAASzF,KAAKyP,OAC9B,IAAK,IAAIpP,EAAI,EAAGA,EAAIuP,EAAOnK,OAAQpF,IAAK,CACtCyP,EAAMF,EAAOvP,GACb,GAAKyP,EAAIC,aAAe,GAAOD,EAAIE,cAAgB,EAAI,CACrD9K,GAAK4K,EAAIC,aAAeD,EAAIE,kBACvB,CAEL9K,GAAK,GAIT,OAAO2K,EAAQ3K,GAGjBkK,EAAY9O,UAAU2P,SAAW,SAASL,EAAQM,GAChD,IAAIJ,EAAKK,EAAUC,EAAeR,EAAOnK,OACzC,IAAK,IAAIpF,EAAI,EAAGA,EAAI+P,EAAc/P,IAAK,CACrCyP,EAAMF,EAAOvP,GACb,GAAKyP,EAAIC,aAAe,GAAOD,EAAIE,cAAgB,EAAI,CACrDG,EAAWD,EAASJ,EAAIC,aAAeD,EAAIE,kBACtC,CAELG,EAAWD,EAEbJ,EAAIO,MAAMR,MAAQM,EAAW,KAC7BL,EAAIO,MAAMH,OAASA,EAAS,KAC5BJ,EAAIO,MAAMC,WAAa,MACvBR,EAAIO,MAAME,UAAY,MACtBT,EAAIO,MAAMG,YAAcxQ,KAAKyP,OAAS,EAAI,KAC1CK,EAAIO,MAAMI,aAAezQ,KAAKyP,OAAS,EAAI,OAI/CL,EAAY9O,UAAUoQ,WAAa,SAASC,GAC1C,IAAIC,EAAOC,EACXC,EAAiBvR,EAAEqM,cAAc5L,KAAKqP,oBAAoBpB,YAE1D3O,EAAG,MAAOqR,EAASlL,OAAS,EAAG,CAC7B,IAAK,IAAIpF,EAAI,EAAGA,GAAKsQ,EAASlL,OAAQpF,IAAK,CACzCuQ,EAAQD,EAASC,MAAM,EAAGvQ,GAC1BwQ,EAAI7Q,KAAK2P,WAAWiB,EAAOE,GAC3B,GAAID,EAAI7Q,KAAKwP,UAAW,CACtBxP,KAAKiQ,SAASW,EAAOC,GACrBF,EAAWA,EAASC,MAAMvQ,GAC1B,SAASf,GAGbU,KAAKiQ,SAASW,EAAOpC,KAAKC,IAAIzO,KAAKwP,UAAWqB,IAC9C,QAIJzB,EAAY9O,UAAUyQ,MAAQ,SAASzB,GACrC,IAAI0B,EAAuBzR,EAAEa,iBAAiBJ,KAAKsP,kBACnD2B,EAAiBD,EAAqBvL,OACtCyL,EAAW,KACXC,EAAU,KACVR,EAAW,GACX,IAAK,IAAItQ,EAAI,EAAGA,EAAI4Q,EAAgB5Q,IAAK,CACvC8Q,EAAUH,EAAqB3Q,GAC/B,GAAI8Q,EAAQC,yBAA2BF,GAAYP,EAASlL,OAAS,EAAG,CAItEzF,KAAK0Q,WAAWC,GAEhBA,EAAW,GAGbA,EAASxB,KAAKgC,EAAQvF,cAAc5L,KAAKuP,eAEzC2B,EAAWC,EAGb,GAAIR,EAASlL,OAAS,EAAG,CACvBzF,KAAK0Q,WAAWC,KAIpBvB,EAAY9O,UAAU+Q,MAAQ,WAC5B,IAAIhR,EAAGyP,EAAKa,EAAUW,EACtBtQ,EAAMhB,KACNuR,EAAgBhS,EAAEa,iBAAiBJ,KAAKsP,kBACxC2B,EAAiBM,EAAc9L,OAE/B,SAASsL,EAAMrQ,GACbM,EAAI+P,QAGN,SAASS,EAAc9Q,GACrB,GAAIM,EAAI0O,cAAe,CACrB1O,EAAI0O,cAAgB,MACpBtF,WAAW,WACTpJ,EAAI+P,QACJ/P,EAAI0O,cAAgB,MACnB,MAIPpQ,EAAE6B,iBAAiB,SAAUqQ,GAC7BlS,EAAE6B,iBAAiB,WAAY4P,GAE/B,IAAK1Q,EAAI,EAAGA,EAAI4Q,EAAgB5Q,IAAK,CACnCyP,EAAMyB,EAAclR,GAAGuL,cAAc5L,KAAKuP,cAC1C,UAAWO,IAAQ,YAAa,CAC9BA,EAAI3O,iBAAiB,OAAQqQ,GAC7B1B,EAAI3O,iBAAiB,QAASqQ,MAKpClS,EAAED,MAAM+P,YAAcA,GA1IxB,CA4IGhQ,OAAQe,UACVd,MAAMmC,MAAM,WAEXnC,MAAM0B,GAAG,UAAW,QAAS,WAC3B0Q,EAAgBzR,KAAhByR,CAAsB,QAGxBpS,MAAM0B,GAAG,YAAa,QAAS,SAASL,GACtC,IAAID,EAAKC,EAAEU,OACX,MAAOX,IAAOsH,UAAW,CACvB,GAAItH,EAAG4D,UAAUqN,SAAS,UAAW,CACnC,GAAIjR,EAAGkG,aAAa,uBAAyB,KAAM,CACjD8K,EAAgBhR,EAAhBgR,CAAoB,MAEtB,MAEFhR,EAAKA,EAAGP,aAET,MAEH,IAAIyR,EAAU,CACZC,GAAI,CACFhK,IAAK,SACLiK,IAAKC,EACLC,IAAK,sCACLC,IAAK,WAEPC,GAAI,CACFrK,IAAK,IACLiK,IAAKK,EACLH,IAAK,4BACLC,IAAK,WAEPG,GAAI,CACFvK,IAAK,IACLiK,IAAKO,GAAYhT,OAAOiT,aACxBN,IAAK,qBACLC,IAAK,cAEPM,GAAI,CACF1K,IAAK,IACLiK,IAAKO,EAAWhT,OAAOiT,aACvBN,IAAK,uBACLC,IAAK,cAEPO,GAAI,CACF3K,IAAK,IACLiK,IAAKO,GAAYhT,OAAOiT,YAAc,GACtCN,IAAK,wBACLC,IAAK,cAEPQ,GAAI,CACF5K,IAAK,IACLiK,IAAKO,EAAWhT,OAAOiT,YAAc,GACrCN,IAAK,0BACLC,IAAK,cAEPS,GAAI,CACF7K,IAAK,IACLiK,IAAKa,GAAcvS,SAASuD,KAAKiP,aAAc,OAC/CZ,IAAK,gCACLC,IAAK,cAEPY,GAAI,CACFhL,IAAK,IACLiK,IAAKa,EAAavS,SAASuD,KAAKiP,aAAc,UAC9CZ,IAAK,mCACLC,IAAK,cAEPa,GAAI,CACFjL,IAAK,IACLiK,IAAKJ,EAAgB,MACrBM,IAAK,gCACLC,IAAK,WAEPc,GAAI,CACFlL,IAAK,IACLiK,IAAKJ,EAAgB,QACrBM,IAAK,4BACLC,IAAK,WAEPe,GAAI,CACFnL,IAAK,IACLiK,IAAKmB,EAAgB,GACrBjB,IAAK,sBACLC,IAAK,WAEPiB,GAAI,CACFrL,IAAK,IACLiK,IAAKmB,EAAgB,GACrBjB,IAAK,kBACLC,IAAK,WAEPkB,GAAI,CACFtL,IAAK,IACLiK,IAAKsB,EAAW,OAChBpB,IAAK,qBACLC,IAAK,WAEPoB,GAAI,CACFxL,IAAK,IACLiK,IAAKsB,EAAW,MAChBpB,IAAK,+BACLC,IAAK,WAEPqB,GAAI,CACFzL,IAAK,IACLiK,IAAKyB,EACLvB,IAAK,8BACLC,IAAK,WAEPuB,GAAI,CACF3L,IAAK,IACLiK,IAAK2B,EACLzB,IAAK,qBACLC,IAAK,UAIT3S,MAAM0B,GAAGZ,SAAU,UAAW,SAASO,GAErC,GAAIiR,EAAQpJ,eAAe7H,EAAE+H,WAAa/H,EAAE+S,UAAY/S,EAAEgT,SAAWhT,EAAEiT,WAAajT,EAAEkT,QAAS,CAC7F,IAAIC,EAAUnT,EAAEU,OAAOyS,QAAQC,cAC/B,GAAIpT,EAAE+H,UAAY,GAAI,CACpB,GAAIoL,IAAY,SAAWA,IAAY,UAAYA,IAAY,WAAY,CACzElC,EAAQjR,EAAE+H,SAASoJ,WAEhB,CACL,GAAInR,EAAEU,SAAWjB,SAASuD,MAAQmQ,IAAY,KAAOA,IAAY,SAAU,CACzEnT,EAAEmL,iBACF8F,EAAQjR,EAAE+H,SAASoJ,WAM3B,SAASJ,EAAgBsC,GACvB,OAAO,SAASC,GACd,IAAI7C,EAAUhR,SAASyL,cAAc,8BACrCqI,EAAiBF,EACjB,GAAI5C,IAAY,KAAM,CAEpBA,EAAUhR,SAASyL,cAAc,WACjC,GAAIuF,IAAY,KAAM,CAEpB,OAGF,GAAI4C,IAAU,QAAUA,IAAU,KAAM,CACtCE,EAAiB9C,GAIrB,IAAI+C,EAAMC,EAAUhU,SAASC,iBAAiB,WAE9C,UAAW6T,IAAmB,SAAU,CACtCC,EAAOD,MACF,CACL,OAAQA,GACN,IAAK,UACL,IAAIG,EAAMjU,SAASkU,gBAAgBC,WAAanU,SAASuD,KAAK4Q,UAC9D,IAAIC,EAAMH,EAAMjU,SAASkU,gBAAgBG,aAEzC,IAAK,IAAInU,EAAI,EAAGA,EAAI8T,EAAQ1O,OAAQpF,IAAK,CACvC6T,EAAOC,EAAQ9T,GACf,IAAIoU,EAAOP,EAAKpG,UAChB,IAAI4G,EAAOD,EAAOP,EAAKM,aAEvB,GAAKE,GAAQH,GAASE,EAAOL,EAAM,CACjC,OAGJ,MACA,IAAK,OACLF,EAAO/C,EAAQwD,mBACf,GAAIT,IAAS,KAAM,CACjBA,EAAOC,EAAQ,GAEjB,MACA,IAAK,KACLD,EAAO/C,EAAQC,uBACf,GAAI8C,IAAS,KAAM,CACjBA,EAAOC,EAAQA,EAAQ1O,OAAS,GAElC,MACA,IAAK,SACLyO,EAAOC,EAAQA,EAAQ1O,OAAS,GAChC,MACA,IAAK,MAEL,QACAyO,EAAOC,EAAQ,IAInB,GAAID,EAAM,CACR/C,EAAQyD,gBAAgB,qBACxBV,EAAKzQ,aAAa,oBAAqB,QACvC,IAAIoR,EAAOX,EAAKtI,cAAc,SAAWsI,EAAKtI,cAAc,KAC5D,GAAIiJ,IAAS,KAAM,CACjBA,EAAK5N,QAEP,IAAK+M,EAAU,CACbc,OAMR,SAASxB,IACPnT,SAAS4U,SAASC,OAAO,MAG3B,SAASlD,IACP,GAAI3R,SAAS8U,cAAe,CAC1B9U,SAAS8U,cAAcnO,QAI3B,SAASkM,EAAgBkC,GACvB,OAAO,WACL,IAAIC,EAAUC,EAAE,wCAChB,GAAID,EAAQ1P,SAAW,EAAG,CACxB5E,QAAQC,IAAI,oDACZ,OAEF,GAAIoU,GAAO,GAAKA,EAAMC,EAAQ1P,OAAQ,CACpC0P,EAAQD,GAAKG,YACR,CACLxU,QAAQC,IAAI,yCAKlB,SAASgU,IACP,IAAIQ,EAAMnV,SAASyL,cAAc,8BACjC,GAAI0J,IAAQ,KAAM,CAChB,OAEF,IAAIC,EAAOpV,SAASkU,gBAAgBC,WAAanU,SAASuD,KAAK4Q,UAC/DkB,EAAUrV,SAASkU,gBAAgBG,aACnCC,EAAOa,EAAIxH,UACX4G,EAAOD,EAAOa,EAAId,aAClBiB,EAAS,IAET,GAAKH,EAAIlE,yBAA2B,MAAUsD,EAAOc,EAAU,CAG7DpW,OAAOsW,OAAOtW,OAAOuW,QAAS,GAC9B,OAEF,GAAIJ,EAAQd,EAAOgB,EAAS,CAC1BrW,OAAOsW,OAAOtW,OAAOuW,QAASlB,EAAOgB,OAChC,CACL,IAAIG,EAAOL,EAAOC,EAClB,GAAII,EAAQlB,EAAOe,EAAS,CAC1BrW,OAAOsW,OAAOtW,OAAOuW,QAASjB,EAAOc,EAAUC,KAKrD,SAASrD,EAAWyD,GAClB,OAAO,WACLzW,OAAO0W,SAAS,EAAGD,GACnBpE,EAAgB,UAAhBA,IAIJ,SAASiB,EAAalL,EAAUuO,GAC9B,OAAO,WACL3W,OAAO4W,SAAS,EAAGxO,GACnBiK,EAAgBsE,EAAhBtE,IAIJ,SAASS,IACP9S,OAAO4W,SAAS,EAAG,GACnB7V,SAASyL,cAAc,MAAM3E,QAG/B,SAASkM,EAAW8C,GAClB,OAAO,WACL,IAAIpB,EAAO1U,SAASyL,cAAc,mCAClC,GAAIiJ,IAAS,KAAM,CACjB,IAAIhT,EAAMgT,EAAKlO,aAAa,QAC5B,GAAIsP,EAAQ,CACV7W,OAAOiD,KAAKR,OACP,CACLzC,OAAO2V,SAASmB,KAAOrU,KAM/B,SAASsU,EAAgBC,GACvB,IAAIC,EAAa,GAEjB,IAAK,IAAIC,KAAK3E,EAAS,CACrB,IAAI/J,EAAM+J,EAAQ2E,GAClBD,EAAWzO,EAAIoK,KAAOqE,EAAWzO,EAAIoK,MAAQ,GAC7CqE,EAAWzO,EAAIoK,KAAK7C,KAAKvH,GAG3B,IAAI2O,EAAStN,OAAOiG,KAAKmH,GAAYG,KAAK,SAASnR,EAAGoR,GACpD,OAAOJ,EAAWI,GAAGhR,OAAS4Q,EAAWhR,GAAGI,SAG9C,GAAI8Q,EAAO9Q,SAAW,EAAG,CACvB,OAGH,IAAIiR,EAAO,mEACVA,GAAQ,uDACVA,GAAQ,UAEN,IAAK,IAAIrW,EAAI,EAAGA,EAAIkW,EAAO9Q,OAAQpF,IAAK,CACtC,IAAI2R,EAAMqE,EAAWE,EAAOlW,IAE5B,IAAIsW,EAAetW,IAAOkW,EAAO9Q,OAAS,EAC1C,IAAIwG,EAAQ5L,EAAI,IAAM,EAEtB,GAAI4L,EAAO,CACTyK,GAAQ,OAEVA,GAAQ,OAERA,GAAQ,OAAS1E,EAAI,GAAGA,IAAM,QAC9B0E,GAAQ,6BAER,IAAK,IAAIE,KAAM5E,EAAK,CAClB0E,GAAQ,YAAc1E,EAAI4E,GAAIhP,IAAM,UAAYoK,EAAI4E,GAAI7E,IAAM,QAGhE2E,GAAQ,QACRA,GAAQ,QAER,IAAKzK,GAAS0K,EAAc,CAC1BD,GAAQ,SAIdA,GAAQ,WAENN,EAAWzH,UAAY+H,EAGzB,SAASlD,IACR,IAAIqD,EAAY1W,SAASyL,cAAc,qBACvC/K,QAAQC,IAAI+V,GACb,GAAIA,IAAc9O,WAAa8O,IAAc,KAAM,CAElDA,EAAY1W,SAASqD,cAAc,OAChCqT,EAAUzT,GAAK,mBACjByT,EAAUC,UAAU,eACpBD,EAAUxG,MAAM,aACjB8F,EAAgBU,GAChB,IAAInT,EAAOvD,SAASoM,qBAAqB,QAAQ,GACjD7I,EAAKC,YAAYkT,OACX,CAENA,EAAUxS,UAAU0S,OAAO,aAC3B,YAuBH,SAAWzX,EAAGC,EAAGF,GACf,aAEAA,EAAMmC,MAAM,WACVnC,EAAM0B,GAAG,0BAA2B,QAAS,SAASqG,GAEpDpH,KAAKqE,UAAUmI,OAAO,0BAGtB,IAAIwK,EAAe,gDACnB,IAAIC,EAAcD,EAAe,2BACjC,IAAIE,EAAY,cAEhB,IAAIC,EAASnX,KAAKoX,QAAQC,MAC1B,IAAIC,EAAWtX,KAAKoX,QAAQG,QAC5B,IAAIC,EAAejY,EAAEqM,cAAc,IAAM5L,KAAKoX,QAAQK,aACtD,IAAIC,EAAwBnY,EAAEqM,cAAc,IAAM5L,KAAKoX,QAAQO,qBAG/D,IAAIC,EAAkB,CAAE,YAAa,eAAgB,mBAAoB,gBAAiB,eAE1F,GAAGT,GAAUG,GAAYE,EAAc,CACrC,IAAIK,EAAQ,KACZ,OAAOP,GACL,IAAK,OACLO,EAAQZ,EAAc,QAAUE,EAAS,KAAOD,EAChD,MACA,IAAK,MACLW,EAAQZ,EAAc,OAASE,EAAS,KAAOD,EAC/C,MACA,IAAK,WACLW,EAAQZ,EAAc,YAAcE,EAAS,KAAOD,EACpD,MACA,QACA,MAEF,GAAGW,EAAO,CAERxY,EAAMsC,KAAM,MAAOkW,GAAQ1V,KAAK,SAASuU,EAAMoB,GAC7CpB,EAAO1H,KAAKC,MAAMyH,GAClB,GAAGA,GAAQA,EAAKzQ,UAAYyQ,EAAKzQ,SAAS,GAAI,CAC5C,IAAI/B,EAAUwS,EAAKzQ,SAAS,GAC5B,IAAI8R,EAAU,GACd,IAAK,IAAIC,KAAO9T,EAAQ+T,KAAM,CAC5B,GAAG/T,EAAQ+T,KAAKrP,OAAS,MAAQgP,EAAgBhO,QAAQoO,KAAS,EAAG,CACnED,GAAW,WAAaC,EAAM,YAC9B,OAAOA,GACL,IAAK,QACL,IAAK,MACLD,GAAW,gBAAmB7T,EAAQ+T,KAAKD,GAAK3U,QAAQ,KAAK,IAAM,KAAQa,EAAQ+T,KAAKD,GAAO,OAC/F,MACA,IAAK,QACLD,GAAW,mBAAsB7T,EAAQ+T,KAAKD,GAAO,KAAQ9T,EAAQ+T,KAAKD,GAAO,OACjF,MACA,IAAK,UACL,IAAK,MACLD,GAAW,YAAe7T,EAAQ+T,KAAKD,GAAO,KAAQ9T,EAAQ+T,KAAKD,GAAO,OAC1E,MACA,IAAK,WACLD,GAAW,0CAA6C7T,EAAQ+T,KAAKD,GAAO,KAAQ9T,EAAQ+T,KAAKD,GAAO,OACxG,MACA,IAAK,YACL,GAAG9T,EAAQ+T,KAAKD,GAAKpO,QAAQ,OAAS,EAAG,CACvCmO,GAAW,oBAAuB7T,EAAQ+T,KAAKD,GAAKE,UAAU,EAAEhU,EAAQ+T,KAAKD,GAAKpO,QAAQ,MAAQ,uBAAyB1F,EAAQ+T,KAAKD,GAAKE,UAAUhU,EAAQ+T,KAAKD,GAAKpO,QAAQ,KAAK,GAAK,KAAQ1F,EAAQ+T,KAAKD,GAAO,OACvN,MAGF,QAEAD,GAAW7T,EAAQ+T,KAAKD,GACxB,MAEFD,GAAW,cAGtBL,EAAsBxX,WAAWyK,YAAY+M,GACtCF,EAAanT,UAAUmI,OAAO,aAC9BgL,EAAa5L,cAAc,SAAS+C,UAAYoJ,KAGnD3V,MAAM,WACLsV,EAAsBrT,UAAUmI,OAAO,aACvCkL,EAAsB/I,UAAY,0BAMxCvH,EAAMyE,mBAGRxM,EAAM0B,GAAG,kBAAmB,QAAS,SAASqG,GAE5CpH,KAAKqE,UAAUmI,OAAO,kBAGtB,IAAI2L,EAAiBnY,KAAKoX,QAAQgB,cAClC,IAAIC,EAAUC,WAAWtY,KAAKoX,QAAQmB,QACtC,IAAIC,EAAUF,WAAWtY,KAAKoX,QAAQqB,QACtC,IAAIC,EAAWJ,WAAWtY,KAAKoX,QAAQuB,SACvC,IAAIC,EAAkB5J,KAAKC,MAAMjP,KAAKoX,QAAQyB,gBAC9C,IAAIC,EAAc9J,KAAKC,MAAMjP,KAAKoX,QAAQ2B,YAE1C1Z,EAAM2D,UAAU,uBAChB3D,EAAMuE,WAAW,qBAAsB,WACrC,IAAIoV,EAAa,KACjB,GAAGJ,EAAiB,CAClB,IAAIK,EAAYC,EAAEC,OAAOP,EAAgB,GAAIA,EAAgB,IAC7D,IAAIQ,EAAYF,EAAEC,OAAOP,EAAgB,GAAIA,EAAgB,IAC7DI,EAAaE,EAAEG,aAAaJ,EAAWG,GAIzC,IAAIE,EAAMJ,EAAEI,IAAInB,GAEhB,IAAIoB,EAAa,qDACjB,IAAIC,EAAgB,gFACpB,IAAIC,EAAY,IAAIP,EAAEQ,UAAUH,EAAc,CAACI,QAAS,EAAGC,QAAS,GAAIC,YAAaL,IACrF,IAAIM,EAAgB,sDACpB,IAAIC,EAAqB,uGACzB,IAAIC,EAAe,IAAId,EAAEQ,UAAUI,EAAiB,CAACH,QAAS,EAAGC,QAAS,GAAIC,YAAaE,IAE3F,GAAGf,EAAY,CAGb5O,WAAW,WACTkP,EAAIW,UAAUjB,EAAY,CACxBY,QAAQ,MAET,QACE,GAAIvB,GAAWG,EAAS,CAC7B,GAAGE,EAAU,CACXY,EAAIY,QAAQ,IAAIhB,EAAEC,OAAOX,EAASH,GAASK,OACtC,CACLY,EAAIY,QAAQ,IAAIhB,EAAEC,OAAOX,EAASH,GAAS,IAI/CiB,EAAIa,SAASV,GAEb,IAAIW,EAAa,CACfC,aAAcZ,GAIhBP,EAAEoB,QAAQC,OAAOH,GAAYI,MAAMlB,GAEnC,GAAGR,EAAa,CACdI,EAAEuB,QAAQ3B,GAAa0B,MAAMlB,MAOjClS,EAAMyE,sBA3JZ,CA8JGzM,OAAQe,SAAUf,OAAOC,QAiB5B,SAAUC,EAAGC,EAAGF,GACd,aAEAA,EAAMmC,MAAM,WACVnC,EAAMqb,uBAAyB,IAAIrb,EAAM+P,YAAY,QAAS,uBAAwB,sBAAuB,KAC7G/P,EAAMqb,uBAAuBrJ,QAE7BhS,EAAM0B,GAAG,gBAAiB,QAAS,SAASqG,GAC1C,IAAIuT,EAAoB3a,KAAK2G,aAAa,2BAC1C,IAAIiU,EAAuB5a,KAAK2G,aAAa,+BAC7C,IAAIvF,EAASpB,KAAK2G,aAAa,eAC/B,IAAIkU,EAAgBtb,EAAEqM,cAAcxK,GACpC,IAAIsV,EAAO1W,KAAK2O,UAChB,GAAI3O,KAAKqE,UAAUqN,SAAS,aAAc,CACxCgF,EAAOA,EAAKrT,QAAQsX,EAAmBC,OAClC,CACLlE,EAAOA,EAAKrT,QAAQuX,EAAsBD,GAE5C3a,KAAK2O,UAAY+H,EACjB1W,KAAKqE,UAAU0S,OAAO,aACtB8D,EAAcxW,UAAU0S,OAAO,eAGjC1X,EAAM0B,GAAG,gBAAiB,QAAS,SAASqG,GAC1C,IAAIhG,EAASpB,KAAK2G,aAAa,eAC/B,IAAImU,EAAcvb,EAAEqM,cAAcxK,EAAS,aAC3C,IAAI2Z,EAAUD,EAAYnU,aAAa,OACvC,GAAIoU,IAAY,MAAQA,IAAYhT,WAAagT,IAAY,MAAO,CAClED,EAAYrX,aAAa,MAAOqX,EAAYnU,aAAa,gBAI7DrH,EAAE6B,iBAAiB,SAAU,WAC3B,IAAIT,EAAInB,EAAEgE,eAAe,aACzB+Q,EAAYnU,SAASkU,gBAAgBC,WAAanU,SAASuD,KAAK4Q,UAChE,GAAI5T,IAAM,KAAM,CACd,GAAI4T,GAAa,IAAK,CACpB5T,EAAE2P,MAAM2K,QAAU,MACb,CACLta,EAAE2P,MAAM2K,QAAU,SAvC5B,CA8CG5b,OAAQe,SAAUf,OAAOC,QAiB5B,SAAUC,EAAGC,EAAGF,GACd,aAEA,IAAI4b,EAAa,KAAMC,EAAY,IAAKC,EAExC,SAASC,EAAiBlX,GACxB,GAAIA,EAAQmX,kBAAmB,CAC7B,IAAIC,EAAMpX,EAAQ+G,MAAMxF,OACxBvB,EAAQmX,kBAAkBC,EAAKA,IAInC,SAASC,IACP,GAAIJ,EAAOlQ,MAAMxF,OAAU,EAAG,CAC5B,IAAI+V,EAASrb,SAASoD,eAAe,UACrC6G,WAAWoR,EAAOC,OAAO/Z,KAAK8Z,GAAS,IAI3C,SAASE,EAAkBP,GACzB,IAAIQ,EAAKxb,SAASoD,eAAe,gBACjC,IAAIqY,EAAoB,WACtB,GAAIT,EAAOlQ,MAAMxF,SAAW,EAAG,CACpCkW,EAAGtX,UAAUC,IAAI,aACL,CACZqX,EAAGtX,UAAUmI,OAAO,WAKjBoP,IACAD,EAAGxa,iBAAiB,QAAS,WAC3Bga,EAAOlQ,MAAM,GACbkQ,EAAOlU,QACP2U,MAEFT,EAAOha,iBAAiB,QAASya,EAAmB,OAGtDvc,EAAMmC,MAAM,WACV2Z,EAAS5b,EAAEgE,eAAe2X,GAE1B,SAASW,EAAqBnb,GAC5B,GAAIua,EAAY,CACdG,EAAiBD,GACjBF,EAAa,UACR,GAKT,GAAIE,IAAW,KAAM,CAEnBO,EAAkBP,GAGlB,GAAI9b,EAAMyc,cAAe,CACvBzc,EAAM0c,aAAehX,aAAapE,KAAKrB,EAAG,CACxCmM,IAAK,kBACLX,aAAczL,EAAM2c,cACpBzQ,WAAYlM,EAAMuC,OAClB0J,SAAU,EACVjB,MAAO,KACN,IAAM6Q,GAGT5b,EAAE6B,iBAAiB,SAAU,WAC3B,IAAIiG,EAAQ,IAAI6U,YAAY,YAC5Bd,EAAOe,cAAc9U,KAIzB+T,EAAOha,iBAAiB,QAAS0a,EAAsB,OACvDV,EAAOlU,QAIT,GAAIkU,IAAW,MAAQ9b,EAAM8c,0BAA2B,CACtD5c,EAAEqM,cAAc,SAASkL,UAAU,YAEnCzX,EAAM0B,GAAG,oBAAqB,SAAU,SAASL,GAC/C,IAAIL,EAAGgW,EAAa9W,EAAEa,iBAAiB,sCACvC,IAAIC,EAAE,EAAGA,EAAEgW,EAAW5Q,OAAQpF,IAAK,CACjC,GAAIgW,EAAWhW,KAAOL,MAAQqW,EAAWhW,GAAG+b,QAAS,CACnD/F,EAAWhW,GAAGgV,SAGlB,IAAMrV,KAAKoc,QAAS,CAClBpc,KAAKqV,QAEPkG,IACA,OAAO,QAGTlc,EAAM0B,GAAGxB,EAAEgE,eAAe,cAAe,SAAUgY,GACnDlc,EAAM0B,GAAGxB,EAAEgE,eAAe,YAAa,SAAUgY,OA/FvD,CAoGGnc,OAAQe,SAAUf,OAAOC","file":"searx.min.js"}
\ No newline at end of file diff --git a/searx/static/themes/simple/js/searx_head/00_init.js b/searx/static/themes/simple/js/searx_head/00_init.js new file mode 100644 index 000000000..3ac61c8ae --- /dev/null +++ b/searx/static/themes/simple/js/searx_head/00_init.js @@ -0,0 +1,40 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2019 by Alexandre Flament +* +*/ +(function(w, d) { + 'use strict'; + + // add data- properties + var script = d.currentScript || (function() { + var scripts = d.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + // try to detect touch screen + w.searx = { + touch: (("ontouchstart" in w) || w.DocumentTouch && document instanceof DocumentTouch) || false, + method: script.getAttribute('data-method'), + autocompleter: script.getAttribute('data-autocompleter') === 'true', + search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true', + infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true', + static_path: script.getAttribute('data-static-path'), + no_item_found: script.getAttribute('data-no-item-found') + } + + // update the css + d.getElementsByTagName("html")[0].className = (w.searx.touch)?"js touch":"js"; +})(window, document);
\ No newline at end of file diff --git a/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js b/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js new file mode 100644 index 000000000..dbef4be73 --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js @@ -0,0 +1,164 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +* +*/ +window.searx = (function(w, d) { + + 'use strict'; + + // not invented here tookit with bugs fixed elsewhere + // purposes : be just good enough and as small as possible + + // from https://plainjs.com/javascript/events/live-binding-event-handlers-14/ + if (w.Element) { + (function(ElementPrototype) { + ElementPrototype.matches = ElementPrototype.matches || + ElementPrototype.matchesSelector || + ElementPrototype.webkitMatchesSelector || + ElementPrototype.msMatchesSelector || + function(selector) { + var node = this, nodes = (node.parentNode || node.document).querySelectorAll(selector), i = -1; + while (nodes[++i] && nodes[i] != node); + return !!nodes[i]; + }; + })(Element.prototype); + } + + function callbackSafe(callback, el, e) { + try { + callback.call(el, e); + } catch (exception) { + console.log(exception); + } + } + + var searx = window.searx || {}; + + searx.on = function(obj, eventType, callback, useCapture) { + useCapture = useCapture || false; + if (typeof obj !== 'string') { + // obj HTMLElement, HTMLDocument + obj.addEventListener(eventType, callback, useCapture); + } else { + // obj is a selector + d.addEventListener(eventType, function(e) { + var el = e.target || e.srcElement, found = false; + while (el && el.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement; + if (found) callbackSafe(callback, el, e); + }, useCapture); + } + }; + + searx.ready = function(callback) { + if (document.readyState != 'loading') { + callback.call(w); + } else { + w.addEventListener('DOMContentLoaded', callback.bind(w)); + } + }; + + searx.http = function(method, url, callback) { + var req = new XMLHttpRequest(), + resolve = function() {}, + reject = function() {}, + promise = { + then: function(callback) { resolve = callback; return promise; }, + catch: function(callback) { reject = callback; return promise; } + }; + + try { + req.open(method, url, true); + + // On load + req.onload = function() { + if (req.status == 200) { + resolve(req.response, req.responseType); + } else { + reject(Error(req.statusText)); + } + }; + + // Handle network errors + req.onerror = function() { + reject(Error("Network Error")); + }; + + req.onabort = function() { + reject(Error("Transaction is aborted")); + }; + + // Make the request + req.send(); + } catch (ex) { + reject(ex); + } + + return promise; + }; + + searx.loadStyle = function(src) { + var path = searx.static_path + src, + id = "style_" + src.replace('.', '_'), + s = d.getElementById(id); + if (s === null) { + s = d.createElement('link'); + s.setAttribute('id', id); + s.setAttribute('rel', 'stylesheet'); + s.setAttribute('type', 'text/css'); + s.setAttribute('href', path); + d.body.appendChild(s); + } + }; + + searx.loadScript = function(src, callback) { + var path = searx.static_path + src, + id = "script_" + src.replace('.', '_'), + s = d.getElementById(id); + if (s === null) { + s = d.createElement('script'); + s.setAttribute('id', id); + s.setAttribute('src', path); + s.onload = callback; + s.onerror = function() { + s.setAttribute('error', '1'); + }; + d.body.appendChild(s); + } else if (!s.hasAttribute('error')) { + try { + callback.apply(s, []); + } catch (exception) { + console.log(exception); + } + } else { + console.log("callback not executed : script '" + path + "' not loaded."); + } + }; + + searx.insertBefore = function (newNode, referenceNode) { + element.parentNode.insertBefore(newNode, referenceNode); + }; + + searx.insertAfter = function(newNode, referenceNode) { + referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); + }; + + searx.on('.close', 'click', function(e) { + var el = e.target || e.srcElement; + this.parentNode.classList.add('invisible'); + }); + + return searx; +})(window, document); diff --git a/searx/static/themes/simple/js/searx_src/autocomplete.js b/searx/static/themes/simple/js/searx_src/autocomplete.js new file mode 100644 index 000000000..b95fbcfb2 --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/autocomplete.js @@ -0,0 +1,536 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +/* + * @license MIT + * + * Autocomplete.js v2.6.3 + * Developed by Baptiste Donaux + * http://autocomplete-js.com + * + * (c) 2017, Baptiste Donaux + */ +"use strict"; +var ConditionOperator; +(function (ConditionOperator) { + ConditionOperator[ConditionOperator["AND"] = 0] = "AND"; + ConditionOperator[ConditionOperator["OR"] = 1] = "OR"; +})(ConditionOperator || (ConditionOperator = {})); +var EventType; +(function (EventType) { + EventType[EventType["KEYDOWN"] = 0] = "KEYDOWN"; + EventType[EventType["KEYUP"] = 1] = "KEYUP"; +})(EventType || (EventType = {})); +/** + * Core + * + * @class + * @author Baptiste Donaux <baptiste.donaux@gmail.com> @baptistedonaux + */ +var AutoComplete = (function () { + // Constructor + function AutoComplete(params, selector) { + if (params === void 0) { params = {}; } + if (selector === void 0) { selector = "[data-autocomplete]"; } + if (Array.isArray(selector)) { + selector.forEach(function (s) { + new AutoComplete(params, s); + }); + } + else if (typeof selector == "string") { + var elements = document.querySelectorAll(selector); + Array.prototype.forEach.call(elements, function (input) { + new AutoComplete(params, input); + }); + } + else { + var specificParams = AutoComplete.merge(AutoComplete.defaults, params, { + DOMResults: document.createElement("div") + }); + AutoComplete.prototype.create(specificParams, selector); + return specificParams; + } + } + AutoComplete.prototype.create = function (params, element) { + params.Input = element; + if (params.Input.nodeName.match(/^INPUT$/i) && (params.Input.hasAttribute("type") === false || params.Input.getAttribute("type").match(/^TEXT|SEARCH$/i))) { + params.Input.setAttribute("autocomplete", "off"); + params._Position(params); + params.Input.parentNode.appendChild(params.DOMResults); + params.$Listeners = { + blur: params._Blur.bind(params), + destroy: AutoComplete.prototype.destroy.bind(null, params), + focus: params._Focus.bind(params), + keyup: AutoComplete.prototype.event.bind(null, params, EventType.KEYUP), + keydown: AutoComplete.prototype.event.bind(null, params, EventType.KEYDOWN), + position: params._Position.bind(params) + }; + for (var event in params.$Listeners) { + params.Input.addEventListener(event, params.$Listeners[event]); + } + } + }; + AutoComplete.prototype.getEventsByType = function (params, type) { + var mappings = {}; + for (var key in params.KeyboardMappings) { + var event = EventType.KEYUP; + if (params.KeyboardMappings[key].Event !== undefined) { + event = params.KeyboardMappings[key].Event; + } + if (event == type) { + mappings[key] = params.KeyboardMappings[key]; + } + } + return mappings; + }; + AutoComplete.prototype.event = function (params, type, event) { + var eventIdentifier = function (condition) { + if ((match === true && mapping.Operator == ConditionOperator.AND) || (match === false && mapping.Operator == ConditionOperator.OR)) { + condition = AutoComplete.merge({ + Not: false + }, condition); + if (condition.hasOwnProperty("Is")) { + if (condition.Is == event.keyCode) { + match = !condition.Not; + } + else { + match = condition.Not; + } + } + else if (condition.hasOwnProperty("From") && condition.hasOwnProperty("To")) { + if (event.keyCode >= condition.From && event.keyCode <= condition.To) { + match = !condition.Not; + } + else { + match = condition.Not; + } + } + } + }; + for (var name in AutoComplete.prototype.getEventsByType(params, type)) { + var mapping = AutoComplete.merge({ + Operator: ConditionOperator.AND + }, params.KeyboardMappings[name]), match = ConditionOperator.AND == mapping.Operator; + mapping.Conditions.forEach(eventIdentifier); + if (match === true) { + mapping.Callback.call(params, event); + } + } + }; + AutoComplete.prototype.makeRequest = function (params, callback) { + var propertyHttpHeaders = Object.getOwnPropertyNames(params.HttpHeaders), request = new XMLHttpRequest(), method = params._HttpMethod(), url = params._Url(), queryParams = params._Pre(), queryParamsStringify = encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(queryParams); + if (method.match(/^GET$/i)) { + if (url.indexOf("?") !== -1) { + url += "&" + queryParamsStringify; + } + else { + url += "?" + queryParamsStringify; + } + } + request.open(method, url, true); + for (var i = propertyHttpHeaders.length - 1; i >= 0; i--) { + request.setRequestHeader(propertyHttpHeaders[i], params.HttpHeaders[propertyHttpHeaders[i]]); + } + request.onreadystatechange = function () { + if (request.readyState == 4 && request.status == 200) { + params.$Cache[queryParams] = request.response; + callback(request.response); + } + }; + return request; + }; + AutoComplete.prototype.ajax = function (params, request, timeout) { + if (timeout === void 0) { timeout = true; } + if (params.$AjaxTimer) { + window.clearTimeout(params.$AjaxTimer); + } + if (timeout === true) { + params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay); + } + else { + if (params.Request) { + params.Request.abort(); + } + params.Request = request; + params.Request.send(params._QueryArg() + "=" + params._Pre()); + } + }; + AutoComplete.prototype.cache = function (params, callback) { + var response = params._Cache(params._Pre()); + if (response === undefined) { + var request = AutoComplete.prototype.makeRequest(params, callback); + AutoComplete.prototype.ajax(params, request); + } + else { + callback(response); + } + }; + AutoComplete.prototype.destroy = function (params) { + for (var event in params.$Listeners) { + params.Input.removeEventListener(event, params.$Listeners[event]); + } + params.DOMResults.parentNode.removeChild(params.DOMResults); + }; + return AutoComplete; +}()); +AutoComplete.merge = function () { + var merge = {}, tmp; + for (var i = 0; i < arguments.length; i++) { + for (tmp in arguments[i]) { + merge[tmp] = arguments[i][tmp]; + } + } + return merge; +}; +AutoComplete.defaults = { + Delay: 150, + EmptyMessage: "No result here", + Highlight: { + getRegex: function (value) { + return new RegExp(value, "ig"); + }, + transform: function (value) { + return "<strong>" + value + "</strong>"; + } + }, + HttpHeaders: { + "Content-type": "application/x-www-form-urlencoded" + }, + Limit: 0, + MinChars: 0, + HttpMethod: "GET", + QueryArg: "q", + Url: null, + KeyboardMappings: { + "Enter": { + Conditions: [{ + Is: 13, + Not: false + }], + Callback: function (event) { + if (this.DOMResults.getAttribute("class").indexOf("open") != -1) { + var liActive = this.DOMResults.querySelector("li.active"); + if (liActive !== null) { + event.preventDefault(); + this._Select(liActive); + this.DOMResults.setAttribute("class", "autocomplete"); + } + } + }, + Operator: ConditionOperator.AND, + Event: EventType.KEYDOWN + }, + "KeyUpAndDown_down": { + Conditions: [{ + Is: 38, + Not: false + }, + { + Is: 40, + Not: false + }], + Callback: function (event) { + event.preventDefault(); + }, + Operator: ConditionOperator.OR, + Event: EventType.KEYDOWN + }, + "KeyUpAndDown_up": { + Conditions: [{ + Is: 38, + Not: false + }, + { + Is: 40, + Not: false + }], + Callback: function (event) { + event.preventDefault(); + var first = this.DOMResults.querySelector("li:first-child:not(.locked)"), last = this.DOMResults.querySelector("li:last-child:not(.locked)"), active = this.DOMResults.querySelector("li.active"); + if (active) { + var currentIndex = Array.prototype.indexOf.call(active.parentNode.children, active), position = currentIndex + (event.keyCode - 39), lisCount = this.DOMResults.getElementsByTagName("li").length; + if (position < 0) { + position = lisCount - 1; + } + else if (position >= lisCount) { + position = 0; + } + active.classList.remove("active"); + active.parentElement.children.item(position).classList.add("active"); + } + else if (last && event.keyCode == 38) { + last.classList.add("active"); + } + else if (first) { + first.classList.add("active"); + } + }, + Operator: ConditionOperator.OR, + Event: EventType.KEYUP + }, + "AlphaNum": { + Conditions: [{ + Is: 13, + Not: true + }, { + From: 35, + To: 40, + Not: true + }], + Callback: function () { + var oldValue = this.Input.getAttribute("data-autocomplete-old-value"), currentValue = this._Pre(); + if (currentValue !== "" && currentValue.length >= this._MinChars()) { + if (!oldValue || currentValue != oldValue) { + this.DOMResults.setAttribute("class", "autocomplete open"); + } + AutoComplete.prototype.cache(this, function (response) { + this._Render(this._Post(response)); + this._Open(); + }.bind(this)); + } + }, + Operator: ConditionOperator.AND, + Event: EventType.KEYUP + } + }, + DOMResults: null, + Request: null, + Input: null, + /** + * Return the message when no result returns + */ + _EmptyMessage: function () { + var emptyMessage = ""; + if (this.Input.hasAttribute("data-autocomplete-empty-message")) { + emptyMessage = this.Input.getAttribute("data-autocomplete-empty-message"); + } + else if (this.EmptyMessage !== false) { + emptyMessage = this.EmptyMessage; + } + else { + emptyMessage = ""; + } + return emptyMessage; + }, + /** + * Returns the maximum number of results + */ + _Limit: function () { + var limit = this.Input.getAttribute("data-autocomplete-limit"); + if (isNaN(limit) || limit === null) { + return this.Limit; + } + return parseInt(limit, 10); + }, + /** + * Returns the minimum number of characters entered before firing ajax + */ + _MinChars: function () { + var minchars = this.Input.getAttribute("data-autocomplete-minchars"); + if (isNaN(minchars) || minchars === null) { + return this.MinChars; + } + return parseInt(minchars, 10); + }, + /** + * Apply transformation on labels response + */ + _Highlight: function (label) { + return label.replace(this.Highlight.getRegex(this._Pre()), this.Highlight.transform); + }, + /** + * Returns the HHTP method to use + */ + _HttpMethod: function () { + if (this.Input.hasAttribute("data-autocomplete-method")) { + return this.Input.getAttribute("data-autocomplete-method"); + } + return this.HttpMethod; + }, + /** + * Returns the query param to use + */ + _QueryArg: function () { + if (this.Input.hasAttribute("data-autocomplete-param-name")) { + return this.Input.getAttribute("data-autocomplete-param-name"); + } + return this.QueryArg; + }, + /** + * Returns the URL to use for AJAX request + */ + _Url: function () { + if (this.Input.hasAttribute("data-autocomplete")) { + return this.Input.getAttribute("data-autocomplete"); + } + return this.Url; + }, + /** + * Manage the close + */ + _Blur: function (now) { + if (now === true) { + this.DOMResults.setAttribute("class", "autocomplete"); + this.Input.setAttribute("data-autocomplete-old-value", this.Input.value); + } + else { + var params = this; + setTimeout(function () { + params._Blur(true); + }, 150); + } + }, + /** + * Manage the cache + */ + _Cache: function (value) { + return this.$Cache[value]; + }, + /** + * Manage the open + */ + _Focus: function () { + var oldValue = this.Input.getAttribute("data-autocomplete-old-value"); + if ((!oldValue || this.Input.value != oldValue) && this._MinChars() <= this.Input.value.length) { + this.DOMResults.setAttribute("class", "autocomplete open"); + } + }, + /** + * Bind all results item if one result is opened + */ + _Open: function () { + var params = this; + Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"), function (li) { + if (li.getAttribute("class") != "locked") { + li.onclick = function (event) { + params._Select(li); + }; + li.onmouseenter = function () { + var active = params.DOMResults.querySelector("li.active"); + if (active !== li) { + if (active !== null) { + active.classList.remove("active"); + } + li.classList.add("active"); + } + }; + } + }); + }, + /** + * Position the results HTML element + */ + _Position: function () { + this.DOMResults.setAttribute("class", "autocomplete"); + this.DOMResults.setAttribute("style", "top:" + (this.Input.offsetTop + this.Input.offsetHeight) + "px;left:" + this.Input.offsetLeft + "px;width:" + this.Input.clientWidth + "px;"); + }, + /** + * Execute the render of results DOM element + */ + _Render: function (response) { + var ul; + if (typeof response == "string") { + ul = this._RenderRaw(response); + } + else { + ul = this._RenderResponseItems(response); + } + if (this.DOMResults.hasChildNodes()) { + this.DOMResults.removeChild(this.DOMResults.childNodes[0]); + } + this.DOMResults.appendChild(ul); + }, + /** + * ResponseItems[] rendering + */ + _RenderResponseItems: function (response) { + var ul = document.createElement("ul"), li = document.createElement("li"), limit = this._Limit(); + // Order + if (limit < 0) { + response = response.reverse(); + } + else if (limit === 0) { + limit = response.length; + } + for (var item = 0; item < Math.min(Math.abs(limit), response.length); item++) { + li.innerHTML = response[item].Label; + li.setAttribute("data-autocomplete-value", response[item].Value); + ul.appendChild(li); + li = document.createElement("li"); + } + return ul; + }, + /** + * string response rendering (RAW HTML) + */ + _RenderRaw: function (response) { + var ul = document.createElement("ul"), li = document.createElement("li"); + if (response.length > 0) { + this.DOMResults.innerHTML = response; + } + else { + var emptyMessage = this._EmptyMessage(); + if (emptyMessage !== "") { + li.innerHTML = emptyMessage; + li.setAttribute("class", "locked"); + ul.appendChild(li); + } + } + return ul; + }, + /** + * Deal with request response + */ + _Post: function (response) { + try { + var returnResponse = []; + //JSON return + var json = JSON.parse(response); + if (Object.keys(json).length === 0) { + return ""; + } + if (Array.isArray(json)) { + for (var i = 0; i < Object.keys(json).length; i++) { + returnResponse[returnResponse.length] = { "Value": json[i], "Label": this._Highlight(json[i]) }; + } + } + else { + for (var value in json) { + returnResponse.push({ + "Value": value, + "Label": this._Highlight(json[value]) + }); + } + } + return returnResponse; + } + catch (event) { + //HTML return + return response; + } + }, + /** + * Return the autocomplete value to send (before request) + */ + _Pre: function () { + return this.Input.value; + }, + /** + * Choice one result item + */ + _Select: function (item) { + console.log('test test test'); + if (item.hasAttribute("data-autocomplete-value")) { + this.Input.value = item.getAttribute("data-autocomplete-value"); + } + else { + this.Input.value = item.innerHTML; + } + this.Input.setAttribute("data-autocomplete-old-value", this.Input.value); + }, + $AjaxTimer: null, + $Cache: {}, + $Listeners: {} +}; +module.exports = AutoComplete; + +},{}]},{},[1])(1) +}); diff --git a/searx/static/themes/simple/js/searx_src/searx_imageresult.js b/searx/static/themes/simple/js/searx_src/searx_imageresult.js new file mode 100644 index 000000000..7bbfc1454 --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/searx_imageresult.js @@ -0,0 +1,151 @@ +/** +* +* Google Image Layout v0.0.1 +* Description, by Anh Trinh. +* Heavily modified for searx +* http://trinhtrunganh.com +* +* @license Free to use under the MIT License. +* +*/ +(function(w, d) { + 'use strict'; + + function ImageLayout(container_selector, results_selector, img_selector, maxHeight) { + this.container_selector = container_selector; + this.results_selector = results_selector; + this.img_selector = img_selector; + this.margin = 10; + this.maxHeight = maxHeight; + this._alignAllDone = true; + } + + /** + * Get the height that make all images fit the container + * + * width = w1 + w2 + w3 + ... = r1*h + r2*h + r3*h + ... + * + * @param {[type]} images the images to be calculated + * @param {[type]} width the container witdth + * @param {[type]} margin the margin between each image + * + * @return {[type]} the height + */ + ImageLayout.prototype._getHeigth = function(images, width) { + var r = 0, + img; + + width -= images.length * this.margin; + for (var i = 0; i < images.length; i++) { + img = images[i]; + if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) { + r += img.naturalWidth / img.naturalHeight; + } else { + // assume that not loaded images are square + r += 1; + } + } + + return width / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3 + }; + + ImageLayout.prototype._setSize = function(images, height) { + var img, imgWidth, imagesLength = images.length; + for (var i = 0; i < imagesLength; i++) { + img = images[i]; + if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) { + imgWidth = height * img.naturalWidth / img.naturalHeight; + } else { + // not loaded image : make it square as _getHeigth said it + imgWidth = height; + } + img.style.width = imgWidth + 'px'; + img.style.height = height + 'px'; + img.style.marginLeft = '3px'; + img.style.marginTop = '3px'; + img.style.marginRight = this.margin - 7 + 'px'; // -4 is the negative margin of the inline element + img.style.marginBottom = this.margin - 7 + 'px'; + } + }; + + ImageLayout.prototype._alignImgs = function(imgGroup) { + var slice, h, + containerWidth = d.querySelector(this.container_selector).clientWidth; + + w: while (imgGroup.length > 0) { + for (var i = 1; i <= imgGroup.length; i++) { + slice = imgGroup.slice(0, i); + h = this._getHeigth(slice, containerWidth); + if (h < this.maxHeight) { + this._setSize(slice, h); + imgGroup = imgGroup.slice(i); + continue w; + } + } + this._setSize(slice, Math.min(this.maxHeight, h)); + break; + } + }; + + ImageLayout.prototype.align = function(results_selector) { + var results_selectorNode = d.querySelectorAll(this.results_selector), + results_length = results_selectorNode.length, + previous = null, + current = null, + imgGroup = []; + for (var i = 0; i < results_length; i++) { + current = results_selectorNode[i]; + if (current.previousElementSibling !== previous && imgGroup.length > 0) { + // the current image is not conected to previous one + // so the current image is the start of a new group of images. + // so call _alignImgs to align the current group + this._alignImgs(imgGroup); + // and start a new empty group of images + imgGroup = []; + } + // add the current image to the group (only the img tag) + imgGroup.push(current.querySelector(this.img_selector)); + // update the previous variable + previous = current; + } + // align the remaining images + if (imgGroup.length > 0) { + this._alignImgs(imgGroup); + } + }; + + ImageLayout.prototype.watch = function() { + var i, img, imgGroup, imgNodeLength, + obj = this, + results_nodes = d.querySelectorAll(this.results_selector), + results_length = results_nodes.length; + + function align(e) { + obj.align(); + } + + function throttleAlign(e) { + if (obj._alignAllDone) { + obj._alignAllDone = false; + setTimeout(function() { + obj.align(); + obj._alignAllDone = true; + }, 100); + } + } + + w.addEventListener('resize', throttleAlign); + w.addEventListener('pageshow', align); + + for (i = 0; i < results_length; i++) { + img = results_nodes[i].querySelector(this.img_selector); + if (typeof img !== 'undefined') { + img.addEventListener('load', throttleAlign); + img.addEventListener('error', throttleAlign); + } + } + }; + + w.searx.ImageLayout = ImageLayout; + +})(window, document); diff --git a/searx/static/themes/simple/js/searx_src/searx_keyboard.js b/searx/static/themes/simple/js/searx_src/searx_keyboard.js new file mode 100644 index 000000000..657d9ec93 --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/searx_keyboard.js @@ -0,0 +1,366 @@ +searx.ready(function() { + + searx.on('.result', 'click', function() { + highlightResult(this)(true); + }); + + searx.on('.result a', 'focus', function(e) { + var el = e.target; + while (el !== undefined) { + if (el.classList.contains('result')) { + if (el.getAttribute("data-vim-selected") === null) { + highlightResult(el)(true); + } + break; + } + el = el.parentNode; + } + }, true); + + var vimKeys = { + 27: { + key: 'Escape', + fun: removeFocus, + des: 'remove focus from the focused input', + cat: 'Control' + }, + 73: { + key: 'i', + fun: searchInputFocus, + des: 'focus on the search input', + cat: 'Control' + }, + 66: { + key: 'b', + fun: scrollPage(-window.innerHeight), + des: 'scroll one page up', + cat: 'Navigation' + }, + 70: { + key: 'f', + fun: scrollPage(window.innerHeight), + des: 'scroll one page down', + cat: 'Navigation' + }, + 85: { + key: 'u', + fun: scrollPage(-window.innerHeight / 2), + des: 'scroll half a page up', + cat: 'Navigation' + }, + 68: { + key: 'd', + fun: scrollPage(window.innerHeight / 2), + des: 'scroll half a page down', + cat: 'Navigation' + }, + 71: { + key: 'g', + fun: scrollPageTo(-document.body.scrollHeight, 'top'), + des: 'scroll to the top of the page', + cat: 'Navigation' + }, + 86: { + key: 'v', + fun: scrollPageTo(document.body.scrollHeight, 'bottom'), + des: 'scroll to the bottom of the page', + cat: 'Navigation' + }, + 75: { + key: 'k', + fun: highlightResult('up'), + des: 'select previous search result', + cat: 'Results' + }, + 74: { + key: 'j', + fun: highlightResult('down'), + des: 'select next search result', + cat: 'Results' + }, + 80: { + key: 'p', + fun: pageButtonClick(0), + des: 'go to previous page', + cat: 'Results' + }, + 78: { + key: 'n', + fun: pageButtonClick(1), + des: 'go to next page', + cat: 'Results' + }, + 79: { + key: 'o', + fun: openResult(false), + des: 'open search result', + cat: 'Results' + }, + 84: { + key: 't', + fun: openResult(true), + des: 'open the result in a new tab', + cat: 'Results' + }, + 82: { + key: 'r', + fun: reloadPage, + des: 'reload page from the server', + cat: 'Control' + }, + 72: { + key: 'h', + fun: toggleHelp, + des: 'toggle help window', + cat: 'Other' + } + }; + + searx.on(document, "keydown", function(e) { + // check for modifiers so we don't break browser's hotkeys + if (vimKeys.hasOwnProperty(e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) { + var tagName = e.target.tagName.toLowerCase(); + if (e.keyCode === 27) { + if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') { + vimKeys[e.keyCode].fun(); + } + } else { + if (e.target === document.body || tagName === 'a' || tagName === 'button') { + e.preventDefault(); + vimKeys[e.keyCode].fun(); + } + } + } + }); + + function highlightResult(which) { + return function(noScroll) { + var current = document.querySelector('.result[data-vim-selected]'), + effectiveWhich = which; + if (current === null) { + // no selection : choose the first one + current = document.querySelector('.result'); + if (current === null) { + // no first one : there are no results + return; + } + // replace up/down actions by selecting first one + if (which === "down" || which === "up") { + effectiveWhich = current; + } + } + + var next, results = document.querySelectorAll('.result'); + + if (typeof effectiveWhich !== 'string') { + next = effectiveWhich; + } else { + switch (effectiveWhich) { + case 'visible': + var top = document.documentElement.scrollTop || document.body.scrollTop; + var bot = top + document.documentElement.clientHeight; + + for (var i = 0; i < results.length; i++) { + next = results[i]; + var etop = next.offsetTop; + var ebot = etop + next.clientHeight; + + if ((ebot <= bot) && (etop > top)) { + break; + } + } + break; + case 'down': + next = current.nextElementSibling; + if (next === null) { + next = results[0]; + } + break; + case 'up': + next = current.previousElementSibling; + if (next === null) { + next = results[results.length - 1]; + } + break; + case 'bottom': + next = results[results.length - 1]; + break; + case 'top': + /* falls through */ + default: + next = results[0]; + } + } + + if (next) { + current.removeAttribute('data-vim-selected'); + next.setAttribute('data-vim-selected', 'true'); + var link = next.querySelector('h3 a') || next.querySelector('a'); + if (link !== null) { + link.focus(); + } + if (!noScroll) { + scrollPageToSelected(); + } + } + }; + } + + function reloadPage() { + document.location.reload(true); + } + + function removeFocus() { + if (document.activeElement) { + document.activeElement.blur(); + } + } + + function pageButtonClick(num) { + return function() { + var buttons = $('div#pagination button[type="submit"]'); + if (buttons.length !== 2) { + console.log('page navigation with this theme is not supported'); + return; + } + if (num >= 0 && num < buttons.length) { + buttons[num].click(); + } else { + console.log('pageButtonClick(): invalid argument'); + } + }; + } + + function scrollPageToSelected() { + var sel = document.querySelector('.result[data-vim-selected]'); + if (sel === null) { + return; + } + var wtop = document.documentElement.scrollTop || document.body.scrollTop, + wheight = document.documentElement.clientHeight, + etop = sel.offsetTop, + ebot = etop + sel.clientHeight, + offset = 120; + // first element ? + if ((sel.previousElementSibling === null) && (ebot < wheight)) { + // set to the top of page if the first element + // is fully included in the viewport + window.scroll(window.scrollX, 0); + return; + } + if (wtop > (etop - offset)) { + window.scroll(window.scrollX, etop - offset); + } else { + var wbot = wtop + wheight; + if (wbot < (ebot + offset)) { + window.scroll(window.scrollX, ebot - wheight + offset); + } + } + } + + function scrollPage(amount) { + return function() { + window.scrollBy(0, amount); + highlightResult('visible')(); + }; + } + + function scrollPageTo(position, nav) { + return function() { + window.scrollTo(0, position); + highlightResult(nav)(); + }; + } + + function searchInputFocus() { + window.scrollTo(0, 0); + document.querySelector('#q').focus(); + } + + function openResult(newTab) { + return function() { + var link = document.querySelector('.result[data-vim-selected] h3 a'); + if (link !== null) { + var url = link.getAttribute('href'); + if (newTab) { + window.open(url); + } else { + window.location.href = url; + } + } + }; + } + + function initHelpContent(divElement) { + var categories = {}; + + for (var k in vimKeys) { + var key = vimKeys[k]; + categories[key.cat] = categories[key.cat] || []; + categories[key.cat].push(key); + } + + var sorted = Object.keys(categories).sort(function(a, b) { + return categories[b].length - categories[a].length; + }); + + if (sorted.length === 0) { + return; + } + + var html = '<a href="#" class="close" aria-label="close" title="close">×</a>'; + html += '<h3>How to navigate searx with Vim-like hotkeys</h3>'; + html += '<table>'; + + for (var i = 0; i < sorted.length; i++) { + var cat = categories[sorted[i]]; + + var lastCategory = i === (sorted.length - 1); + var first = i % 2 === 0; + + if (first) { + html += '<tr>'; + } + html += '<td>'; + + html += '<h4>' + cat[0].cat + '</h4>'; + html += '<ul class="list-unstyled">'; + + for (var cj in cat) { + html += '<li><kbd>' + cat[cj].key + '</kbd> ' + cat[cj].des + '</li>'; + } + + html += '</ul>'; + html += '</td>'; // col-sm-* + + if (!first || lastCategory) { + html += '</tr>'; // row + } + } + + html += '</table>'; + + divElement.innerHTML = html; + } + + function toggleHelp() { + var helpPanel = document.querySelector('#vim-hotkeys-help'); + console.log(helpPanel); + if (helpPanel === undefined || helpPanel === null) { + // first call + helpPanel = document.createElement('div'); + helpPanel.id = 'vim-hotkeys-help'; + helpPanel.className='dialog-modal'; + helpPanel.style='width: 40%'; + initHelpContent(helpPanel); + var body = document.getElementsByTagName('body')[0]; + body.appendChild(helpPanel); + } else { + // togggle hidden + helpPanel.classList.toggle('invisible'); + return; + } + + } + +}); diff --git a/searx/static/themes/simple/js/searx_src/searx_mapresult.js b/searx/static/themes/simple/js/searx_src/searx_mapresult.js new file mode 100644 index 000000000..869d07da0 --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/searx_mapresult.js @@ -0,0 +1,176 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +*/ +(function (w, d, searx) { + 'use strict'; + + searx.ready(function () { + searx.on('.searx_overpass_request', 'click', function(event) { + // no more request + this.classList.remove("searx_overpass_request"); + + // + var overpass_url = "https://overpass-api.de/api/interpreter?data="; + var query_start = overpass_url + "[out:json][timeout:25];("; + var query_end = ");out meta;"; + + var osm_id = this.dataset.osmId; + var osm_type = this.dataset.osmType; + var result_table = d.querySelector("#" + this.dataset.resultTable); + var result_table_loadicon = d.querySelector("#" + this.dataset.resultTableLoadicon); + + // tags which can be ignored + var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ]; + + if(osm_id && osm_type && result_table) { + var query = null; + switch(osm_type) { + case 'node': + query = query_start + "node(" + osm_id + ");" + query_end; + break; + case 'way': + query = query_start + "way(" + osm_id + ");" + query_end; + break; + case 'relation': + query = query_start + "relation(" + osm_id + ");" + query_end; + break; + default: + break; + } + if(query) { + // console.log(query); + searx.http( 'GET', query ).then(function(html, contentType) { + html = JSON.parse(html); + if(html && html.elements && html.elements[0]) { + var element = html.elements[0]; + var newHtml = ""; + for (var row in element.tags) { + if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) { + newHtml += "<tr><td>" + row + "</td><td>"; + switch(row) { + case "phone": + case "fax": + newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>"; + break; + case "email": + newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "website": + case "url": + newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikidata": + newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>"; + break; + case "wikipedia": + if(element.tags[row].indexOf(":") != -1) { + newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>"; + break; + } + /* jshint ignore:start */ + default: + /* jshint ignore:end */ + newHtml += element.tags[row]; + break; + } + newHtml += "</td></tr>"; + } + } + result_table_loadicon.parentNode.removeChild(result_table_loadicon); + result_table.classList.remove('invisible'); + result_table.querySelector("tbody").innerHTML = newHtml; + } + }) + .catch(function() { + result_table_loadicon.classList.remove('invisible'); + result_table_loadicon.innerHTML = "could not load data!"; + }); + } + } + + // this event occour only once per element + event.preventDefault(); + }); + + searx.on('.searx_init_map', 'click', function(event) { + // no more request + this.classList.remove("searx_init_map"); + + // + var leaflet_target = this.dataset.leafletTarget; + var map_lon = parseFloat(this.dataset.mapLon); + var map_lat = parseFloat(this.dataset.mapLat); + var map_zoom = parseFloat(this.dataset.mapZoom); + var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox); + var map_geojson = JSON.parse(this.dataset.mapGeojson); + + searx.loadStyle('leaflet/leaflet.css'); + searx.loadScript('leaflet/leaflet.js', function() { + var map_bounds = null; + if(map_boundingbox) { + var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); + var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]); + map_bounds = L.latLngBounds(southWest, northEast); + } + + // init map + var map = L.map(leaflet_target); + // create the tile layer with correct attribution + var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); + var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; + var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; + var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); + // init map view + if(map_bounds) { + // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021 + // Still useful ? + setTimeout(function () { + map.fitBounds(map_bounds, { + maxZoom:17 + }); + }, 0); + } else if (map_lon && map_lat) { + if(map_zoom) { + map.setView(new L.latLng(map_lat, map_lon),map_zoom); + } else { + map.setView(new L.latLng(map_lat, map_lon),8); + } + } + + map.addLayer(osmMapnik); + + var baseLayers = { + "OSM Mapnik": osmMapnik/*, + "OSM Wikimedia": osmWikimedia*/ + }; + + L.control.layers(baseLayers).addTo(map); + + if(map_geojson) { + L.geoJson(map_geojson).addTo(map); + } /*else if(map_bounds) { + L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map); + }*/ + }); + + // this event occour only once per element + event.preventDefault(); + }); + }); +})(window, document, window.searx); diff --git a/searx/static/themes/simple/js/searx_src/searx_results.js b/searx/static/themes/simple/js/searx_src/searx_results.js new file mode 100644 index 000000000..b13da8391 --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/searx_results.js @@ -0,0 +1,63 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +*/ +(function(w, d, searx) { + 'use strict'; + + searx.ready(function() { + searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 200); + searx.image_thumbnail_layout.watch(); + + searx.on('.btn-collapse', 'click', function(event) { + var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed'); + var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed'); + var target = this.getAttribute('data-target'); + var targetElement = d.querySelector(target); + var html = this.innerHTML; + if (this.classList.contains('collapsed')) { + html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed); + } else { + html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed); + } + this.innerHTML = html; + this.classList.toggle('collapsed'); + targetElement.classList.toggle('invisible'); + }); + + searx.on('.media-loader', 'click', function(event) { + var target = this.getAttribute('data-target'); + var iframe_load = d.querySelector(target + ' > iframe'); + var srctest = iframe_load.getAttribute('src'); + if (srctest === null || srctest === undefined || srctest === false) { + iframe_load.setAttribute('src', iframe_load.getAttribute('data-src')); + } + }); + + w.addEventListener('scroll', function() { + var e = d.getElementById('backToTop'), + scrollTop = document.documentElement.scrollTop || document.body.scrollTop; + if (e !== null) { + if (scrollTop >= 200) { + e.style.opacity = 1; + } else { + e.style.opacity = 0; + } + } + }); + + }); + +})(window, document, window.searx); diff --git a/searx/static/themes/simple/js/searx_src/searx_search.js b/searx/static/themes/simple/js/searx_src/searx_search.js new file mode 100644 index 000000000..580d98d6a --- /dev/null +++ b/searx/static/themes/simple/js/searx_src/searx_search.js @@ -0,0 +1,117 @@ +/** +* searx is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* searx is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with searx. If not, see < http://www.gnu.org/licenses/ >. +* +* (C) 2017 by Alexandre Flament, <alex@al-f.net> +*/ +(function(w, d, searx) { + 'use strict'; + + var firstFocus = true, qinput_id = "q", qinput; + + function placeCursorAtEnd(element) { + if (element.setSelectionRange) { + var len = element.value.length; + element.setSelectionRange(len, len); + } + } + + function submitIfQuery() { + if (qinput.value.length > 0) { + var search = document.getElementById('search'); + setTimeout(search.submit.bind(search), 0); + } + } + + function createClearButton(qinput) { + var cs = document.getElementById('clear_search'); + var updateClearButton = function() { + if (qinput.value.length === 0) { + cs.classList.add("empty"); + } else { + cs.classList.remove("empty"); + } + }; + + // update status, event listener + updateClearButton(); + cs.addEventListener('click', function() { + qinput.value=''; + qinput.focus(); + updateClearButton(); + }); + qinput.addEventListener('keyup', updateClearButton, false); + } + + searx.ready(function() { + qinput = d.getElementById(qinput_id); + + function placeCursorAtEndOnce(e) { + if (firstFocus) { + placeCursorAtEnd(qinput); + firstFocus = false; + } else { + // e.preventDefault(); + } + } + + if (qinput !== null) { + // clear button + createClearButton(qinput); + + // autocompleter + if (searx.autocompleter) { + searx.autocomplete = AutoComplete.call(w, { + Url: "./autocompleter", + EmptyMessage: searx.no_item_found, + HttpMethod: searx.method, + MinChars: 4, + Delay: 300, + }, "#" + qinput_id); + + // hack, see : https://github.com/autocompletejs/autocomplete.js/issues/37 + w.addEventListener('resize', function() { + var event = new CustomEvent("position"); + qinput.dispatchEvent(event); + }); + } + + qinput.addEventListener('focus', placeCursorAtEndOnce, false); + qinput.focus(); + } + + // vanilla js version of search_on_category_select.js + if (qinput !== null && searx.search_on_category_select) { + d.querySelector('.help').className='invisible'; + + searx.on('#categories input', 'change', function(e) { + var i, categories = d.querySelectorAll('#categories input[type="checkbox"]'); + for(i=0; i<categories.length; i++) { + if (categories[i] !== this && categories[i].checked) { + categories[i].click(); + } + } + if (! this.checked) { + this.click(); + } + submitIfQuery(); + return false; + }); + + searx.on(d.getElementById('time_range'), 'change', submitIfQuery); + searx.on(d.getElementById('language'), 'change', submitIfQuery); + } + + }); + +})(window, document, window.searx); diff --git a/searx/static/themes/simple/leaflet/images/layers-2x.png b/searx/static/themes/simple/leaflet/images/layers-2x.png Binary files differnew file mode 100644 index 000000000..200c333dc --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/layers-2x.png diff --git a/searx/static/themes/simple/leaflet/images/layers.png b/searx/static/themes/simple/leaflet/images/layers.png Binary files differnew file mode 100644 index 000000000..1a72e5784 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/layers.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-2x-green.png b/searx/static/themes/simple/leaflet/images/marker-icon-2x-green.png Binary files differnew file mode 100644 index 000000000..7446bb031 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-2x-green.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-2x-orange.png b/searx/static/themes/simple/leaflet/images/marker-icon-2x-orange.png Binary files differnew file mode 100644 index 000000000..ecd67736f --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-2x-orange.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png b/searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png Binary files differnew file mode 100644 index 000000000..1d2e197c6 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-2x.png b/searx/static/themes/simple/leaflet/images/marker-icon-2x.png Binary files differnew file mode 100644 index 000000000..88f9e5018 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-2x.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-green.png b/searx/static/themes/simple/leaflet/images/marker-icon-green.png Binary files differnew file mode 100644 index 000000000..f48ef41df --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-green.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-orange.png b/searx/static/themes/simple/leaflet/images/marker-icon-orange.png Binary files differnew file mode 100644 index 000000000..d0d22205c --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-orange.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-red.png b/searx/static/themes/simple/leaflet/images/marker-icon-red.png Binary files differnew file mode 100644 index 000000000..7a92b9e04 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon-red.png diff --git a/searx/static/themes/simple/leaflet/images/marker-icon.png b/searx/static/themes/simple/leaflet/images/marker-icon.png Binary files differnew file mode 100644 index 000000000..950edf246 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-icon.png diff --git a/searx/static/themes/simple/leaflet/images/marker-shadow.png b/searx/static/themes/simple/leaflet/images/marker-shadow.png Binary files differnew file mode 100644 index 000000000..9fd297953 --- /dev/null +++ b/searx/static/themes/simple/leaflet/images/marker-shadow.png diff --git a/searx/static/themes/simple/leaflet/leaflet.css b/searx/static/themes/simple/leaflet/leaflet.css new file mode 100644 index 000000000..d1b47a125 --- /dev/null +++ b/searx/static/themes/simple/leaflet/leaflet.css @@ -0,0 +1,636 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer { + max-width: none !important; + max-height: none !important; + } + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; + } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; + } +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + } + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-container a.leaflet-active { + outline: 2px solid orange; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } + +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(images/marker-icon.png); + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover { + text-decoration: underline; + } +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: border-box; + box-sizing: border-box; + + background: #fff; + background: rgba(255, 255, 255, 0.5); + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; + } +.leaflet-popup-content p { + margin: 18px 0; + } +.leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-left: -20px; + overflow: hidden; + pointer-events: none; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + border: none; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; + } +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } diff --git a/searx/static/themes/simple/leaflet/leaflet.js b/searx/static/themes/simple/leaflet/leaflet.js new file mode 100644 index 000000000..02ae624a7 --- /dev/null +++ b/searx/static/themes/simple/leaflet/leaflet.js @@ -0,0 +1,5 @@ +/* @preserve + * Leaflet 1.3.3+Detached: b22aef4aa71afd640bf8e91915b78899bf64ff89.b22aef4, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ei,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?ii(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ni,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-ri));return ri=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||ai!==m)return ai.call(window,e(t,i));t.call(i)}function g(t){t&&hi.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=oi(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:oi(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:oi(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function S(t,i,e,n){if(oi(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function Z(t,i,e,n){return new S(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Ji?"z":"x":""}return h||"M0 0"}function A(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function B(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function I(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(te,n,!1):"touchmove"===i?t.removeEventListener(ie,n,!1):"touchend"===i&&(t.removeEventListener(ee,n,!1),t.removeEventListener(ne,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(oe.indexOf(t.target.tagName)<0))return;Pt(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(te,o,!1),re||(document.documentElement.addEventListener(te,R,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,D,!0),document.documentElement.addEventListener(ne,D,!0),re=!0)}function R(t){se[t.pointerId]=t,ae++}function N(t){se[t.pointerId]&&(se[t.pointerId]=t)}function D(t){delete se[t.pointerId],ae--}function j(t,i){t.touches=[];for(var e in se)t.touches.push(se[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(ie,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ee,n,!1),t.addEventListener(ne,n,!1)}function F(t,i,e){function n(t){var i;if(Vi){if(!bi||"mouse"===t.pointerType)return;i=ae}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Vi){if(!bi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[le+he+e]=n,t[le+ue+e]=o,t[le+"dblclick"+e]=i,t.addEventListener(he,n,!1),t.addEventListener(ue,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[le+he+i],n=t[le+ue+i],o=t[le+"dblclick"+i];return t.removeEventListener(he,e,!1),t.removeEventListener(ue,n,!1),bi||t.removeEventListener("dblclick",o,!1),this}function V(t){return"string"==typeof t?document.getElementById(t):t}function q(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function G(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function K(t){var i=t.parentNode;i&&i.removeChild(t)}function Y(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function X(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function J(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function $(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=et(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function Q(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!$(t,i)){var s=et(t);it(t,(s?s+" ":"")+i)}}function tt(t,i){void 0!==t.classList?t.classList.remove(i):it(t,h((" "+et(t)+" ").replace(" "+i+" "," ")))}function it(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function et(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function nt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&ot(t,i)}function ot(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function st(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function rt(t,i,e){var n=i||new x(0,0);t.style[ce]=(Ri?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function at(t,i){t._leaflet_pos=i,ji?rt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function ht(t){return t._leaflet_pos||new x(0,0)}function ut(){mt(window,"dragstart",Pt)}function lt(){ft(window,"dragstart",Pt)}function ct(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(_t(),me=t,fe=t.style.outline,t.style.outline="none",mt(window,"keydown",_t))}function _t(){me&&(me.style.outline=fe,me=void 0,fe=void 0,ft(window,"keydown",_t))}function dt(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function pt(t){var i=t.getBoundingClientRect();return{x:i.width/t.offsetWidth||1,y:i.height/t.offsetHeight||1,boundingClientRect:i}}function mt(t,i,e,n){if("object"==typeof i)for(var o in i)gt(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)gt(t,i[s],e,n);return this}function ft(t,i,e,n){if("object"==typeof i)for(var o in i)vt(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)vt(t,i[s],e,n);else{for(var a in t[ye])vt(t,a,t[ye][a]);delete t[ye]}return this}function gt(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[ye]&&t[ye][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Vi&&0===i.indexOf("touch")?B(t,i,r,s):!qi||"dblclick"!==i||!F||Vi&&Ei?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,Ct(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&zi&&(r=function(t){St(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[ye]=t[ye]||{},t[ye][s]=r}function vt(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[ye]&&t[ye][s];if(!r)return this;Vi&&0===i.indexOf("touch")?I(t,i,s):!qi||"dblclick"!==i||!U||Vi&&Ei?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[ye][s]=null}function yt(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Mt(t),this}function xt(t){return gt(t,"mousewheel",yt),this}function wt(t){return mt(t,"mousedown touchstart dblclick",yt),gt(t,"click",zt),this}function Pt(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Lt(t){return Pt(t),yt(t),this}function bt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=pt(i),n=e.boundingClientRect;return new x((t.clientX-n.left)/e.x-i.clientLeft,(t.clientY-n.top)/e.y-i.clientTop)}function Tt(t){return bi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/xe:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function zt(t){we[t.type]=!0}function Mt(t){var i=we[t.type];return we[t.type]=!1,i}function Ct(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function St(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=ge&&e-ge;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Lt(t):(ge=e,i(t))}function Zt(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=Bt(t,e),t=kt(t,e)}function Et(t,i,e){return Math.sqrt(Dt(t,i,e,!0))}function kt(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,At(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function At(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Dt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,At(t,i,e,n,s),At(t,i,e,s,o))}function Bt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Nt(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?ke:Rt(t,e),u=Rt(i,e);for(ke=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Rt(r=Ot(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function Ot(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Rt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Nt(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Dt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function jt(t){return!oi(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Wt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),jt(t)}function Ht(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Rt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=Ot(h,a,l,i,e))._code=Rt(c,i),n.push(c)):(h._code&l&&((c=Ot(h,a,l,i,e))._code=Rt(c,i),n.push(c)),n.push(a));t=n}return t}function Ft(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ut;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new $e(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new $e(e));return new Ke(h);case"LineString":case"MultiLineString":return n=Vt(a,"LineString"===r.type?0:1,l),new nn(n,i);case"Polygon":case"MultiPolygon":return n=Vt(a,"Polygon"===r.type?1:2,l),new on(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Ft({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new Ke(h);default:throw new Error("Invalid GeoJSON object.")}}function Ut(t){return new M(t[1],t[0],t[2])}function Vt(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Vt(t[s],i-1,e):(e||Ut)(t[s]),o.push(n);return o}function qt(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Gt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Gt(t[s],i-1,e,n):qt(t[s],n));return!i&&e&&o.push(o[0]),o}function Kt(t,e){return t.feature?i({},t.feature,{geometry:e}):Yt(e)}function Yt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Xt(t,i){return new sn(t,i)}function Jt(t,i){return new mn(t,i)}function $t(t){return Xi?new vn(t):null}function Qt(t){return Ji||$i?new Pn(t):null}var ti=Object.freeze;Object.freeze=function(t){return t};var ii=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ei=0,ni=/\{ *([\w_-]+) *\}/g,oi=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},si="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",ri=0,ai=window.requestAnimationFrame||p("RequestAnimationFrame")||m,hi=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ui=(Object.freeze||Object)({freeze:ti,extend:i,create:ii,bind:e,lastId:ei,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:oi,indexOf:d,emptyImageUrl:si,requestFn:ai,cancelFn:hi,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=ii(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(ii(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var li={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};li.addEventListener=li.on,li.removeEventListener=li.clearAllEventListeners=li.off,li.addOneTimeEventListener=li.once,li.fireEvent=li.fire,li.hasEventListeners=li.listens;var ci=v.extend(li),_i=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=_i(this.x),this.y=_i(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return pi.distance(this,C(t))},wrap:function(){return pi.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var di={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},pi=i({},di,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),mi={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};S.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var fi,gi,vi,yi=i({},pi,{code:"EPSG:3857",projection:mi,transformation:function(){var t=.5/(Math.PI*mi.R);return Z(t,.5,-t,.5)}()}),xi=i({},yi,{code:"EPSG:900913"}),wi=document.documentElement.style,Pi="ActiveXObject"in window,Li=Pi&&!document.addEventListener,bi="msLaunchUri"in navigator&&!("documentMode"in document),Ti=A("webkit"),zi=A("android"),Mi=A("android 2")||A("android 3"),Ci=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Si=zi&&A("Google")&&Ci<537&&!("AudioNode"in window),Zi=!!window.opera,Ei=A("chrome"),ki=A("gecko")&&!Ti&&!Zi&&!Pi,Ai=!Ei&&A("safari"),Bi=A("phantom"),Ii="OTransition"in wi,Oi=0===navigator.platform.indexOf("Win"),Ri=Pi&&"transition"in wi,Ni="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!Mi,Di="MozPerspective"in wi,ji=!window.L_DISABLE_3D&&(Ri||Ni||Di)&&!Ii&&!Bi,Wi="undefined"!=typeof orientation||A("mobile"),Hi=Wi&&Ti,Fi=Wi&&Ni,Ui=!window.PointerEvent&&window.MSPointerEvent,Vi=!(!window.PointerEvent&&!Ui),qi=!window.L_NO_TOUCH&&(Vi||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),Gi=Wi&&Zi,Ki=Wi&&ki,Yi=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Xi=!!document.createElement("canvas").getContext,Ji=!(!document.createElementNS||!E("svg").createSVGRect),$i=!Ji&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),Qi=(Object.freeze||Object)({ie:Pi,ielt9:Li,edge:bi,webkit:Ti,android:zi,android23:Mi,androidStock:Si,opera:Zi,chrome:Ei,gecko:ki,safari:Ai,phantom:Bi,opera12:Ii,win:Oi,ie3d:Ri,webkit3d:Ni,gecko3d:Di,any3d:ji,mobile:Wi,mobileWebkit:Hi,mobileWebkit3d:Fi,msPointer:Ui,pointer:Vi,touch:qi,mobileOpera:Gi,mobileGecko:Ki,retina:Yi,canvas:Xi,svg:Ji,vml:$i}),te=Ui?"MSPointerDown":"pointerdown",ie=Ui?"MSPointerMove":"pointermove",ee=Ui?"MSPointerUp":"pointerup",ne=Ui?"MSPointerCancel":"pointercancel",oe=["INPUT","SELECT","OPTION"],se={},re=!1,ae=0,he=Ui?"MSPointerDown":Vi?"pointerdown":"touchstart",ue=Ui?"MSPointerUp":Vi?"pointerup":"touchend",le="_leaflet_",ce=st(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),_e=st(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===_e||"OTransition"===_e?_e+"End":"transitionend";if("onselectstart"in document)fi=function(){mt(window,"selectstart",Pt)},gi=function(){ft(window,"selectstart",Pt)};else{var pe=st(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);fi=function(){if(pe){var t=document.documentElement.style;vi=t[pe],t[pe]="none"}},gi=function(){pe&&(document.documentElement.style[pe]=vi,vi=void 0)}}var me,fe,ge,ve=(Object.freeze||Object)({TRANSFORM:ce,TRANSITION:_e,TRANSITION_END:de,get:V,getStyle:q,create:G,remove:K,empty:Y,toFront:X,toBack:J,hasClass:$,addClass:Q,removeClass:tt,setClass:it,getClass:et,setOpacity:nt,testProp:st,setTransform:rt,setPosition:at,getPosition:ht,disableTextSelection:fi,enableTextSelection:gi,disableImageDrag:ut,enableImageDrag:lt,preventOutline:ct,restoreOutline:_t,getSizedParentNode:dt,getScale:pt}),ye="_leaflet_events",xe=Oi&&Ei?2*window.devicePixelRatio:ki?window.devicePixelRatio:1,we={},Pe=(Object.freeze||Object)({on:mt,off:ft,stopPropagation:yt,disableScrollPropagation:xt,disableClickPropagation:wt,preventDefault:Pt,stop:Lt,getMousePosition:bt,getWheelDelta:Tt,fakeStop:zt,skipped:Mt,isExternalTarget:Ct,addListener:mt,removeListener:ft}),Le=ci.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=ht(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),at(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),be=ci.extend({options:{crs:yi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=_e&&ji&&!Gi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),mt(this._proxy,de,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(ji?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(ji?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new Le,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){Q(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-P)/b,n=u(e)*L;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!ji)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),P=Date.now(),L=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*L*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),K(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(g(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)K(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=G("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=ji?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return bt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=V(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");mt(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&ji,Q(t,"leaflet-container"+(qi?" leaflet-touch":"")+(Yi?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(Ai?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=q(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),at(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Q(t.markerPane,"leaflet-zoom-hide"),Q(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){at(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){at(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?ft:mt;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),ji&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!Ct(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!Ct(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Mt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||ct(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&Pt(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return ht(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=ji?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){tt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=G("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=ce,e=this._proxy.style[i];rt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();rt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){K(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,Q(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&tt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Te=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return Q(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(K(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),ze=function(t){return new Te(t)};be.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=G("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=G("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)K(this._controlCorners[t]);K(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Me=Te.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Te.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){Q(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(Q(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):tt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return tt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=G("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),wt(i),xt(i);var n=this._form=G("form",t+"-list");e&&(this._map.on("click",this.collapse,this),zi||mt(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=G("a",t+"-toggle",i);o.href="#",o.title="Layers",qi?(mt(o,"click",Lt),mt(o,"click",this.expand,this)):mt(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=G("div",t+"-base",n),this._separator=G("div",t+"-separator",n),this._overlaysList=G("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;Y(this._baseLayersList),Y(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),mt(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Ce=Te.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=G("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=G("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),wt(s),mt(s,"click",Lt),mt(s,"click",o,this),mt(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";tt(this._zoomInButton,i),tt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&Q(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&Q(this._zoomInButton,i)}});be.mergeOptions({zoomControl:!0}),be.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ce,this.addControl(this.zoomControl))});var Se=Te.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=G("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=G("div",i,e)),t.imperial&&(this._iScale=G("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ze=Te.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=G("div","leaflet-control-attribution"),wt(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});be.mergeOptions({attributionControl:!0}),be.addInitHook(function(){this.options.attributionControl&&(new Ze).addTo(this)});Te.Layers=Me,Te.Zoom=Ce,Te.Scale=Se,Te.Attribution=Ze,ze.layers=function(t,i,e){return new Me(t,i,e)},ze.zoom=function(t){return new Ce(t)},ze.scale=function(t){return new Se(t)},ze.attribution=function(t){return new Ze(t)};var Ee=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ee.addTo=function(t,i){return t.addHandler(i,this),this};var ke,Ae={Events:li},Be=qi?"touchstart mousedown":"mousedown",Ie={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Oe={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Re=ci.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(mt(this._dragStartTarget,Be,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Re._dragging===this&&this.finishDrag(),ft(this._dragStartTarget,Be,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!$(this._element,"leaflet-zoom-anim")&&!(Re._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Re._dragging=this,this._preventOutline&&ct(this._element),ut(),fi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t,e=dt(this._element);this._startPoint=new x(i.clientX,i.clientY),this._parentScale=pt(e),mt(document,Oe[t.type],this._onMove,this),mt(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||(e.x/=this._parentScale.x,e.y/=this._parentScale.y,Pt(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=ht(this._element).subtract(e),Q(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),Q(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),at(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){tt(document.body,"leaflet-dragging"),this._lastTarget&&(tt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Oe)ft(document,Oe[t],this._onMove,this),ft(document,Ie[t],this._onUp,this);lt(),gi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Re._dragging=!1}}),Ne=(Object.freeze||Object)({simplify:Zt,pointToSegmentDistance:Et,closestPointOnSegment:function(t,i,e){return Dt(t,i,e)},clipSegment:It,_getEdgeIntersection:Ot,_getBitCode:Rt,_sqClosestPointOnSegment:Dt,isFlat:jt,_flat:Wt}),De=(Object.freeze||Object)({clipPolygon:Ht}),je={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},We={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},He=(Object.freeze||Object)({LonLat:je,Mercator:We,SphericalMercator:mi}),Fe=i({},pi,{code:"EPSG:3395",projection:We,transformation:function(){var t=.5/(Math.PI*We.R);return Z(t,.5,-t,.5)}()}),Ue=i({},pi,{code:"EPSG:4326",projection:je,transformation:Z(1/180,1,-1/180,.5)}),Ve=i({},di,{projection:je,transformation:Z(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});di.Earth=pi,di.EPSG3395=Fe,di.EPSG3857=yi,di.EPSG900913=xi,di.EPSG4326=Ue,di.Simple=Ve;var qe=ci.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});be.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?oi(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ge=qe.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return n(t)}}),Ke=Ge.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ge.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ge.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ye=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Yi&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Xe=Ye.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Xe.imagePath||(Xe.imagePath=this._detectIconPath()),(this.options.imagePath||Xe.imagePath)+Ye.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=G("div","leaflet-default-icon-path",document.body),i=q(t,"background-image")||q(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Je=Ee.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Re(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),Q(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&tt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=ht(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),at(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=ht(i._icon),o=i._map.layerPointToLatLng(n);e&&at(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),$e=qe.extend({options:{icon:new Xe,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),Q(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(Q(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),K(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&K(this._shadow),this._shadow=null},_setPos:function(t){at(this._icon,t),this._shadow&&at(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(Q(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Je)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Je(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;nt(this._icon,t),this._shadow&&nt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Qe=qe.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),tn=Qe.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Qe.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),en=tn.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Qe.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===pi.distance){var o=Math.PI/180,s=this._mRadius/pi.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),nn=Qe.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Dt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return jt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=jt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Zt(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Et(t,a[o],a[n])<=h)return!0;return!1}});nn._flat=Wt;var on=nn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=nn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){nn.prototype._setLatLngs.call(this,t),jt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return jt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=Ht(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||nn.prototype._containsPoint.call(this,t,!0)}}),sn=Ke.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=oi(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Ft(t,s);return r?(r.feature=Yt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),rn={toGeoJSON:function(t){return Kt(this,{type:"Point",coordinates:qt(this.getLatLng(),t)})}};$e.include(rn),en.include(rn),tn.include(rn),nn.include({toGeoJSON:function(t){var i=!jt(this._latlngs),e=Gt(this._latlngs,i?1:0,!1,t);return Kt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),on.include({toGeoJSON:function(t){var i=!jt(this._latlngs),e=i&&!jt(this._latlngs[0]),n=Gt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),Kt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ge.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),Kt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Yt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?Kt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var an=Xt,hn=qe.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(Q(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){K(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&X(this._image),this},bringToBack:function(){return this._map&&J(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:G("img");Q(i,"leaflet-image-layer"),this._zoomAnimated&&Q(i,"leaflet-zoom-animated"),this.options.className&&Q(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;rt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();at(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){nt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),un=hn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:G("video");if(Q(i,"leaflet-image-layer"),this._zoomAnimated&&Q(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{oi(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=G("source");h.src=this._url[a],i.appendChild(h)}}}}),ln=qe.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&nt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&nt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(nt(this._container,0),this._removeTimeout=setTimeout(e(K,void 0,this._container),200)):K(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&X(this._container),this},bringToBack:function(){return this._map&&J(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?at(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),cn=ln.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){ln.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Qe||this._source.on("preclick",yt))},onRemove:function(t){ln.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Qe||this._source.off("preclick",yt))},getEvents:function(){var t=ln.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=G("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=G("div",t+"-content-wrapper",i);if(this._contentNode=G("div",t+"-content",e),wt(e),xt(this._contentNode),mt(e,"contextmenu",yt),this._tipContainer=G("div",t+"-tip-container",i),this._tip=G("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=G("a",t+"-close-button",i);n.href="#close",n.innerHTML="×",mt(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+"px",Q(t,"leaflet-popup-scrolled")):tt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();at(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(q(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(ht(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Lt(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});be.mergeOptions({closePopupOnClick:!0}),be.include({openPopup:function(t,i,e){return t instanceof cn||(t=new cn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),qe.include({bindPopup:function(t,i){return t instanceof cn?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new cn(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof qe||(i=t,t=this),t instanceof Ke)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Lt(t),i instanceof Qe?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var _n=ln.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){ln.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){ln.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=ln.prototype.getEvents.call(this);return qi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=G("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),tt(e,"leaflet-tooltip-right"),tt(e,"leaflet-tooltip-left"),tt(e,"leaflet-tooltip-top"),tt(e,"leaflet-tooltip-bottom"),Q(e,"leaflet-tooltip-"+s),at(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&nt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});be.include({openTooltip:function(t,i,e){return t instanceof _n||(t=new _n(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),qe.include({bindTooltip:function(t,i){return t instanceof _n?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new _n(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),qi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof qe||(i=t,t=this),t instanceof Ke)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(Q(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(tt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var dn=Ye.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ye.Default=Xe;var pn=qe.extend({options:{tileSize:256,opacity:1,updateWhenIdle:Wi,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),K(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(X(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(J(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){nt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);nt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=G("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(K(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=G("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)K(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();ji?rt(t.el,o,n):at(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Si||i.el.setAttribute("src",si),K(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){Q(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&nt(t,this.options.opacity),zi&&!Mi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),at(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map&&n.getAttribute("src")!==si){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(nt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(Q(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),mn=pn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Yi&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),zi||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return mt(n,"load",e(this._tileOnLoad,this,i,n)),mt(n,"error",e(this._tileOnError,this,i,n)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(n.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Yi?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=si,K(i),delete this._tiles[t]))}}),fn=mn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Yi?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,mn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Ue?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=mn.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});mn.WMS=fn,Jt.wms=function(t,i){return new fn(t,i)};var gn=qe.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&Q(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=ht(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);ji?rt(this._container,a,e):at(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),vn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){gn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");mt(t,"mousemove",o(this._onMouseMove,32,this),this),mt(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),mt(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){g(this._redrawRequest),delete this._ctx,K(this._container),ft(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},gn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Yi?2:1;at(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Yi&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){gn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,o=i.prev;e?e.prev=o:this._drawLast=o,o?o.next=e:this._drawFirst=e,delete this._drawnLayers[t._leaflet_id],delete t._order,delete this._layers[n(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var i,e=t.options.dashArray.split(","),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(zt(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(tt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(Q(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),yn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),xn={_initContainer:function(){this._container=G("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(gn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=yn("shape");Q(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=yn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;K(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=yn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=oi(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=yn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){X(t._container)},_bringToBack:function(t){J(t._container)}},wn=$i?yn:E,Pn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=wn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=wn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){K(this._container),ft(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){gn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),at(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=wn("path");t.options.className&&Q(i,t.options.className),t.options.interactive&&Q(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){K(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){X(t._path)},_bringToBack:function(t){J(t._path)}});$i&&Pn.include(xn),be.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&$t(t)||Qt(t)}});var Ln=on.extend({initialize:function(t,i){on.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Pn.create=wn,Pn.pointsToPath=k,sn.geometryToLayer=Ft,sn.coordsToLatLng=Ut,sn.coordsToLatLngs=Vt,sn.latLngToCoords=qt,sn.latLngsToCoords=Gt,sn.getFeature=Kt,sn.asFeature=Yt,be.mergeOptions({boxZoom:!0});var bn=Ee.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){mt(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){ft(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){K(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),fi(),ut(),this._startPoint=this._map.mouseEventToContainerPoint(t),mt(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=G("div","leaflet-zoom-box",this._container),Q(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();at(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(K(this._box),tt(this._container,"leaflet-crosshair")),gi(),lt(),ft(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});be.addInitHook("addHandler","boxZoom",bn),be.mergeOptions({doubleClickZoom:!0});var Tn=Ee.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});be.addInitHook("addHandler","doubleClickZoom",Tn),be.mergeOptions({dragging:!0,inertia:!Mi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var zn=Ee.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Re(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}Q(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){tt(this._map._container,"leaflet-grab"),tt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});be.addInitHook("addHandler","dragging",zn),be.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Mn=Ee.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),mt(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),ft(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){mt(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){ft(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys)n._panAnim&&n._panAnim._inProgress||(i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds));else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Lt(t)}}});be.addInitHook("addHandler","keyboard",Mn),be.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var Cn=Ee.extend({addHooks:function(){mt(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){ft(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=Tt(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Lt(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});be.addInitHook("addHandler","scrollWheelZoom",Cn),be.mergeOptions({tap:!0,tapTolerance:15});var Sn=Ee.extend({addHooks:function(){mt(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){ft(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(Pt(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&Q(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),mt(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),ft(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&tt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});qi&&!Vi&&be.addInitHook("addHandler","tap",Sn),be.mergeOptions({touchZoom:qi&&!Mi,bounceAtZoomLimits:!0});var Zn=Ee.extend({addHooks:function(){Q(this._map._container,"leaflet-touch-zoom"),mt(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){tt(this._map._container,"leaflet-touch-zoom"),ft(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),mt(document,"touchmove",this._onTouchMove,this),mt(document,"touchend",this._onTouchEnd,this),Pt(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),Pt(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),ft(document,"touchmove",this._onTouchMove),ft(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});be.addInitHook("addHandler","touchZoom",Zn),be.BoxZoom=bn,be.DoubleClickZoom=Tn,be.Drag=zn,be.Keyboard=Mn,be.ScrollWheelZoom=Cn,be.Tap=Sn,be.TouchZoom=Zn,Object.freeze=ti,t.version="1.3.3+HEAD.b22aef4",t.Control=Te,t.control=ze,t.Browser=Qi,t.Evented=ci,t.Mixin=Ae,t.Util=ui,t.Class=v,t.Handler=Ee,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=Pe,t.DomUtil=ve,t.PosAnimation=Le,t.Draggable=Re,t.LineUtil=Ne,t.PolyUtil=De,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=S,t.transformation=Z,t.Projection=He,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=di,t.GeoJSON=sn,t.geoJSON=Xt,t.geoJson=an,t.Layer=qe,t.LayerGroup=Ge,t.layerGroup=function(t,i){return new Ge(t,i)},t.FeatureGroup=Ke,t.featureGroup=function(t){return new Ke(t)},t.ImageOverlay=hn,t.imageOverlay=function(t,i,e){return new hn(t,i,e)},t.VideoOverlay=un,t.videoOverlay=function(t,i,e){return new un(t,i,e)},t.DivOverlay=ln,t.Popup=cn,t.popup=function(t,i){return new cn(t,i)},t.Tooltip=_n,t.tooltip=function(t,i){return new _n(t,i)},t.Icon=Ye,t.icon=function(t){return new Ye(t)},t.DivIcon=dn,t.divIcon=function(t){return new dn(t)},t.Marker=$e,t.marker=function(t,i){return new $e(t,i)},t.TileLayer=mn,t.tileLayer=Jt,t.GridLayer=pn,t.gridLayer=function(t){return new pn(t)},t.SVG=Pn,t.svg=Qt,t.Renderer=gn,t.Canvas=vn,t.canvas=$t,t.Path=Qe,t.CircleMarker=tn,t.circleMarker=function(t,i){return new tn(t,i)},t.Circle=en,t.circle=function(t,i,e){return new en(t,i,e)},t.Polyline=nn,t.polyline=function(t,i){return new nn(t,i)},t.Polygon=on,t.polygon=function(t,i){return new on(t,i)},t.Rectangle=Ln,t.rectangle=function(t,i){return new Ln(t,i)},t.Map=be,t.map=function(t,i){return new be(t,i)};var En=window.L;t.noConflict=function(){return window.L=En,this},window.L=t});
\ No newline at end of file diff --git a/searx/static/themes/simple/less/autocomplete.less b/searx/static/themes/simple/less/autocomplete.less new file mode 100644 index 000000000..93f7df1ef --- /dev/null +++ b/searx/static/themes/simple/less/autocomplete.less @@ -0,0 +1,69 @@ +/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */ + +@background_color: white; + +.autocomplete { + position: absolute; + max-height: 0; + overflow-y: hidden; + text-align: left; + + &:active, &:focus, &:hover { + background-color: @background_color; + } + + &:empty { + display: none; + } + + > ul { + list-style-type: none; + margin: 0; + padding: 0; + + > li { + cursor: pointer; + padding: 5px 0 5px 10px; + + &.active, &:active, &:focus { + background-color: @color-base; + + a:active, a:focus, a:hover { + text-decoration: none; + } + } + + &.locked { + cursor: inherit; + } + } + } + + &.open { + display: block; + background-color: @background_color; + border: 1px solid @color-base; + max-height: 500px; + overflow-y: auto; + z-index:100; + + &:empty { + display: none; + } + } +} + + +@media screen and (max-width: @results-width) { + + .autocomplete { + bottom: 0; + } + + .autocomplete > ul > li { + padding: 7px 0 7px 10px; + border-bottom: 1px solid @color-result-top-border; + text-align: left; + } + +} diff --git a/searx/static/themes/simple/less/code.less b/searx/static/themes/simple/less/code.less new file mode 100644 index 000000000..a688dd98d --- /dev/null +++ b/searx/static/themes/simple/less/code.less @@ -0,0 +1,83 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #408080; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ + +.highlight pre { + overflow: auto; +} + +.highlight .lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + + &::selection { + background: transparent; /* WebKit/Blink Browsers */ + } + &::-moz-selection { + background: transparent; /* Gecko Browsers */ + } +} diff --git a/searx/static/themes/simple/less/definitions.less b/searx/static/themes/simple/less/definitions.less new file mode 100644 index 000000000..7a43720b8 --- /dev/null +++ b/searx/static/themes/simple/less/definitions.less @@ -0,0 +1,135 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ + +/// Basic Colors + +@color-base: #3498DB; +@color-base-dark: #084999; +@color-base-light: #ECF0F1; +@color-highlight: #094089; +@color-black: #000000; + +/// +@color-error: #db3434; +@color-error-background: lighten(@color-error, 40%); + +@color-warning: #dbba34; +@color-warning-background: lighten(@color-warning, 40%); + +/// General + +@color-font: #444; +@color-font-light: #888; + +@color-red: #25a55b; + +@color-url-font: #29314d; +@color-url-visited-font: #684898; +@results-width: 50em; +@search-width: 40em; + +// +@color-a-font: @color-base; +@color-a-font-hover: @color-base; + + +/// Start-Screen + + + +/// Search-Input + +@color-search-border: @color-base; +@color-search-background: #FFF; +@color-search-font: #222; + +/// Autocompleter + +@color-autocompleter-choices-background: #FFF; +@color-autocompleter-choices-border: @color-base; +@color-autocompleter-choices-border-left-right: @color-base; +@color-autocompleter-choices-border-bottom: @color-base; + +@color-autocompleter-choices-font: #444; + +/// Answers +@color-answers-border: @color-base-dark; + +// Selected +@color-autocompleter-selected-background: #444; +@color-autocompleter-selected-font: #FFF; +@color-autocompleter-selected-queried-font: #9FCFFF; + +/// Categories + +@color-categories-item-selected: @color-base; +@color-categories-item-selected-font: #FFF; + +@color-categories-item-border-selected: @color-base-dark; +@color-categories-item-border-unselected: #E8E7E6; +@color-categories-item-border-unselected-hover: @color-base; + + +/// Results + +@color-suggestions-button-background: @color-base; +@color-suggestions-button-font: #FFF; + +@color-download-button-background: @color-base; +@color-download-button-font: #FFF; + +@color-result-search-background: @color-base-light; + +@color-result-definition-border: gray; +@color-result-torrent-border: lightgray; +@color-result-top-border: #E8E7E6; + +// Link to result +@color-result-link-font: @color-base-dark; +@color-result-link-visited-font: @color-url-visited-font; + +// Url to result +@color-result-url-font: @color-red; + +// Publish Date +@color-result-publishdate-font: @color-font-light; + +// Images +@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6); +@color-result-image-span-font: #FFF; + +// Search-URL +@color-result-search-url-border: #888; +@color-result-search-url-font: #444; + + +/// Settings + +@color-settings-fieldset: @color-base; +@color-settings-table-striped: #dbdbdb; +@color-settings-tr-hover: #ececec; + +// Labels +@color-settings-label-allowed-background: #E74C3C; +@color-settings-label-allowed-font: #FFF; + +@color-settings-label-deny-background: #2ECC71; +@color-settings-label-deny-font: @color-font; + +@color-settings-return-background: @color-base; +@color-settings-return-font: #FFF; + +/// Other + +@color-engines-font: @color-font-light; +@color-percentage-div-background: #444; + +/// Load fonts from this directory. +@icon-font-path: "../../../fonts/"; +//** File name for all font files. +@icon-font-name: "glyphicons-halflings-regular"; +//** Element ID within SVG icon file. +@icon-font-svg-id: "glyphicons_halflingsregular"; diff --git a/searx/static/themes/simple/less/index.less b/searx/static/themes/simple/less/index.less new file mode 100644 index 000000000..e1efdac90 --- /dev/null +++ b/searx/static/themes/simple/less/index.less @@ -0,0 +1,43 @@ +.index { + + text-align: center; + + .title { + background: url('../img/searx.png') no-repeat; + width: 100%; + min-height: 80px; + background-position: center; + } + + h1 { + font-size: 5em; + visibility: hidden; + } + + #search { + margin: 0 auto; + background: inherit; + border: inherit; + } + + .search_filters { + display: block; + margin: 1em 0; + } + + .category label { + padding: 6px 10px; + border-bottom: initial !important; + } + +} + +@media screen and (max-width: 75em) { + + div.title { + h1 { + font-size: 1em; + } + } + +} diff --git a/searx/static/themes/simple/less/ion.less b/searx/static/themes/simple/less/ion.less new file mode 100644 index 000000000..c9e715591 --- /dev/null +++ b/searx/static/themes/simple/less/ion.less @@ -0,0 +1,181 @@ +// Generated by grunt-webfont + + +@font-face { + font-family:"ion"; + src:url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51"); + src:url("../fonts/ion.eot?#iefix") format("embedded-opentype"), + url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), + url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), + url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), + url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + font-weight:normal; + font-style:normal; +} + +.ion-icon { + &:before { + font-family:"ion"; + } + display:inline-block; + vertical-align:middle; + line-height:1; + font-weight:normal; + font-style:normal; + speak:none; + text-decoration:inherit; + text-transform:none; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; +} + + +// Icons + +.ion-navicon-round { + &:before { + content:"\f101"; + } +} + + +.ion-search { + &:before { + content:"\f102"; + } +} + + +.ion-play { + &:before { + content:"\f103"; + } +} + + +.ion-link { + &:before { + content:"\f104"; + } +} + + +.ion-chevron-up { + &:before { + content:"\f105"; + } +} + + +.ion-chevron-left { + &:before { + content:"\f106"; + } +} + + +.ion-chevron-right { + &:before { + content:"\f107"; + } +} + + +.ion-arrow-down-a { + &:before { + content:"\f108"; + } +} + + +.ion-arrow-up-a { + &:before { + content:"\f109"; + } +} + + +.ion-arrow-swap { + &:before { + content:"\f10a"; + } +} + + +.ion-arrow-dropdown { + &:before { + content:"\f10b"; + } +} + + +.ion-globe { + &:before { + content:"\f10c"; + } +} + + +.ion-time { + &:before { + content:"\f10d"; + } +} + + +.ion-location { + &:before { + content:"\f10e"; + } +} + + +.ion-warning { + &:before { + content:"\f10f"; + } +} + + +.ion-error { + &:before { + content:"\f110"; + } +} + + +.ion-film-outline { + &:before { + content:"\f111"; + } +} + + +.ion-music-note { + &:before { + content:"\f112"; + } +} + + +.ion-more-vertical { + &:before { + content:"\f113"; + } +} + + +.ion-magnet { + &:before { + content:"\f114"; + } +} + + +.ion-close { + &:before { + content:"\f115"; + } +} + diff --git a/searx/static/themes/simple/less/mixins.less b/searx/static/themes/simple/less/mixins.less new file mode 100644 index 000000000..b3aa4e13d --- /dev/null +++ b/searx/static/themes/simple/less/mixins.less @@ -0,0 +1,62 @@ +/* +* searx, A privacy-respecting, hackable metasearch engine +*/ + +// Mixins +.text-size-adjust (@property: 100%) { + -webkit-text-size-adjust: @property; + -ms-text-size-adjust: @property; + -moz-text-size-adjust: @property; + text-size-adjust: @property; +} + +.rounded-corners (@radius: 4px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +// disable user selection +.disable-user-select () { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +// select all on focus +.select-all-on-focus() { + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: element; + user-select: all; +} + +// see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Advanced_layouts_with_flexbox +.flexbox() { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.inline-flex() { + display: -webkit-inline-box; + display: -moz-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; +} + +.flex-direction-row() { + -webkit-box-direction: normal; + -webkit-box-orient: horizontal; + -moz-box-direction: normal; + -moz-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} diff --git a/searx/static/themes/simple/less/normalize.less b/searx/static/themes/simple/less/normalize.less new file mode 100644 index 000000000..47b010e47 --- /dev/null +++ b/searx/static/themes/simple/less/normalize.less @@ -0,0 +1,341 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/searx/static/themes/simple/less/preferences.less b/searx/static/themes/simple/less/preferences.less new file mode 100644 index 000000000..e1e88b51f --- /dev/null +++ b/searx/static/themes/simple/less/preferences.less @@ -0,0 +1,103 @@ +#main_preferences { + form { + width: 100%; + } + + fieldset { + margin: 8px; + border: none; + } + + legend { + margin: 0; + padding: 5px 0 0 0; + display: block; + float:left; + width: 300px; + } + + .value { + margin: 0; + padding: 0; + float:left; + width: 15em; + } + + .description { + margin: 0; + padding: 5px 0 0 0; + float:left; + width: 50%; + color: darken(#dcdcdc, 30%); + font-size: 90%; + } + + select { + width: 200px; + font-size: inherit !important; + } + + table { + border-collapse: collapse; + } + + table td { + text-align: center; + } + + table.cookies { + width: auto; + + th, td { + text-align: left; + padding: 0.25em; + } + + th:first-child, td:first-child { + padding-right: 4em; + } + + &>tbody>tr:nth-child(even)>th, + &>tbody>tr:nth-child(even)>td { + background-color: @color-settings-tr-hover; + } + } + + .name, .shortcut { + text-align: left; + } + + .preferences_back { + background: none repeat scroll 0 0 @color-settings-return-background; + color: white; + border: 0 none; + .rounded-corners; + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 0.5em; + + a { + display: block; + color: @color-settings-return-font; + } + + a::first-letter { + text-transform: uppercase; + } + } + + + div.selectable_url { + pre { + width: 100%; + } + } + +} + +@media screen and (max-width: 75em) { + .preferences_back { + clear: both; + } +} diff --git a/searx/static/themes/simple/less/search.less b/searx/static/themes/simple/less/search.less new file mode 100644 index 000000000..dbcfc932e --- /dev/null +++ b/searx/static/themes/simple/less/search.less @@ -0,0 +1,264 @@ +/* +* searx, A privacy-respecting, hackable metasearch engine +*/ + +#search { + padding: 0 2em; + margin: 0; + background: #f7f7f7; + border-bottom: 1px solid #d7d7d7; +} + +#search_wrapper { + padding: 10px 0; +} + +.search_box { + margin: 0 12px 0 0; + display: inline-flex; + flex-direction: row; + + white-space: nowrap; + /* + &:has(q:focus) { + box-shadow: 0px 0px 5px #CCC; +} +*/ +} + +#clear_search { + display: block; + border-collapse: separate; + box-sizing: border-box; + width: 1.8em; + + margin: 0; + padding: 2px; + height: 2.2em; + background: none repeat scroll 0 0 @color-search-background; + border-top: 1px solid @color-search-border; + border-bottom: 1px solid @color-search-border; + border-right: none; + border-left: none; + border-radius: 0px; + outline: none; + color: @color-search-font; + font-size: 16px; + z-index: 10000; + + &:hover { + color: @color-search-border; + } + + &.empty * { + display: none; + } +} + +#q::-ms-clear, #q::-webkit-search-cancel-button { + display: none; +} + +#q, #send_search { + display: block !important; + border-collapse: separate; + box-sizing: border-box; + + margin: 0; + padding: 2px; + height: 2.2em; + background: none repeat scroll 0 0 @color-search-background; + border: 1px solid @color-search-border; + border-radius: 0px; + outline: none; + color: @color-search-font; + font-size: 16px; + z-index: 2; +} + +#q { + outline: medium none; + padding-left: 8px; + padding-right: 0px !important; + border-right: none; + width: @search-width; +} + +#send_search { + border-left: none; + width: 2.2em; + + &:hover { + cursor: pointer; + background-color: @color-search-border; + color: @color-base-light; + } +} + +.no-js #send_search { + width: auto !important; +} + +.search_filters { + display: inline-block; + vertical-align: middle; +} + +@media screen and (max-width: 75em) { + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + html.touch { + #main_index, #main_results { + + #categories_container { + width: 1000px; + width: -moz-max-content; + width: -webkit-max-content; + width: max-content; + + .category { + display: inline-block; + width: auto; + } + } + + #categories { + width: 100%; + margin: 0; + text-align: left; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + } + } + } + +} + +@media screen and (max-width: @results-width) { + + #search { + width: 100%; + margin: 0; + padding: 0.1em 0 0 0; + } + + #search_wrapper { + width: 100%; + margin: 0 0 0.7em 0; + padding: 0; + } + + .search_box { + // hack, should bew 100% ? + width: 99%; + margin: 0.1em; + padding: 0 0.1em 0 0; + display: flex; + flex-direction: row; + } + + #q { + width: auto !important; + flex: 1; + } + + .search_filters { + display: block; + margin: 0.5em; + } + + .language, .time_range { + width: 45%; + } + + .category { + display: block; + width: 90%; + + label { + border-bottom: 0; + } + } + +} + +#categories { + margin: 0 10px 0 0; + .disable-user-select; + + &::-webkit-scrollbar { + width: 0; + height: 0; + } +} + +.category { + display: inline-block; + position: relative; + margin: 0 3px; + padding: 0px; + + input { + display: none; + } + + label { + cursor: pointer; + padding: 4px 10px; + margin: 0; + display: block; + text-transform: capitalize; + font-size: 0.9em; + border-bottom: 2px solid transparent; + .disable-user-select; + } + + input[type="checkbox"]:focus + label { + box-shadow: 0px 0px 8px #3498DB; + } + + /*label:hover { + border-bottom: 2px solid @color-categories-item-border-unselected-hover; + }*/ + + input[type="checkbox"]:checked + label { + background: @color-categories-item-selected; + color: @color-categories-item-selected-font; + border-bottom: 2px solid @color-categories-item-border-selected; + } +} + +#categories_container { + + position: relative; + + .help { + position: absolute; + width: 100%; + bottom: -20px; + overflow: hidden; + + opacity: 0; + transition: opacity 1s ease; + + font-size: 0.8em; + text-position: center; + background: white; + } + + &:hover .help { + opacity: 0.8; + transition: opacity 1s ease; + } + +} diff --git a/searx/static/themes/simple/less/stats.less b/searx/static/themes/simple/less/stats.less new file mode 100644 index 000000000..c134bd0ec --- /dev/null +++ b/searx/static/themes/simple/less/stats.less @@ -0,0 +1,8 @@ +.percentage { + position: relative; + width: 300px; + + div { + background: @color-percentage-div-background; + } +} diff --git a/searx/static/themes/simple/less/style-rtl.less b/searx/static/themes/simple/less/style-rtl.less new file mode 100644 index 000000000..2b68bcfde --- /dev/null +++ b/searx/static/themes/simple/less/style-rtl.less @@ -0,0 +1,6 @@ +@import "style.less"; + +#search_submit { + left: 1px; + right:auto; +} diff --git a/searx/static/themes/simple/less/style.less b/searx/static/themes/simple/less/style.less new file mode 100644 index 000000000..9f69f7a80 --- /dev/null +++ b/searx/static/themes/simple/less/style.less @@ -0,0 +1,721 @@ +/* +* searx, A privacy-respecting, hackable metasearch engine +* +* To convert "style.less" to "style.css" run: $make styles +*/ + +@import "normalize.less"; + +@import "definitions.less"; + +@import "mixins.less"; + +@import "code.less"; + +@import "toolkit.less"; + +@import "autocomplete.less"; + +// ion-icon +@import "ion.less"; + +.ion-icon-big { + .ion-icon; + font-size: 149%; +} + +// for index.html template +@import "index.less"; + +// for preferences.html template +@import "preferences.less"; + +// Search-Field +@import "search.less"; + +// Main LESS-Code +html { + font-family: arial, sans-serif; + font-size: 0.9em; + .text-size-adjust; + color: @color-font; + padding: 0; + margin: 0; +} + +body, main { + padding: 0; + margin: 0; +} + +main { + width: 100%; + // position: absolute; +} + +footer { + // position:absolute; + bottom:0; + width:100%; + height:50px; +} + +#main_preferences, #main_about, #main_stats { + margin: 3em; + width: auto; +} + +footer { + bottom: 0; + height: 3em; + margin: 1em 0; + padding: 1em 0; + clear: both; + width: 100%; + text-align: center; + + p { + font-size: 0.9em; + } +} + +#main_preferences h1, #main_stats h1 { + background: url('../img/searx.png') no-repeat; + background-size: auto 75%; + min-height: 40px; + margin: 0 auto; + + span { + visibility: hidden; + } +} + +input[type="submit"], #results button[type="submit"] { + padding: 0.5rem; + margin: 2px 4px; + display: inline-block; + background: @color-download-button-background; + color: @color-download-button-font; + .rounded-corners; + border: 0; + cursor: pointer; +} + +a { + text-decoration: none; + color: @color-url-font; + + &:visited { + color: @color-url-visited-font; + + .highlight { + color: @color-url-visited-font; + } + } +} + +article[data-vim-selected] { + background: #f7f7f7; +} + +article[data-vim-selected]::before { + position: absolute; + left: 1em; + padding: 2px; + content: ">"; + font-weight: bold; + color: @color-base; +} + +article.result-images[data-vim-selected] { + background: @color-base; +} + +article.result-images[data-vim-selected]::before { + display: none; + content: ""; +} + +.result { + margin: 19px 0 18px 0; + padding: 0; + + h3 { + font-size: 1.1em; + word-wrap:break-word; + margin: 5px 0 1px 0; + padding: 0; + margin-bottom: 0; + + a { + color: @color-result-link-font; + font-weight: normal; + font-size: 1.1em; + + &:visited { + color: @color-result-link-visited-font; + } + + &:focus, &:hover { + text-decoration: underline; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + outline:none; + } + } + } + + .cache_link, .proxyfied_link { + font-size: 0.9em !important; + } + + .content, .stat, .altlink { + font-size: 0.9em; + margin: 0; + padding: 0; + max-width: 54em; + word-wrap:break-word; + line-height: 1.24; + + .highlight { + color: @color-black; + background: inherit; + font-weight: bold; + } + } + + .codelines { + .highlight { + color: inherit; + background: inherit; + font-weight: normal; + } + } + + .url { + font-size: 0.9em; + margin: 0 0 3px 0; + padding: 0; + max-width: 54em; + word-wrap:break-word; + color: @color-result-url-font; + } + + .published_date { + font-size: 0.8em; + color: @color-result-publishdate-font; + } + + img { + + &.thumbnail { + float: left; + padding: 0 5px 10px 0; + width: 20em; + min-width: 20em; + min-height: 8em; + // background: @color-base-light; + } + + &.image { + float: left; + padding: 0 5px 10px 0; + width: 100px; + max-height: 100px; + object-fit: scale-down; + object-position: right top; + } + + } + + .break { + clear: both; + } + +} + +.category-social .image { + width: auto !important; + min-width: 48px; + min-height: 48px; + padding: 0 5px 25px 0 !important; +} + +.result-videos .content { + overflow: hidden; +} + +.engines { + float: right; + color: @color-engines-font; + + span { + font-size: smaller; + margin: 0 0.5em 0 0; + } +} + +.small_font { + font-size: 0.8em; +} + +.highlight { + color: @color-highlight; + background: inherit; + font-weight: bold; +} + +.result-images { + display: inline-block; + margin: 0; + padding: 0; + position: relative; + max-height: 200px; + + img { + float: inherit; + margin: 0; + padding: 0; + border: none; + max-height: 200px; + background: @color-base-dark; + } + + span a { + display: none; + color: @color-result-image-span-font; + } + + &:hover span a { + display: block; + position: absolute; + bottom: 0; + right: 0; + padding: 4px; + margin: 0 0 4px 4px; + background-color: @color-result-image-span-background-hover; + font-size: 0.7em; + } +} + +.torrent_result { + border-left: 10px solid @color-result-torrent-border; + padding-left: 3px; + + p { + margin: 3px; + font-size: 0.8em; + } + + a { + color: @color-result-link-font; + + &:hover { + text-decoration: underline; + } + + &:visited { + color: @color-result-link-visited-font; + } + } +} + +#results { + margin: 2em 2em 20px 2em; + padding: 0; + width: @results-width; +} + +#suggestions { + + .wrapper { + display: flex; + flex-flow: row wrap; + justify-content: flex-end; + + form { + display: inline-block; + flex: 1 1 50%; + } + } +} + +#suggestions, #answers, #corrections { + max-width: @results-width; +} + +#suggestions, #answers, #infoboxes, #corrections { + + input { + padding: 0; + margin: 3px; + font-size: 0.9em; + display: inline-block; + background: transparent; + color: @color-result-search-url-font; + cursor: pointer; + } + + input[type="submit"], .infobox .url a { + color: @color-result-link-font; + text-decoration: none; + font-size: 0.9rem; + + &:hover { + text-decoration: underline; + } + } + +} + +#corrections { + display: flex; + flex-flow: row wrap; + margin: 1em 0; + + h4, input[type="submit"] { + display: inline-block; + margin: 0 0.5em 0 0; + } + + input[type="submit"]::after { + content: ", " + } + +} + +#suggestions .title, #search_url .title, #apis .title { + margin: 2em 0 0.5em 0; + color: @color-font; +} + +#answers { + margin: 10px 8px 10px 8px; + border: 1px solid #ddd; + padding: 0.9em; + box-shadow: 0px 0px 5px #CCC; + + h4 { + display: none; + } + + .answer { + display: block; + font-size: 1.2em; + font-weight: bold; + } +} + +#answers, #infoboxes { + form { + min-width: 210px; + } +} + +#sidebar { + position: absolute; + top: 100px; + left: 57em; + + margin: 0px 2px 5px 5px; + padding: 0px 2px 2px; + max-width: 25em; + word-wrap: break-word; + + .infobox { + margin: 10px 0 10px; + border: 1px solid #ddd; + padding: 0.9em; + font-size: 0.9em; + box-shadow: 0px 0px 5px #CCC; + + h2 { + margin: 0 0 .5em 0; + } + + img { + max-width: 100%; + max-height: 12em; + display: block; + margin: 0; + padding: 0; + } + + dl { + margin: 0.5em 0; + } + + dt { + display: inline; + margin: 0.5em 0.25em 0.5em 0; + padding: 0; + font-weight: bold; + } + + dd { + display: inline; + margin: 0.5em 0; + padding: 0; + } + + input { + font-size: 1em; + } + + br { + clear: both; + } + + .attributes, .urls { + clear: both; + } + + } +} + +#search_url { + margin-top: 8px; + + div.selectable_url { + pre { + width: 200em; + } + } +} + +#linkto_preferences { + position: absolute; + right: 10px; + top: 0.9em; + padding: 0; + border: 0; + display: block; + + font-size: 1.2em; + color: @color-search-font; + + a:link *, a:hover *, a:visited *, a:active * { + color: @color-search-font; + } +} + +#pagination { + clear: both; + + br { + clear: both; + } +} + +#apis { + margin-top: 8px; + clear: both; +} + +#backToTop { + border: 1px solid #ddd; + margin: 0 0 0 2em; + padding: 0; + font-size: 1em; + box-shadow: 0px 0px 5px #CCC; + background: white; + position: fixed; + bottom: 85px; + left: @results-width; + transition: opacity 0.5s; + opacity: 0; + + a { + display: block; + margin: 0; + padding: 0.6em; + } +} + +@media screen and (max-width: 75em) { + + #main_preferences, #main_about, #main_stats { + margin: 0.5em; + width: auto; + } + + #suggestions, #answers { + margin-top: 1em; + } + + #infoboxes { + position: inherit; + max-width: inherit; + + .infobox { + clear:both; + + img { + float: left; + max-width: 10em; + margin: 0.5em 0.5em 0.5em 0; + } + } + + } + + #sidebar { + position: static; + max-width: @results-width; + margin: 0 0 2px 0; + padding: 0; + float: none; + border: none; + width: auto; + + input { + border: 0; + } + } + + #apis { + display: none; + } + + #search_url { + display: none; + } + + .result { + border-bottom: 1px solid @color-result-top-border; + margin: 0; + padding-top: 8px; + padding-bottom: 6px; + + h3 { + margin: 0 0 1px 0; + } + + .thumbnail { + max-width: 98%; + } + + .url { + + span.url { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + } + + a { + float: right; + padding: 0 0.5em; + } + + } + + .engines { + float: right; + padding: 0 0 3px 0; + } + } + + .result-images { + border-bottom: none !important; + } + + .image_result { + max-width: 98%; + img { + max-width: 98%; + } + } +} + + +#main_results div#results.only_template_images { + flex-direction: column; + width: auto; + display: flex; + + #sidebar { + position: relative; + top: auto; + order: 2; + } + + #urls { + position: relative; + order: 1; + } + + #backToTop { + right: 0.5em; + left: auto; + } + + #pagination { + position: relative; + order: 3; + } +} + + +@media screen and (max-width: @results-width) { + + article[data-vim-selected]::before { + display: none; + content: ""; + } + + #linkto_preferences { + display: none; + postion: fixed !important; + top: 100px; + right: 0px; + } + + #sidebar { + margin: 0 5px 2px 5px; + } + + #corrections { + margin: 1em 5px 1em 5px; + } + + #results { + margin: 0; + padding: 0; + width: initial; + } + + #backToTop { + left: 40em; + bottom: 35px; + } + + .result { + padding: 8px 10px 6px 10px; + } + + .result-images { + margin: 0; + padding: 0; + border: none; + } + +} + +@media screen and (max-width: 35em) { + + .result-videos { + + img.thumbnail { + float: none !important; + } + .content { + overflow: inherit; + } + + } + +} diff --git a/searx/static/themes/simple/less/toolkit.less b/searx/static/themes/simple/less/toolkit.less new file mode 100644 index 000000000..46ea17b3a --- /dev/null +++ b/searx/static/themes/simple/less/toolkit.less @@ -0,0 +1,468 @@ +// other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783 +html.no-js .hide_if_nojs { + display: none; +} + +html.js .show_if_nojs { + display: none; +} + +.center { + text-align: center; +} + +.right { + float: right ; +} + +.left { + float: left; +} + +.invisible { + display: none !important; +} + +.list-unstyled { + list-style-type: none; + + li { + margin-top: 4px; + margin-bottom: 4px; + } +} + +.danger { + background-color: @color-error-background; +} + +.badge { + display: inline-block; + color: #fff; + background-color: #777; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + min-width: 10px; + padding: 1px 5px; + border-radius: 5px; +} + +// kbd +kbd { + padding: 2px 4px; + margin: 1px; + font-size: 90%; + color: white; + background: black; +} + +// table +table { + + width: 100%; + + &.striped { + tr { + border-bottom: 1px solid @color-settings-tr-hover; + } + } +} + +th { + padding: 0.4em; +} + +td { + padding: 0 4px; +} + +tr { + &:hover { + background: @color-settings-tr-hover; + } +} + +// pre +.pre() { + display: block; + font-size: 0.8em; + word-break: break-all; + margin: 0.1em; + .select-all-on-focus(); +} + +div.selectable_url { + display: block; + border: 1px solid @color-result-search-url-border; + padding: 4px; + color: @color-result-search-url-font; + width: 100%; + display: block; + margin: 0.1em; + overflow: hidden; + height: 1.2em; + line-height: 1.2em; + + pre { + .pre(); + } +} + +// dialog +.dialog() { + position: relative; + width: 70%; + padding: 1em 1em 1em 2.7em; + margin: 0em 8% 1em 8%; + border: 1px solid black; + border-radius: 4px; + text-align: left; + + &:before { + position: absolute; + top: 0.5em; + left: 0.5em; + font-family:"ion"; + font-size: 1.5em; + } + + .close { + float:right; + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; + } + + ul, ol, p { + margin: 1px 0 0 0; + } + + table { + width: auto; + } + + tr { + vertical-align: text-top; + + &:hover { + background: transparent; + } + } + + td { + padding: 0 1em 0 0; + } + + + h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; + } + +} + +.dialog-error { + .dialog(); + color: @color-error; + background: @color-error-background; + border-color: @color-error; + .ion-error(); +} + +.dialog-warning { + .dialog(); + color: @color-warning; + background: @color-warning-background; + border-color: @color-warning; + .ion-warning(); +} + +.dialog-modal { + .dialog(); + background: white; + position: fixed; + top: 50%; + left: 50%; + /* bring your own prefixes */ + transform: translate(-50%, -50%); + z-index: 100000; + margin: 0 50% 0 0; + box-shadow: 0 0 1em; +} + +// btn-collapse +.btn-collapse { + cursor: pointer; +} + +// +.scrollx { + overflow-x: auto; + overflow-y: hidden; + display: block; + padding: 0; + margin: 0; + border: none; +} + +/* -- tabs --*/ +.tabs .tabs > label { + font-size: 90%; +} + +.tabs { + .flexbox(); + flex-wrap: wrap; + width: 100%; + min-width: 100%; + + & > * { + order: 2; + } + + & > input[type=radio] { + display: none; + } + + & > label { + order: 1; + padding: 0.7em; + margin: 0 0.7em; + letter-spacing:0.5px; + text-transform: uppercase; + + border: solid white; + border-width: 0px 0px 2px 0; + + .disable-user-select(); + cursor: pointer; + } + + & > label:hover { + border-bottom: 2px solid @color-categories-item-border-selected; + } + + & > section { + min-width: 100%; + padding: 0.7rem 0; + box-sizing: border-box; + border-top: 1px solid black; + display: none; + } + + // default selection + & > label:last-of-type { + border-bottom: 2px solid @color-categories-item-border-selected; + background: @color-categories-item-selected; + color: @color-categories-item-selected-font; + font-weight: bold; + letter-spacing:-0.1px; + } + + & > section:last-of-type { + display: block; + } + +} + +html body .tabs > input:checked { + ~ section { + display: none; + } + ~ label { + position: inherited; + background: inherit; + border-bottom: 2px solid transparent; + font-weight: normal; + color: inherit; + + &:hover { + border-bottom: 2px solid @color-categories-item-border-selected; + } + } + + label { + border-bottom: 2px solid @color-categories-item-border-selected; + background: @color-categories-item-selected; + color: @color-categories-item-selected-font; + font-weight: bold; + letter-spacing:-0.1px; + } + + label + section { + display: block; + } +} + +/* -- select -- */ +select { + height: 28px; + margin: 0 1em 0 0; + padding: 2px 8px 2px 0 !important; + color: @color-search-font; + font-size: 12px; + z-index: 2; + + &:hover, &:focus { + cursor: pointer; + } +} + +@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { + + select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + border-bottom: 1px solid #d7d7d7; + background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTI4LDE5MiAyNTYsMzIwIDM4NCwxOTIiLz48L2c+PC9zdmc+Cg==) no-repeat; + background-position-x: 105%; + background-size: 2em; + background-origin: content-box; + outline: medium none; + + &:hover, &:focus { + border-bottom: 1px solid @color-search-border; + } + + } + +} + +/* -- checkbox-onoff -- */ +@supports (border-radius: 50px) { + .checkbox-onoff { + display: inline-block; + width: 40px; + height: 10px; + background: #dcdcdc; + margin: 8px auto; + position: relative; + border-radius: 50px; + label { + display: block; + width: 20px; + height: 20px; + position: absolute; + top: -5px; + cursor: pointer; + border-radius: 50px; + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.3); + transition: all 0.4s ease; + + left: 27px; + background-color: #3498DB; + } + input[type=checkbox] { + visibility: hidden; + &:checked + label { + left: -5px; + background: #dcdcdc; + } + } + } +} + +/* -- checkbox --*/ +@supports (transform: rotate(-45deg)) { + .checkbox { + width: 20px; + position: relative; + margin: 20px auto; + label { + width: 20px; + height: 20px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + background: white; + border-radius: 4px; + box-shadow: inset 0px 1px 1px white, 0px 1px 4px rgba(0,0,0,0.5); + &:after { + content: ''; + width: 9px; + height: 5px; + position: absolute; + top: 4px; + left: 4px; + border: 3px solid #333; + border-top: none; + border-right: none; + background: transparent; + opacity: 0; + transform: rotate(-45deg); + } + } + + input[type=checkbox] { + visibility: hidden; + &:checked + label:after { + border-color: #3498DB; + opacity: 1; + } + } + + // disabled : can''t be focused, show only the check mark + input[disabled] + label { + background-color: transparent !important; + box-shadow: none !important; + cursor: inherit;; + } + + // if not checked and possible to checked then display a "light" check mark on hover + input:not(:checked):not([readonly]):not([disabled]) + label:hover::after { + opacity: 0.5; + } + } +} + +@media screen and (max-width: 50em) { + .tabs > label { + width: 100%; + } +} + +/* -- loader -- */ +.loader, +.loader:after { + border-radius: 50%; + width: 2em; + height: 2em; +} +.loader { + margin: 1em auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: 0.5em solid rgba(0, 0, 0, 0.2); + border-right: 0.5em solid rgba(0, 0, 0, 0.2); + border-bottom: 0.5em solid rgba(0, 0, 0, 0.2); + border-left: 0.5em solid rgba(255, 255, 255, 0); + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.2s infinite linear; + animation: load8 1.2s infinite linear; +} +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +}
\ No newline at end of file diff --git a/searx/static/themes/simple/less/toolkit_loader.less b/searx/static/themes/simple/less/toolkit_loader.less new file mode 100644 index 000000000..7ef19c19b --- /dev/null +++ b/searx/static/themes/simple/less/toolkit_loader.less @@ -0,0 +1,41 @@ +.loader, +.loader:after { + border-radius: 50%; + width: 10em; + height: 10em; +} +.loader { + margin: 60px auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: 1.1em solid rgba(255, 255, 255, 0.2); + border-right: 1.1em solid rgba(255, 255, 255, 0.2); + border-bottom: 1.1em solid rgba(255, 255, 255, 0.2); + border-left: 1.1em solid #ffffff; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.1s infinite linear; + animation: load8 1.1s infinite linear; +} +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +}
\ No newline at end of file diff --git a/searx/static/themes/simple/magnet.svg b/searx/static/themes/simple/magnet.svg new file mode 100644 index 000000000..1a1defdb8 --- /dev/null +++ b/searx/static/themes/simple/magnet.svg @@ -0,0 +1 @@ +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" width="31mm" height="44mm" viewBox="0 0 31 44" version="1.1"><metadata><rdf:RDF><cc:Work><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/><cc:license rdf:resource="https://www.gnu.org/licenses/agpl-3.0.en.html"/><dc:creator><cc:Agent><dc:title>Alexandre Flament</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><g fill="#000"><path d="M2.381 28.39H9.79v5.82H2.38z" stroke-width=".049"/><path d="M15.872 10.398c2.381 0 5.82.264 5.82 3.704v12.17c2.47.055 4.94-.001 7.41 0 .02-4.371 0-8.73 0-12.964-.022-3.73-1.158-6.05-3.705-7.937-2.844-2.203-6.144-2.335-9.656-2.347-3.512.012-6.812.144-9.656 2.347-2.547 1.887-3.683 4.207-3.704 7.937 0 4.234-.02 8.593 0 12.965 2.47-.002 4.94.054 7.409 0v-12.17c0-3.44 3.44-3.705 5.82-3.705" stroke="#000" stroke-width=".063" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/><path d="M21.696 28.39h7.408v5.82h-7.408z" stroke-width=".049"/></g></svg> diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json new file mode 100644 index 000000000..5150e8153 --- /dev/null +++ b/searx/static/themes/simple/package.json @@ -0,0 +1,20 @@ +{ + "devDependencies": { + "grunt": "~1.0.3", + "grunt-contrib-concat": "~1.0.1", + "grunt-contrib-cssmin": "^2.2.1", + "grunt-contrib-jshint": "~1.1.0", + "grunt-contrib-less": "^1.4.1", + "grunt-contrib-uglify": "~3.4.0", + "grunt-contrib-watch": "~1.1.0", + "grunt-webfont": "^1.7.1", + "ionicons-npm": "^2.0.1", + "jslint": "^0.12.0", + "less-plugin-clean-css": "^1.5.1" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + } +} |