PageSourceSearch

https://ritual.com/cdn/shop/t/577/assets/focusTrap.CuaWSB2G.min.js

js ritual.com collected 2026-09-24 08:31:21 UTC 1,085 bytes, 1 lines download raw bytes

1const e='a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';function t(e){return e.getClientRects().length>0}function n(n){const o=n.shadowRoot;return!(!o||!t(n))&&(o.delegatesFocus||null!==o.querySelector(e))}function o(n,o){const s=n.shadowRoot;if(s&&!s.delegatesFocus){const n=Array.from(s.querySelectorAll(e)).filter(t),r="first"===o?n[0]:n[n.length-1];if(r)return void r.focus()}n.focus()}function s(e){return e.composedPath().some(e=>e instanceof HTMLDialogElement&&e.open)}function r(r,c){if("Tab"!==r.key||s(r))return;const l=function(o){const s=[],r=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT);let c=r.nextNode();for(;c;){const o=c;o.matches(e)?t(o)&&s.push(o):n(o)&&s.push(o),c=r.nextNode()}return s}(c);if(0===l.length)return r.preventDefault(),void c.focus();const u=l[0],a=l[l.length-1],i=document.activeElement,f=null!==i&&c.contains(i),d=i===c;r.shiftKey?f&&!d&&i!==u||(r.preventDefault(),o(a,"last")):f&&!d&&i!==a||(r.preventDefault(),o(u,"first"))}export{s as e,r as t};

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.