UNPKG

naviix

Version:

Spatial navigation. Arrow key navigation.

3 lines (2 loc) 3.65 kB
function r(r){var t=n(o(r)),a=function(r,n){var t=new Map;return r.forEach((function(r,n){var o=r.up,c=r.right,i=r.down,u=r.left,e=r.nextWrap,f=r.nextSubWrap,l=e.up,s=e.right,p=e.down,d=e.left,v=f.up,w=f.right,h=f.down,y=f.left,g=a("up",o,l,v),A=a("right",c,s,w),b=a("down",i,p,h),x=a("left",u,d,y);t.set(n,{up:g,right:A,down:b,left:x})})),t;function a(t,a,o,c){var i=a;if(a&&o){var u=r.get(a.id),e=u.nextSubWrap;i=u[t],e[t]&&(i=n.get(u[t].id))}else c&&(i=n.get(a.id));return i}}(t.x,t.firstInWrap);return a}function n(r,a){var o=new Map,c=new Map;if(!a&&r.length>1){var i=r.map((function(r){return r.wrap}));r.forEach((function(r){c.set(r.wrap.id,r.locs[0])}));var u=t(i).x;o=u}return r.forEach((function(r){var a=r.locs,i=r.subs,u=r.wrap,e=(i||[]).map((function(r){return r.wrap}));(i||[]).map((function(r){c.set(r.wrap.id,r.locs[0])}));var f=t(a.concat(e),u,e).x,l=n(i||[],!0),s=l.x,p=l.firstInWrap;o=new Map(Array.from(o).concat(Array.from(f)).concat(Array.from(s))),c=new Map(Array.from(c).concat(Array.from(p)))})),{x:o,firstInWrap:c}}function t(r,n,t){var o=[].concat(r);o.sort((function(r,n){return r.loc[0]-n.loc[0]}));var c=[].concat(r);c.sort((function(r,n){return r.loc[1]-n.loc[1]}));var i=new Map,u=-1/0,e=1/0,f=1/0,l=-1/0;return r.forEach((function(r){var s=r.loc,p=s[0],d=s[1],v=s[2],w=s[3],h=c.findIndex((function(n){return n.id===r.id})),y=o.findIndex((function(n){return n.id===r.id})),g=1/0,A=n,b=!1;c.slice(0,h).forEach((function(n){var t=function(r,n){var t=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;o>e&&(u-f>t+c?u-f-t-c<o-i-e-l&&(s=a(t+c,o-i,u-f,e+l)):u+f<t-c?t-c-u-f<o-i-e-l&&(s=a(t+c,o-i,u+f,e+l)):(s=Math.pow(o-i-e-l,2),e+l>o-i&&(s=-s)));return s}(r.loc,n.loc);t<g&&(b=!0,A=n,g=t)}));var x=1/0,m=n,M=!1;c.slice(h+1).forEach((function(n){var t=function(r,n){var t=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;o<e&&(u-f>t+c?u-f-t-c<e-l-o-i&&(s=a(t+c,o+i,u-f,e-l)):u+f<t-c?t-c-u-f<e-l-o-i&&(s=a(t-c,o+i,u+f,e-l)):(s=Math.pow(e-l-o-i,2),e-l<o+i&&(s=-s)));return s}(r.loc,n.loc);t<x&&(M=!0,m=n,x=t)}));var E=1/0,W=n,I=!1;o.slice(0,y).forEach((function(n){var t=function(r,n){var t=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;t>u&&(e-l>o+i?e-l-o-i<t-c-u-f&&(s=a(t-c,o+i,u+f,e-l)):e+l<o-i?o-i-e-l<t-c-u-f&&(s=a(t-c,o-i,u+f,e+l)):(s=Math.pow(t-c-u-f,2),u+f>t-c&&(s=-s)));return s}(r.loc,n.loc);t<E&&(I=!0,W=n,E=t)}));var j=1/0,O=n,S=!1;o.slice(y+1).forEach((function(n){var t=function(r,n){var t=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;u>t&&(e-l>o+i?e-l-o-i<u-f-t-c&&(s=a(t+c,o+i,u-f,e-l)):e+l<o-i?o-i-e-l<u-f-t-c&&(s=a(t+c,o-i,u-f,e+l)):(s=Math.pow(u-f-t-c,2),u-f<t+c&&(s=-s)));return s}(r.loc,n.loc);t<j&&(S=!0,O=n,j=t)})),i.set(r.id,{up:m,down:A,left:W,right:O,nextWrap:{up:!M,down:!b,right:!S,left:!I},nextSubWrap:{up:t.includes(m),down:t.includes(A),right:t.includes(O),left:t.includes(W)}}),u=d+w>u?d+w:u,e=d-w<e?d-w:e,f=p-w<f?p-v:f,l=p+w>l?p+v:l})),{x:i,t:u,b:e,l:f,r:l}}function a(r,n,t,a){var o=t-r,c=a-n;return o*o+c*c}function o(r){if(null!=r){var n=Array.isArray(r),t=n&&(Array.isArray(r[0])?"number"==typeof r[0][0]:null!=r[0].loc),a=!n,c=!t&&!a,i=null;if(t)i=[{locs:r.map((function(r){return Array.isArray(r)?{id:r,loc:r}:r}))}];else if(a){var u=r.wrap,e=r.subs;i=[{locs:o(r.locs)[0].locs}],null!=e&&Object.assign(i[0],{subs:o(r.subs)}),null!=u&&Object.assign(i[0],{wrap:Array.isArray(u)?{loc:u,id:u}:u})}else c&&(i=r.map((function(r){var n=r.locs,t=r.wrap,a=r.subs,c={locs:o(n)[0].locs,wrap:Array.isArray(t)?{loc:t,id:t}:t};return a&&Object.assign(c,{subs:o(a)}),c})));return i}}export{r as default}; //# sourceMappingURL=naviix.esm.min.js.map