1/** 2* @package Gridbox 3* @author Balbooa http://www.balbooa.com/ 4* @copyright Copyright @ Balbooa 5* @license http://www.gnu.org/licenses/gpl.html GNU/GPL 6*/ 7 8var onePageScroll = true, 9 pageAS = { 10 scrolling :false, 11 delta :1, 12 startCoords : {}, 13 endCoords : {}, 14 anchor : jQuery('.gridbox-class'), 15 compileValue: function(item){ 16 var value = item.offset().top, 17 header = $g('header.header'), 18 comp = header[0] ? getComputedStyle(header[0]) : {}, 19 top = window.pageYOffset, 20 stickies = $g('.ba-sticky-header'), 21 sticky = 0; 22 if (item.closest('.ba-wrapper').parent().hasClass('header')) { 23 value = 0; 24 } else { 25 stickies.each(function(){ 26 if (this.offsetHeight > 0) { 27 let section = this.querySelector('.ba-sticky-header > .ba-section'), 28 obj = app.items[section.id], 29 offset = obj.desktop.offset; 30 if (app.view != 'desktop') { 31 for (var ind in breakpoints) { 32 if (!obj[ind]) { 33 obj[ind] = {}; 34 } 35 offset = obj[ind].offset ? obj[ind].offset : offset; 36 if (ind == app.view) { 37 break; 38 } 39 } 40 } 41 if ((!obj.scrollup && offset < value) || (obj.scrollup && offset < value && value < top)) { 42 sticky = this.offsetHeight > sticky ? this.offsetHeight : sticky; 43 } 44 } 45 }); 46 if ((!header.hasClass('sidebar-menu') || (app.view != 'desktop' && app.view != 'laptop')) && comp.position == 'fixed') { 47 sticky = header[0].offsetHeight > sticky ? header[0].offsetHeight : sticky; 48 if (header.find('.resizing-header').length > 0) { 49 var resizingSection = getComputedStyle(header.find('.resizing-header')[0]); 50 value += resizingSection.paddingTop.replace('px', '') * 1; 51 value += resizingSection.paddingBottom.replace('px', '') * 1; 52 } 53 } 54 value -= sticky; 55 } 56 57 return Math.ceil(value); 58 }, 59 animateScroll: function(){ 60 if (onePageScroll && pageAS.anchor.length > 0) { 61 var scroll = $g(window).scrollTop(), 62 index = 0; 63 pageAS.anchor.each(function(ind){ 64 var value = pageAS.compileValue($g(this)), 65 li = $g('.ba-item-one-page-menu li a[href="#'+this.id+'"][data-alias]'); 66 if (value == Math.ceil(scroll)) { 67 index = ind + (-1 * pageAS.delta); 68 return false; 69 } 70 }); 71 if (index >= 0 && index < pageAS.anchor.length) { 72 pageAS.scrolling = true; 73 var obj = app.items[this.item].autoscroll, 74 value = pageAS.compileValue($g(pageAS.anchor[index])); 75 onePageScroll = false; 76 jQuery('html, body').stop().animate({ 77 scrollTop: value 78 }, obj.speed * 1, obj.animation, function(){ 79 if (window.pageYOffset != value) { 80 window.scrollTo(0, value); 81 } 82 onePageScroll = true; 83 checkOnePageActive(); 84 setTimeout(function(){ 85 pageAS.scrolling = false; 86 }, 200); 87 }); 88 } 89 } 90 }, 91 hasScrollBar: function(){ 92 var comp = getComputedStyle(document.body); 93 94 return comp.overflowY != 'hidden'; 95 }, 96 wheelHandle: function(event){ 97 pageAS.checkItems(); 98 if (pageAS.anchor.length > 0 && pageAS.hasScrollBar()) { 99 event.preventDefault(); 100 var value = event.wheelDelta || -event.deltaY || -event.detail; 101 pageAS.delta = Math.max(-1, Math.min(1, value)); 102 if (pageAS.scrolling) { 103 return false;
104 } 105 pageAS.animateScroll(); 106 } 107 }, 108 keydownHandle: function(event){ 109 var flag = false; 110 if (flag = event.keyCode == 38 || event.keyCode == 33) { 111 pageAS.delta = 1; 112 } else if (flag = event.keyCode == 40 || event.keyCode == 34) { 113 pageAS.delta = -1; 114 } 115 if (flag && pageAS.hasScrollBar()) { 116 pageAS.checkItems(); 117 if (pageAS.anchor.length > 0) { 118 event.preventDefault(); 119 if (!pageAS.scrolling) { 120 pageAS.animateScroll(); 121 } 122 } 123 } 124 }, 125 checkItems: function(){ 126 if (app.view != 'desktop') { 127 this.anchor = new Array(); 128 } else { 129 var items = ''; 130 $g('#'+this.item).find('> .ba-menu-wrapper > .main-menu > .integration-wrapper > ul li a').each(function(){ 131 if (this.offsetHeight > 0 && this.hash && $g(this.hash).height() > 0) { 132 if (items) { 133 items += ', '; 134 } 135 items += this.hash; 136 } 137 }); 138 this.anchor = $g(items); 139 } 140 }, 141 setEvents: function(key){ 142 this.item = key; 143 pageAS[key] = true; 144 window.addEventListener('wheel', pageAS.wheelHandle, {passive: false}); 145 $g(window).on('keydown.'+key, pageAS.keydownHandle); 146 }, 147 removeEvents: function(key){ 148 if (pageAS[key]) { 149 window.removeEventListener('wheel', pageAS.wheelHandle, {passive: false}); 150 $g(window).off('keydown.'+key); 151 } 152 } 153 } 154 155app['initone-page'] = function(obj, key){ 156 if (!obj.autoscroll) { 157 obj.autoscroll = { 158 "enable": false, 159 "speed": 1000, 160 "animation": "easeInSine" 161 } 162 } 163 if (themeData.page.view != 'gridbox' && obj.autoscroll.enable) { 164 pageAS.setEvents(key); 165 } else { 166 pageAS.removeEvents(key); 167 } 168 $g('#'+key+' > .ba-menu-wrapper > .open-menu i').on('mousedown', function(event){ 169 if (event.button && event.button != 0) { 170 return false; 171 } 172 event.stopPropagation(); 173 setTimeout(function(){ 174 var width = window.innerWidth - document.documentElement.clientWidth; 175 $g('#'+key+' > .ba-menu-wrapper > .main-menu').addClass('visible-menu').removeClass('hide-menu').css('right', -width+'px') 176 .closest('.column-wrapper').addClass('column-with-menu').closest('.ba-row-wrapper').addClass('row-with-menu'); 177 if (themeData.page.view == 'gridbox') { 178 var computed = getComputedStyle(document.querySelector('header')); 179 document.querySelector('header').classList.add('ba-header-position-'+computed.position); 180 } 181 $g('#'+key+' > .ba-menu-backdrop').addClass('ba-visible-menu-backdrop'); 182 $g('body').addClass('ba-opened-menu'); 183 }, 50); 184 }); 185 $g('#'+key+' > .ba-menu-backdrop, #'+key+' > .ba-menu-wrapper > .main-menu > .close-menu i').off('click').on('click', function(){ 186 closeOnePageMenu(); 187 }); 188 $g('#'+key+' > .ba-menu-wrapper > .main-menu > .integration-wrapper > ul').on('click', ' > li > a', function(event){ 189 event.preventDefault(); 190 var item = $g(this.hash); 191 if (this.hash && item.length > 0) { 192 $g(this).closest('ul').find('.active').removeClass('active'); 193 this.parentNode.classList.add('active'); 194 var value = pageAS.compileValue(item), 195 speed = app.items[key].autoscroll.speed * 1, 196 animation = app.items[key].autoscroll.animation, 197 alias = this.dataset.alias, 198 url = location.href.replace(location.hash, '')+'#'+alias; 199 $g('.ba-item-one-page-menu a[href="'+this.hash+'"]').not(this).each(function(){ 200 $g(this).closest('ul').find('.active').removeClass('active'); 201 this.parentNode.classList.add('active'); 202 }); 203 if (window.pageYOffset != value) { 204 onePageScroll = false;
205 $g('html, body').stop().animate({ 206 'scrollTop' : value 207 }, speed, animation, function(){ 208 setTimeout(function(){ 209 onePageScroll = true; 210 }, 200); 211 }); 212 } 213 window.history.replaceState(null, null, url); 214 } 215 closeOnePageMenu(); 216 }); 217 if (themeData.page.view != 'gridbox') { 218 var endCoords = startCoords = {}; 219 $g('#'+key).on('touchstart', function(event){ 220 endCoords = event.originalEvent.targetTouches[0]; 221 startCoords = event.originalEvent.targetTouches[0]; 222 }).on('touchmove', function(event){ 223 endCoords = event.originalEvent.targetTouches[0]; 224 }).on('touchend', function(event){ 225 var hDistance = endCoords.pageX - startCoords.pageX, 226 xabs = Math.abs(endCoords.pageX - startCoords.pageX), 227 yabs = Math.abs(endCoords.pageY - startCoords.pageY); 228 if(hDistance >= 100 && xabs >= yabs * 2) { 229 $g('#'+key+' .ba-menu-backdrop').trigger('click'); 230 } 231 }); 232 } else { 233 var addNewItem = $g('#'+key+' > .ba-menu-wrapper > .main-menu > .add-new-item'); 234 if (addNewItem.length == 0) { 235 addNewItem = '<div class="add-new-item"><span><i class="zmdi zmdi-layers"></i>'+ 236 '<span class="ba-tooltip ba-top">'+top.gridboxLanguage['ADD_NEW_ITEM']+'</span></span></div>'; 237 $g('#'+key+' > .ba-menu-wrapper > .main-menu').append(addNewItem); 238 addNewItem = $g('#'+key+' > .ba-menu-wrapper > .main-menu > .add-new-item'); 239 } 240 addNewItem.find('i').on('click', function(){ 241 app.edit = $g(this).closest('.ba-item')[0].id; 242 window.parent.app.checkModule('addPlugins'); 243 }); 244 if ($g('#'+key+' > .ba-edit-item .open-mobile-menu').length == 0) { 245 var str = '<span class="ba-edit-wrapper"><i class="zmdi zmdi-open-in-new open-mobile-menu"></i>'+ 246 '<span class="ba-tooltip tooltip-delay settings-tooltip">'+window.parent.gridboxLanguage['OPEN']+ 247 '</span></span>'; 248 $g('#'+key+' > .ba-edit-item .ba-buttons-wrapper .ba-edit-wrapper').first().before(str); 249 } 250 $g('.open-mobile-menu').off('mousedown').on('mousedown', function(event){ 251 if (event.button && event.button != 0) { 252 return false; 253 } 254 event.stopPropagation(); 255 $g(this).closest('.ba-item').find('> .ba-menu-wrapper > .open-menu i').first().trigger('mousedown'); 256 }) 257 } 258 259 initItems(); 260} 261 262function closeOnePageMenu() 263{ 264 $g('.visible-menu').addClass('hide-menu').removeClass('visible-menu').css('right', '') 265 .closest('.column-wrapper').removeClass('column-with-menu').closest('.ba-row-wrapper').removeClass('row-with-menu'); 266 $g('.ba-menu-backdrop').removeClass('ba-visible-menu-backdrop').addClass('ba-menu-backdrop-out'); 267 setTimeout(function(){ 268 $g('.ba-menu-backdrop.ba-menu-backdrop-out').removeClass('ba-menu-backdrop-out'); 269 }, 300); 270 setTimeout(function(){ 271 if (themeData.page.view == 'gridbox') { 272 var computed = getComputedStyle(document.querySelector('header')); 273 document.querySelector('header').classList.remove('ba-header-position-'+computed.position); 274 } 275 $g('body').removeClass('ba-opened-menu'); 276 }, 500); 277} 278 279if (!$g('body').hasClass('gridbox')) { 280 $g(window).off('scroll.onepage').on('scroll.onepage', function(){ 281 if (onePageScroll) { 282 checkOnePageActive(); 283 } 284 }); 285} 286 287if (app.modules['initone-page']) { 288 app['initone-page'](app.modules['initone-page'].data, app.modules['initone-page'].selector); 289}
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.