PageSourceSearch

https://expert-nazarov.com/components/com_gridbox/libraries/modules/initone-page.js?2.12.1

js expert-nazarov.com collected 2026-10-02 22:09:43 UTC 12,808 bytes, 289 lines download raw bytes

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.