UNPKG

naviix

Version:

Spatial navigation. Arrow key navigation.

3 lines (2 loc) 11.5 kB
function r(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t<e;t++)n[t]=r[t];return n}function e(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))||t){n&&(e=n);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function t(){return t=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var n in t)({}).hasOwnProperty.call(t,n)&&(r[n]=t[n])}return r},t.apply(null,arguments)}function n(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}var i=["wrap","subs","locs"],o=["locs","wrap","subs"],a=["e"],u=["up","right","down","left"];function f(r,n){void 0===n&&(n={});var i=n,o=i.memo,a=i.scroll;i.dev;var f=i.fuzzy,l=w(r),g=c(l,{fuzzy:f}),h=g.x,x=g.firstInWrap,A=g.enterWrapX,z=g.exitWrapX,j=g.edgeX,M=new Map;return a?function(r){var t=[];return{scroll:function(t){!function(r,t){for(var n,i=t instanceof Map?t:t.reduce((function(r,e){var t=e.id,n=e.loc;return r.set(t,n)}),new Map),o=e(i);!(n=o()).done;){var a=n.value,u=a[0],f=a[1],c=r.get(u);c&&(c.origin.loc=f)}}(r,t)},left:function(r,e){var t=void 0===e?{}:e;return n(r,"left","right",p,t.fuzzy,t.momentCache)},up:function(r,e){var t=void 0===e?{}:e;return n(r,"up","down",d,t.fuzzy,t.momentCache)},right:function(r,e){var t=void 0===e?{}:e;return n(r,"right","left",v,t.fuzzy,t.momentCache)},down:function(r,e){var t=void 0===e?{}:e;return n(r,"down","up",s,t.fuzzy,t.momentCache)},update:P,more:I};function n(e,n,i,o,a,u){var f=t,c=f[0],l=f[1],s=f[2];if(u&&e===c&&n===l)return t=[s,i,c],(r.get(s)||{}).origin||null;var d=r.get(e);if(null==d)return d;var p=d[n],v=d.nextWrap[n],g=d.nextSubWrap[n],w=M(d.origin),y=p;if(v&&p)y=h(W(p.id,i));else if(g){y=h(x(p.id,i))}return y&&(t=[y.id,i,e]),y;function h(e){for(var t=null,n=1/0,i=!1,u=0;u<e.length;++u){var f=r.get(e[u]),c=f.origin,l=M(c),s=r.get(f.wrapId);if(null==s||m(l,M(s.origin))){var d=o(w,l,a),p=d.dis,v=d.isProj,g=d.isRestrictProj;if(p<n||i&&g&&p<=n){if(n=p,t=c,v){if(g||i)break;i=!0}}else if(i)break}}return t}function x(r,e){return j(z.get(r)[e],e)}function W(r,e){return j(A.get(r)[e],e)}function j(r,e){var t=[];return(r||[]).forEach((function(r){var n=(z.get(r)||{})[e];null==n?t.push(r):t.push.apply(t,j(n))})),t}function M(r){return null==r.e?r.loc:b(r.e)}}}(h):o?function(r){return{left:function(r){return e(r,"left")},up:function(r){return e(r,"up")},right:function(r){return e(r,"right")},down:function(r){return e(r,"down")},update:P,more:I};function e(e,n){var i=r.get(e),o=i.wrapId,a=i[n];if(null==a)return a;var u=i.nextWrap[n],f=i.nextSubWrap[n],c=M.get(a.id)||{};if(u){var l=null,s=null;if(c.exit&&c.exit[n])l=c.exit[n];else{var d=r.get(a.id);if(d.nextSubWrap[n]){var p=d[n],v=M.get(p.id)||{};v.enter&&(l=v.enter,s=p.id)}null==l&&(l=y(n,a,u,f,h,x))}return null==l||(null==s&&(s=r.get(l.id).wrapId),(M.get(o)||{}).enter!==i.origin&&w(i.origin,o),w(l,s)),l}if(f){var g=c.enter||y(n,a,u,f,h,x);return(M.get(o)||{}).enter!==i.origin&&w(i.origin,o),w(g,a.id),g}return w(a,o),a;function w(e,n){var i=r.get(e.id),o=i.left,a=i.right,u=i.up,f=i.down,c=i.nextSubWrap,l=c.left,s=c.up,d=c.right,p=c.down,v=i.nextWrap,g=v.left,w=v.up,y=v.right,h=v.down;function b(n,i,o,a,u){if(n){var f,c=M.get(o.id)||{};M.set(o.id,t({},c,{exit:t({},c.exit,(f={},f[u]=e,f))}))}else if(i){var l;if(null==o)return;var s=r.get(o.id);if(!s.nextSubWrap[a])return;var d=s[a],p=M.get(d.id)||{};M.set(d.id,t({},p,{exit:t({},p.exit,(l={},l[u]=e,l))}))}}b(l,g,o,"left","right"),b(s,w,u,"up","down"),b(d,y,a,"right","left"),b(p,h,f,"down","up"),M.set(n,t({},M.get(n),{enter:e}))}}}(h):function(r,e){var t=new Map;return r.forEach((function(n,i){var o=n.up,a=n.right,u=n.down,f=n.left,c=n.nextWrap,l=n.nextSubWrap,s=c.up,d=c.right,p=c.down,v=c.left,g=l.up,w=l.right,h=l.down,b=l.left,x=y("up",o,s,g,r,e),m=y("right",a,d,w,r,e),W=y("down",u,p,h,r,e),A=y("left",f,v,b,r,e);t.set(i,{up:x,right:m,down:W,left:A})})),t}(h,x);function P(r,e){var t=w(e),n=c(t,{fuzzy:f}),i=n.x,o=n.firstInWrap,a=n.enterWrapX,u=n.exitWrapX,s=n.edgeX,d=function e(t,n){if(null==t)return;for(var i=0;i<t.length;++i){var o=t[i],a=o.locs,u=o.subs,f=o.wrap,c=(void 0===f?{}:f).id,l=r===c,s=n||l;if(s)if(a.forEach((function(r){var e=r.id;return h.delete(e)})),x.delete(c),z.delete(c),j.delete(c),n)h.delete(c),A.delete(c),M.delete(c);else{var d=M.get(c);d&&d.enter&&delete d.enter}var p=e(u,s);if(p)return p;if(l)return{rectsIncludeWrap:t,i:i}}}(l,!1);d.rectsIncludeWrap[d.i]=t[0],W(h,i),W(x,o),W(A,a),W(z,u),W(j,s)}function I(r,t){var n=j.get(r),i=n.reduce((function(r,e){return e.isWrap?r[1].push({wrap:h.get(e.id).origin}):r[0].push(h.get(e.id).origin),r}),[],[]),o=i[0],a=i[1],l=w(t);Array.prototype.push.apply(l[0].locs,o),Array.prototype.push.apply(l[0].subs,a);var s=c(l,{fuzzy:f}),d=s.x,p=s.firstInWrap,v=s.enterWrapX,g=s.exitWrapX,y=s.edgeX;n.forEach((function(r){var e=h.get(r),t=d.get(r);u.forEach((function(r){t.dis[r]<e.dis[r]&&(e[r]=t[r],e.nextWrap[r]=!1,e.nextSubWrap[r]=!1,e.dis[r]=t.dis[r])}))})),W(x,p),W(A,v);for(var b,m=e(g);!(b=m()).done;){var M=b.value,P=M[0],I=M[1];if(P===r)for(var S,X=z.get(P),R=e(u);!(S=R()).done;){var k=S.value;Array.prototype.push.apply(X[k],I[k])}else z.set(P,I)}W(j,y),j.set(r,j.get(r).filter((function(r){return!n.some((function(e){return e.id===r.id}))})))}}function c(r,n){var i=void 0===n?{}:n,o=i.notRoot,a=i.fuzzy,f=new Map,s=new Map,d=new Map,p=new Map,v=new Map;if(!o&&r.length>1){var g=r.map((function(r){return r.wrap}));r.forEach((function(r){s.set(r.wrap.id,r.locs[0])}));var w=l(g,{fuzzy:a}).x;y(w,!0),f=w}return r.forEach((function(r){var e=r.locs,t=r.subs,n=r.wrap,i=r.loop,o=(t||[]).map((function(r){return r.wrap}));n&&s.set(n.id,e[0]);var u=l(e.concat(o),{wrap:n,subWraps:o,loop:i,fuzzy:a}).x;y(u);var g=c(t||[],{notRoot:!0,fuzzy:a}),w=g.x,h=g.firstInWrap,b=g.enterWrapX,x=g.exitWrapX,m=g.edgeX;f=new Map(Array.from(f).concat(Array.from(u)).concat(Array.from(w))),s=new Map(Array.from(s).concat(Array.from(h))),d=new Map(Array.from(d).concat(Array.from(b))),p=new Map(Array.from(p).concat(Array.from(x))),v=new Map(Array.from(v).concat(Array.from(m)))})),{x:f,firstInWrap:s,enterWrapX:d,exitWrapX:p,edgeX:v};function y(r,n){for(var i,o=e(r);!(i=o()).done;){for(var a,f=i.value,c=f[0],l=f[1],s=Array.isArray(c)?[c]:c,g=l.nextWrap,w=l.nextSubWrap,y=l.wrapId,h=l.surrounded,b=l.isWrap,x=e(u);!(a=x()).done;){var m=a.value;if(n){if(!g[m]){var W,A=l[m].id,z=d.get(A);d.set(A,t({},z,((W={})[m]=(z&&z[m]||[]).concat(s),W)))}}else{if(g[m]){var j,M=p.get(y);p.set(y,t({},M,((j={})[m]=(M&&M[m]||[]).concat(s),j)))}if(w[m]){var P,I=l[m].id,S=d.get(I);d.set(I,t({},S,((P={})[m]=(S&&S[m]||[]).concat(s),P)))}}}h||v.set(y,(v.get(y)||[]).concat({id:s,isWrap:b}))}}}function l(r,e){var t=void 0===e?{}:e,n=t.wrap,i=t.subWraps,o=void 0===i?[]:i,a=t.loop,u=t.fuzzy,f=[].concat(r);f.sort((function(r,e){return r.loc[0]-e.loc[0]}));var c=[].concat(r);c.sort((function(r,e){return r.loc[1]-e.loc[1]}));var l=new Map,g=0,w=r[0],y=r.slice(-1)[0],h="row"===a,b="col"===a;return r.forEach((function(r){var e=w===r,t=y===r,i=c.findIndex((function(e){return e.id===r.id})),a=f.findIndex((function(e){return e.id===r.id})),x=1/0,m=t&&b?w:n,W=m===w,A=!1;if(!1===W)for(var z=i-1;z>-1;--z){var j=c[z],M=s(r.loc,j.loc,u),P=M.dis,I=M.isProj,S=M.isRestrictProj;if(P<x||A&&S&&P<=x){if(W=!0,m=j,x=P,I){if(S||A)break;g+=1,A=!0}}else if(A)break}var X=1/0,R=e&&b?y:n,k=R===y,E=!1;if(!1===k)for(var O=i+1;O<c.length;++O){var C=c[O],T=d(r.loc,C.loc,u),B=T.dis,H=T.isProj,L=T.isRestrictProj;if(B<X||E&&L&&B<=x)if(k=!0,R=C,X=B,H){if(L||E)break;g+=H,E=!0}else if(E)break}var U=1/0,$=e&&h?y:n,q=$===y,D=!1;if(!1===q)for(var F=a-1;F>-1;--F){var G=f[F],J=p(r.loc,G.loc,u),K=J.dis,N=J.isProj,Q=J.isRestrictProj;if(K<U||D&&Q&&K<=x){if(q=!0,$=G,U=K,N){if(Q||D)break;g+=N,D=!0}}else if(D)break}var V=1/0,Y=t&&h?w:n,Z=Y===w,_=!1;if(!1===Z)for(var rr=a+1;rr<f.length;++rr){var er=f[rr],tr=v(r.loc,er.loc,u),nr=tr.dis,ir=tr.isProj,or=tr.isRestrictProj;if(nr<V||_&&or&&nr<=x){if(Z=!0,Y=er,V=nr,ir){if(or||_)break;g+=ir,_=!0}}else if(_)break}l.set(r.id,{up:R,down:m,left:$,right:Y,nextWrap:{up:!k,down:!W,right:!Z,left:!q},nextSubWrap:{up:o.includes(R),down:o.includes(m),right:o.includes(Y),left:o.includes($)},wrapId:null==n?"root":n.id,origin:r,isWrap:o.includes(r),surrounded:4===g,dis:{up:X,down:x,right:V,left:U}})})),{x:l}}function s(r,e,t){var n=r[0],i=r[1],o=r[2],a=r[3],u=e[0],f=e[1],c=e[2],l=e[3],s=1/0,d=!1,p=!1;return i>f&&(u-c>n+o?(t||u-c-n-o<i-a-f-l)&&(s=g(n+o,i-a,u-c,f+l)):u+c<n-o?(t||n-o-u-c<i-a-f-l)&&(s=g(n+o,i-a,u+c,f+l)):(d=!0,p=u-c>=n-o&&u+c<=n+o,s=Math.pow(i-a-f-l,2),f+l>i-a&&(s=-s))),{dis:s,isProj:d,isRestrictProj:p}}function d(r,e,t){var n=r[0],i=r[1],o=r[2],a=r[3],u=e[0],f=e[1],c=e[2],l=e[3],s=1/0,d=!1,p=!1;return i<f&&(u-c>n+o?(t||u-c-n-o<f-l-i-a)&&(s=g(n+o,i+a,u-c,f-l)):u+c<n-o?(t||n-o-u-c<f-l-i-a)&&(s=g(n-o,i+a,u+c,f-l)):(s=Math.pow(f-l-i-a,2),f-l<i+a&&(s=-s),d=!0,p=u-c>=n-o&&u+c<=n+o)),{dis:s,isProj:d,isRestrictProj:p}}function p(r,e,t){var n=r[0],i=r[1],o=r[2],a=r[3],u=e[0],f=e[1],c=e[2],l=e[3],s=1/0,d=!1,p=!1;return n>u&&(f-l>i+a?(t||f-l-i-a<n-o-u-c)&&(s=g(n-o,i+a,u+c,f-l)):f+l<i-a?(t||i-a-f-l<n-o-u-c)&&(s=g(n-o,i-a,u+c,f+l)):(s=Math.pow(n-o-u-c,2),u+c>n-o&&(s=-s),d=!0,p=f-l>=i-a&&f+l<=i+a)),{dis:s,isProj:d,isRestrictProj:p}}function v(r,e,t){var n=r[0],i=r[1],o=r[2],a=r[3],u=e[0],f=e[1],c=e[2],l=e[3],s=1/0,d=!1,p=!1;return u>n&&(f-l>i+a?(t||f-l-i-a<u-c-n-o)&&(s=g(n+o,i+a,u-c,f-l)):f+l<i-a?(t||i-a-f-l<u-c-n-o)&&(s=g(n+o,i-a,u-c,f+l)):(s=Math.pow(u-c-n-o,2),u-c<n+o&&(s=-s),d=!0,p=f-l>=i-a&&f+l<=i+a)),{dis:s,isProj:d,isRestrictProj:p}}function g(r,e,t,n){var i=t-r,o=n-e;return i*i+o*o}function w(r){if(null!=r){var e=Array.isArray(r),a=e&&(Array.isArray(r[0])?"number"==typeof r[0][0]:null!=r[0].loc||x(r[0])),u=!e,f=!a&&!u,c=null;if(a)c=[{locs:r.map((function(r){return Array.isArray(r)?{id:r,loc:r}:h(r)}))}];else if(u){var l=r.wrap,s=r.subs,d=r.locs,p=n(r,i);c=[t({locs:w(d)[0].locs},p)],null!=s&&Object.assign(c[0],{subs:w(r.subs)}),null!=l&&Object.assign(c[0],{wrap:Array.isArray(l)?{loc:l,id:l}:h(l)})}else f&&(c=r.map((function(r){var e=r.locs,i=r.wrap,a=r.subs,u=n(r,o),f=t({locs:w(e)[0].locs,wrap:Array.isArray(i)?{loc:i,id:i}:h(i)},u);return a&&Object.assign(f,{subs:w(a)}),f})));return c}}function y(r,e,t,i,o,u){var f=e;if(e&&t){var c=o.get(e.id),l=c.nextSubWrap;f=c[r],l[r]&&(f=u.get(c[r].id))}else i&&(f=u.get(e.id));if(null==f)return f;var s=f;return s.e,n(s,a)}function h(r){return x(r)?{id:e=r,loc:b(e),e:e}:x(r.loc)?t({},r,{loc:b(r.loc),e:r.loc}):r;var e}function b(r){var e=r.getBoundingClientRect(),t=e.x,n=e.y,i=e.width/2,o=e.height/2;return[t+i,-n-o,i,o]}function x(r){return r instanceof HTMLElement}function m(r,e){var t=r[0],n=r[1],i=r[2],o=r[3],a=e[0],u=e[1],f=e[2],c=e[3];return t+i<=a+f&&n+o<=u+c&&t-i>=a-f&&n-o>=u-c}function W(r,t){for(var n,i=e(t);!(n=i()).done;){var o=n.value,a=o[0],u=o[1];r.set(a,u)}}export{f as default}; //# sourceMappingURL=naviix.esm.min.js.map