1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 21:29:38 +02:00
Maybe/vendor/javascript/d3-array.js

3 lines
17 KiB
JavaScript
Raw Permalink Normal View History

import{InternMap as t,InternSet as n}from"internmap";export{InternMap,InternSet}from"internmap";function ascending(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function descending(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function bisector(t){let n,e,r;if(2!==t.length){n=ascending;e=(n,e)=>ascending(t(n),e);r=(n,e)=>t(n)-e}else{n=t===ascending||t===descending?t:zero;e=t;r=t}function left(t,r,o=0,i=t.length){if(o<i){if(0!==n(r,r))return i;do{const n=o+i>>>1;e(t[n],r)<0?o=n+1:i=n}while(o<i)}return o}function right(t,r,o=0,i=t.length){if(o<i){if(0!==n(r,r))return i;do{const n=o+i>>>1;e(t[n],r)<=0?o=n+1:i=n}while(o<i)}return o}function center(t,n,e=0,o=t.length){const i=left(t,n,e,o-1);return i>e&&r(t[i-1],n)>-r(t[i],n)?i-1:i}return{left:left,center:center,right:right}}function zero(){return 0}function number(t){return null===t?NaN:+t}function*numbers(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}const e=bisector(ascending);const r=e.right;const o=e.left;const i=bisector(number).center;function blur(t,n){if(!((n=+n)>=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=blurf(n);const o=t.slice();r(t,o,0,e,1);r(o,t,0,e,1);r(t,o,0,e,1);return t}const f=Blur2(blurf);const u=Blur2(blurfImage);function Blur2(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:o,width:i,height:f}=n;if(!((i=Math.floor(i))>=0))throw new RangeError("invalid width");if(!((f=Math.floor(void 0!==f?f:o.length/i))>=0))throw new RangeError("invalid height");if(!i||!f||!e&&!r)return n;const u=e&&t(e);const l=r&&t(r);const c=o.slice();if(u&&l){blurh(u,c,o,i,f);blurh(u,o,c,i,f);blurh(u,c,o,i,f);blurv(l,o,c,i,f);blurv(l,c,o,i,f);blurv(l,o,c,i,f)}else if(u){blurh(u,o,c,i,f);blurh(u,c,o,i,f);blurh(u,o,c,i,f)}else if(l){blurv(l,o,c,i,f);blurv(l,c,o,i,f);blurv(l,o,c,i,f)}return n}}function blurh(t,n,e,r,o){for(let i=0,f=r*o;i<f;)t(n,e,i,i+=r,1)}function blurv(t,n,e,r,o){for(let i=0,f=r*o;i<r;++i)t(n,e,i,i+f,r)}function blurfImage(t){const n=blurf(t);return(t,e,r,o,i)=>{r<<=2,o<<=2,i<<=2;n(t,e,r+0,o+0,i);n(t,e,r+1,o+1,i);n(t,e,r+2,o+2,i);n(t,e,r+3,o+3,i)}}function blurf(t){const n=Math.floor(t);if(n===t)return bluri(t);const e=t-n;const r=2*t+1;return(t,o,i,f,u)=>{if(!((f-=u)>=i))return;let l=n*o[i];const c=u*n;const s=c+u;for(let t=i,n=i+c;t<n;t+=u)l+=o[Math.min(f,t)];for(let n=i,a=f;n<=a;n+=u){l+=o[Math.min(f,n+c)];t[n]=(l+e*(o[Math.max(i,n-s)]+o[Math.min(f,n+s)]))/r;l-=o[Math.max(i,n-c)]}}}function bluri(t){const n=2*t+1;return(e,r,o,i,f)=>{if(!((i-=f)>=o))return;let u=t*r[o];const l=f*t;for(let t=o,n=o+l;t<n;t+=f)u+=r[Math.min(i,t)];for(let t=o,c=i;t<=c;t+=f){u+=r[Math.min(i,t+l)];e[t]=u/n;u-=r[Math.max(o,t-l)]}}}function count(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let o of t)null!=(o=n(o,++r,t))&&(o=+o)>=o&&++e}return e}function length$1(t){return 0|t.length}function empty(t){return!(t>0)}function arrayify(t){return"object"!==typeof t||"length"in t?t:Array.from(t)}function reducer(t){return n=>t(...n)}function cross(...t){const n="function"===typeof t[t.length-1]&&reducer(t.pop());t=t.map(arrayify);const e=t.map(length$1);const r=t.length-1;const o=new Array(r+1).fill(0);const i=[];if(r<0||e.some(empty))return i;while(true){i.push(o.map(((n,e)=>t[e][n])));let f=r;while(++o[f]===e[f]){if(0===f)return n?i.map(n):i;o[f--]=0}}}function cumsum(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:o=>e+=+n(o,r++,t)||0)}function variance(t,n){let e=0;let r;let o=0;let i=0;if(void 0===n){for(let n of t)if(null!=n&&(n=+n)>=n){r=n-o;o+=r/++e;i+=r*(n-o)}}else{let f=-1;for(let u of t)if(null!=(u=n(u,++f,t))&&(u=+u)>=u){r=u-o;o+=r/++e;i+=r*(u-o)}}if(e>1)return i/(e-1)}function deviation(t,n){const e=variance(t,n);return e?Math.sqrt(e):e}function extent(t,n){let e;let r;if(void 0===n){for(const n of t)if(null!=n)if(void 0==