UNPKG

3.81 kBJavaScriptView Raw
1/**!
2* matrix-pointer 0.0.1
3* MIT License
4* Copyright (c) 2023 Yuta Arai
5**/
6function r(){"use strict";function O(r){return null!==r}function B(n,e,u){if(Array.isArray(n)){var f=n.length-1;let r=n[e=Math.min(Math.max(0,e),f)],t=0,i=e;for(;!O(r)&&(0<e-t||f>e+t);)O(r=n[i=e-++t])||(r=n[i=e+t]);if(O(r))return{id:r,x:i,y:u}}return null}function n(r,i,n){let e=null;var u=O(i);for(let t=0;r.length>t;t++){var f=r[t];if(Array.isArray(f))for(let r=0;f.length>r;r++){var l=f[r];if(O(l)){if(!e&&(e={id:l,x:r,y:t},!u)&&n)return e;if(l===i)return{id:l,x:r,y:t}}}}return n?e:null}function k(i,n,e,u){if(Array.isArray(i))for(let r=i.length-1,t=null===e?u?0:r:e;u?r>=t:0<=t;u?t++:t--){var f=i[t];if(Array.isArray(f)&&O(f=f[n]))return{id:f,x:n,y:t}}return null}function q(i,n,e,u){if(Array.isArray(i))for(let r=i.length-1,t=null===n?u?0:r:n;u?r>=t:0<=t;u?t++:t--){var f=i[t];if(O(f))return{id:f,x:t,y:e}}return null}return class extends class{constructor(){this.Emitter$items=[]}on(r,t,i){this.off(r,t),this.Emitter$items.push([r,t,{once:!(null==i||!i.once)}])}off(i,n){for(let r=this.Emitter$items,t=0;r.length>t;t++)("*"===i||r[t][0]===i&&r[t][1]===n)&&r.splice(t--,1)}emit(i,n){this.Emitter$items.forEach(r=>{var t;i===r[0]&&(r[1](Object.assign(Object.assign({},n),{target:this,type:i})),null!=(t=r[2]))&&t.once&&this.off(i,r[1])})}}{constructor(r){super(),this.position=null,this.caches={matrix:[]},this.jump=void 0===r.jump||r.jump,this.loop=void 0===r.loop||r.loop,this.loose=void 0===r.loose||r.loose,this.matrix=r.matrix}update(){var r="function"==typeof this.matrix?this.matrix():this.matrix;return this.caches.matrix=Array.isArray(r)?r.filter(r=>Array.isArray(r)).map(r=>r.map(r=>O(r)?r:null)):[]}focus(r){var t=this.position;return this.position=r,(t||r)&&(null==t?void 0:t.id)!==(null==r?void 0:r.id)&&(t&&this.emit("blur",t),r)&&this.emit("focus",r),r}moveTo(r,t){var i=this.update();return this.focus("number"==typeof r&&"number"==typeof t?function(t,i,n){if(Array.isArray(t)){var e=t.length-1;i=Math.max(0,i);let r=0;var u=t[n=Math.min(Math.max(0,n),e)];if(u=u&&B(u,i,n))return u;for(;0<n-r||e>n+r;){var f=n-++r,l=t[f];if(l=l&&B(l,i,f))return l;if(l=(l=t[f=n+r])&&B(l,i,f))return l}}return null}(i,r,t):n(i,r,!1))}moveBy(T,r){var t=this.update();return this.focus(function(e,u,f,l,o,s){if(u){var a=!0===l||l&&l.x,h=!0===l||l&&l.y,l=!0===o||o&&o.x,o=!0===o||o&&o.y,v=!0===s||s&&s.x,y=!0===s||s&&s.y;let r=u.x,t=u.y,i=r,n=t;var c=e.length-1;if("x"===T)if(o)for(;;){r+=f?1:-1;var d=e[t].length-1,d=r>d,p=r<0;if((r=p||d?a?(y&&(p=(t+=f?1:-1)>c,(t<0||p)&&(t=h?p?0:c:n),n=t),d?0:e[t].length-1):i:r)===i)return u;if(p=function(n,e,u){if(Array.isArray(n)){var f=n.length-1;let r;var l=n[u=Math.min(Math.max(0,u),f)];l&&(r=l[e]);let t=0,i=u;for(;!O(r)&&(0<u-t||f>u+t);){var o=n[i=u-++t];O(r=o?o[e]:r)||(o=n[i=u+t])&&(r=o[e])}if(O(r))return{id:r,x:e,y:i}}return null}(e,i=r,t))return p}else{if(s=q(e[t],u.x+(f?1:-1),t,f))return s;if(!a)return u;if(!y)return q(e[t],null,t,f)||u;for(;;){var x=(t+=f?1:-1)>c,A=t<0;if((t=A||x?h?x?0:c:n:t)===n)return u;if(A=q(e[n=t],null,t,f))return A}}else if(l)for(;;){var b=(t+=f?1:-1)>c;if((t<0||b)&&(h?(t=b?0:c,v&&(r+=f?1:-1,b=e[t].length-1,m=r>b,(r<0||m)&&(r=a?m?0:b:i),i=r)):t=n),t===n)return u;var m=B(e[n=t],r,t);if(m)return m}else{if(o=k(e,r,u.y+(f?1:-1),f))return o;if(!h)return u;if(!v)return k(e,r,null,f)||u;for(;;){r+=f?1:-1;var M=e[t].length-1,g=r>M,j=r<0;if((r=j||g?a?g?0:M:i:r)===i)return u;if(j=k(e,i=r,null,f))return j}}}return null}(t,n(t,null==(t=this.position)?void 0:t.id,!0),r,this.loop,this.loose,this.jump))}destroy(){this.caches.matrix=[],this.off("*")}}}var t=this;"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t="undefined"!=typeof globalThis?globalThis:t||self).MatrixPointer=r();