1/*! 2 * remark (http://getbootstrapadmin.com/remark) 3 * Copyright 2015 amazingsurge 4 * Licensed under the Themeforest Standard Licenses 5 */ 6(function(window, document, $) { 7 'use strict'; 8 9 var $body = $(document.body); 10 11 // configs setup 12 // ============= 13 $.configs.set('site', { 14 fontFamily: "Noto Sans, sans-serif", 15 primaryColor: "blue", 16 assets: "../assets" 17 }); 18 19 window.Site = $.site.extend({ 20 run: function(next) { 21 // polyfill 22 this.polyfillIEWidth(); 23 24 // Menubar setup 25 // ============= 26 if (typeof $.site.menu !== 'undefined') { 27 $.site.menu.init(); 28 } 29 30 if (typeof $.site.menubar !== 'undefined') { 31 $(".site-menubar").on('changing.site.menubar', function() { 32 $('[data-toggle="menubar"]').each(function() { 33 var $this = $(this); 34 var $hamburger = $(this).find('.hamburger'); 35 36 function toggle($el) { 37 $el.toggleClass('hided', !$.site.menubar.opened); 38 $el.toggleClass('unfolded', !$.site.menubar.folded); 39 } 40 if ($hamburger.length > 0) { 41 toggle($hamburger); 42 } else { 43 toggle($this); 44 } 45 }); 46 47 $.site.menu.refresh(); 48 }); 49 50 $(document).on('click', '[data-toggle="collapse"]', function(e) { 51 var $trigger = $(e.target); 52 if (!$trigger.is('[data-toggle="collapse"]')) { 53 $trigger = $trigger.parents('[data-toggle="collapse"]'); 54 } 55 var href; 56 var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, ''); 57 var $target = $(target); 58 if ($target.hasClass('navbar-search-overlap')) { 59 $target.find('input').focus(); 60 61 e.preventDefault(); 62 } else if ($target.attr('id') === 'site-navbar-collapse') { 63 var isOpen = !$trigger.hasClass('collapsed'); 64 $body.addClass('site-navbar-collapsing'); 65 66 $body.toggleClass('site-navbar-collapse-show', isOpen); 67 68 setTimeout(function() { 69 $body.removeClass('site-navbar-collapsing'); 70 }, 350); 71 72 if (isOpen) { 73 $.site.menubar.scrollable.update(); 74 } 75 } 76 }); 77 78 $(document).on('click', '[data-toggle="menubar"]', function() { 79 $.site.menubar.toggle(); 80 81 return false; 82 }); 83 84 $.site.menubar.init(); 85 86 Breakpoints.on('change', function() { 87 $.site.menubar.change(); 88 }); 89 } 90 91 // Gridmenu setup 92 // ============== 93 if (typeof $.site.gridmenu !== 'undefined') { 94 $.site.gridmenu.init(); 95 } 96 97 // Sidebar setup 98 // ============= 99 if (typeof $.site.sidebar !== 'undefined') { 100 $.site.sidebar.init(); 101 } 102 103 // Tooltip setup 104 // ============= 105 $(document).tooltip({ 106 selector: '[data-tooltip=true]', 107 container: 'body' 108 }); 109 110 $('[data-toggle="tooltip"]').tooltip(); 111 $('[data-toggle="popover"]').popover(); 112 113 // Fullscreen 114 // ========== 115 if (typeof screenfull !== 'undefined') { 116 $(document).on('click', '[data-toggle="fullscreen"]', function() { 117 if (screenfull.enabled) { 118 screenfull.toggle(); 119 } 120 121 return false; 122 }); 123 124 if (screenfull.enabled) { 125 document.addEventListener(screenfull.raw.fullscreenchange, function() { 126 $('[data-toggle="fullscreen"]').toggleClass('active', screenfull.isFullscreen); 127 }); 128 } 129 } 130 131 // Dropdown menu setup 132 // =================== 133 $body.on('click', '.dropdown-menu-media', function(e) { 134 e.stopPropagation(); 135 }); 136 137 138 // Page Animate setup 139 // ================== 140 if (typeof $.animsition !== 'undefined') { 141 this.loadAnimate(function() { 142 $('.animsition').css({ 143 "animation-duration": '0s' 144 }); 145 next(); 146 }); 147 } else { 148 next(); 149 } 150 151 // Mega navbar setup 152 // ================= 153 $(document).on('click', '.navbar-mega .dropdown-menu', function(e) { 154 e.stopPropagation(); 155 }); 156 157 $(document).on('show.bs.dropdown', function(e) { 158 var $target = $(e.target); 159 var $trigger = e.relatedTarget ? $(e.relatedTarget) : $target.children('[data-toggle="dropdown"]'); 160 161 var animation = $trigger.data('animation'); 162 if (animation) { 163 var $menu = $target.children('.dropdown-menu'); 164 $menu.addClass('animation-' + animation); 165 166 $menu.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() { 167 $menu.removeClass('animation-' + animation); 168 }); 169 } 170 }); 171 172 $(document).on('shown.bs.dropdown', function(e) { 173 var $target = $(e.target); 174 var $menu = $target.find('.dropdown-menu-media > .list-group'); 175 176 if ($menu.length > 0) { 177 var api = $menu.data('asScrollable'); 178 if (api) { 179 api.update(); 180 } else { 181 var defaults = $.components.getDefaults("scrollable"); 182 $menu.asScrollable(defaults); 183 } 184 } 185 }); 186 187 // Two column Sidebar setup 188 // ======================== 189 $(document).on('click', '.page-aside-switch', function() { 190 var isOpen = $('.page-aside').hasClass('open'); 191 192 if (isOpen) { 193 $('.page-aside').removeClass('open'); 194 } else { 195 $('.page-aside').addClass('open'); 196 } 197 }); 198 199 // Init Loaded Components 200 // ====================== 201 $.components.init(); 202 203 this.startTour(); 204 }, 205 206 polyfillIEWidth: function() { 207 if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 208 var msViewportStyle = document.createElement('style'); 209 msViewportStyle.appendChild( 210 document.createTextNode(
211 '@-ms-viewport{width:auto!important}' 212 ) 213 ); 214 document.querySelector('head').appendChild(msViewportStyle); 215 } 216 }, 217 218 loadAnimate: function(callback) { 219 return $.components.call("animsition", document, callback); 220 }, 221 222 startTour: function(flag) { 223 if (typeof this.tour === 'undefined') { 224 if (typeof introJs === 'undefined') { 225 return; 226 } 227 228 var tourOptions = $.configs.get('tour'), 229 self = this; 230 flag = $('body').css('overflow'); 231 this.tour = introJs(); 232 233 this.tour.onbeforechange(function() { 234 $('body').css('overflow', 'hidden'); 235 }); 236 237 this.tour.oncomplete(function() { 238 $('body').css('overflow', flag); 239 }); 240 241 this.tour.onexit(function() { 242 $('body').css('overflow', flag); 243 }); 244 245 this.tour.setOptions(tourOptions); 246 $('.site-tour-trigger').on('click', function() { 247 self.tour.start(); 248 }); 249 } 250 // if (window.localStorage && window.localStorage.getItem('startTour') && (flag !== true)) { 251 // return; 252 // } else { 253 // this.tour.start(); 254 // window.localStorage.setItem('startTour', true); 255 // } 256 } 257 }); 258 259})(window, document, 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.