PageSourceSearch

https://puzzlestoplay.com/_next/static/chunks/5901.32f019affabeaae7.js

js puzzlestoplay.com collected 2026-10-07 22:40:30 UTC 7,687 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5901],{516:(e,t,n)=>{n.d(t,{$R:()=>o,CY:()=>u,E$:()=>h,FH:()=>r,QC:()=>p,fF:()=>m,oF:()=>d});var a=n(12115);async function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET",n=arguments.length>2?arguments[2]:void 0;try{let a=await fetch(e,{method:t,headers:n?{"content-type":"application/json"}:void 0,body:n?JSON.stringify(n):void 0,cache:"no-store"}),r=await a.json().catch(()=>({}));return a.ok||r.error||(r.error="Something went wrong. Please try again."),r}catch(e){return{error:"Something went wrong. Check your connection and try again."}}}function o(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],[t,n]=(0,a.useState)(null),o=(0,a.useCallback)(async()=>{var e,t,a;let o=await r("/api/social/friends");o.error||n({friends:null!=(e=o.friends)?e:[],incoming:null!=(t=o.incoming)?t:[],outgoing:null!=(a=o.outgoing)?a:[]})},[]);return(0,a.useEffect)(()=>{e&&o()},[e,o]),{data:t,reload:o}}let l={items:[],unread:0,loaded:!1},i=new Set,s=null;async function c(){var e,t;let n=await r("/api/social/notifications");n.error||(l={items:null!=(e=n.items)?e:[],unread:null!=(t=n.unread)?t:0,loaded:!0},i.forEach(e=>e(l)))}function u(){return c()}async function d(e){await r("/api/social/notifications","POST",e?{ids:e}:{}),l={...l,items:l.items.map(t=>!e||e.includes(t.id)?{...t,read:!0}:t),unread:e?Math.max(0,l.unread-l.items.filter(t=>e.includes(t.id)&&!t.read).length):0},i.forEach(e=>e(l))}function h(e){let[t,n]=(0,a.useState)(l);return(0,a.useEffect)(()=>{if(!e)return;i.add(n),l.loaded||c(),s||(s=setInterval(()=>{"visible"===document.visibilityState&&c()},6e4));let t=()=>void c();return window.addEventListener("focus",t),()=>{i.delete(n),window.removeEventListener("focus",t),!i.size&&s&&(clearInterval(s),s=null)}},[e]),t}function m(e){let t=Math.max(0,(Date.now()-Date.parse(e))/1e3);return t<60?"just now":t<3600?"".concat(Math.floor(t/60),"m ago"):t<86400?"".concat(Math.floor(t/3600),"h ago"):t<604800?"".concat(Math.floor(t/86400),"d ago"):new Date(e).toLocaleDateString("en-GB",{day:"numeric",month:"short"})}function p(e){return(null==e?void 0:e.name)||((null==e?void 0:e.username)?"@".concat(e.username):"A player")}},1922:(e,t,n)=>{n.d(t,{M3:()=>o,Yb:()=>a,fU:()=>i,y1:()=>l});let a="solve:unnamed";function r(){let e="",t="";try{var n,a;e=null!=(n=localStorage.getItem("p2p:pid"))?n:"",t=null!=(a=localStorage.getItem("p2p:name"))?a:"",e||(e=crypto.randomUUID(),localStorage.setItem("p2p:pid",e))}catch(t){e=e||Math.random().toString(36).slice(2)}return{pid:e,name:t}}async function o(e){let{pid:t,name:n}=r();if(!t)return null;try{var o;let r=await fetch("/api/solves",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({...e,pid:t,name:n||"Anonymous",mode:null!=(o=e.mode)?o:"solo"})});if(!r.ok)return null;let l=await r.json();return l.ranked&&l.rank&&(!n||"Anonymous"===n)&&"room"!==e.mode&&window.dispatchEvent(new CustomEvent(a,{detail:{rank:l.rank,pieces:e.pieces}})),l}catch(e){return null}}async function l(e){let{pid:t}=r();try{var n;let a=await fetch("/api/solves",{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({pid:t,name:e})}),r=await a.json();if(!a.ok||!r.name)return{error:null!=(n=r.error)?n:"That didn’t save. Please try again."};try{localStorage.setItem("p2p:name",r.name)}catch(e){}return{name:r.name}}catch(e){return{error:"That didn’t save. Please try again."}}}function i(e){let t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),a=Math.floor(t%3600/60),r=t%60,o=e=>String(e).padStart(2,"0");return n?"".concat(n,":").concat(o(a),":").concat(o(r)):"".concat(a,":").concat(o(r))}},17242:(e,t,n)=>{n.d(t,{A:()=>a});let a=(e,t)=>{let n="/jigsaws/".concat(e);return t?"".concat(n,"?type=").concat(t):n}},31799:(e,t,n)=>{n.d(t,{A:()=>s});var a=n(95155),r=n(12115),o=n(79995),l=n(97211),i=n(60080);let s=e=>{let{entityType:t,entityId:n,kind:s,className:c,alwaysEnabled:u=!1,tone:d="light"}=e,[h,m]=(0,r.useState)(null),[p,f]=(0,r.useState)(!1),[g,y]=(0,r.useState)(null),[w,v]=(0,r.useState)(u),[b,x]=(0,r.useState)(!1);(0,r.useEffect)(()=>{y((0,i.wE)()),v(u||(0,l.Yw)(s,n))},[u,s,n]),(0,r.useEffect)(()=>{let e=!0,a=new URLSearchParams({entityType:t,entityId:String(n),...g?{deviceId:g}:{}});return fetch("/api/likes?".concat(a)).then(e=>e.json()).then(t=>{e&&"number"==typeof(null==t?void 0:t.count)&&(m(t.count),f(!!t.liked))}).catch(()=>e&&m(null)),()=>{e=!1}},[t,n,g]);let S=(0,r.useCallback)(async()=>
1{if(!g||b)return;let e=!p;x(!0),f(e),m(t=>null===t?t:Math.max(0,t+(e?1:-1)));try{e&&(0,i.u4)("puzzle_like",{kind:s,id:n});let a=await fetch("/api/likes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({entityType:t,entityId:n,deviceId:g,liked:e})}),r=await a.json();"number"==typeof(null==r?void 0:r.count)&&(m(r.count),f(!!r.liked))}catch(t){f(!e),m(t=>null===t?t:Math.max(0,t+(e?-1:1)))}finally{x(!1)}},[b,g,n,t,p]),k=!w||!g||b;return(0,a.jsxs)("button",{type:"button",onClick:S,disabled:k,"aria-pressed":p,title:w?p?"You liked this puzzle":"Like this puzzle":"Finish the puzzle to like it",className:["inline-flex items-center gap-1.5 rounded-full border px-3 py-1.5 text-sm font-semibold transition-colors","dark"===d?p?"border-rose-400/60 bg-rose-500/20 text-rose-200":"border-white/25 bg-white/10 text-white":p?"border-rose-300 bg-rose-50 text-rose-700":"border-gray-300 bg-white text-text-secondary",k?"cursor-not-allowed opacity-60":"dark"===d?"cursor-pointer hover:bg-white/20":"cursor-pointer hover:border-rose-300 hover:text-rose-700",c].filter(Boolean).join(" "),children:[(0,a.jsx)(o.Icon,{icon:"lucide:heart",width:16,height:16,className:p?"fill-current":""}),(0,a.jsx)("span",{className:"tabular-nums ".concat(null===h?"invisible":""),children:null===h?"0":h.toLocaleString()}),(0,a.jsx)("span",{className:"sr-only",children:w?"likes":"likes — finish the puzzle to add yours"})]})}},55906:(e,t,n)=>{n.d(t,{A:()=>c});var a=n(95155),r=n(12115),o=n(15239),l=n(52619),i=n.n(l),s=n(17242);function c(e){let{jigsawId:t,pieces:n,limit:l=6,compact:c=!1,heading:u="More like this"}=e,[d,h]=(0,r.useState)(null);return((0,r.useEffect)(()=>{let e=!0;return fetch("/api/jigsaws/similar?id=".concat(t,"&limit=").concat(l)).then(e=>e.json()).then(t=>{var n;return e&&h(null!=(n=t.jigsaws)?n:[])}).catch(()=>e&&h([])),()=>{e=!1}},[t,l]),null!==d&&0===d.length)?null:(0,a.jsxs)("div",{className:c?"w-full max-w-3xl":"w-full",children:[(0,a.jsx)("h2",{className:"font-bold ".concat(c?"text-white text-sm mb-2":"text-text-primary text-lg mb-3"),children:u}),(0,a.jsx)("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:(null!=d?d:Array.from({length:l},()=>null)).map((e,t)=>e?(0,a.jsxs)(i(),{href:"".concat((0,s.A)(e.id)).concat(n?"?pieces=".concat(n,"&play=1"):"?play=1"),className:"group block rounded-lg overflow-hidden bg-black/20 ring-1 ring-white/10 hover:ring-[#00b6ba] transition",title:e.title,children:[(0,a.jsx)("div",{className:"relative aspect-[4/3]",children:(0,a.jsx)(o.default,{src:e.preview,alt:"",fill:!0,sizes:"160px",className:"object-cover group-hover:scale-105 transition-transform duration-300"})}),!c&&(0,a.jsx)("p",{className:"text-sm text-text-secondary truncate px-2 py-1.5",children:e.title})]},e.id):(0,a.jsx)("div",{className:"rounded-lg aspect-[4/3] bg-white/10 animate-pulse"},t))})]})}},90319:(e,t,n)=>{n.d(t,{_:()=>a});async function a(){try{let e=localStorage.getItem("p2p:pid");if(!e)return"";let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,"0")).join("").slice(0,16)}catch(e){return""}}}}]);

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.