PageSourceSearch

https://inbreakthrough.org/wp-content/themes/breakThrough/assets/js/main.js?ver=1.0

js inbreakthrough.org collected 2026-10-02 10:26:03 UTC 13,280 bytes, 398 lines download raw bytes

1var breakthroughJs =  function(){
2    function handleNewHeaderScript() {
3        var $header = jQuery(".header");
4        var $navbar = jQuery(".header");
5        var $toggler = jQuery(".menu");
6
7        // Scroll event
8        jQuery(window).on("scroll load", function () {
9            if (jQuery(this).scrollTop() > 20) {
10                jQuery('.job-banner').addClass("sticky-banner");
11                $navbar.addClass("sticky");
12                $header.addClass("position-fixed");
13            } else {
14                jQuery('.job-banner').removeClass("sticky-banner");
15                $header.removeClass("position-fixed");
16                $navbar.removeClass("sticky");
17            }
18        });
19
20        // Menu toggle
21        $toggler.on("click", function () {
22            $navbar.find(".right").toggleClass("active");
23            jQuery(this).toggleClass("active");
24
25            if (jQuery(this).hasClass("active")) {
26                jQuery(this).attr("src", "https://arsentech.github.io/source-codes/icons/close.svg");
27            } else {
28                jQuery(this).attr("src", "https://arsentech.github.io/source-codes/icons/menu.svg");
29            }
30        });
31    }
32
33    function handleHeaderResponsive(){
34        if(window.matchMedia("(max-width: 1199px)").matches){
35            jQuery(document).on('click','.header .menu-item-has-children',function(e){
36                e.stopPropagation(); 
37                
38                jQuery('.header .menu-item-has-children').not(this).find('.dropdown').slideUp();
39                
40                jQuery(this).find('.dropdown').slideToggle();
41            });
42        }
43    }
44
45    function onSectionVisible(entries, observer) {
46        entries.forEach(entry => {
47            if (entry.isIntersecting) {
48                myCounterFunction();
49                observer.unobserve(entry.target);
50            }
51        });
52    }
53
54function myCounterFunction() {
55    if (jQuery('.counter-value').length > 0) {
56        jQuery(".counter-value").each(function () {
57            var t = jQuery(this);
58            var count = t.attr("data-count") ? t.attr("data-count") : 0;
59
60            var hasDecimal = count.toString().includes('.'); // 🔥 check dot
61
62            var n = count == 0 ? 0 : parseFloat("" + count.replace(/,/g, ""));
63
64            jQuery({ countNum: 0 }).animate(
65                { countNum: n },
66                {
67                    duration: 2000,
68                    easing: "swing",
69                    step: function () {
70                        let val;
71
72                        if (hasDecimal) {
73                            val = this.countNum.toFixed(1); // decimal rakho
74                        } else {
75                            val = Math.round(this.countNum); // round karo
76                        }
77
78                        t.text(val);
79                    },
80                    complete: function () {
81                        let val;
82
83                        if (hasDecimal) {
84                            val = n.toFixed(1);
85                        } else {
86                            val = Math.round(n);
87                        }
88
89                        t.text(val);
90                    }
91                }
92            );
93        });
94    }
95}
96	
97function defaultPdfView() {
98    const $activePane = jQuery('.reports-section .tab-pane.active');
99    const $viewer = $activePane.find('.pdf-viewer');
100    if (!$viewer.length) return;
101    
102    $viewer.addClass('show-loading');
103    $activePane.find('#pdfFrame').attr(
104        'src',
105        $activePane.find('.pdf-item:first').data('pdf')
106    );
107    
108    setTimeout(() => $viewer.removeClass('show-loading'), 2500);
109}
110function handlereportSecWork() {
111
112    if(jQuery('.pdf-viewer').length > 0){
113        defaultPdfView();
114        jQuery(document).on('click','.reports-section .nav-item',function(){
115            setTimeout(() => {
116                defaultPdfView();
117            }, 500);
118        })
119    }
120
121    jQuery(document).on('click', '.reports-section .tab-pane.active.show .pdf-item', function() {
122        const $tab = jQuery('.reports-section .tab-pane.active.show');
123        const pdfUrl = jQuery(this).data('pdf');
124        if (!pdfUrl) return;
125
126        jQuery('.pdf-item').removeClass('active');
127        jQuery(this).addClass('active');
128
129        const $frame = $tab.find('#pdfFrame');
130        const $viewer = $tab.find('.pdf-viewer');
131
132        $frame.hide();
133        $viewer.addClass('show-loading');
134        $frame.attr('src', pdfUrl).show();
135
136        setTimeout(() => {
137            $viewer.removeClass('show-loading')
138        }, 2500);
139    });
140
141}
142    function handlecloningpartner(){
143        const $grid = jQuery('.marquee__grid');
144        const $group = $grid.find('.marquee__group');
145
146        const $clone = $group.clone();
147        $grid.append($clone);
148    }
149
150    function handleInfinitePartner() {
151        const $container = jQuery(".marquee-inner");
152        const $clones = $container.clone(true);
153        $container.append($clones);
154
155        let scrollAmount = 0;
156        let isPaused = false;
157
158        function marqueeScroll() {
159            if (!isPaused) {
160                scrollAmount += 1;
161                $container.css("transform", `translateX(-${scrollAmount}px)`);
162                if (scrollAmount >= $container[0].scrollWidth / 2) {
163                    scrollAmount = 0;
164                }
165            }
166            requestAnimationFrame(marqueeScroll);
167        }
168        marqueeScroll();
169
170        jQuery(".marquee-wrapper")
171            .on("mouseenter", function () { isPaused = true; })
172            .on("mouseleave", function () { isPaused = false; });
173    }
174
175    function handleLoadmore(){
176        function breakthrough_ajax_load_more(){
177            jQuery('.breakthrough-load-more').on('click',function(){
178                let btn = jQuery(this);
179                btn.find('svg').addClass('spinner-border').removeClass('d-none');
180                jQuery.ajax({
181                    url: ajaxurl,
182                    type: 'POST',
183                    data: {
184                        action: 'load_more_properties',
185                        category: activeCategory,
186                        post_type : post_type,
187                        posts_in_categories : posts_in_categories,
188                        post_order_by : post_order_by,
189                        title_text_limit : title_text_limit,
190                        description_text_limit : description_text_limit,
191                        offset: offset
192                    },
193                    beforeSend: function() {
194                        jQuery(this).addClass('active');
195                    },
196                    success: function(response){
197                        btn.find('svg').removeClass('spinner-border').addClass('d-none');
198                        if((response.trim() == '')){
199                            btn.find('span').text('No More Post Left');
200                        }else{
201                            jQuery('#property-list').append(response);
202                            offset += 6;    
203                        }
204                    }
205                });
206            });
207        }
208
209        if(jQuery('.brakthrough-load-more').length > 0 ){
210            breakthrough_ajax_load_more();
211            offset = 2
212        }
213    }
214
215    function getRotationDegrees(element) {
216        const st = window.getComputedStyle(element);
217        const tr = st.getPropertyValue("transform");
218
219        if (tr === "none") return 0;
220        const values = tr.split("(")[1].split(")")[0].split(",");
221        const a = values[0], b = values[1];
222        let angle = Math.round(Math.atan2(b, a) * (180 / Math.PI));
223        if (angle < 0) angle += 360;
224        return angle;
225    }
226
227    function rotate(step) {
228        if(jQuery('.slider-circle-img').length > 0){
229            const el = document.querySelector(".slider-circle-img");
230            const current = getRotationDegrees(el);
231            const target = current + step;
232
233            el.animate(
234                [
235                    { transform: `rotate(${current}deg)` },
236                    { transform: `rotate(${target}deg)` }
237                ],
238                {
239                    duration: 800,
240                    fill: "forwards",
241                    easing: "linear"
242                }
243            ).onfinish = () => {
244                el.style.transform = `rotate(${target}deg)`;
245            };
246        }
247    }
248
249    function handlePostSlider2(){
250        if(jQuery('.postSlider2').length > 0 ){
251            var slides =  jQuery('.postSlider2').data('slidesshow');
252
253            var swiper = new Swiper(".postSlider2", {
254                slidesPerView: 2,
255                spaceBetween: 40,
256                loop: true,
257                simulateTouch: slides == 3 ? false : true,
258                speed: 800,
259                autoplay: {
260                    delay: 2500,
261                    disableOnInteraction: false,
262                },
263                navigation: {
264                    nextEl: ".swiper-button-next",
265                    prevEl: ".swiper-button-prev",
266                },
267                breakpoints: {
268                    280: { slidesPerView: 1, spaceBetween: 30 },
269                    600: { slidesPerView: 2, spaceBetween: 30 },
270                    1200: { slidesPerView: slides, spaceBetween: 40 }
271                }
272            });
273        }
274        return swiper;
275    }
276
277    function handleSwiperEffect(){
278        if( jQuery('.postSlider2').length > 0 ){
279            const forwardBtn = jQuery(".swiper-button-next");
280            const backBtn = jQuery(".swiper-button-prev");
281
282            if(forwardBtn.length > 0 && backBtn.length > 0){
283                forwardBtn.on("click", function(){ rotate(45) });
284                backBtn.on("click", function(){ rotate(-45) });
285            }
286            
287            const swiper = handlePostSlider2();
288            swiper.on('slideChange', function () {
289                if (this.activeIndex > this.previousIndex) {
290                    rotate(45)
291                } else {
292                    rotate(-45)
293                }
294            });
295        }
296    }
297
298    function handleOurPeopleModel(){
299        if(jQuery('.openOurPeopleModal').length > 0) {
300            jQuery('.openOurPeopleModal').on('click',function(){
301                var title =  jQuery(this).data('title');
302                var image =  jQuery(this).data('image');
303                var designation =  jQuery(this).data('designation');
304                var description  =  jQuery(this).find('.content-data');
305				
306                jQuery('#people-name').text(title);
307                jQuery('#people-designation').text(designation);
308                jQuery('#people-media-img').attr('src', image);
309                jQuery('#people-description').html(description.html());
310            });
311        }
312    }
313
314    function handleMouseEvent(){
315        jQuery('.icon-box.style-2.border-effect').on('mouseenter', function(e) {
316            var parentOffset = jQuery(this).offset(),
317            relX = e.pageX - parentOffset.left,
318            relY = e.pageY - parentOffset.top;
319            jQuery(this).find('.bg').css({top:relY, left:relX})
320        }).on('mouseout', function(e) {
321            var parentOffset = jQuery(this).offset(),
322            relX = e.pageX - parentOffset.left,
323            relY = e.pageY - parentOffset.top;
324            jQuery(this).find('.bg').css({top:relY, left:relX})
325        });
326    }
327    
328    return {
329        init: function(){
330            handleNewHeaderScript();
331            handlecloningpartner();
332            handleLoadmore();
333            handleSwiperEffect();
334            handleHeaderResponsive();
335            handleMouseEvent();
336            handlereportSecWork();
337            if(jQuery('.thumbslider-section').length > 0){
338                handleTabsPush();
339            }  
340
341            if(jQuery('#ourPeopleModalToggle').length > 0){
342                handleOurPeopleModel();
343            }
344
345            if(jQuery(".marquee-inner").length > 0 ){
346                handleInfinitePartner();
347            }
348            
349            if(jQuery('#iconcounter').length > 0 ){
350                const section = document.getElementById("iconcounter");
351                const observer = new IntersectionObserver(onSectionVisible, {
352                    root: null,
353                    rootMargin: "0px",
354                    threshold: 0.5
355                });
356                observer.observe(section);
357            }
358        }
359    }
360}();
361
362jQuery(document).ready(function(){
363    breakthroughJs.init();
364
365    jQuery('#copyPost').on('click',function(){
366        let copyText = window.location;
367        navigator.clipboard.writeText(copyText);
368    });
369	
370    jQuery('select').selectpicker();
371});
372
373jQuery('.collapse').on('shown.bs.collapse', function () {
374    jQuery(this)
375        .next()
376        .find('.read-more')
377        .html('READ LESS <i class="fa fa-angle-up"></i>');
378});
379	jQuery('.collapse').on('hidden.bs.collapse', function () {
380
381		let $card = jQuery(this).closest('.focus-area-sec');
382		
383		window.scrollTo({
384			top: $card.offset().top - 120,
385			behavior: 'instant'
386		});
387
388		jQuery(this)
389			.next()
390			.find('.read-more')
391			.html('READ MORE <i class="fa fa-angle-down"></i>');
392	});
393
394jQuery(window).on('load', function() {
395    setTimeout(() => {
396        jQuery('.loader').slideUp(1000);
397    }, 1000);
398});

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.