PageSourceSearch

https://portfolio.gateaux-09suntan.workers.dev/animations.js?v=skel4

js portfolio.gateaux-09suntan.workers.dev collected 2026-10-03 08:09:20 UTC 5,279 bytes, 1 lines download raw bytes

1(function(){const y=()=>{const t=window.innerWidth-document.documentElement.clientWidth;document.documentElement.style.setProperty("--scrollbar-width",t+"px")};y(),window.addEventListener("resize",y);const f=matchMedia("(prefers-reduced-motion: reduce)").matches,S=100,A={transform:"scale(0.95)",opacity:0,filter:"blur(12px)"},g={transform:"scale(1)",opacity:1,filter:"blur(0px)"},D={duration:.25,ease:[.215,.61,.355,1]};globalThis.__siteMotionTuck={HIDDEN:A,VISIBLE:g,TRANSITION:D};const T=72,x=86,_=2500,w=new WeakSet,h=new Set;function p(t){w.add(t);for(const o of[...h])o.el===t&&o.cb()}function I(t,o){if(!t||w.has(t)){o();return}let s=!1;const n=()=>{s||(s=!0,h.delete(e),o())},e={el:t,cb:n};h.add(e),setTimeout(n,_)}function L(){const t=document.querySelectorAll(".profile-group, .bio, .contact, .card-wrap, .footer, [data-stagger] > *, [data-stagger-item]");if(t.length===0)return;if(f){t.forEach(e=>{p(e),e.dispatchEvent(new CustomEvent("entrance:done",{bubbles:!0}))});return}let o=!1;function s(){o||(o=!0,t.forEach((e,l)=>{e.style.animationDelay=l*S+"ms",e.style.setProperty("--enter-delay",l*S+"ms");const d=a=>a.target===e&&/^enter-rise/.test(a.animationName);function c(a){if(d(a)){if(e.removeEventListener("animationend",c),e.removeEventListener("animationcancel",u),e.style.animation="none",e.style.animationDelay="",e.matches(".card-wrap")){const i=e.querySelector(":scope > .card-shadow");i&&(i.style.willChange="transform")}p(e),e.dispatchEvent(new CustomEvent("entrance:done",{bubbles:!0}))}}function u(a){d(a)&&(e.removeEventListener("animationcancel",u),e.removeEventListener("animationend",c),p(e),e.dispatchEvent(new CustomEvent("entrance:done",{bubbles:!0})))}e.addEventListener("animationend",c),e.addEventListener("animationcancel",u),e.classList.add("is-visible")}))}function n(){requestAnimationFrame(s)}document.visibilityState==="hidden"?document.addEventListener("visibilitychange",function e(){document.visibilityState!=="hidden"&&(document.removeEventListener("visibilitychange",e),n())}):n()}function H(){if(f)return;const t={homemove:0,"pikl-dashboard":-4,wren:-9,"pikl-ds":-13},o=globalThis.SHADER_ANIM_SPEED??1.5,s=T/o,n=x/o,e=[-25,35,-50,10,60,-35,15,-60,0,45,-25],l=[1,-6,6,-2,4,-7,7,-4,0,-6,1],d=1.5,c=[],u=(i,m,r)=>{const v={iterations:1/0,delay:m*1e3};c.push(i.animate(e.map(E=>({transform:`translateX(${E*r}px)`,easing:"ease-in-out"})),{...v,duration:s*1e3}),i.animate(l.map(E=>({translate:`0 ${E*r}px`,easing:"ease-in-out"})),{...v,duration:n*1e3}))},a=matchMedia("(hover: none)").matches;document.querySelectorAll(".card-shadow").forEach(i=>{const m=t[i.dataset.card]??0;i.style.setProperty("--shadow-cx","50%"),i.style.setProperty("--shadow-cy",a?"90%":"100%"),a?u(i,m,1):I(i.closest(".card-wrap"),()=>u(i,m,d))}),window.addEventListener("shader-speed-change",()=>{const i=(globalThis.SHADER_ANIM_SPEED??o)/o;for(const m of c)m.playbackRate=i})}function C(t,o,s){const n=Math.min(Math.max(o.scrollY,0),Math.max(o.maxScroll,0)),e=n-t.lastY;if(Math.abs(e)<=s.delta)return{isHidden:t.isHidden,lastY:t.lastY,acc:t.acc};const d=t.acc===0||Math.sign(e)===Math.sign(t.acc)?t.acc+e:e;let c=t.isHidden;return d>=s.tolerance&&n>s.threshold?c=!0:d<=-s.tolerance&&(c=!1),{isHidden:c,lastY:n,acc:d}}function M(){const t=document.querySelector(".home-btn");if(!t||f)return;let o=0;const s=()=>{const r=document.createElement("div");r.style.cssText="position:absolute;visibility:hidden;pointer-events:none;width:var(--page-outer-padding);",document.body.appendChild(r),o=r.getBoundingClientRect().width,r.remove()};s(),window.addEventListener("resize",s);const n="cubic-bezier(0.215, 0.61, 0.355, 1)",e=`margin-top 0.25s ${n}, transform 0.25s ${n}, opacity 0.19s linear 0.06s, filter 0.19s ${n} 0.06s`,l=`margin-top 0.25s ${n}, transform 0.25s ${n}, opacity 0.25s ${n}, filter 0.25s ${n}`,d=r=>{t.style.transition=r?e:l,t.style.pointerEvents=r?"none":"",t.style.opacity=r?"0":"1",t.style.marginTop=r?`${(-o).toFixed(2)}px`:"0px",t.style.transform=r?"scale(0.95)":"scale(1)",t.style.filter=r?"blur(12px)":"blur(0px)"},c={delta:6,threshold:48,tolerance:8},u=()=>Math.max(0,document.documentElement.scrollHeight-document.documentElement.clientHeight);let a={isHidden:!1,lastY:Math.max(0,window.scrollY),acc:0},i=!1;function m(){const r=a.isHidden;a=C(a,{scrollY:window.scrollY,maxScroll:u()},c),a.isHidden!==r&&d(a.isHidden),i=!1}window.addEventListener("scroll",()=>{i||(i=!0,requestAnimationFrame(m))},{passive:!0})}function N(){document.querySelectorAll(".case-mockup-wrap").forEach(o=>{const s=o.querySelector(":scope > .case-mockup-scroll"),n=o.querySelector(":scope > .mockup--mobile");if(!s||!n)return;let e=!1,l=1;function d(){const u=s.scrollWidth-s.clientWidth;if(u<=0){l=0,n.style.transform="";return}n.style.transform="";const a=n.getBoundingClientRect().left,i=window.innerWidth-a+8;l=Math.max(1,i/u),c()}function c(){l===0?n.style.transform="":n.style.transform=`translate3d(${s.scrollLeft*l}px, 0, 0)`,e=!1}s.addEventListener("scroll",()=>{e||(e=!0,requestAnimationFrame(c))},{passive:!0}),window.addEventListener("resize",d,{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(d).observe(n),d()})}function b(){L(),H(),M(),N()}document.readyState==="complete"?b():document.addEventListener("DOMContentLoaded",b,{once:!0})})();

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.