UNPKG

regl-scatterplot

Version:

A WebGL-Powered Scalable Interactive Scatter Plot Library

8 lines 114 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("pub-sub-es"),require("regl")):"function"==typeof define&&define.amd?define(["exports","pub-sub-es","regl"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).createScatterplot={},e.createPubSub,e.createREGL)}(this,(function(e,n,t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(n),i=r(t);function a(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function c(e,n,t,r,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void t(e)}c.done?n(l):Promise.resolve(l).then(r,o)}function l(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,p(r.key),r)}}function s(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=y(e))||n){t&&(e=t);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return a=e.done,e},e:function(e){c=!0,i=e},f:function(){try{a||null==t.return||t.return()}finally{if(c)throw i}}}}function u(e,n,t){return(n=p(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function f(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function d(){d=function(){return n};var e,n={},t=Object.prototype,r=t.hasOwnProperty,o=Object.defineProperty||function(e,n,t){e[n]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function s(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[n]}try{s({},"")}catch(e){s=function(e,n,t){return e[n]=t}}function u(e,n,t,r){var i=n&&n.prototype instanceof g?n:g,a=Object.create(i.prototype),c=new O(r||[]);return o(a,"_invoke",{value:I(e,t,c)}),a}function f(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}n.wrap=u;var v="suspendedStart",h="suspendedYield",p="executing",y="completed",m={};function g(){}function w(){}function x(){}var b={};s(b,a,(function(){return this}));var P=Object.getPrototypeOf,S=P&&P(P(R([])));S&&S!==t&&r.call(S,a)&&(b=S);var A=x.prototype=g.prototype=Object.create(b);function E(e){["next","throw","return"].forEach((function(n){s(e,n,(function(e){return this._invoke(n,e)}))}))}function M(e,n){function t(o,i,a,c){var l=f(e[o],e,i);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==typeof u&&r.call(u,"__await")?n.resolve(u.__await).then((function(e){t("next",e,a,c)}),(function(e){t("throw",e,a,c)})):n.resolve(u).then((function(e){s.value=e,a(s)}),(function(e){return t("throw",e,a,c)}))}c(l.arg)}var i;o(this,"_invoke",{value:function(e,r){function o(){return new n((function(n,o){t(e,r,n,o)}))}return i=i?i.then(o,o):o()}})}function I(n,t,r){var o=v;return function(i,a){if(o===p)throw Error("Generator is already running");if(o===y){if("throw"===i)throw a;return{value:e,done:!0}}for(r.method=i,r.arg=a;;){var c=r.delegate;if(c){var l=C(c,r);if(l){if(l===m)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===v)throw o=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=p;var s=f(n,t,r);if("normal"===s.type){if(o=r.done?y:h,s.arg===m)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(o=y,r.method="throw",r.arg=s.arg)}}}function C(n,t){var r=t.method,o=n.iterator[r];if(o===e)return t.delegate=null,"throw"===r&&n.iterator.return&&(t.method="return",t.arg=e,C(n,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),m;var i=f(o,n.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,m;var a=i.arg;return a?a.done?(t[n.resultName]=a.value,t.next=n.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,m):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,m)}function T(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function L(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function R(n){if(n||""===n){var t=n[a];if(t)return t.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var o=-1,i=function t(){for(;++o<n.length;)if(r.call(n,o))return t.value=n[o],t.done=!1,t;return t.value=e,t.done=!0,t};return i.next=i}}throw new TypeError(typeof n+" is not iterable")}return w.prototype=x,o(A,"constructor",{value:x,configurable:!0}),o(x,"constructor",{value:w,configurable:!0}),w.displayName=s(x,l,"GeneratorFunction"),n.isGeneratorFunction=function(e){var n="function"==typeof e&&e.constructor;return!!n&&(n===w||"GeneratorFunction"===(n.displayName||n.name))},n.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,s(e,l,"GeneratorFunction")),e.prototype=Object.create(A),e},n.awrap=function(e){return{__await:e}},E(M.prototype),s(M.prototype,c,(function(){return this})),n.AsyncIterator=M,n.async=function(e,t,r,o,i){void 0===i&&(i=Promise);var a=new M(u(e,t,r,o),i);return n.isGeneratorFunction(t)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(A),s(A,l,"Generator"),s(A,a,(function(){return this})),s(A,"toString",(function(){return"[object Generator]"})),n.keys=function(e){var n=Object(e),t=[];for(var r in n)t.push(r);return t.reverse(),function e(){for(;t.length;){var r=t.pop();if(r in n)return e.value=r,e.done=!1,e}return e.done=!0,e}},n.values=R,O.prototype={constructor:O,reset:function(n){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(L),!n)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var t=this;function o(r,o){return c.type="throw",c.arg=n,t.next=r,o&&(t.method="next",t.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),s=r.call(a,"finallyLoc");if(l&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,n){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=n&&n<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=n,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(e,n){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&n&&(this.next=n),m},finish:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),L(t),m}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var o=r.arg;L(t)}return o}}throw Error("illegal catch attempt")},delegateYield:function(n,t,r){return this.delegate={iterator:R(n),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=e),m}},n}function v(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,i,a,c=[],l=!0,s=!1;try{if(i=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;l=!1}else for(;!(l=(r=i.call(t)).done)&&(c.push(r.value),c.length!==n);l=!0);}catch(e){s=!0,o=e}finally{try{if(!l&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(e,n)||y(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}function y(e,n){if(e){if("string"==typeof e)return a(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?a(e,n):void 0}}const m=e=>e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1,g=e=>e,w=(e,n)=>{if(e===n)return!0;if(e.length!==n.length)return!1;const t=new Set(e),r=new Set(n);return t.size===r.size&&n.every((e=>t.has(e)))},x=(e,n=(e=>e))=>{const t=[];for(let r=0;r<e;r++)t.push(n(r,e));return t},b=(e,...n)=>(n.forEach((n=>{const t=Object.keys(n).reduce(((e,t)=>(e[t]=Object.getOwnPropertyDescriptor(n,t),e)),{});Object.getOwnPropertySymbols(n).forEach((e=>{const r=Object.getOwnPropertyDescriptor(n,e);r.enumerable&&(t[e]=r)})),Object.defineProperties(e,t)})),e),P=(e,n)=>t=>b(t,{get[e](){return n}}),S=(e=1)=>new Promise((n=>{let t=0;const r=()=>requestAnimationFrame((()=>{t++,t<e?r():n()}));r()})),A=(e,n,t=null)=>{let r,o=0;t=null===t?n:t;const i=(...n)=>{clearTimeout(r),r=setTimeout((()=>{o>0&&(e(...n),o=0)}),t)};let a=!1;const c=(...t)=>{a?(o++,i(...t)):(e(...t),i(...t),a=!0,o=0,setTimeout((()=>{a=!1}),n))};return c.reset=()=>{a=!1},c.cancel=()=>{clearTimeout(r)},c.now=(...n)=>e(...n),c};var E,M="undefined"!=typeof Float32Array?Float32Array:Array;function I(){var e=new M(16);return M!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function C(e){var n=new M(16);return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n}function T(e,n){var t=n[0],r=n[1],o=n[2],i=n[3],a=n[4],c=n[5],l=n[6],s=n[7],u=n[8],f=n[9],d=n[10],v=n[11],h=n[12],p=n[13],y=n[14],m=n[15],g=t*c-r*a,w=t*l-o*a,x=t*s-i*a,b=r*l-o*c,P=r*s-i*c,S=o*s-i*l,A=u*p-f*h,E=u*y-d*h,M=u*m-v*h,I=f*y-d*p,C=f*m-v*p,T=d*m-v*y,L=g*T-w*C+x*I+b*M-P*E+S*A;return L?(L=1/L,e[0]=(c*T-l*C+s*I)*L,e[1]=(o*C-r*T-i*I)*L,e[2]=(p*S-y*P+m*b)*L,e[3]=(d*P-f*S-v*b)*L,e[4]=(l*M-a*T-s*E)*L,e[5]=(t*T-o*M+i*E)*L,e[6]=(y*x-h*S-m*w)*L,e[7]=(u*S-d*x+v*w)*L,e[8]=(a*C-c*M+s*A)*L,e[9]=(r*M-t*C-i*A)*L,e[10]=(h*P-p*x+m*g)*L,e[11]=(f*x-u*P-v*g)*L,e[12]=(c*E-a*I-l*A)*L,e[13]=(t*I-r*E+o*A)*L,e[14]=(p*w-h*b-y*g)*L,e[15]=(u*b-f*w+d*g)*L,e):null}function L(e,n,t){var r=n[0],o=n[1],i=n[2],a=n[3],c=n[4],l=n[5],s=n[6],u=n[7],f=n[8],d=n[9],v=n[10],h=n[11],p=n[12],y=n[13],m=n[14],g=n[15],w=t[0],x=t[1],b=t[2],P=t[3];return e[0]=w*r+x*c+b*f+P*p,e[1]=w*o+x*l+b*d+P*y,e[2]=w*i+x*s+b*v+P*m,e[3]=w*a+x*u+b*h+P*g,w=t[4],x=t[5],b=t[6],P=t[7],e[4]=w*r+x*c+b*f+P*p,e[5]=w*o+x*l+b*d+P*y,e[6]=w*i+x*s+b*v+P*m,e[7]=w*a+x*u+b*h+P*g,w=t[8],x=t[9],b=t[10],P=t[11],e[8]=w*r+x*c+b*f+P*p,e[9]=w*o+x*l+b*d+P*y,e[10]=w*i+x*s+b*v+P*m,e[11]=w*a+x*u+b*h+P*g,w=t[12],x=t[13],b=t[14],P=t[15],e[12]=w*r+x*c+b*f+P*p,e[13]=w*o+x*l+b*d+P*y,e[14]=w*i+x*s+b*v+P*m,e[15]=w*a+x*u+b*h+P*g,e}function O(e,n){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function R(e,n){return e[0]=n[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=n[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function B(e,n,t){var r=n[0],o=n[1],i=n[2],a=n[3];return e[0]=t[0]*r+t[4]*o+t[8]*i+t[12]*a,e[1]=t[1]*r+t[5]*o+t[9]*i+t[13]*a,e[2]=t[2]*r+t[6]*o+t[10]*i+t[14]*a,e[3]=t[3]*r+t[7]*o+t[11]*i+t[15]*a,e}Math.hypot||(Math.hypot=function(){for(var e=0,n=arguments.length;n--;)e+=arguments[n]*arguments[n];return Math.sqrt(e)}),E=new M(4),M!=Float32Array&&(E[0]=0,E[1]=0,E[2]=0,E[3]=0),function(){var e=function(){var e=new M(2);return M!=Float32Array&&(e[0]=0,e[1]=0),e}()}();const D=(e=[0,0],n=1,t=0,r=[0,0],o=[[0,1/0],[0,1/0]],i=[[-1/0,1/0],[-1/0,1/0]])=>{const a=new Float32Array(16),c=new Float32Array(16),l=new Float32Array(16);let s=I(),u=[...r.slice(0,2),0,1];const f=Array.isArray(o[0])?[...o[0]]:[...o],d=Array.isArray(o[0])?[...o[1]]:[...o],v=Array.isArray(i[0])?[...i[0]]:[...i],h=Array.isArray(i[0])?[...i[1]]:[...i],p=()=>function(e,n){var t=n[0],r=n[1],o=n[2],i=n[4],a=n[5],c=n[6],l=n[8],s=n[9],u=n[10];return e[0]=Math.hypot(t,r,o),e[1]=Math.hypot(i,a,c),e[2]=Math.hypot(l,s,u),e}(a,s).slice(0,2),y=()=>{const e=p();return Math.min(e[0],e[1])},m=()=>{const e=p();return Math.max(e[0],e[1])},g=([e=0,n=0]=[],t=1,r=0)=>{s=I(),w([-e,-n]),b(r),x(1/t)},w=([e=0,n=0]=[])=>{a[0]=e,a[1]=n,a[2]=0;const t=O(c,a);L(s,t,s)},x=(e,n)=>{const t=Array.isArray(e);let r=t?e[0]:e,o=t?e[1]:e;if(r<=0||o<=0||1===r&&1===o)return;const i=p(),v=i[0]*r,h=i[1]*o;if(r=Math.max(f[0],Math.min(v,f[1]))/i[0],o=Math.max(d[0],Math.min(h,d[1]))/i[1],1===r&&1===o)return;a[0]=r,a[1]=o,a[2]=1;const y=R(c,a),m=n?[...n,0]:u,g=O(a,m);L(s,g,L(s,y,L(s,T(l,g),s)))},b=e=>{const n=I();!function(e,n,t){var r,o,i,a=t[0],c=t[1],l=t[2],s=Math.hypot(a,c,l);s<1e-6||(a*=s=1/s,c*=s,l*=s,r=Math.sin(n),i=1-(o=Math.cos(n)),e[0]=a*a*i+o,e[1]=c*a*i+l*r,e[2]=l*a*i-c*r,e[3]=0,e[4]=a*c*i-l*r,e[5]=c*c*i+o,e[6]=l*c*i+a*r,e[7]=0,e[8]=a*l*i+c*r,e[9]=c*l*i-a*r,e[10]=l*l*i+o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1)}(n,e,[0,0,1]),L(s,n,s)},P=e=>{!e||e.length<16||(s=e)};return g(e,n,t),{get translation(){return function(e,n){return e[0]=n[12],e[1]=n[13],e[2]=n[14],e}(a,s).slice(0,2)},get target(){return B(a,u,T(l,s)).slice(0,2)},get scaling(){return p()},get minScaling(){return y()},get maxScaling(){return m()},get scaleBounds(){return[[...f],[...d]]},get translationBounds(){return[[...v],[...h]]},get distance(){return(()=>{const e=p();return[1/e[0],1/e[1]]})()},get minDistance(){return 1/y()},get maxDistance(){return 1/m()},get rotation(){return Math.acos(s[0]/m())},get view(){return s},get viewCenter(){return u.slice(0,2)},lookAt:g,translate:w,pan:w,rotate:b,scale:x,zoom:x,reset:()=>{g(e,n,t)},set:(...e)=>(console.warn("`set()` is deprecated. Please use `setView()` instead."),P(...e)),setScaleBounds:e=>{const n=Array.isArray(e[0]);f[0]=n?e[0][0]:e[0],f[1]=n?e[0][1]:e[1],d[0]=n?e[1][0]:e[0],d[1]=n?e[1][1]:e[1]},setTranslationBounds:e=>{const n=Array.isArray(e[0]);v[0]=n?e[0][0]:e[0],v[1]=n?e[0][1]:e[1],h[0]=n?e[1][0]:e[0],h[1]=n?e[1][1]:e[1]},setView:P,setViewCenter:e=>{u=[...e.slice(0,2),0,1]}}},z=["pan","rotate"],N={alt:"altKey",cmd:"metaKey",ctrl:"ctrlKey",meta:"metaKey",shift:"shiftKey"},k=(e,{distance:n=1,target:t=[0,0],rotation:r=0,isNdc:o=!0,isFixed:i=!1,isPan:a=!0,isPanInverted:c=[!1,!0],panSpeed:l=1,isRotate:s=!0,rotateSpeed:u=1,defaultMouseDownMoveAction:f="pan",mouseDownMoveModKey:d="alt",isZoom:v=!0,zoomSpeed:h=1,viewCenter:p,scaleBounds:y,translationBounds:m,onKeyDown:g=(()=>{}),onKeyUp:w=(()=>{}),onMouseDown:x=(()=>{}),onMouseUp:b=(()=>{}),onMouseMove:P=(()=>{}),onWheel:S=(()=>{})}={})=>{let A=D(t,n,r,p,y,m),E=0,M=0,I=0,C=0,T=0,L=0,O=!1,R=0,B=1,k=1,j=1,F=!1,_=!1,V=!1,W="pan"===f,Z=a,G=a,U=c,K=c,q=v,H=v;const Y=()=>{Z=Array.isArray(a)?Boolean(a[0]):a,G=Array.isArray(a)?Boolean(a[1]):a,U=Array.isArray(c)?Boolean(c[0]):c,K=Array.isArray(c)?Boolean(c[1]):c,q=Array.isArray(v)?Boolean(v[0]):v,H=Array.isArray(v)?Boolean(v[1]):v};Y();const X=o?e=>e/B*2*j:e=>e,$=o?e=>e/k*2:e=>-e,J=o?e=>(e/B*2-1)*j:e=>e,Q=o?e=>1-e/k*2:e=>e,ee=()=>{const n=e.getBoundingClientRect();B=n.width,k=n.height,j=B/k},ne=e=>{V=!1,w(e)},te=e=>{V=e[N[d]],g(e)},re=e=>{O=!1,b(e)},oe=e=>{O=1===e.buttons,x(e)},ie=void 0!==document.createEvent("MouseEvent").offsetX?e=>{I=e.offsetX,C=e.offsetY}:n=>{const t=e.getBoundingClientRect();I=n.clientX-t.left,C=n.clientY-t.top},ae=e=>{E=e.clientX,M=e.clientY},ce=e=>{ae(e),P(e)},le=e=>{if((q||H)&&!i){e.preventDefault(),ae(e),ie(e);const n=1===e.deltaMode?12:1;R+=n*(e.deltaY||e.deltaX||0)}S(e)};window.addEventListener("keydown",te,{passive:!0}),window.addEventListener("keyup",ne,{passive:!0}),e.addEventListener("mousedown",oe,{passive:!0}),window.addEventListener("mouseup",re,{passive:!0}),window.addEventListener("mousemove",ce,{passive:!0}),e.addEventListener("wheel",le,{passive:!1}),A.config=({defaultMouseDownMoveAction:e=null,isFixed:n=null,isPan:t=null,isPanInverted:r=null,isRotate:o=null,isZoom:p=null,panSpeed:y=null,rotateSpeed:m=null,zoomSpeed:g=null,mouseDownMoveModKey:w=null}={})=>{f=null!==e&&z.includes(e)?e:f,W="pan"===f,i=null!==n?n:i,a=null!==t?t:a,c=null!==r?r:c,s=null!==o?o:s,v=null!==p?p:v,l=+y>0?y:l,u=+m>0?m:u,h=+g>0?g:h,Y(),d=null!==w&&Object.keys(N).includes(w)?w:d},A.dispose=()=>{A=void 0,window.removeEventListener("keydown",te),window.removeEventListener("keyup",ne),e.removeEventListener("mousedown",oe),window.removeEventListener("mouseup",re),window.removeEventListener("mousemove",ce),e.removeEventListener("wheel",le)},A.refresh=ee,A.tick=()=>{if(i){const e=_;return _=!1,e}F=!1;const e=E,n=M;if((Z||G)&&O&&(W&&!V||!W&&V)){const t=Z?X(l*(U?T-e:e-T)):0,r=G?$(l*(K?L-n:n-L)):0;0===t&&0===r||(A.pan([t,r]),F=!0)}if((q||H)&&R){const e=h*Math.exp(R/k),n=J(I),t=Q(C);A.scale([q?1/e:1,H?1/e:1],[n,t]),F=!0}if(s&&O&&(W&&V||!W&&!V)&&Math.abs(T-e)+Math.abs(L-n)>0){const t=B/2,r=k/2,o=T-t,i=r-L,a=e-t,c=r-n,l=function(e,n){var t=e[0],r=e[1],o=n[0],i=n[1],a=Math.sqrt(t*t+r*r)*Math.sqrt(o*o+i*i),c=a&&(t*o+r*i)/a;return Math.acos(Math.min(Math.max(c,-1),1))}([o,i],[a,c]),s=o*c-a*i;A.rotate(u*l*Math.sign(s)),F=!0}R=0,T=e,L=n;const t=F||_;return _=!1,t};const se=e=>function(){e.apply(null,arguments),_=!0};return A.lookAt=se(A.lookAt),A.translate=se(A.translate),A.pan=se(A.pan),A.rotate=se(A.rotate),A.scale=se(A.scale),A.zoom=se(A.zoom),A.reset=se(A.reset),A.set=se(A.set),A.setScaleBounds=se(A.setScaleBounds),A.setTranslationBounds=se(A.setTranslationBounds),A.setView=se(A.setView),A.setViewCenter=se(A.setViewCenter),ee(),A};function j(e,n,t=2){const r=e.length;let o=function(e,n,t,r,o){let i;if(o===function(e,n,t,r){let o=0;for(let i=n,a=t-r;i<t;i+=r)o+=(e[a]-e[i])*(e[i+1]+e[a+1]),a=i;return o}(e,n,t,r)>0)for(let o=n;o<t;o+=r)i=ne(o/r|0,e[o],e[o+1],i);else for(let o=t-r;o>=n;o-=r)i=ne(o/r|0,e[o],e[o+1],i);i&&Y(i,i.next)&&(te(i),i=i.next);return i}(e,0,r,t,!0);const i=[];if(!o||o.next===o.prev)return i;let a,c,l;if(e.length>80*t){a=1/0,c=1/0;let n=-1/0,o=-1/0;for(let i=t;i<r;i+=t){const t=e[i],r=e[i+1];t<a&&(a=t),r<c&&(c=r),t>n&&(n=t),r>o&&(o=r)}l=Math.max(n-a,o-c),l=0!==l?32767/l:0}return _(o,i,t,a,c,l,0),i}function F(e,n){if(!e)return e;n||(n=e);let t,r=e;do{if(t=!1,r.steiner||!Y(r,r.next)&&0!==H(r.prev,r,r.next))r=r.next;else{if(te(r),r=n=r.prev,r===r.next)break;t=!0}}while(t||r!==n);return n}function _(e,n,t,r,o,i,a){if(!e)return;!a&&i&&function(e,n,t,r){let o=e;do{0===o.z&&(o.z=U(o.x,o.y,n,t,r)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next}while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,function(e){let n,t=1;do{let r,o=e;e=null;let i=null;for(n=0;o;){n++;let a=o,c=0;for(let e=0;e<t&&(c++,a=a.nextZ,a);e++);let l=t;for(;c>0||l>0&&a;)0!==c&&(0===l||!a||o.z<=a.z)?(r=o,o=o.nextZ,c--):(r=a,a=a.nextZ,l--),i?i.nextZ=r:e=r,r.prevZ=i,i=r;o=a}i.nextZ=null,t*=2}while(n>1)}(o)}(e,r,o,i);let c=e;for(;e.prev!==e.next;){const l=e.prev,s=e.next;if(i?W(e,r,o,i):V(e))n.push(l.i,e.i,s.i),te(e),e=s.next,c=s.next;else if((e=s)===c){a?1===a?_(e=Z(F(e),n),n,t,r,o,i,2):2===a&&G(e,n,t,r,o,i):_(F(e),n,t,r,o,i,1);break}}}function V(e){const n=e.prev,t=e,r=e.next;if(H(n,t,r)>=0)return!1;const o=n.x,i=t.x,a=r.x,c=n.y,l=t.y,s=r.y,u=Math.min(o,i,a),f=Math.min(c,l,s),d=Math.max(o,i,a),v=Math.max(c,l,s);let h=r.next;for(;h!==n;){if(h.x>=u&&h.x<=d&&h.y>=f&&h.y<=v&&K(o,c,i,l,a,s,h.x,h.y)&&H(h.prev,h,h.next)>=0)return!1;h=h.next}return!0}function W(e,n,t,r){const o=e.prev,i=e,a=e.next;if(H(o,i,a)>=0)return!1;const c=o.x,l=i.x,s=a.x,u=o.y,f=i.y,d=a.y,v=Math.min(c,l,s),h=Math.min(u,f,d),p=Math.max(c,l,s),y=Math.max(u,f,d),m=U(v,h,n,t,r),g=U(p,y,n,t,r);let w=e.prevZ,x=e.nextZ;for(;w&&w.z>=m&&x&&x.z<=g;){if(w.x>=v&&w.x<=p&&w.y>=h&&w.y<=y&&w!==o&&w!==a&&K(c,u,l,f,s,d,w.x,w.y)&&H(w.prev,w,w.next)>=0)return!1;if(w=w.prevZ,x.x>=v&&x.x<=p&&x.y>=h&&x.y<=y&&x!==o&&x!==a&&K(c,u,l,f,s,d,x.x,x.y)&&H(x.prev,x,x.next)>=0)return!1;x=x.nextZ}for(;w&&w.z>=m;){if(w.x>=v&&w.x<=p&&w.y>=h&&w.y<=y&&w!==o&&w!==a&&K(c,u,l,f,s,d,w.x,w.y)&&H(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;x&&x.z<=g;){if(x.x>=v&&x.x<=p&&x.y>=h&&x.y<=y&&x!==o&&x!==a&&K(c,u,l,f,s,d,x.x,x.y)&&H(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function Z(e,n){let t=e;do{const r=t.prev,o=t.next.next;!Y(r,o)&&X(r,t,t.next,o)&&Q(r,o)&&Q(o,r)&&(n.push(r.i,t.i,o.i),te(t),te(t.next),t=e=o),t=t.next}while(t!==e);return F(t)}function G(e,n,t,r,o,i){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&q(a,e)){let c=ee(a,e);return a=F(a,a.next),c=F(c,c.next),_(a,n,t,r,o,i,0),void _(c,n,t,r,o,i,0)}e=e.next}a=a.next}while(a!==e)}function U(e,n,t,r,o){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-t)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))|(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n=(n-r)*o|0)|n<<8))|n<<4))|n<<2))|n<<1))<<1}function K(e,n,t,r,o,i,a,c){return!(e===a&&n===c)&&function(e,n,t,r,o,i,a,c){return(o-a)*(n-c)>=(e-a)*(i-c)&&(e-a)*(r-c)>=(t-a)*(n-c)&&(t-a)*(i-c)>=(o-a)*(r-c)}(e,n,t,r,o,i,a,c)}function q(e,n){return e.next.i!==n.i&&e.prev.i!==n.i&&!function(e,n){let t=e;do{if(t.i!==e.i&&t.next.i!==e.i&&t.i!==n.i&&t.next.i!==n.i&&X(t,t.next,e,n))return!0;t=t.next}while(t!==e);return!1}(e,n)&&(Q(e,n)&&Q(n,e)&&function(e,n){let t=e,r=!1;const o=(e.x+n.x)/2,i=(e.y+n.y)/2;do{t.y>i!=t.next.y>i&&t.next.y!==t.y&&o<(t.next.x-t.x)*(i-t.y)/(t.next.y-t.y)+t.x&&(r=!r),t=t.next}while(t!==e);return r}(e,n)&&(H(e.prev,e,n.prev)||H(e,n.prev,n))||Y(e,n)&&H(e.prev,e,e.next)>0&&H(n.prev,n,n.next)>0)}function H(e,n,t){return(n.y-e.y)*(t.x-n.x)-(n.x-e.x)*(t.y-n.y)}function Y(e,n){return e.x===n.x&&e.y===n.y}function X(e,n,t,r){const o=J(H(e,n,t)),i=J(H(e,n,r)),a=J(H(t,r,e)),c=J(H(t,r,n));return o!==i&&a!==c||(!(0!==o||!$(e,t,n))||(!(0!==i||!$(e,r,n))||(!(0!==a||!$(t,e,r))||!(0!==c||!$(t,n,r)))))}function $(e,n,t){return n.x<=Math.max(e.x,t.x)&&n.x>=Math.min(e.x,t.x)&&n.y<=Math.max(e.y,t.y)&&n.y>=Math.min(e.y,t.y)}function J(e){return e>0?1:e<0?-1:0}function Q(e,n){return H(e.prev,e,e.next)<0?H(e,n,e.next)>=0&&H(e,e.prev,n)>=0:H(e,n,e.prev)<0||H(e,e.next,n)<0}function ee(e,n){const t=re(e.i,e.x,e.y),r=re(n.i,n.x,n.y),o=e.next,i=n.prev;return e.next=n,n.prev=e,t.next=o,o.prev=t,r.next=t,t.prev=r,i.next=r,r.prev=i,r}function ne(e,n,t,r){const o=re(e,n,t);return r?(o.next=r.next,o.prev=r,r.next.prev=o,r.next=o):(o.prev=o,o.next=o),o}function te(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function re(e,n,t){return{i:e,x:n,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}const oe=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),ie=Float32Array.BYTES_PER_ELEMENT,ae=e=>e.length>0&&Array.isArray(e[0]),{push:ce,splice:le}=Array.prototype;function se(e,n=1,t=1){const r=[],o=new Array(2*n);for(let i=0,a=e.length/n;i<a;i++){const a=i*n;for(let r=0;r<n;r++){const i=e[a+r];o[r]=i,o[r+n]=i*t}ce.apply(r,o)}return r}function ue(e,n,t,r){const o=new Array(r),i=n*r;for(let n=0;n<r;n++)o[n]=e[i+n];return le.call(e,t*r,0,...o),e}const fe=(e,{projection:n=oe,model:t=oe,view:r=oe,points:o=[],colorIndices:i=[],color:a=[.8,.5,0,1],opacity:c=null,opacities:l=[],width:s=1,widths:u=[],miter:f=!0,is2d:d=!1,zPos2d:v=0}={})=>{if(!e)return void console.error("Regl instance is undefined.");const h=new Float32Array(16);let p,y,m,g,w,x,b,P,S,A,E,M,I,C,T,O,R,B,D=d?2:3;const z=()=>+(l.length===y||null!==c),N=()=>{A=e.buffer(),E=e.buffer(),M=e.buffer(),T=e.buffer(),O={prevPosition:{buffer:()=>A,offset:0,stride:3*ie},currPosition:{buffer:()=>A,offset:3*ie*2,stride:3*ie},nextPosition:{buffer:()=>A,offset:3*ie*4,stride:3*ie},opacity:{buffer:()=>E,offset:2*ie,stride:ie},offsetScale:{buffer:()=>M,offset:2*ie,stride:ie},colorIndex:{buffer:()=>T,offset:2*ie,stride:ie}},R=e.elements(),B=e({attributes:O,depth:{enable:!d},blend:{enable:!0,func:{srcRGB:"src alpha",srcAlpha:"one",dstRGB:"one minus src alpha",dstAlpha:"one minus src alpha"}},uniforms:{projectionViewModel:(e,n)=>{const t=e.projection||n.projection,r=e.model||n.model,o=e.view||n.view;return L(h,t,L(h,o,r))},aspectRatio:({viewportWidth:e,viewportHeight:n})=>e/n,colorTex:()=>I,colorTexRes:()=>C,colorTexEps:()=>.5/C,pixelRatio:({pixelRatio:e})=>e,width:({pixelRatio:e,viewportHeight:n})=>s/n*e,useOpacity:z,useColorOpacity:()=>Number(!z()),miter:Number(Boolean(f))},elements:()=>R,vert:"\nuniform mat4 projectionViewModel;\nuniform float aspectRatio;\n\nuniform sampler2D colorTex;\nuniform float colorTexRes;\nuniform float colorTexEps;\nuniform float width;\nuniform float useOpacity;\nuniform float useColorOpacity;\nuniform int miter;\n\nattribute vec3 prevPosition;\nattribute vec3 currPosition;\nattribute vec3 nextPosition;\nattribute float opacity;\nattribute float offsetScale;\nattribute float colorIndex;\n\nvarying vec4 color;\n\nvoid main() {\n vec2 aspectVec = vec2(aspectRatio, 1.0);\n vec4 prevProjected = projectionViewModel * vec4(prevPosition, 1.0);\n vec4 currProjected = projectionViewModel * vec4(currPosition, 1.0);\n vec4 nextProjected = projectionViewModel * vec4(nextPosition, 1.0);\n\n // get 2D screen space with W divide and aspect correction\n vec2 prevScreen = prevProjected.xy / prevProjected.w * aspectVec;\n vec2 currScreen = currProjected.xy / currProjected.w * aspectVec;\n vec2 nextScreen = nextProjected.xy / nextProjected.w * aspectVec;\n\n float len = width;\n\n // starting point uses (next - current)\n vec2 dir = vec2(0.0);\n if (currScreen == prevScreen) {\n dir = normalize(nextScreen - currScreen);\n }\n // ending point uses (current - previous)\n else if (currScreen == nextScreen) {\n dir = normalize(currScreen - prevScreen);\n }\n // somewhere in middle, needs a join\n else {\n // get directions from (C - B) and (B - A)\n vec2 dirA = normalize((currScreen - prevScreen));\n if (miter == 1) {\n vec2 dirB = normalize((nextScreen - currScreen));\n // now compute the miter join normal and length\n vec2 tangent = normalize(dirA + dirB);\n vec2 perp = vec2(-dirA.y, dirA.x);\n vec2 miter = vec2(-tangent.y, tangent.x);\n len = width / dot(miter, perp);\n dir = tangent;\n } else {\n dir = dirA;\n }\n }\n\n vec2 normal = vec2(-dir.y, dir.x) * len;\n normal.x /= aspectRatio;\n vec4 offset = vec4(normal * offsetScale, 0.0, 0.0);\n gl_Position = currProjected + offset;\n\n // Get color from texture\n float colorRowIndex = floor((colorIndex + colorTexEps) / colorTexRes);\n vec2 colorTexIndex = vec2(\n (colorIndex / colorTexRes) - colorRowIndex + colorTexEps,\n colorRowIndex / colorTexRes + colorTexEps\n );\n\n color = texture2D(colorTex, colorTexIndex);\n color.a = useColorOpacity * color.a + useOpacity * opacity;\n}",frag:"\nprecision mediump float;\nvarying vec4 color;\nvoid main() {\n gl_FragColor = color;\n}"})},k=()=>{1===p&&o.length%D>0&&console.warn(`The length of points (${y}) does not match the dimensions (${D}). Incomplete points are ignored.`),g=o.flat().slice(0,y*D),d&&(g=function(e,n,t,r=0){const o=[],i=new Array(t).fill(r);for(let t=0,r=e.length/n;t<r;t++){const r=t*n;for(let t=0;t<n;t++)i[t]=e[r+t];ce.apply(o,i)}return o}(g,2,3,v)),i.length!==y&&(i=new Array(y).fill(0)),u.length!==y&&(u=new Array(y).fill(1));const e=i.slice(),n=l.length===y?l.slice():new Array(y).fill(null===c?1:c),t=u.slice();let r=0;for(const o of m){const i=r+o-1;ue(g,i,i,3),ue(g,r,r,3),ue(e,i,i,1),ue(e,r,r,1),ue(n,i,i,1),ue(n,r,r,1),ue(t,i,i,1),ue(t,r,r,1),r+=o+2}w=new Float32Array(se(g,3)),x=se(e),b=se(n),P=se(t,1,-1),S=((e,n=[])=>{let t=0;for(const r of e){for(let e=0;e<r-1;e++){const r=t+2*e,o=r+1,i=r+2,a=r+3;n.push(r,o,i,i,o,a)}t+=2*(r+2)}return n})(m),A({usage:"dynamic",type:"float",length:w.length*ie,data:w}),E({usage:"dynamic",type:"float",length:b.length*ie,data:b}),M({usage:"dynamic",type:"float",length:P.length*ie,data:P}),T({usage:"dynamic",type:"float",length:x.length*ie,data:x}),R({primitive:"triangles",usage:"dynamic",type:S.length>65536?"uint32":"uint16",data:S})},j=()=>{F(),N()},F=()=>{o=[],g=[],w=new Float32Array,P=[],S=[],A.destroy(),M.destroy(),R.destroy()},_=(e,n)=>{const t=n.flat(2);return t.length===y?t:t.length===p?m.flatMap(((e,n)=>Array(e).fill(t[n]))):e},V=(e=[],{colorIndices:n=i,opacities:t=l,widths:r=u,is2d:a=d}={})=>{D=(d=a)?2:3,p=ae(o=e)?o.length:1,m=ae(o)?o.map((e=>Math.floor(e.length/D))):[Math.floor(o.length/D)],y=m.reduce(((e,n)=>e+n),0),i=_(i,n),l=_(l,t),u=_(u,r),o&&y>1?k():j()},W=()=>{const n=ae(a)?a:[a];C=Math.max(2,Math.ceil(Math.sqrt(n.length)));const t=new Uint8Array(C**2*4);n.forEach(((e,n)=>{t[4*n]=Math.min(255,Math.max(0,Math.round(255*e[0]))),t[4*n+1]=Math.min(255,Math.max(0,Math.round(255*e[1]))),t[4*n+2]=Math.min(255,Math.max(0,Math.round(255*e[2]))),t[4*n+3]=Number.isNaN(+e[3])?255:Math.min(255,Math.max(0,Math.round(255*e[3])))})),I=e.texture({data:t,shape:[C,C,4]})};return N(),W(),o&&o.length>1&&V(o),{clear:j,destroy:F,draw:({projection:e,model:i,view:a}={})=>{e&&(n=e),i&&(t=i),a&&(r=a),o&&o.length>1&&B({projection:n,model:t,view:r})},getPoints:()=>o,setPoints:V,getData:()=>({points:w,widths:P,opacities:b,colorIndices:x}),getBuffer:()=>({points:A,widths:M,opacities:E,colorIndices:T}),getStyle:()=>({color:a,miter:f,width:s}),setStyle:({color:e,opacity:n,miter:t,width:r}={})=>{var o;e&&((e,n=c)=>{a=e,c=n,I&&I.destroy(),W()})(e,n||c),t&&(f=Boolean(t)),void 0!==(o=r)&&Number.isFinite(o)&&(s=r)}}}; /** * KDBush - A fast static index for 2D points * @license ISC License * @copyright Vladimir Agafonkin 2018 * @version 4.0.2 * @see https://github.com/mourner/kdbush/ */var de,ve=function(){var e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],n=function(){function n(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Float64Array,i=arguments.length>3?arguments[3]:void 0;if(function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,n),isNaN(t)||t<0)throw new Error("Unexpected numItems value: ".concat(t,"."));this.numItems=+t,this.nodeSize=Math.min(Math.max(+r,2),65535),this.ArrayType=o,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;var a=e.indexOf(this.ArrayType),c=2*t*this.ArrayType.BYTES_PER_ELEMENT,l=t*this.IndexArrayType.BYTES_PER_ELEMENT,s=(8-l%8)%8;if(a<0)throw new Error("Unexpected typed array class: ".concat(o,"."));i&&i instanceof ArrayBuffer?(this.data=i,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+l+s,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+c+l+s),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+l+s,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+a]),new Uint16Array(this.data,2,1)[0]=r,new Uint32Array(this.data,4,1)[0]=t)}return r=n,i=[{key:"from",value:function(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");var r=v(new Uint8Array(t,0,2),2),o=r[0],i=r[1];if(219!==o)throw new Error("Data does not appear to be in a KDBush format.");var a=i>>4;if(1!==a)throw new Error("Got v".concat(a," data when expected v").concat(1,"."));var c=e[15&i];if(!c)throw new Error("Unrecognized array type.");var l=v(new Uint16Array(t,2,1),1)[0];return new n(v(new Uint32Array(t,4,1),1)[0],l,c,t)}}],(o=[{key:"add",value:function(e,n){var t=this._pos>>1;return this.ids[t]=t,this.coords[this._pos++]=e,this.coords[this._pos++]=n,t}},{key:"finish",value:function(){var e=this._pos>>1;if(e!==this.numItems)throw new Error("Added ".concat(e," items when expected ").concat(this.numItems,"."));return t(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}},{key:"range",value:function(e,n,t,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");for(var o=this.ids,i=this.coords,a=this.nodeSize,c=[0,o.length-1,0],l=[];c.length;){var s=c.pop()||0,u=c.pop()||0,f=c.pop()||0;if(u-f<=a)for(var d=f;d<=u;d++){var v=i[2*d],h=i[2*d+1];v>=e&&v<=t&&h>=n&&h<=r&&l.push(o[d])}else{var p=f+u>>1,y=i[2*p],m=i[2*p+1];y>=e&&y<=t&&m>=n&&m<=r&&l.push(o[p]),(0===s?e<=y:n<=m)&&(c.push(f),c.push(p-1),c.push(1-s)),(0===s?t>=y:r>=m)&&(c.push(p+1),c.push(u),c.push(1-s))}}return l}},{key:"within",value:function(e,n,t){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");for(var r=this.ids,o=this.coords,i=this.nodeSize,c=[0,r.length-1,0],l=[],s=t*t;c.length;){var u=c.pop()||0,f=c.pop()||0,d=c.pop()||0;if(f-d<=i)for(var v=d;v<=f;v++)a(o[2*v],o[2*v+1],e,n)<=s&&l.push(r[v]);else{var h=d+f>>1,p=o[2*h],y=o[2*h+1];a(p,y,e,n)<=s&&l.push(r[h]),(0===u?e-t<=p:n-t<=y)&&(c.push(d),c.push(h-1),c.push(1-u)),(0===u?e+t>=p:n+t>=y)&&(c.push(h+1),c.push(f),c.push(1-u))}}return l}}])&&l(r.prototype,o),i&&l(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i}();function t(e,n,o,i,a,c){if(!(a-i<=o)){var l=i+a>>1;r(e,n,l,i,a,c),t(e,n,o,i,l-1,1-c),t(e,n,o,l+1,a,1-c)}}function r(e,n,t,i,a,c){for(;a>i;){if(a-i>600){var l=a-i+1,s=t-i+1,u=Math.log(l),f=.5*Math.exp(2*u/3),d=.5*Math.sqrt(u*f*(l-f)/l)*(s-l/2<0?-1:1);r(e,n,t,Math.max(i,Math.floor(t-s*f/l+d)),Math.min(a,Math.floor(t+(l-s)*f/l+d)),c)}var v=n[2*t+c],h=i,p=a;for(o(e,n,i,t),n[2*a+c]>v&&o(e,n,i,a);h<p;){for(o(e,n,h,p),h++,p--;n[2*h+c]<v;)h++;for(;n[2*p+c]>v;)p--}n[2*i+c]===v?o(e,n,i,p):o(e,n,++p,a),p<=t&&(i=p+1),t<=p&&(a=p-1)}}function o(e,n,t,r){i(e,t,r),i(n,2*t,2*r),i(n,2*t+1,2*r+1)}function i(e,n,t){var r=e[n];e[n]=e[t],e[t]=r}function a(e,n,t,r){var o=e-t,i=n-r;return o*o+i*i}return n},he=function(){addEventListener("message",(function(e){var n=e.data.points;0===n.length&&self.postMessage({error:new Error("Invalid point data")});var t,r=new KDBush(n.length,e.data.nodeSize),o=s(n);try{for(o.s();!(t=o.n()).done;){var i=v(t.value,2),a=i[0],c=i[1];r.add(a,c)}}catch(e){o.e(e)}finally{o.f()}r.finish(),postMessage(r.data,[r.data])}))},pe=ve(),ye=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{nodeSize:16,useWorker:void 0};return new Promise((function(t,r){if(e instanceof ArrayBuffer)t(pe.from(e));else if((e.length<1e6||!1===n.useWorker)&&!0!==n.useWorker){var o,i=new pe(e.length,n.nodeSize),a=s(e);try{for(a.s();!(o=a.n()).done;){var c=o.value;i.add(c[0],c[1])}}catch(e){a.e(e)}finally{a.f()}i.finish(),t(i)}else{var l=function(e){var n=ve.toString(),t=e.toString(),r="const createKDBushClass = ".concat(n,";")+"KDBush = createKDBushClass();"+"const createWorker = ".concat(t,";")+"createWorker();",o=new Blob([r],{type:"text/javascript"}),i=URL.createObjectURL(o),a=new Worker(i,{name:"KDBush"});return URL.revokeObjectURL(i),a}(he);l.onmessage=function(e){e.data.error?r(e.data.error):t(pe.from(e.data)),l.terminate()},l.postMessage({points:e,nodeSize:n.nodeSize})}}))},me="auto",ge=Float32Array.BYTES_PER_ELEMENT,we=["OES_texture_float","OES_element_index_uint","WEBGL_color_buffer_float","EXT_float_blend"],xe={color:[0,0,0,0],depth:1},be="panZoom",Pe="lasso",Se="rotate",Ae=[be,Pe,Se],Ee=be,Me={cubicIn:e=>e*e*e,cubicInOut:m,cubicOut:e=>--e*e*e+1,linear:e=>e,quadIn:e=>e*e,quadInOut:e=>e<.5?2*e*e:(4-2*e)*e-1,quadOut:e=>e*(2-e)},Ie=m,Ce="continuous",Te="categorical",Le=[Ce,Te],Oe="deselect",Re="lassoEnd",Be=[Oe,Re],De=[0,.666666667,1,1],ze=Re,Ne=750,ke=500,je=100,Fe=250,_e="lasso",Ve="rotate",We="merge",Ze="remove",Ge=[_e,Ve,We,Ze],Ue="alt",Ke="cmd",qe="ctrl",He="meta",Ye="shift",Xe=[Ue,Ke,qe,He,Ye],$e=u(u(u(u({},Ze,Ue),Ve,Ue),_e,Ye),We,Ke),Je=me,Qe=me,en=null,nn=null,tn=null,rn=null,on=null,an=[.66,.66,.66,1],cn=[0,.55,1,1],ln=[1,1,1,1],sn=[0,0,0,1],un=null,fn=[.66,.66,.66,.2],dn=[0,.55,1,1],vn=[1,1,1,1],hn=[1,1,1,.5],pn=[0,0],yn=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),mn=[1,1,1,.5],gn=new Set(["z","valueZ","valueA","value1","category"]),wn=new Set(["w","valueW","valueB","value2","value"]),xn=15e3,bn=Symbol("SKIP_DEPRECATION_VALUE_TRANSLATION"),Pn="Points have not been drawn",Sn="The instance was already destroyed",An=function(e,n){return"".concat(e,"ms ease-out effectIn ").concat(n,"ms 1 normal forwards")},En=function(e,n){return"".concat(e,"ms linear leftSpinIn ").concat(n,"ms 1 normal forwards")},Mn=function(e,n){return"".concat(e,"ms linear rightSpinIn ").concat(n,"ms 1 normal forwards")},In=function(e,n){return"".concat(e,"ms linear circleIn ").concat(n,"ms 1 normal forwards")},Cn=function(e,n,t){return"\n @keyframes mainIn {\n 0% {\n color: ".concat(n,";\n opacity: 0;\n }\n 0%, ").concat(e,"% {\n color: ").concat(n,";\n opacity: 1;\n }\n 100% {\n color: ").concat(t,";\n opacity: 0.8;\n }\n }\n")},Tn=function(e,n,t,r){return"\n @keyframes effectIn {\n 0%, ".concat(e,"% {\n opacity: ").concat(t,";\n transform: scale(").concat(r,");\n }\n ").concat(n,"% {\n opacity: 0.66;\n transform: scale(1.5);\n }\n 99% {\n opacity: 0;\n transform: scale(2);\n }\n 100% {\n opacity: 0;\n transform: scale(0);\n }\n }\n")},Ln=function(e,n){return"\n @keyframes leftSpinIn {\n 0% {\n transform: rotate(".concat(n,"deg);\n }\n ").concat(e,"%, 100% {\n transform: rotate(360deg);\n }\n }\n")},On=function(e,n){return"\n @keyframes rightSpinIn {\n 0% {\n transform: rotate(".concat(n,"deg);\n }\n ").concat(e,"%, 100% {\n transform: rotate(180deg);\n }\n }\n")},Rn=function(e){return"".concat(e,"ms linear effectOut 0s 1 normal forwards")},Bn=function(e){return"".concat(e,"ms linear leftSpinOut 0s 1 normal forwards")},Dn=function(e){return"".concat(e,"ms linear rightSpinOut 0s 1 normal forwards")},zn=function(e){return"".concat(e,"ms linear circleOut 0s 1 normal forwards")},Nn=function(e,n){return"\n @keyframes mainOut {\n 0% {\n color: ".concat(e,";\n }\n 100% {\n color: ").concat(n,";\n }\n }\n")},kn=function(e,n){return"\n @keyframes rightSpinOut {\n 0%, ".concat(e,"% {\n transform: rotate(").concat(n,"deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n")},jn=function(e){return"\n @keyframes leftSpinOut {\n 0% {\n transform: rotate(".concat(e,"deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n")},Fn=function(e,n,t){return"\n @keyframes circleOut {\n 0%, ".concat(e,"% {\n clip-path: ").concat(n,";\n opacity: ").concat(t,";\n }\n ").concat(e+.01,"% {\n clip-path: inset(0 0 0 50%);\n opacity: ").concat(t,";\n }\n 100% {\n clip-path: inset(0 0 0 50%);\n opacity: 0;\n }\n }\n")},_n=function(e){return null===e?arguments.length>1&&void 0!==arguments[1]?arguments[1]:null:e},Vn=function(){if(!de){var e=document.createElement("style");document.head.appendChild(e),de=e.sheet}return de},Wn=function(e){var n=Vn(),t=n.rules.length;return n.insertRule(e,t),t},Zn=function(e){Vn().deleteRule(e)},Gn="".concat(2500,"ms ease scaleInFadeOut 0s 1 normal backwards"),Un=null,Kn="".concat(250,"ms ease fadeScaleOut 0s 1 normal backwards"),qn=null,Hn=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.onDraw,r=void 0===t?g:t,o=n.onStart,i=void 0===o?g:o,a=n.onEnd,c=void 0===a?g:a,l=n.enableInitiator,s=void 0===l||l,u=n.initiatorParentElement,f=void 0===u?document.body:u,d=n.longPressIndicatorParentElement,p=void 0===d?document.body:d,y=n.minDelay,m=void 0===y?8:y,w=n.minDist,x=void 0===w?2:w,E=n.pointNorm,M=void 0===E?g:E,I=n.type,C=void 0===I?"freeform":I,T=n.brushSize,L=s,O=f,R=p,B=r,D=i,z=c,N=m,k=x,j=M,F=C,_=void 0===T?24:T,V=document.createElement("div"),W=Math.random().toString(36).substring(2,5)+Math.random().toString(36).substring(2,5);V.id="lasso-initiator-".concat(W),V.style.position="fixed",V.style.display="flex",V.style.justifyContent="center",V.style.alignItems="center",V.style.zIndex=99,V.style.width="4rem",V.style.height="4rem",V.style.borderRadius="4rem",V.style.opacity=.5,V.style.transform="translate(-50%,-50%) scale(0) rotate(0deg)";var Z,G=function(){var e=document.createElement("div"),n=Math.random().toString(36).substring(2,5)+Math.random().toString(36).substring(2,5);e.id="lasso-long-press-".concat(n),e.style.position="fixed",e.style.width="1.25rem",e.style.height="1.25rem",e.style.pointerEvents="none",e.style.transform="translate(-50%,-50%)";var t=document.createElement("div");t.style.position="absolute",t.style.top=0,t.style.left=0,t.style.width="1.25rem",t.style.height="1.25rem",t.style.clipPath="inset(0px 0px 0px 50%)",t.style.opacity=0,e.appendChild(t);var r=document.createElement("div");r.style.position="absolute",r.style.top=0,r.style.left=0,r.style.width="0.8rem",r.style.height="0.8rem",r.style.border="0.2rem solid currentcolor",r.style.borderRadius="0.8rem",r.style.clipPath="inset(0px 50% 0px 0px)",r.style.transform="rotate(0deg)",t.appendChild(r);var o=document.createElement("div");o.style.position="absolute",o.style.top=0,o.style.left=0,o.style.width="0.8rem",o.style.height="0.8rem",o.style.border="0.2rem solid currentcolor",o.style.borderRadius="0.8rem",o.style.clipPath="inset(0px 50% 0px 0px)",o.style.transform="rotate(0deg)",t.appendChild(o);var i=document.createElement("div");return i.style.position="absolute",i.style.top=0,i.style.left=0,i.style.width="1.25rem",i.style.height="1.25rem",i.style.borderRadius="1.25rem",i.style.background="currentcolor",i.style.transform="scale(0)",i.style.opacity=0,e.appendChild(i),{longPress:e,longPressCircle:t,longPressCircleLeft:r,longPressCircleRight:o,longPressEffect:i}}(),U=G.longPress,K=G.longPressCircle,q=G.longPressCircleLeft,H=G.longPressCircleRight,Y=G.longPressEffect,X=!1,$=!1,J=[],Q=[],ee=[],ne=[],te=!1,re=null,oe=null,ie=null,ae=null,ce=null,le=null,se=null,ue=null,fe=null,de=null,ve=function(){X=!1};window.addEventListener("mouseup",ve);var he,pe=function(){V.style.opacity=.5,V.style.transform="translate(-50%,-50%) scale(0) rotate(0deg)"},ye=function(e,n){var t=getComputedStyle(e),r=+t.opacity,o=t.transform.match(/([0-9.-]+)+/g),i=+o[0],a=+o[1],c=Math.sqrt(i*i+a*a),l=Math.atan2(a,i)*(180/Math.PI);return{opacity:r,scale:c,rotate:l=n&&l<=0?360+l:l}},me=function(e){if(L&&!X){var n=e.clientX,t=e.clientY;V.style.top="".concat(t,"px"),V.style.left="".concat(n,"px");var r=ye(V),o=r.opacity,i=r.scale,a=r.rotate;V.style.opacity=o,V.style.transform="translate(-50%,-50%) scale(".concat(i,") rotate(").concat(a,"deg)"),V.style.animation="none",S().then((function(){null!==Un&&Zn(Un),Un=Wn(function(e,n,t){return"\n@keyframes scaleInFadeOut {\n 0% {\n opacity: ".concat(e,";\n transform: translate(-50%,-50%) scale(").concat(n,") rotate(").concat(t,"deg);\n }\n 10% {\n opacity: 1;\n transform: translate(-50%,-50%) scale(1) rotate(").concat(t+20,"deg);\n }\n 100% {\n opacity: 0;\n transform: translate(-50%,-50%) scale(0.9) rotate(").concat(t+60,"deg);\n }\n}\n")}(o,i,a)),V.style.animation=Gn,S().then((function(){pe()}))}))}},ge=function(){var e=ye(V),n=e.opacity,t=e.scale,r=e.rotate;V.style.opacity=n,V.style.transform="translate(-50%,-50%) scale(".concat(t,") rotate(").concat(r,"deg)"),V.style.animation="none",S(2).then((function(){null!==qn&&Zn(qn),qn=Wn(function(e,n,t){return"\n@keyframes fadeScaleOut {\n 0% {\n opacity: ".concat(e,";\n transform: translate(-50%,-50%) scale(").concat(n,") rotate(").concat(t,"deg);\n }\n 100% {\n opacity: 0;\n transform: translate(-50%,-50%) scale(0) rotate(").concat(t,"deg);\n }\n}\n")}(n,t,r)),V.style.animation=Kn,S().then((function(){pe()}))}))},we=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{time:Ne,extraTime:ke,delay:je},r=t.time,o=void 0===r?Ne:r,i=t.extraTime,a=void 0===i?ke:i,c=t.delay,l=void 0===c?je:c;te=!0;var s=getComputedStyle(U);U.style.color=s.color,U.style.top="".concat(n,"px"),U.style.left="".concat(e,"px"),U.style.animation="none";var u=getComputedStyle(K);K.style.clipPath=u.clipPath,K.style.opacity=u.opacity,K.style.animation="none";var f=ye(Y);Y.style.opacity=f.opacity,Y.style.transform="scale(".concat(f.scale,")"),Y.style.animation="none";var d=ye(q);q.style.transform="rotate(".concat(d.rotate,"deg)"),q.style.animation="none";var v=ye(H);H.style.transform="rotate(".concat(v.rotate,"deg)"),H.style.animation="none",S().then((function(){if(te){null!==ce&&Zn(ce),null!==ae&&Zn(ae),null!==ie&&Zn(ie),null!==oe&&Zn(oe),null!==re&&Zn(re);var e=function(e){var n,t,r,o,i,a=e.time,c=void 0===a?Ne:a,l=e.extraTime,s=void 0===l?ke:l,u=e.delay,f=void 0===u?je:u,d=e.currentColor,v=e.targetColor,h=e.effectOpacity,p=e.effectScale,y=e.circleLeftRotation,m=e.circleRightRotation,g=e.circleClipPath,w=e.circleOpacity,x=y/360,b=function(e,n,t){return(1-e)*n+t}(x,c,s),P=Math.round((1-x)*c/b*100),S=Math.round(P/2),A=P+(100-P)/4;return{rules:{main:Cn(P,d,v),effect:Tn(P,A,h,p),circleRight:On(S,m),circleLeft:Ln(P,y),circle:(r=S,o=g,i=w,"\n @keyframes circleIn {\n 0% {\n clip-path: ".concat(o,";\n opacity: ").concat(i,";\n }\n ").concat(r,"% {\n clip-path: ").concat(o,";\n opacity: 1;\n }\n ").concat(r+.01,"%, 100% {\n clip-path: inset(0);\n opacity: 1;\n }\n }\n"))},names:{main:(n=b,t=f,"".concat(n,"ms ease-out mainIn ").concat(t,"ms 1 normal forwards")),effect:An(b,f),circleLeft:En(b,f),circleRight:Mn(b,f),circle:In(b,f)}}}({time:o,extraTime:a,delay:l,currentColor:s.color||"currentcolor",targetColor:U.dataset.activeColor,effectOpacity:f.opacity||0,effectScale:f.scale||0,circleLeftRotation:d.rotate||0,circleRightRotation:v.rotate||0,circleClipPath:u.clipPath||"inset(0 0 0 50%)",circleOpacity:u.opacity||0}),n=e.rules,t=e.names;re=Wn(n.main),oe=Wn(n.effect),ie=Wn(n.circleLeft),ae=Wn(n.circleRight),ce=Wn(n.circle),U.style.animation=t.main,Y.style.animation=t.effect,q.style.animation=t.circleLeft,H.style.animation=t.circleRight,K.style.animation=t.circle}}))},xe=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{time:Fe}).time,n=void 0===e?Fe:e;if(te){te=!1;var t=getComputedStyle(U);U.style.color=t.color,U.style.animation="none";var r=getComputedStyle(K);K.style.clipPath=r.clipPath,K.style.opacity=r.opacity,K.style.animation="none";var o=ye(Y);Y.style.opacity=o.opacity,Y.style.transform="scale(".concat(o.scale,")"),Y.style.animation="none";var i="x"===r.clipPath.slice(-2,-1),a=ye(q,i);q.style.transform="rotate(".concat(a.rotate,"deg)"),q.style.animation="none";var c=ye(H);H.style.transform="rotate(".concat(c.rotate,"deg)"),H.style.animation="none",S().then((function(){null!==de&&Zn(de),null!==fe&&Zn(fe),null!==ue&&Zn(ue),null!==se&&Zn(se),null!==le&&Zn(le);var e=function(e){var n,t,r,o=e.time,i=void 0===o?Fe:o,a=e.currentColor,c=e.targetColor,l=e.effectOpacity,s=e.effectScale,u=e.circleLeftRotation,f=e.circleRightRotation,d=e.circleClipPath,v=e.circleOpacity,h=u/360,p=h*i,y=Math.min(100,100*h),m=y>50?Math.round(100*(1-50/y)):0;return{rules:{main:Nn(a,c),effect:(t=l,r=s,"\n @keyframes effectOut {\n 0% {\n opacity: ".concat(t,";\n transform: scale(").concat(r,");\n }\n 99% {\n opacity: 0;\n transform: scale(").concat(r+.5,");\n }\n 100% {\n opacity: 0;\n transform: scale(0);\n }\n }\n")),circleRight:kn(m,f),circleLeft:jn(u),circle:Fn(m,d,v)},names:{main:(n=p,"".concat(n,"ms linear mainOut 0s 1 normal forwards")),effect:Rn(p),circleRight:Bn(p),circleLeft:Dn(p),circle:zn(p)}}}({time:n,currentColor:t.color||"currentcolor",targetColor:U.dataset.color,effectOpacity:o.opacity||0,effectScale:o.scale||0,circleLeftRotation:a.rotate||0,circleRightRotation:c.rotate||0,circleClipPath:r.clipPath||"inset(0px)",circleOpacity:r.opacity||1}),i=e.rules,l=e.names;le=Wn(i.main),se=Wn(i.effect),ue=Wn(i.circleLeft),fe=Wn(i.circleRight),de=Wn(i.circle),U.style.animation=l.main,Y.style.animation=l.effect,q.style.animation=l.circleLeft,H.style.animation=l.circleRight,K.style.animation=l.circle}))}},be=function(){B(J,Q)},Pe=function(e){J.push(e),Q.push(e[0],e[1])},Se=function(e){var n=v(e,2),t=n[0],r=n[1],o=v(J[0],2),i=o[0],a=o[1];J[1]=[t,a],J[2]=[t,r],J[3]=[i,r],J[4]=[i,a],Q[2]=t,Q[3]=a,Q[4]=t,Q[5]=r,Q[6]=i,Q[7]=r,Q[8]=i,Q[9]=a},Ae=function(e){ee.push(e)},Ee=function(e,n,t){var r,o=v(e,2),i=o[0],a=o[1],c=v(n,2),l=i-c[0],s=a-c[1],u=(r=[l,s],Math.sqrt(r.reduce(((e,n)=>e+n**2),0)));return[+s/u*t,-l/u*t]},Me=function(e){var n=ee.at(-1),t=Math.abs(j([0,0])[0]-j([_/2,0])[0]),r=v(Ee(e,n,t),2),o=r[0],i=r[1],a=ee.length;if(1===a){var c=[n[0]+o,n[1]+i],l=[n[0]-o,n[1]-i];J