PageSourceSearch

https://openlakeweb.vercel.app/_next/static/immutable/chunks/1m2kxhek47dy6.js

js openlakeweb.vercel.app collected 2026-10-03 07:26:42 UTC 18,976 bytes, 423 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92962,e=>{"use strict";var r=e.i(43476),t=e.i(57688),a=e.i(71645),i=e.i(62319);let n=Array.from({length:10},(e,r)=>`/assets/hero_sticker${r+1}.webp`),o=Math.round(1218/1356*148),s=e=>Math.floor(e/10).toLocaleString();function l(e,r,t,a,i=0){let o=e,s=()=>{let e,[r,t]=[(e=(1664525*o+0x3c6ef35f)%0x100000000)/0x100000000,e];return o=t,r},d=Math.round(54+52*s()),c=Math.max(28,a-28-d);return{sticker:{id:r,src:n[Math.floor(s()*n.length)],x:-d-i-s()*(.65*t),y:Math.round(28+s()*(c-28)),size:d,speed:220+170*s(),rot:360*s(),spin:-140+280*s()},seed:o}}e.s(["Game",0,function(){let[e,n]=(0,a.useState)("idle"),[d,c]=(0,a.useState)(0),[p,m]=(0,a.useState)(0),[g,u]=(0,a.useState)(0),[h,x]=(0,a.useState)([]),f="idle"!==e,y=(0,a.useRef)(null),b=(0,a.useRef)(null),v=(0,a.useRef)(null),w=(0,a.useRef)(0),k=(0,a.useRef)({width:0,height:0}),_=(0,a.useRef)(505505),j=(0,a.useRef)([]),N=(0,a.useRef)(0),z=(0,a.useRef)(0),M=(0,a.useRef)("idle"),R=e=>{j.current=e,x(e)},S=e=>{N.current=e,m(e)},$=()=>{let e=y.current?.getBoundingClientRect();k.current={width:e?.width??window.innerWidth,height:e?.height??window.innerHeight}},A=e=>{z.current=Math.min(Math.max(e,28),Math.max(28,k.current.height-28-148))},E=(0,a.useCallback)(()=>{j.current=[],x([]),w.current=0,n("idle"),c(0),u(0)},[]);(0,a.useEffect)(()=>{M.current=e},[e]),(0,a.useEffect)(()=>{if("idle"!==e||0===d)return;let r=window.setTimeout(()=>c(0),1800);return()=>window.clearTimeout(r)},[d,e]),(0,a.useEffect)(()=>{if(!f)return;let e=document.body.style.overflow;document.body.style.overflow="hidden",$();let r=()=>{$(),A(z.current)},t=e=>{if("Escape"===e.key)return void E();if("playing"!==M.current)return;let r=/^(ArrowUp|w)$/i.test(e.key)?-1:+!!/^(ArrowDown|s)$/i.test(e.key);r&&(e.preventDefault(),A(z.current+72*r))};return window.addEventListener("resize",r),window.addEventListener("keydown",t),()=>{document.body.style.overflow=e,window.removeEventListener("resize",r),window.removeEventListener("keydown",t)}},[E,f]),(0,a.useEffect)(()=>{if("playing"!==e){null!==b.current&&cancelAnimationFrame(b.current),b.current=null,v.current=null;return}let r=e=>{if(null===v.current){v.current=e,b.current=requestAnimationFrame(r);return}let t=Math.min((e-v.current)/1e3,.032);v.current=e,w.current+=1e3*t;let a=N.current+(z.current-N.current)*Math.min(1,10*t);N.current=a;let i=1+Math.min(2.5,w.current/1e4),s=k.current.width-88-o+14,d=k.current.width-88-14,c=a+14,p=a+148-14,m=!1;(R(j.current.map(e=>{let r={...e,x:e.x+e.speed*i*t,rot:e.rot+e.spin*t};r.x>k.current.width+r.size+36&&(r=(e=>{let{width:r,height:t}=k.current,a=l(_.current,e,r,t);return _.current=a.seed,a.sticker})(e.id));let a=r.x+10,n=r.x+r.size-10,o=r.y+10,g=r.y+r.size-10;return n>=s&&a<=d&&g>=c&&o<=p&&(m=!0),r})),S(a),u(w.current),m)?n("lost"):b.current=requestAnimationFrame(r)};return b.current=requestAnimationFrame(r),()=>{null!==b.current&&cancelAnimationFrame(b.current),b.current=null,v.current=null}},[e]);let C=r=>{if("playing"!==e)return;let t=y.current?.getBoundingClientRect();t&&A(r-t.top-74)};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h1",{style:{position:"relative",margin:0,lineHeight:.9,letterSpacing:"-0.03em",fontWeight:400,fontSize:"clamp(64px, 16vw, 172px)",color:"var(--foreground)"},children:(0,r.jsxs)("button",{type:"button",className:"glitch-trigger",onClick:()=>{if(!f){if(d+1>=3)return void(R([]),w.current=0,c(0),u(0),n("intro"));c(d+1)}},"aria-label":"Tap the 404 three times to open Sticker Run",children:[(0,r.jsx)("span",{className:"glitch-layer base",children:"404"}),(0,r.jsx)("span",{className:"glitch-layer cyan","aria-hidden":"true",children:"404"}),(0,r.jsx)("span",{className:"glitch-layer red","aria-hidden":"true",children:"404"})]})}),d>0?(0,r.jsx)("div",{className:"arming-strip","aria-hidden":"true",children:Array.from({length:3},(e,t)=>(0,r.jsx)("span",{className:t<d?"arming-dot active":"arming-dot",style:{animationDelay:`${70*t}ms`}},t))}):null,f?(0,r.jsxs)("dialog",{open:!0,className:"game-overlay","aria-modal":"true","aria-labelledby":"sticker-game-title",children:[(0,r.jsx)(i.Navbar,{}),(0,r.jsx)("div",{className:"game-overlay__wash","aria-hidden":"true"}),(0,r.jsxs)("div",{ref:y,className:`game-overlay__field${"playing"===e?" is-live":""}`,onPointerMove:e=>C(e.clientY),onPointerDown:e=>C(e.clientY),children:[(0,r.jsx)("div",{className:"game-lane game-lane--top","aria-hidden":"true"}),(0,r.jsx)("div",{className:"game-lane game-lane--mid","aria-hidden":"true"}),(0,r.jsx)("div",{className:"game-lane game-lane--bottom","aria-hidden":"true"}),h.map(e=>(0,r.jsx)("div",{className:"game-sticker",style:{transform:`translate3d(${e.x}px, ${e.y}px, 0) rotate(${e.rot}deg)`,width:e.size,height:e.size},children:(0,r.jsx)(t.default,{src:e.src,alt:"",width:e.size,height:e.size,className:"game-image"})},e.id)),(0,r.jsxs)("div",{className:`game-ship${"lost"===e?" is-dead":""}`,style:{transform:`translate3d(0, ${p}px, 0)`},"aria-hidden":"true",children:[(0,r.jsx)("div",{className:"game-ship__trail"}),(0,r.jsx)(t.default,{src:"/assets/openlake.svg",alt:"",width:1218,height:1356,className:"game-ship__image"})]})]}),(0,r.jsxs)("div",{className:"game-overlay__hud",children:[(0,r.jsxs)("div",{className:"game-chip",children:["Score ",s(g)]}),(0,r.jsx)("button",{type:"button",className:"game-exit",onClick:E,children:"Exit"})]}),(0,r.jsxs)("div",{className:`game-overlay__panel game-overlay__panel--${e}`,children:[(0,r.jsx)("h2",{id:"sticker-game-title",children:"lost"===e?"Sled destroyed":""}),(0,r.jsx)("p",{children:"intro"===e?"Pilot the sled on the right. Move up and down with your mouse, finger, or arrow keys. Survive as long as you can without crashing into a sticker!":"lost"===e?`Score: ${s(g)}. Better luck next time!`:""}),("intro"===e||"lost"===e)&&(0,r.jsx)("div",{className:"game-actions",children:(0,r.jsx)("button",{type:"button",className:"game-primary",onClick:()=>{$();let{width:e,height:r}=k.current,t=function(e,r,t){let a=e,i=[];for(let e=0;e<10;e+=1){let n=l(a,e,r,t,120*e);i.push(n.sticker),a=n.seed}return{stickers:i,seed:a}}(_.current,e,r);_.current=t.seed,w.current=0,v.current=null,R(t.stickers);let a=Math.max(28,(r-148)/2);A(a),S(a),u(0),n("playing")},children:"intro"===e?"Start run":"Play again"})})]}),(0,r.jsx)("style",{children:`
2            .game-overlay {
3              position: fixed;
4              inset: 0;
5              width: 100%;
6              max-width: none;
7              height: 100%;
8              max-height: none;
9              margin: 0;
10              padding: 0;
11              border: 0;
12              z-index: 2000;
13              overflow: hidden;
14              color: inherit;
15              background:
16                radial-gradient(circle at 18% 18%, rgba(40, 169, 226, 0.16), transparent 30%),
17                radial-gradient(circle at 86% 16%, rgba(40, 169, 226, 0.10), transparent 24%),
18                linear-gradient(180deg, var(--paper) 0%, var(--sky-100) 100%);
19              animation: overlay-enter 260ms cubic-bezier(0.22, 1, 0.36, 1);
20            }
21
22            html.dark .game-overlay {
23              background:
24                radial-gradient(circle at 18% 18%, rgba(40, 169, 226, 0.12), transparent 30%),
25                radial-gradient(circle at 86% 16%, rgba(40, 169, 226, 0.08), transparent 24%),
26                linear-gradient(180deg, var(--deep-970) 0%, var(--deep-990) 100%);
27            }
28
29            .game-overlay__wash {
30              position: absolute;
31              inset: 0;
32              background: radial-gradient(circle at center, rgba(23, 54, 83, 0.06), transparent 40%);
33              pointer-events: none;
34            }
35
36            .game-overlay__field {
37              position: absolute;
38              inset: 0;
39              overflow: hidden;
40              cursor: default;
41            }
42
43            .game-overlay__field.is-live {
44              cursor: none;
45            }
46
47            .game-lane {
48              position: absolute;
49              left: -10%;
50              right: 22%;
51              height: 1px;
52              border-top: 1px dashed var(--border);
53              opacity: 0.8;
54              animation: lane-drift 1.4s linear infinite;
55            }
56
57            .game-lane--top { top: 28%; }
58            .game-lane--mid { top: 50%; }
59            .game-lane--bottom { top: 72%; }
60
61            .game-sticker {
62              position: absolute;
63              left: 0;
64              top: 0;
65              will-change: transform;
66              filter: drop-shadow(0 12px 22px rgba(0, 0, 0, 0.28));
67            }
68
69            .game-image {
70              display: block;
71              width: 100%;
72              height: auto;
73              animation: bob 2.8s ease-in-out infinite alternate;
74            }
75
76            .game-ship {
77              position: absolute;
78              right: 88px;
79              top: 0;
80              width: ${o}px;
81              height: 148px;
82              display: flex;
83              align-items: center;
84              justify-content: flex-end;
85              pointer-events: none;
86              will-change: transform;
87            }
88
89            .game-ship.is-dead {
90              filter: saturate(0.3) brightness(0.86);
91            }
92
93            .game-ship__trail {
94              position: absolute;
95              right: -18px;
96              top: 50%;
97              width: 52px;
98              height: 18px;
99              border-radius: 999px;
100              background: linear-gradient(90deg, rgba(40, 169, 226, 0.6), rgba(40, 169, 226, 0.05));
101              filter: blur(4px);
102              transform: translateY(-50%);
103              animation: thruster 240ms ease-in-out infinite alternate;
104              z-index: 0;
105            }
106
107            .game-ship__image {
108              position: relative;
109              z-index: 1;
110              display: block;
111              width: 100%;
112              height: auto;
113              filter: drop-shadow(0 10px 20px rgba(23, 54, 83, 0.22));
114            }
115
116            .game-overlay__hud {
117              position: absolute;
118              top: 94px;
119              left: 22px;
120              right: 22px;
121              z-index: 3;
122              display: flex;
123              align-items: center;
124              gap: 10px;
125              flex-wrap: wrap;
126              animation: panel-enter 320ms 60ms cubic-bezier(0.22, 1, 0.36, 1) both;
127            }
128
129            .game-chip,
130            .game-exit {
131              display: inline-flex;
132              align-items: center;
133              justify-content: center;
134              min-height: 42px;
135              padding: 0 16px;
136              border-radius: 999px;
137              border: 1px solid var(--border);
138              background: var(--nav-bg);
139              backdrop-filter: blur(12px);
140              color: var(--foreground);
141              font-family: var(--font-phantom);
142              font-size: 14px;
143              line-height: 1;
144              letter-spacing: 0.08em;
145              text-transform: uppercase;
146            }
147
148            .game-exit {
149              margin-left: auto;
150              cursor: pointer;
151              transition: background-color 160ms ease, border-color 160ms ease;
152            }
153
154            .game-exit:hover {
155              background: rgba(23, 54, 83, 0.14);
156              border-color: rgba(23, 54, 83, 0.28);
157            }
158
159            .game-overlay__panel {
160              position: absolute;
161              left: 24px;
162              bottom: 24px;
163              z-index: 3;
164              max-width: 440px;
165              padding: 18px 18px 16px;
166              border-radius: 24px;
167              background: var(--nav-bg);
168              border: 1px solid var(--border);
169              box-shadow: var(--shadow-dd);
170              backdrop-filter: blur(20px);
171              animation: panel-enter 320ms 80ms cubic-bezier(0.22, 1, 0.36, 1) both;
172            }
173
174            .game-overlay__panel--playing {
175              max-width: 300px;
176              padding: 14px 14px 12px;
177            }
178
179            .game-overlay__panel h2 {
180              margin: 0;
181              font-weight: 700;
182              font-size: clamp(34px, 7vw, 56px);
183              line-height: 0.92;
184              font-weight: 400;
185              color: var(--foreground);
186            }
187
188            .game-overlay__panel p {
189              margin: 10px 0 0;
190              max-width: 28ch;
191              font-family: var(--font-phantom);
192              font-size: clamp(15px, 1.8vw, 19px);
193              line-height: 1.3;
194              color: var(--muted);
195            }
196
197            .game-actions {
198              display: flex;
199              gap: 10px;
200              flex-wrap: wrap;
201              margin-top: 16px;
202            }
203
204            .game-primary,
205            .game-secondary {
206              min-height: 48px;
207              padding: 0 18px;
208              border-radius: 999px;
209              font-family: var(--font-phantom);
210              font-size: 18px;
211              line-height: 1;
212              cursor: pointer;
213              transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
214            }
215
216            .game-primary {
217              border: 0;
218              background: var(--foreground);
219              color: var(--background);
220            }
221
222            .game-primary:hover {
223              background: var(--red);
224              color: var(--paper);
225            }
226
227            .game-secondary {
228              border: 1px solid var(--border);
229              background: transparent;
230              color: var(--foreground);
231            }
232
233            .game-secondary:hover {
234              background: var(--surface-hover);
235            }
236
237            @keyframes overlay-enter {
238              from { opacity: 0; transform: scale(1.02); }
239              to { opacity: 1; transform: scale(1); }
240            }
241
242            @keyframes panel-enter {
243              from { opacity: 0; transform: translateY(18px); }
244              to { opacity: 1; transform: translateY(0); }
245            }
246
247            @keyframes lane-drift {
248              from { transform: translateX(0); }
249              to { transform: translateX(-54px); }
250            }
251
252            @keyframes thruster {
253              from { transform: scaleX(0.82); opacity: 0.7; }
254              to { transform: scaleX(1.12); opacity: 1; }
255            }
256
257            @keyframes bob {
258              from { translate: 0 -5px; }
259              to { translate: 0 5px; }
260            }
261
262            @media (max-width: 767px) {
263              .game-overlay__hud {
264                top: 92px;
265                left: 16px;
266                right: 16px;
267              }
268
269              .game-exit {
270                margin-left: 0;
271              }
272
273              .game-overlay__panel {
274                left: 16px;
275                right: 16px;
276                bottom: 16px;
277                max-width: none;
278                padding: 20px 18px 18px;
279              }
280
281              .game-ship {
282                right: 26px;
283              }
284            }
285
286            @media (prefers-reduced-motion: reduce) {
287              .game-overlay,
288              .game-lane,
289              .game-image,
290              .game-ship__trail,
291              .game-overlay__hud,
292              .game-overlay__panel,
293              .game-exit,
294              .game-primary,
295              .game-secondary {
296                animation: none !important;
297                transition: none !important;
298              }
299            }
300          `})]}):null,(0,r.jsx)("style",{children:`
301        .glitch-trigger {
302          position: relative;
303          display: inline-grid;
304          place-items: center;
305          padding: 0;
306          border: 0;
307          background: transparent;
308          color: inherit;
309          font: inherit;
310          cursor: pointer;
311        }
312
313        .glitch-trigger:focus-visible {
314          outline: 3px solid rgba(23, 54, 83, 0.32);
315          outline-offset: 12px;
316          border-radius: 24px;
317        }
318
319        .glitch-layer {
320          position: absolute;
321          inset: 0;
322          display: inline-block;
323        }
324
325        .glitch-layer.base {
326          position: relative;
327        }
328
329        .glitch-layer.cyan {
330          color: var(--brand-sky);
331          transform: translate(-2px, 0);
332          clip-path: inset(6% 0 64% 0);
333          animation: cyan 1.8s steps(2, jump-end) infinite alternate;
334        }
335
336        .glitch-layer.red {
337          color: var(--red);
338          transform: translate(2px, 0);
339          clip-path: inset(54% 0 12% 0);
340          animation: red 2.2s steps(2, jump-end) infinite alternate;
341        }
342
343        .arming-strip {
344          display: inline-flex;
345          align-items: center;
346          gap: 12px;
347          margin-top: 18px;
348          padding: 10px 16px;
349          border-radius: 999px;
350          background: var(--nav-bg);
351          border: 1px solid var(--border);
352          box-shadow: var(--shadow-dd);
353          animation: arming-enter 180ms ease-out;
354        }
355
356        .arming-dot {
357          width: 10px;
358          height: 10px;
359          border-radius: 999px;
360          background: var(--border);
361          transform: scale(0.6);
362          opacity: 0;
363          animation: arming-dot-in 260ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
364        }
365
366        .arming-dot.active {
367          background: var(--red);
368        }
369
370        @keyframes arming-enter {
371          from { opacity: 0; transform: translateY(6px); }
372          to { opacity: 1; transform: translateY(0); }
373        }
374
375        @keyframes arming-dot-in {
376          from { opacity: 0; transform: scale(0.6); }
377          to { opacity: 1; transform: scale(1); }
378        }
379
380        @keyframes cyan {
381          0% { clip-path: inset(6% 0 64% 0); }
382          20% { clip-path: inset(78% 0 4% 0); }
383          40% { clip-path: inset(32% 0 36% 0); }
384          60% { clip-path: inset(10% 0 66% 0); }
385          80% { clip-path: inset(62% 0 14% 0); }
386          100% { clip-path: inset(48% 0 24% 0); }
387        }
388
389        @keyframes red {
390          0% { clip-path: inset(54% 0 12% 0); }
391          20% { clip-path: inset(16% 0 58% 0); }
392          40% { clip-path: inset(70% 0 8% 0); }
393          60% { clip-path: inset(26% 0 42% 0); }
394          80% { clip-path: inset(48% 0 16% 0); }
395          100% { clip-path: inset(8% 0 66% 0); }
396        }
397
398        @media (max-width: 767px) {
399          .glitch-layer.cyan,
400          .glitch-layer.red {
401            transform: none;
402          }
403        }
404
405        @media (prefers-reduced-motion: reduce) {
406          .glitch-layer.cyan,
407          .glitch-layer.red,
408          .arming-strip,
409          .arming-dot {
410            animation: none !important;
411            transition: none !important;
412          }
413
414          .glitch-layer.cyan,
415          .glitch-layer.red {
416            clip-path: inset(0 0 0 0);
417            color: inherit;
418            transform: none;
419          }
420        }
421      `})]})}])}]);
422
423//# sourceMappingURL=0ipeh1clv3cy2.js.map

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.