1/** 2 * HSCore - 3 * 4 * @author HtmlStream 5 * @version 1.0 6 */ 7; 8(function ($) { 9 10 'use strict'; 11 12 $.HSCore = { 13 14 /** 15 * 16 * 17 * @param 18 * 19 * @return 20 */ 21 init: function () { 22 23 $(document).ready(function (e) { 24 // Botostrap Tootltips 25 $('[data-toggle="tooltip"]').tooltip(); 26 27 // Bootstrap Popovers 28 $('[data-toggle="popover"]').popover(); 29 30 // Detect Internet Explorer (IE) 31 $.HSCore.helpers.detectIE(); 32 33 // Bootstrap Navigation Options 34 $.HSCore.helpers.bootstrapNavOptions.init(); 35 36 }); 37 38 }, 39 40 /** 41 * 42 * 43 * @var 44 */ 45 components: {}, 46 47 /** 48 * 49 * 50 * @var 51 */ 52 helpers: { 53 54 Math: { 55 56 getRandomValueFromRange: function(startPoint, endPoint, fixed) { 57 58 var fixedInner = fixed ? fixed : false; 59 60 Math.random(); 61 62 return fixedInner ? (Math.random() * (endPoint - startPoint) + startPoint) : (Math.floor(Math.random() * (endPoint - startPoint + 1)) + startPoint); 63 64 } 65 66 }, 67 68 69 /** 70 * Detect Internet Explorer (IE) 71 * 72 * @return version of IE or false, if browser is not Internet Explorer 73 */ 74 75 detectIE: function() { 76 77 var ua = window.navigator.userAgent; 78 79 var trident = ua.indexOf('Trident/'); 80 if (trident > 0) { 81 // IE 11 => return version number 82 var rv = ua.indexOf('rv:'); 83 var ieV = parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); 84 document.querySelector('body').className += ' IE'; 85 } 86 87 var edge = ua.indexOf('Edge/'); 88 if (edge > 0) { 89 // IE 12 (aka Edge) => return version number 90 var ieV = parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); 91 document.querySelector('body').className += ' IE'; 92 } 93 94 // other browser 95 return false; 96 97 }, 98 99 100 /** 101 * Bootstrap navigation options 102 * 103 */ 104 bootstrapNavOptions: { 105 init: function () { 106 this.mobileHideOnScroll(); 107 }, 108 109 mobileHideOnScroll: function () { 110 var $collection = $('.navbar'); 111 if (!$collection.length) return; 112 113 var $w = $(window), 114 breakpointsMap = { 115 'sm': 576, 116 'md': 768, 117 'lg': 992, 118 'xl': 1200 119 }; 120 121 $('body').on('click.HSMobileHideOnScroll', '.navbar-toggler', function (e) { 122 var $navbar = $(this).closest('.navbar'); 123 124 if ($navbar.length) { 125 $navbar.data('mobile-menu-scroll-position', $w.scrollTop()); 126 } 127 e.preventDefault(); 128 }); 129 130 $w.on('scroll.HSMobileHideOnScroll', function (e) { 131 $collection.each(function (i, el) { 132 var $this = $(el), $toggler, $nav, offset, $hamburgers, breakpoint; 133 if ($this.hasClass('navbar-expand-xl')) breakpoint = breakpointsMap['xl']; 134 else if ($this.hasClass('navbar-expand-lg')) breakpoint = breakpointsMap['lg']; 135 else if ($this.hasClass('navbar-expand-md')) breakpoint = breakpointsMap['md']; 136 else if ($this.hasClass('navbar-expand-xs')) breakpoint = breakpointsMap['xs']; 137 138 if ($w.width() > breakpoint) return; 139 140 $toggler = $this.find('.navbar-toggler'); 141 $nav = $this.find('.navbar-collapse'); 142 143 if (!$nav.data('mobile-scroll-hide')) return; 144 145 if ($nav.length) { 146 offset = $this.data('mobile-menu-scroll-position'); 147 148 if (Math.abs($w.scrollTop() - offset) > 40 && $nav.hasClass('show')) { 149 $toggler.trigger('click'); 150 $hamburgers = $toggler.find('.is-active'); 151 if ($hamburgers.length) { 152 $hamburgers.removeClass('is-active'); 153 } 154 } 155 } 156 }); 157 }); 158 } 159 } 160 161 }, 162 163 /** 164 * 165 * 166 * @var 167 */ 168 settings: { 169 rtl: false 170 } 171 172 }; 173
174 $.HSCore.init(); 175 176})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.