PageSourceSearch

https://platform.motion.org.uk/_next/static/chunks/pages/wellbeing/games/snake-game-2324e6e0d11950be.js

js motion.org.uk collected 2026-10-04 22:54:12 UTC 12,765 bytes, 1 lines download raw bytes

1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e7a3c6dc-477f-4350-8c6e-798619f314b5",e._sentryDebugIdIdentifier="sentry-dbid-e7a3c6dc-477f-4350-8c6e-798619f314b5")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9363],{693:(e,t,r)=>{"use strict";r.d(t,{X:()=>i});var s=r(28475);let n=["abort fetching component for route","cancel rendering route","loading initial props cancelled","route cancelled"],i=({error:e,context:t,destination:r})=>{console.error(t?`[${t}] Navigation failed:`:"Navigation failed:",e),(e=>{if(e instanceof DOMException&&"AbortError"===e.name)return!0;if(e instanceof Error){let t=e.message.toLowerCase();return n.some(e=>t.includes(e))}return!1})(e)||(0,s.Cp)(e,{tags:{feature:"navigation"},extra:{...t?{context:t}:{},...r?{destination:r}:{}}})}},4705:(e,t,r)=>{"use strict";r.d(t,{kJ:()=>i,xW:()=>o,xe:()=>l});var s=r(65663),n=r.n(s);let i="/wellbeing/login",a=[i,"/wellbeing/reset-password","/wellbeing/new-password"],o=e=>{let t=e.length>1&&e.endsWith("/")?e.slice(0,-1):e;return a.some(e=>t===e||t.startsWith(`${e}/`))},l=e=>{let t=r=>{r.startsWith(i)&&(e.clear(),n().events.off("routeChangeComplete",t))};n().events.on("routeChangeComplete",t)}},7123:(e,t,r)=>{"use strict";r.d(t,{B:()=>n});var s,n=((s={}).OwnUser="own_user",s.OwnOrganisation="own_organisation",s.PeopleWeSupport="people_we_support",s.Users="users",s.Organisations="organisations",s.Organisation="organisation",s.ActivitiesCatalog="activities_catalog",s.CompletedActivities="completed_activities",s.FamilyMembers="family_members",s.RelationshipTypes="relationship_types",s.OutcomeTailoringCategories="outcome_tailoring_categories",s.OutcomeTailoringOutcomes="outcome_tailoring_outcomes",s.PersonWeSupportOutcomes="person_we_support_outcomes",s.TailoredActivities="tailored_activities",s.PersonWeSupportCompletedActivities="person_we_support_completed_activities",s.UserCreatedActivities="user_created_activities",s.EasyReadSymbolAssets="easy_read_symbol_assets",s)},7150:e=>{e.exports={gameWindow:"window_gameWindow__W4a_L",makeWindowActive:"window_makeWindowActive__K4hCZ",activeButton:"window_activeButton__tRWOC",makeActive:"window_makeActive__siVaq",activeButtonActive:"window_activeButtonActive__G6FFe",buttons:"window_buttons__Xf2nM",text:"window_text__D_2I0"}},29704:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});var s=r(425);let n=({userPermissions:e=[]}={})=>(0,s.ZU)({userPermissions:e,requiredPermission:s.Rd.CanViewNavItemHome})?"/wellbeing/dashboard":"/wellbeing/activities"},36111:e=>{e.exports={backButton:"gameDefaults_backButton__BXV5H",button:"gameDefaults_button__eclC5",buttonActive:"gameDefaults_buttonActive___keTE"}},39050:e=>{e.exports={snakeContainer:"Snake_snakeContainer__nTNR4",gameBorder:"Snake_gameBorder__PhtiE",pointBar:"Snake_pointBar__UXWKE",gameSplash:"Snake_gameSplash__NEZG4",snakeMobileButtons:"Snake_snakeMobileButtons__KVyR6",difficultySelector:"Snake_difficultySelector__9Fb9W",controls:"Snake_controls__BV67y",score:"Snake_score__mDxRv"}},39878:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h});var s=r(94513),n=r(65663),i=r(94285),a=r(36111),o=r.n(a),l=r(39050),c=r.n(l);let u=e=>{let[t,r]=(0,i.useState)(0),[n,a]=(0,i.useState)(0),[l,u]=(0,i.useState)("right"),[d,p]=(0,i.useState)(26),[h,m]=(0,i.useState)(0),[_,g]=(0,i.useState)(!1),v=window.innerWidth,f=(0,i.useRef)(500),[b,w]=(0,i.useState)("1");(0,i.useEffect)(()=>{switch(b){case"1":default:f.current=500;break;case"2":f.current=300;break;case"3":f.current=150;break;case"4":f.current=100;break;case"5":f.current=50}},[b]);let[k,x]=(0,i.useState)([{direction:"right",part:[186,185,184,183]}]);(0,i.useEffect)(()=>{C()},[e.restart]);let C=()=>{f.current=500,m(0),u("right"),x([{direction:"right",part:[186,185,184,183]}]),g(!1)},j=(0,i.useCallback)((e,t)=>{let r=[...k];l!==t&&l!==e&&(u(e),r.unshift({direction:e,part:[]})),x(r)},[k,l]);return(0,i.useEffect)(()=>{if(r(.5*v),a(t/20),k[0].part[0]===d){m(h+1);let e=[...k],t=e[0];if("up"===t.direction){let e=t.part[0]-20;e<0?t.part.unshift(e+400):t.part.unshift(e)}else if("right"===t.direction){let e=t.part[0]+1;e%20==0?t.part.unshift(e+-20):t.part.unshift(e)}else if("down"===t.direction){let e=t.part[0]+20;e>=400?t.part.unshift(e-400):t.part.unshift(e)}else if("left"===t.direction){let e=t.part[0]-1;e%20==19?t.part.unshift(e+20):t.part.unshift(e)}f.current=f.current-2,x(e),p(Math.floor(Math.random()*Math.floor(400)))}let e=[];for(let t=0;t<k.length;t++)e=[...e,...k[t].part];let s=k[0].part[0];if(e.filter(e=>e===s).length>=2&&g(!0),!_){let e=e=>{switch(e.code){case"ArrowUp":e.preventDefault(),j("up","down");break;case"ArrowRight":e.preventDefault(),j("right","left");break;case"ArrowDown":e.preventDefault(),j("down","up");break;case"ArrowLeft":e.preventDefault(),j("left","right")}};document.addEventListener("keydown",e);let t=setInterval(()=>{let e=[...k];for(let t=k.length-1;t>0;t--)if(0!==e[t].part.length){let r=e[t-1],s=e[t].part.shift();r.part.push(s)}else e.pop();e.map(e=>("right"===e.direction?e.part.map((t,r)=>{let s=t+1;return s%20==0?e.part[r]=s-20:e.part[r]=s}):"up"===e.direction?e.part.map((t,r)=>{let s=t-20;return s<0?e.part[r]=s+400:e.part[r]=s}):"left"===e.direction?e.part.map((t,r)=>{let s=t-1;return s%20==19?e.part[r]=s+20:e.part[r]=s}):"down"===e.direction&&e.part.map((t,r)=>
1{let s=t+20;return s>=400?e.part[r]=s-400:e.part[r]=s}),"")),x(e)},f.current);return()=>{clearInterval(t),document.removeEventListener("keydown",e)}}},[j,v,t,n,k,l,h,d,_]),(0,s.jsxs)("div",{className:c().snakeContainer,id:"snake-container",children:[(0,s.jsx)("div",{style:{marginLeft:"85px"},children:(0,s.jsxs)("div",{className:c().gameBorder,style:{width:t,height:t,backgroundColor:e.backgroundColor},children:[(()=>{let e=[];for(let t=0;t<400;t++){let r=!1,s=0;for(;s<k.length;){if(k[s].part.indexOf(t)>=0){r=!0;break}r=!1,s++}r?e.push("bang"):t===d?e.push("fruit"):e.push("")}return e})().map((t,r)=>(0,s.jsx)("div",{style:"bang"===t?{width:n,height:n,backgroundColor:e.color1}:"fruit"===t?{width:n,height:n,backgroundColor:e.color2}:{width:n,height:n}},"piece"+r)),_&&(0,s.jsxs)("div",{className:c().gameSplash,style:{height:t},children:[(0,s.jsx)("div",{children:"Game Over!"}),(0,s.jsx)("button",{className:o().defaultStyes,onClick:()=>C(),children:"Play Again"})]})]})}),(0,s.jsxs)("div",{className:c().snakeMobileButtons,style:{width:t},children:[(0,s.jsx)("div",{className:c().PointBar,children:(0,s.jsxs)("div",{className:c().score,style:{color:e.color2},children:["Score: ",h]})}),(0,s.jsxs)("div",{className:c().controls,children:[(0,s.jsx)("div",{children:(0,s.jsx)("button",{onClick:()=>j("up","down"),children:"↑"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("button",{onClick:()=>j("left","right"),children:"←"}),(0,s.jsx)("button",{onClick:()=>j("right","left"),children:"→"})]}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{onClick:()=>j("down","up"),children:"↓"})})]}),(0,s.jsxs)("div",{className:c().difficultySelector,children:[(0,s.jsx)("button",{className:`${o().button} ${"1"===b?o().buttonActive:""}`,onClick:()=>w("1"),children:"Level 1"}),(0,s.jsx)("button",{className:`${o().button} ${"2"===b?o().buttonActive:""}`,onClick:()=>w("2"),children:"Level 2"}),(0,s.jsx)("button",{className:`${o().button} ${"3"===b?o().buttonActive:""}`,onClick:()=>w("3"),children:"Level 3"}),(0,s.jsx)("button",{className:`${o().button} ${"4"===b?o().buttonActive:""}`,onClick:()=>w("4"),children:"Level 4"}),(0,s.jsx)("button",{className:`${o().button} ${"5"===b?o().buttonActive:""}`,onClick:()=>w("5"),children:"Level 5"})]})]})]})};var d=r(96465),p=r(45809);let h=()=>{let{hasRequiredPermission:e,isPermissionCheckLoading:t}=(0,p.a)({activityId:9201,context:"snake-game"}),[r,a]=(0,i.useState)(!1);(0,n.useRouter)(),(0,i.useEffect)(()=>{a(!0)},[]);let[o,l]=(0,i.useState)(0);return t||!e?null:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.N,{game:{id:1,name:"Snake",description:"A classic game of snake",instructions:"Use the arrow keys to move the snake around the screen. Eat the apples to grow longer. Avoid hitting yourself.",link:"/wellbeing/games/snake-game"},onRestart:()=>{l(e=>e+1)},onResume:()=>{}}),r&&(0,s.jsx)(u,{color1:"#41a019",color2:"#a01919",restart:o,backgroundColor:"#ebebeb"})]})}},45758:e=>{e.exports={button:"theme_button__uYvTy",dangerButton:"theme_dangerButton__XC1Ho",Gobutton:"theme_Gobutton__EtoGS",bigButton:"theme_bigButton__hJB9_",smallButton:"theme_smallButton___FMjH"}},45809:(e,t,r)=>{"use strict";r.d(t,{a:()=>l});var s=r(425),n=r(94285),i=r(87825),a=r(56666),o=r(88671);let l=({activityId:e,context:t})=>
1{let{hasRequiredPermission:r,isPermissionCheckLoading:l}=(0,i.K)({permissionRequirement:s.iX,context:t}),c=(0,o.u)(),u=(0,n.useRef)(!1),{userHasPermissions:d}=(0,a.v)(),p=d(s.Tv);return(0,n.useEffect)(()=>{!l&&r&&p&&!u.current&&(u.current=!0,c.mutate({activityId:e}))},[e,p,c,r,l]),{hasRequiredPermission:r,isPermissionCheckLoading:l}}},46675:(e,t,r)=>{"use strict";r.d(t,{V:()=>c});var s=r(23090),n=r(52111),i=r(96539),a=r(80013),o=r(67848);let l=async()=>{let{data:e}=await a.n.get("/users/current");return e},c=()=>(0,n.useQuery)(o.i.current,l,{staleTime:i.jU,refetchOnWindowFocus:!1,retry:(e,t)=>(!s.A.isAxiosError(t)||t.response?.status!==401)&&e<3})},56666:(e,t,r)=>{"use strict";r.d(t,{v:()=>a});var s=r(425),n=r(94285),i=r(46675);let a=()=>{let{data:e}=(0,i.V)(),t=e?.userType,r=e?.userPermissions??[],a=e?.userId,o=(0,n.useCallback)(t=>void 0!==e&&(0,s.ZU)({userPermissions:r,requiredPermission:t}),[e,r]),l=(0,n.useCallback)(({requiredPermissions:t,match:n})=>void 0!==e&&(0,s.kU)({userPermissions:r,requiredPermissions:t,match:n}),[e,r]);return{userType:t,userPermissions:r,userId:a,userHasPermission:o,userHasPermissions:l}}},67848:(e,t,r)=>{"use strict";r.d(t,{i:()=>n});var s=r(7123);let n={all:[s.B.OwnUser],current:[s.B.OwnUser,"current"]}},80013:(e,t,r)=>{"use strict";r.d(t,{n:()=>i});var s=r(23090),n=r(4705);let i=s.A.create({baseURL:"https://api.motion.org.uk",headers:{Accept:"application/json","Content-Type":"application/json"},withCredentials:!0});i.interceptors.request.use(e=>(e.baseURL="https://api.motion.org.uk",e.data instanceof FormData&&delete e.headers["Content-Type"],e)),i.interceptors.response.use(e=>e,e=>{let t=e?.response?.status===401,r=e?.response?.message==="token expired"||e?.response?.data==="Unauthorized"||e?.response?.data?.message==="Authentication required";return t&&r&&((0,n.xW)(window.location.pathname)||(window.location.href="/wellbeing/login")),Promise.reject(e)})},81957:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/wellbeing/games/snake-game",function(){return r(39878)}])},87825:(e,t,r)=>{"use strict";r.d(t,{K:()=>c});var s=r(65663),n=r(94285),i=r(56666),a=r(46675),o=r(29704),l=r(693);let c=({permissionRequirement:e,context:t})=>{let r=(0,s.useRouter)(),{isLoading:c}=(0,a.V)(),{userHasPermissions:u,userPermissions:d}=(0,i.v)(),p=u(e);return(0,n.useEffect)(()=>{if(!c&&!p){let e=(0,o.W)({userPermissions:d});r.replace(e).catch(r=>(0,l.X)({error:r,context:t,destination:e}))}},[t,p,c,e,r,d]),{hasRequiredPermission:p,isPermissionCheckLoading:c}}},88671:(e,t,r)=>{"use strict";r.d(t,{u:()=>a});var s=r(52111),n=r(7123),i=r(80013);let a=()=>{let e=(0,s.useQueryClient)();return(0,s.useMutation)(e=>i.n.post("/activities/complete",e),{onSuccess:()=>{e.invalidateQueries([n.B.CompletedActivities])}})}},96465:(e,t,r)=>{"use strict";r.d(t,{N:()=>h});var s=r(94513),n=r(27988),i=r.n(n),a=r(65663),o=r(94285),l=r(45758),c=r.n(l),u=r(88214),d=r(7150),p=r.n(d);let h=({game:e,onRestart:t,onResume:r})=>{let[n,l]=(0,o.useState)(!1),d=(0,a.useRouter)();return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:`${p().makeActive} ${n?p().activeButtonActive:""}`,children:(0,s.jsx)("button",{className:p().activeButton,onClick:()=>l(!n),children:">"})}),(0,s.jsxs)("div",{className:`${p().gameWindow} ${n?p().makeWindowActive:""}`,children:[(0,s.jsxs)("div",{className:p().text,children:[(0,s.jsx)(i(),{children:(0,s.jsx)("title",{children:`${e.name} | ${u.o.site_name??""}`})}),(0,s.jsx)("h1",{children:e.name}),(0,s.jsx)("p",{children:e.description}),(0,s.jsx)("p",{children:e.instructions})]}),(0,s.jsxs)("div",{className:p().buttons,children:[(0,s.jsx)("button",{className:`${c().bigButton} ${c().dangerButton}`,onClick:()=>d.push("/wellbeing/activities/?filter=Games"),children:"Exit"}),(0,s.jsx)("button",{className:`${c().bigButton} ${c().button}`,onClick:()=>{l(!1),t()},children:"Restart"}),(0,s.jsx)("button",{className:`${c().bigButton} ${c().Gobutton}`,onClick:()=>{l(!1),r()},children:"Resume"})]})]})]})}}},e=>{e.O(0,[3090,636,6593,8792],()=>e(e.s=81957)),_N_E=e.O()}]);

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.