PageSourceSearch

https://musingsonthevine.com/_static/??-eJx1jFEOQDAQBS9kFSH8iLO0S2…QjKDxncqcpkrMiib+7XeZpTGut+GPquqav2Bg0QOts=

js musingsonthevine.com collected 2026-10-02 11:50:46 UTC 4,117 bytes, 49 lines download raw bytes

1!function(u){"use strict";u(".js-accordion-item").removeClass("no-js"),u.fn.accordionBlockItem=function(o){var n=u.extend({initiallyOpen:!1,autoClose:!0,clickToClose:!0,scroll:!1,scrollOffset:!1},o),t=250,c=window.location.hash.replace("#",""),e={};function i(o){return u(o).children(".js-accordion-controller").attr("id").replace("at-","")}function s(){r(),e.content.clearQueue().stop().slideDown(t,function(){n.scroll&&setTimeout(function(){u("html, body").animate({scrollTop:e.self.offset().top-n.scrollOffset},t)},t)}),u(document).trigger("openAccordionItem",e)}function r(){e.self.addClass("is-open is-read"),e.controller.attr("aria-expanded",!0),e.content.prop("hidden",!1)}function l(){e.content.slideUp(t,function(){a()})}function a(){e.self.removeClass("is-open"),e.controller.attr("aria-expanded",!1),e.content.attr("hidden",!0)}function d(){n.autoClose&&e.self.hasClass("is-open")&&l()}return e.self=u(this),e.id=u(this).attr("id"),e.controller=u(this).children(".js-accordion-controller"),e.uuid=i(e.self),e.content=u("#ac-"+e.uuid),e.accordionGroupItems=[e.uuid],e.accordionAncestorItems=[],e.controller.attr({tabindex:0,"aria-controls":"ac-"+e.uuid}),n.scrollOffset=Math.floor(parseInt(n.scrollOffset,10))||0,u.each(e.self.siblings(".js-accordion-item"),function(o,n){var t=i(n);e.accordionGroupItems.push(t)}),u.each(e.self.parents(".js-accordion-item"),function(o,n){var t=i(n);e.accordionAncestorItems.push(t)}),n.initiallyOpen?r():e.id===c?(s(),u.each(e.accordionAncestorItems,function(o,n){u(document).trigger("openAncestorAccordionItem",n)})):a(),e.controller.on("click",function(){return e.self.hasClass("is-open")?n.clickToClose&&l():s(),!1}),u(document).on("openAccordionItem",function(o,n){n!==e&&0<n.accordionGroupItems.indexOf(e.uuid)&&-1===n.accordionAncestorItems.indexOf(e.uuid)&&d()}),u(document).on("openAncestorAccordionItem",function(o,n){n===e.uuid&&s()}),e.controller.on("keydown",function(o){var n=o.which;"BUTTON"!==e.controller.prop("tagName")&&(13!==n&&32!==n||u(this).click()),27===n&&d()}),u(window).on("hashchange",function(){var o;(c=window.location.hash.replace("#",""))!==e.id||(o=u("#"+c)).length&&o.hasClass("js-accordion-item")&&(s(),u.each(e.accordionAncestorItems,function(o,n){u(document).trigger("openAncestorAccordionItem",n)}))}),this},u(window).on("load",function(){u(".js-accordion-item").each(function(){u(this).accordionBlockItem({initiallyOpen:u(this).data("initially-open"),autoClose:u(this).data("auto-close"),clickToClose:u(this).data("click-to-close"),scroll:u(this).data("scroll"),scrollOffset:u(this).data("scroll-offset")})})})}(jQuery);
2;
3(function () {
4    "use strict";
5
6    function initButton() {
7        var buttonPath = document.querySelector('.smooth-back-to-top-button path, .smooth-back-to-top-button rect');
8
9        if (!buttonPath) {
10            return;
11        }
12
13        var pathLength = buttonPath.getTotalLength();
14
15        buttonPath.style.strokeDasharray = pathLength + ' ' + pathLength;
16        buttonPath.style.strokeDashoffset = pathLength;
17
18        var isTicking = false;
19
20        var updateButtonProgress = function () {
21            var scroll = window.scrollY;
22            var height = document.documentElement.scrollHeight - window.innerHeight;
23
24            // Calculate progress, handling division by zero if page is smaller than viewport
25            var progress = height > 0 ? pathLength - (scroll * pathLength / height) : pathLength;
26
27            buttonPath.style.strokeDashoffset = progress;
28            isTicking = false;
29        };
30
31        var onScroll = function () {
32            if (!isTicking) {
33                window.requestAnimationFrame(updateButtonProgress);
34                isTicking = true;
35            }
36        };
37
38        updateButtonProgress();
39
40        // Use passive listener for better scroll performance on mobile
41        window.addEventListener('scroll', onScroll, { passive: true });
42    }
43
44    if (document.readyState === 'loading') {
45        document.addEventListener('DOMContentLoaded', initButton);
46    } else {
47        initButton();
48    }
49})();;

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.