@mblinkov/whats-missing 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/whats-missing.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(R,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],o):(R=typeof globalThis<"u"?globalThis:R||self,o(R.WhatsMissing={},R.React))})(this,(function(R,o){"use strict";var W={exports:{}},L={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var
|
|
9
|
+
*/var oe;function ue(){if(oe)return L;oe=1;var l=Symbol.for("react.transitional.element"),m=Symbol.for("react.fragment");function d(a,n,f){var j=null;if(f!==void 0&&(j=""+f),n.key!==void 0&&(j=""+n.key),"key"in n){f={};for(var T in n)T!=="key"&&(f[T]=n[T])}else f=n;return n=f.ref,{$$typeof:l,type:a,key:j,ref:n!==void 0?n:null,props:f}}return L.Fragment=m,L.jsx=d,L.jsxs=d,L}var Y={};/**
|
|
10
10
|
* @license React
|
|
11
11
|
* react-jsx-runtime.development.js
|
|
12
12
|
*
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This source code is licensed under the MIT license found in the
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
|
17
|
-
*/var
|
|
17
|
+
*/var ce;function pe(){return ce||(ce=1,process.env.NODE_ENV!=="production"&&(function(){function l(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===b?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case O:return"Fragment";case F:return"Profiler";case M:return"StrictMode";case Q:return"Suspense";case B:return"SuspenseList";case $:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case _:return"Portal";case J:return(e.displayName||"Context")+".Provider";case Z:return(e._context.displayName||"Context")+".Consumer";case D:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case q:return r=e.displayName||null,r!==null?r:l(e.type)||"Memo";case C:r=e._payload,e=e._init;try{return l(e(r))}catch{}}return null}function m(e){return""+e}function d(e){try{m(e);var r=!1}catch{r=!0}if(r){r=console;var c=r.error,u=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return c.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",u),m(e)}}function a(e){if(e===O)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===C)return"<...>";try{var r=l(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function n(){var e=N.A;return e===null?null:e.getOwner()}function f(){return Error("react-stack-top-frame")}function j(e){if(P.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function T(e,r){function c(){v||(v=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}c.isReactWarning=!0,Object.defineProperty(e,"key",{get:c,configurable:!0})}function w(){var e=l(this.type);return se[e]||(se[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function X(e,r,c,u,x,h,z,H){return c=h.ref,e={$$typeof:k,type:e,key:r,props:h,_owner:x},(c!==void 0?c:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:w}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:z}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:H}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function y(e,r,c,u,x,h,z,H){var g=r.children;if(g!==void 0)if(u)if(ee(g)){for(u=0;u<g.length;u++)K(g[u]);Object.freeze&&Object.freeze(g)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else K(g);if(P.call(r,"key")){g=l(e);var S=Object.keys(r).filter(function(t){return t!=="key"});u=0<S.length?"{key: someKey, "+S.join(": ..., ")+": ...}":"{key: someKey}",G[g+u]||(S=0<S.length?"{"+S.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
18
18
|
let props = %s;
|
|
19
19
|
<%s {...props} />
|
|
20
20
|
React keys must be passed directly to JSX without using spread:
|
|
21
21
|
let props = %s;
|
|
22
|
-
<%s key={someKey} {...props} />`,u,g,k,g),G[g+u]=!0)}if(g=null,c!==void 0&&(d(c),g=""+c),j(r)&&(d(r.key),g=""+r.key),"key"in r){c={};for(var V in r)V!=="key"&&(c[V]=r[V])}else c=r;return g&&T(c,typeof e=="function"?e.displayName||e.name||"Unknown":e),W(e,g,h,x,n(),c,z,H)}function X(e){typeof e=="object"&&e!==null&&e.$$typeof===S&&e._store&&(e._store.validated=1)}var p=a,S=Symbol.for("react.transitional.element"),K=Symbol.for("react.portal"),O=Symbol.for("react.fragment"),M=Symbol.for("react.strict_mode"),F=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),J=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),Q=Symbol.for("react.suspense"),B=Symbol.for("react.suspense_list"),Z=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),q=Symbol.for("react.activity"),b=Symbol.for("react.client.reference"),N=p.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,P=Object.prototype.hasOwnProperty,$=Array.isArray,I=console.createTask?console.createTask:function(){return null};p={react_stack_bottom_frame:function(e){return e()}};var v,ee={},U=p.react_stack_bottom_frame.bind(p,f)(),se=I(o(f)),G={};Y.Fragment=O,Y.jsx=function(e,r,c,u,x){var h=1e4>N.recentlyCreatedOwnerStacks++;return y(e,r,c,!1,u,x,h?Error("react-stack-top-frame"):U,h?I(o(e)):se)},Y.jsxs=function(e,r,c,u,x){var h=1e4>N.recentlyCreatedOwnerStacks++;return y(e,r,c,!0,u,x,h?Error("react-stack-top-frame"):U,h?I(o(e)):se)}})()),Y}var oe;function pe(){return oe||(oe=1,process.env.NODE_ENV==="production"?R.exports=de():R.exports=ue()),R.exports}var s=pe();const ge="data:image/png;base64,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",ce={animals:["src/assets/Animals/bear.jpg","src/assets/Animals/cat.png","src/assets/Animals/crocodile.jpg","src/assets/Animals/dolphin.jpg","src/assets/Animals/elephant.jpg","src/assets/Animals/fox.jpg","src/assets/Animals/giraffe.jpg","src/assets/Animals/horse.jpg","src/assets/Animals/kangaroo.jpg","src/assets/Animals/lion.jpg","src/assets/Animals/monkey.jpg","src/assets/Animals/owl.jpg","src/assets/Animals/panda.jpg","src/assets/Animals/penguin.jpg","src/assets/Animals/rabbit.jpg","src/assets/Animals/squirrel.jpg","src/assets/Animals/tiger.png","src/assets/Animals/tortoise.jpg","src/assets/Animals/wolf.png","src/assets/Animals/zebra.jpg"],food:["src/assets/Food/apple.jpg","src/assets/Food/banana.jpg","src/assets/Food/bread.jpg","src/assets/Food/carrot.jpg","src/assets/Food/cake.jpg","src/assets/Food/pizza.jpg","src/assets/Food/rice.jpg","src/assets/Food/burger.jpg","src/assets/Food/cheese.jpg","src/assets/Food/chocolate.jpg","src/assets/Food/strawberry.jpg","src/assets/Food/orange.jpg","src/assets/Food/pear.jpg","src/assets/Food/watermelon.jpg","src/assets/Food/ice cream.jpg","src/assets/Food/soup.jpg","src/assets/Food/chicken.jpg","src/assets/Food/fish.jpg","src/assets/Food/fries.jpg","src/assets/Food/tomato.jpg","src/assets/Food/milk.jpg","src/assets/Food/grapes.jpg","src/assets/Food/corn.jpg","src/assets/Food/donut.jpg","src/assets/Food/sandwich.jpg"],toys:["src/assets/Toys/ball.jpg","src/assets/Toys/balloon.jpg","src/assets/Toys/blocks.jpg","src/assets/Toys/car.jpg","src/assets/Toys/doll.jpg","src/assets/Toys/drum.jpg","src/assets/Toys/guitar.jpg","src/assets/Toys/jump rope.jpg","src/assets/Toys/kite.jpg","src/assets/Toys/paints.jpg","src/assets/Toys/plane.jpg","src/assets/Toys/puzzle.jpg","src/assets/Toys/scooter.jpg","src/assets/Toys/rocket.jpg","src/assets/Toys/skateboard.jpg","src/assets/Toys/slide.jpg","src/assets/Toys/teddy bear.jpg","src/assets/Toys/train.jpg","src/assets/Toys/crayons.jpg","src/assets/Toys/yo-yo.jpg"]},le=l=>(l.split("/").pop()||"").replace(/\.(jpg|png|jpeg|webp)$/i,"").toLowerCase(),me=(l,m)=>{const d=Array.from({length:l.length+1},()=>Array(m.length+1).fill(0));for(let o=0;o<=l.length;o++)d[o][0]=o;for(let o=0;o<=m.length;o++)d[0][o]=o;for(let o=1;o<=l.length;o++)for(let n=1;n<=m.length;n++)d[o][n]=l[o-1]===m[n-1]?d[o-1][n-1]:Math.min(d[o-1][n-1],d[o][n-1],d[o-1][n])+1;return d[l.length][m.length]};function fe(){const[l,m]=a.useState(null),[d,o]=a.useState([]),[n,f]=a.useState(4),[j,T]=a.useState(!1),[w,W]=a.useState(1),[y,X]=a.useState(null),[p,S]=a.useState("ready"),[K,O]=a.useState(3),[M,F]=a.useState(7),[_,J]=a.useState(0),[D,Q]=a.useState(!1),[B,Z]=a.useState(20),[C,q]=a.useState(""),[b,N]=a.useState(!1),[P,$]=a.useState(!1),[I,v]=a.useState(null),[ee,U]=a.useState([]),[se,G]=a.useState([]),[e,r]=a.useState(!1);a.useEffect(()=>{const t=()=>r(window.innerWidth<768);return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);const c=t=>[...t].sort(()=>Math.random()-.5).slice(0,6),u=()=>{if(!l)return;const t=c(ce[l]);o(t),T(!0),Q(!1),W(1),J(0),U([]),G([]),x(t,[],!0)},x=(t=d,i=se,E=!1)=>{const A=c(t.length?t:ce[l]);let te=Math.floor(Math.random()*A.length),re=A[te],ie=0;for(;i.includes(re)&&ie<20;)te=Math.floor(Math.random()*A.length),re=A[te],ie++;o(A),X(te),G([...i,re]),N(!1),q(""),Z(20),v(null),E?(S("ready"),O(3),F(7)):(S("memorize"),F(7))};a.useEffect(()=>{if(!(!j||D||b)){if(p==="ready")if(K<=0)S("memorize"),F(7);else{const t=setTimeout(()=>O(i=>i-1),1e3);return()=>clearTimeout(t)}if(p==="memorize")if(M<=0)S("guess");else{const t=setTimeout(()=>F(i=>i-1),1e3);return()=>clearTimeout(t)}if(p==="guess"){if(B<=0){N(!0),v("wrong");const i=le(d[y]);U(E=>[...E,{round:w,answer:C,correct:i,result:"wrong"}]);return}const t=setTimeout(()=>Z(i=>i-1),1e3);return()=>clearTimeout(t)}}},[p,K,M,B,j,D,b,d,y,w,C]);const h=()=>{if(y===null||P)return;const t=le(d[y]),i=C.toLowerCase().trim();let E="wrong";i===t?(J(A=>A+1),v("correct"),E="correct"):me(i,t)===1?(J(A=>A+.5),v("almost"),E="almost"):(v("wrong"),E="wrong"),U(A=>[...A,{round:w,answer:i,correct:t,result:E}]),$(!0),setTimeout(()=>{$(!1),N(!0)},600)},z=()=>{w<n?(W(t=>t+1),x()):Q(!0)},H=()=>{T(!1),Q(!1),m(null)},g=52,k=28,V=()=>s.jsx("div",{style:{position:"fixed",top:16,left:20,zIndex:1e3},children:s.jsx("img",{src:ge,alt:"SPEAKID Logo",style:{height:"clamp(28px, 5vw, 40px)",width:"auto"}})});return s.jsxs(s.Fragment,{children:[!e&&s.jsx(V,{}),!l&&!j&&s.jsxs("div",{className:"centerScreen fade",children:[s.jsx("h1",{className:"headline1",children:"WHAT'S MISSING?"}),s.jsx("p",{className:"bodyM",children:"Select a theme:"}),s.jsxs("div",{style:{display:"flex",gap:16},children:[s.jsx("button",{className:"button",onClick:()=>m("animals"),children:"🐶 Animals"}),s.jsx("button",{className:"button",onClick:()=>m("food"),children:"🍎 Food"}),s.jsx("button",{className:"button",onClick:()=>m("toys"),children:"🧸 Toys"})]}),s.jsxs("div",{style:{marginTop:24},children:[s.jsx("p",{className:"bodyS",children:"Choose number of rounds:"}),s.jsx("div",{style:{display:"flex",gap:12,marginTop:8},children:[3,4,5].map(t=>s.jsx("button",{className:"button button--ghost",style:{background:n===t?"#333":void 0,color:n===t?"#fff":void 0},onClick:()=>f(t),children:t},t))})]})]}),l&&!j&&s.jsxs("div",{className:"centerScreen fade",children:[s.jsxs("h1",{className:"headline1",children:["Theme selected: ",l]}),s.jsxs("p",{className:"bodyM",children:["Rounds: ",n]}),s.jsx("button",{className:"button",onClick:u,children:"▶ Start game"})]}),D&&s.jsxs("div",{className:"centerScreen fade",children:[s.jsx("h1",{className:"headline1",children:"Results"}),s.jsxs("h2",{className:"headline3",children:["Your score: ",_," / ",n]}),s.jsxs("table",{style:{marginTop:20,borderCollapse:"collapse"},children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bodyM",style:{textAlign:"left"},children:[s.jsx("th",{style:{padding:"6px 12px"},children:"Round"}),s.jsx("th",{style:{padding:"6px 12px"},children:"Your Answer"}),s.jsx("th",{style:{padding:"6px 12px"},children:"Correct"}),s.jsx("th",{style:{padding:"6px 12px"},children:"Result"})]})}),s.jsx("tbody",{children:ee.map((t,i)=>s.jsxs("tr",{children:[s.jsx("td",{style:{padding:"6px 12px"},children:t.round}),s.jsx("td",{style:{padding:"6px 12px"},children:t.answer||"—"}),s.jsx("td",{style:{padding:"6px 12px"},children:t.correct}),s.jsxs("td",{style:{padding:"6px 12px"},children:[t.result==="correct"&&s.jsx("span",{style:{color:"green"},children:"✔ Correct"}),t.result==="almost"&&s.jsx("span",{style:{color:"orange"},children:"◐ Almost (0.5)"}),t.result==="wrong"&&s.jsx("span",{style:{color:"red"},children:"✘ Wrong"})]})]},i))})]}),s.jsxs("div",{style:{display:"flex",gap:12,marginTop:24},children:[s.jsx("button",{className:"button",onClick:u,children:"🔁 Play again"}),s.jsx("button",{className:"button",onClick:H,children:"⬅️ Choose theme"})]})]}),j&&!D&&s.jsxs("div",{className:"gameLayout fade",children:[s.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"center"},children:[s.jsx("div",{className:"progressContainer",children:s.jsx("div",{className:"progressBar",style:{width:`${w/n*100}%`}})}),s.jsxs("div",{style:{minHeight:g,display:"flex",alignItems:"center"},children:[p==="ready"&&s.jsx("h1",{className:"headline1",style:{color:"#ec4c44"},children:"GET READY"}),(p==="memorize"||p==="guess")&&s.jsxs("h2",{className:"headline3",children:["Round ",w," of ",n," — Score: ",_]})]}),s.jsxs("div",{style:{minHeight:k,display:"flex",alignItems:"center"},children:[p==="ready"&&s.jsx("div",{className:"spin",style:{fontSize:36},children:"⏳"}),p==="memorize"&&s.jsxs("p",{className:"bodyM",style:{color:"#10b981"},children:["MEMORIZE ",s.jsxs("span",{className:"pulse",children:["(",M,")"]})]}),p==="guess"&&!b&&s.jsxs("p",{className:"bodyM",children:["⏳ Time left: ",B,"s"]})]})]}),p!=="ready"&&s.jsx("div",{className:"grid",children:d.map((t,i)=>{const E=y===i&&p==="guess"&&!b;return s.jsx("div",{className:`card ${E&&P?"hop":""} ${I==="correct"&&y===i?"correct":""} ${I==="wrong"&&y===i?"wrong":""}`,children:(!E||b)&&s.jsx("img",{src:t,alt:`img-${i}`})},i)})}),s.jsxs("div",{style:{marginTop:16,height:80},children:[p==="guess"&&!b&&s.jsxs("div",{children:[s.jsx("input",{type:"text",placeholder:"Type the missing word",value:C,onChange:t=>q(t.target.value),className:"bodyM",style:{padding:"6px 12px",borderRadius:6,border:"1px solid #ccc"}}),s.jsx("button",{className:"button",onClick:h,disabled:P,style:{marginLeft:8},children:P?"...":"Check"})]}),b&&s.jsx("div",{children:s.jsx("button",{className:"button",onClick:z,children:"Next round"})})]})]})]})}return fe}));
|
|
22
|
+
<%s key={someKey} {...props} />`,u,g,S,g),G[g+u]=!0)}if(g=null,c!==void 0&&(d(c),g=""+c),j(r)&&(d(r.key),g=""+r.key),"key"in r){c={};for(var V in r)V!=="key"&&(c[V]=r[V])}else c=r;return g&&T(c,typeof e=="function"?e.displayName||e.name||"Unknown":e),X(e,g,h,x,n(),c,z,H)}function K(e){typeof e=="object"&&e!==null&&e.$$typeof===k&&e._store&&(e._store.validated=1)}var p=o,k=Symbol.for("react.transitional.element"),_=Symbol.for("react.portal"),O=Symbol.for("react.fragment"),M=Symbol.for("react.strict_mode"),F=Symbol.for("react.profiler"),Z=Symbol.for("react.consumer"),J=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),Q=Symbol.for("react.suspense"),B=Symbol.for("react.suspense_list"),q=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),$=Symbol.for("react.activity"),b=Symbol.for("react.client.reference"),N=p.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,P=Object.prototype.hasOwnProperty,ee=Array.isArray,I=console.createTask?console.createTask:function(){return null};p={react_stack_bottom_frame:function(e){return e()}};var v,se={},U=p.react_stack_bottom_frame.bind(p,f)(),te=I(a(f)),G={};Y.Fragment=O,Y.jsx=function(e,r,c,u,x){var h=1e4>N.recentlyCreatedOwnerStacks++;return y(e,r,c,!1,u,x,h?Error("react-stack-top-frame"):U,h?I(a(e)):te)},Y.jsxs=function(e,r,c,u,x){var h=1e4>N.recentlyCreatedOwnerStacks++;return y(e,r,c,!0,u,x,h?Error("react-stack-top-frame"):U,h?I(a(e)):te)}})()),Y}var le;function ge(){return le||(le=1,process.env.NODE_ENV==="production"?W.exports=ue():W.exports=pe()),W.exports}var s=ge();const me="data:image/png;base64,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",ne={animals:["src/assets/Animals/bear.jpg","src/assets/Animals/cat.png","src/assets/Animals/crocodile.jpg","src/assets/Animals/dolphin.jpg","src/assets/Animals/elephant.jpg","src/assets/Animals/fox.jpg","src/assets/Animals/giraffe.jpg","src/assets/Animals/horse.jpg","src/assets/Animals/kangaroo.jpg","src/assets/Animals/lion.jpg","src/assets/Animals/monkey.jpg","src/assets/Animals/owl.jpg","src/assets/Animals/panda.jpg","src/assets/Animals/penguin.jpg","src/assets/Animals/rabbit.jpg","src/assets/Animals/squirrel.jpg","src/assets/Animals/tiger.png","src/assets/Animals/tortoise.jpg","src/assets/Animals/wolf.png","src/assets/Animals/zebra.jpg"],food:["src/assets/Food/apple.jpg","src/assets/Food/banana.jpg","src/assets/Food/bread.jpg","src/assets/Food/carrot.jpg","src/assets/Food/cake.jpg","src/assets/Food/pizza.jpg","src/assets/Food/rice.jpg","src/assets/Food/burger.jpg","src/assets/Food/cheese.jpg","src/assets/Food/chocolate.jpg","src/assets/Food/strawberry.jpg","src/assets/Food/orange.jpg","src/assets/Food/pear.jpg","src/assets/Food/watermelon.jpg","src/assets/Food/ice cream.jpg","src/assets/Food/soup.jpg","src/assets/Food/chicken.jpg","src/assets/Food/fish.jpg","src/assets/Food/fries.jpg","src/assets/Food/tomato.jpg","src/assets/Food/milk.jpg","src/assets/Food/grapes.jpg","src/assets/Food/corn.jpg","src/assets/Food/donut.jpg","src/assets/Food/sandwich.jpg"],toys:["src/assets/Toys/ball.jpg","src/assets/Toys/balloon.jpg","src/assets/Toys/blocks.jpg","src/assets/Toys/car.jpg","src/assets/Toys/doll.jpg","src/assets/Toys/drum.jpg","src/assets/Toys/guitar.jpg","src/assets/Toys/jump rope.jpg","src/assets/Toys/kite.jpg","src/assets/Toys/paints.jpg","src/assets/Toys/plane.jpg","src/assets/Toys/puzzle.jpg","src/assets/Toys/scooter.jpg","src/assets/Toys/rocket.jpg","src/assets/Toys/skateboard.jpg","src/assets/Toys/slide.jpg","src/assets/Toys/teddy bear.jpg","src/assets/Toys/train.jpg","src/assets/Toys/crayons.jpg","src/assets/Toys/yo-yo.jpg"]},ie=l=>(l.split("/").pop()||"").replace(/\.(jpg|png|jpeg|webp)$/i,"").toLowerCase(),fe=(l,m)=>{const d=Array.from({length:l.length+1},()=>Array(m.length+1).fill(0));for(let a=0;a<=l.length;a++)d[a][0]=a;for(let a=0;a<=m.length;a++)d[0][a]=a;for(let a=1;a<=l.length;a++)for(let n=1;n<=m.length;n++)d[a][n]=l[a-1]===m[n-1]?d[a-1][n-1]:Math.min(d[a-1][n-1],d[a][n-1],d[a-1][n])+1;return d[l.length][m.length]};function he(){const[l,m]=o.useState(null),[d,a]=o.useState([]),[n,f]=o.useState(4),[j,T]=o.useState(!1),[w,X]=o.useState(1),[y,K]=o.useState(null),[p,k]=o.useState("ready"),[_,O]=o.useState(3),[M,F]=o.useState(7),[Z,J]=o.useState(0),[D,Q]=o.useState(!1),[B,q]=o.useState(20),[C,$]=o.useState(""),[b,N]=o.useState(!1),[P,ee]=o.useState(!1),[I,v]=o.useState(null),[se,U]=o.useState([]),[te,G]=o.useState([]),[e,r]=o.useState(!1);o.useEffect(()=>{const t=()=>r(window.innerWidth<768);return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);const c=t=>[...t].sort(()=>Math.random()-.5).slice(0,6),u=()=>{if(!l)return;const t=c(ne[l]);a(t),T(!0),Q(!1),X(1),J(0),U([]),G([]),x(t,[],!0)},x=(t=d,i=te,E=!1)=>{const A=c(t.length?t:ne[l]);let re=Math.floor(Math.random()*A.length),ae=A[re],de=0;for(;i.includes(ae)&&de<20;)re=Math.floor(Math.random()*A.length),ae=A[re],de++;a(A),K(re),G([...i,ae]),N(!1),$(""),q(20),v(null),E?(k("ready"),O(3),F(7)):(k("memorize"),F(7))};o.useEffect(()=>{if(!(!j||D||b)){if(p==="ready")if(_<=0)k("memorize"),F(7);else{const t=setTimeout(()=>O(i=>i-1),1e3);return()=>clearTimeout(t)}if(p==="memorize")if(M<=0)k("guess");else{const t=setTimeout(()=>F(i=>i-1),1e3);return()=>clearTimeout(t)}if(p==="guess"){if(B<=0){N(!0),v("wrong");const i=ie(d[y]);U(E=>[...E,{round:w,answer:C,correct:i,result:"wrong"}]);return}const t=setTimeout(()=>q(i=>i-1),1e3);return()=>clearTimeout(t)}}},[p,_,M,B,j,D,b,d,y,w,C]);const h=()=>{if(y===null||P)return;const t=ie(d[y]),i=C.toLowerCase().trim();let E="wrong";i===t?(J(A=>A+1),v("correct"),E="correct"):fe(i,t)===1?(J(A=>A+.5),v("almost"),E="almost"):(v("wrong"),E="wrong"),U(A=>[...A,{round:w,answer:i,correct:t,result:E}]),ee(!0),setTimeout(()=>{ee(!1),N(!0)},600)},z=()=>{w<n?(X(t=>t+1),x()):Q(!0)},H=()=>{T(!1),Q(!1),m(null)},g=52,S=28,V=()=>s.jsx("div",{style:{position:"fixed",top:16,left:20,zIndex:1e3},children:s.jsx("img",{src:me,alt:"SPEAKID Logo",style:{height:"clamp(28px, 5vw, 40px)",width:"auto"}})});return s.jsxs(s.Fragment,{children:[!e&&s.jsx(V,{}),!l&&!j&&s.jsxs("div",{className:"centerScreen fade",children:[s.jsx("h1",{className:"headline1",children:"WHAT'S MISSING?"}),s.jsx("p",{className:"bodyM",children:"Select a theme:"}),s.jsxs("div",{style:{display:"flex",gap:16},children:[s.jsx("button",{className:"button",onClick:()=>m("animals"),children:"🐶 Animals"}),s.jsx("button",{className:"button",onClick:()=>m("food"),children:"🍎 Food"}),s.jsx("button",{className:"button",onClick:()=>m("toys"),children:"🧸 Toys"})]}),s.jsxs("div",{style:{marginTop:24},children:[s.jsx("p",{className:"bodyS",children:"Choose number of rounds:"}),s.jsx("div",{style:{display:"flex",gap:12,marginTop:8},children:[3,4,5].map(t=>s.jsx("button",{className:"button button--ghost",style:{background:n===t?"#333":void 0,color:n===t?"#fff":void 0},onClick:()=>f(t),children:t},t))})]})]}),l&&!j&&s.jsxs("div",{className:"centerScreen fade",children:[s.jsxs("h1",{className:"headline1",children:["Theme selected: ",l]}),s.jsxs("p",{className:"bodyM",children:["Rounds: ",n]}),s.jsx("button",{className:"button",onClick:u,children:"▶ Start game"})]}),D&&s.jsxs("div",{className:"centerScreen fade",children:[s.jsx("h1",{className:"headline1",children:"Results"}),s.jsxs("h2",{className:"headline3",children:["Your score: ",Z," / ",n]}),s.jsxs("table",{style:{marginTop:20,borderCollapse:"collapse"},children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bodyM",style:{textAlign:"left"},children:[s.jsx("th",{style:{padding:"6px 12px"},children:"Round"}),s.jsx("th",{style:{padding:"6px 12px"},children:"Your Answer"}),s.jsx("th",{style:{padding:"6px 12px"},children:"Correct"}),s.jsx("th",{style:{padding:"6px 12px"},children:"Result"})]})}),s.jsx("tbody",{children:se.map((t,i)=>s.jsxs("tr",{children:[s.jsx("td",{style:{padding:"6px 12px"},children:t.round}),s.jsx("td",{style:{padding:"6px 12px"},children:t.answer||"—"}),s.jsx("td",{style:{padding:"6px 12px"},children:t.correct}),s.jsxs("td",{style:{padding:"6px 12px"},children:[t.result==="correct"&&s.jsx("span",{style:{color:"green"},children:"✔ Correct"}),t.result==="almost"&&s.jsx("span",{style:{color:"orange"},children:"◐ Almost (0.5)"}),t.result==="wrong"&&s.jsx("span",{style:{color:"red"},children:"✘ Wrong"})]})]},i))})]}),s.jsxs("div",{style:{display:"flex",gap:12,marginTop:24},children:[s.jsx("button",{className:"button",onClick:u,children:"🔁 Play again"}),s.jsx("button",{className:"button",onClick:H,children:"⬅️ Choose theme"})]})]}),j&&!D&&s.jsxs("div",{className:"gameLayout fade",children:[s.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"center"},children:[s.jsx("div",{className:"progressContainer",children:s.jsx("div",{className:"progressBar",style:{width:`${w/n*100}%`}})}),s.jsxs("div",{style:{minHeight:g,display:"flex",alignItems:"center"},children:[p==="ready"&&s.jsx("h1",{className:"headline1",style:{color:"#ec4c44"},children:"GET READY"}),(p==="memorize"||p==="guess")&&s.jsxs("h2",{className:"headline3",children:["Round ",w," of ",n," — Score: ",Z]})]}),s.jsxs("div",{style:{minHeight:S,display:"flex",alignItems:"center"},children:[p==="ready"&&s.jsx("div",{className:"spin",style:{fontSize:36},children:"⏳"}),p==="memorize"&&s.jsxs("p",{className:"bodyM",style:{color:"#10b981"},children:["MEMORIZE ",s.jsxs("span",{className:"pulse",children:["(",M,")"]})]}),p==="guess"&&!b&&s.jsxs("p",{className:"bodyM",children:["⏳ Time left: ",B,"s"]})]})]}),p!=="ready"&&s.jsx("div",{className:"grid",children:d.map((t,i)=>{const E=y===i&&p==="guess"&&!b;return s.jsx("div",{className:`card ${E&&P?"hop":""} ${I==="correct"&&y===i?"correct":""} ${I==="wrong"&&y===i?"wrong":""}`,children:(!E||b)&&s.jsx("img",{src:t,alt:`img-${i}`})},i)})}),s.jsxs("div",{style:{marginTop:16,height:80},children:[p==="guess"&&!b&&s.jsxs("div",{children:[s.jsx("input",{type:"text",placeholder:"Type the missing word",value:C,onChange:t=>$(t.target.value),className:"bodyM",style:{padding:"6px 12px",borderRadius:6,border:"1px solid #ccc"}}),s.jsx("button",{className:"button",onClick:h,disabled:P,style:{marginLeft:8},children:P?"...":"Check"})]}),b&&s.jsx("div",{children:s.jsx("button",{className:"button",onClick:z,children:"Next round"})})]})]})]})}R.Game=he,R.themes=ne,Object.defineProperty(R,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mblinkov/whats-missing",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/whats-missing.umd.js",
|
|
6
6
|
"module": "dist/whats-missing.es.js",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"lint": "eslint .",
|
|
16
16
|
"preview": "vite preview"
|
|
17
17
|
},
|
|
18
|
-
"
|
|
19
|
-
"react": "^19.
|
|
20
|
-
"react-dom": "^19.
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
20
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@eslint/js": "^9.33.0",
|
|
@@ -33,7 +33,12 @@
|
|
|
33
33
|
"vite": "^7.1.2"
|
|
34
34
|
},
|
|
35
35
|
"description": "A memory game What's Missing built with React",
|
|
36
|
-
"keywords": [
|
|
36
|
+
"keywords": [
|
|
37
|
+
"game",
|
|
38
|
+
"react",
|
|
39
|
+
"memory",
|
|
40
|
+
"speakid"
|
|
41
|
+
],
|
|
37
42
|
"author": "Mikhail Blinkov",
|
|
38
43
|
"license": "MIT"
|
|
39
44
|
}
|