PageSourceSearch

https://itsartlaw.org/wp-content/themes/itsartlaw/assets/js/scripts.js?ver=22.3.46

js itsartlaw.org collected 2026-10-02 03:38:33 UTC 41,346 bytes, 201 lines download raw bytes

vendor: 650 bytes, lines 1-12
1/*
2 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
3 * This devtool is neither made for production nor for readable output files.
4 * It uses "eval()" calls to create a separate source file in the browser devtools.
5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6 * or disable the default devtool with "devtool: false".
7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8 */
9/******/ (() => { // webpackBootstrap
10/******/ 	var __webpack_modules__ = ({
11
12/***/ "./
12js/ajax/articlesFIltes.js":
13/*!***********************************!*\
14  !*** ./js/ajax/articlesFIltes.js ***!
15  \***********************************/
16/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17
18"use strict";
19eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./js/utils.js\");\n    \r\n\r\n    jQuery(document).ready(function ($) {\r\n\r\n        const defaultSelectors = {\r\n            buttons: '.filter-buttons',\r\n            container: '.filter-container',\r\n            paginations: '.filter-arrows'\r\n        }\r\n\r\n        const defaultOptions = {\r\n            nonce: window.itsartlawMainParams.nonce,\r\n            rest_url: window.itsartlawMainParams.rest_url\r\n        }\r\n\r\n        const articlesOptions = {\r\n            ...defaultOptions,\r\n            filterQuery: window.itsartlawMainParams.filterQuery\r\n        }\r\n        const parseSelectors = (selectors) => {\r\n            const elements = {\r\n                ...defaultSelectors,\r\n                ...selectors\r\n            }\r\n            for (const key in elements) {\r\n                elements[key] = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.isString)(elements[key]) ?\r\n                    document.querySelector(elements[key]) :\r\n                    elements[key]\r\n                // if (!elements[key]) {\r\n                //     throw new Error(`${selectors[key]} is not found`)\r\n                // }\r\n            }\r\n            return elements\r\n        }\r\n\r\n        document.querySelectorAll('.articles').forEach(root => {\r\n            filteredPosts(root, {\r\n                buttons: '.articles-filter',\r\n                container: '.articles-main',\r\n                paginations: '.articles-main'\r\n            }, articlesOptions, 'posts')\r\n        });\r\n\r\n        function filteredPosts(root, selectors, options = {}, rest_route = 'posts') {\r\n\r\n            root = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.isString)(root) ? document.querySelector(root) : root\r\n            if (!root) return\r\n            const {\r\n                rest_url,\r\n                nonce,\r\n                filterQuery\r\n            } = options\r\n\r\n            const {\r\n                buttons,\r\n                container,\r\n                paginations\r\n            } = parseSelectors(selectors)\r\n            const request = async (route, params, method = 'POST', body = null) => {\r\n                const response = await fetch(`${rest_url}/${route}`, {\r\n                    method,\r\n                    body: JSON.stringify(params),\r\n                    headers: {\r\n                        'Content-Type': 'application/json',\r\n                        'X-WP-Nonce': nonce\r\n                    },\r\n                })\r\n\r\n                return await response.json()\r\n            }\r\n\r\n            if (buttons) {\r\n                buttons.addEventListener('click', async e => {\r\n                    \r\n                    const button = e.target.closest('[data-filter-tag]')\r\n\r\n                    if (!button) return\r\n\r\n                    container.classList.add('is-loading')\r\n\r\n                    filterQuery.paged = 1\r\n                    const tag = button.dataset.filterTag\r\n                    buttons.querySelectorAll('[data-filter-tag]').forEach(b => b.classList.remove('is-active'))\r\n\r\n                    if (tag === filterQuery.cat) {\r\n                        delete filterQuery.cat\r\n                    } else {\r\n                        filterQuery.cat = tag\r\n                        button.classList.add('is-active')\r\n                    }\r\n\r\n                    const response = await request(rest_route, filterQuery)\r\n\r\n                    container.innerHTML = response.data\r\n\r\n                    container.classList.remove('is-loading')\r\n                })\r\n            }\r\n            paginations.addEventListener('click', async e => {\r\n                const button = e.target.closest('.navigation a[data-page]')\r\n\r\n                if (!button) return\r\n                e.preventDefault();\r\n                container.classList.add('is-loading')\r\n\r\n\r\n                const paged = button.dataset.page;\r\n\r\n                filterQuery.paged = paged\r\n\r\n                const response = await request(rest_route, {\r\n                    ...filterQuery,\r\n                    paged\r\n                })\r\n\r\n                filterQuery.paged = response.current_page\r\n\r\n                container.innerHTML = response.data\r\n                if (window.innerWidth > 1024) {\r\n                    moreLess(400);\r\n                } else if (window.innerWidth > 320 && window.innerWidth <= 1024) {\r\n                    moreLess(200);\r\n                }\r\n\r\n                container.classList.remove('is-loading')\r\n\r\n            })\r\n        }\r\n\r\n\r\n\r\n        function moreLess(initiallyVisibleCharacters) {\r\n            var visibleCharacters = initiallyVisibleCharacters;\r\n            var paragraph = $(\".post-movies-description\");\r\n\r\n            if (paragraph) {\r\n                paragraph.each(function () {\r\n                    var text = $(this).text();\r\n                    var hiddenText = text.slice(visibleCharacters, text.length).replace(/(View more|View less|\\.\\.\\.)/gi, '');\r\n                    var wholeText = text.slice(0, visibleCharacters) + \"<span class='ellipsis'>... </span><span class='more'>View more</span>\" + \"<span style='display:none'>\" + hiddenText + \"<span class='less'>View less</span></span>\";\r\n\r\n                    if (text.length < visibleCharacters) {\r\n                        return;\r\n                    } else {\r\n                        $(this).html(wholeText);\r\n                    }\r\n                });\r\n\r\n                $(\".more\").click(function (e) {\r\n                    e.preventDefault();\r\n                    $(this).hide().prev().hide();\r\n                    $(this).next().show();\r\n                });\r\n\r\n                $(\".post-movies-description\").on(\"click\", \".less\", function (e) {\r\n                    e.preventDefault();\r\n                    $(this).parent().hide().prev().show().prev().show();\r\n                });\r\n            }\r\n\r\n        };\r\n\r\n\r\n\r\n\r\n        if ($('.articles-main').length > 0) {\r\n            saveArticlesParams();\r\n            articlesGetAjax();\r\n\r\n\r\n        }\r\n\r\n        function saveArticlesParams() {\r\n            $('.articles-filter').on('click', '.filter-button', function () {\r\n                let tagFilter = $(this).attr('data-filter-tag');\r\n                let getParam = \"?articles=\" + tagFilter;\r\n                window.history.pushState('', '', getParam);\r\n            });\r\n        }\r\n\r\n        function articlesGetAjax() {\r\n            let url = new URL(window.location.href);\r\n            let searchParams = new URLSearchParams(url.search.substring(1));\r\n            let articles = searchParams.get('articles');\r\n\r\n            if (articles !== null) {\r\n                let activeButton = $('.articles-filter').find(`.filter-button[data-filter-tag='${articles}']`);\r\n                \r\n                if (activeButton.length > 0) {\r\n                    activeButton.click(); \r\n                }\r\n            }\r\n        }\r\n\r\n    })\n\n//# sourceURL=webpack://underscores/./js/ajax/articlesFIltes.js?");
20
21/***/ }),
22
23/***/ "./js/ajax/caseLawSearch.js":
24/*!**********************************!*\
25  !*** ./js/ajax/caseLawSearch.js ***!
26  \**********************************/
27/***/ (() => {
28
29eval("jQuery(document).ready(function ($) {\r\n\r\n    const $archive = $('.case-law-archive');\r\n    if ($archive.length === 0) return;\r\n\r\n    const $searchForm = $('#case-law-search');\r\n    const $searchInput = $searchForm.find('input[type=\"search\"]');\r\n    const $caseLawList = $('.case-law-list');\r\n    const $filters = $('.filters');\r\n    const $resultsCount = $('.case-law-results__count span');\r\n    const $autocomplete = $('#caseLawResults');\r\n\r\n    let filterXhr = null;\r\n    let autocompleteXhr = null;\r\n    let filterRequestId = 0;\r\n    let lastFilterPayload = '';\r\n    let lastAutocompleteKey = '';\r\n\r\n    const getCheckedValues = (selector) => $(selector).find('input:checked').map(function () { return $(this).val(); }).get();\r\n\r\n    const setLoading = (loading) => {\r\n        $caseLawList.toggleClass('loading', loading);\r\n        $filters.toggleClass('loading', loading);\r\n        $filters.find('input').prop('disabled', loading);\r\n        $('.fiter-header button').prop('disabled', loading);\r\n    };\r\n\r\n    const updateURL = (s) => {\r\n        const param = s ? '?t=' + encodeURIComponent(s) : '?';\r\n        window.history.pushState('', '', param);\r\n    };\r\n\r\n    const buildFilterPayload = (page = 1) => JSON.stringify({\r\n        page,\r\n        posts_per_page: +$caseLawList.attr('data-show'),\r\n        s: $searchInput.val(),\r\n        keywords: getCheckedValues('#keywordsFilter'),\r\n        states: getCheckedValues('#statesFilter'),\r\n        federals: getCheckedValues('#federalsFilter'),\r\n        dates: getCheckedValues('#datesFilter'),\r\n        acceptance_dates: getCheckedValues('#acceptanceFilter'),\r\n        geography: getCheckedValues('#geographyFilter')\r\n    });\r\n\r\n    const filterCaseLaw = (page = 1) => {\r\n        const payload = buildFilterPayload(page);\r\n        if (payload === lastFilterPayload && page === 1) {\r\n            return;\r\n        }\r\n        lastFilterPayload = payload;\r\n\r\n        const data = JSON.parse(payload);\r\n        const requestId = ++filterRequestId;\r\n\r\n        updateURL(data.s);\r\n\r\n        if (filterXhr) {\r\n            filterXhr.abort();\r\n        }\r\n        if (autocompleteXhr) {\r\n            autocompleteXhr.abort();\r\n            autocompleteXhr = null;\r\n        }\r\n        $autocomplete.html('');\r\n\r\n        setLoading(true);\r\n\r\n        filterXhr = $.ajax({\r\n            url: my_ajax_object.ajax_url,\r\n            type: 'POST',\r\n            data: {\r\n                action: 'filter_case_law',\r\n                nonce: my_ajax_object.nonce,\r\n                page: data.page,\r\n                posts_per_page: data.posts_per_page,\r\n                s: data.s,\r\n                keywords: data.keywords,\r\n                states: data.states,\r\n                federals: data.federals,\r\n                dates: data.dates,\r\n                acceptance_dates: data.acceptance_dates,\r\n                geography: data.geography\r\n            },\r\n            dataType: 'json'\r\n        }).done(function (response) {\r\n            if (requestId !== filterRequestId) return;\r\n            if (!response || typeof response.content === 'undefined') return;\r\n            $caseLawList.html(response.content);\r\n            $resultsCount.html(response.found_results);\r\n        }).fail(function (_xhr, status) {\r\n            if (status === 'abort') return;\r\n            lastFilterPayload = '';\r\n        }).always(function () {\r\n            if (requestId !== filterRequestId) return;\r\n            setLoading(false);\r\n            filterXhr = null;\r\n        });\r\n    };\r\n\r\n    const debouncedFilter = debounce(() => filterCaseLaw(), 150);\r\n\r\n    const fetchCaseLawSearch = debounce(() => {\r\n        const keyword = $.trim($searchInput.val());\r\n        if (keyword.length < 3) {\r\n            $autocomplete.html('');\r\n            lastAutocompleteKey = '';\r\n            return;\r\n        }\r\n\r\n        if (keyword === lastAutocompleteKey) {\r\n            return;\r\n        }\r\n        lastAutocompleteKey = keyword;\r\n\r\n        if (autocompleteXhr) {\r\n            autocompleteXhr.abort();\r\n        }\r\n\r\n        autocompleteXhr = $.ajax({\r\n            url: my_ajax_object.ajax_url,\r\n            type: 'post',\r\n            data: { action: 'data_fetch', keyword },\r\n            success: function (data) {\r\n                $autocomplete.html(data);\r\n            },\r\n            complete: function () {\r\n                autocompleteXhr = null;\r\n            }\r\n        });\r\n    }, 350);\r\n\r\n    const getUrlParams = () => {\r\n        const searchValue = new URL(document.location).searchParams.get('t');\r\n        if (searchValue) {\r\n            $searchInput.val(searchValue);\r\n            $archive[0].scrollIntoView({ behavior: 'smooth' });\r\n            lastFilterPayload = '';\r\n            filterCaseLaw();\r\n        }\r\n    };\r\n\r\n    $('.parent-checkbox input').on('click', function () {\r\n        $(this).closest('.filter-item').find('.filter-menu input:checkbox').prop('checked', this.checked);\r\n    });\r\n\r\n    $('.case-law-results').on('click', '.navigation-menu a:not(.disabled)', function (e) {\r\n        e.preventDefault();\r\n        $('.case-law-results-wrapper')[0].scrollIntoView({ behavior: 'smooth' });\r\n        lastFilterPayload = '';\r\n        filterCaseLaw(+$(this).attr('data-page') || 1);\r\n    });\r\n\r\n    $searchForm.on('submit', function (e) {\r\n        e.preventDefault();\r\n        lastFilterPayload = '';\r\n        filterCaseLaw();\r\n    });\r\n\r\n    $searchInput.on('search', function () {\r\n        lastFilterPayload = '';\r\n        filterCaseLaw();\r\n        $autocomplete.html('');\r\n    });\r\n\r\n    $searchInput.on('keyup', function (event) {\r\n        if (event.keyCode === 13 || event.keyCode === 27) {\r\n            $autocomplete.html('');\r\n        } else {\r\n            fetchCaseLawSearch();\r\n        }\r\n    });\r\n\r\n    $autocomplete.on('click', 'li', function () {\r\n        $searchInput.val($(this).text());\r\n        $autocomplete.html('');\r\n        lastFilterPayload = '';\r\n        filterCaseLaw();\r\n    });\r\n\r\n    $('body').on('click', function () { $autocomplete.html(''); });\r\n\r\n    $('.filters').on('change', '.check-box-label input', function () {\r\n        if (window.innerWidth > 992) {\r\n            lastFilterPayload = '';\r\n            debouncedFilter();\r\n        }\r\n    });\r\n\r\n    $('#clear-filters').on('click', function () {\r\n        $filters.find('input
29:checkbox').prop('checked', false);\r\n        lastFilterPayload = '';\r\n        filterCaseLaw();\r\n    });\r\n\r\n    $('#apply-filters').on('click', function () {\r\n        lastFilterPayload = '';\r\n        filterCaseLaw();\r\n    });\r\n\r\n    getUrlParams();\r\n\r\n    function debounce(func, wait) {\r\n        let timeout;\r\n        return function (...args) {\r\n            clearTimeout(timeout);\r\n            timeout = setTimeout(() => func.apply(this, args), wait);\r\n        };\r\n    }\r\n});\r\n\n\n//# sourceURL=webpack://underscores/./js/ajax/caseLawSearch.js?");
30
31/***/ }),
32
33/***/ "./js/back-button.js":
34/*!***************************!*\
35  !*** ./js/back-button.js ***!
36  \***************************/
37/***/ (() => {
38
39eval("document.addEventListener('DOMContentLoaded', () => {\r\n    const backLink = document.querySelector('.single-books-back');\r\n\r\n    if (backLink) {\r\n        const referrer = document.referrer;\r\n        const archiveUrl = backLink.getAttribute('href');\r\n\r\n        if (referrer && referrer.includes(location.hostname)) {\r\n            backLink.setAttribute('href', referrer);\r\n        } else {\r\n            backLink.setAttribute('href', archiveUrl);\r\n        }\r\n    }\r\n\r\n});\n\n//# sourceURL=webpack://underscores/./js/back-button.js?");
40
41/***/ }),
42
43/***/ "./js/burger.js":
44/*!**********************!*\
45  !*** ./js/burger.js ***!
46  \**********************/
47/***/ (() => {
48
49eval("jQuery(document).ready(function ($) {\n\n    if (window.innerWidth <= 1025) {\n        const burgerButton = document.querySelector('.header__burger');\n        const headerBurger = document.querySelector('.header-burger');\n        const header = document.querySelector('.header');\n        const headerHeight = header.offsetHeight;\n        const body = document.body;\n\n        const headerSearchForm = header.querySelector('#searchform');\n        const headerSearchButton = header.querySelector('.header__search-toggle');\n\n        // Установка высоты бургер-меню\n        headerBurger.style.height = `${window.innerHeight - headerHeight}px`;\n\n        // Переключение бургера\n        burgerButton.addEventListener('click', function () {\n            if (headerBurger.classList.contains('active')) {\n                closeBurger();\n            } else {\n                closeSearch(); // Закрыть поиск при открытии бургера\n                openBurger();\n            }\n        });\n\n        // Закрытие при клике вне меню\n        document.addEventListener('click', function (e) {\n            if (!headerBurger.contains(e.target) && !burgerButton.contains(e.target)) {\n                closeBurger();\n            }\n        });\n\n        // Открытие и закрытие подменю\n        $(document).on('click', '.arrow', function (e) {\n            e.preventDefault();\n\n            const $arrow = $(this);\n            const $parentLi = $arrow.closest('li');\n            const $subMenu = $parentLi.children('.sub-menu').first();\n            const $siblings = $parentLi.siblings('.menu-item-has-children');\n\n            if ($subMenu.length) {\n                if ($subMenu.is(':visible')) {\n                    $subMenu.slideUp(200);\n                    $parentLi.removeClass('open');\n                    closeAllSubMenus($parentLi);\n                } else {\n                    $siblings.each(function () {\n                        const $sibling = $(this);\n                        $sibling.removeClass('open');\n                        $sibling.children('.sub-menu').slideUp(200);\n                        closeAllSubMenus($sibling);\n                    });\n\n                    $subMenu.slideDown(300);\n                    $parentLi.addClass('open');\n                }\n            }\n        });\n\n        function closeAllSubMenus($root) {\n            $root.find('.sub-menu').slideUp(300);\n            $root.find('.menu-item-has-children').removeClass('open');\n        }\n\n        function closeBurger() {\n            headerBurger.classList.remove('active');\n            headerBurger.style.top = `-100%`;\n            burgerButton.classList.remove('active');\n            body.classList.remove('no-scroll');\n            closeAllSubMenus($(headerBurger));\n        }\n\n        function openBurger() {\n            headerBurger.style.top = `${headerHeight}px`;\n            headerBurger.classList.add('active');\n            burgerButton.classList.add('active');\n            body.classList.add('no-scroll');\n            closeAllSubMenus($(headerBurger));\n        }\n\n        function closeSearch() {\n            if (headerSearchForm && headerSearchForm.classList.contains('active')) {\n                headerSearchForm.classList.remove('active');\n                headerSearchButton.classList.remove('active');\n            }\n        }\n\n        if (headerSearchForm && headerSearchButton) {\n            headerSearchButton.addEventListener('click', () => {\n                const isActive = headerSearchForm.classList.toggle('active');\n                headerSearchButton.classList.toggle('active');\n\n                if (isActive) {\n                    closeBurger(); // Закрыть бургер при открытии поиска\n                }\n            });\n        }\n\n\n        document.querySelectorAll('.menu-item-parent > a').forEach(function (link) {\n            link.addEventListener('click', function (e) {\n                const href = link.getAttribute('href');\n\n                if (!href || href === '#') {\n                    e.preventDefault();\n\n                    const arrow = link.parentElement.querySelector('.arrow');\n                    if (arrow) {\n                        arrow.click(); // инициируем клик по стрелке\n                    }\n                }\n            });\n        });\n    }\n\n});\n\n//# sourceURL=webpack://underscores/./js/burger.js?");
50
51/***/ }),
52
53/***/ "./js/event-share-popup.js":
54/*!*********************************!*\
55  !*** ./js/event-share-popup.js ***!
56  \*********************************/
57/***/ (() => {
58
59eval("document.addEventListener('DOMContentLoaded', function () {\r\n    const popup = document.getElementById('event-share-popup');\r\n\r\n    if(!popup) return;\r\n    \r\n    const popupTitle = document.getElementById('event-share-popup__title');\r\n    const popupImage = popup.querySelector('.event-share-popup__image img');\r\n    const popupLinkInput = document.getElementById('event-share-link');\r\n    const copyButton = document.getElementById('copy-link-button');\r\n    const closeButton = popup.querySelector('.event-share-popup__top-close');\r\n\r\n    function showPopup(data) {\r\n        popupTitle.textContent = data.title;\r\n        popupImage.src = data.image_url;\r\n        popupImage.alt = data.title;\r\n        popupLinkInput.value = data.permalink;\r\n\r\n        // Update social links\r\n        popup.querySelector('.share-facebook').href = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(data.permalink)}`;\r\n        popup.querySelector('.share-instagram').href = `https://instagram.com?url=${encodeURIComponent(data.permalink)}`;\r\n        popup.querySelector('.share-twitter').href = `https://twitter.com/intent/tweet?url=${encodeURIComponent(data.permalink)}&text=${encodeURIComponent(data.title)}`;\r\n        popup.querySelector('.share-pinterest').href = `https://pinterest.com/pin/create/button/?url=${encodeURIComponent(data.permalink)}&description=${encodeURIComponent(data.title)}`;\r\n        popup.querySelector('.share-linkedin').href = `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(data.permalink)}`;\r\n        popup.querySelector('.share-tumblr').href = `https://www.tumblr.com/widgets/share/tool?canonicalUrl=${encodeURIComponent(data.permalink)}&title=${encodeURIComponent(data.title)}`;\r\n        popup.querySelector('.share-email').href = `mailto:?subject=${encodeURIComponent(data.title)}&body=${encodeURIComponent(data.permalink)}`;\r\n\r\n        popup.classList.add('show');\r\n    }\r\n\r\n    // Rest of your JavaScript remains the same\r\n    if (closeButton) {\r\n        closeButton.addEventListener('click', () => {\r\n            popup.classList.remove('show');\r\n        });\r\n    }\r\n\r\n\r\n    copyButton.addEventListener('click', () => {\r\n        popupLinkInput.select();\r\n        popupLinkInput.setSelectionRange(0, 99999);\r\n        document.execCommand('copy');\r\n        copyButton.textContent = 'Copied';\r\n        setTimeout(() => {\r\n            copyButton.textContent = 'Copy link';\r\n        }, 2000);\r\n    });\r\n\r\n    document.querySelectorAll('.event__share').forEach(button => {\r\n        button.addEventListener('click', function () {\r\n            const shareData = JSON.parse(this.dataset.share);\r\n            showPopup(shareData);\r\n        });\r\n    });\r\n\r\n    window.addEventListener('click', e => {\r\n        if (e.target === popup) {\r\n            popup.classList.remove('show');\r\n        }\r\n    });\r\n    window.addEventListener('keydown', e => {\r\n        if (e.key === 'Escape') {\r\n            popup.classList.remove('show');\r\n        }\r\n    });\r\n});\n\n//# sourceURL=webpack://underscores/./js/event-share-popup.js?");
60
61/***/ }),
62
63/***/ "./js/filtered-posts.js":
64/*!******************************!*\
65  !*** ./js/filtered-posts.js ***!
66  \******************************/
67/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
68
69"use strict";
70eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./js/utils.js\");\n\nconst defaultSelectors = {\n    buttons: '.filter-buttons',\n    container: '.filter-container',\n    paginations: '.filter-arrows'\n}\n\nconst parseSelectors = (selectors) => {\n    const elements = { ...defaultSelectors, ...selectors }\n    for (const key in elements) {\n        elements[key] = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.isString)(elements[key])\n            ? document.querySelector(elements[key])\n            : elements[key]\n        // if (!elements[key]) {\n        //     throw new Error(`${selectors[key]} is not found`)\n        // }\n    }\n    return elements\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(root, selectors, options = {}, rest_route = 'posts') {\n    root = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.isString)(root) ? document.querySelector(root) : root\n    if (!root) return\n    const { rest_url, nonce, filterQuery } = options\n    \n    const { buttons, container, paginations } = parseSelectors(selectors)\n    const request = async (route, params, method = 'POST', body = null) => {\n        const response = await fetch(`${rest_url}/${route}`, {\n            method,\n            body: JSON.stringify(params),\n            headers: {\n                'Content-Type': 'application/json',\n                'X-WP-Nonce': nonce\n            },\n        })\n        \n        return await response.json()\n    }\n\n    if (buttons) {\n        buttons.addEventListener('click', async e => {\n            const button = e.target.closest('[data-filter-tag]')\n\n            if (!button) return\n\n            container.classList.add('is-loading')\n\n            filterQuery.paged = 1\n            const tag = button.dataset.filterTag\n            buttons.querySelectorAll('[data-filter-tag]').forEach(b => b.classList.remove('is-active'))\n\n            if (tag === filterQuery.cat) {\n                delete filterQuery.cat\n            } else {\n                filterQuery.cat = tag\n                button.classList.add('is-active')\n            }\n\n            const response = await request(rest_route, filterQuery)\n\n            container.innerHTML = response.data\n\n            container.classList.remove('is-loading')\n        })\n    }\n    paginations.addEventListener('click', async e => {\n        const button = e.target.closest('.navigation a[data-page]')\n        \n        if (!button) return\n\t\te.preventDefault();\n        container.classList.add('is-loading')\n\n\n        const paged = button.dataset.page;\n     \n        filterQuery.paged = paged\n        \n        const response = await request(rest_route, { ...filterQuery, paged })\n  \n        filterQuery.paged = response.current_page\n  \n        container.innerHTML = response.data\n        if (window.innerWidth > 1024) {\n            moreLess(400);\n        } else if (window.innerWidth > 320 && window.innerWidth <= 1024) {\n            moreLess(200);\n        }\n        \n        container.classList.remove('is-loading')\n        \n    })\n}\n\n\n\nfunction moreLess(initiallyVisibleCharacters) {\n    var visibleCharacters = initiallyVisibleCharacters;\n    var paragraph = $(\".post-movies-description\");\n\n    if(paragraph){\n        paragraph.each(function () {\n            var text = $(this).text();\n            var hiddenText = text.slice(visibleCharacters, text.length).replace(/(View more|View less|\\.\\.\\.)/gi, '');\n            var wholeText = text.slice(0, visibleCharacters) + \"<span class='ellipsis'>... </span><span class='more'>View more</span>\" + \"<span style='display:none'>\" + hiddenText + \"<span class='less'>View less</span></span>\";\n    \n            if (text.length < visibleCharacters) {\n                return;\n            } else {\n                $(this).html(wholeText);\n            }\n        });\n    \n        $(\".more\").click(function (e) {\n            e.preventDefault();\n            $(this).hide().prev().hide();\n            $(this).next().show();\n        });\n    \n        $(\".post-movies-description\").on(\"click\", \".less\", function (e) {\n            e.preventDefault();\n            $(this).parent().hide().prev().show().prev().show();\n        });\n    }\n    \n};\n\n\n//# sourceURL=webpack://underscores/./js/filtered-posts.js?");
71
72/***/ }),
73
74/***/ "./js/header.js":
75/*!**********************!*\
76  !*** ./js/header.js ***!
77  \**********************/
78/***/ (() => {
79
80eval("document.addEventListener(\"DOMContentLoaded\", function () {\r\n    const desktopNavigationQuery = window.matchMedia('(min-width: 1026px)');\r\n    const closeDelay = 300;\r\n    const closeTimers = new WeakMap();\r\n    const menuItems = document.querySelectorAll('.header__navigation .menu-item-has-children');\r\n\r\n    menuItems.forEach((menuItem) => {\r\n        menuItem.addEventListener('mouseenter', () => {\r\n            if (!desktopNavigationQuery.matches) {\r\n                return;\r\n            }\r\n\r\n            clearTimeout(closeTimers.get(menuItem));\r\n\r\n            menuItem.parentElement.querySelectorAll(':scope > .menu-item-has-children.is-open').forEach((siblingMenuItem) => {\r\n                if (siblingMenuItem === menuItem) {\r\n                    return;\r\n                }\r\n\r\n                clearTimeout(closeTimers.get(siblingMenuItem));\r\n                siblingMenuItem.classList.remove('is-open');\r\n            });\r\n\r\n            menuItem.classList.add('is-open');\r\n        });\r\n\r\n        menuItem.addEventListener('mouseleave', () => {\r\n            if (!desktopNavigationQuery.matches) {\r\n                menuItem.classList.remove('is-open');\r\n                return;\r\n            }\r\n\r\n            clearTimeout(closeTimers.get(menuItem));\r\n            closeTimers.set(menuItem, setTimeout(() => {\r\n                menuItem.classList.remove('is-open');\r\n            }, closeDelay));\r\n        });\r\n    });\r\n\r\n    window.addEventListener('resize', () => {\r\n        if (!desktopNavigationQuery.matches) {\r\n            menuItems.forEach((menuItem) => {\r\n                menuItem.classList.remove('is-open');\r\n            });\r\n        }\r\n    });\r\n\r\n    if (window.innerWidth > 1025) {\r\n        let header = document.querySelector(\".header\");\r\n        let headerSearchForm = header.querySelector('#searchform');\r\n        let headerSearchButton = header.querySelector('.header__search-toggle');\r\n\r\n        if (!headerSearchForm || !headerSearchButton) return;\r\n\r\n        headerSearchButton.addEventListener('click', () => {\r\n            headerSearchForm.classList.toggle('active');\r\n            headerSearchButton.classList.toggle('active');\r\n        })\r\n    }\r\n\r\n    // Search form now submits naturally - no JavaScript interception needed\r\n    // Form will redirect to home_url with ?s=query parameter\r\n    // WordPress will automatically show search results on search.php template\r\n    // This is faster than AJAX and allows proper URL sharing/bookmarking\r\n});\n\n//# sourceURL=webpack://underscores/./js/header.js?");
81
82/***/ }),
83
84/***/ "./js/main.js":
85/*!********************!*\
86  !*** ./js/main.js ***!
87  \********************/
88/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
89
90"use strict";
91eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _filtered_posts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filtered-posts.js */ \"./js/filtered-posts.js\");\n/* harmony import */ var _recutting_membership__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recutting-membership */ \"./js/recutting-membership.js\");\n/* harmony import */ var _recutting_membership__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_recutting_membership__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ajax_caseLawSearch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ajax/caseLawSearch.js */ \"./js/ajax/caseLawSearch.js\");\n/* harmony import */ var _ajax_caseLawSearch_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_ajax_caseLawSearch_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ajax_articlesFIltes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ajax/articlesFIltes.js */ \"./js/ajax/articlesFIltes.js\");\n/* harmony import */ var _back_button_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./back-button.js */ \"./js/back-button.js\");\n/* harmony import */ var _back_button_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_back_button_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _event_share_popup_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./event-share-popup.js */ \"./js/event-share-popup.js\");\n/* harmony import */ var _event_share_popup_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_event_share_popup_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _header_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./header.js */ \"./js/header.js\");\n/* harmony import */ var _header_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_header_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _burger_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./burger.js */ \"./js/burger.js\");\n/* harmony import */ var _burger_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_burger_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _preloader_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preloader.js */ \"./js/preloader.js\");\n/* harmony import */ var _preloader_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_preloader_js__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const defaultOptions = {\n        nonce: window.itsartlawMainParams.nonce,\n        rest_url: window.itsartlawMainParams.rest_url\n    }\n\n\n    const moviesOptions = {\n        ...defaultOptions,\n        filterQuery: window.itsartlawMainParams.moviesQuery\n    }\n\n    const booksOptions = {\n        ...defaultOptions,\n        filterQuery: window.itsartlawMainParams.booksQuery\n    }\n\n\n\n    document.querySelectorAll('.movies').forEach(root => {\n        ;(0,_filtered_posts_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(root, {\n            container: '.movies-main',\n            paginations: '.movies-main'\n        }, moviesOptions, 'publication')\n    });\n\n    document.querySelectorAll('.books').forEach(root => {\n        (0,_filtered_posts_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(root, {\n            buttons: '.articles-filter',\n            container: '.books-reviews',\n            paginations: '.books-reviews'\n        }, booksOptions, 'books')\n    })\n})\n\n//# sourceURL=webpack://underscores/./js/main.js?");
92
93/***/ }),
94
95/***/ "./js/preloader.js":
96/*!*************************!*\
97  !*** ./js/preloader.js ***!
98  \*************************/
99/***/ (() => {
100
101eval("(() => {\n  const preloader = document.getElementById(\"preloader\");\n  if (!preloader) return;\n\n  preloader.style.transition = \"opacity 0.2s ease\";\n\n  const hidePreloader = () => {\n    if (preloader.dataset.hidden === \"true\") return;\n    preloader.dataset.hidden = \"true\";\n    preloader.style.opacity = \"0\";\n    preloader.style.visibility = \"hidden\";\n    preloader.style.pointerEvents = \"none\";\n\n    window.setTimeout(() => {\n      preloader.remove();\n    }, 100);\n  };\n\n  if (document.readyState === \"loading\") {\n    window.addEventListener(\"DOMContentLoaded\", hidePreloader, { once: true });\n  } else {\n    hidePreloader();\n  }\n\n  window.setTimeout(hidePreloader, 1500);\n})();\n\n\n//# sourceURL=webpack://underscores/./js/preloader.js?");
102
103/***/ }),
104
105/***/ "./js/recutting-membership.js":
106/*!************************************!*\
107  !*** ./js/recutting-membership.js ***!
108  \************************************/
109/***/ (() => {
110
111eval("document.addEventListener(\"DOMContentLoaded\", function () {\n  const containers = document.querySelectorAll(\".leaky_paywall_subscription_price\");\n\n  containers.forEach(container => {\n    const html = container.innerHTML;\n\n    if (html.includes(\"(recurring)\")) {\n      const updatedHtml = html.replace(/\\(recurring\\)/g, '<span class=\"recurring-small\">(recurring)</span>');\n      container.innerHTML = updatedHtml;\n    }\n  });\n});\n\n//# sourceURL=webpack://underscores/./js/recutting-membership.js?");
112
113/***/ }),
114
115/***/ "./js/utils.js":
116/*!*********************!*\
117  !*** ./js/utils.js ***!
118  \*********************/
119/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
120
121"use strict";
122eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isString\": () => (/* binding */ isString)\n/* harmony export */ });\nfunction isString(value) {\r\n    return typeof value === 'string' || value instanceof String\r\n}\n\n//# sourceURL=webpack://underscores/./js/utils.js?");
123
124/***/ })
vendor: 2,988 bytes, lines 124-201
124
125
126/******/ 	});
127/************************************************************************/
128/******/ 	// The module cache
129/******/ 	var __webpack_module_cache__ = {};
130/******/ 	
131/******/ 	// The require function
132/******/ 	function __webpack_require__(moduleId) {
133/******/ 		// Check if module is in cache
134/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
135/******/ 		if (cachedModule !== undefined) {
136/******/ 			return cachedModule.exports;
137/******/ 		}
138/******/ 		// Create a new module (and put it into the cache)
139/******/ 		var module = __webpack_module_cache__[moduleId] = {
140/******/ 			// no module.id needed
141/******/ 			// no module.loaded needed
142/******/ 			exports: {}
143/******/ 		};
144/******/ 	
145/******/ 		// Execute the module function
146/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
147/******/ 	
148/******/ 		// Return the exports of the module
149/******/ 		return module.exports;
150/******/ 	}
151/******/ 	
152/************************************************************************/
153/******/ 	/* webpack/runtime/compat get default export */
154/******/ 	(() => {
155/******/ 		// getDefaultExport function for compatibility with non-harmony modules
156/******/ 		__webpack_require__.n = (module) => {
157/******/ 			var getter = module && module.__esModule ?
158/******/ 				() => (module['default']) :
159/******/ 				() => (module);
160/******/ 			__webpack_require__.d(getter, { a: getter });
161/******/ 			return getter;
162/******/ 		};
163/******/ 	})();
164/******/ 	
165/******/ 	/* webpack/runtime/define property getters */
166/******/ 	(() => {
167/******/ 		// define getter functions for harmony exports
168/******/ 		__webpack_require__.d = (exports, definition) => {
169/******/ 			for(var key in definition) {
170/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
171/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
172/******/ 				}
173/******/ 			}
174/******/ 		};
175/******/ 	})();
176/******/ 	
177/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
178/******/ 	(() => {
179/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
180/******/ 	})();
181/******/ 	
182/******/ 	/* webpack/runtime/make namespace object */
183/******/ 	(() => {
184/******/ 		// define __esModule on exports
185/******/ 		__webpack_require__.r = (exports) => {
186/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
187/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
188/******/ 			}
189/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
190/******/ 		};
191/******/ 	})();
192/******/ 	
193/************************************************************************/
194/******/ 	
195/******/ 	// startup
196/******/ 	// Load entry module and return exports
197/******/ 	// This entry module can't be inlined because the eval devtool is used.
198/******/ 	var __webpack_exports__ = __webpack_require__("./js/main.js");
199/******/ 	
200/******/ })()
201;

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.