PageSourceSearch

https://sxpolitics.org/wp-content/plugins/network-posts-extended/dist/netsposts-public.js?ver=1.0.2

js sxpolitics.org collected 2026-10-02 04:37:54 UTC 3,740 bytes, 97 lines download raw bytes

1(function() {
2    const pages = {};
3
4    document.addEventListener('DOMContentLoaded', function () {
5        const wrappers = document.querySelectorAll('.netsposts-screen.ajax_load');
6        for(const parentPostWrapper of wrappers) {
7            attachNavigationClickListeners(parentPostWrapper);
8        }
9    });
10
11    function setWrapperId(wrapper){
12        const id = Math.round(Math.random() * 1000) + 1;
13        wrapper.setAttribute('data-id', id);
14        return id;
15    }
16
17    function attachNavigationClickListeners(wrapper){
18        const paginationLinks = wrapper.querySelectorAll('.netsposts-paginate a.page-numbers');
19        for (const link of paginationLinks) {
20            link.addEventListener('click', handlePaginationLinkClick);
21        }
22    }
23
24    function handlePaginationLinkClick(e){
25        e.preventDefault();
26        const link = e.target;
27        const url = link.getAttribute('href');
28        const parent = link.parentElement.parentElement.parentElement;
29        loadPosts(url, parent);
30    }
31
32    function loadPosts(url, parentScreen){
33        showPreloader(parentScreen);
34        let currentPostWrapper = parentScreen.querySelector('.netsposts-block-wrapper.current');
35        const parentScreenId = parentScreen.getAttribute('id');
36        if(isPageLoaded(parentScreenId, url)){
37            setTimeout(function(){
38                // Hide previous page
39                currentPostWrapper.classList.add('hidden');
40                currentPostWrapper.classList.remove('current');
41                /*
42                 * Assign and show the new page.
43                 */
44                const pageId = pages[parentScreenId][url];
45                const selector = ".netsposts-block-wrapper[data-id='" + pageId + "']";
46                const nextParentPostWrapper = parentScreen.querySelector(selector);
47                nextParentPostWrapper.classList.remove('hidden');
48                nextParentPostWrapper.classList.add('current');
49                hidePreloader(parentScreen);
50            }, 200);
51        } else {
52            getPageDoc(url).then(function (pageDoc) {
53                const postWrapperSelector = '#' + parentScreenId + ' > .netsposts-block-wrapper';
54                const wrapper = pageDoc.querySelector(postWrapperSelector);
55                if(!pages[parentScreenId]){
56                    pages[parentScreenId] = {};
57                }
58                pages[parentScreenId][url] = setWrapperId(wrapper);
59
60                currentPostWrapper.classList.add('hidden');
61                currentPostWrapper.classList.remove('current');
62
63                const preloader = parentScreen.querySelector('.netsposts-preloader');
64                parentScreen.insertBefore(wrapper, preloader);
65                attachNavigationClickListeners(wrapper);
66                hidePreloader(parentScreen);
67            });
68        }
69        //window.history.pushState({}, document.title, url);
70    }
71
72    function showPreloader(parent){
73        const preloader = parent.querySelector('.netsposts-preloader');
74        preloader.classList.remove('hidden');
75    }
76
77    function hidePreloader(parent){
78        const preloader = parent.querySelector('.netsposts-preloader');
79        preloader.classList.add('hidden');
80    }
81
82    function isPageLoaded(screenId, url){
83        return pages.hasOwnProperty(screenId) && pages[screenId].hasOwnProperty(url);
84    }
85
86    function getPageDoc(url){
87        return loadPage(url).then(pageContent => {
88            const loadedDoc = document.implementation.createHTMLDocument();
89            loadedDoc.documentElement.innerHTML = pageContent;
90            return loadedDoc;
91        });
92    }
93
94    function loadPage(url){
95        return fetch(url).then(response => response.text());
96    }
97})();

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.