@roudanio/maze 0.0.2 → 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/maze.css +1 -1
- package/dist/maze.iife.js +27 -2
- package/dist/maze.js +1239 -898
- package/dist/maze.umd.js +27 -2
- package/package.json +2 -1
- package/dist/settings.svg +0 -1
package/dist/maze.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.maze-game-container{position:relative;box-sizing:border-box
|
|
1
|
+
.maze-game-container{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:100%}.maze-game-container button{padding:8px 16px;background-color:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:background-color .2s}.maze-game-container button:hover{background-color:#45a049}.maze-game-container button:disabled{background-color:#ccc;cursor:not-allowed}.maze-game-container .maze-canvas-container{position:relative;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;width:100%}.maze-game-container .maze-game-canvas{width:100%;height:100%;aspect-ratio:1 / 1;background-color:#fff;transition:opacity .1s ease}.maze-game-container .maze-touch-area{position:absolute;width:100%;height:100%;opacity:0}.maze-game-container .maze-up{clip-path:polygon(10% 0,90% 0,50% 40%);top:0}.maze-game-container .maze-down{clip-path:polygon(10% 100%,90% 100%,50% 60%);bottom:0}.maze-game-container .maze-left{clip-path:polygon(0 10%,40% 50%,0 90%);top:0;left:0}.maze-game-container .maze-right{clip-path:polygon(100% 10%,60% 50%,100% 90%);top:0;right:0}.maze-game-container .toast-container{position:absolute;pointer-events:none;width:100%;display:flex;justify-content:center;align-items:center;z-index:1000}.maze-game-container .toast-container.position-top{top:10px;left:0;right:0}.maze-game-container .toast-container.position-center{inset:0}.maze-game-container .toast-container.position-bottom{bottom:10px;left:0;right:0}.maze-game-container .toast-message{font-size:16px;font-weight:700;text-align:center;background-color:#f5f5f5;padding:8px 12px;border-radius:8px;box-shadow:0 2px 4px #0003;width:fit-content;max-width:90%;transition:opacity .3s ease,transform .3s ease;opacity:0;transform:translateY(-10px);pointer-events:none}.maze-game-container .toast-message.toast-visible{opacity:1;transform:translateY(0)}.maze-game-container .toast-message.type-success{background-color:#e8f5e9;color:#4caf50}.maze-game-container .toast-message.type-info{background-color:#e3f2fd;color:#2196f3}.maze-game-container .toast-message.type-warning{background-color:#fff8e1;color:#ff9800}.maze-game-container .toast-message.type-error{background-color:#ffebee;color:#f44336}.maze-game-container .game-panel-container{margin-bottom:15px;font-size:16px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a;padding:12px 15px 15px;transition:all .3s ease;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.maze-game-container .game-controls{display:flex;flex-direction:column;align-items:start;gap:12px}.maze-game-container .selectors-container{display:flex;justify-content:center;align-items:center;gap:10px;border-radius:10px}.maze-game-container :is(.tier-dropdown,.level-dropdown){padding:8px 12px;border-radius:8px;border:2px solid #3498db;background-color:#f8f9fa;color:#333;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 2px 4px #0000001a;appearance:none;background-image:url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:right 12px top 50%;background-size:10px auto;min-width:120px;transition:all .3s ease;outline:none}.maze-game-container .level-dropdown{border-color:#9b59b6}.maze-game-container .score-container{display:flex;flex-direction:row;gap:6px}.maze-game-container .game-settings{display:flex;align-items:center;justify-content:center}.maze-game-container .game-settings .game-settings-icon{width:32px;height:32px;cursor:pointer}.maze-game-container .maze-dialog-content{margin-bottom:15px}.maze-game-container .settings-item-box{padding-top:20px;padding-bottom:20px;display:flex;flex-direction:column;align-items:start;gap:20px;text-align:left}.maze-game-container .settings-item-tip{color:#555}.maze-game-container :is(.settings-reset-button,.settings-clue-button){background-color:#aaa;color:#fff;cursor:pointer;transition:all .2s;border:none;outline:none;box-shadow:0 1px 3px #0003}.maze-game-container :is(.settings-reset-button,.settings-clue-button):hover{background-color:#d32f2f;box-shadow:0 2px 5px #0000004d}.maze-game-container :is(.settings-reset-button,.settings-clue-button):active{transform:scale(.95)}.maze-game-container .settings-clue-button.clue-on{background-color:#ff9800}.maze-game-container .settings-clue-button:hover{background-color:#ff9800;box-shadow:0 2px 5px #0000004d}.maze-game-container .settings-clue-button:active{transform:scale(.95)}.maze-game-container .score-box{display:flex;flex-direction:row;align-items:center;gap:8px;padding:4px 10px;border-radius:16px}.maze-game-container .score-box.totalscore{background-color:#f3e5f5}.maze-game-container .score-box.currentscore{background-color:#e8f5e9}.maze-game-container .score-box.bestscore{background-color:#fff3e0}.maze-game-container .score-label{font-weight:700;color:#333;font-size:13px}.maze-game-container .score-data{font-weight:700;font-size:16px}.maze-game-container .totalscore .score-data{color:#9c27b0}.maze-game-container .currentscore .score-data{color:#4caf50}.maze-game-container .bestscore .score-data{color:#ff9800}.maze-game-container .maze-dialog-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.maze-game-container .maze-dialog-overlay.maze-dialog-visible{opacity:1;visibility:visible}.maze-game-container .maze-dialog-overlay.maze-dialog-visible .maze-dialog{transform:translateY(0)}.maze-game-container .maze-dialog{background-color:#fff;border-radius:8px;box-shadow:0 4px 16px #0003;width:300px;max-width:90%;padding:20px;text-align:center;transform:translateY(-20px);transition:transform .3s}.maze-game-container .maze-dialog-title{font-size:18px;font-weight:700;margin-bottom:10px;color:#333}.maze-game-container .maze-dialog-message{font-size:14px;margin-bottom:20px;color:#666;line-height:1.5}.maze-game-container .maze-dialog-buttons{display:flex;justify-content:center;gap:10px}.maze-game-container .maze-dialog-cancel{background-color:#f1f1f1;color:#333;font-size:14px}.maze-game-container .maze-dialog-cancel:hover{background-color:#e1e1e1}.maze-game-container .maze-dialog-confirm{background-color:#f44336;color:#fff;font-size:14px}.maze-game-container .maze-dialog-confirm:hover{background-color:#d32f2f}
|
package/dist/maze.iife.js
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
|
-
var Maze=function(){"use strict";var V,w,fe,U,me,ve,Z,pe,ee,te,oe,ge,R={},we=[],Ye=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ne=Array.isArray;function $(t,e){for(var o in e)t[o]=e[o];return t}function re(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function Xe(t,e,o){var n,r,i,s={};for(i in e)i=="key"?n=e[i]:i=="ref"?r=e[i]:s[i]=e[i];if(arguments.length>2&&(s.children=arguments.length>3?V.call(arguments,2):o),typeof t=="function"&&t.defaultProps!=null)for(i in t.defaultProps)s[i]===void 0&&(s[i]=t.defaultProps[i]);return B(t,s,n,r,null)}function B(t,e,o,n,r){var i={type:t,props:e,key:o,ref:n,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++fe,__i:-1,__u:0};return r==null&&w.vnode!=null&&w.vnode(i),i}function q(t){return t.children}function K(t,e){this.props=t,this.context=e}function D(t,e){if(e==null)return t.__?D(t.__,t.__i+1):null;for(var o;e<t.__k.length;e++)if((o=t.__k[e])!=null&&o.__e!=null)return o.__e;return typeof t.type=="function"?D(t):null}function Ce(t){var e,o;if((t=t.__)!=null&&t.__c!=null){for(t.__e=t.__c.base=null,e=0;e<t.__k.length;e++)if((o=t.__k[e])!=null&&o.__e!=null){t.__e=t.__c.base=o.__e;break}return Ce(t)}}function ie(t){(!t.__d&&(t.__d=!0)&&U.push(t)&&!Y.__r++||me!==w.debounceRendering)&&((me=w.debounceRendering)||ve)(Y)}function Y(){var t,e,o,n,r,i,s,c;for(U.sort(Z);t=U.shift();)t.__d&&(e=U.length,n=void 0,i=(r=(o=t).__v).__e,s=[],c=[],o.__P&&((n=$({},r)).__v=r.__v+1,w.vnode&&w.vnode(n),se(o.__P,n,r,o.__n,o.__P.namespaceURI,32&r.__u?[i]:null,s,i??D(r),!!(32&r.__u),c),n.__v=r.__v,n.__.__k[n.__i]=n,Te(s,n,c),n.__e!=i&&Ce(n)),U.length>e&&U.sort(Z));Y.__r=0}function ye(t,e,o,n,r,i,s,c,a,d,_){var l,h,u,m,C,g,p=n&&n.__k||we,v=e.length;for(a=je(o,e,p,a,v),l=0;l<v;l++)(u=o.__k[l])!=null&&(h=u.__i===-1?R:p[u.__i]||R,u.__i=l,g=se(t,u,h,r,i,s,c,a,d,_),m=u.__e,u.ref&&h.ref!=u.ref&&(h.ref&&le(h.ref,null,u),_.push(u.ref,u.__c||m,u)),C==null&&m!=null&&(C=m),4&u.__u||h.__k===u.__k?a=ke(u,a,t):typeof u.type=="function"&&g!==void 0?a=g:m&&(a=m.nextSibling),u.__u&=-7);return o.__e=C,a}function je(t,e,o,n,r){var i,s,c,a,d,_=o.length,l=_,h=0;for(t.__k=new Array(r),i=0;i<r;i++)(s=e[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(a=i+h,(s=t.__k[i]=typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?B(null,s,null,null,null):ne(s)?B(q,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?B(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):s).__=t,s.__b=t.__b+1,c=null,(d=s.__i=Je(s,o,a,l))!==-1&&(l--,(c=o[d])&&(c.__u|=2)),c==null||c.__v===null?(d==-1&&h--,typeof s.type!="function"&&(s.__u|=4)):d!=a&&(d==a-1?h--:d==a+1?h++:(d>a?h--:h++,s.__u|=4))):t.__k[i]=null;if(l)for(i=0;i<_;i++)(c=o[i])!=null&&!(2&c.__u)&&(c.__e==n&&(n=D(c)),Pe(c,c));return n}function ke(t,e,o){var n,r;if(typeof t.type=="function"){for(n=t.__k,r=0;n&&r<n.length;r++)n[r]&&(n[r].__=t,e=ke(n[r],e,o));return e}t.__e!=e&&(e&&t.type&&!o.contains(e)&&(e=D(t)),o.insertBefore(t.__e,e||null),e=t.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function Je(t,e,o,n){var r,i,s=t.key,c=t.type,a=e[o];if(a===null||a&&s==a.key&&c===a.type&&!(2&a.__u))return o;if(n>(a!=null&&!(2&a.__u)?1:0))for(r=o-1,i=o+1;r>=0||i<e.length;){if(r>=0){if((a=e[r])&&!(2&a.__u)&&s==a.key&&c===a.type)return r;r--}if(i<e.length){if((a=e[i])&&!(2&a.__u)&&s==a.key&&c===a.type)return i;i++}}return-1}function be(t,e,o){e[0]=="-"?t.setProperty(e,o??""):t[e]=o==null?"":typeof o!="number"||Ye.test(e)?o:o+"px"}function X(t,e,o,n,r){var i;e:if(e=="style")if(typeof o=="string")t.style.cssText=o;else{if(typeof n=="string"&&(t.style.cssText=n=""),n)for(e in n)o&&e in o||be(t.style,e,"");if(o)for(e in o)n&&o[e]===n[e]||be(t.style,e,o[e])}else if(e[0]=="o"&&e[1]=="n")i=e!=(e=e.replace(pe,"$1")),e=e.toLowerCase()in t||e=="onFocusOut"||e=="onFocusIn"?e.toLowerCase().slice(2):e.slice(2),t.l||(t.l={}),t.l[e+i]=o,o?n?o.u=n.u:(o.u=ee,t.addEventListener(e,i?oe:te,i)):t.removeEventListener(e,i?oe:te,i);else{if(r=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=o??"";break e}catch{}typeof o=="function"||(o==null||o===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&o==1?"":o))}}function ze(t){return function(e){if(this.l){var o=this.l[e.type+t];if(e.t==null)e.t=ee++;else if(e.t<o.u)return;return o(w.event?w.event(e):e)}}}function se(t,e,o,n,r,i,s,c,a,d){var _,l,h,u,m,C,g,p,v,b,z,S,P,F,M,E,L,x=e.type;if(e.constructor!==void 0)return null;128&o.__u&&(a=!!(32&o.__u),i=[c=e.__e=o.__e]),(_=w.__b)&&_(e);e:if(typeof x=="function")try{if(p=e.props,v="prototype"in x&&x.prototype.render,b=(_=x.contextType)&&n[_.__c],z=_?b?b.props.value:_.__:n,o.__c?g=(l=e.__c=o.__c).__=l.__E:(v?e.__c=l=new x(p,z):(e.__c=l=new K(p,z),l.constructor=x,l.render=Ze),b&&b.sub(l),l.props=p,l.state||(l.state={}),l.context=z,l.__n=n,h=l.__d=!0,l.__h=[],l._sb=[]),v&&l.__s==null&&(l.__s=l.state),v&&x.getDerivedStateFromProps!=null&&(l.__s==l.state&&(l.__s=$({},l.__s)),$(l.__s,x.getDerivedStateFromProps(p,l.__s))),u=l.props,m=l.state,l.__v=e,h)v&&x.getDerivedStateFromProps==null&&l.componentWillMount!=null&&l.componentWillMount(),v&&l.componentDidMount!=null&&l.__h.push(l.componentDidMount);else{if(v&&x.getDerivedStateFromProps==null&&p!==u&&l.componentWillReceiveProps!=null&&l.componentWillReceiveProps(p,z),!l.__e&&(l.shouldComponentUpdate!=null&&l.shouldComponentUpdate(p,l.__s,z)===!1||e.__v==o.__v)){for(e.__v!=o.__v&&(l.props=p,l.state=l.__s,l.__d=!1),e.__e=o.__e,e.__k=o.__k,e.__k.some(function(G){G&&(G.__=e)}),S=0;S<l._sb.length;S++)l.__h.push(l._sb[S]);l._sb=[],l.__h.length&&s.push(l);break e}l.componentWillUpdate!=null&&l.componentWillUpdate(p,l.__s,z),v&&l.componentDidUpdate!=null&&l.__h.push(function(){l.componentDidUpdate(u,m,C)})}if(l.context=z,l.props=p,l.__P=t,l.__e=!1,P=w.__r,F=0,v){for(l.state=l.__s,l.__d=!1,P&&P(e),_=l.render(l.props,l.state,l.context),M=0;M<l._sb.length;M++)l.__h.push(l._sb[M]);l._sb=[]}else do l.__d=!1,P&&P(e),_=l.render(l.props,l.state,l.context),l.state=l.__s;while(l.__d&&++F<25);l.state=l.__s,l.getChildContext!=null&&(n=$($({},n),l.getChildContext())),v&&!h&&l.getSnapshotBeforeUpdate!=null&&(C=l.getSnapshotBeforeUpdate(u,m)),c=ye(t,ne(E=_!=null&&_.type===q&&_.key==null?_.props.children:_)?E:[E],e,o,n,r,i,s,c,a,d),l.base=e.__e,e.__u&=-161,l.__h.length&&s.push(l),g&&(l.__E=l.__=null)}catch(G){if(e.__v=null,a||i!=null)if(G.then){for(e.__u|=a?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;i[i.indexOf(c)]=null,e.__e=c}else for(L=i.length;L--;)re(i[L]);else e.__e=o.__e,e.__k=o.__k;w.__e(G,e,o)}else i==null&&e.__v==o.__v?(e.__k=o.__k,e.__e=o.__e):c=e.__e=Qe(o.__e,e,o,n,r,i,s,a,d);return(_=w.diffed)&&_(e),128&e.__u?void 0:c}function Te(t,e,o){for(var n=0;n<o.length;n++)le(o[n],o[++n],o[++n]);w.__c&&w.__c(e,t),t.some(function(r){try{t=r.__h,r.__h=[],t.some(function(i){i.call(r)})}catch(i){w.__e(i,r.__v)}})}function Qe(t,e,o,n,r,i,s,c,a){var d,_,l,h,u,m,C,g=o.props,p=e.props,v=e.type;if(v=="svg"?r="http://www.w3.org/2000/svg":v=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((u=i[d])&&"setAttribute"in u==!!v&&(v?u.localName==v:u.nodeType==3)){t=u,i[d]=null;break}}if(t==null){if(v==null)return document.createTextNode(p);t=document.createElementNS(r,v,p.is&&p),c&&(w.__m&&w.__m(e,i),c=!1),i=null}if(v===null)g===p||c&&t.data===p||(t.data=p);else{if(i=i&&V.call(t.childNodes),g=o.props||R,!c&&i!=null)for(g={},d=0;d<t.attributes.length;d++)g[(u=t.attributes[d]).name]=u.value;for(d in g)if(u=g[d],d!="children"){if(d=="dangerouslySetInnerHTML")l=u;else if(!(d in p)){if(d=="value"&&"defaultValue"in p||d=="checked"&&"defaultChecked"in p)continue;X(t,d,null,u,r)}}for(d in p)u=p[d],d=="children"?h=u:d=="dangerouslySetInnerHTML"?_=u:d=="value"?m=u:d=="checked"?C=u:c&&typeof u!="function"||g[d]===u||X(t,d,u,g[d],r);if(_)c||l&&(_.__html===l.__html||_.__html===t.innerHTML)||(t.innerHTML=_.__html),e.__k=[];else if(l&&(t.innerHTML=""),ye(t,ne(h)?h:[h],e,o,n,v=="foreignObject"?"http://www.w3.org/1999/xhtml":r,i,s,i?i[0]:o.__k&&D(o,0),c,a),i!=null)for(d=i.length;d--;)re(i[d]);c||(d="value",v=="progress"&&m==null?t.removeAttribute("value"):m!==void 0&&(m!==t[d]||v=="progress"&&!m||v=="option"&&m!==g[d])&&X(t,d,m,g[d],r),d="checked",C!==void 0&&C!==t[d]&&X(t,d,C,g[d],r))}return t}function le(t,e,o){try{if(typeof t=="function"){var n=typeof t.__u=="function";n&&t.__u(),n&&e==null||(t.__u=t(e))}else t.current=e}catch(r){w.__e(r,o)}}function Pe(t,e,o){var n,r;if(w.unmount&&w.unmount(t),(n=t.ref)&&(n.current&&n.current!==t.__e||le(n,null,e)),(n=t.__c)!=null){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(i){w.__e(i,e)}n.base=n.__P=null}if(n=t.__k)for(r=0;r<n.length;r++)n[r]&&Pe(n[r],e,o||typeof t.type!="function");o||re(t.__e),t.__c=t.__=t.__e=void 0}function Ze(t,e,o){return this.constructor(t,o)}function et(t,e,o){var n,r,i,s;e==document&&(e=document.documentElement),w.__&&w.__(t,e),r=(n=!1)?null:e.__k,i=[],s=[],se(e,t=e.__k=Xe(q,null,[t]),r||R,R,e.namespaceURI,r?null:e.firstChild?V.call(e.childNodes):null,i,r?r.__e:e.firstChild,n,s),Te(i,t,s)}function xe(t,e){var o={__c:e="__cC"+ge++,__:t,Consumer:function(n,r){return n.children(r)},Provider:function(n){var r,i;return this.getChildContext||(r=new Set,(i={})[e]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(s){this.props.value!==s.value&&r.forEach(function(c){c.__e=!0,ie(c)})},this.sub=function(s){r.add(s);var c=s.componentWillUnmount;s.componentWillUnmount=function(){r&&r.delete(s),c&&c.call(s)}}),n.children}};return o.Provider.__=o.Consumer.contextType=o}V=we.slice,w={__e:function(t,e,o,n){for(var r,i,s;e=e.__;)if((r=e.__c)&&!r.__)try{if((i=r.constructor)&&i.getDerivedStateFromError!=null&&(r.setState(i.getDerivedStateFromError(t)),s=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(t,n||{}),s=r.__d),s)return r.__E=r}catch(c){t=c}throw t}},fe=0,K.prototype.setState=function(t,e){var o;o=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=$({},this.state),typeof t=="function"&&(t=t($({},o),this.props)),t&&$(o,t),t!=null&&this.__v&&(e&&this._sb.push(e),ie(this))},K.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),ie(this))},K.prototype.render=q,U=[],ve=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Z=function(t,e){return t.__v.__b-e.__v.__b},Y.__r=0,pe=/(PointerCapture)$|Capture$/i,ee=0,te=ze(!1),oe=ze(!0),ge=0;var tt=0;function f(t,e,o,n,r,i){e||(e={});var s,c,a=e;if("ref"in a)for(c in a={},e)c=="ref"?s=e[c]:a[c]=e[c];var d={type:t,props:a,key:o,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--tt,__i:-1,__u:0,__source:r,__self:i};if(typeof t=="function"&&(s=t.defaultProps))for(c in s)a[c]===void 0&&(a[c]=s[c]);return w.vnode&&w.vnode(d),d}var H,y,ce,Le,W=0,Ne=[],k=w,Se=k.__b,Me=k.__r,$e=k.diffed,Ae=k.__c,Ee=k.unmount,Ue=k.__;function j(t,e){k.__h&&k.__h(y,t,W||e),W=0;var o=y.__H||(y.__H={__:[],__h:[]});return t>=o.__.length&&o.__.push({}),o.__[t]}function A(t){return W=1,ot(We,t)}function ot(t,e,o){var n=j(H++,2);if(n.t=t,!n.__c&&(n.__=[We(void 0,e),function(c){var a=n.__N?n.__N[0]:n.__[0],d=n.t(a,c);a!==d&&(n.__N=[d,n.__[1]],n.__c.setState({}))}],n.__c=y,!y.u)){var r=function(c,a,d){if(!n.__c.__H)return!0;var _=n.__c.__H.__.filter(function(h){return!!h.__c});if(_.every(function(h){return!h.__N}))return!i||i.call(this,c,a,d);var l=n.__c.props!==c;return _.forEach(function(h){if(h.__N){var u=h.__[0];h.__=h.__N,h.__N=void 0,u!==h.__[0]&&(l=!0)}}),i&&i.call(this,c,a,d)||l};y.u=!0;var i=y.shouldComponentUpdate,s=y.componentWillUpdate;y.componentWillUpdate=function(c,a,d){if(this.__e){var _=i;i=void 0,r(c,a,d),i=_}s&&s.call(this,c,a,d)},y.shouldComponentUpdate=r}return n.__N||n.__}function N(t,e){var o=j(H++,3);!k.__s&&Re(o.__H,e)&&(o.__=t,o.i=e,y.__H.__h.push(o))}function I(t){return W=5,Fe(function(){return{current:t}},[])}function Fe(t,e){var o=j(H++,7);return Re(o.__H,e)&&(o.__=t(),o.__H=e,o.__h=t),o.__}function Ge(t,e){return W=8,Fe(function(){return t},e)}function De(t){var e=y.context[t.__c],o=j(H++,9);return o.c=t,e?(o.__==null&&(o.__=!0,e.sub(y)),e.props.value):t.__}function nt(){for(var t;t=Ne.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(J),t.__H.__h.forEach(ae),t.__H.__h=[]}catch(e){t.__H.__h=[],k.__e(e,t.__v)}}k.__b=function(t){y=null,Se&&Se(t)},k.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),Ue&&Ue(t,e)},k.__r=function(t){Me&&Me(t),H=0;var e=(y=t.__c).__H;e&&(ce===y?(e.__h=[],y.__h=[],e.__.forEach(function(o){o.__N&&(o.__=o.__N),o.i=o.__N=void 0})):(e.__h.forEach(J),e.__h.forEach(ae),e.__h=[],H=0)),ce=y},k.diffed=function(t){$e&&$e(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(Ne.push(e)!==1&&Le===k.requestAnimationFrame||((Le=k.requestAnimationFrame)||rt)(nt)),e.__H.__.forEach(function(o){o.i&&(o.__H=o.i),o.i=void 0})),ce=y=null},k.__c=function(t,e){e.some(function(o){try{o.__h.forEach(J),o.__h=o.__h.filter(function(n){return!n.__||ae(n)})}catch(n){e.some(function(r){r.__h&&(r.__h=[])}),e=[],k.__e(n,o.__v)}}),Ae&&Ae(t,e)},k.unmount=function(t){Ee&&Ee(t);var e,o=t.__c;o&&o.__H&&(o.__H.__.forEach(function(n){try{J(n)}catch(r){e=r}}),o.__H=void 0,e&&k.__e(e,o.__v))};var He=typeof requestAnimationFrame=="function";function rt(t){var e,o=function(){clearTimeout(n),He&&cancelAnimationFrame(e),setTimeout(t)},n=setTimeout(o,100);He&&(e=requestAnimationFrame(o))}function J(t){var e=y,o=t.__c;typeof o=="function"&&(t.__c=void 0,o()),y=e}function ae(t){var e=y;t.__c=t.__(),y=e}function Re(t,e){return!t||t.length!==e.length||e.some(function(o,n){return o!==t[n]})}function We(t,e){return typeof e=="function"?e(t):e}const it=t=>({saveGameData(e){try{const o={highestUnlockedLevel:e.highestUnlockedLevel,levelScores:e.levelScores,totalScore:e.totalScore,currentLevel:e.currentLevel};localStorage.setItem(t,JSON.stringify(o))}catch(o){console.error("Failed to save maze game data:",o)}},loadGameData(){try{const e=localStorage.getItem(t);if(!e)return null;const o=JSON.parse(e);return{highestUnlockedLevel:o.highestUnlockedLevel,levelScores:o.levelScores,totalScore:o.totalScore,currentLevel:o.currentLevel,currentTier:Math.ceil(o.currentLevel/12),highestUnlockedTier:Math.ceil(o.highestUnlockedLevel/12)}}catch(e){return console.error("Failed to load maze game data:",e),null}},resetGameData(){try{localStorage.removeItem(t)}catch(e){console.error("Failed to reset game state:",e)}}}),Ie=xe(void 0),st=({children:t,config:e})=>{const o=I(e),n=it(e.lcPrefix+"score"),r=n.loadGameData(),[i,s]=A({currentLevel:1,highestUnlockedLevel:1,currentTier:1,highestUnlockedTier:1,currentScore:0,totalScore:0,levelScores:{},isGameActive:!0,levelTransitioning:!1,maze:null,playerPosition:{row:0,col:0},exitPosition:{row:0,col:0},foodPositions:[],playerPath:[],visitCounts:{},moveCount:0,playerAtExit:!1,foodCollected:0,totalFoodCount:0,showClue:!1,...r||{}});N(()=>{n.saveGameData(i)},[i.highestUnlockedLevel,i.levelScores,i.totalScore,i.currentLevel]);const c=()=>{n.resetGameData(),s(a=>({...a,currentLevel:1,highestUnlockedLevel:1,currentTier:1,highestUnlockedTier:1,currentScore:0,totalScore:0,levelScores:{},isGameActive:!0,levelTransitioning:!1,playerPath:[],visitCounts:{},moveCount:0,foodCollected:0,showClue:!1}))};return f(Ie.Provider,{value:{gameState:i,setGameState:s,config:o,resetGame:c},children:t})},Oe=()=>{const t=De(Ie);if(!t)throw new Error("useGameContext must be used within a GameProvider");return t},Ve=xe(void 0),lt=({children:t})=>{const[e,o]=A(null),[n,r]=A(!1),[i,s]=A("info"),[c,a]=A(null),d=Ge(()=>{r(!1),c&&(clearTimeout(c),a(null))},[c]),_=Ge((l,h="info",u=3e3)=>{if(n&&d(),o(l),s(h),r(!0),u>0){const m=setTimeout(()=>{r(!1)},u);a(m)}},[n,d]);return f(Ve.Provider,{value:{message:e,visible:n,type:i,showToast:_,hideToast:d},children:t})},de=()=>{const t=De(Ve);if(!t)throw new Error("useToast must be used within a ToastProvider");return t},ct=({i18n:t,totalTiers:e,currentTier:o,highestUnlockedTier:n,onTierChange:r,disabled:i})=>f("div",{className:"tier-selector",children:f("select",{value:o,onChange:s=>{s.target&&s.target.value&&r(Number(s.target.value))},disabled:i,className:"tier-dropdown",children:Array.from({length:e},(s,c)=>c+1).map(s=>f("option",{value:s,disabled:s>n,children:[t.tier," ",s]},`tier-${s}`))})}),at=({i18n:t,levelsPerTier:e,currentTier:o,currentLevel:n,highestUnlockedLevel:r,onLevelChange:i,disabled:s})=>f("div",{className:"level-selector",children:f("select",{value:n,onChange:c=>{c.target&&c.target.value&&i(Number(c.target.value))},disabled:s,className:"level-dropdown",children:Array.from({length:e},(c,a)=>(o-1)*e+a+1).map(c=>f("option",{value:c,disabled:c>r,children:[t.level," ",c]},`level-${c}`))})}),_e=({isOpen:t,title:e,message:o,children:n,noConfirm:r=!1,noCancel:i=!1,confirmText:s="OK",cancelText:c="Cancel",onConfirm:a,onCancel:d})=>{const _=I(null);return N(()=>{const l=h=>{h.key==="Escape"&&d?.()};return t&&document.addEventListener("keydown",l),()=>{document.removeEventListener("keydown",l)}},[t,d]),f("div",{className:`maze-dialog-overlay ${t?"maze-dialog-visible":""}`,children:f("div",{className:"maze-dialog",ref:_,children:[f("div",{className:"maze-dialog-title",children:e}),f("div",{className:"maze-dialog-content",children:n||f("div",{className:"maze-dialog-message",children:o})}),f("div",{className:"maze-dialog-buttons",children:[!i&&f("button",{className:"maze-dialog-cancel",onClick:d,children:c}),!r&&f("button",{className:"maze-dialog-confirm",onClick:a,children:s})]})]})})};function dt(t){return function(){let e=t+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}const ue=[{size:8,seed:12345,method:"backtracking"},{size:8,seed:23456,method:"backtracking"},{size:8,seed:34567,method:"prims"},{size:8,seed:45678,method:"backtracking"},{size:9,seed:56789,method:"prims"},{size:9,seed:67890,method:"backtracking"},{size:9,seed:78901,method:"prims"},{size:9,seed:89012,method:"backtracking"},{size:10,seed:90123,method:"prims"},{size:11,seed:11111,method:"backtracking"},{size:12,seed:22222,method:"prims"},{size:13,seed:33333,method:"backtracking"},{size:12,seed:44444,method:"prims"},{size:12,seed:55555,method:"backtracking"},{size:12,seed:66666,method:"prims"},{size:12,seed:77777,method:"backtracking"},{size:13,seed:88888,method:"prims"},{size:13,seed:99999,method:"backtracking"},{size:13,seed:12121,method:"prims"},{size:14,seed:23232,method:"backtracking"},{size:15,seed:34343,method:"prims"},{size:16,seed:45454,method:"backtracking"},{size:17,seed:56565,method:"prims"},{size:18,seed:67676,method:"backtracking"},{size:19,seed:78787,method:"prims"},{size:20,seed:89898,method:"backtracking"},{size:21,seed:90909,method:"prims"},{size:22,seed:10101,method:"backtracking"},{size:23,seed:20202,method:"prims"},{size:25,seed:30303,method:"backtracking"},{size:27,seed:40404,method:"prims"},{size:29,seed:50505,method:"backtracking"},{size:31,seed:60606,method:"prims"},{size:33,seed:70707,method:"backtracking"},{size:37,seed:80808,method:"prims"},{size:40,seed:90909,method:"backtracking"},{size:41,seed:10111,method:"prims"},{size:42,seed:11121,method:"backtracking"},{size:43,seed:12131,method:"prims"},{size:44,seed:13141,method:"backtracking"},{size:45,seed:14151,method:"prims"},{size:46,seed:15161,method:"backtracking"},{size:47,seed:16171,method:"prims"},{size:48,seed:17181,method:"backtracking"},{size:49,seed:18191,method:"prims"},{size:50,seed:19201,method:"backtracking"},{size:51,seed:20211,method:"prims"},{size:52,seed:21221,method:"backtracking"},{size:53,seed:22231,method:"prims"},{size:54,seed:23241,method:"backtracking"},{size:55,seed:24251,method:"prims"},{size:56,seed:25261,method:"backtracking"},{size:57,seed:26271,method:"prims"},{size:58,seed:27281,method:"backtracking"},{size:59,seed:28291,method:"prims"},{size:60,seed:29301,method:"backtracking"},{size:62,seed:30311,method:"prims"},{size:64,seed:31321,method:"backtracking"},{size:66,seed:32331,method:"prims"},{size:68,seed:33341,method:"backtracking"}],he={lcPrefix:"maze-",i18n:{reset:"Reset",resetTip:"Reset all game data and highest score.",total:"Total",levelScore:"Level Score",bestScore:"Best Score",confirmReset:"Confirm Reset",confirmResetMessage:"Are you sure you want to reset the game? All progress will be lost.",cancel:"Cancel",close:"Close",confirm:"Confirm",resetDoneToast:"Game reset! Starting from Level 1...",confirmClue:"Confirm to turn on clue?",confirmClueMessage:"Are you sure you want to turn on clue? Your current score will be halved.",level:"Level",tier:"Tier",settings:"Settings",clueOn:"Clue: ON",clueOff:"Clue: OFF",clueTip:"Turn on clue will halve your current score in this level",foodCollectedToast:"Food collected! %NUM% remaining.",allFoodCollectedToast:"All food collected! Head to the exit.",warnNotAllFoodCollectedToast:"Collect all food first! %NUM% remaining.",levelCompleteToast:"Level completed! 🎉",tierUnlockedToast:"Tier %TIER% unlocked! 🎉",levelGoToast:"Level %LEVEL% - Go!",levelRestartToast:"Level restarted",cluePathEnabled:"Clue Path Enabled",cluePathDisabled:"Clue Path Disabled",useArrowKeyTips:"Use arrow keys to navigate the maze. Press'C' to toggle path clue."},renderConfig:{padding:10,wallWidth:4,wallColor:"#000000",exitColor:"#F44336",foodColor:"#4CAF50",clueColor:"rgb(255,0,0)",backgroundColor:"#ffffff",playerColor:"#4CAF50",playerAtExitColor:"#FFD700"},levelConfig:ue,levelsPerTier:12},_t=t=>t===1?2:t>=2&&t<=5?3:t>=6&&t<=11?4:t>=12&&t<=15?5:6;class ut{constructor(e,o){this.row=e,this.col=o}visited=!1;walls={top:!0,right:!0,bottom:!0,left:!0}}class ht{rows;cols;grid;seed;random;constructor(e,o,n){this.rows=e,this.cols=o,this.seed=n??Math.floor(Math.random()*1e6),this.random=dt(this.seed),this.grid=this.initializeGrid()}initializeGrid(){const e=[];for(let o=0;o<this.rows;o++){e[o]=[];for(let n=0;n<this.cols;n++)e[o][n]=new ut(o,n)}return e}isValid(e,o){return e>=0&&e<this.rows&&o>=0&&o<this.cols}getNeighbors(e,o){const n=[],r=[{r:-1,c:0},{r:0,c:1},{r:1,c:0},{r:0,c:-1}];for(const i of r){const s=e+i.r,c=o+i.c;this.isValid(s,c)&&n.push({row:s,col:c})}return n}getUnvisitedNeighbors(e,o){return this.getNeighbors(e,o).filter(n=>!this.grid[n.row][n.col].visited)}getVisitedNeighbors(e,o){return this.getNeighbors(e,o).filter(n=>this.grid[n.row][n.col].visited)}removeWall(e,o,n,r){const i=this.grid[e][o],s=this.grid[n][r];e===n+1?(i.walls.top=!1,s.walls.bottom=!1):e===n-1?(i.walls.bottom=!1,s.walls.top=!1):o===r+1?(i.walls.left=!1,s.walls.right=!1):o===r-1&&(i.walls.right=!1,s.walls.left=!1)}}class ft{maze;constructor(e,o,n,r,i={row:0,col:0},s={row:e-1,col:o-1}){switch(this.maze=new ht(e,o,r),n){case"backtracking":this.runBacktracking();break;case"prims":this.runPrims();break;default:throw new Error(`Unknown maze generation method: ${n}`)}this.addOpenings(i,s)}getMaze(){return this.maze}runBacktracking(){const e=[],o=this.randomNumber(this.maze.rows),n=this.randomNumber(this.maze.cols);let r={row:o,col:n};for(this.maze.grid[o][n].visited=!0,e.push(r);e.length>0;){r=e[e.length-1];const{row:i,col:s}=r,c=this.maze.getUnvisitedNeighbors(i,s);if(c.length>0){const a=this.randomPick(c),{row:d,col:_}=a;this.maze.removeWall(i,s,d,_),this.maze.grid[d][_].visited=!0,e.push(a)}else e.pop()}}runPrims(){const e=[],o=(i,s)=>{const c=this.maze.getNeighbors(i,s);for(const a of c)!this.maze.grid[a.row][a.col].visited&&!e.some(d=>d.row===a.row&&d.col===a.col)&&e.push(a)},n=this.randomNumber(this.maze.rows),r=this.randomNumber(this.maze.cols);for(this.maze.grid[n][r].visited=!0,o(n,r);e.length>0;){const i=this.randomNumber(e.length),s=e[i],{row:c,col:a}=s,d=this.maze.getVisitedNeighbors(c,a);if(d.length>0){const _=this.randomPick(d);this.maze.removeWall(c,a,_.row,_.col),this.maze.grid[c][a].visited=!0,o(c,a)}e.splice(i,1)}}addOpenings(e,o){this.maze.grid[e.row][e.col].walls.top=!1,this.maze.grid[o.row][o.col].walls.bottom=!1}randomNumber(e){return Math.floor(this.maze.random()*e)}randomPick(e){return e[Math.floor(this.maze.random()*e.length)]}}function mt(t,e,o,n,r,i){return new ft(t,e,o,n,r,i).getMaze()}const vt=(t,e,o)=>{if(!t.isValid(e,o))return!1;const n=t.grid[e][o];return!n.walls.top||!n.walls.right||!n.walls.bottom||!n.walls.left},Be=t=>{const e=t-1,o=ue[e];if(!o)return console.error(`Cannot find Level ${t}'s config.`),null;const n=o.size,r=n,i=n,s=o.seed,c=o.method,a=o.entry||{row:0,col:0},d=o.exit||{row:r-1,col:i-1},_=mt(r,i,c,s,a,d),l=_t(t),h=[];for(let u=0;u<l;u++){let m;do m={row:Math.floor(_.random()*r),col:Math.floor(_.random()*i)};while(m.row===a.row&&m.col===a.col||m.row===d.row&&m.col===d.col||!vt(_,m.row,m.col)||h.some(C=>C.row===m.row&&C.col===m.col));h.push(m)}return{maze:_,playerPosition:a,exitPosition:d,foodPositions:h,totalFoodCount:l,foodCollected:0,playerPath:[a],visitCounts:{[`${a.row},${a.col}`]:1},moveCount:0,currentScore:_.rows*_.cols,playerAtExit:!1,isGameActive:!0,levelTransitioning:!1}},qe=({gameState:t,setGameState:e})=>({generateCurrentLevelMaze:()=>{const n=Be(t.currentLevel);n&&e(r=>({...r,...n}))}}),pt=()=>{const{gameState:t,setGameState:e,resetGame:o,config:n}=Oe(),r=n.current.i18n,{showToast:i}=de(),{currentLevel:s,totalScore:c,levelScores:a,currentScore:d,showClue:_}=t,l=a[s]||0,h=n.current.levelsPerTier,u=Math.ceil(n.current.levelConfig.length/h),[m,C]=A(!1),[g,p]=A(!1),[v,b]=A(!1),{generateCurrentLevelMaze:z}=qe({gameState:t,setGameState:e}),S=T=>{const Q=(T-1)*h+1;Q<=t.highestUnlockedLevel&&(e(Ut=>({...Ut,currentTier:T})),P(Q))},P=T=>{T>0&&T<=t.highestUnlockedLevel&&(e(Q=>({...Q,currentLevel:T,currentTier:Math.ceil(T/h)})),z(),i(r.levelGoToast.replace("%LEVEL%",T.toString()),"success"))},F=()=>{C(!0)},M=()=>{C(!1)},E=()=>{b(!0)},L=()=>{b(!1)},x=()=>{e(T=>(i(T.showClue?r.cluePathDisabled:r.cluePathEnabled),{...T,showClue:!T.showClue,currentScore:Math.floor(T.currentScore/2)})),b(!1)},G=()=>{p(!0)},At=()=>{o(),p(!1),i(r.resetDoneToast)},Et=()=>{p(!1)};return f("div",{class:"game-panel-container",children:[f("div",{className:"game-controls",children:[f("div",{className:"selectors-container",children:[f(ct,{i18n:r,totalTiers:u,currentTier:t.currentTier,highestUnlockedTier:t.highestUnlockedTier,onTierChange:S,disabled:t.levelTransitioning}),f(at,{i18n:r,levelsPerTier:h,currentTier:t.currentTier,currentLevel:t.currentLevel,highestUnlockedLevel:t.highestUnlockedLevel,onLevelChange:P,disabled:t.levelTransitioning})]}),f("div",{className:"score-container",children:[f("div",{className:"score-box currentscore",children:[f("span",{className:"score-label",children:[r.levelScore,":"]}),f("span",{className:"score-data",children:d})]}),f("div",{className:"score-box bestscore",children:[f("span",{className:"score-label",children:[r.bestScore,":"]}),f("span",{className:"score-data",children:l})]}),f("div",{className:"score-box totalscore",children:[f("span",{className:"score-label",children:[r.total,":"]}),f("span",{className:"score-data",children:c})]})]})]}),f("div",{className:"game-settings",children:f("img",{onClick:F,src:"/settings.svg",alt:"Settings",className:"game-settings-icon"})}),f(_e,{isOpen:m,title:r.settings,noConfirm:!0,cancelText:r.close,onCancel:M,children:[f("div",{className:"settings-item-box",children:[f("div",{}),f("button",{className:`settings-clue-button ${_?"clue-on":"clue-off"}`,title:"Toggle Clue",onClick:E,children:_?r.clueOn:r.clueOff}),f("div",{className:"settings-item-tip",children:r.clueTip})]}),f("div",{className:"settings-item-box",children:[f("button",{className:"settings-reset-button",title:"Reset Game",onClick:G,children:r.reset}),f("div",{className:"settings-item-tip",children:r.resetTip})]})]}),f(_e,{isOpen:g,title:r.confirmReset,message:r.confirmResetMessage,confirmText:r.reset,cancelText:r.cancel,onConfirm:At,onCancel:Et}),f(_e,{isOpen:v,title:r.confirmClue,message:r.confirmClueMessage,confirmText:r.confirm,cancelText:r.cancel,onConfirm:x,onCancel:L})]})},gt=({message:t,visible:e,duration:o=2e3,onClose:n,position:r="center",type:i="info"})=>t?(N(()=>{let s;return e&&o>0&&n&&(s=setTimeout(()=>{n()},o)),()=>{s&&clearTimeout(s)}},[e,o,n]),f("div",{className:`toast-container position-${r}`,children:f("div",{className:`toast-message type-${i} ${e?"toast-visible":""}`,children:t})})):null,wt=(t,e,o)=>{N(()=>{const n=()=>{const r=t.current;if(!r)return;const i=r.parentElement;if(!i)return;const s=i.clientWidth,c=i.clientHeight,a=Math.min(s,c),d=window.devicePixelRatio||1;r.style.width=`${a}px`,r.style.height=`${a}px`,r.width=a*d,r.height=a*d,e(t,o.current)};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[t,e,o])},Ke={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]},Ct=({containerRef:t,gameState:e,setGameState:o,onFoodCollected:n,onFoodNotAllCollected:r})=>{N(()=>{const i=a=>{if(!e.isGameActive||!e.maze)return;const[d,_]=Ke[a],{row:l,col:h}=e.playerPosition,u=l+d,m=h+_;if(!e.maze.isValid(u,m))return;const C=e.maze.grid[l][h];if(d===-1&&C.walls.top||d===1&&C.walls.bottom||_===-1&&C.walls.left||_===1&&C.walls.right)return;const g={row:u,col:m},p=`${u},${m}`;o(v=>{const b=v.foodPositions.some(L=>L.row===u&&L.col===m);b&&n();const z=Math.max(0,v.currentScore-1),S=`${l},${h}-${u},${m}`,P=u===v.exitPosition.row&&m===v.exitPosition.col,F=b?v.foodCollected+1:v.foodCollected,M=F===v.totalFoodCount,E=P&&M;return P&&!M&&r(),{...v,playerPosition:g,playerPath:[...v.playerPath,g],foodPositions:v.foodPositions.filter(L=>!(L.row===u&&L.col===m)),foodCollected:F,currentScore:z,visitCounts:{...v.visitCounts,[S]:(v.visitCounts[S]||0)+1,[p]:(v.visitCounts[p]||0)+1},moveCount:v.moveCount+1,playerAtExit:P,isGameActive:!E,levelTransitioning:E}})},s=a=>{if(!e.isGameActive||!e.maze)return;const d=a.key;d in Ke&&(a.preventDefault(),i(d))},c=a=>{if(a.preventDefault(),!e.isGameActive||!e.maze)return;const d=a.touches[0],_=document.elementFromPoint(d.clientX,d.clientY);_&&(_.classList.contains("maze-up")?i("ArrowUp"):_.classList.contains("maze-down")?i("ArrowDown"):_.classList.contains("maze-left")?i("ArrowLeft"):_.classList.contains("maze-right")&&i("ArrowRight"))};return window.addEventListener("keydown",s),t.current?.addEventListener("touchstart",c,{passive:!1}),()=>{window.removeEventListener("keydown",s),t.current?.removeEventListener("touchstart",c)}},[e.isGameActive,e.maze,e.playerPosition,e.exitPosition])},yt=({gameState:t,setGameState:e,config:o,onLevelComplete:n,onTierUnlocked:r})=>{N(()=>{if(t.levelTransitioning){n();const s=setTimeout(()=>{i(t.currentScore)},1e3);return()=>clearTimeout(s)}},[t.levelTransitioning]);const i=s=>{if(t.currentLevel>=o.current.levelConfig.length)return;const c=t.currentLevel+1,a=Math.ceil(c/o.current.levelsPerTier),d=Be(c);d&&e(_=>{const l=Math.ceil(_.currentLevel/o.current.levelsPerTier);a>l&&r(a);const h={..._.levelScores};return h[_.currentLevel]=Math.max(s,h[_.currentLevel]||0),{..._,...d,currentLevel:c,currentTier:a,highestUnlockedLevel:Math.max(_.highestUnlockedLevel,c),highestUnlockedTier:Math.max(_.highestUnlockedTier,a),levelScores:h,totalScore:Object.values(h).reduce((u,m)=>u+m,0),showClue:!1,isGameActive:!0,levelTransitioning:!1}})};return{handleLevelComplete:i}};function kt(t,e){const{ctx:o,width:n,height:r,maze:i}=t;e.playerColor=t.playerAtExit?e.playerAtExitColor:e.playerColor;const{padding:s,wallWidth:c,wallColor:a,playerColor:d,exitColor:_,foodColor:l,clueColor:h,backgroundColor:u}=e,m=i.cols,C=i.rows,g=(n-s*2)/m,p=(r-s*2)/C;o.clearRect(0,0,n,r),o.save(),o.fillStyle=u,o.fillRect(0,0,n,r),o.restore(),t.showClue&&t.playerPath&&t.playerPath.length>0&&Lt(t,{cellWidth:g,cellHeight:p,padding:s,clueColor:h}),bt(t,{cellWidth:g,cellHeight:p,padding:s,wallColor:a,wallWidth:c}),Pt(t,{cellWidth:g,cellHeight:p,padding:s,foodColor:l}),t.playerAtExit||Tt(t,{cellWidth:g,cellHeight:p,padding:s,exitColor:_}),zt(t,{cellWidth:g,cellHeight:p,padding:s,playerColor:d})}function bt(t,e){const{ctx:o,maze:n}=t,{cellWidth:r,cellHeight:i,padding:s,wallColor:c,wallWidth:a}=e;o.save(),o.strokeStyle=c,o.lineWidth=a,o.lineCap="round",o.beginPath();for(let d=0;d<n.rows;d++)for(let _=0;_<n.cols;_++){const l=n.grid[d][_],h=s+_*r,u=s+d*i;l.walls.top&&(o.moveTo(h,u),o.lineTo(h+r,u)),l.walls.right&&(o.moveTo(h+r,u),o.lineTo(h+r,u+i)),l.walls.bottom&&(o.moveTo(h+r,u+i),o.lineTo(h,u+i)),l.walls.left&&(o.moveTo(h,u+i),o.lineTo(h,u))}o.stroke(),o.restore()}function zt(t,e){const{ctx:o,playerPosition:n}=t,{cellWidth:r,cellHeight:i,padding:s,playerColor:c}=e,{x:a,y:d}=O(n.row,n.col,r,i,s),_=Math.min(r,i)*.35;o.save(),o.fillStyle=c,o.beginPath(),o.arc(a,d,_,0,Math.PI*2),o.fill(),o.restore()}function Tt(t,e){const{ctx:o,exitPosition:n}=t,{cellWidth:r,cellHeight:i,padding:s,exitColor:c}=e,{x:a,y:d}=O(n.row,n.col,r,i,s),_=Math.min(r,i)*.35;o.save(),o.fillStyle=c,o.beginPath(),o.arc(a,d,_,0,Math.PI*2),o.fill(),o.restore()}function Pt(t,e){const{ctx:o,foodPositions:n}=t,{cellWidth:r,cellHeight:i,padding:s,foodColor:c}=e;o.fillStyle=c;const a=Math.min(r,i)*.25;n.forEach(d=>{const{x:_,y:l}=O(d.row,d.col,r,i,s);xt(o,_,l,a*1.2,5,a*.6)})}function xt(t,e,o,n,r,i){t.save(),t.beginPath();for(let s=0;s<r*2;s++){const c=s%2===0?n:i,a=Math.PI*s/r;t.lineTo(e+c*Math.sin(a),o+c*Math.cos(a))}t.closePath(),t.fill(),t.restore()}function Lt(t,e){const{ctx:o,playerPath:n,visitCounts:r}=t,{cellWidth:i,cellHeight:s,padding:c,clueColor:a}=e;if(!(!n||n.length<2||!r)){o.save();for(let d=1;d<n.length;d++){const _=n[d-1],l=n[d],h=`${_.row},${_.col}-${l.row},${l.col}`,u=`${l.row},${l.col}-${_.row},${_.col}`,m=(r[h]||0)+(r[u]||0),C=Math.min(.2+m*.1,.9),g=Math.max(3,i*.1)+m*.5;try{o.strokeStyle=a.replace(")",`, ${C})`).replace("rgb(","rgba(")}catch{o.strokeStyle=`rgba(255, 0, 0, ${C})`}o.lineWidth=g,o.lineCap="round",o.lineJoin="round";const{x:p,y:v}=O(_.row,_.col,i,s,c),{x:b,y:z}=O(l.row,l.col,i,s,c);o.beginPath(),o.moveTo(p,v),o.lineTo(b,z),o.stroke()}o.restore()}}function O(t,e,o,n,r){return{x:r+e*o+o/2,y:r+t*n+n/2}}const Nt=()=>{const{message:t,visible:e,type:o,hideToast:n}=de();return f(gt,{message:t,visible:e,type:o,onClose:n,position:"top"})},St=()=>{const{gameState:t,setGameState:e,config:o}=Oe(),n=I(null),r=I(null),i=I(t),s=o.current.i18n,{showToast:c}=de();N(()=>{i.current=t},[t]);const a=()=>{const h=t.totalFoodCount-t.foodCollected-1;if(h>0){c(s.foodCollectedToast.replace("%NUM%",h.toString()),"success");return}c(s.allFoodCollectedToast,"success")},d=()=>{const h=t.totalFoodCount-t.foodCollected-1;c(s.warnNotAllFoodCollectedToast.replace("%NUM%",h.toString()),"warning")},_=(h,u)=>{const m=h.current?.getContext("2d");m&&u.maze&&kt({ctx:m,width:h.current.width,height:h.current.height,maze:u.maze,playerPosition:u.playerPosition,exitPosition:u.exitPosition,foodPositions:u.foodPositions,showClue:u.showClue,playerPath:u.playerPath,visitCounts:u.visitCounts,playerAtExit:u.playerAtExit},o.current.renderConfig||{})};N(()=>{c(s.useArrowKeyTips,"info",3e3)},[]),wt(r,_,i);const{generateCurrentLevelMaze:l}=qe({gameState:t,setGameState:e});return Ct({containerRef:n,gameState:t,setGameState:e,onFoodCollected:a,onFoodNotAllCollected:d}),yt({gameState:t,setGameState:e,config:o,onLevelComplete:()=>{c(s.levelCompleteToast,"success")},onTierUnlocked:h=>{c(s.tierUnlockedToast.replace("%TIER%",h.toString()),"success")}}),N(()=>{t.isGameActive&&!t.levelTransitioning&&l()},[t.currentLevel,t.isGameActive,t.levelTransitioning]),N(()=>{r.current&&t.maze&&_(r,t)},[t]),f("div",{className:"maze-game-container",children:[f(Nt,{}),f(pt,{}),f("div",{className:"maze-canvas-container",ref:n,children:[f("canvas",{ref:r,className:"maze-game-canvas"}),f("div",{className:"maze-touch-area maze-up"}),f("div",{className:"maze-touch-area maze-down"}),f("div",{className:"maze-touch-area maze-left"}),f("div",{className:"maze-touch-area maze-right"})]})]})};function Mt(){return f(lt,{children:f(St,{})})}function $t({config:t={}}){const e={...he.i18n,...t.i18n||{}},o={...he.renderConfig,...t.renderConfig||{}},n=t.levelConfig||ue;return t={...he,...t,i18n:e,levelConfig:n,renderConfig:o},f(st,{config:t,children:f(Mt,{})})}return{async init(t,e){const o=typeof t=="string"?document.querySelector(t):t;if(!o){console.warn("Cannot find the root element");const a=document.createElement("div");a.style.textAlign="center",a.style.padding="20px",a.innerHTML="Cannot find the root element",document.body.append(a);return}let{root:n=location.origin}=e;n.at(-1)!=="/"&&(n+="/");const r=document.createElement("div"),i=document.createElement("div");r.style.cssText=`
|
|
1
|
+
var Maze=function(){"use strict";var q,v,ye,F,we,Ce,ne,ke,re,ie,se,be,W={},ze=[],ft=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,K=Array.isArray;function U(e,t){for(var o in t)e[o]=t[o];return e}function le(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function G(e,t,o){var n,r,i,s={};for(i in t)i=="key"?n=t[i]:i=="ref"?r=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?q.call(arguments,2):o),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return X(e,s,n,r,null)}function X(e,t,o,n,r){var i={type:e,props:t,key:o,ref:n,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++ye,__i:-1,__u:0};return r==null&&v.vnode!=null&&v.vnode(i),i}function D(e){return e.children}function S(e,t){this.props=e,this.context=t}function O(e,t){if(t==null)return e.__?O(e.__,e.__i+1):null;for(var o;t<e.__k.length;t++)if((o=e.__k[t])!=null&&o.__e!=null)return o.__e;return typeof e.type=="function"?O(e):null}function Te(e){var t,o;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((o=e.__k[t])!=null&&o.__e!=null){e.__e=e.__c.base=o.__e;break}return Te(e)}}function ae(e){(!e.__d&&(e.__d=!0)&&F.push(e)&&!Y.__r++||we!==v.debounceRendering)&&((we=v.debounceRendering)||Ce)(Y)}function Y(){var e,t,o,n,r,i,s,l;for(F.sort(ne);e=F.shift();)e.__d&&(t=F.length,n=void 0,i=(r=(o=e).__v).__e,s=[],l=[],o.__P&&((n=U({},r)).__v=r.__v+1,v.vnode&&v.vnode(n),ce(o.__P,n,r,o.__n,o.__P.namespaceURI,32&r.__u?[i]:null,s,i??O(r),!!(32&r.__u),l),n.__v=r.__v,n.__.__k[n.__i]=n,Se(s,n,l),n.__e!=i&&Te(n)),F.length>t&&F.sort(ne));Y.__r=0}function Le(e,t,o,n,r,i,s,l,a,c,u){var _,h,d,m,y,w,g=n&&n.__k||ze,p=t.length;for(a=mt(o,t,g,a,p),_=0;_<p;_++)(d=o.__k[_])!=null&&(h=d.__i===-1?W:g[d.__i]||W,d.__i=_,w=ce(e,d,h,r,i,s,l,a,c,u),m=d.__e,d.ref&&h.ref!=d.ref&&(h.ref&&_e(h.ref,null,d),u.push(d.ref,d.__c||m,d)),y==null&&m!=null&&(y=m),4&d.__u||h.__k===d.__k?a=Pe(d,a,e):typeof d.type=="function"&&w!==void 0?a=w:m&&(a=m.nextSibling),d.__u&=-7);return o.__e=y,a}function mt(e,t,o,n,r){var i,s,l,a,c,u=o.length,_=u,h=0;for(e.__k=new Array(r),i=0;i<r;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(a=i+h,(s=e.__k[i]=typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?X(null,s,null,null,null):K(s)?X(D,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?X(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):s).__=e,s.__b=e.__b+1,l=null,(c=s.__i=pt(s,o,a,_))!==-1&&(_--,(l=o[c])&&(l.__u|=2)),l==null||l.__v===null?(c==-1&&h--,typeof s.type!="function"&&(s.__u|=4)):c!=a&&(c==a-1?h--:c==a+1?h++:(c>a?h--:h++,s.__u|=4))):e.__k[i]=null;if(_)for(i=0;i<u;i++)(l=o[i])!=null&&!(2&l.__u)&&(l.__e==n&&(n=O(l)),$e(l,l));return n}function Pe(e,t,o){var n,r;if(typeof e.type=="function"){for(n=e.__k,r=0;n&&r<n.length;r++)n[r]&&(n[r].__=e,t=Pe(n[r],t,o));return t}e.__e!=t&&(t&&e.type&&!o.contains(t)&&(t=O(e)),o.insertBefore(e.__e,t||null),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function J(e,t){return t=t||[],e==null||typeof e=="boolean"||(K(e)?e.some(function(o){J(o,t)}):t.push(e)),t}function pt(e,t,o,n){var r,i,s=e.key,l=e.type,a=t[o];if(a===null||a&&s==a.key&&l===a.type&&!(2&a.__u))return o;if(n>(a!=null&&!(2&a.__u)?1:0))for(r=o-1,i=o+1;r>=0||i<t.length;){if(r>=0){if((a=t[r])&&!(2&a.__u)&&s==a.key&&l===a.type)return r;r--}if(i<t.length){if((a=t[i])&&!(2&a.__u)&&s==a.key&&l===a.type)return i;i++}}return-1}function xe(e,t,o){t[0]=="-"?e.setProperty(t,o??""):e[t]=o==null?"":typeof o!="number"||ft.test(t)?o:o+"px"}function Z(e,t,o,n,r){var i;e:if(t=="style")if(typeof o=="string")e.style.cssText=o;else{if(typeof n=="string"&&(e.style.cssText=n=""),n)for(t in n)o&&t in o||xe(e.style,t,"");if(o)for(t in o)n&&o[t]===n[t]||xe(e.style,t,o[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(ke,"$1")),t=t.toLowerCase()in e||t=="onFocusOut"||t=="onFocusIn"?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=o,o?n?o.u=n.u:(o.u=re,e.addEventListener(t,i?se:ie,i)):e.removeEventListener(t,i?se:ie,i);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=o??"";break e}catch{}typeof o=="function"||(o==null||o===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&o==1?"":o))}}function Ne(e){return function(t){if(this.l){var o=this.l[t.type+e];if(t.t==null)t.t=re++;else if(t.t<o.u)return;return o(v.event?v.event(t):t)}}}function ce(e,t,o,n,r,i,s,l,a,c){var u,_,h,d,m,y,w,g,p,z,b,M,P,R,A,E,x,T=t.type;if(t.constructor!==void 0)return null;128&o.__u&&(a=!!(32&o.__u),i=[l=t.__e=o.__e]),(u=v.__b)&&u(t);e:if(typeof T=="function")try{if(g=t.props,p="prototype"in T&&T.prototype.render,z=(u=T.contextType)&&n[u.__c],b=u?z?z.props.value:u.__:n,o.__c?w=(_=t.__c=o.__c).__=_.__E:(p?t.__c=_=new T(g,b):(t.__c=_=new S(g,b),_.constructor=T,_.render=gt),z&&z.sub(_),_.props=g,_.state||(_.state={}),_.context=b,_.__n=n,h=_.__d=!0,_.__h=[],_._sb=[]),p&&_.__s==null&&(_.__s=_.state),p&&T.getDerivedStateFromProps!=null&&(_.__s==_.state&&(_.__s=U({},_.__s)),U(_.__s,T.getDerivedStateFromProps(g,_.__s))),d=_.props,m=_.state,_.__v=t,h)p&&T.getDerivedStateFromProps==null&&_.componentWillMount!=null&&_.componentWillMount(),p&&_.componentDidMount!=null&&_.__h.push(_.componentDidMount);else{if(p&&T.getDerivedStateFromProps==null&&g!==d&&_.componentWillReceiveProps!=null&&_.componentWillReceiveProps(g,b),!_.__e&&(_.shouldComponentUpdate!=null&&_.shouldComponentUpdate(g,_.__s,b)===!1||t.__v==o.__v)){for(t.__v!=o.__v&&(_.props=g,_.state=_.__s,_.__d=!1),t.__e=o.__e,t.__k=o.__k,t.__k.some(function(H){H&&(H.__=t)}),M=0;M<_._sb.length;M++)_.__h.push(_._sb[M]);_._sb=[],_.__h.length&&s.push(_);break e}_.componentWillUpdate!=null&&_.componentWillUpdate(g,_.__s,b),p&&_.componentDidUpdate!=null&&_.__h.push(function(){_.componentDidUpdate(d,m,y)})}if(_.context=b,_.props=g,_.__P=e,_.__e=!1,P=v.__r,R=0,p){for(_.state=_.__s,_.__d=!1,P&&P(t),u=_.render(_.props,_.state,_.context),A=0;A<_._sb.length;A++)_.__h.push(_._sb[A]);_._sb=[]}else do _.__d=!1,P&&P(t),u=_.render(_.props,_.state,_.context),_.state=_.__s;while(_.__d&&++R<25);_.state=_.__s,_.getChildContext!=null&&(n=U(U({},n),_.getChildContext())),p&&!h&&_.getSnapshotBeforeUpdate!=null&&(y=_.getSnapshotBeforeUpdate(d,m)),l=Le(e,K(E=u!=null&&u.type===D&&u.key==null?u.props.children:u)?E:[E],t,o,n,r,i,s,l,a,c),_.base=t.__e,t.__u&=-161,_.__h.length&&s.push(_),w&&(_.__E=_.__=null)}catch(H){if(t.__v=null,a||i!=null)if(H.then){for(t.__u|=a?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i[i.indexOf(l)]=null,t.__e=l}else for(x=i.length;x--;)le(i[x]);else t.__e=o.__e,t.__k=o.__k;v.__e(H,t,o)}else i==null&&t.__v==o.__v?(t.__k=o.__k,t.__e=o.__e):l=t.__e=vt(o.__e,t,o,n,r,i,s,a,c);return(u=v.diffed)&&u(t),128&t.__u?void 0:l}function Se(e,t,o){for(var n=0;n<o.length;n++)_e(o[n],o[++n],o[++n]);v.__c&&v.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(i){i.call(r)})}catch(i){v.__e(i,r.__v)}})}function vt(e,t,o,n,r,i,s,l,a){var c,u,_,h,d,m,y,w=o.props,g=t.props,p=t.type;if(p=="svg"?r="http://www.w3.org/2000/svg":p=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),i!=null){for(c=0;c<i.length;c++)if((d=i[c])&&"setAttribute"in d==!!p&&(p?d.localName==p:d.nodeType==3)){e=d,i[c]=null;break}}if(e==null){if(p==null)return document.createTextNode(g);e=document.createElementNS(r,p,g.is&&g),l&&(v.__m&&v.__m(t,i),l=!1),i=null}if(p===null)w===g||l&&e.data===g||(e.data=g);else{if(i=i&&q.call(e.childNodes),w=o.props||W,!l&&i!=null)for(w={},c=0;c<e.attributes.length;c++)w[(d=e.attributes[c]).name]=d.value;for(c in w)if(d=w[c],c!="children"){if(c=="dangerouslySetInnerHTML")_=d;else if(!(c in g)){if(c=="value"&&"defaultValue"in g||c=="checked"&&"defaultChecked"in g)continue;Z(e,c,null,d,r)}}for(c in g)d=g[c],c=="children"?h=d:c=="dangerouslySetInnerHTML"?u=d:c=="value"?m=d:c=="checked"?y=d:l&&typeof d!="function"||w[c]===d||Z(e,c,d,w[c],r);if(u)l||_&&(u.__html===_.__html||u.__html===e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(_&&(e.innerHTML=""),Le(e,K(h)?h:[h],t,o,n,p=="foreignObject"?"http://www.w3.org/1999/xhtml":r,i,s,i?i[0]:o.__k&&O(o,0),l,a),i!=null)for(c=i.length;c--;)le(i[c]);l||(c="value",p=="progress"&&m==null?e.removeAttribute("value"):m!==void 0&&(m!==e[c]||p=="progress"&&!m||p=="option"&&m!==w[c])&&Z(e,c,m,w[c],r),c="checked",y!==void 0&&y!==e[c]&&Z(e,c,y,w[c],r))}return e}function _e(e,t,o){try{if(typeof e=="function"){var n=typeof e.__u=="function";n&&e.__u(),n&&t==null||(e.__u=e(t))}else e.current=t}catch(r){v.__e(r,o)}}function $e(e,t,o){var n,r;if(v.unmount&&v.unmount(e),(n=e.ref)&&(n.current&&n.current!==e.__e||_e(n,null,t)),(n=e.__c)!=null){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(i){v.__e(i,t)}n.base=n.__P=null}if(n=e.__k)for(r=0;r<n.length;r++)n[r]&&$e(n[r],t,o||typeof e.type!="function");o||le(e.__e),e.__c=e.__=e.__e=void 0}function gt(e,t,o){return this.constructor(e,o)}function yt(e,t,o){var n,r,i,s;t==document&&(t=document.documentElement),v.__&&v.__(e,t),r=(n=!1)?null:t.__k,i=[],s=[],ce(t,e=t.__k=G(D,null,[e]),r||W,W,t.namespaceURI,r?null:t.firstChild?q.call(t.childNodes):null,i,r?r.__e:t.firstChild,n,s),Se(i,e,s)}function Me(e,t){var o={__c:t="__cC"+be++,__:e,Consumer:function(n,r){return n.children(r)},Provider:function(n){var r,i;return this.getChildContext||(r=new Set,(i={})[t]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(s){this.props.value!==s.value&&r.forEach(function(l){l.__e=!0,ae(l)})},this.sub=function(s){r.add(s);var l=s.componentWillUnmount;s.componentWillUnmount=function(){r&&r.delete(s),l&&l.call(s)}}),n.children}};return o.Provider.__=o.Consumer.contextType=o}q=ze.slice,v={__e:function(e,t,o,n){for(var r,i,s;t=t.__;)if((r=t.__c)&&!r.__)try{if((i=r.constructor)&&i.getDerivedStateFromError!=null&&(r.setState(i.getDerivedStateFromError(e)),s=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,n||{}),s=r.__d),s)return r.__E=r}catch(l){e=l}throw e}},ye=0,S.prototype.setState=function(e,t){var o;o=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=U({},this.state),typeof e=="function"&&(e=e(U({},o),this.props)),e&&U(o,e),e!=null&&this.__v&&(t&&this._sb.push(t),ae(this))},S.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),ae(this))},S.prototype.render=D,F=[],Ce=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ne=function(e,t){return e.__v.__b-t.__v.__b},Y.__r=0,ke=/(PointerCapture)$|Capture$/i,re=0,ie=Ne(!1),se=Ne(!0),be=0;var wt=0;function f(e,t,o,n,r,i){t||(t={});var s,l,a=t;if("ref"in a)for(l in a={},t)l=="ref"?s=t[l]:a[l]=t[l];var c={type:e,props:a,key:o,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--wt,__i:-1,__u:0,__source:r,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)a[l]===void 0&&(a[l]=s[l]);return v.vnode&&v.vnode(c),c}var I,C,ue,Ae,V=0,Ee=[],k=v,Ue=k.__b,Fe=k.__r,Re=k.diffed,He=k.__c,Ge=k.unmount,De=k.__;function Q(e,t){k.__h&&k.__h(C,e,V||t),V=0;var o=C.__H||(C.__H={__:[],__h:[]});return e>=o.__.length&&o.__.push({}),o.__[e]}function $(e){return V=1,Ct(Be,e)}function Ct(e,t,o){var n=Q(I++,2);if(n.t=e,!n.__c&&(n.__=[o?o(t):Be(void 0,t),function(l){var a=n.__N?n.__N[0]:n.__[0],c=n.t(a,l);a!==c&&(n.__N=[c,n.__[1]],n.__c.setState({}))}],n.__c=C,!C.u)){var r=function(l,a,c){if(!n.__c.__H)return!0;var u=n.__c.__H.__.filter(function(h){return!!h.__c});if(u.every(function(h){return!h.__N}))return!i||i.call(this,l,a,c);var _=n.__c.props!==l;return u.forEach(function(h){if(h.__N){var d=h.__[0];h.__=h.__N,h.__N=void 0,d!==h.__[0]&&(_=!0)}}),i&&i.call(this,l,a,c)||_};C.u=!0;var i=C.shouldComponentUpdate,s=C.componentWillUpdate;C.componentWillUpdate=function(l,a,c){if(this.__e){var u=i;i=void 0,r(l,a,c),i=u}s&&s.call(this,l,a,c)},C.shouldComponentUpdate=r}return n.__N||n.__}function L(e,t){var o=Q(I++,3);!k.__s&&Ve(o.__H,t)&&(o.__=e,o.i=t,C.__H.__h.push(o))}function B(e){return V=5,de(function(){return{current:e}},[])}function de(e,t){var o=Q(I++,7);return Ve(o.__H,t)&&(o.__=e(),o.__H=t,o.__h=e),o.__}function Oe(e,t){return V=8,de(function(){return e},t)}function Ie(e){var t=C.context[e.__c],o=Q(I++,9);return o.c=e,t?(o.__==null&&(o.__=!0,t.sub(C)),t.props.value):e.__}function kt(){for(var e;e=Ee.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ee),e.__H.__h.forEach(he),e.__H.__h=[]}catch(t){e.__H.__h=[],k.__e(t,e.__v)}}k.__b=function(e){C=null,Ue&&Ue(e)},k.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),De&&De(e,t)},k.__r=function(e){Fe&&Fe(e),I=0;var t=(C=e.__c).__H;t&&(ue===C?(t.__h=[],C.__h=[],t.__.forEach(function(o){o.__N&&(o.__=o.__N),o.i=o.__N=void 0})):(t.__h.forEach(ee),t.__h.forEach(he),t.__h=[],I=0)),ue=C},k.diffed=function(e){Re&&Re(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Ee.push(t)!==1&&Ae===k.requestAnimationFrame||((Ae=k.requestAnimationFrame)||bt)(kt)),t.__H.__.forEach(function(o){o.i&&(o.__H=o.i),o.i=void 0})),ue=C=null},k.__c=function(e,t){t.some(function(o){try{o.__h.forEach(ee),o.__h=o.__h.filter(function(n){return!n.__||he(n)})}catch(n){t.some(function(r){r.__h&&(r.__h=[])}),t=[],k.__e(n,o.__v)}}),He&&He(e,t)},k.unmount=function(e){Ge&&Ge(e);var t,o=e.__c;o&&o.__H&&(o.__H.__.forEach(function(n){try{ee(n)}catch(r){t=r}}),o.__H=void 0,t&&k.__e(t,o.__v))};var We=typeof requestAnimationFrame=="function";function bt(e){var t,o=function(){clearTimeout(n),We&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(o,100);We&&(t=requestAnimationFrame(o))}function ee(e){var t=C,o=e.__c;typeof o=="function"&&(e.__c=void 0,o()),C=t}function he(e){var t=C;e.__c=e.__(),C=t}function Ve(e,t){return!e||e.length!==t.length||t.some(function(o,n){return o!==e[n]})}function Be(e,t){return typeof t=="function"?t(e):t}const zt=e=>({saveGameData(t){try{const o={highestUnlockedLevel:t.highestUnlockedLevel,levelScores:t.levelScores,totalScore:t.totalScore,currentLevel:t.currentLevel};localStorage.setItem(e,JSON.stringify(o))}catch(o){console.error("Failed to save maze game data:",o)}},loadGameData(){try{const t=localStorage.getItem(e);if(!t)return null;const o=JSON.parse(t);return{highestUnlockedLevel:o.highestUnlockedLevel,levelScores:o.levelScores,totalScore:o.totalScore,currentLevel:o.currentLevel,currentTier:Math.ceil(o.currentLevel/12),highestUnlockedTier:Math.ceil(o.highestUnlockedLevel/12)}}catch(t){return console.error("Failed to load maze game data:",t),null}},resetGameData(){try{localStorage.removeItem(e)}catch(t){console.error("Failed to reset game state:",t)}}}),je=Me(void 0),Tt=({children:e,config:t})=>{const o=B(t),n=zt(t.lcPrefix+"score"),r=n.loadGameData(),[i,s]=$({currentLevel:1,highestUnlockedLevel:1,currentTier:1,highestUnlockedTier:1,currentScore:0,totalScore:0,levelScores:{},isGameActive:!0,levelTransitioning:!1,maze:null,playerPosition:{row:0,col:0},exitPosition:{row:0,col:0},foodPositions:[],playerPath:[],visitCounts:{},moveCount:0,playerAtExit:!1,foodCollected:0,totalFoodCount:0,showClue:!1,...r||{}});L(()=>{n.saveGameData(i)},[i.highestUnlockedLevel,i.levelScores,i.totalScore,i.currentLevel]);const l=()=>{n.resetGameData(),s(a=>({...a,currentLevel:1,highestUnlockedLevel:1,currentTier:1,highestUnlockedTier:1,currentScore:0,totalScore:0,levelScores:{},isGameActive:!0,levelTransitioning:!1,playerPath:[],visitCounts:{},moveCount:0,foodCollected:0,showClue:!1}))};return f(je.Provider,{value:{gameState:i,setGameState:s,config:o,resetGame:l},children:e})},qe=()=>{const e=Ie(je);if(!e)throw new Error("useGameContext must be used within a GameProvider");return e};function Ke(e,t){for(var o in t)e[o]=t[o];return e}function Xe(e,t){for(var o in e)if(o!=="__source"&&!(o in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function Ye(e,t){this.props=e,this.context=t}(Ye.prototype=new S).isPureReactComponent=!0,Ye.prototype.shouldComponentUpdate=function(e,t){return Xe(this.props,e)||Xe(this.state,t)};var Je=v.__b;v.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Je&&Je(e)};var Lt=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Ze(e){function t(o){var n=Ke({},o);return delete n.ref,e(n,o.ref||null)}return t.$$typeof=Lt,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Pt=v.__e;v.__e=function(e,t,o,n){if(e.then){for(var r,i=t;i=i.__;)if((r=i.__c)&&r.__c)return t.__e==null&&(t.__e=o.__e,t.__k=o.__k),r.__c(e,t)}Pt(e,t,o,n)};var Qe=v.unmount;function et(e,t,o){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=Ke({},e)).__c!=null&&(e.__c.__P===o&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return et(n,t,o)})),e}function tt(e,t,o){return e&&o&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return tt(n,t,o)}),e.__c&&e.__c.__P===t&&(e.__e&&o.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=o)),e}function fe(){this.__u=0,this.o=null,this.__b=null}function ot(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function te(){this.i=null,this.l=null}v.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Qe&&Qe(e)},(fe.prototype=new S).__c=function(e,t){var o=t.__c,n=this;n.o==null&&(n.o=[]),n.o.push(o);var r=ot(n.__v),i=!1,s=function(){i||(i=!0,o.__R=null,r?r(l):l())};o.__R=s;var l=function(){if(!--n.__u){if(n.state.__a){var a=n.state.__a;n.__v.__k[0]=tt(a,a.__c.__P,a.__c.__O)}var c;for(n.setState({__a:n.__b=null});c=n.o.pop();)c.forceUpdate()}};n.__u++||32&t.__u||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(s,s)},fe.prototype.componentWillUnmount=function(){this.o=[]},fe.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var o=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=et(this.__b,o,n.__O=n.__P)}this.__b=null}var r=t.__a&&G(D,null,e.fallback);return r&&(r.__u&=-33),[G(D,null,t.__a?null:e.children),r]};var nt=function(e,t,o){if(++o[1]===o[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(o=e.i;o;){for(;o.length>3;)o.pop()();if(o[1]<o[0])break;e.i=o=o[2]}};(te.prototype=new S).__a=function(e){var t=this,o=ot(t.__v),n=t.l.get(e);return n[0]++,function(r){var i=function(){t.props.revealOrder?(n.push(r),nt(t,e,n)):r()};o?o(i):i()}},te.prototype.render=function(e){this.i=null,this.l=new Map;var t=J(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var o=t.length;o--;)this.l.set(t[o],this.i=[1,0,this.i]);return e.children},te.prototype.componentDidUpdate=te.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,o){nt(e,o,t)})};var xt=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Nt=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,St=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,$t=/[A-Z0-9]/g,Mt=typeof document<"u",At=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};S.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(S.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var rt=v.event;function Et(){}function Ut(){return this.cancelBubble}function Ft(){return this.defaultPrevented}v.event=function(e){return rt&&(e=rt(e)),e.persist=Et,e.isPropagationStopped=Ut,e.isDefaultPrevented=Ft,e.nativeEvent=e};var Rt={enumerable:!1,configurable:!0,get:function(){return this.class}},it=v.vnode;v.vnode=function(e){typeof e.type=="string"&&function(t){var o=t.props,n=t.type,r={},i=n.indexOf("-")===-1;for(var s in o){var l=o[s];if(!(s==="value"&&"defaultValue"in o&&l==null||Mt&&s==="children"&&n==="noscript"||s==="class"||s==="className")){var a=s.toLowerCase();s==="defaultValue"&&"value"in o&&o.value==null?s="value":s==="download"&&l===!0?l="":a==="translate"&&l==="no"?l=!1:a[0]==="o"&&a[1]==="n"?a==="ondoubleclick"?s="ondblclick":a!=="onchange"||n!=="input"&&n!=="textarea"||At(o.type)?a==="onfocus"?s="onfocusin":a==="onblur"?s="onfocusout":St.test(s)&&(s=a):a=s="oninput":i&&Nt.test(s)?s=s.replace($t,"-$&").toLowerCase():l===null&&(l=void 0),a==="oninput"&&r[s=a]&&(s="oninputCapture"),r[s]=l}}n=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=J(o.children).forEach(function(c){c.props.selected=r.value.indexOf(c.props.value)!=-1})),n=="select"&&r.defaultValue!=null&&(r.value=J(o.children).forEach(function(c){c.props.selected=r.multiple?r.defaultValue.indexOf(c.props.value)!=-1:r.defaultValue==c.props.value})),o.class&&!o.className?(r.class=o.class,Object.defineProperty(r,"className",Rt)):(o.className&&!o.class||o.class&&o.className)&&(r.class=r.className=o.className),t.props=r}(e),e.$$typeof=xt,it&&it(e)};var st=v.__r;v.__r=function(e){st&&st(e),e.__c};var lt=v.diffed;v.diffed=function(e){lt&<(e);var t=e.props,o=e.__e;o!=null&&e.type==="textarea"&&"value"in t&&t.value!==o.value&&(o.value=t.value==null?"":t.value)};/**
|
|
2
|
+
* @license lucide-react v0.473.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const Ht=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),at=(...e)=>e.filter((t,o,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===o).join(" ").trim();/**
|
|
7
|
+
* @license lucide-react v0.473.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/var Gt={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
|
|
12
|
+
* @license lucide-react v0.473.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const Dt=Ze(({color:e="currentColor",size:t=24,strokeWidth:o=2,absoluteStrokeWidth:n,className:r="",children:i,iconNode:s,...l},a)=>G("svg",{ref:a,...Gt,width:t,height:t,stroke:e,strokeWidth:n?Number(o)*24/Number(t):o,className:at("lucide",r),...l},[...s.map(([c,u])=>G(c,u)),...Array.isArray(i)?i:[i]]));/**
|
|
17
|
+
* @license lucide-react v0.473.0 - ISC
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the ISC license.
|
|
20
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/const Ot=(e,t)=>{const o=Ze(({className:n,...r},i)=>G(Dt,{ref:i,iconNode:t,className:at(`lucide-${Ht(e)}`,n),...r}));return o.displayName=`${e}`,o};/**
|
|
22
|
+
* @license lucide-react v0.473.0 - ISC
|
|
23
|
+
*
|
|
24
|
+
* This source code is licensed under the ISC license.
|
|
25
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
+
*/const It=Ot("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),ct=Me(void 0),Wt=({children:e})=>{const[t,o]=$(null),[n,r]=$(!1),[i,s]=$("info"),[l,a]=$(null),c=Oe(()=>{r(!1),l&&(clearTimeout(l),a(null))},[l]),u=Oe((_,h="info",d=3e3)=>{if(n&&c(),o(_),s(h),r(!0),d>0){const m=setTimeout(()=>{r(!1)},d);a(m)}},[n,c]);return f(ct.Provider,{value:{message:t,visible:n,type:i,showToast:u,hideToast:c},children:e})},me=()=>{const e=Ie(ct);if(!e)throw new Error("useToast must be used within a ToastProvider");return e},Vt=({i18n:e,totalTiers:t,currentTier:o,highestUnlockedTier:n,onTierChange:r,disabled:i})=>f("div",{className:"tier-selector",children:f("select",{value:o,onChange:s=>{s.target&&s.target.value&&r(Number(s.target.value))},disabled:i,className:"tier-dropdown",children:Array.from({length:t},(s,l)=>l+1).map(s=>f("option",{value:s,disabled:s>n,children:[e.tier," ",s]},`tier-${s}`))})}),Bt=([e,t])=>Array.from({length:t-e+1},(o,n)=>e+n),jt=({i18n:e,levelsRange:t,currentLevel:o,highestUnlockedLevel:n,onLevelChange:r,disabled:i})=>{const s=Bt(t);return f("div",{className:"level-selector",children:f("select",{value:o,onChange:l=>{l.target&&l.target.value&&r(Number(l.target.value))},disabled:i,className:"level-dropdown",children:s.map(l=>f("option",{value:l,disabled:l>n,children:[e.level," ",l]},`level-${l}`))})})},pe=({isOpen:e,title:t,message:o,children:n,noConfirm:r=!1,noCancel:i=!1,confirmText:s="OK",cancelText:l="Cancel",onConfirm:a,onCancel:c})=>{const u=B(null);return L(()=>{const _=h=>{h.key==="Escape"&&c?.()};return e&&document.addEventListener("keydown",_),()=>{document.removeEventListener("keydown",_)}},[e,c]),f("div",{className:`maze-dialog-overlay ${e?"maze-dialog-visible":""}`,children:f("div",{className:"maze-dialog",ref:u,children:[f("div",{className:"maze-dialog-title",children:t}),f("div",{className:"maze-dialog-content",children:n||f("div",{className:"maze-dialog-message",children:o})}),f("div",{className:"maze-dialog-buttons",children:[!i&&f("button",{className:"maze-dialog-cancel",onClick:c,children:l}),!r&&f("button",{className:"maze-dialog-confirm",onClick:a,children:s})]})]})})};function qt(e){return function(){let t=e+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}const ve=[[{size:8,seed:12345,method:"backtracking"},{size:8,seed:23456,method:"backtracking"},{size:8,seed:34567,method:"prims"},{size:8,seed:45678,method:"backtracking"},{size:9,seed:56789,method:"prims"},{size:9,seed:67890,method:"backtracking"},{size:9,seed:78901,method:"prims"},{size:9,seed:89012,method:"backtracking"},{size:10,seed:90123,method:"prims"},{size:11,seed:11111,method:"backtracking"},{size:12,seed:22222,method:"prims"},{size:13,seed:33333,method:"backtracking"}],[{size:12,seed:44444,method:"prims"},{size:12,seed:55555,method:"backtracking"},{size:12,seed:66666,method:"prims"},{size:12,seed:77777,method:"backtracking"},{size:13,seed:88888,method:"prims"},{size:13,seed:99999,method:"backtracking"},{size:13,seed:12121,method:"prims"},{size:14,seed:23232,method:"backtracking"},{size:15,seed:34343,method:"prims"},{size:16,seed:45454,method:"backtracking"},{size:17,seed:56565,method:"prims"},{size:18,seed:67676,method:"backtracking"}],[{size:19,seed:78787,method:"prims"},{size:20,seed:89898,method:"backtracking"},{size:21,seed:90909,method:"prims"},{size:22,seed:10101,method:"backtracking"},{size:23,seed:20202,method:"prims"},{size:25,seed:30303,method:"backtracking"},{size:27,seed:40404,method:"prims"},{size:29,seed:50505,method:"backtracking"},{size:31,seed:60606,method:"prims"},{size:33,seed:70707,method:"backtracking"},{size:37,seed:80808,method:"prims"},{size:40,seed:90909,method:"backtracking"}],[{size:41,seed:10111,method:"prims"},{size:42,seed:11121,method:"backtracking"},{size:43,seed:12131,method:"prims"},{size:44,seed:13141,method:"backtracking"},{size:45,seed:14151,method:"prims"},{size:46,seed:15161,method:"backtracking"},{size:47,seed:16171,method:"prims"},{size:48,seed:17181,method:"backtracking"},{size:49,seed:18191,method:"prims"},{size:50,seed:19201,method:"backtracking"},{size:51,seed:20211,method:"prims"},{size:52,seed:21221,method:"backtracking"}],[{size:53,seed:22231,method:"prims"},{size:54,seed:23241,method:"backtracking"},{size:55,seed:24251,method:"prims"},{size:56,seed:25261,method:"backtracking"},{size:57,seed:26271,method:"prims"},{size:58,seed:27281,method:"backtracking"},{size:59,seed:28291,method:"prims"},{size:60,seed:29301,method:"backtracking"},{size:62,seed:30311,method:"prims"},{size:64,seed:31321,method:"backtracking"},{size:66,seed:32331,method:"prims"},{size:68,seed:33341,method:"backtracking"}]],ge={lcPrefix:"maze-",i18n:{reset:"Reset",resetTip:"Reset all game data and highest score.",total:"Total",levelScore:"Level Score",bestScore:"Best Score",confirmReset:"Confirm Reset",confirmResetMessage:"Are you sure you want to reset the game? All progress will be lost.",cancel:"Cancel",close:"Close",confirm:"Confirm",resetDoneToast:"Game reset! Starting from Level 1...",confirmClue:"Confirm to turn on clue?",confirmClueMessage:"Are you sure you want to turn on clue? Your current score will be halved.",level:"Level",tier:"Tier",settings:"Settings",clueOn:"Clue: ON",clueOff:"Clue: OFF",clueTip:"Turn on clue will halve your current score in this level",foodCollectedToast:"Food collected! %NUM% remaining.",allFoodCollectedToast:"All food collected! Head to the exit.",warnNotAllFoodCollectedToast:"Collect all food first! %NUM% remaining.",levelCompleteToast:"Level completed! 🎉",tierUnlockedToast:"Tier %TIER% unlocked! 🎉",levelGoToast:"Level %LEVEL% - Go!",levelRestartToast:"Level restarted",cluePathEnabled:"Clue Path Enabled",cluePathDisabled:"Clue Path Disabled",useArrowKeyTips:"Use arrow keys to navigate the maze. Press'C' to toggle path clue."},renderConfig:{padding:10,wallWidth:4,wallColor:"#000000",exitColor:"#F44336",foodColor:"#4CAF50",clueColor:"rgb(255,0,0)",backgroundColor:"#ffffff",playerColor:"#4CAF50",playerAtExitColor:"#FFD700"},levelConfig:ve},Kt=e=>e===1?2:e>=2&&e<=5?3:e>=6&&e<=11?4:e>=12&&e<=15?5:6;class Xt{constructor(t,o){this.row=t,this.col=o}visited=!1;walls={top:!0,right:!0,bottom:!0,left:!0}}class Yt{rows;cols;grid;seed;random;constructor(t,o,n){this.rows=t,this.cols=o,this.seed=n??Math.floor(Math.random()*1e6),this.random=qt(this.seed),this.grid=this.initializeGrid()}initializeGrid(){const t=[];for(let o=0;o<this.rows;o++){t[o]=[];for(let n=0;n<this.cols;n++)t[o][n]=new Xt(o,n)}return t}isValid(t,o){return t>=0&&t<this.rows&&o>=0&&o<this.cols}getNeighbors(t,o){const n=[],r=[{r:-1,c:0},{r:0,c:1},{r:1,c:0},{r:0,c:-1}];for(const i of r){const s=t+i.r,l=o+i.c;this.isValid(s,l)&&n.push({row:s,col:l})}return n}getUnvisitedNeighbors(t,o){return this.getNeighbors(t,o).filter(n=>!this.grid[n.row][n.col].visited)}getVisitedNeighbors(t,o){return this.getNeighbors(t,o).filter(n=>this.grid[n.row][n.col].visited)}removeWall(t,o,n,r){const i=this.grid[t][o],s=this.grid[n][r];t===n+1?(i.walls.top=!1,s.walls.bottom=!1):t===n-1?(i.walls.bottom=!1,s.walls.top=!1):o===r+1?(i.walls.left=!1,s.walls.right=!1):o===r-1&&(i.walls.right=!1,s.walls.left=!1)}}class Jt{maze;constructor(t,o,n,r,i={row:0,col:0},s={row:t-1,col:o-1}){switch(this.maze=new Yt(t,o,r),n){case"backtracking":this.runBacktracking();break;case"prims":this.runPrims();break;default:throw new Error(`Unknown maze generation method: ${n}`)}this.addOpenings(i,s)}getMaze(){return this.maze}runBacktracking(){const t=[],o=this.randomNumber(this.maze.rows),n=this.randomNumber(this.maze.cols);let r={row:o,col:n};for(this.maze.grid[o][n].visited=!0,t.push(r);t.length>0;){r=t[t.length-1];const{row:i,col:s}=r,l=this.maze.getUnvisitedNeighbors(i,s);if(l.length>0){const a=this.randomPick(l),{row:c,col:u}=a;this.maze.removeWall(i,s,c,u),this.maze.grid[c][u].visited=!0,t.push(a)}else t.pop()}}runPrims(){const t=[],o=(i,s)=>{const l=this.maze.getNeighbors(i,s);for(const a of l)!this.maze.grid[a.row][a.col].visited&&!t.some(c=>c.row===a.row&&c.col===a.col)&&t.push(a)},n=this.randomNumber(this.maze.rows),r=this.randomNumber(this.maze.cols);for(this.maze.grid[n][r].visited=!0,o(n,r);t.length>0;){const i=this.randomNumber(t.length),s=t[i],{row:l,col:a}=s,c=this.maze.getVisitedNeighbors(l,a);if(c.length>0){const u=this.randomPick(c);this.maze.removeWall(l,a,u.row,u.col),this.maze.grid[l][a].visited=!0,o(l,a)}t.splice(i,1)}}addOpenings(t,o){this.maze.grid[t.row][t.col].walls.top=!1,this.maze.grid[o.row][o.col].walls.bottom=!1}randomNumber(t){return Math.floor(this.maze.random()*t)}randomPick(t){return t[Math.floor(this.maze.random()*t.length)]}}function Zt(e,t,o,n,r,i){return new Jt(e,t,o,n,r,i).getMaze()}const Qt=(e,t,o)=>{if(!e.isValid(t,o))return!1;const n=e.grid[t][o];return!n.walls.top||!n.walls.right||!n.walls.bottom||!n.walls.left},_t=(e,t=ve.flat())=>{const o=e-1,n=t[o];if(!n)return console.error(`Cannot find Level ${e}'s config.`),null;const r=n.size,i=r,s=r,l=n.seed,a=n.method,c=n.entry||{row:0,col:0},u=n.exit||{row:i-1,col:s-1},_=Zt(i,s,a,l,c,u),h=Kt(e),d=[];for(let m=0;m<h;m++){let y;do y={row:Math.floor(_.random()*i),col:Math.floor(_.random()*s)};while(y.row===c.row&&y.col===c.col||y.row===u.row&&y.col===u.col||!Qt(_,y.row,y.col)||d.some(w=>w.row===y.row&&w.col===y.col));d.push(y)}return{maze:_,playerPosition:c,exitPosition:u,foodPositions:d,totalFoodCount:h,foodCollected:0,playerPath:[c],visitCounts:{[`${c.row},${c.col}`]:1},moveCount:0,currentScore:_.rows*_.cols,playerAtExit:!1,isGameActive:!0,levelTransitioning:!1}},ut=({gameState:e,setGameState:t,config:o})=>({generateCurrentLevelMaze:()=>{const r=_t(e.currentLevel,o.current.levelConfig.flat());r&&t(i=>({...i,...r}))}}),dt=e=>de(()=>{const t=e.map(l=>l.length),o=t.reduce((l,a)=>l+a,0),n=e.length,r=l=>{if(l<1||l>o)return 0;let a=0;for(let c=0;c<t.length;c++)if(a+=t[c],l<=a)return c+1;return 0},i=l=>l<1||l>n?0:t.slice(0,l-1).reduce((a,c)=>a+c,0)+1,s={getTotalLevels:()=>o,getTotalTiers:()=>n,getTierLevelsRange:l=>{if(l<1||l>n)return[0,0];const a=i(l),c=a+t[l-1]-1;return[a,c]},getTierByLevel:r,getFirstLevelOfTier:i,getLevelConfig:l=>{if(l<1||l>o)return null;const a=r(l),c=i(a),u=l-c;return e[a-1][u]},getTierConfig:l=>l<1||l>n?null:e[l-1],isLevelUnlocked:(l,a)=>l<=a,isTierUnlocked:(l,a)=>l<=a,getNextLevelInfo:l=>{if(l>=o)return null;const a=l+1,c=r(l),u=r(a);return{nextLevel:a,nextTier:u,isTierChange:u>c}},getCurrentTierProgress:(l,a)=>{const[c,u]=s.getTierLevelsRange(a),_=l-c+1,h=u-c+1;return{current:_,total:h}},isLastLevelInTier:l=>{const a=r(l),[,c]=s.getTierLevelsRange(a);return l===c},getPreviousLevelInfo:l=>{if(l<=1)return null;const a=l-1,c=r(l),u=r(a);return{prevLevel:a,prevTier:u,isTierChange:u<c}}};return s},[e]),eo=()=>{const{gameState:e,setGameState:t,resetGame:o,config:n}=qe(),r=n.current.i18n,i=n.current.levelConfig,s=dt(i),{showToast:l}=me(),{currentLevel:a,totalScore:c,levelScores:u,currentScore:_,showClue:h}=e,d=u[a]||0,m=s.getTotalTiers(),[y,w]=$(!1),[g,p]=$(!1),[z,b]=$(!1),[M,P]=$(s.getTierLevelsRange(1)),{generateCurrentLevelMaze:R}=ut({gameState:e,setGameState:t,config:n});L(()=>{P(s.getTierLevelsRange(e.currentTier))},[e.currentTier]);const A=N=>{const oe=s.getFirstLevelOfTier(N);s.isLevelUnlocked(oe,e.highestUnlockedLevel)&&(t(ko=>({...ko,currentTier:N})),E(oe))},E=N=>{s.isLevelUnlocked(N,e.highestUnlockedLevel)&&(t(oe=>({...oe,currentLevel:N})),R(),l(r.levelGoToast.replace("%LEVEL%",N.toString()),"success"))},x=()=>{w(!0)},T=()=>{w(!1)},H=()=>{b(!0)},vo=()=>{b(!1)},go=()=>{t(N=>(l(N.showClue?r.cluePathDisabled:r.cluePathEnabled),{...N,showClue:!N.showClue,currentScore:Math.floor(N.currentScore/2)})),b(!1)},yo=()=>{p(!0)},wo=()=>{o(),p(!1),l(r.resetDoneToast)},Co=()=>{p(!1)};return f("div",{class:"game-panel-container",children:[f("div",{className:"game-controls",children:[f("div",{className:"selectors-container",children:[f(Vt,{i18n:r,totalTiers:m,currentTier:e.currentTier,highestUnlockedTier:e.highestUnlockedTier,onTierChange:A,disabled:e.levelTransitioning}),f(jt,{i18n:r,levelsRange:M,currentLevel:e.currentLevel,highestUnlockedLevel:e.highestUnlockedLevel,onLevelChange:E,disabled:e.levelTransitioning})]}),f("div",{className:"score-container",children:[f("div",{className:"score-box currentscore",children:[f("span",{className:"score-label",children:[r.levelScore,":"]}),f("span",{className:"score-data",children:_})]}),f("div",{className:"score-box bestscore",children:[f("span",{className:"score-label",children:[r.bestScore,":"]}),f("span",{className:"score-data",children:d})]}),f("div",{className:"score-box totalscore",children:[f("span",{className:"score-label",children:[r.total,":"]}),f("span",{className:"score-data",children:c})]})]})]}),f("div",{className:"game-settings",children:f(It,{onClick:x,className:"game-settings-icon"})}),f(pe,{isOpen:y,title:r.settings,noConfirm:!0,cancelText:r.close,onCancel:T,children:[f("div",{className:"settings-item-box",children:[f("div",{}),f("button",{className:`settings-clue-button ${h?"clue-on":"clue-off"}`,title:"Toggle Clue",onClick:H,children:h?r.clueOn:r.clueOff}),f("div",{className:"settings-item-tip",children:r.clueTip})]}),f("div",{className:"settings-item-box",children:[f("button",{className:"settings-reset-button",title:"Reset Game",onClick:yo,children:r.reset}),f("div",{className:"settings-item-tip",children:r.resetTip})]})]}),f(pe,{isOpen:g,title:r.confirmReset,message:r.confirmResetMessage,confirmText:r.reset,cancelText:r.cancel,onConfirm:wo,onCancel:Co}),f(pe,{isOpen:z,title:r.confirmClue,message:r.confirmClueMessage,confirmText:r.confirm,cancelText:r.cancel,onConfirm:go,onCancel:vo})]})},to=({message:e,visible:t,duration:o=2e3,onClose:n,position:r="center",type:i="info"})=>e?(L(()=>{let s;return t&&o>0&&n&&(s=setTimeout(()=>{n()},o)),()=>{s&&clearTimeout(s)}},[t,o,n]),f("div",{className:`toast-container position-${r}`,children:f("div",{className:`toast-message type-${i} ${t?"toast-visible":""}`,children:e})})):null,oo=(e,t,o)=>{L(()=>{const n=()=>{const r=e.current;if(!r)return;const i=r.parentElement;if(!i)return;const s=i.clientWidth,l=i.clientHeight,a=Math.min(s,l),c=window.devicePixelRatio||1;r.style.width=`${a}px`,r.style.height=`${a}px`,r.width=a*c,r.height=a*c,t(e,o.current)};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[e])},ht={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]},no=({containerRef:e,gameState:t,setGameState:o,onFoodCollected:n,onFoodNotAllCollected:r})=>{L(()=>{const i=a=>{if(!t.isGameActive||!t.maze)return;const[c,u]=ht[a],{row:_,col:h}=t.playerPosition,d=_+c,m=h+u;if(!t.maze.isValid(d,m))return;const y=t.maze.grid[_][h];if(c===-1&&y.walls.top||c===1&&y.walls.bottom||u===-1&&y.walls.left||u===1&&y.walls.right)return;const w={row:d,col:m},g=`${d},${m}`;o(p=>{const z=p.foodPositions.some(x=>x.row===d&&x.col===m);z&&n();const b=Math.max(0,p.currentScore-1),M=`${_},${h}-${d},${m}`,P=d===p.exitPosition.row&&m===p.exitPosition.col,R=z?p.foodCollected+1:p.foodCollected,A=R===p.totalFoodCount,E=P&&A;return P&&!A&&r(),{...p,playerPosition:w,playerPath:[...p.playerPath,w],foodPositions:p.foodPositions.filter(x=>!(x.row===d&&x.col===m)),foodCollected:R,currentScore:b,visitCounts:{...p.visitCounts,[M]:(p.visitCounts[M]||0)+1,[g]:(p.visitCounts[g]||0)+1},moveCount:p.moveCount+1,playerAtExit:P,isGameActive:!E,levelTransitioning:E}})},s=a=>{if(!t.isGameActive||!t.maze)return;const c=a.key;c in ht&&(a.preventDefault(),i(c))},l=a=>{if(a.preventDefault(),!t.isGameActive||!t.maze)return;const c=a.touches[0],u=document.elementFromPoint(c.clientX,c.clientY);u&&(u.classList.contains("maze-up")?i("ArrowUp"):u.classList.contains("maze-down")?i("ArrowDown"):u.classList.contains("maze-left")?i("ArrowLeft"):u.classList.contains("maze-right")&&i("ArrowRight"))};return window.addEventListener("keydown",s),e.current?.addEventListener("touchstart",l,{passive:!1}),()=>{window.removeEventListener("keydown",s),e.current?.removeEventListener("touchstart",l)}},[t.isGameActive,t.maze,t.playerPosition,t.exitPosition])},ro=({gameState:e,setGameState:t,config:o,onLevelComplete:n,onTierUnlocked:r})=>{L(()=>{if(e.levelTransitioning){n();const l=setTimeout(()=>{s(e.currentScore,o.current.levelConfig)},1e3);return()=>clearTimeout(l)}},[e.levelTransitioning]);const i=dt(o.current.levelConfig),s=(l,a)=>{const c=i.getNextLevelInfo(e.currentLevel);if(!c)return;const{nextLevel:u,nextTier:_,isTierChange:h}=c,d=_t(u,a.flat());d&&t(m=>{h&&r(_);const y={...m.levelScores};return y[m.currentLevel]=Math.max(l,y[m.currentLevel]||0),{...m,...d,currentLevel:u,currentTier:_,highestUnlockedLevel:Math.max(m.highestUnlockedLevel,u),highestUnlockedTier:Math.max(m.highestUnlockedTier,_),levelScores:y,totalScore:Object.values(y).reduce((w,g)=>w+g,0),showClue:!1,isGameActive:!0,levelTransitioning:!1}})};return{handleLevelComplete:s}};function io(e,t){const{ctx:o,width:n,height:r,maze:i}=e;t.playerColor=e.playerAtExit?t.playerAtExitColor:t.playerColor;const{padding:s,wallWidth:l,wallColor:a,playerColor:c,exitColor:u,foodColor:_,clueColor:h,backgroundColor:d}=t,m=i.cols,y=i.rows,w=(n-s*2)/m,g=(r-s*2)/y;o.clearRect(0,0,n,r),o.save(),o.fillStyle=d,o.fillRect(0,0,n,r),o.restore(),e.showClue&&e.playerPath&&e.playerPath.length>0&&uo(e,{cellWidth:w,cellHeight:g,padding:s,clueColor:h}),so(e,{cellWidth:w,cellHeight:g,padding:s,wallColor:a,wallWidth:l}),co(e,{cellWidth:w,cellHeight:g,padding:s,foodColor:_}),e.playerAtExit||ao(e,{cellWidth:w,cellHeight:g,padding:s,exitColor:u}),lo(e,{cellWidth:w,cellHeight:g,padding:s,playerColor:c})}function so(e,t){const{ctx:o,maze:n}=e,{cellWidth:r,cellHeight:i,padding:s,wallColor:l,wallWidth:a}=t;o.save(),o.strokeStyle=l,o.lineWidth=a,o.lineCap="round",o.beginPath();for(let c=0;c<n.rows;c++)for(let u=0;u<n.cols;u++){const _=n.grid[c][u],h=s+u*r,d=s+c*i;_.walls.top&&(o.moveTo(h,d),o.lineTo(h+r,d)),_.walls.right&&(o.moveTo(h+r,d),o.lineTo(h+r,d+i)),_.walls.bottom&&(o.moveTo(h+r,d+i),o.lineTo(h,d+i)),_.walls.left&&(o.moveTo(h,d+i),o.lineTo(h,d))}o.stroke(),o.restore()}function lo(e,t){const{ctx:o,playerPosition:n}=e,{cellWidth:r,cellHeight:i,padding:s,playerColor:l}=t,{x:a,y:c}=j(n.row,n.col,r,i,s),u=Math.min(r,i)*.35;o.save(),o.fillStyle=l,o.beginPath(),o.arc(a,c,u,0,Math.PI*2),o.fill(),o.restore()}function ao(e,t){const{ctx:o,exitPosition:n}=e,{cellWidth:r,cellHeight:i,padding:s,exitColor:l}=t,{x:a,y:c}=j(n.row,n.col,r,i,s),u=Math.min(r,i)*.35;o.save(),o.fillStyle=l,o.beginPath(),o.arc(a,c,u,0,Math.PI*2),o.fill(),o.restore()}function co(e,t){const{ctx:o,foodPositions:n}=e,{cellWidth:r,cellHeight:i,padding:s,foodColor:l}=t;o.fillStyle=l;const a=Math.min(r,i)*.25;n.forEach(c=>{const{x:u,y:_}=j(c.row,c.col,r,i,s);_o(o,u,_,a*1.2,5,a*.6)})}function _o(e,t,o,n,r,i){e.save(),e.beginPath();for(let s=0;s<r*2;s++){const l=s%2===0?n:i,a=Math.PI*s/r;e.lineTo(t+l*Math.sin(a),o+l*Math.cos(a))}e.closePath(),e.fill(),e.restore()}function uo(e,t){const{ctx:o,playerPath:n,visitCounts:r}=e,{cellWidth:i,cellHeight:s,padding:l,clueColor:a}=t;if(!(!n||n.length<2||!r)){o.save();for(let c=1;c<n.length;c++){const u=n[c-1],_=n[c],h=`${u.row},${u.col}-${_.row},${_.col}`,d=`${_.row},${_.col}-${u.row},${u.col}`,m=(r[h]||0)+(r[d]||0),y=Math.min(.2+m*.1,.9),w=Math.max(3,i*.1)+m*.5;try{o.strokeStyle=a.replace(")",`, ${y})`).replace("rgb(","rgba(")}catch{o.strokeStyle=`rgba(255, 0, 0, ${y})`}o.lineWidth=w,o.lineCap="round",o.lineJoin="round";const{x:g,y:p}=j(u.row,u.col,i,s,l),{x:z,y:b}=j(_.row,_.col,i,s,l);o.beginPath(),o.moveTo(g,p),o.lineTo(z,b),o.stroke()}o.restore()}}function j(e,t,o,n,r){return{x:r+t*o+o/2,y:r+e*n+n/2}}const ho=()=>{const{message:e,visible:t,type:o,hideToast:n}=me();return f(to,{message:e,visible:t,type:o,onClose:n,position:"top"})},fo=()=>{const{gameState:e,setGameState:t,config:o}=qe(),n=B(null),r=B(null),i=B(e),s=o.current.i18n,{showToast:l}=me();L(()=>{i.current=e},[e]);const a=()=>{const h=e.totalFoodCount-e.foodCollected-1;if(h>0){l(s.foodCollectedToast.replace("%NUM%",h.toString()),"success");return}l(s.allFoodCollectedToast,"success")},c=()=>{const h=e.totalFoodCount-e.foodCollected-1;l(s.warnNotAllFoodCollectedToast.replace("%NUM%",h.toString()),"warning")},u=(h,d)=>{const m=h.current?.getContext("2d");m&&d.maze&&io({ctx:m,width:h.current.width,height:h.current.height,maze:d.maze,playerPosition:d.playerPosition,exitPosition:d.exitPosition,foodPositions:d.foodPositions,showClue:d.showClue,playerPath:d.playerPath,visitCounts:d.visitCounts,playerAtExit:d.playerAtExit},o.current.renderConfig||{})};L(()=>{l(s.useArrowKeyTips,"info",3e3)},[]),oo(r,u,i);const{generateCurrentLevelMaze:_}=ut({gameState:e,setGameState:t,config:o});return no({containerRef:n,gameState:e,setGameState:t,onFoodCollected:a,onFoodNotAllCollected:c}),ro({gameState:e,setGameState:t,config:o,onLevelComplete:()=>{l(s.levelCompleteToast,"success")},onTierUnlocked:h=>{l(s.tierUnlockedToast.replace("%TIER%",h.toString()),"success")}}),L(()=>{e.isGameActive&&!e.levelTransitioning&&_()},[e.currentLevel,e.isGameActive,e.levelTransitioning]),L(()=>{r.current&&e.maze&&u(r,e)},[e]),f("div",{className:"maze-game-container",children:[f(ho,{}),f(eo,{}),f("div",{className:"maze-canvas-container",ref:n,children:[f("canvas",{ref:r,className:"maze-game-canvas"}),f("div",{className:"maze-touch-area maze-up"}),f("div",{className:"maze-touch-area maze-down"}),f("div",{className:"maze-touch-area maze-left"}),f("div",{className:"maze-touch-area maze-right"})]})]})};function mo(){return f(Wt,{children:f(fo,{})})}function po({config:e={}}){const t={...ge.i18n,...e.i18n||{}},o={...ge.renderConfig,...e.renderConfig||{}},n=e.levelConfig||ve;return e={...ge,...e,i18n:t,levelConfig:n,renderConfig:o},f(Tt,{config:e,children:f(mo,{})})}return{async init(e,t){const o=typeof e=="string"?document.querySelector(e):e;if(!o){console.warn("Cannot find the root element");const a=document.createElement("div");a.style.textAlign="center",a.style.padding="20px",a.innerHTML="Cannot find the root element",document.body.append(a);return}let{root:n=location.origin}=t;n.at(-1)!=="/"&&(n+="/");const r=document.createElement("div"),i=document.createElement("div");r.style.cssText=`
|
|
2
27
|
height: 30px;
|
|
3
28
|
width: 100%;
|
|
4
29
|
border: solid 2px #999;
|
|
@@ -14,4 +39,4 @@ var Maze=function(){"use strict";var V,w,fe,U,me,ve,Z,pe,ee,te,oe,ge,R={},we=[],
|
|
|
14
39
|
@keyframes loading {
|
|
15
40
|
0% { width: 0%; }
|
|
16
41
|
100% { width: 99%; }
|
|
17
|
-
}`,document.head.appendChild(s),await(async a=>new Promise((
|
|
42
|
+
}`,document.head.appendChild(s),await(async a=>new Promise((c,u)=>{const _=document.createElement("link");_.rel="stylesheet",_.type="text/css",_.href=a,_.onload=c,_.onerror=u,document.head.appendChild(_)}))(n+"maze.css"),yt(f(po,{config:t}),o)}}}();
|