1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[79],{1191:function(e,n,r){"use strict";r.d(n,{Z:function(){return i}});var t=r(2784),o=r(2589);function i(e){var n=e.activityKey,r=e.classroomId,i=(0,t.useRef)(Date.now()),a=(0,t.useRef)(!0),s=(0,t.useRef)(0),c=(0,t.useRef)(0),l=(0,t.useRef)(0),u=(0,t.useRef)(null),d=o.S.useMutation(["user.logActivityTime"]).mutate;return(0,t.useEffect)((function(){if(Number.isFinite(r)&&!(r<=0)&&n){i.current=Date.now(),a.current=!0,s.current=0,c.current=0,l.current=0;var e=function(){var e=function(){var e=Date.now(),n=a.current?e-i.current:0;return Math.floor((s.current+n)/1e3)}()-c.current-l.current;e<=0||(l.current+=e,d({classroomId:r,activityKey:n,seconds:e},{onSuccess:function(){c.current+=e,l.current=Math.max(0,l.current-e)},onError:function(n){console.error("Failed to log activity time",n),l.current=Math.max(0,l.current-e)}}))},t=function(){var n=Date.now();"hidden"===document.visibilityState?(a.current&&(s.current+=n-i.current,a.current=!1),e()):a.current||(i.current=n,a.current=!0)},o=function(){var e=Date.now();a.current&&(s.current+=e-i.current,a.current=!1);var t=Math.floor(s.current/1e3)-c.current-l.current;t>0&&function(e){if(!e||e<=0)return!1;var t=new Blob([JSON.stringify({0:{classroomId:r,activityKey:n,seconds:Math.round(e)}})],{type:"application/json"});try{var o;return Boolean(null===(o=navigator.sendBeacon)||void 0===o?void 0:o.call(navigator,"/api/trpc/user.logActivityTime?batch=1",t))}catch(i){return console.error("Beacon failed",i),!1}}(t)&&(c.current+=t)};return document.addEventListener("visibilitychange",t),window.addEventListener("pagehide",o),u.current=window.setInterval(e,5e3),function(){document.removeEventListener("visibilitychange",t),window.removeEventListener("pagehide",o),u.current&&clearInterval(u.current),a.current&&(s.current+=Date.now()-i.current,a.current=!1);var e=Math.floor(s.current/1e3)-c.current-l.current;e>0&&d({classroomId:r,activityKey:n,seconds:e})}}}),[n,r]),null}},8760:function(e,n,r){"use strict";var t=r(2322),o=r(2784);n.Z=function(e){var n=e.imgName,r=e.startOpen,i=e.morphoImage,a=(0,o.useState)(r),s=a[0],c=a[1];return(0,t.jsx)("img",{src:i?n:"/overlays/"+n,style:{position:"absolute",bottom:i?"50px":"25px",left:i?"25px":"auto",right:i?"auto":"25px",height:s?"70vh":"10vh",objectFit:"cover",zIndex:10,transitionDuration:"0.5s",cursor:s?"zoom-out":"zoom-in",border:"2px solid #088585"},onClick:function(){return c(!s)}})}},2807:function(e,n,r){"use strict";r.d(n,{Z:function(){return J}});var t=r(865),o=r(6670),i=r(2228),a=r(930),s=r(1899),c=r(2322),l=r(2784),u=r(6766),d=r.n(u),f=r(2835),p=r(3750),g=r(5117),m=r(2589),h=r(7973),v=r(3575),x=r(581),y=r(4297),w=r(5460),b=r(3725),_=r(4756),Z=r(5626),j=r(7392),C=r(7841),I=r(9454);function S(){var e=(0,i.Z)(["\n box-sizing: border-box;\n min-height: 40vh;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n max-width: 100%;\n gap: 6px;\n padding: 0 8px;\n"]);return S=function(){return e},e}function k(){var e=(0,i.Z)(["\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n flex: 1 1 0;\n min-width: 0;\n max-width: 100%;\n"]);return k=function(){return e},e}function E(){var e=(0,i.Z)(["\n flex: 0 0 auto;\n min-width: 10px;\n @media (max-width: 1024px) {\n min-width: 10px;\n }\n\n @media (max-width: 768px) {\n min-width: 5px;\n }\n padding: 10px 6px;\n"]);return E=function(){return e},e}function P(){var e=(0,i.Z)(["\n flex: 1 1 auto;\n min-width: 0;\n max-width: 100%;\n @media (max-width: 1024px) {\n min-width: 0;\n max-width: 190px;\n }\n\n @media (max-width: 768px) {\n min-width: 0;\n max-width: 170px;\n }\n"]);return P=function(){return e},e}var N=b.Z.div(S()),O=b.Z.div(k()),M=b.Z.div(E()),A=b.Z.div(P()),L=function(e){(0,y.Z)(r,e);var n=(0,w.Z)(r);function r(){var e;return(0,x.Z)(this,r),(e=n.apply(this,arguments)).state={fossilMap:e.props.initial},e.answerCategories=[],e.handleOnClick=function(){var n=0;e.answerCategories=[];var r=0,i=(0,t.Z)({},e.state.fossilMap);
1e.props.categories.forEach((function(a){e.answerCategories.push([]),i[a]=i[a].map((function(i){var a=i.imagePath.replace("url(","").replace(")","").split("/"),s=a[a.length-1].trim().replaceAll(" ",""),c=i[e.props.propertyType],l=e.props._shapes[n];if(null!=c&&null!=l?String(c).trim().replace(/\s+/g," ")===String(l).trim().replace(/\s+/g," "):c===l){if(e.answerCategories[n].push(1),r++,e.props.folderHint){var u,d,f=(0,I.Kk)("".concat(e.props.topImageFolder,"/").concat(s),null!==(d=null!==(u=e.props.fossilType)&&void 0!==u?u:e.props.topImageFolder)&&void 0!==d?d:"foraminifera");return(0,o.Z)((0,t.Z)({},i),{imagePath:f?"url(".concat(f,")"):i.imagePath})}return i}if(e.answerCategories[n].push(0),e.props.folderHint){var p,g,m=(0,I.Kk)("".concat(e.props.folderHint,"/").concat(s),null!==(g=null!==(p=e.props.fossilType)&&void 0!==p?p:e.props.topImageFolder)&&void 0!==g?g:"foraminifera");return(0,o.Z)((0,t.Z)({},i),{imagePath:m?"url(".concat(m,")"):i.imagePath})}return i})),n++})),e.setState({fossilMap:i},(function(){e.props.checkRound(r)}))},e.onDragEnd=function(n){if(n.destination){var r=n.source,t=n.destination;e.setState((0,j.Zn)({fossilMap:e.state.fossilMap,source:r,destination:t}))}},e}return r.prototype.render=function(){var e=this,n=this.state.fossilMap;return(0,c.jsx)("div",{children:(0,c.jsxs)(_.Z5,{onDragEnd:this.onDragEnd,children:[(0,c.jsx)(C.z,{onClick:this.handleOnClick,className:d().finished_button,radius:"xl",size:"md",children:"Check Answer"}),(0,c.jsx)(N,{children:this.props.categories.map((function(r,t){var o;return(0,c.jsxs)(O,{children:[(0,c.jsxs)(M,{children:[(0,c.jsx)("div",{className:e.props.headerImageFolder?d().emptyAnsImg:d().emptyAns}),null===(o=e.answerCategories[t])||void 0===o?void 0:o.map((function(e,n){return 0===e?(0,c.jsx)("div",{className:d().incorrectAns},n):(0,c.jsx)("div",{className:d().correctAns},n)}))]}),(0,c.jsx)(A,{children:(0,c.jsx)(Z.Z,{gameName:e.props.gameName,title:e.props._shapes[t],listId:r,listType:"card",isDropDisabled:"TODO"===r,fossils:n[r],headerImage:e.props._shapes[t],headerFolder:e.props.headerImageFolder})})]},t)}))})]})})},r}(l.Component),D=r(7082),F=r(6335);function T(){var e=(0,i.Z)(["\n box-sizing: border-box;\n width: 100%;\n min-height: 50vh;\n display: flex;\n justify-content: center;\n align-items: center;\n max-width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n height: auto;\n flex-direction: column;\n @media (max-width: 1024px) {\n transform: scale(0.8);\n transform-origin: top center;\n }\n\n @media (max-width: 768px) {\n transform: scale(0.7);\n transform-origin: top center;\n }\n"]);return T=function(){return e},e}function z(){var e=(0,i.Z)(["\n width: 100%;\n max-width: 1200px; \n height: 100vh; \n overflow-y: auto; \n padding-bottom: 20px; \n display: flex;\n flex-direction: column; \n align-items: center; \n margin: 0 auto;\n overflow-x:hidden;\n\n"]);return z=function(){return e},e}var R=b.Z.div(T()),B=b.Z.div(z());function H(e){var n,r,t=String(null!==e&&void 0!==e?e:"").trim();return t?(null!==(r=null===(n=t.split("/").pop())||void 0===n?void 0:n.split("?")[0])&&void 0!==r?r:t).toLowerCase():""}function K(e){var n=new Map,r=[],t=!0,o=!1,i=void 0;try{for(var s,c=e[Symbol.iterator]();!(t=(s=c.next()).done);t=!0){var l=s.value,u=H(l.imagePath);if(u){var d=n.get(u);(!d||l.id>d.id)&&n.set(u,l)}else r.push(l)}}catch(f){o=!0,i=f}finally{try{t||null==c.return||c.return()}finally{if(o)throw i}}return(0,a.Z)(r).concat((0,a.Z)(Array.from(n.values())))}var J=function(e){var n=e.title,r=e.propertyType,i=e.numCards,u=e.fossilType,x=e.topImageFolder,y=e.topImageFolderHint,w=e.bottomImageFolder,b=e.gameName,_=e.filteredFossils,Z=e.roundValues,j=e.customFossils,C=e.roundFossils,S=e.numRounds,k=e.surveyConfig,E=function(e){return String(null!==e&&void 0!==e?e:"").trim().replace(/\s+/g," ")},P=function(e){if("name"===r)return[E("".concat(e.genus||""," ").concat(e.species||""))];var n=e[r];if(Array.isArray(n))return n.map((function(e){return E(e)})).filter(Boolean);var t=E(n);return t?[t]:[]},N=function(e){"ostracod_outline"===b&&e.forEach((function(n,r){"Bean"===n.shape&&(e[r].shape="Oval")})),"name"===r&&e.forEach((function(e){var n="".concat((e.genus||"").trim()," ").concat((e.species||"").trim()).trim();e.name=n.replace(/\s+/g," ")}))},O=function(e){if(e){Se(null);var n=[],a=i*we.length,c=JSON.parse(JSON.stringify(e));N(c),void 0!==_&&_.length>0&&(c=c.filter((function(e){return _.includes(e.genus)})));var l=function(e){if(null==e)return!0;var n=E(e).toLowerCase();return""===n||"n/a"===n||"na"===n||"none"===n||"null"===n};c=K(c=c.filter((function(e){var n=P(e).filter((function(e){return!l(e)}));return 0!==n.length&&(Array.isArray(e[r])?e[r]=n:e[r]=n[0],!0)})));var d=new Set;c=c.filter((function(e){var n="".concat((e.genus||"").trim()," ").concat((e.species||"").trim()," ").concat((e.imagePath||"").trim());return!d.has(n)&&(d.add(n),!0)}));var f=Z&&Object.keys(Z).length>0,p=C&&Object.keys(C).length>0;if(f){var g=function(e){if(!Z||0===Object.keys(Z).length)return null;for(var n=JSON.parse(JSON.stringify(e)),t=[],o=0;o<we.length;o++){var a="round".concat(o+1),c=Z[a]||[];if(c.length!==i)return null;var l=!0,u=!1,d=void 0;try{for(var f,p=function(){var e=f.value,o=E(e),i=n.map((function(e,n){return{fossil
1:e,index:n}})).filter((function(e){var n=e.fossil;return P(n).includes(o)}));if(0===i.length)return{v:null};var a=i[Math.floor(Math.random()*i.length)],s=a.fossil;s[r]=o,"name"===r&&(s.name=o),t.push(s),n.splice(a.index,1)},g=c[Symbol.iterator]();!(l=(f=g.next()).done);l=!0){var m=p();if("object"===(0,s.Z)(m))return m.v}}catch(h){u=!0,d=h}finally{try{l||null==g.return||g.return()}finally{if(u)throw d}}}return t}(c);if(!g||g.length!==a)return fe([]),H([]),void Se("This classroom does not have enough fossils to satisfy the configured round values.");n=g}else if(p){for(var m=0;m<we.length;m++){var h="round".concat(m+1),v=(C[h]||[]).map((function(e){return c.find((function(n){return n.id===e}))})).filter((function(e){return void 0!==e}));v.forEach((function(e){var n=e[r];Array.isArray(n)&&(e[r]=n[Math.floor(Math.random()*n.length)])})),n=n.concat(v)}n.length!==a&&(n=[])}if(!f&&(!p||0===n.length))for(var x=function(){var t=function(e){var r=[],t=[];t=function(e){for(var n=e.length-1;n>0;n--){var r=Math.floor(Math.random()*(n+1)),t=e[n];e[n]=e[r],e[r]=t}return e}(d.map((function(e,n){return n}))).filter((function(e){var n;return(null===(n=f[e])||void 0===n?void 0:n.length)>0})).slice(0,i),r=t.map((function(e){var n=f[e];if(!n||0===n.length)return{index:e,selected:0,fossil:-1};var r=Math.floor(Math.random()*n.length);return{index:e,selected:r,fossil:n[r]}}));for(var o=[],a=0;a<r.length;a++)f[r[a].index].splice(r[a].selected,1),0===f[r[a].index].length&&o.push(r[a].index);o.sort();for(var s=o.length-1;s>=0;s--)f.splice(o[s],1),d.splice(o[s],1);r=r.map((function(e){return e.fossil>=0?c[e.fossil]:null})).filter((function(e){return null!=e})),n=n.concat(r)};n=[],y++,c=JSON.parse(JSON.stringify(e)),N(c);for(var o=0;o<c.length;o++){var s=c[o][r];Array.isArray(s)&&(c[o][r]=s[Math.floor(Math.random()*s.length)])}void 0!==_&&_.length>0&&(c=c.filter((function(e){return _.includes(e.genus)}))),c=K(c=c.filter((function(e){return!l(e[r])})));var u=new Set;c=c.filter((function(e){var n="".concat((e.genus||"").trim()," ").concat((e.species||"").trim()," ").concat((e.imagePath||"").trim());return!u.has(n)&&(u.add(n),!0)}));for(var d=Array.from(new Set(c.map((function(e){return e[r]})))),f=[],p=void 0,g=0;g<d.length;g++){p=[];for(var m=0;m<c.length;m++)c[m][r]===d[g]&&p.push(m);f.push(p)}for(var h=0;h<we.length;h++)t();(n=n.filter((function(e){return null!=e&&null!=e.imagePath&&""!==String(e.imagePath).trim()}))).length<a&&(n=[])},y=0;n.length!==a&&y<30;)x();if(n.length>=a){if((n=n.map((function(e){var n=(0,I.Kk)(e.imagePath,u);return(0,o.Z)((0,t.Z)({},e),{imagePath:n?"url(".concat(n,")"):""})})).filter((function(e){return e.imagePath}))).length<a)return fe([]),H([]),void Se("This classroom does not have enough fossils with loadable images for this game.");for(var w=[],b=0;b<i;b++)w.push("category_".concat(b));me(w),fe(n),M(n)}}},M=function(e){var n=(0,a.Z)(Array(i).keys()).map((function(e){return e+ie*i})),t=n.filter((function(n){return n<e.length&&null!=e[n]}));if(0!==t.length){if(t.length<i)return Se("This classroom does not have enough fossils for this round."),void H([]);le(t.map((function(n){var t,o=e[n][r];return Array.isArray(o)?String(null!==(t=o[Math.floor(Math.random()*o.length)])&&void 0!==t?t:""):String(null!==o&&void 0!==o?o:"")}))),t.sort((function(){return Math.random()-.5}));var o=t.map((function(n){return e[n]}));H((function(){return o}))}},A=(0,l.useContext)(h.Z),T=(0,l.useState)([]),z=T[0],H=T[1],J=(0,l.useState)(!1),W=J[0],V=J[1],G=(0,l.useState)(!0),U=G[0],Y=G[1],X=(0,l.useState)("star1.svg"),q=X[0],$=X[1],Q=(0,l.useState)(""),ee=Q[0],ne=Q[1],re=(0,l.useState)(0),te=(re[0],re[1]),oe=(0,l.useState)(0),ie=oe[0],ae=oe[1],se=(0,l.useState)([]),ce=se[0],le=se[1],ue=(0,l.useState)([]),de=ue[0],fe=ue[1],pe=(0,l.useState)([]),ge=pe[0],me=pe[1],he=(0,l.useState)(3),ve=he[0],xe=he[1],ye=(0,l.useState)((function(){var e=S||3;return Array.from({length:e},(function(e,n){return"round".concat(n+1)}))})),we=ye[0],be=ye[1],_e=(0,l.useState)((function(){return new Array(S||3).fill(0)})),Ze=_e[0],je=_e[1],Ce=(0,l.useState)(null),Ie=Ce[0],Se=Ce[1],ke=r.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^./,(function(e){return e.toUpperCase()})),Ee=m.S.useQuery(["classroom.getFossils",{classroomId:A.currentClass||"",fossilType:u}],{enabled:!j&&!!A.currentClass,onError:function(e){console.error("Failed to load fossils:",e),Se("Failed to load fossils. Please try again.")}}),Pe=Ee.data,Ne=Ee.isLoading;(0,l.useEffect)((function(){j?O(j):Pe&&O(Pe)}),[j,Pe]);var Oe=m.S.useMutation(["games.saveUserScore"]).mutate;(0,l.useEffect)((function(){0!==ie&&M(de)}),[ie,de]);var Me=function(){H((function(e){return[]})),function(){if(U&&te((function(e){return e+1})),ie+1==we.length){for(var e=ve,n=0;n<Ze.length-1;n++)e+=Ze[n];var r=e/Ze.length;3===r?($("star3.svg"),ne("Perfect! Great job!")):r>=2&&r<3?($("star2.svg"),ne("Not bad! You can do better")):($("star1.svg"),ne("Not bad! You can do better")),V(!0),Oe({classroomId:parseInt(A.currentClass),name:b,score:r})}else ae((function(e){return e+1})),Y(!0)}()};return(0,c.jsx)(R,{children:(0,c.jsxs)(B,{children:[(0,c.jsx)("div",{className:d().instructions,children:(0,c.jsx)(g.x,{children:n})}),(0,c.jsxs)(g.x,{color:"white",size:"sm",style:{marginBottom:8},children:["Match by: ",ke]}),(0,c.jsx)("div",{className:d().game_instructions,children:" Drag all the cards to correct column and click Check Answer."}),(0,c.jsx)("div",{className:d().round_container,children:we.map((function(e,n){return(0,c.jsx)(f.Z,{imgPath:e},n)}))}
1),(0,c.jsx)(p.Z,{finalMessage:ee,starImg:q,openModal:W,setOpenModal:V,gameName:b,surveyConfig:k}),A.currentClass?Ie?(0,c.jsx)(g.x,{color:"red",size:"lg",style:{padding:"2rem",textAlign:"center"},children:Ie}):z.length>0?(0,c.jsx)(L,{gameName:b,k:i,categories:ge,initial:function(){var e={};return ge.length%2!==0?ge.forEach((function(n,r){e[n]=r===Math.floor(ge.length/2)?z:[]})):ge.forEach((function(n,r){r===ge.length/2-1?e[n]=z.slice(0,z.length/2):r===ge.length/2?e[n]=z.slice(z.length/2,z.length):e[n]=[]})),e}(),_shapes:ce,checkRound:function(e){(0,v.yK)("IncorrectGuess"),e!==i?(be((function(e){var n=(0,a.Z)(e);return n[ie]="xLarge",n})),(0,v.c0)({id:"IncorrectGuess",message:"Incorrect!",disallowClose:!1,autoClose:2500,icon:(0,c.jsx)(D.Z,{}),color:"red"}),Y(!1),xe((function(e){return e>1?e-1:1}))):((0,v.c0)({id:"CorrectGuess",message:"Correct!",disallowClose:!1,autoClose:2500,icon:(0,c.jsx)(F.Z,{})}),be((function(e){var n=(0,a.Z)(e);return n[ie]="checkLarge",n})),je((function(e){var n=(0,a.Z)(e);return n[ie]=ve,n})),ie+1!==3&&xe(3),setTimeout(Me,2e3))},propertyType:r,fossilType:u,topImageFolder:x,folderHint:y,headerImageFolder:w},"round-".concat(ie)):(0,c.jsx)(g.x,{children:Ne?"Loading fossils...":"No fossils available for this game."}):(0,c.jsx)(g.x,{color:"yellow",size:"lg",style:{padding:"2rem",textAlign:"center"},children:"Please select a classroom to play this game."}),(0,c.jsx)("div",{style:{color:"white",fontWeight:200,paddingTop:"5vh",textAlign:"center"}})]})})}},5628:function(e,n,r){"use strict";r.d(n,{E:function(){return o},e:function(){return t}});var t=8,o=4},5626:function(e,n,r){"use strict";r.d(n,{Z:function(){return F}});var t=r(865),o=r(6670),i=r(2228),a=r(2322),s=r(2784),c=r(3725),l=r(4756),u=r(5036),d=r(5628);function f(){var e=(0,i.Z)(["\n border-radius: ","px;\n box-shadow: ",";\n box-sizing: border-box;\n width: 100%; \n height: 18vh;\n user-select: none;\n aspect-ratio: 5 / 4; \n max-height: 170px;\n\n display: flex;\n justify-content: center;\n align-items: center;\n \n color: ",";\n\n &:hover,\n &:active {\n color: ",";\n text-decoration: none;\n }\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n"]);return f=function(){return e},e}function p(){var e=(0,i.Z)(["\n height: 18vh; /* Maintain aspect ratio */\n max-height: 170px;\n aspect-ratio: 5 / 4; /* Keep consistent proportions */\n border-radius: 5px;\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n"]);return p=function(){return e},e}var g=c.Z.a(f(),d.E,(function(e){return e.isDragging?"2px 2px 1px ".concat(u.n2):"none"}),u.xA,u.xA),m=c.Z.div(p());function h(e,n){return n?(0,t.Z)({},e.draggableProps.style,n):e.draggableProps.style}function v(e){var n=e.fossil,r=e.isDragging,i=e.isGroupedOver,s=e.provided,c=e.style,l=(e.isClone,e.index);return(0,a.jsx)(g,(0,o.Z)((0,t.Z)({isDragging:r,isGroupedOver:Boolean(i),ref:s.innerRef},s.draggableProps,s.dragHandleProps),{style:h(s,c),"data-is-dragging":r,"data-testid":n.id,"data-index":l,children:(0,a.jsx)(m,{style:{backgroundImage:n.imagePath&&String(n.imagePath).trim()?n.imagePath:"none",backgroundPosition:"center",backgroundSize:"contain",backgroundColor:n.imagePath&&String(n.imagePath).trim()?"transparent":"rgba(0,0,0,0.1)"}})}))}var x=s.memo(v),y=r(5238),w=r(6766),b=r.n(w),_=r(5117);function Z(){var e=(0,i.Z)(["\n background-color: #088585;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n opacity: ",";\n padding: 0.5vh 0.5vw;\n border: ","px solid transparent;\n transition:\n background-color 0.2s ease,\n opacity 0.1s ease;\n user-select: none;\n max-width: 100%; \n overflow-x: hidden;\n"]);return Z=function(){return e},e}function j(){var e=(0,i.Z)(["\n display: grid;\n grid-template-columns: repeat(",", minmax(180px, 1fr));\n min-height: ","px;\n background-color: transparent;\n width: 100%; \n overflow-x: hidden;\n flex-wrap: wrap;\n gap: 0.5vh;\n"]);return j=function(){return e},e}function C(){var e=(0,i.Z)(["\n width: 100%;\n align-self: stretch;\n box-sizing: border-box;\n background-color: #000;\n border-radius: 6px;\n height: 18vh;\n max-height: 200px;\n min-height: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n"]);return C=function(){return e},e}function I(){var e=(0,i.Z)(["\n background-color: transparent;\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n "]);return I=function(){return e},e}function S(){var e=(0,i.Z)(["\n overflow-x: hidden;\n overflow-y: auto;\n max-height: ","px"]);return S=function(){return e},e}var k=c.Z.div(Z(),(function(e){return e.isDropDisabled?.5:"inherit"}),d.e),E=c.Z.div(j(),(function(e){return e.numColumns||1}),250),P=c.Z.div(C()),N=c.Z.div(I()),O=c.Z.div(S(),250);function M(e){var n;return(0,a.jsx)(a.Fragment,{children:null===(n=e.fossils)||void 0===n?void 0:n.map((function(n,r){return(0,a.jsx)(l._l,{draggableId:"".concat(e.listId,"-").concat(n.id,"-").concat(r),index:r,children:function(e,r){return(0,a.jsx)(x,{fossil:n,isDragging:r.isDragging,isGroupedOver:Boolean(r.combineTargetFor),provided:e},n.id)}},"".concat(e.listId,"-").concat(n.id,"-").concat(r))}))})}var A=s.memo(M);function L(e,n){var r=n.replaceAll(" ","-");return/\.(jpe?g|png|webp|gif|bmp)$/i.test(r)?"/".concat(e,"/").concat(r):"/".concat(e,"/").concat(r,".png")}function D(e){e.gameName;var n=e.fossils,r=e.dropProvided,t=e.numColumns,o=e.headerImage,i=e.headerFolder,s=e.listId,c=e.title?(0,a.jsx)(y.Z,{children:e.title}):null;return(0,a.jsxs)(N,{children:[(0,a.jsxs)("div",{className:b().shape_text,children:["text"===i&&o&&(0,a.jsx)(_.x,{weight:600,size:"sm",style:{textAlign:"center",marginBottom:4},children:o}),o&&i&&"text"!==i&&(0,a.jsx)(P,{children:(0,a.jsx)("img",{src:L(i,o),alt:"",style:{width:"100%",height:"100%",objectFit:"contain",display:"block"}})}),"text"!==i&&c&&(0,a.jsx)(_.x,{style:{textAlign:"center",width:"100%"},children:c})]}),(0,a.jsxs)(E,{ref:r.innerRef,numColumns:t,children:[(0,a.jsx)(A,{fossils:n,listId:s}
1),r.placeholder]})]})}function F(e){var n=e.gameName,r=e.ignoreContainerClipping,i=e.internalScroll,s=e.scrollContainerStyle,c=e.isDropDisabled,u=e.isCombineEnabled,d=e.listId,f=void 0===d?"LIST":d,p=e.listType,g=e.fossils,m=e.title,h=e.useClone,v=e.numColumns,y=void 0===v?1:v,w=e.headerImage,b=e.headerFolder;return(0,a.jsx)(l.bK,{droppableId:f,type:p,ignoreContainerClipping:r,isDropDisabled:c,isCombineEnabled:u,renderClone:h?function(e,n,r){return(0,a.jsx)(x,{fossil:g[r.source.index],provided:e,isDragging:n.isDragging,isClone:!0})}:void 0,children:function(e,r){return(0,a.jsx)(k,(0,o.Z)((0,t.Z)({isDraggingOver:r.isDraggingOver,isDropDisabled:Boolean(c),isDraggingFrom:Boolean(r.draggingFromThisWith)},e.droppableProps),{children:i?(0,a.jsx)(O,{style:s,children:(0,a.jsx)(D,{gameName:n,fossils:g,title:m,dropProvided:e,numColumns:y,headerImage:w,headerFolder:b,listId:f})}):(0,a.jsx)(D,{gameName:n,fossils:g,title:m,dropProvided:e,numColumns:y,headerImage:w,headerFolder:b,listId:f})}))}})}},5238:function(e,n,r){"use strict";var t=r(2228),o=r(3725),i=r(5036),a=r(5628);function s(){var e=(0,t.Z)(["\n padding: ","px;\n transition: background-color ease 0.2s;\n flex-grow: 1;\n user-select: none;\n position: relative;\n\n &:focus {\n outline: 2px solid ",";\n outline-offset: 2px;\n }\n"]);return s=function(){return e},e}n.Z=o.Z.h4(s(),a.e,i.Vi)},7392:function(e,n,r){"use strict";r.d(n,{Zn:function(){return l},fh:function(){return u}});var t=r(7842),o=r(865),i=r(6670),a=r(6383),s=r(930);function c(e,n,r){var t=(0,s.Z)(e),o=(0,a.Z)(t.splice(n,1),1)[0];return t.splice(r,0,o),t}var l=function(e){var n,r=e.fossilMap,a=e.source,l=e.destination,u=(0,s.Z)(r[a.droppableId]),d=(0,s.Z)(r[l.droppableId]),f=u[a.index];if(a.droppableId===l.droppableId){var p=c(u,a.index,l.index);return{fossilMap:(0,i.Z)((0,o.Z)({},r),(0,t.Z)({},a.droppableId,p))}}return u.splice(a.index,1),d.splice(l.index,0,f),{fossilMap:(0,i.Z)((0,o.Z)({},r),(n={},(0,t.Z)(n,a.droppableId,u),(0,t.Z)(n,l.droppableId,d),n))}};var u=function(e){var n,r=e.optionsMap,a=e.source,l=e.destination,u=(0,s.Z)(r[a.droppableId]),d=(0,s.Z)(r[l.droppableId]),f=u[a.index];if(a.droppableId===l.droppableId){var p=c(u,a.index,l.index);return{optionsMap:(0,i.Z)((0,o.Z)({},r),(0,t.Z)({},a.droppableId,p))}}return u.splice(a.index,1),d.splice(l.index,0,f),{optionsMap:(0,i.Z)((0,o.Z)({},r),(n={},(0,t.Z)(n,a.droppableId,u),(0,t.Z)(n,l.droppableId,d),n))}}},2835:function(e,n,r){"use strict";var t=r(2322),o=r(449),i=r.n(o),a=r(4761);n.Z=function(e){var n=e.imgPath,r="url(/icons/"+n+".svg)",o=(0,a.rZ)();return(0,t.jsx)("div",{className:i().icon,style:{backgroundImage:r,backgroundColor:"checkLarge"===n?o.colors.cyan[7]:"xLarge"===n?"#bb1717":"transparent"}})}},9454:function(e,n,r){"use strict";r.d(n,{DE:function(){return v},Ix:function(){return c},JF:function(){return p},Kk:function(){return x},NO:function(){return d},a9:function(){return h},ao:function(){return g},h0:function(){return a},yk:function(){return y}});var t=r(8788),o=r(2838),i=r(2970);function a(e,n,r){return s.apply(this,arguments)}function s(){return(s=(0,t.Z)((function(e,n,r){return(0,i.__generator)(this,(function(t){return(0,o.Z)(e,File)?[2,new Promise((function(t,o){var i=new FormData;i.append("image",e),i.append("fossilType",n);var a=new XMLHttpRequest;a.upload.addEventListener("progress",(function(e){if(e.lengthComputable){var n=Math.round(e.loaded/e.total*100);r({percentage:n,status:"uploading"})}})),a.addEventListener("load",(function(){if(a.status>=200&&a.status<300)try{var e=JSON.parse(a.responseText);e.imagePath?(r({percentage:100,status:"success"}),t(e.imagePath)):(r({percentage:100,status:"error",error:"No image path in response"}),o(new Error("No image path in response")))}catch(n){r({percentage:100,status:"error",error:"Failed to parse response"}),o(new Error("Failed to parse response"))}else r({percentage:100,status:"error",error:"Upload failed: ".concat(a.status)}),o(new Error("Upload failed with status ".concat(a.status)))})),a.addEventListener("error",(function(){r({percentage:0,status:"error",error:"Network error"}),o(new Error("Network error"))})),a.open("POST","/api/uploadImage"),a.send(i)}))]:[2]}))}))).apply(this,arguments)}function c(e,n){return l.apply(this,arguments)}function l(){return(l=(0,t.Z)((function(e,n){var r,t,a,s;return(0,i.__generator)(this,(function(i){switch(i.label){case 0:return(0,o.Z)(e,File)?((r=new FormData).append("image",e),r.append("fossilType",n),a={},[4,fetch("/api/uploadImage",(a.method="POST",a.body=r,a))]):[2];case 1:return[4,(t=i.sent()).json().catch((function(){return{}}))];case 2:if(s=i.sent(),!t.ok)throw new Error("string"===typeof s.error?s.error:"Upload failed (".concat(t.status,")"));if(s.imagePath)return[2,s.imagePath];throw new Error("Server did not return an image path")}}))}))).apply(this,arguments)}function u(){var e=window.location,n=e.hostname,r=e.protocol;return"localhost"===n||"127.0.0.1"===n?"".concat(r,"//").concat(n,":8000/api/uploadImage"):"/api/uploadImage"}function d(e,n){return f.apply(this,arguments)}function f(){return(f=(0,t.Z)((function(e,n){return(0,i.__generator)(this,(function(r){if(!(0,o.Z)(e,File))throw new Error("Invalid file");return[2,new Promise((function(r,t){var o=new FormData;o.append("image",e),o.append("fossilType","3D_models");var i=new XMLHttpRequest;i.withCredentials=!0,i.upload.addEventListener("progress",(function(e){if(e.lengthComputable){var r=Math.min(99,Math.round(e.loaded/e.total*100));null===n||void 0===n||n({percentage:r,status:"uploading"})}})),i.addEventListener("load",(function(){var e={};try{e=JSON.parse(i.responseText||"{}")}catch(a){}if(i.status>=200&&i.status<300&&e.imagePath)return null===n||void 0===n||n({percentage:100,status:"success"}),void r(e.imagePath);var o="string"===typeof e.error?e.error:"Upload failed (".concat(i.status||"network",")");null===n||void 0===n||n({percentage:0,status:"error",error:o}),t(new Error(o))})),i.addEventListener("error",(function(){null===n||void 0===n||n({percentage:0,status:"error",error:"Network error"}),t(new Error("Network error during model upload"))})),i.addEventListener("timeout",(function(){t(new Error("Upload timed out"))})),i.open("POST",u()),i.timeout=6e5,null===n||void 0===n||n({percentage:0,status:"uploading"}),i.send(o)}))]}))}))).apply(this,arguments)}function p(e,n){if(!(null===e||void 0===e?void 0:e.trim()))return null;var r=e.trim(),t=r.startsWith("{")||/sketchfab\.com/i.test(r);if(!t&&/\.(glb|gltf)$/i.test(r))return/^https?:\/\//i.test(r)||r.startsWith("/")?r:h(r.startsWith("/")?r.slice(1):r);if(null===n||void 0===n?void 0:n.trim()){var o=n.toLowerCase().replace(/^fossil\s+/,"").trim(),i="trifarina"===o?"trifarina_angulosa":o.replace(/ /g,"_");
1return"https://storage.googleapis.com/fossilsketch/3D_models/".concat(i,".glb")}return null}function g(e,n){return m.apply(this,arguments)}function m(){return(m=(0,t.Z)((function(e,n){var r;return(0,i.__generator)(this,(function(t){switch(t.label){case 0:return""===e?[3,2]:(r={},[4,fetch("/api/deleteImage",(r.method="POST",r.headers={"Content-Type":"application/json"},r.body=JSON.stringify({fileName:e,fossilType:n.toLowerCase()}),r)).then((function(e){return e.json()}))]);case 1:t.sent(),t.label=2;case 2:return[2]}}))}))).apply(this,arguments)}function h(e){if(e.startsWith("http"))return e;return"https://storage.googleapis.com/".concat("fossilsketch","/").concat(e.startsWith("/")?e.substring(1):e)}function v(e){var n=e.toLowerCase();return"foraminifera"===n||"forams"===n||"morphotype"===n||"morphotypes"===n?"foraminifera":"ostracoda"===n?"ostracoda":n}function x(e,n){if(!(null===e||void 0===e?void 0:e.trim()))return null;var r=e.trim();if(/^https?:\/\//i.test(r))return r;if(r.startsWith("/api/uploads/"))return r;var t=v(n),o=r.replaceAll(" ","");return o.includes("/")||(o="".concat(t,"/").concat(o)),"localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname?"/api/uploads/".concat(o):h(o)}function y(e){return w.apply(this,arguments)}function w(){return(w=(0,t.Z)((function(e){var n,r;return(0,i.__generator)(this,(function(t){switch(t.label){case 0:return""===e?[3,2]:(r={},[4,fetch("/api/fetchImageNames",(r.method="POST",r.headers={"Content-Type":"application/json"},r.body=JSON.stringify({folderName:e}),r)).then((function(e){return e.json()}))]);case 1:return(n=t.sent()).imagePaths?[2,n.imagePaths]:[2,[]];case 2:return[2]}}
1))}))).apply(this,arguments)}},6766:function(e){e.exports={background:"matching_game_background__OLzzd",game_instructions:"matching_game_game_instructions__48z6u",remaining_counter:"matching_game_remaining_counter__dworO",emptyAns:"matching_game_emptyAns__dM1mx",emptyAnsSmall:"matching_game_emptyAnsSmall__ggS7Y",emptyAnsImg:"matching_game_emptyAnsImg__qj_9G",correctAns:"matching_game_correctAns__pqvEP",incorrectAns:"matching_game_incorrectAns__B8nyg",instructions:"matching_game_instructions__1kK30",round_container:"matching_game_round_container__VvN8n",finished_button:"matching_game_finished_button__wrx9M",next_round_button:"matching_game_next_round_button__i9tBl",container:"matching_game_container___PLCY",row:"matching_game_row__K9rVV",column:"matching_game_column__wtuRe",draggable:"matching_game_draggable__gGgYK",fossil_image:"matching_game_fossil_image__tWwuy",shape_text:"matching_game_shape_text__v_TaQ",feedbackImage:"matching_game_feedbackImage__coR9H",game_container:"matching_game_game_container__taVDX",droppable_manager_container:"matching_game_droppable_manager_container__lIkl_",img:"matching_game_img__oyupM",correctAnsSmall:"matching_game_correctAnsSmall__IXl_w",incorrectAnsSmall:"matching_game_incorrectAnsSmall__6vJhf",fossil_result_image:"matching_game_fossil_result_image__pU5Ru",root_div:"matching_game_root_div__CYX9p"}},449:function(e){e.exports={icon:"round_button_icon__wOxvf"}},6335:function(e,n,r){"use strict";r.d(n,{Z:function(){return a}});var t=r(8409),o=r(2784),i=["size","color"];function a(e){var n=e.size,r=void 0===n?24:n,a=e.color,s=void 0===a?"currentColor":a,c=(0,t.Kd)(e,i);return o.createElement("svg",(0,t.gY)({xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-check",width:r,height:r,viewBox:"0 0 24 24",stroke:s,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},c),o.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),o.createElement("path",{d:"M5 12l5 5l10 -10"}))}},7082:function(e,n,r){"use strict";r.d(n,{Z:function(){return a}});var t=r(8409),o=r(2784),i=["size","color"];function a(e){var n=e.size,r=void 0===n?24:n,a=e.color,s=void 0===a?"currentColor":a,c=(0,t.Kd)(e,i);return o.createElement("svg",(0,t.gY)({xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-x",width:r,height:r,viewBox:"0 0 24 24",stroke:s,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},c),o.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),o.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),o.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"}))}},2870:function(e,n,r){"use strict";r.d(n,{E:function(){return O}});var t=r(2784),o=r(4761),i=r(7048),a=Object.defineProperty,s=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,u=(e,n,r)=>n in e?a(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;function d(e){return t.createElement("svg",((e,n)=>{for(var r in n||(n={}))c.call(n,r)&&u(e,r,n[r]);if(s)for(var r of s(n))l.call(n,r)&&u(e,r,n[r]);return e})({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),t.createElement("path",{d:"M2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5C1 1.67157 1.67157 1 2.5 1ZM2.5 2C2.22386 2 2 2.22386 2 2.5V8.3636L3.6818 6.6818C3.76809 6.59551 3.88572 6.54797 4.00774 6.55007C4.12975 6.55216 4.24568 6.60372 4.32895 6.69293L7.87355 10.4901L10.6818 7.6818C10.8575 7.50607 11.1425 7.50607 11.3182 7.6818L13 9.3636V2.5C13 2.22386 12.7761 2 12.5 2H2.5ZM2 12.5V9.6364L3.98887 7.64753L7.5311 11.4421L8.94113 13H2.5C2.22386 13 2 12.7761 2 12.5ZM12.5 13H10.155L8.48336 11.153L11 8.6364L13 10.6364V12.5C13 12.7761 12.7761 13 12.5 13ZM6.64922 5.5C6.64922 5.03013 7.03013 4.64922 7.5 4.64922C7.96987 4.64922 8.35078 5.03013 8.35078 5.5C8.35078 5.96987 7.96987 6.35078 7.5 6.35078C7.03013 6.35078 6.64922 5.96987 6.64922 5.5ZM7.5 3.74922C6.53307 3.74922 5.74922 4.53307 5.74922 5.5C5.74922 6.46693 6.53307 7.25078 7.5 7.25078C8.46693 7.25078 9.25078 6.46693 9.25078 5.5C9.25078 4.53307 8.46693 3.74922 7.5 3.74922Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}var f=r(6817),p=Object.defineProperty,g=Object.defineProperties,m=Object.getOwnPropertyDescriptors,h=Object.getOwnPropertySymbols,v=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable,y=(e,n,r)=>n in e?p(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,w=(e,n)=>{for(var r in n||(n={}))v.call(n,r)&&y(e,r,n[r]);if(h)for(var r of h(n))x.call(n,r)&&y(e,r,n[r]);return e},b=(e,n)=>g(e,m(n)),_=(0,f.k)(((e,{radius:n})=>({root:{},imageWrapper:{position:"relative"},figure:{margin:0},image:b(w({},e.fn.fontStyles()),{display:"block",width:"100%",height:"100%",border:0,borderRadius:e.fn.size({size:n,sizes:e.radius})}),caption:{color:"dark"===e.colorScheme?e.colors.dark[2]:e.colors.gray[7],marginTop:e.spacing.xs},placeholder:b(w({},e.fn.cover()),{display:"flex",alignItems:"center",justifyContent:"center",color:"dark"===e.colorScheme?e.colors.dark[2]:e.colors.gray[6],backgroundColor:"dark"===e.colorScheme?e.colors.dark[8]:e.colors.gray[0],borderRadius:e.fn.size({size:n,sizes:e.radius})})}))),Z=r(4459),j=r(5117),C=Object.defineProperty,I=Object.getOwnPropertySymbols,S=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,E=(e,n,r)=>n in e?C(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,P=(e,n)=>{for(var r in n||(n={}))S.call(n,r)&&E(e,r,n[r]);
1if(I)for(var r of I(n))k.call(n,r)&&E(e,r,n[r]);return e};const N={fit:"cover",width:"100%",height:"auto",radius:0},O=(0,t.forwardRef)(((e,n)=>{const r=(0,o.N4)("Image",N,e),{className:a,alt:s,src:c,fit:l,width:u,height:f,radius:p,imageProps:g,withPlaceholder:m,placeholder:h,imageRef:v,classNames:x,styles:y,caption:w,unstyled:b,style:C}=r,E=((e,n)=>{var r={};for(var t in e)S.call(e,t)&&n.indexOf(t)<0&&(r[t]=e[t]);if(null!=e&&I)for(var t of I(e))n.indexOf(t)<0&&k.call(e,t)&&(r[t]=e[t]);return r})(r,["className","alt","src","fit","width","height","radius","imageProps","withPlaceholder","placeholder","imageRef","classNames","styles","caption","unstyled","style"]),{classes:O,cx:M}=_({radius:p},{classNames:x,styles:y,unstyled:b,name:"Image"}),[A,L]=(0,t.useState)(!1),[D,F]=(0,t.useState)(!c),T=m&&(!A||D);return(0,i.l)((()=>{L(!1),F(!1)}),[c]),t.createElement(Z.x,P({className:M(O.root,a),ref:n,style:P({width:u,height:f},C)},E),t.createElement("figure",{className:O.figure},t.createElement("div",{className:O.imageWrapper},t.createElement("img",P({className:O.image,src:c,alt:s,style:{objectFit:l,width:u,height:f},ref:v,onLoad:e=>{L(!0),"function"===typeof(null==g?void 0:g.onLoad)&&g.onLoad(e)},onError:e=>{F(!0),"function"===typeof(null==g?void 0:g.onError)&&g.onError(e)}},g)),T&&t.createElement("div",{className:O.placeholder,title:s},h||t.createElement(d,{style:{width:40,height:40}}))),!!w&&t.createElement(j.x,{component:"figcaption",size:"sm",align:"center",className:O.caption},w)))}));O.displayName="@mantine/core/Image"},8788:function(e,n,r){"use strict";function t(e,n,r,t,o,i,a){try{var s=e[i](a),c=s.value}catch(l){return void r(l)}s.done?n(c):Promise.resolve(c).then(t,o)}function o(e){return function(){var n=this,r=arguments;return new Promise((function(o,i){var a=e.apply(n,r);function s(e){t(a,o,i,s,c,"next",e)}function c(e){t(a,o,i,s,c,"throw",e)}s(void 0)}))}}r.d(n,{Z:function(){return o}})},2838:function(e,n,r){"use strict";function t(e,n){return null!=n&&"undefined"!==typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}r.d(n,{Z:function(){return t}})},930:function(e,n,r){"use strict";r.d(n,{Z:function(){return a}});var t=r(630);var o=r(8366);var i=r(5459);function a(e){return function(e){if(Array.isArray(e))return(0,t.Z)(e)}(e)||(0,o.Z)(e)||(0,i.Z)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}}}]);
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.