/* jshint esversion: 6 */ jQuery(function ($) { 'use strict'; // ── TOC Toggle ──────────────────────────────────────────────────────── $(document).on('click', '.wmw-toc__title, .wmw-toc__toggle', function () { var $toc = $(this).closest('.wmw-toc'); var $btn = $toc.find('.wmw-toc__toggle'); $toc.toggleClass('is-collapsed'); $btn.text($toc.hasClass('is-collapsed') ? '▶' : '▼'); }); // ── TOC Active Heading Highlight ────────────────────────────────────── if ($('.wmw-toc').length && $('[id]').length) { var headingIds = []; $('.wmw-toc a').each(function () { var href = $(this).attr('href'); if (href && href.startsWith('#')) { headingIds.push(href.substring(1)); } }); var $tocLinks = $('.wmw-toc a'); function highlightToc() { var scrollTop = $(window).scrollTop() + 120; var active = null; headingIds.forEach(function (id) { var $el = $('#' + id); if ($el.length && $el.offset().top <= scrollTop) { active = id; } }); $tocLinks.removeClass('is-active'); if (active) { $tocLinks.filter('[href="#' + active + '"]').addClass('is-active'); } } $(window).on('scroll.wmwToc', highlightToc); highlightToc(); } // ── AJAX Search ─────────────────────────────────────────────────────── var searchTimer = null; $(document).on('input', '.wmw-search__input', function () { var $input = $(this); var $wrap = $input.closest('.wmw-search'); var $results = $wrap.find('.wmw-search__results'); var $inner = $wrap.find('.wmw-search__results-inner'); var query = $input.val().trim(); var wikiId = $wrap.data('wiki-id') || 0; clearTimeout(searchTimer); if (query.length < 2) { $results.attr('hidden', ''); return; } searchTimer = setTimeout(function () { $inner.html('