@ -4,7 +4,7 @@
* ( C ) Copyright Contributors to the searx project ( 2014 - 2021 ) .
* SPDX - License - Identifier : AGPL - 3.0 - or - later
* /
window . searxng = function ( t ) { "use strict" ; t . getElementsByTagName ( "html" ) [ 0 ] . className = "js" ; t = t . currentScript || ( t = t . getElementsByTagName ( "script" ) ) [ t . length - 1 ] ; return { autocompleter : "true" === t . getAttribute ( "data-autocompleter" ) , infinite _scroll : "true" === t . getAttribute ( "data-infinite-scroll" ) , method : t . getAttribute ( "data-method" ) , translations : JSON . parse ( t . getAttribute ( "data-translations" ) ) } } ( document ) ,
window . searxng = function ( t ) { "use strict" ; t . getElementsByTagName ( "html" ) [ 0 ] . className = "js" ; var e = t . currentScript || ( e = t . getElementsByTagName ( "script" ) ) [ e . length - 1 ] ; return { autocompleter : "true" === e . getAttribute ( "data-autocompleter" ) , infinite _scroll : "true" === e . getAttribute ( "data-infinite-scroll" ) , method : e . getAttribute ( "data-method" ) , translations : JSON . parse ( e . getAttribute ( "data-translations" ) ) } } ( document ) ,
/ * *
* @ license
* ( C ) Copyright Contributors to the SearXNG project .
@ -20,7 +20,7 @@ $(document).ready(function(){var t,n="";searxng.autocompleter&&((t=new Bloodhoun
* ( C ) 2014 by Thomas Pointhuber , < thomas . pointhuber @ gmx . at >
* SPDX - License - Identifier : AGPL - 3.0 - or - later
* /
$ ( document ) . ready ( function ( ) { $ ( "#q.autofocus" ) . focus ( ) , $ ( "#clear_search" ) . click ( function ( ) { document . getElementById ( "q" ) . value = "" } ) , $ ( ".select-all-on-click" ) . click ( function ( ) { $ ( this ) . select ( ) } ) , $ ( ".btn-collapse" ) . click ( function ( ) { var t = $ ( this ) . data ( "btn-text-collapsed" ) , e = $ ( this ) . data ( "btn-text-not-collapsed" ) ; "" !== t && "" !== e && ( new _html = $ ( this ) . hasClass ( "collapsed" ) ? $ ( this ) . html ( ) . replace ( t , e ) : $ ( this ) . html ( ) . replace ( e , t ) , $ ( this ) . html ( new _html ) ) } ) , $ ( ".btn-toggle .btn" ) . click ( function ( ) { var t = "btn-" + $ ( this ) . data ( "btn-class" ) , e = $ ( this ) . data ( "btn-label-default" ) , n = $ ( this ) . data ( "btn-label-toggled" ) ; "" !== n && ( new _html = $ ( this ) . hasClass ( "btn-default" ) ? $ ( this ) . html ( ) . replace ( e , n ) : $ ( this ) . html ( ) . replace ( n , e ) , $ ( this ) . html ( new _html ) ) , $ ( this ) . toggleClass ( t ) , $ ( this ) . toggleClass ( "btn-default" ) } ) , $ ( ".media-loader" ) . click ( function ( ) { var t = $ ( this ) . data ( "target" ) , t= $ ( t + " > iframe" ) , e = t . attr ( "src" ) ; void 0 !== e&& ! 1 !== e || t . attr ( "src" , t . data ( "src" ) ) } ) , $ ( ".btn-sm" ) . dblclick ( function ( ) { var t = "btn-" + $ ( this ) . data ( "btn-class" ) ; $ ( this ) . hasClass ( "btn-default" ) ? ( $ ( ".btn-sm > input" ) . attr ( "checked" , "checked" ) , $ ( ".btn-sm > input" ) . prop ( "checked" , ! 0 ) , $ ( ".btn-sm" ) . addClass ( t ) , $ ( ".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 ( t ) , $ ( ".btn-sm" ) . removeClass ( "active" ) , $ ( ".btn-sm" ) . addClass ( "btn-default" ) ) } ) , $ ( ".nav-tabs" ) . click ( function ( t ) { $ ( t . target ) . parents ( "ul" ) . children ( ) . attr ( "aria-selected" , "false" ) , $ ( t . target ) . parent ( ) . attr ( "aria-selected" , "true" ) } ) , searxng . image _thumbnail _layout = new searxng . ImageLayout ( "#main_results" , "#main_results .result-images" , "img.img-thumbnail" , 15 , 3 , 200 ) , searxng . image _thumbnail _layout . watch ( ) } ) ,
$ ( document ) . ready ( function ( ) { $ ( "#q.autofocus" ) . focus ( ) , $ ( "#clear_search" ) . click ( function ( ) { document . getElementById ( "q" ) . value = "" } ) , $ ( ".select-all-on-click" ) . click ( function ( ) { $ ( this ) . select ( ) } ) , $ ( ".btn-collapse" ) . click ( function ( ) { var t = $ ( this ) . data ( "btn-text-collapsed" ) , e = $ ( this ) . data ( "btn-text-not-collapsed" ) ; "" !== t && "" !== e && ( new _html = $ ( this ) . hasClass ( "collapsed" ) ? $ ( this ) . html ( ) . replace ( t , e ) : $ ( this ) . html ( ) . replace ( e , t ) , $ ( this ) . html ( new _html ) ) } ) , $ ( ".btn-toggle .btn" ) . click ( function ( ) { var t = "btn-" + $ ( this ) . data ( "btn-class" ) , e = $ ( this ) . data ( "btn-label-default" ) , n = $ ( this ) . data ( "btn-label-toggled" ) ; "" !== n && ( new _html = $ ( this ) . hasClass ( "btn-default" ) ? $ ( this ) . html ( ) . replace ( e , n ) : $ ( this ) . html ( ) . replace ( n , e ) , $ ( this ) . html ( new _html ) ) , $ ( this ) . toggleClass ( t ) , $ ( this ) . toggleClass ( "btn-default" ) } ) , $ ( ".media-loader" ) . click ( function ( ) { var t = $ ( this ) . data ( "target" ) , e= $ ( t + " > iframe" ) , t = e . attr ( "src" ) ; void 0 !== t&& ! 1 !== t || e . attr ( "src" , e . data ( "src" ) ) } ) , $ ( ".btn-sm" ) . dblclick ( function ( ) { var t = "btn-" + $ ( this ) . data ( "btn-class" ) ; $ ( this ) . hasClass ( "btn-default" ) ? ( $ ( ".btn-sm > input" ) . attr ( "checked" , "checked" ) , $ ( ".btn-sm > input" ) . prop ( "checked" , ! 0 ) , $ ( ".btn-sm" ) . addClass ( t ) , $ ( ".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 ( t ) , $ ( ".btn-sm" ) . removeClass ( "active" ) , $ ( ".btn-sm" ) . addClass ( "btn-default" ) ) } ) , $ ( ".nav-tabs" ) . click ( function ( t ) { $ ( t . target ) . parents ( "ul" ) . children ( ) . attr ( "aria-selected" , "false" ) , $ ( t . target ) . parent ( ) . attr ( "aria-selected" , "true" ) } ) , searxng . image _thumbnail _layout = new searxng . ImageLayout ( "#main_results" , "#main_results .result-images" , "img.img-thumbnail" , 15 , 3 , 200 ) , searxng . image _thumbnail _layout . watch ( ) } ) ,
/ * *
*
* Google Image Layout v0 . 0.1
@ -42,7 +42,7 @@ $(document).ready(function(){$("#q.autofocus").focus(),$("#clear_search").click(
* ) ;
* searxng . image _thumbnail _layout . watch ( ) ;
* /
function ( s , c ) { function t ( t , e , n , a , i , o ) { this . container _selector = t , this . results _selector = e , this . img _selector = n , this . verticalMargin = a , this . horizontalMargin = i , this . maxHeight = o , this . trottleCallToAlign = null , this . alignAfterThrotteling = ! 1 } t . prototype . _getHeigth = function ( t , e ) { for ( var n , a = 0 , i = 0 ; i < t . length ; i ++ ) 0 < ( n = t [ i ] ) . naturalWidth && 0 < n . naturalHeight ? a += n . naturalWidth / n . naturalHeight : a += 1 ; return ( e - t . length * this . verticalMargin ) / a } , t . prototype . _setSize = function ( t , e ) { for ( var n , a , i = t . length , o = 0 ; o < i ; o ++ ) a= 0 < ( n = t [ o ] ) . naturalWidth && 0 < n. naturalHeight ? e * n . naturalWidth / n . naturalHeight : e , n . setAttribute ( "width" , Math . round ( a) ) , n . setAttribute ( "height" , Math . round ( e ) ) , n . style . marginLeft = Math . round ( this . horizontalMargin ) + "px" , n . style . marginTop = Math . round ( this . horizontalMargin ) + "px" , n . style . marginRight = Math . round ( this . verticalMargin - 7 ) + "px" , n . style . marginBottom = Math . round ( this . verticalMargin - 7 ) + "px" , ( a = n . parentNode . parentNode ) . classList . contains ( "js" ) || a . classList . add ( "js" ) } , t . prototype . _alignImgs = function ( t ) { for ( var e , n , a , i , o = c . querySelector ( this . container _selector ) , s = window . getComputedStyle ( o ) , r = parseInt ( s . getPropertyValue ( "padding-left" ) , 10 ) , s = parseInt ( s . getPropertyValue ( "padding-right" ) , 10 ) , l = o . clientWidth - r - s ; 0 < t . length ; ) { for ( e = ! 0 , a = 1 ; a <= t . length && e ; a ++ ) n = t . slice ( 0 , a ) , ( i = this . _getHeigth ( n , l ) ) < this . maxHeight && ( this . _setSize ( n , i ) , t = t . slice ( a ) , e = ! 1 ) ; if ( e ) { this . _setSize ( n , Math . min ( this . maxHeight , i ) ) ; break } } } , t . prototype . throttleAlign = function ( ) { var t = this ; t . trottleCallToAlign ? t . alignAfterThrotteling = ! 0 : ( t . alignAfterThrotteling = ! 1 , t . align ( ) , t . trottleCallToAlign = setTimeout ( function ( ) { t . alignAfterThrotteling && t . align ( ) , t . alignAfterThrotteling = ! 1 , t . trottleCallToAlign = null } , 20 ) ) } , t . prototype . align = function ( ) { for ( var t = c . querySelectorAll ( this . results _selector ) , e = t . length , n = null , a = null , i = [ ] , o = 0 ; o < e ; o ++ ) ( a = t [ o ] ) . previousElementSibling !== n && 0 < i . length && ( this . _alignImgs ( i ) , i = [ ] ) , i . push ( a . querySelector ( this . img _selector ) ) , n = a ; 0 < i . length && this . _alignImgs ( i ) } , t . prototype . _monitorImages = function ( ) { var t , e , n = this . throttleAlign . bind ( this ) , a = c . querySelectorAll ( this . results _selector ) , i = a . length ; function o ( t ) { t . originalTarget . src = s . searxng . static _path + s . searxng . theme . img _load _error } for ( t = 0 ; t < i ; t ++ ) null == ( e = a [ t ] . querySelector ( this . img _selector ) ) || e . classList . contains ( "aligned" ) || ( e . addEventListener ( "load" , n ) , e . addEventListener ( "error" , n ) , e . addEventListener ( "timeout" , n ) , s . searxng . theme . img _load _error && e . addEventListener ( "error" , o , { once : ! 0 } ) , e . classList . add ( "aligned" ) ) } , t . prototype . watch = function ( ) { var t = this . throttleAlign . bind ( this ) ,a = ( s . addEventListener ( "pageshow" , t ) , s . addEventListener ( "load" , t ) , s . addEventListener ( "resize" , t ) , this . _monitorImages ( ) ,this ) ; let e = new MutationObserver ( e => { let n = ! 1 ; for ( let t = 0 ; t < e . length ; t ++ ) if ( 0 < e [ t ] . addedNodes . length && e [ t ] . addedNodes [ 0 ] . classList . contains ( "result" ) ) { n = ! 0 ; break } n && a . _monitorImages ( ) } ) ; e . observe ( c . querySelector ( this . container _selector ) , { childList : ! 0 , subtree : ! 0 , attributes : ! 1 , characterData : ! 1 } ) } , s . searxng . ImageLayout = t } ( window , document ) ,
function ( s , c ) { function t ( t , e , n , a , i , o ) { this . container _selector = t , this . results _selector = e , this . img _selector = n , this . verticalMargin = a , this . horizontalMargin = i , this . maxHeight = o , this . trottleCallToAlign = null , this . alignAfterThrotteling = ! 1 } t . prototype . _getHeigth = function ( t , e ) { for ( var n , a = 0 , i = 0 ; i < t . length ; i ++ ) 0 < ( n = t [ i ] ) . naturalWidth && 0 < n . naturalHeight ? a += n . naturalWidth / n . naturalHeight : a += 1 ; return ( e - t . length * this . verticalMargin ) / a } , t . prototype . _setSize = function ( t , e ) { for ( var n , a , i = t . length , o = 0 ; o < i ; o ++ ) n= 0 < ( a = t [ o ] ) . naturalWidth && 0 < a. naturalHeight ? e * a . naturalWidth / a . naturalHeight : e , a . setAttribute ( "width" , Math . round ( n) ) , a . setAttribute ( "height" , Math . round ( e ) ) , a . style . marginLeft = Math . round ( this . horizontalMargin ) + "px" , a . style . marginTop = Math . round ( this . horizontalMargin ) + "px" , a . style . marginRight = Math . round ( this . verticalMargin - 7 ) + "px" , a . style . marginBottom = Math . round ( this . verticalMargin - 7 ) + "px" , ( a = a . parentNode . parentNode ) . classList . contains ( "js" ) || a . classList . add ( "js" ) } , t . prototype . _alignImgs = function ( t ) { for ( var e , n , a , i , o = c . querySelector ( this . container _selector ) , s = window . getComputedStyle ( o ) , r = parseInt ( s . getPropertyValue ( "padding-left" ) , 10 ) , s = parseInt ( s . getPropertyValue ( "padding-right" ) , 10 ) , l = o . clientWidth - r - s ; 0 < t . length ; ) { for ( e = ! 0 , a = 1 ; a <= t . length && e ; a ++ ) n = t . slice ( 0 , a ) , ( i = this . _getHeigth ( n , l ) ) < this . maxHeight && ( this . _setSize ( n , i ) , t = t . slice ( a ) , e = ! 1 ) ; if ( e ) { this . _setSize ( n , Math . min ( this . maxHeight , i ) ) ; break } } } , t . prototype . throttleAlign = function ( ) { var t = this ; t . trottleCallToAlign ? t . alignAfterThrotteling = ! 0 : ( t . alignAfterThrotteling = ! 1 , t . align ( ) , t . trottleCallToAlign = setTimeout ( function ( ) { t . alignAfterThrotteling && t . align ( ) , t . alignAfterThrotteling = ! 1 , t . trottleCallToAlign = null } , 20 ) ) } , t . prototype . align = function ( ) { for ( var t = c . querySelectorAll ( this . results _selector ) , e = t . length , n = null , a = null , i = [ ] , o = 0 ; o < e ; o ++ ) ( a = t [ o ] ) . previousElementSibling !== n && 0 < i . length && ( this . _alignImgs ( i ) , i = [ ] ) , i . push ( a . querySelector ( this . img _selector ) ) , n = a ; 0 < i . length && this . _alignImgs ( i ) } , t . prototype . _monitorImages = function ( ) { var t , e , n = this . throttleAlign . bind ( this ) , a = c . querySelectorAll ( this . results _selector ) , i = a . length ; function o ( t ) { t . originalTarget . src = s . searxng . static _path + s . searxng . theme . img _load _error } for ( t = 0 ; t < i ; t ++ ) null == ( e = a [ t ] . querySelector ( this . img _selector ) ) || e . classList . contains ( "aligned" ) || ( e . addEventListener ( "load" , n ) , e . addEventListener ( "error" , n ) , e . addEventListener ( "timeout" , n ) , s . searxng . theme . img _load _error && e . addEventListener ( "error" , o , { once : ! 0 } ) , e . classList . add ( "aligned" ) ) } , t . prototype . watch = function ( ) { var t = this . throttleAlign . bind ( this ) ; s . addEventListener ( "pageshow" , t ) , s . addEventListener ( "load" , t ) , s . addEventListener ( "resize" , t ) , this . _monitorImages ( ) ;var a = this ; let e = new MutationObserver ( e => { let n = ! 1 ; for ( let t = 0 ; t < e . length ; t ++ ) if ( 0 < e [ t ] . addedNodes . length && e [ t ] . addedNodes [ 0 ] . classList . contains ( "result" ) ) { n = ! 0 ; break } n && a . _monitorImages ( ) } ) ; e . observe ( c . querySelector ( this . container _selector ) , { childList : ! 0 , subtree : ! 0 , attributes : ! 1 , characterData : ! 1 } ) } , s . searxng . ImageLayout = t } ( window , document ) ,
/ * *
* @ license
* ( C ) Copyright Contributors to the SearXNG project .
@ -64,7 +64,7 @@ window.addEventListener("load",function(){$(".infobox").each(function(){var t=$(
* ( C ) 2014 by Thomas Pointhuber , < thomas . pointhuber @ gmx . at >
* SPDX - License - Identifier : AGPL - 3.0 - or - later
* /
$ ( document ) . ready ( function ( ) { $ ( ".searxng_init_map" ) . on ( "click" , function ( t ) { var e = $ ( this ) . data ( "leaflet-target" ) , n = $ ( this ) . data ( "map-lon" ) , a = $ ( this ) . data ( "map-lat" ) , i = $ ( this ) . data ( "map-zoom" ) , o = $ ( this ) . data ( "map-boundingbox" ) , s = $ ( this ) . data ( "map-geojson" ) ,r = ( o && ( southWest = L . latLng ( o [ 0 ] , o [ 2 ] ) , northEast = L . latLng ( o [ 1 ] , o [ 3 ] ) , map _bounds = L . latLngBounds ( southWest , northEast ) ) , L . Icon . Default . imagePath = "./static/themes/oscar/css/images/" ,L . map ( e ) ) , o = new L . TileLayer ( "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" , { minZoom : 1 , maxZoom : 19 , attribution : 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors' } ) ,e = ( new L . TileLayer ( "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png" , { minZoom : 1 , maxZoom : 19 , attribution : 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors' } ) , setTimeout ( function ( ) { map _bounds ? r . fitBounds ( map _bounds , { maxZoom : 17 } ) : n && a && ( i ? r . setView ( new L . LatLng ( a , n ) , i ) : r . setView ( new L . LatLng ( a , n ) , 8 ) ) } , 0 ) , r . addLayer ( o) , { "OSM Mapnik" : o } ) ; L . control . layers ( e ) . addTo ( r ) , s && L . geoJson ( s ) . addTo ( r ) , $ ( this ) . off ( t ) } ) } ) ,
$ ( document ) . ready ( function ( ) { $ ( ".searxng_init_map" ) . on ( "click" , function ( t ) { var e = $ ( this ) . data ( "leaflet-target" ) , n = $ ( this ) . data ( "map-lon" ) , a = $ ( this ) . data ( "map-lat" ) , i = $ ( this ) . data ( "map-zoom" ) , o = $ ( this ) . data ( "map-boundingbox" ) , s = $ ( this ) . data ( "map-geojson" ) ; o && ( southWest = L . latLng ( o [ 0 ] , o [ 2 ] ) , northEast = L . latLng ( o [ 1 ] , o [ 3 ] ) , map _bounds = L . latLngBounds ( southWest , northEast ) ) , L . Icon . Default . imagePath = "./static/themes/oscar/css/images/" ;var r = L . map ( e ) , e = new L . TileLayer ( "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" , { minZoom : 1 , maxZoom : 19 , attribution : 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors' } ) ; new L . TileLayer ( "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png" , { minZoom : 1 , maxZoom : 19 , attribution : 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors' } ) ; setTimeout ( function ( ) { map _bounds ? r . fitBounds ( map _bounds , { maxZoom : 17 } ) : n && a && ( i ? r . setView ( new L . LatLng ( a , n ) , i ) : r . setView ( new L . LatLng ( a , n ) , 8 ) ) } , 0 ) , r . addLayer ( e) , L . control . layers ( { "OSM Mapnik" : e } ) . addTo ( r ) , s && L . geoJson ( s ) . addTo ( r ) , $ ( this ) . off ( t ) } ) } ) ,
/ * *
* @ license
* ( C ) Copyright Contributors to the SearXNG project .