timescope 0.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # Timescope
2
+
3
+ A high-performance, infinite-scrolling time-series chart visualization library with smooth animations powered by WebWorker.
4
+
5
+ ## Features
6
+
7
+ - Infinite scrolling and unlimited zoom
8
+ - Arbitrary-precision cursors and ranges so any timestamp can be represented exactly
9
+ - Chunked data loading with various data sources (static arrays, HTTP, custom loaders)
10
+ - Multi-track layouts with per-track time axes and synchronized cursors
11
+ - Rich chart presets plus configurable marks and links, fully typed for TypeScript
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm i timescope
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```html
22
+ <div id="timescope"></div>
23
+ ```
24
+
25
+ ```TypeScript
26
+ import { Timescope } from 'timescope';
27
+
28
+ new Timescope({
29
+ target: '#timescope',
30
+ style: { height: '160px', background: '#f5f5f5' },
31
+ time: 0,
32
+ zoom: 4,
33
+
34
+ sources: {
35
+ telemetry: [
36
+ { time: 0, temperature: 22, envelope: { min: 20, max: 28 } },
37
+ { time: 30, temperature: 25, envelope: { min: 21, max: 30 } },
38
+ { time: 60, temperature: 24, envelope: { min: 22, max: 27 } },
39
+ ],
40
+ },
41
+
42
+ series: {
43
+ temperature: {
44
+ data: {
45
+ source: 'telemetry',
46
+ value: 'temperature',
47
+ },
48
+ chart: 'linespoints',
49
+ },
50
+ envelope: {
51
+ data: {
52
+ source: 'telemetry',
53
+ value: {
54
+ min: 'envelope.min',
55
+ max: 'envelope.max',
56
+ value: (row) => (row.envelope.min + row.envelope.max) / 2,
57
+ },
58
+ color: '#8888ff',
59
+ },
60
+ chart: {
61
+ marks: [
62
+ { draw: 'triangle', using: 'value', style: { size: 6 } },
63
+ { draw: 'box', using: ['min', 'max'] },
64
+ ],
65
+ links: [
66
+ { draw: 'line', using: 'value' },
67
+ ],
68
+ },
69
+ },
70
+ },
71
+ });
72
+ ```
73
+
74
+ ## Docs
75
+
76
+ See the [documents](https://xenodrive.github.io/timescope/) for more details.
package/browser.js ADDED
@@ -0,0 +1 @@
1
+ (function(){function e(e,t=`Digits must be an integer`){if(typeof e==`number`){if(!Number.isFinite(e)||!Number.isInteger(e))throw Error(t);return BigInt(e)}return e}function t(t){let n=e(t);return n<0n?0n:n}function n(e){let t=Number(e);return t<y.length?y[t]:5n**BigInt(e)}function r(e){let t=Number(e);return t<te.length?te[t]:10n**BigInt(e)}function i(e,t,n){let r=BigInt(t);if(r<=0n)return new g(1n);let i=new g(1n),a=e.clone();for(;r&1n&&i.mul$(a,n),r>>=1n,r!==0n;)a.mul$(a,n);return i}function a(e,t,n,r){if(t.isZero()||r<=0)return new g(1n);let{guardPrec:a,rootPrec:s}=f(n,r),c=o(t.coeff).toString().padStart(r,`0`),l=e.round(s),u=new g(1n);for(let e=0;e<r;e++){l=l.root(10n,s);let t=c.charCodeAt(e)-48;if(t<=0)continue;let n=i(l.clone(),t,a);u.mul$(n,a)}return u.round$(n)}function o(e){return e<0n?-e:e}function s(e){if(e===``)throw Error(`Invalid number`);let t=1n,n=e;if(n[0]===`-`?(t=-1n,n=n.slice(1)):n[0]===`+`&&(n=n.slice(1)),n===``)throw Error(`Invalid number`);let r=n.indexOf(`.`),i=n,a=``;r>=0&&(i=n.slice(0,r),a=n.slice(r+1)),i===``&&(i=`0`);let o=(i+a).replace(/^0+/,``),s=o===``?`0`:o;return{coeff:t*BigInt(s),digits:BigInt(a.length)}}function c(e){let t=e.search(/[eE]/);if(t===-1)return s(e);let n=e.slice(0,t),r=e.slice(t+1);if(r.trim()===``)throw Error(`Invalid number`);let{coeff:i,digits:a}=s(n);return{coeff:i,digits:a-BigInt(r)}}function l(e,t){let n=e.digits>t.digits?e.digits:t.digits,i=n-e.digits,a=n-t.digits;return{digits:n,aCoeff:e.coeff*r(i),bCoeff:t.coeff*r(a)}}function u(e){let t=Math.max(0,Number(e));return Math.min(2**53-1,t)}function d(e,t,n){let r=u(t),i=u(n),a=Math.max(r,i)+1,o=Math.max(a,1),s=e+o;for(;;){let t=Math.ceil(s*ee)+o,n=Math.max(t*2,1),r=Math.max(a,Math.ceil(Math.log10(n))+1);if(r<=o){let e=s+o;return{guardPrec:o,fracPrec:s,bits:t,divPrec:e}}o=r,s=e+o}}function f(e,t){let n=Math.max(1,t),r=Math.max(6,Math.ceil(Math.log10(n*4))+2),i=e+BigInt(r);return{guardPrec:i,rootPrec:i+BigInt(Math.max(r,6))}}function p(e,t){let n=Math.max(1,t.toString().replace(`-`,``).length),r=Math.max(12,n+4);return{iterPrec:e+BigInt(r),stopShift:e+2n}}function m(e,t,n,r){let i=[],a=[],o=new g(t),s=1n,c=n+Math.max(r,1);for(;o.le(e);)i.push(o),a.push(s),o=o.mul(o),s*=2n;let l=new g(e),u=0n;for(let e=i.length-1;e>=0;e--){let t=i[e];l.ge(t)&&(l.div$(t,c),u+=a[e])}return{exponent:u,remainder:l}}function h(e,t,n,r){let i=n+Math.max(r,1);if(e.eq(v))return{exponent:0n,remainder:v.clone()};if(e.ge(v))return m(e,t,n,r);let a=m(v.div(e,i),t,n,r);return a.remainder.eq(v)?{exponent:-a.exponent,remainder:v.clone()}:{exponent:-a.exponent-1n,remainder:v.div(a.remainder,i).mul$(t)}}var g=class s{coeff;digits;constructor(e,t){if(typeof e==`number`){if(e!==e||e===1/0||e===-1/0)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(e.toString()))}else if(typeof e==`string`){let t=e.trim();if(t===``)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(t))}else if(typeof e==`bigint`)this.coeff=e,this.digits=t??0n;else if(typeof e==`object`&&e&&`coeff`in e&&typeof e.coeff==`bigint`&&`digits`in e&&typeof e.digits==`bigint`)this.coeff=e.coeff,this.digits=e.digits;else throw Error(`Invalid input type for Decimal`)}clone(){return new s({coeff:this.coeff,digits:this.digits})}#e(e,t=0n){return x(e)&&(t=e.digits,e=e.coeff),this.coeff=e,this.digits=t,this}#t(e,t,n){let i=this.coeff,a=e.coeff,s=e.digits+t-this.digits;s>=0n?i*=r(s):a*=r(-s);let c=i/a,l=i-c*a;if(l!==0n&&n!==`trunc`){let e=i>=0n;switch(n){case`floor`:e||(c-=1n);break;case`ceil`:e&&(c+=1n);break;case`round`:{let t=o(l),n=a<0n?-a:a;t*2n>=n&&(c+=e?1n:-1n);break}default:break}}return this.#e(c,t)}#n(t,n=`trunc`){let i=e(t);if(this.isZero())return this.digits=i,this;if(i===this.digits)return this;if(i>this.digits){let e=r(i-this.digits);return this.coeff*=e,this.digits=i,this}return this.#t(v,i,n)}#r(){if(this.coeff===0n)return this.digits=0n,this;if(this.digits<=0n)return this;for(;this.digits>0n&&this.coeff%10n==0n;)this.coeff/=10n,this.digits-=1n;return this}round$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`round`)}round(e=0,t=!1){return this.clone().round$(e,t)}roundBy$(e,t=`round`){let n=new s(e).abs();if(n.isZero())throw Error(`Cannot align to zero`);return this.div$(n,0n,t).mul$(n)}roundBy(e,t=`round`){return this.clone().roundBy$(e,t)}floor$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`floor`)}floor(e=0,t=!1){return this.clone().floor$(e,t)}floorBy$(e){return this.roundBy$(e,`floor`)}floorBy(e){return this.clone().floorBy$(e)}ceil$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`ceil`)}ceil(e=0,t=!1){return this.clone().ceil$(e,t)}ceilBy$(e){return this.roundBy$(e,`ceil`)}ceilBy(e){return this.clone().ceilBy$(e)}trunc$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`trunc`)}trunc(e=0,t=!1){return this.clone().trunc$(e,t)}rescale$(e,t=`trunc`){return e==null?this.#r():this.#n(e,t)}rescale(e,t=`trunc`){return this.clone().rescale$(e,t)}truncBy$(e){return this.roundBy$(e,`trunc`)}truncBy(e){return this.clone().truncBy$(e)}#i(e){let t=this.clone();return e(this),[this,t.sub$(this)]}split$(e,t=`floor`){return this.#i(n=>n.#n(e??0n,t))}split(e,t=`floor`){return this.clone().split$(e,t)}splitBy$(e,t=`floor`){return this.#i(n=>n.roundBy$(e,t))}splitBy(e,t=`floor`){return this.clone().splitBy$(e,t)}neg$(e){return e!==!1&&(this.coeff=-this.coeff),this}neg(e){return this.clone().neg$(e)}isZero(){return this.coeff===0n}isPositive(){return this.coeff>0n}isNegative(){return this.coeff<0n}add$(e){let t=b(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r+i,this.digits=n,this}add(e){return this.clone().add$(e)}sub$(e){let t=b(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r-i,this.digits=n,this}sub(e){return this.clone().sub$(e)}mul$(e,t){let n=b(e);return this.coeff*=n.coeff,this.digits+=n.digits,t!==void 0&&this.round$(t),this}mul(e,t){return this.clone().mul$(e,t)}shift10$(t){let n=e(t,`Shift amount must be an integer`);return n===0n||(this.digits-=n),this}shift10(e){return this.clone().shift10$(e)}inverse$(e=_){if(this.isZero())throw Error(`Division by zero`);let n=t(e),r=this.clone();return this.#e(1n).div$(r,n)}inverse(e=_){return this.clone().inverse$(e)}div$(e,n,r=`round`){let i=n===void 0,a=t(n??_),o=b(e);if(o.isZero())throw Error(`Division by zero`);return this.isZero()?this:(this.#t(o,a,r),i?this.#r():this)}div(e,t,n=`round`){return this.clone().div$(e,t,n)}abs$(){return this.isNegative()&&(this.coeff=-this.coeff),this}abs(){return this.clone().abs$()}mod$(e){let t=b(e);if(t.isZero())throw Error(`Division by zero`);let{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r%i,this.digits=n,this}mod(e){return this.clone().mod$(e)}modPositive$(e){let t=b(e);if(t.isNegative())throw Error(`Modulo divisor must be positive`);return this.mod$(t),this.isNegative()&&this.add$(t),this}modPositive(e){return this.clone().modPositive$(e)}clamp$(e,t){let n=b(e),r=b(t);if(n&&r&&n.gt(r))throw Error(`Invalid clamp range`);return n&&this.lt(n)?(this.coeff=n.coeff,this.digits=n.digits,this):r&&this.gt(r)?(this.coeff=r.coeff,this.digits=r.digits,this):this}clamp(e,t){return this.clone().clamp$(e,t)}cmp(e){let t=b(e),{aCoeff:n,bCoeff:r}=l(this,t);return n===r?0:n>r?1:-1}eq(e){return this.cmp(e)===0}neq(e){return this.cmp(e)!==0}lt(e){return this.cmp(e)<0}gt(e){return this.cmp(e)>0}le(e){return this.cmp(e)<=0}ge(e){return this.cmp(e)>=0}between(e,t){let n=b(e),r=b(t);if(n&&r&&n.gt(r))throw Error(`Invalid between range`);return!(n&&this.lt(n)||r&&this.gt(r))}isCloseTo(e,t){let n=b(t);if(n.isNegative())throw Error(`Tolerance must be non-negative`);return this.sub(e).abs$().le(n)}pow$(e,n=_){let r=t(n),o=b(e);if(o.isZero())return this.#e(1n);if(this.isZero()){if(o.isNegative())throw Error(`Zero to negative exponent is undefined`);return this}let s=o.isNegative(),[c,l]=o.abs().split$(),u=this.clone(),d=l.isZero()?0:Number(l.digits);if(u.isNegative()&&d>0)throw Error(`Fractional exponent requires non-negative base`);let f=i(u,c.coeff),p=r;d>0&&(p=r+BigInt(Math.max(4,d)));let m=a(u,l,p,d);d>0&&f.mul$(m,p);let h=p>r?p:r,g=d>0?p:r;return s?this.#e(1n).div$(f,h):(f.round$(h,!0),this.#e(f)),this.round$(g,g===0n),this}pow(e,t=_){return this.clone().pow$(e,t)}root$(n,r=_){let a=e(n,`Root degree must be an integer`);if(a<=0n)throw Error(`Invalid root degree`);let o=t(r);if(a===1n)return o<this.digits?this:this.trunc$(o,!0);if(this.isZero())return this;let c=this.isNegative();if(c&&a%2n==0n)throw Error(`Even root of negative value is not defined`);let l=this.abs(),u=a-1n,{iterPrec:d,stopShift:f}=p(o,a),m=ne(-f),h=(()=>{let e=l.number();if(Number.isFinite(e)&&e>0){let t=Number(a);if(t>0){let n=e**(1/t);if(Number.isFinite(n)&&n>0)return new s(n).round$(d,!0)}}return new s(ne(l.order()/a)).round$(d,!0)})();this.#e(h.coeff,h.digits),this.isZero()&&this.#e(1n);for(let e=0;e<64;e++){let e=i(this.clone(),u,d);if(e.isZero())break;let t=l.div(e,d),n=this.mul(u,d).add$(t).div$(a,d);if(n.isCloseTo(this,m)||n.eq(this)){this.#e(n);break}this.#e(n)}return this.round$(d,!0),this.round$(o,o===0n),c&&this.neg$(),this}root(e,t=_){return this.clone().root$(e,t)}sqrt$(e=_){return this.root$(2n,e)}sqrt(e=_){return this.clone().sqrt$(e)}log$(e,r=_){let i=Number(t(r)),a=new s(e);if(!this.isPositive())throw Error(`Logarithm argument must be positive`);if(!a.isPositive())throw Error(`Logarithm base must be positive`);if(a.eq(v))throw Error(`Logarithm base cannot be one`);let{guardPrec:o,fracPrec:c,bits:l,divPrec:u}=d(i,a.digits,this.digits),f=a.lt(v),p=f?v.div(a,u):a,{exponent:m,remainder:g}=h(this,p,c,o);if(this.#e(m),c>0){let e=0n;for(let t=0;t<l;t++)g.mul$(g,u),e<<=1n,g.ge(p)&&(g.div$(p,u),e|=1n);e!==0n&&this.add$({coeff:e*n(l),digits:BigInt(l)})}let ee=i===0?0:c;return this.round$(ee),f&&this.neg$(),this}log(e,t=_){return this.clone().log$(e,t)}sign$(){return this.isZero()?this:(this.coeff=this.coeff<0n?-1n:1n,this.digits=0n,this)}sign(){return this.clone().sign$()}order(){if(this.isZero())throw RangeError(`order undefined for 0`);return BigInt(o(this.coeff).toString().length)-1n-this.digits}toFixed(t){let n=`Fraction digits must be a non-negative integer`,r=e(t,n);if(r<0n)throw Error(n);return this.round(r,!0).toString()}toString(){if(this.coeff===0n)return this.digits<=0n?`0`:`0.${`0`.repeat(Number(this.digits))}`;let e=this.coeff<0n,t=e?`-`:``,n=(e?-this.coeff:this.coeff).toString();if(this.digits<=0n)return`${t}${n}${`0`.repeat(Number(-this.digits))}`;let r=Number(this.digits),i=n.padStart(r+1,`0`),a=i.length-r;return`${t}${i.slice(0,a)}.${i.slice(a).padEnd(r,`0`)}`}[Symbol.for(`nodejs.util.inspect.custom`)](e,t){return`colors`in t&&t?.colors?`\x1b[33m${this.toString()}\x1b[m \x1b[90m(${this.coeff} * 10 ** ${-this.digits})\x1b[m`:this.toString()}number(){return Number(this.toString())}integer(){return this.digits<=0n?this.coeff*r(-this.digits):this.coeff/r(this.digits)}};let _=18n,ee=Math.log2(10),v=new g(1n),y=[],te=[];(function(){for(let e=0;e<256;e++)te[e]=10n**BigInt(e),y[e]=5n**BigInt(e)})();function b(e){return e==null||x(e)?e:new g(e)}(function(e){function t(e){return e instanceof g}e.isDecimal=t;function n(e){return!!(t(e)||typeof e==`string`||typeof e==`number`||typeof e==`bigint`||typeof e==`object`&&e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`)}e.isDecimalLike=n;function r(e){return new g({coeff:1n,digits:-BigInt(e)})}e.pow10=r;function i(...e){let t=null,n=null;for(let r=0;r<e.length;r++){let i=b(e[r]);i!=null&&((t===null||i.lt(t))&&(t=i),(n===null||i.gt(n))&&(n=i))}return[t,n]}e.minmax=i;function a(...e){return i(...e)[0]}e.min=a;function o(...e){return i(...e)[1]}e.max=o})(b||={});let x=b.isDecimal;b.isDecimalLike;let ne=b.pow10,S=b.minmax;b.min,b.max;function re(e){if(typeof e==`number`&&isNaN(e)||typeof e==`number`&&!isFinite(e))return null;try{return b(e)}catch{return null}}var C={clickTolerance:8,defaultChunkSize:256,base:2,chunkStep:1,wheelStep:.5};function ie(e){if(globalThis._uid||(globalThis._uid=1),e){if(`_uid`in e)return String(e._uid);e._uid=String(globalThis._uid),Object.defineProperty(e,`_uid`,{enumerable:!1})}return String(globalThis._uid++)}var ae=class{uid=ie(this);#e={};dispatchEvent(e){let t=typeof e==`string`?e:e.type,n=this.#e[t];if(n)for(let t of n)t(e)}on(e,t){let n=this.#e[e]??[];return n.push(t),this.#e[e]=n,()=>this.un(e,t)}un(e,t){let n=this.#e[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}},w=class{type;value;origin;stopped=!1;prevented=!1;constructor(e,t,n){this.type=e,this.value=t,this.origin=n}stopPropagation(){this.stopped=!0}preventDefaults(){this.prevented=!0}},T=class extends ae{#e=0;changed(){this.#e++,this.dispatchEvent(`change`)}get revision(){return this.#e}};function E(e){if(e==null||x(e))return e;if(typeof e==`string`){let t=Date.parse(e);if(Number.isNaN(t))throw Error(`Parse error as Date`);return b(t/1e3)}return e instanceof Date?b(e.getTime()/1e3):b(e)}function oe(e){return e.map(E)}let se=globalThis.requestAnimationFrame??(e=>setTimeout(e,0)),ce=globalThis.cancelAnimationFrame??(e=>clearTimeout(e));var le=class{#e=null;#t;start(e){e={animation:`in-out`,duration:500,...e},this.cancel(),this.#t=()=>e.done?.(e.target());let t=e.overshoot??0,n=e.duration??500,r=performance.now(),i=e.animation?{linear:e=>e,"in-out":e=>e*e*e*(e*(e*6-15)+10),out:e=>1+(t+1)*(e-1)**3+t*(e-1)**2}[String(e.animation)]:null;if(!i||e.origin()===e.target()){this.done();return}let a=()=>{let t=performance.now()-r;if(t<n){let r=i(t/n),o=e.origin()*(1-r)+e.target()*r;e.update(o,r),this.#e=se(a)}else this.done()};this.#e=se(a)}done(){this.cancel(),this.#t?.()}cancel(){this.#e&&=(ce(this.#e),null)}get animating(){return this.#e!==null}};function D(e,t,n){let r=e??n;if(t[0]!==void 0){let e=t[0]??n;if(r.lt(e))return t[0]}if(t[1]!==void 0){let e=t[1]??n;if(r.gt(e))return t[1]}return e}var O=class extends T{#e;#t={id:void 0,value:null,nullValue:b(0),committed:null,committing:null,current:null,candidate:null,domain:[void 0,void 0],editing:!1,animating:!1,cursorMode:`current`,updated:!1};#n=new le;#r;get candidate(){return this.#t.candidate}get value(){return this.#t.value}get committing(){return this.#t.committing}parseValue(e){return b(e)}setValue(e,t){t??=!1;let n=this.parseValue(e);if(this.#t.value===n||n&&this.#t.value?.eq(n))return;let r=typeof t==`object`?t:{animation:t};this.begin(n),this.commit(r)}get committed(){return this.#t.committed}get current(){return this.#t.current}get domain(){return this.#t.domain}set domain(e){let t=e.map(e=>b(e));this.#t.domain=t,this.restore(),this.#c(),this.setValue(D(this.value,t,this.#t.nullValue)),this.changed()}get editing(){return this.#t.editing}get animating(){return this.#t.animating}get cursor(){return this.#t.cursorMode===`current`?this.#t.current:this.#t.committing}constructor(e={initialValue:0}){super(),e.domain&&(this.#t.domain=e.domain.map(e=>b(e))),e.onNull&&(this.#r=e.onNull,this.#c()),this.#e=e.lazy??!1;let t=D(b(e.initialValue),this.#t.domain,this.#t.nullValue);this.#t.value=t,this.#t.committed=t,this.#t.current=t,this.#t.candidate=t,this.#t.committing=t}handleSyncEvent(e){switch(e.type){case`begin`:this.#i(e);break;case`update`:this.#a(e);break;case`commit`:this.#o(e);break;case`restore`:this.#l(e);break;case`set:nullvalue`:this.#s(e);break}}begin(e){this.#c(),e===void 0&&(e=this.#t.current);let t=D(e,this.#t.domain,this.#t.nullValue),n={type:`begin`,candidate:t};this.dispatchEvent(new w(`sync`,n)),this.dispatchEvent(new w(`valuechanging`,t)),this.#i(n)}#i({candidate:e}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.editing=!0,this.#t.updated=!1,this.#t.candidate=e,this.dispatchEvent(new w(`valuechanging`,e)),this.changed()}update(e){this.#c();let t=this.#t.nullValue,n=D(e,this.#t.domain,t),r={type:`update`,candidate:n,current:(e??t).sub(this.#t.current??t).mul(n===e?1:.5).add(this.#t.current??t)};this.dispatchEvent(new w(`sync`,r)),this.#a(r)}#a({candidate:e,current:t}){this.#t.editing=!0,this.#t.updated=!0,this.#t.candidate=e,this.#t.current=t,this.dispatchEvent(new w(`valuechanging`,e)),this.changed()}commit(e={}){this.#c();let t=e.value===void 0?this.#t.candidate:e.value,n=t,r=D(t,this.#t.domain,this.#t.nullValue),i=e.animation===void 0?this.#t.updated?`current`:`target`:this.#t.cursorMode,a={type:`commit`,targetValue:r,animation:e.animation===void 0?this.#t.editing?`out`:`in-out`:e.animation,duration:e.duration??500,cursorMode:i,divergentValue:n,lazy:e.lazy??this.#e};this.dispatchEvent(new w(`sync`,a)),this.#o(a)}#o({targetValue:e,divergentValue:t,animation:n,duration:r,cursorMode:i,lazy:a}){let o=()=>{this.#t.value=e,this.#t.editing=!1,this.changed(),this.dispatchEvent(new w(`valuechanging`,this.#t.value)),this.dispatchEvent(new w(`valuechanged`,this.#t.value))},s=this.#t.current??this.#t.nullValue,c=e??this.#t.nullValue,l=t??this.#t.nullValue,u=0;c.neq(l)&&l.neq(s)&&(u=3*(l.sub(s).div(c.sub(s)).number()-1)/2),this.#t.cursorMode=i,this.#t.candidate=e,this.#t.committing=e,a||o();let d=c.eq(s)?0:1;this.#t.animating=!0,this.#n.start({origin:()=>0,target:()=>d,update:t=>{this.#c(),this.#t.animating=!0;let n=(e??this.#t.nullValue).sub(s).mul(t).add(s);this.#t.current=n,this.changed()},done:()=>{this.#t.animating=!1,this.#t.current=e,a&&o(),this.#t.committed=e,this.changed()},animation:n,duration:r,overshoot:u})}#s({nullValue:e}){this.#t.nullValue=e}#c(){if(!this.#r)return;let e=this.parseValue(this.#r())??this.#t.nullValue;this.#t.nullValue=e}toString(){return JSON.stringify(this)}toJSON(){return{value:this.value,candidate:this.candidate,committed:this.committed,committing:this.committing,current:this.current,editing:this.editing,animating:this.animating}}#l({value:e,domain:t}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.value=e,this.#t.candidate=e,this.#t.committed=e,this.#t.committing=e,this.#t.current=e,this.#t.editing=!1,this.#t.animating=!1,this.#t.domain=t}restore(){let e={type:`restore`,value:this.value,domain:this.#t.domain};this.dispatchEvent(new w(`sync`,e)),this.#l(e)}},ue=class extends T{time;zoom;constructor(e){super(),this.time=new O,this.zoom=new O,this.time=new O({initialValue:E(e.time??null),domain:oe(e.timeRange??[void 0,null]),onNull:()=>Date.now()/1e3}),this.zoom=new O({initialValue:e.zoom??0,domain:e.zoomRange}),this.time.on(`change`,()=>this.changed()),this.zoom.on(`change`,()=>this.changed()),this.time.on(`valuechanging`,e=>this.dispatchEvent(new w(`timechanging`,e.value))),this.time.on(`valuechanged`,e=>this.dispatchEvent(new w(`timechanged`,e.value))),this.zoom.on(`valuechanging`,e=>this.dispatchEvent(new w(`zoomchanging`,e.value.number()))),this.zoom.on(`valuechanged`,e=>this.dispatchEvent(new w(`zoomchanged`,e.value.number())))}setTime(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??=`out`;try{this.time.setValue(E(e),t)}catch{return!1}return!0}setTimeRange(e){this.time.domain=oe(e??[void 0,null])}setZoom(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??={animation:`linear`,duration:200,lazy:this.zoom.value.lt(e)};try{this.zoom.setValue(b(e),t)}catch{return!1}return!0}setZoomRange(e){this.zoom.domain=(e??[void 0,void 0]).map(b)}};function k(e,...t){return typeof e==`function`?e(...t):Array.isArray(e)?e.map(e=>k(e,...t)):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,n])=>[e,k(n,...t)])):e}function de(e){return function(t){let n=e.split(`,`).map(e=>e.trim()),r=t;for(let e of n){let n=e.split(`.`);r=t;for(let e=0;e<n.length&&r!=null;e++){if(typeof r!=`object`){r=null;break}r=r[n[e]]}if(r!=null)return r}return r}}function fe(e){return Object.prototype.toString.call(e)===`[object Object]`}function A(e,t){for(let n in t){let r=t[n],i=e[n];Array.isArray(r)?e[n]=r.slice():r&&typeof r==`object`&&fe(r)?((!i||typeof i!=`object`)&&(e[n]={}),A(e[n],r)):e[n]=r}return e}let j={z:0,r:b(1)};function pe(e){return j.r.eq(e)?j.z:-e.log(C.base).number()}function me(e){return j.z===e?j.r:(j.z=e,j.r=b(C.base).pow(-e,BigInt(Math.floor(e))),j.r)}function he(e,t){return t?t.reduce((t,n)=>Math.abs(n-e)<Math.abs(t-e)?n:t,t[0]):Number(b(e).floorBy(C.chunkStep).toFixed(2))}var ge=class{values;constructor(...e){this.values=e}clone(){return new this.constructor(...this.values)}get length(){return this.values.length}set(...e){return this.values=e,this}add(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]+=e[t];return this}sub(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]-=e[t];return this}scale(e){for(let t=this.length-1;t>=0;t--)this.values[t]*=e;return this}get norm(){return Math.sqrt(this.values.reduce((e,t)=>e+t**2,0))}normalize(){let e=this.norm;return e?this.scale(1/e):this}distanceTo(e){return this.clone().sub(e).norm}},_e=class extends ge{get x(){return this.values[0]}set x(e){this.values[0]=e}get y(){return this.values[1]}set y(e){this.values[1]=e}toJSON(){return{x:this.x,y:this.y}}},ve=class{#e=`none`;#t={};#n=[];#r;#i;#a={none:[[[`pointerdown`,1,this.#o.bind(this)],`down`,[`down`]]],down:[[[`pointerdown`,2,this.#s.bind(this)],`pinch`,[`drag:start`,`pinch:start`]],[[`pointermove`,1,this.#l.bind(this)],`drag`,[`drag:start`]],[[`pointerup`,0],`none`,[`click`,`up`]],[[`pointercancel`,0],`none`,[`up`]]],drag:[[[`pointerdown`,2,this.#s.bind(this)],`pinch`,[`pinch:start`]],[[`pointermove`,1],`drag`,[`drag:update`]],[[`pointerup`,0],`none`,[`drag:end`,`up`]],[[`pointercancel`,0],`none`,[`drag:end`,`up`]]],pinch:[[[`pointermove`,2],`pinch`,[`pinch:update`]],[[`pointerup`,1,this.#c.bind(this)],`drag`,[`pinch:end`]],[[`pointercancel`,0],`none`,[`pinch:end`,`up`]]]};get state(){return this.#e}disabled=!1;#o(e){return this.#n.forEach(e=>e.anchor=e.latest.clone()),!0}#s(e){return this.#n.forEach(e=>e.anchor=e.latest.clone()),!0}#c(e){return this.#n.forEach(e=>e.anchor=e.latest.clone()),!0}#l(){let e=this.#n.find(e=>e.pressed)||this.#n[0];return e.latest.distanceTo(e.anchor)<4?!1:(this.#n.forEach(e=>e.anchor=e.latest.clone()),!0)}#u(e){if(this.disabled)return;let t=new _e(e.clientX,e.clientY),n=this.#i(t,e)??t,r=!!(e.buttons&1),i=this.#t[e.pointerId]?.latest??n;this.#t[e.pointerId]={pointerId:e.pointerId,last:i,latest:n,delta:n.clone().sub(i),anchor:this.#t[e.pointerId]?.anchor??n,pressed:r};let a=Object.values(this.#t),o=a.filter(e=>e.pressed).length;this.#n=a.filter(t=>t.pressed||t.pointerId===e.pointerId),this.#m(e,o),this.#f(e),r||delete this.#t[e.pointerId]}#d;async#f(e){this.#r&&this.#d&&(this.#r.style.cursor=await this.#d({type:`cursor`,state:this.#e,buttons:this.#n,latest:this.#t[e.pointerId],shiftKey:e.shiftKey})??``)}#p;#m(e,t){let[[n,r,i],a,o]=this.#a[this.#e].find(([[n,r]])=>(n===`*`||n===e.type)&&(r===void 0||r===t))??[[`*`],this.#e];i?.(e)!==!1&&(this.#e=a,o&&o.forEach(t=>this.#p({type:t,state:this.#e,buttons:this.#n,latest:this.#t[e.pointerId],shiftKey:e.shiftKey})))}constructor(e={}){this.#i=e.transform??(e=>e),this.#p=e.handler??(async()=>void 0),this.#d=e.cursor,e.element&&this.attach(e.element)}#h;attach(e){this.#h?.abort(),this.#h=new AbortController;let t=this.#h.signal,n=e=>this.#u(e);return e.addEventListener(`pointerdown`,n,{signal:t}),window.addEventListener(`pointermove`,n,{passive:!0,signal:t}),window.addEventListener(`pointerup`,n,{passive:!0,signal:t}),window.addEventListener(`pointercancel`,n,{passive:!0,signal:t}),e.addEventListener(`touchstart`,e=>e.preventDefault(),{signal:t}),this.#r=e,this}detach(){this.#h?.abort()}};let ye=0;function be(e){return function(t,n,r={rpc:!1}){let i=++ye;return e.postMessage({type:r.rpc?`rpc`:`event`,command:t,seq:i,payload:Se(n,r.transfer)},r.transfer??[]),r.rpc?new Promise(n=>{let r=a=>{a.data.type===`rpc:ack`&&a.data.command===t&&a.data.seq===i&&(e.removeEventListener(`message`,r),n(N(a.data?.payload)))};e.addEventListener(`message`,r)}):Promise.resolve()}}function xe(e,t){return e.addEventListener(`message`,async({data:{type:n,command:r,seq:i,payload:a}})=>{let o=r in t&&await t[r](N(a))||null;n===`rpc`&&e.postMessage({type:`rpc:ack`,command:r,seq:i,payload:Se(o)})}),t}function M(e,t,n){if(e==null)return e;let r=typeof e;if(r===`string`||r===`number`||r===`boolean`||r===`bigint`)return e;if(r===`undefined`||r===`symbol`||r===`function`)return;if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||t?.includes(e))return e;if(n.has(e))throw TypeError(`Cannot serialize circular reference`);if(n.add(e),typeof e.toJSON==`function`){let r=e.toJSON();if(r!==e){let i=M(r,t,n);return n.delete(e),i}}if(Array.isArray(e)){let r=Array(e.length);for(let i=0;i<e.length;i++)r[i]=M(e[i],t,n);return n.delete(e),r}if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return n.delete(e),e;let i={};for(let r of Object.keys(e))i[r]=M(e[r],t,n);return n.delete(e),i}function Se(e,t){return M(e,t,new WeakSet)}function Ce(e){return typeof e==`object`&&!!e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`}function N(e){if(e==null)return e;let t=typeof e;if(t===`string`||t===`number`||t===`boolean`||t===`bigint`)return e;if(!(t===`undefined`||t===`symbol`||t===`function`)){if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas)return e;if(Ce(e))return b(e);if(Array.isArray(e))return e.map(N);if(e&&typeof e==`object`){let t={};for(let n of Object.keys(e))t[n]=N(e[n]);return t}return e}}let we=[[`font-style`,`style`],[`font-weight`,`weight`],[`font-stretch`,`stretch`],[`unicode-range`,`unicodeRange`],[`font-variant`,`variant`],[`font-feature-settings`,`featureSettings`],[`font-display`,`display`],[`ascent-override`,`ascentOverride`],[`descent-override`,`descentOverride`],[`line-gap-override`,`lineGapOverride`]];function Te(){return{visited:new Set}}function Ee(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):t}function De(e,t){return e.replace(/url\(([^)]+)\)/gi,(e,n)=>{let r=n.trim(),i=Ee(r);if(!i)return`url(${n})`;try{let e=new URL(i,t).toString(),n=r.startsWith(`"`)?`"`:r.startsWith(`'`)?`'`:``;return`url(${n}${e}${n})`}catch{return`url(${n})`}})}function Oe(e,t){let n=e.style.getPropertyValue(`font-family`),r=e.style.getPropertyValue(`src`),i=Ee(n);if(!i||!r)return null;let a={};for(let[t,n]of we){let r=e.style.getPropertyValue(t);r.trim()&&(a[n]=r.trim())}return{family:i,source:t?De(r,t):r,desc:a}}function ke(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof location<`u`&&location.href)return location.href}function Ae(e,t){try{return t?new URL(e,t).toString():new URL(e).toString()}catch{return null}}function je(e){try{let t=e.cssRules;return Array.from(t)}catch{return null}}async function Me(e,t,n){let r=[],i=t??ke();for(let t of e){if(t.type===CSSRule.FONT_FACE_RULE){let e=Oe(t,i);e&&r.push(e);continue}if(t.type===CSSRule.IMPORT_RULE){let e=Ae(t.href,i);if(!e)continue;r.push(...await Pe(e,n))}}return r}async function Ne(e,t,n){let r=je(e);return r?await Me(r,t??e.href??ke(),n):e.href?await Pe(e.href,n,t):[]}async function Pe(e,t,n){let r=Ae(e,n);if(!r||t.visited.has(r))return[];if(t.visited.add(r),typeof fetch>`u`||typeof CSSStyleSheet>`u`)throw Error(`Failed to load CSS: ${r}`);try{let e=await fetch(r);if(!e.ok)throw Error();let n=await e.text(),i=new CSSStyleSheet;return await i.replace(n),await Ne(i,e.url,t)}catch{throw Error(`Failed to load CSS: ${r}`)}}async function Fe(e){let t=Te(),n=[];for(let r of e){if(typeof r==`string`){let e=await Pe(r,t);n.push(...e);continue}else typeof r.source==`string`&&(r.source=De(r.source,location.href));n.push(r)}return n}async function Ie(){if(typeof document>`u`||!document.styleSheets)return[];let e=Te(),t=[],n=ke();for(let r of Array.from(document.styleSheets)){let i;try{i=r}catch{continue}let a=i.href??n;try{let n=await Ne(i,a,e);t.push(...n)}catch{continue}}return t}var Le=class{options;constructor(e){this.options=e}loadMeta(e){}},Re=class extends Le{constructor(e){super(e)}async loadChunk(e){let t=await this.options.series.loadChunk(e);return await this.transform(t)}async transform(e){return e}};let ze={lines:{links:[{draw:`line`}]},"lines:filled":{links:[{draw:`area`},{draw:`line`}]},curves:{links:[{draw:`curve`}]},"curves:filled":{links:[{draw:`curve-area`},{draw:`curve`}]},"steps-start":{links:[{draw:`step-start`}]},"steps-start:filled":{links:[{draw:`step-area-start`},{draw:`step-start`}]},steps:{links:[{draw:`step`}]},"steps:filled":{links:[{draw:`step-area`},{draw:`step`}]},"steps-end":{links:[{draw:`step-end`}]},"steps-end:filled":{links:[{draw:`step-area-end`},{draw:`step-end`}]},points:{marks:[{draw:`circle`}]},linespoints:{links:[{draw:`line`}],marks:[{draw:`circle`}]},"linespoints:filled":{links:[{draw:`area`},{draw:`line`}],marks:[{draw:`circle`}]},curvespoints:{links:[{draw:`curve`}],marks:[{draw:`circle`}]},"curvespoints:filled":{links:[{draw:`curve-area`},{draw:`curve`}],marks:[{draw:`circle`}]},"stepspoints-start":{links:[{draw:`step-start`}],marks:[{draw:`circle`}]},"stepspoints-start:filled":{links:[{draw:`step-area-start`},{draw:`step-start`}],marks:[{draw:`circle`}]},stepspoints:{links:[{draw:`step`}],marks:[{draw:`circle`}]},"stepspoints:filled":{links:[{draw:`step-area`},{draw:`step`}],marks:[{draw:`circle`}]},"stepspoints-end":{links:[{draw:`step-end`}],marks:[{draw:`circle`}]},"stepspoints-end:filled":{links:[{draw:`step-area-end`},{draw:`step-end`}],marks:[{draw:`circle`}]},impulses:{marks:[{draw:`line`,using:[`value`,`zero`]}]},impulsespoints:{marks:[{draw:`line`,using:[`value`,`zero`]},{draw:`circle`}]},boxes:{marks:[{draw:`box`,using:[`value`,`zero`],style:{fillColor:`transparent`}}]},"boxes:filled":{marks:[{draw:`box`,using:[`value`,`zero`]}]}};function Be(e){return ze[e]??{}}var Ve=class extends Re{marks;links;constructor(e){super(e);let t=typeof e.series.options.chart==`string`?Be(e.series.options.chart):e.series.options.chart??{};this.marks=t.marks,this.links=t.links}async transform(e){let t=e.data?.map(t=>{let n={resolution:e.resolution,data:t.data??{},time:t.time,value:t.value},r=k(this.marks,n);return{...t,marks:r?.map(e=>({...e,style:k(e.style,n)??{}}))??[]}});return{...e,data:t}}async loadMeta({resolution:e}){return{links:k(this.links,{resolution:e})?.map(e=>({...e,style:k(e.style,null)??{}}))??[],color:this.options.series.color,...this.options.series.dataRange}}};function He(e){let t=typeof e==`string`?[e,e]:e.length===1?[e[0],e[0]]:e,n=t[0].split(`@`),r=t[1].split(`@`);return[[n[0]||`value`,n[1]||`time`],[r[0]||`value`,r[1]||`time`]]}function Ue(e){return e?{using:e.using??`value`,zoom:e.zoom}:{using:`value`,zoom:void 0}}function We(e){let t=({name:e,unit:t,digits:n,value:r})=>{if(r==null)return`No data`;let i=[];return e&&i.push(e),i.push(r.toFixed(n)),t&&i.push(t),i.join(` `)};return typeof e==`boolean`||!e?{format:t}:{...e,format:e.format??t}}var Ge=class extends Re{#e;#t;constructor(e){super(e),this.#e=Ue(e.series.options.data.instantaneous),this.#t=We(e.series.options.tooltip)}async transform(e){let{name:t,unit:n,digits:r}=this.options.series,i=this.#t.format,a=He(k(this.#e.using,e))[0],o=e.data?.flatMap(e=>{if(!this.#e)return[];let o=e.time[a[1]],s=e.value[a[0]];return[{time:{time:o},value:s,text:i({time:o,value:s,unit:n,digits:r,name:t})}]});return{...e,data:o}}async loadMeta(e){let t=this.options.series.color;return{...this.options.series.dataRange,color:t}}};let Ke=b(1n),qe=b(0n),P=60n,F=P*60n,I=F*24n,L=8640000000000n;function R(e,t){let n=e/t,r=e%t;return r!==0n&&r>0n!=t>0n&&(n-=1n),n}function Je(e,t){return e-R(e,t)*t}function Ye(e){return e>0n?e:e+1n}function Xe(e){return e>0n?e:e-1n}function z(e,t){let n=Ye(e),r=t-1n,i=R(r,12n),a=r-i*12n;return{year:Xe(n+i),month:a+1n,day:1n}}function B(e,t,n){let r=z(e,t);return Qe(Ze(r.year,r.month,n))}function Ze(e,t,n){let r=Ye(e),i=t,a=n;i<=2n&&(r-=1n);let o=r/400n-(r<0n?1n:0n),s=r-o*400n;i+=i>2n?-3n:9n;let c=(153n*i+2n)/5n+a-1n,l=s*365n+s/4n-s/100n+c;return o*146097n+l-719468n}function Qe(e){let t=e+719468n,n=t/146097n-(t<0n?1n:0n),r=t-n*146097n,i=(r-r/1460n+r/36524n-r/146096n)/365n,a=i+n*400n,o=r-(365n*i+i/4n-i/100n),s=(5n*o+2n)/153n,c=o-(153n*s+2n)/5n+1n,l=s+(s<10n?3n:-9n);return l<=2n&&(a+=1n),{year:Xe(a),month:l,day:c}}function $e(e){return e>L?L:e<-L?-L:e}function et(e){let t=$e(e);return-BigInt(Math.floor(new Date(Number(t)*1e3).getTimezoneOffset()))*P}function tt(e){return et(e)}function nt(e){return et(e)}function rt(e){let t=Ze(e.year,e.month,e.day),n=e.hour*F+e.minute*P+e.second,r=t*I+n;return b(r-nt(r)).add(e.subseconds)}function it(e){let t=B(e.year,e.month,e.day),n=e.subseconds.modPositive(Ke),r=e.subseconds.sub(n).integer(),i=e.second+r;return rt({...e,...t,second:i,subseconds:n})}function at(e){let[t]=e.split(),n=tt(t.integer()),[r,i]=e.add(b(n)).split(),a=r.integer(),o=R(a,I),s=Je(a,I),c=Qe(o),l=R(s,F),u=s-l*F,d=R(u,P),f=Je(u,P);return{year:c.year,month:c.month,day:c.day,hour:l,minute:d,second:f,subseconds:i}}function V(e,t){return it({...t(at(e)),hour:0n,minute:0n,second:0n,subseconds:qe})}function H(e,t,n=0n){return t?Array.isArray(t)?t.map(e=>BigInt(e)).filter(t=>t<=e).toSorted().at(-1)??e:(t=BigInt(t),(e-n)/t*t+n):e}function U(e,t,n=0n){return t?Array.isArray(t)?t.map(e=>BigInt(e)).filter(t=>e<t).toSorted().at(0):(t=BigInt(t),((e-n)/t+1n)*t+n):e}function ot(e,t){return V(e,e=>({...B(e.year,e.month,H(e.day,t,1n))}))}function st(e,t){return V(e,e=>{let n=U(e.day,t,1n);return n?B(e.year,e.month,n):z(e.year,U(e.month,1n,1n))})}function ct(e,t){return V(e,e=>z(e.year,H(e.month,t,1n)))}function lt(e,t){return V(e,e=>z(e.year,U(e.month,t,1n)))}function ut(e,t){return V(e,e=>{let n=H(e.year<=0n?e.year-1n:e.year,t,0n);return{year:n<=0n?n+1n:n,month:1n,day:1n}})}function dt(e,t){return V(e,e=>{let n=U(e.year<=0n?e.year-1n:e.year,t);return{year:n<=0n?n+1n:n,month:1n,day:1n}})}function W(e,t){let n=b(t),r=ot(e,1n);return e.sub(r).floorBy(n).add(r)}function G(e,t){return e.add(b(t))}function ft(e,t){return e===!1?null:((e===!0||e==null)&&(e=t),e)}let pt={s:0n,ms:3n,us:6n,ns:9n};function mt({time:e,digits:t}){return t>0?e.toFixed(t):e.toString()}function K(e,t,n){if(t===n)return e;let r=pt[t]??0n,i=(pt[n]??0n)-r;return e.shift10(i)}function*ht(e,t,n){if(!e[0]||!e[1])return;let r=n.timeFormat??mt,i=b(C.defaultChunkSize),a=t.mul(i).log(10).round().integer(),o=b(10).pow(a,-a),s=t.mul(b(20)),c=[10n,5n,1n],l=o,u=1n;for(let e of c){let t=o.div(b(e));if(!t.lt(s)){l=t,u=e;break}}if(l.isZero())return;let d=b(u),f=b(1n),p=e[0].div(l).floor().sub(f),m=Math.max(0,-l.log(10).floor().number());for(let t=0;t<1e6;t+=1){p=p.add(f);let t=l.mul(p);if(t.ge(e[1]))break;if(t.lt(e[0]))continue;let i=p.mod(d).isZero();yield{time:{time:t},major:i,tick:!0,text:i?r({time:t,unit:n.timeUnit??`s`,level:`relative`,digits:m,stride:void 0}):``}}}function q(e){return{align:t=>W(t,e),next:t=>G(t,e)}}function J(e){return e=e.mul(60),{align:t=>W(t,e),next:t=>G(t,e)}}function Y(e){return e=e.mul(3600),{align:t=>W(t,e),next:t=>G(t,e)}}function X(e){return{align:t=>ot(t,e),next:t=>st(t,e)}}function Z(e){return{align:t=>ct(t,e),next:t=>lt(t,e)}}function gt(e){return{align:t=>ut(t,e),next:t=>dt(t,e)}}let _t=[{ops:q,stride:1,step:1},{ops:q,stride:5,step:5},{ops:q,stride:10,step:10},{ops:q,stride:15,step:15},{ops:q,stride:30,step:30},{ops:J,stride:1,step:1},{ops:J,stride:5,step:5},{ops:J,stride:10,step:10},{ops:J,stride:15,step:15},{ops:J,stride:30,step:30},{ops:Y,stride:1,step:1},{ops:Y,stride:3,step:3},{ops:Y,stride:6,step:6},{ops:Y,stride:12,step:12},{ops:X,stride:1,step:1},{ops:X,stride:10,step:[1,10,20]},{ops:Z,stride:1,step:1},{ops:Z,stride:3,step:3}],vt=b(86400),yt=b(`2629800`),bt=b(`31557600`),xt=b(60),St=b(20),Ct=[1n,5n],wt=[1n,5n],Tt=[`subsecond`,`second`,`minute`,`hour`,`day`,`month`,`year`];function Et(e){switch(e.ops){case q:return`second`;case J:return`minute`;case Y:return`hour`;case X:return`day`;case Z:return`month`;default:throw Error(`Unknown calendar definition`)}}function Dt(e){let{ops:t,step:n}=e;if(t===q||t===J||t===Y)return t(b(n));if(t===X||t===Z)return t(Array.isArray(n)?n.map(e=>BigInt(e)):BigInt(n));throw Error(`Unsupported definition`)}function Ot(e){let t=b(BigInt(e.stride));switch(Et(e)){case`second`:return b(e.step);case`minute`:return b(e.step).mul(60);case`hour`:return b(e.step).mul(3600);case`day`:return t.mul(vt);case`month`:return t.mul(yt);default:return b(0)}}let kt=_t.map(e=>({level:Et(e),stride:BigInt(e.stride),duration:Ot(e),digits:0,create:()=>Dt(e),source:e})).sort((e,t)=>e.duration.lt(t.duration)?-1:e.duration.gt(t.duration)?1:0),At=kt.reduce((e,t)=>{let n=e.get(t.level);return n?n.push(t):e.set(t.level,[t]),e},new Map);function jt(e){if(e.digits<=0n)return 0;let t=e.digits,n=BigInt(2**53-1);return t>n&&(t=n),Number(t)}function Mt(e,t,n){return{level:`subsecond`,stride:1n,duration:e,digits:jt(e),create:()=>q(e),subsecondMetadata:{exponent:t,factor:n}}}function Nt(e,t,n){let r=t&&t.lt(b(1))?t:b(1),i=e.lt(b(1));if(!i&&!n)return null;let a=i?e:b(1),o;a.isPositive()?(o=a.log(10).floor().integer(),o>=0n&&(o=-1n)):o=-1n;let s=null;for(let e=o;e<0n;e+=1n){let t=b(10).pow(e,-e);for(let n of Ct){let i=t.mul(b(n));if(i.lt(r)){if(a.isZero()||!i.lt(a))return Mt(i,e,n);(!s||s.step.lt(i))&&(s={step:i,exponent:e,factor:n})}}}return n&&s?Mt(s.step,s.exponent,s.factor):null}function Pt(e){let t=e.isPositive()?e:b(0);for(let e of kt)if(t.isZero()||!e.duration.lt(t))return e;return null}function Ft(e,t,n,r){let i=At.get(e);if(!i)return null;let a=t.isPositive()?t:b(0),o=null;for(let e of i){if(n&&!e.duration.lt(n))break;if(a.isZero()||!e.duration.lt(a))return e;o=e}return r&&o?o:null}function It(e){if(e<=0n)return 1n;let t=1n,n=10n,r=e;for(;r>0n;)(r&1n)==1n&&(t*=n),n*=n,r>>=1n;return t}function Lt(e){return{level:`year`,stride:e,duration:b(e).mul(bt),digits:0,create:()=>gt(e),yearStride:e}}function Rt(e){let t=e.isPositive()?e:b(0);if(t.isZero())return Lt(1n);let n=t.div(bt).log(10).floor().integer();n<0n&&(n=0n);for(let e=n;;e+=1n){let n=It(e);for(let e of wt){let r=Lt(n*e);if(!r.duration.lt(t))return r}}}function zt(e){return Tt.indexOf(e)}function Bt(e,t){let n=zt(e.level);if(n<=0)return null;let r=Tt[n-1],i=e.duration;if(e.level===`year`){for(let n of[5n,4n,2n]){if(e.stride%n!==0n)continue;let r=e.stride/n;if(r<=0n)continue;let i=Lt(r);if(!i.duration.lt(t)&&i.duration.lt(e.duration))return i}let n=Rt(t);return n.duration.lt(e.duration)?n:null}if(e.level===`subsecond`){let n=Nt(t,e.duration,!0);return n&&n.duration.lt(e.duration)?n:null}let a=e.level,o=At.get(a)??[];for(let n=o.length-1;n>=0;--n){let r=o[n];if(r.duration.lt(e.duration)&&!r.duration.lt(t))return r}if(r===`subsecond`){let n=Nt(t,i,!0);return n&&n.duration.lt(e.duration)?n:null}return r===`year`?null:Ft(r,t,i,!0)}function Vt(e){if(!e||!e.isPositive())return null;let t=e.mul(xt),n=e.mul(St),r=Nt(t,null,!1);if(r||=Pt(t),r||=Rt(t),!r)return null;let i=Bt(r,n);return{level:r.level,major:r.create(),minor:i?i.create():null,digits:r.digits,stride:r.stride}}function Ht(e){return e.replace(/[0-9]/g,e=>String.fromCodePoint(e.charCodeAt(0)-48+8320))}function Ut(e){let{time:t,unit:n}=e,r=e,{year:i,month:a,day:o,hour:s,minute:c,second:l,subseconds:u}=at(K(t,n,`s`)),d=(e,t)=>e.toString().padStart(t,`0`),f=e=>d(e,2),p=e=>e>0n?e.toString():` ${(1n-e).toString()} BC`,m=()=>`${f(a)}/${f(o)}`,h=()=>`${f(s)}:${f(c)}`,g=r.digits>0?`.`+Ht(u.toFixed(r.digits).split(`.`)[1]):``,_=()=>`${f(s)}:${f(c)}:${f(l)}${g}`;switch(r.level){case`subsecond`:case`second`:return s===0n&&c===0n&&l===0n&&u.eq(0)?m():_();case`minute`:case`hour`:return s===0n&&c===0n?m():h();case`day`:return m();case`month`:if((r.stride??1n)===3n){let e=Math.floor((Number(a)-1)/3)+1;return e===1?`${p(i)} Q${e}`:`Q${e}`}return`${p(i)}/${f(a)}`;case`year`:default:return p(i)}}function Wt(e,t,n){if(!e)return null;let r=e.next(t);return!r||r.le(t)||r.ge(n)?null:r}function*Gt(e,t,n){if(!e[0]||!e[1])return;let r=n.timeUnit??`s`,i=n.timeFormat??Ut,a=K(e[0],r,`s`),o=K(e[1],r,`s`);if(o.le(a))return;t=K(t,r,`s`);let s=Vt(t);if(!s)return;let c=s.major.align(a),l=s.minor?.align(a)??null;for(;c||l;){if(c!=null&&(l==null||c.le(l))&&c){if(a.le(c)){let e=K(c,`s`,r);yield{time:{time:e},major:!0,tick:!0,text:i({time:e,unit:r,...s})}}l&&l.eq(c)&&(l=Wt(s.minor,l,o)),c=Wt(s.major,c,o);continue}l&&=(a.le(l)&&(yield{time:{time:K(l,`s`,r)},major:!1,tick:!0,text:``}),Wt(s.minor,l,o))}}var Kt=class extends Le{constructor(e){e={...e,timeAxis:ft(e.timeAxis,{timeUnit:`s`})},super(e)}async loadChunk(e){let t=[...this.options.timeAxis.relative?ht(e.range,e.resolution,this.options.timeAxis):Gt(e.range,e.resolution,this.options.timeAxis)].map(e=>({...e,time:{time:e.time.time,_minTime:e.time.time,_maxTime:e.time.time}}));return{...e,data:t}}},qt=class{#e;#t;constructor(e){let{maxSize:t}=e;if(!(typeof t==`number`&&Number.isFinite(t)&&t>0))throw TypeError("`maxSize` must be a number greater than 0");this.#e=Math.floor(t),this.#t=new Map}get size(){return this.#t.size}get maxSize(){return this.#e}get(e){if(!this.#t.has(e))return;let t=this.#t.get(e);return this.#t.delete(e),this.#t.set(e,t),t}set(e,t){if(this.#t.has(e)&&this.#t.delete(e),this.#t.set(e,t),this.#t.size>this.#e){let e=this.#t.keys().next().value;e!==void 0&&this.#t.delete(e)}return this}has(e){return this.#t.has(e)}delete(e){return this.#t.delete(e)}clear(){this.#t.clear()}*keys(){let e=Array.from(this.#t.keys());for(let t=e.length-1;t>=0;t--)yield e[t]}*values(){for(let[,e]of this)yield e}*entries(){yield*this[Symbol.iterator]()}*[Symbol.iterator](){let e=Array.from(this.#t.entries());for(let t=e.length-1;t>=0;t--)yield e[t]}};function Jt(e,t,n=C.defaultChunkSize){let r=me(t),i=r.mul(n);if(!e[0]||!e[1]||!i.isPositive())return[{id:`z${t}`,seq:0n,expires:1/0,range:e,resolution:r,zoom:t}];let a=[],o=e[1].add(i);for(let n=e[0];n.le(o);n=n.add(i)){let e=n.div(i).floor().integer(),o=[i.mul(e),i.mul(e+1n)],s=`z${t}:seq${e}`;a.push({id:s,seq:e,expires:1/0,range:o,resolution:r,zoom:t})}return a}function Yt(e){return!!(x(e)||typeof e==`number`||typeof e==`string`||typeof e==`bigint`)}function Xt(e){return e==null?{shrink:!0,expand:!0,default:[b(0),void 0]}:Array.isArray(e)?{shrink:!0,expand:!0,default:e.map(b)}:typeof e==`number`||Yt(e)?{shrink:!0,expand:!0,default:[b(0),b(e)]}:e.default!=null&&!Array.isArray(e.default)?{shrink:e.shrink??!0,expand:e.expand??!0,default:[b(0),b(e.default)]}:{shrink:e.shrink??!0,expand:e.expand??!0,default:(e.default??[0,void 0]).map(b)}}function Zt(e,t){return e._minTime?.le(t[1])&&t[0]?.le(e._maxTime)}var Qt=class{#e;#t;#n;#r=new qt({maxSize:256});#i={min:b(0),max:b(1)};#a;constructor(e){this.#e=e.options,this.#t=e.sources,this.#a=e.options.data.color,this.#n=Xt(e.options.data.range)}get name(){return this.#e.data.name??``}get digits(){return this.#e.data.digits??1}get unit(){return this.#e.data.unit??``}get zoomLevels(){return this.#t[this.#e.data.source].zoomLevels}get chunkSize(){return this.#t[this.#e.data.source].chunkSize}get options(){return this.#e}async loadChunk(e){let t=await this.#t[this.#e.data.source].loadChunk(e),n=this.#e.data.parser?.(t.data)??t.data;if(!Array.isArray(n))throw Error(`Invalid data from the source after parsed.`);let r=Object.fromEntries((Array.isArray(this.#e.data.time)?this.#e.data.time.map(e=>[e,e]):Object.entries(typeof this.#e.data.time==`string`||this.#e.data.time==null?{time:this.#e.data.time??`time`}:this.#e.data.time)).map(([e,t])=>[e,typeof t==`function`?t:de(t)])),i=Object.fromEntries((Array.isArray(this.#e.data.value)?this.#e.data.value.map(e=>[e,e]):Object.entries(typeof this.#e.data.value==`string`||this.#e.data.value==null?{value:this.#e.data.value??`value`}:this.#e.data.value)).map(([e,t])=>[e,typeof t==`function`?t:de(t)])),a=n.map(e=>{let t=Object.fromEntries(Object.entries(r).map(([t,n])=>[t,E(n(e))])),n=Object.fromEntries(Object.entries(i).map(([t,n])=>[t,re(n(e))]).filter(([,e])=>e!==void 0)),[a,o]=S(...Object.values(t));return t._minTime=a,t._maxTime=o,{time:t,value:n,data:e}});return this.#r.set(t.id,a),{...t,data:a}}updateDataRange(e,t){t=he(t,this.zoomLevels);let[n,r]=S(...Jt(e,t,this.chunkSize).flatMap(({id:t})=>{let n=this.#r.get(t);return n?n.flatMap(t=>Zt(t.time,e)?S(...Object.values(t.value)):[]):[]}));n==null||r==null||(this.#i={min:this.#n.default[0]==null?n:this.#n.expand?b.min(n,this.#n.default[0],...this.#n.shrink?[]:[this.#i.min]):this.#n.default[0],max:this.#n.default[1]==null?r:this.#n.expand?b.max(r,this.#n.default[1],...this.#n.shrink?[]:[this.#i.max]):this.#n.default[1]})}get color(){return this.#a}get dataRange(){let[,e]=S(this.#i.min.abs(),this.#i.max.abs());return{...this.#i,amp:e}}};function $t(e){return new Qt(e)}var en=class extends T{#e=`initial`;#t;#n;#r;#i;#a;#o;#s;get id(){return this.#o}get seq(){return this.#s}get range(){return this.#t}get resolution(){return this.#n}get zoom(){return this.#r}get state(){return this.#e}get expired(){return this.#e!==`loaded`&&this.#e!==`error`||this.#c<=Date.now()}#c=0;get expires(){return this.#c}setExpires(e){this.#c=e}invalidate(){this.#c=0}constructor(e){super(),this.#o=e.id,this.#s=e.seq,this.#t=e.range,this.#n=e.resolution,this.#r=e.zoom,this.#i=e.loader}reload(){return this.load(!0)}async load(e=!1){if(this.#a&&(this.#e===`loading`||!e&&!this.expired))return await this.#a;this.#e=`loading`,this.#c=1/0;try{let e={id:this.#o,seq:this.#s,expires:1/0,range:this.#t.map(e=>e?.clone()),zoom:this.#r,resolution:this.#n.clone()};return this.#a=this.#i(e,{expiresAt:t=>e.expires=t,expiresIn:t=>e.expires=t+Date.now()}).then(t=>(this.#e=`loaded`,this.#c=e.expires??1/0,this.changed(),t||null)),await this.#a}catch(e){return console.error(e),this.#e=`error`,this.changed(),null}}};function tn(e){return async(t,n)=>{let r=await e(t,n);return r instanceof Response?await r.json():r}}var Q=class extends T{#e=new qt({maxSize:1e3});zoomLevels;chunkSize;loader;constructor(e){if(super(),this.chunkSize=e.chunkSize||C.defaultChunkSize,this.zoomLevels=e.zoomLevels,`loader`in e)this.loader=tn(e.loader);else if(`data`in e)this.zoomLevels=[0],this.chunkSize=0,this.loader=async()=>e.data;else if(`url`in e)e.url.match(/{[a-zA-Z]+}/)?this.loader=tn(async t=>{let n=e.url.replace(/{[a-zA-Z]+}/g,e=>{switch(e.substring(1,e.length-1)){case`z`:case`zoom`:return t.zoom.toString();case`r`:case`resolution`:return t.resolution.rescale().toString();case`s`:case`start`:return t.range[0].rescale().toString();case`e`:case`end`:return t.range[1].rescale().toString();default:return console.warn(`Unknown template string is found in the URL: `+e),e}});return await fetch(n)}):(this.zoomLevels=[0],this.chunkSize=0,this.loader=tn(()=>fetch(e.url)));else throw Error(`No source`)}async loadChunk({id:e,seq:t,range:n,resolution:r,zoom:i}){let a=this.#t(e,t,n,r,i),o=await a.load()??void 0;return{id:e,seq:t,expires:a.expires,range:n,resolution:r,zoom:i,data:o}}#t(e,t,n,r,i){let a=this.#e.get(e);return a||(a=new en({id:e,seq:t,loader:this.loader,range:n,resolution:r,zoom:i}),this.#e.set(e,a)),a}async loadData(e,t){t=he(t,this.zoomLevels);let n=Jt(e,t,this.chunkSize);return await Promise.all(n.map(e=>this.loadChunk(e)))}async expireChunks(e){for(let t of this.#e.values())(!e||!t.range[1]||t.range[1].gt(e[0])||!t.range[0]||t.range[0].lt(e[1]))&&t.invalidate();this.changed()}};function nn(e){return typeof e==`string`?new Q({url:e}):typeof e==`function`?new Q({loader:e}):e instanceof Q?e:typeof e==`object`&&e&&[`url`,`loader`,`data`].some(t=>t in e)?new Q(e):new Q({data:e})}function rn(e={}){let t=URL.createObjectURL(new Blob([`URL.revokeObjectURL(self.location.href);`,"(function(){function e(e,t=`Digits must be an integer`){if(typeof e==`number`){if(!Number.isFinite(e)||!Number.isInteger(e))throw Error(t);return BigInt(e)}return e}function t(t){let n=e(t);return n<0n?0n:n}function n(e){let t=Number(e);return t<b.length?b[t]:5n**BigInt(e)}function r(e){let t=Number(e);return t<x.length?x[t]:10n**BigInt(e)}function i(e,t,n){let r=BigInt(t);if(r<=0n)return new g(1n);let i=new g(1n),a=e.clone();for(;r&1n&&i.mul$(a,n),r>>=1n,r!==0n;)a.mul$(a,n);return i}function a(e,t,n,r){if(t.isZero()||r<=0)return new g(1n);let{guardPrec:a,rootPrec:s}=f(n,r),c=o(t.coeff).toString().padStart(r,`0`),l=e.round(s),u=new g(1n);for(let e=0;e<r;e++){l=l.root(10n,s);let t=c.charCodeAt(e)-48;if(t<=0)continue;let n=i(l.clone(),t,a);u.mul$(n,a)}return u.round$(n)}function o(e){return e<0n?-e:e}function s(e){if(e===``)throw Error(`Invalid number`);let t=1n,n=e;if(n[0]===`-`?(t=-1n,n=n.slice(1)):n[0]===`+`&&(n=n.slice(1)),n===``)throw Error(`Invalid number`);let r=n.indexOf(`.`),i=n,a=``;r>=0&&(i=n.slice(0,r),a=n.slice(r+1)),i===``&&(i=`0`);let o=(i+a).replace(/^0+/,``),s=o===``?`0`:o;return{coeff:t*BigInt(s),digits:BigInt(a.length)}}function c(e){let t=e.search(/[eE]/);if(t===-1)return s(e);let n=e.slice(0,t),r=e.slice(t+1);if(r.trim()===``)throw Error(`Invalid number`);let{coeff:i,digits:a}=s(n);return{coeff:i,digits:a-BigInt(r)}}function l(e,t){let n=e.digits>t.digits?e.digits:t.digits,i=n-e.digits,a=n-t.digits;return{digits:n,aCoeff:e.coeff*r(i),bCoeff:t.coeff*r(a)}}function u(e){let t=Math.max(0,Number(e));return Math.min(2**53-1,t)}function d(e,t,n){let r=u(t),i=u(n),a=Math.max(r,i)+1,o=Math.max(a,1),s=e+o;for(;;){let t=Math.ceil(s*v)+o,n=Math.max(t*2,1),r=Math.max(a,Math.ceil(Math.log10(n))+1);if(r<=o){let e=s+o;return{guardPrec:o,fracPrec:s,bits:t,divPrec:e}}o=r,s=e+o}}function f(e,t){let n=Math.max(1,t),r=Math.max(6,Math.ceil(Math.log10(n*4))+2),i=e+BigInt(r);return{guardPrec:i,rootPrec:i+BigInt(Math.max(r,6))}}function p(e,t){let n=Math.max(1,t.toString().replace(`-`,``).length),r=Math.max(12,n+4);return{iterPrec:e+BigInt(r),stopShift:e+2n}}function m(e,t,n,r){let i=[],a=[],o=new g(t),s=1n,c=n+Math.max(r,1);for(;o.le(e);)i.push(o),a.push(s),o=o.mul(o),s*=2n;let l=new g(e),u=0n;for(let e=i.length-1;e>=0;e--){let t=i[e];l.ge(t)&&(l.div$(t,c),u+=a[e])}return{exponent:u,remainder:l}}function h(e,t,n,r){let i=n+Math.max(r,1);if(e.eq(y))return{exponent:0n,remainder:y.clone()};if(e.ge(y))return m(e,t,n,r);let a=m(y.div(e,i),t,n,r);return a.remainder.eq(y)?{exponent:-a.exponent,remainder:y.clone()}:{exponent:-a.exponent-1n,remainder:y.div(a.remainder,i).mul$(t)}}var g=class s{coeff;digits;constructor(e,t){if(typeof e==`number`){if(e!==e||e===1/0||e===-1/0)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(e.toString()))}else if(typeof e==`string`){let t=e.trim();if(t===``)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(t))}else if(typeof e==`bigint`)this.coeff=e,this.digits=t??0n;else if(typeof e==`object`&&e&&`coeff`in e&&typeof e.coeff==`bigint`&&`digits`in e&&typeof e.digits==`bigint`)this.coeff=e.coeff,this.digits=e.digits;else throw Error(`Invalid input type for Decimal`)}clone(){return new s({coeff:this.coeff,digits:this.digits})}#e(e,t=0n){return C(e)&&(t=e.digits,e=e.coeff),this.coeff=e,this.digits=t,this}#t(e,t,n){let i=this.coeff,a=e.coeff,s=e.digits+t-this.digits;s>=0n?i*=r(s):a*=r(-s);let c=i/a,l=i-c*a;if(l!==0n&&n!==`trunc`){let e=i>=0n;switch(n){case`floor`:e||(c-=1n);break;case`ceil`:e&&(c+=1n);break;case`round`:{let t=o(l),n=a<0n?-a:a;t*2n>=n&&(c+=e?1n:-1n);break}default:break}}return this.#e(c,t)}#n(t,n=`trunc`){let i=e(t);if(this.isZero())return this.digits=i,this;if(i===this.digits)return this;if(i>this.digits){let e=r(i-this.digits);return this.coeff*=e,this.digits=i,this}return this.#t(y,i,n)}#r(){if(this.coeff===0n)return this.digits=0n,this;if(this.digits<=0n)return this;for(;this.digits>0n&&this.coeff%10n==0n;)this.coeff/=10n,this.digits-=1n;return this}round$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`round`)}round(e=0,t=!1){return this.clone().round$(e,t)}roundBy$(e,t=`round`){let n=new s(e).abs();if(n.isZero())throw Error(`Cannot align to zero`);return this.div$(n,0n,t).mul$(n)}roundBy(e,t=`round`){return this.clone().roundBy$(e,t)}floor$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`floor`)}floor(e=0,t=!1){return this.clone().floor$(e,t)}floorBy$(e){return this.roundBy$(e,`floor`)}floorBy(e){return this.clone().floorBy$(e)}ceil$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`ceil`)}ceil(e=0,t=!1){return this.clone().ceil$(e,t)}ceilBy$(e){return this.roundBy$(e,`ceil`)}ceilBy(e){return this.clone().ceilBy$(e)}trunc$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`trunc`)}trunc(e=0,t=!1){return this.clone().trunc$(e,t)}rescale$(e,t=`trunc`){return e==null?this.#r():this.#n(e,t)}rescale(e,t=`trunc`){return this.clone().rescale$(e,t)}truncBy$(e){return this.roundBy$(e,`trunc`)}truncBy(e){return this.clone().truncBy$(e)}#i(e){let t=this.clone();return e(this),[this,t.sub$(this)]}split$(e,t=`floor`){return this.#i(n=>n.#n(e??0n,t))}split(e,t=`floor`){return this.clone().split$(e,t)}splitBy$(e,t=`floor`){return this.#i(n=>n.roundBy$(e,t))}splitBy(e,t=`floor`){return this.clone().splitBy$(e,t)}neg$(e){return e!==!1&&(this.coeff=-this.coeff),this}neg(e){return this.clone().neg$(e)}isZero(){return this.coeff===0n}isPositive(){return this.coeff>0n}isNegative(){return this.coeff<0n}add$(e){let t=S(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r+i,this.digits=n,this}add(e){return this.clone().add$(e)}sub$(e){let t=S(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r-i,this.digits=n,this}sub(e){return this.clone().sub$(e)}mul$(e,t){let n=S(e);return this.coeff*=n.coeff,this.digits+=n.digits,t!==void 0&&this.round$(t),this}mul(e,t){return this.clone().mul$(e,t)}shift10$(t){let n=e(t,`Shift amount must be an integer`);return n===0n||(this.digits-=n),this}shift10(e){return this.clone().shift10$(e)}inverse$(e=_){if(this.isZero())throw Error(`Division by zero`);let n=t(e),r=this.clone();return this.#e(1n).div$(r,n)}inverse(e=_){return this.clone().inverse$(e)}div$(e,n,r=`round`){let i=n===void 0,a=t(n??_),o=S(e);if(o.isZero())throw Error(`Division by zero`);return this.isZero()?this:(this.#t(o,a,r),i?this.#r():this)}div(e,t,n=`round`){return this.clone().div$(e,t,n)}abs$(){return this.isNegative()&&(this.coeff=-this.coeff),this}abs(){return this.clone().abs$()}mod$(e){let t=S(e);if(t.isZero())throw Error(`Division by zero`);let{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r%i,this.digits=n,this}mod(e){return this.clone().mod$(e)}modPositive$(e){let t=S(e);if(t.isNegative())throw Error(`Modulo divisor must be positive`);return this.mod$(t),this.isNegative()&&this.add$(t),this}modPositive(e){return this.clone().modPositive$(e)}clamp$(e,t){let n=S(e),r=S(t);if(n&&r&&n.gt(r))throw Error(`Invalid clamp range`);return n&&this.lt(n)?(this.coeff=n.coeff,this.digits=n.digits,this):r&&this.gt(r)?(this.coeff=r.coeff,this.digits=r.digits,this):this}clamp(e,t){return this.clone().clamp$(e,t)}cmp(e){let t=S(e),{aCoeff:n,bCoeff:r}=l(this,t);return n===r?0:n>r?1:-1}eq(e){return this.cmp(e)===0}neq(e){return this.cmp(e)!==0}lt(e){return this.cmp(e)<0}gt(e){return this.cmp(e)>0}le(e){return this.cmp(e)<=0}ge(e){return this.cmp(e)>=0}between(e,t){let n=S(e),r=S(t);if(n&&r&&n.gt(r))throw Error(`Invalid between range`);return!(n&&this.lt(n)||r&&this.gt(r))}isCloseTo(e,t){let n=S(t);if(n.isNegative())throw Error(`Tolerance must be non-negative`);return this.sub(e).abs$().le(n)}pow$(e,n=_){let r=t(n),o=S(e);if(o.isZero())return this.#e(1n);if(this.isZero()){if(o.isNegative())throw Error(`Zero to negative exponent is undefined`);return this}let s=o.isNegative(),[c,l]=o.abs().split$(),u=this.clone(),d=l.isZero()?0:Number(l.digits);if(u.isNegative()&&d>0)throw Error(`Fractional exponent requires non-negative base`);let f=i(u,c.coeff),p=r;d>0&&(p=r+BigInt(Math.max(4,d)));let m=a(u,l,p,d);d>0&&f.mul$(m,p);let h=p>r?p:r,g=d>0?p:r;return s?this.#e(1n).div$(f,h):(f.round$(h,!0),this.#e(f)),this.round$(g,g===0n),this}pow(e,t=_){return this.clone().pow$(e,t)}root$(n,r=_){let a=e(n,`Root degree must be an integer`);if(a<=0n)throw Error(`Invalid root degree`);let o=t(r);if(a===1n)return o<this.digits?this:this.trunc$(o,!0);if(this.isZero())return this;let c=this.isNegative();if(c&&a%2n==0n)throw Error(`Even root of negative value is not defined`);let l=this.abs(),u=a-1n,{iterPrec:d,stopShift:f}=p(o,a),m=w(-f),h=(()=>{let e=l.number();if(Number.isFinite(e)&&e>0){let t=Number(a);if(t>0){let n=e**(1/t);if(Number.isFinite(n)&&n>0)return new s(n).round$(d,!0)}}return new s(w(l.order()/a)).round$(d,!0)})();this.#e(h.coeff,h.digits),this.isZero()&&this.#e(1n);for(let e=0;e<64;e++){let e=i(this.clone(),u,d);if(e.isZero())break;let t=l.div(e,d),n=this.mul(u,d).add$(t).div$(a,d);if(n.isCloseTo(this,m)||n.eq(this)){this.#e(n);break}this.#e(n)}return this.round$(d,!0),this.round$(o,o===0n),c&&this.neg$(),this}root(e,t=_){return this.clone().root$(e,t)}sqrt$(e=_){return this.root$(2n,e)}sqrt(e=_){return this.clone().sqrt$(e)}log$(e,r=_){let i=Number(t(r)),a=new s(e);if(!this.isPositive())throw Error(`Logarithm argument must be positive`);if(!a.isPositive())throw Error(`Logarithm base must be positive`);if(a.eq(y))throw Error(`Logarithm base cannot be one`);let{guardPrec:o,fracPrec:c,bits:l,divPrec:u}=d(i,a.digits,this.digits),f=a.lt(y),p=f?y.div(a,u):a,{exponent:m,remainder:g}=h(this,p,c,o);if(this.#e(m),c>0){let e=0n;for(let t=0;t<l;t++)g.mul$(g,u),e<<=1n,g.ge(p)&&(g.div$(p,u),e|=1n);e!==0n&&this.add$({coeff:e*n(l),digits:BigInt(l)})}let v=i===0?0:c;return this.round$(v),f&&this.neg$(),this}log(e,t=_){return this.clone().log$(e,t)}sign$(){return this.isZero()?this:(this.coeff=this.coeff<0n?-1n:1n,this.digits=0n,this)}sign(){return this.clone().sign$()}order(){if(this.isZero())throw RangeError(`order undefined for 0`);return BigInt(o(this.coeff).toString().length)-1n-this.digits}toFixed(t){let n=`Fraction digits must be a non-negative integer`,r=e(t,n);if(r<0n)throw Error(n);return this.round(r,!0).toString()}toString(){if(this.coeff===0n)return this.digits<=0n?`0`:`0.${`0`.repeat(Number(this.digits))}`;let e=this.coeff<0n,t=e?`-`:``,n=(e?-this.coeff:this.coeff).toString();if(this.digits<=0n)return`${t}${n}${`0`.repeat(Number(-this.digits))}`;let r=Number(this.digits),i=n.padStart(r+1,`0`),a=i.length-r;return`${t}${i.slice(0,a)}.${i.slice(a).padEnd(r,`0`)}`}[Symbol.for(`nodejs.util.inspect.custom`)](e,t){return`colors`in t&&t?.colors?`\\x1b[33m${this.toString()}\\x1b[m \\x1b[90m(${this.coeff} * 10 ** ${-this.digits})\\x1b[m`:this.toString()}number(){return Number(this.toString())}integer(){return this.digits<=0n?this.coeff*r(-this.digits):this.coeff/r(this.digits)}};let _=18n,v=Math.log2(10),y=new g(1n),b=[],x=[];(function(){for(let e=0;e<256;e++)x[e]=10n**BigInt(e),b[e]=5n**BigInt(e)})();function S(e){return e==null||C(e)?e:new g(e)}(function(e){function t(e){return e instanceof g}e.isDecimal=t;function n(e){return!!(t(e)||typeof e==`string`||typeof e==`number`||typeof e==`bigint`||typeof e==`object`&&e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`)}e.isDecimalLike=n;function r(e){return new g({coeff:1n,digits:-BigInt(e)})}e.pow10=r;function i(...e){let t=null,n=null;for(let r=0;r<e.length;r++){let i=S(e[r]);i!=null&&((t===null||i.lt(t))&&(t=i),(n===null||i.gt(n))&&(n=i))}return[t,n]}e.minmax=i;function a(...e){return i(...e)[0]}e.min=a;function o(...e){return i(...e)[1]}e.max=o})(S||={});let C=S.isDecimal;S.isDecimalLike;let w=S.pow10;S.minmax,S.min,S.max;let T=0;function ee(e){return function(t,n,r={rpc:!1}){let i=++T;return e.postMessage({type:r.rpc?`rpc`:`event`,command:t,seq:i,payload:ne(n,r.transfer)},r.transfer??[]),r.rpc?new Promise(n=>{let r=a=>{a.data.type===`rpc:ack`&&a.data.command===t&&a.data.seq===i&&(e.removeEventListener(`message`,r),n(D(a.data?.payload)))};e.addEventListener(`message`,r)}):Promise.resolve()}}function te(e,t){return e.addEventListener(`message`,async({data:{type:n,command:r,seq:i,payload:a}})=>{let o=r in t&&await t[r](D(a))||null;n===`rpc`&&e.postMessage({type:`rpc:ack`,command:r,seq:i,payload:ne(o)})}),t}function E(e,t,n){if(e==null)return e;let r=typeof e;if(r===`string`||r===`number`||r===`boolean`||r===`bigint`)return e;if(r===`undefined`||r===`symbol`||r===`function`)return;if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||t?.includes(e))return e;if(n.has(e))throw TypeError(`Cannot serialize circular reference`);if(n.add(e),typeof e.toJSON==`function`){let r=e.toJSON();if(r!==e){let i=E(r,t,n);return n.delete(e),i}}if(Array.isArray(e)){let r=Array(e.length);for(let i=0;i<e.length;i++)r[i]=E(e[i],t,n);return n.delete(e),r}if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return n.delete(e),e;let i={};for(let r of Object.keys(e))i[r]=E(e[r],t,n);return n.delete(e),i}function ne(e,t){return E(e,t,new WeakSet)}function re(e){return typeof e==`object`&&!!e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`}function D(e){if(e==null)return e;let t=typeof e;if(t===`string`||t===`number`||t===`boolean`||t===`bigint`)return e;if(!(t===`undefined`||t===`symbol`||t===`function`)){if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas)return e;if(re(e))return S(e);if(Array.isArray(e))return e.map(D);if(e&&typeof e==`object`){let t={};for(let n of Object.keys(e))t[n]=D(e[n]);return t}return e}}function O(e,...t){return typeof e==`function`?e(...t):Array.isArray(e)?e.map(e=>O(e,...t)):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,n])=>[e,O(n,...t)])):e}function ie(e){return Object.prototype.toString.call(e)===`[object Object]`}function ae(e,t){for(let n in t){let r=t[n],i=e[n];Array.isArray(r)?e[n]=r.slice():r&&typeof r==`object`&&ie(r)?((!i||typeof i!=`object`)&&(e[n]={}),ae(e[n],r)):e[n]=r}return e}var k={clickTolerance:8,defaultChunkSize:256,base:2,chunkStep:1,wheelStep:.5};function oe(e){if(globalThis._uid||(globalThis._uid=1),e){if(`_uid`in e)return String(e._uid);e._uid=String(globalThis._uid),Object.defineProperty(e,`_uid`,{enumerable:!1})}return String(globalThis._uid++)}var se=class{uid=oe(this);#e={};dispatchEvent(e){let t=typeof e==`string`?e:e.type,n=this.#e[t];if(n)for(let t of n)t(e)}on(e,t){let n=this.#e[e]??[];return n.push(t),this.#e[e]=n,()=>this.un(e,t)}un(e,t){let n=this.#e[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}},A=class{type;value;origin;stopped=!1;prevented=!1;constructor(e,t,n){this.type=e,this.value=t,this.origin=n}stopPropagation(){this.stopped=!0}preventDefaults(){this.prevented=!0}},j=class extends se{#e=0;changed(){this.#e++,this.dispatchEvent(`change`)}get revision(){return this.#e}},M=class extends j{constructor(){super()}updateOptions(e){}render(e){}preRender(e){}postRender(e){}onPointerEvent(e,t){}pointerStyle(e,t){}};function ce(e,t,n){if(!t)return;let{height:r}=e.size,i=e.ctx,[a,o]=e.timeAxis.p(t);i.fillStyle=n,i.fillRect(a,0,o-a,r)}function N(e,t,n){if(!t)return;let{width:r,height:i}=e.size,a=e.ctx,[o,s]=e.timeAxis.p(t);a.fillStyle=n,0<o&&a.fillRect(0,0,Math.min(o,r),i),s<r&&a.fillRect(s,0,r-s,i)}function le(e){let t=e.ctx,n=e.size.height,r=Math.round(e.timeAxis.cursor.p);t.fillStyle=`white`,t.strokeStyle=`red`,t.lineWidth=1,t.fillRect(r-1,0,3,n),t.beginPath(),t.moveTo(r+.5,0),t.lineTo(r+.5,n),t.stroke()}function P(e,t,n){let r=e.ctx,i=e.dpr,a={width:r.canvas.width/i,height:r.canvas.height/i};r.save(),t?(r.translate(0,t.oy),a.height=t.height,e.renderingTrack=t):e.renderingTrack=null,e.chart.ox=e.options.padding[3]??0,e.chart.oy=e.options.padding[0]??0,e.chart.width=a.width-e.chart.ox-e.options.padding[3],e.chart.height=a.height-e.chart.oy-e.options.padding[2],e.size.width=a.width,e.size.height=a.height,r.beginPath(),r.rect(0,0,e.size.width,e.size.height),r.clip(),n(e),r.restore()}function F(e,t){e.tracks.forEach(n=>P(e,n,()=>t(n.id,n)))}function I(e,t){return e===!1?null:((e===!0||e==null)&&(e=t),e)}function L(e,t,n=k.clickTolerance){return e&&e-n<=t&&t<=e+n}var ue=class extends M{#e=null;#t=`rgba(0, 0, 255, 0.2)`;#n=!1;#r=!1;#i=!0;#a=S(0n);#o=8;constructor(){super(),this.on(`change`,()=>{this.dispatchEvent(new A(`renderer:event`,{range:this.#e,resizing:this.#r}))})}updateOptions(e){let t=e.selection;t!==void 0&&(t===!1?(this.#i=!1,this.#e=null):t===!0?this.#i=!0:(t.resizable!==void 0&&(this.#i=t.resizable),t.color!==void 0&&(this.#t=t.color),t.invert!==void 0&&(this.#n=t.invert),t.range!==void 0&&(this.#e=t.range)),this.changed())}#s({shiftKey:e,buttons:t},n){if(!this.#i)return!1;let r=t[0].latest.x;if(e){let e=n.timeAxis.t(r);return this.#r=!0,this.#a=e,this.#e=[e,e],this.changed(),!0}if(!this.#e)return!1;let i=n.timeAxis.p(this.#e);if(L(i[0],r,this.#o)){let e=this.#e[1];return e===void 0?!1:(this.#r=!0,this.#a=e,!0)}else if(L(i[1],r,this.#o)){let e=this.#e[0];return e===void 0?!1:(this.#r=!0,this.#a=e,!0)}return!1}#c({buttons:e},t){if(!this.#i||!this.#r)return!1;let n=t.timeAxis.t(e[0].latest.x),r=this.#a;return this.#e=n.lt(r)?[n,r]:[r,n],this.changed(),!0}#l(e,t){if(!this.#i||!this.#r||!this.#e)return!1;this.#r=!1;let n=t.timeAxis.p(this.#e[0]),r=t.timeAxis.p(this.#e[1]);return Math.abs(n-r)<this.#o&&(this.#e=null),this.changed(),!0}onPointerEvent(e,t){if(this.#i)switch(e.type){case`down`:return this.#s(e,t);case`drag:update`:return this.#c(e,t);case`up`:return this.#l(e,t)}}pointerStyle(e,t){if(!this.#e||!this.#i)return;let n=t.timeAxis.p(this.#e);if(this.#r&&L(n[0],n[1],this.#o))return`not-allowed`;if(L(n[0],e.buttons[0].latest.x,this.#o))return`w-resize`;if(L(n[1],e.buttons[0].latest.x,this.#o))return`e-resize`}render(e){P(e,null,()=>{this.#n?N(e,this.#e,this.#t):ce(e,this.#e,this.#t)})}};function de(e){let t=typeof e==`string`?[e,e]:e.length===1?[e[0],e[0]]:e,n=t[0].split(`@`),r=t[1].split(`@`);return[[n[0]||`value`,n[1]||`time`],[r[0]||`value`,r[1]||`time`]]}function R(e,t,n){let{min:r,max:i,amp:a}=n;if(t){let e=r&&r.isPositive()&&r?.log(10),t=i&&i.isPositive()&&i?.log(10);if(!e||!t||t.eq(e))return null;let n=t.sub(e);return t=>{if(!t)return null;if(!t.isZero()&&!t.isNegative())return t.log(10).sub(e).div(n).number()}}else return!a||!r||!i||a.eq(0)||r.eq(i)?null:e?e=>e?.div(a).number():e=>e?.sub(r).div(i.sub(r)).number()}let fe=[`link:fill`,`link:stroke`,`marks`];function z(e,t,n){let r=typeof n.lineWidth==`number`&&isFinite(n.lineWidth)?n.lineWidth:1,i=Math.max(.75,r/2),a=new Path2D;a.arc(t.x,t.y,i,0,Math.PI*2),e.addPath(a)}function B(e,t,n,r){if(isNaN(t.y)||isNaN(n.y))return;let i=typeof r.lineWidth==`number`&&isFinite(r.lineWidth)?r.lineWidth:1,a=Math.max(1,i)/2;e.moveTo(t.x-a,t.y),e.lineTo(t.x+a,t.y),e.lineTo(n.x+a,n.y),e.lineTo(n.x-a,n.y),e.closePath()}function pe(e,t,n){let r=new Path2D,i=q(t??`value@time`),a=null,o=0,s=()=>{o===1&&a&&z(r,a,n),a=null,o=0};for(let t of e){let{x1:e,y1:n}=i(t);if(isNaN(n)){s();continue}o===0?(r.moveTo(e,n),a={x:e,y:n}):r.lineTo(e,n),o++}return s(),{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function V(e,t){if(!t.length)return;if(t.length===1){e.moveTo(t[0].x,t[0].y);return}if(t.length===2){e.moveTo(t[0].x,t[0].y),e.lineTo(t[1].x,t[1].y);return}let n=t.length,r=Array(n-1),i=Array(n-1);for(let e=0;e<n-1;e++)r[e]=t[e+1].x-t[e].x,i[e]=r[e]===0?0:(t[e+1].y-t[e].y)/r[e];let a=Array(n);a[0]=i[0];for(let e=1;e<n-1;e++)a[e]=(i[e-1]+i[e])/2;a[n-1]=i[n-2];for(let e=0;e<n-1;e++){if(i[e]===0||!isFinite(i[e])){a[e]=0,a[e+1]=0;continue}if(a[e]===0&&a[e+1]===0)continue;if(a[e]*i[e]<0||a[e+1]*i[e]<0){a[e]=0,a[e+1]=0;continue}let t=a[e]/i[e],n=a[e+1]/i[e],r=t*t+n*n;if(r>9){let o=3/Math.sqrt(r);a[e]=o*t*i[e],a[e+1]=o*n*i[e]}}e.moveTo(t[0].x,t[0].y);for(let i=0;i<n-1;i++){let n=r[i],o=t[i],s=t[i+1],c=o.x+n/3,l=o.y+a[i]*n/3,u=s.x-n/3,d=s.y-a[i+1]*n/3;e.bezierCurveTo(c,l,u,d,s.x,s.y)}}function me(e,t,n){let r=new Path2D,i=q(t??`value@time`),a=[],o=()=>{if(a.length){if(a.length===1){z(r,a[0],n),a=[];return}V(r,a),a=[]}};for(let t of e){let{x1:e,y1:n}=i(t);if(isNaN(n)){o();continue}a.push({x:e,y:n})}return o(),{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function he(e,t,n){let r=new Path2D,i=q(t??[`value@time`,`zero@time`]),a=e.map(i),o=0;for(;o<a.length;){for(;o<a.length&&(isNaN(a[o].y1)||isNaN(a[o].y2));)o++;if(o>=a.length)break;let e=[];for(;o<a.length&&!isNaN(a[o].y1)&&!isNaN(a[o].y2);)e.push(a[o]),o++;if(e.length===1){B(r,{x:e[0].x1,y:e[0].y1},{x:e[0].x2,y:e[0].y2},n);continue}V(r,e.map(e=>({x:e.x1,y:e.y1})));let t=e[e.length-1];r.lineTo(t.x2,t.y2);for(let t=e.length-2;t>=0;t--)r.lineTo(e[t].x2,e[t].y2);r.closePath()}return{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function ge(e,t,n){let r=new Path2D,i=q(t??[`value@time`,`zero@time`]),a=e.map(i),o=0;for(;o<a.length;){for(;o<a.length&&isNaN(a[o].y1);)o++;if(o>=a.length)break;let e=o;for(r.moveTo(a[e].x1,a[e].y1);o<a.length&&!isNaN(a[o].y1);)r.lineTo(a[o].x1,a[o].y1),o++;let t=o--,i=!1;for(;o>=e&&!isNaN(a[o].y2);)r.lineTo(a[o].x2,a[o].y2),o--,i=!0;!i&&!isNaN(a[e].y2)&&(r.lineTo(a[e].x2,a[e].y2),i=!0),r.lineTo(a[e].x1,a[e].y1),t-e===1&&i&&B(r,{x:a[e].x1,y:a[e].y1},{x:a[e].x2,y:a[e].y2},n),o=t}return{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function H(e,t=`value@time`){return function(n,r,i){let a=new Path2D,o=q(r??t),s=n.map(o);for(let t of s){let n=t.x2-t.x1,r=t.y2-t.y1,o=Math.hypot(n,r),s=Math.atan2(r,n)*180/Math.PI,c=new Path2D;e(c,{style:i,dx:n,dy:r,l:o});let l=new DOMMatrix().translate(t.x1,t.y1).rotate(s).translate(i.offset?.[0]??0,i.offset?.[1]??0).rotate(i.angle??0);a.addPath(c,l)}return{path:a,strokeStyle:i.lineColor??i.color??`black`,fillStyle:K(i.fillColor??i.color??`black`,i.fillOpacity??.25,`white`)}}}function U(e,t){let n=q(t??`value@time`);return{path:e.map(n).map(({x1:e,y1:t})=>({x:e,y:t}))}}let _e={line:{defaultUsing:`value@time`,predicate:e=>!isNaN(e.y1),hasBottom:!1},area:{defaultUsing:[`value@time`,`zero@time`],predicate:e=>!isNaN(e.y1)&&!isNaN(e.y2),hasBottom:!0}};function ve(e,t,n){if(n===`start`)return[{x:t.x,y:e.y},{x:t.x,y:t.y}];if(n===`end`)return[{x:e.x,y:t.y},{x:t.x,y:t.y}];let r=(e.x+t.x)/2;return[{x:r,y:e.y},{x:r,y:t.y},{x:t.x,y:t.y}]}function W(e,t,n){let r=[],i=null;for(let a of e){let e=t(a);if(isNaN(e.y)){i=null;continue}i?r.push(...ve(i,e,n)):r.push(e),i=e}return r}function G(e,t){let n=_e[t];return function(r,i,a){let o=q(i??n.defaultUsing),s=r.map(o),c=[],l=ye(s,e,n,a,c);if(t===`line`)for(let e of c)z(l,e,a);return{path:l,strokeStyle:a.lineColor??a.color??`black`,fillStyle:K(a.fillColor??a.color??`black`,a.fillOpacity??.25,`transparent`)}}}function ye(e,t,n,r,i=[]){let a=new Path2D,o=0;for(;o<e.length;){for(;o<e.length&&!n.predicate(e[o]);)o++;if(o>=e.length)break;let s=o,c=[];for(;o<e.length&&n.predicate(e[o]);)c.push(e[o]),o++;let l=o;if(!c.length)continue;let u=be(c,t,{left:s>0?e[s-1]:null,right:l<e.length?e[l]:null}),d=W(u,e=>({x:e.x1,y:e.y1}),t);if(!d.length)continue;let f=d.length===1,p=[];if(n.hasBottom){if(p=W(u,e=>({x:e.x2,y:e.y2}),t),!p.length)continue;if(f&&p.length===1){B(a,d[0],p[0],r);continue}}a.moveTo(d[0].x,d[0].y);for(let e=1;e<d.length;e++)a.lineTo(d[e].x,d[e].y);if(!n.hasBottom){f&&i.push(d[0]);continue}for(let e=p.length-1;e>=0;e--)a.lineTo(p[e].x,p[e].y);a.lineTo(d[0].x,d[0].y)}return a}function be(e,t,n){let r=e.map(e=>({...e}));return r.length?(xe(r,t,n.left),Se(r,t,n.right),r):r}function xe(e,t,n){if(!n)return;let r=Ce(t,n.x1,e[0].x1);r==null||r===e[0].x1||e.unshift(Te(e[0],r))}function Se(e,t,n){if(!n)return;let r=e[e.length-1],i=we(t,n.x1,r.x1);i==null||i===r.x1||e.push(Te(r,i))}function Ce(e,t,n){if(t==null||isNaN(t)||e===`start`)return null;if(e===`end`)return t;let r=(t+n)/2;return isNaN(r)?null:r}function we(e,t,n){if(t==null||isNaN(t)||e===`end`)return null;if(e===`start`)return t;let r=(n+t)/2;return isNaN(r)?null:r}function Te(e,t){return{x1:t,y1:e.y1,x2:t,y2:e.y2}}function K(e,t,n=`transparent`){return`color-mix(in srgb, ${e} ${t*100}%, ${n})`}function q(e){let[[t,n],[r,i]]=de(e);return function(e){return{x1:e.x[n],y1:e.y[t],x2:e.x[i],y2:e.y[r]}}}function Ee(e){return(typeof e==`number`||e==null)&&(e=[e??0]),{t:e[0],r:e[1]??e[0],b:e[2]??e[0],l:e[3]??e[1]??e[0]}}let De={\"link:line\":[pe,{stroke:!0}],\"link:curve\":[me,{stroke:!0}],\"link:area\":[ge,{fill:!0}],\"link:curve-area\":[he,{fill:!0}],\"link:step-area-start\":[G(`start`,`area`),{fill:!0}],\"link:step-area\":[G(`mid`,`area`),{fill:!0}],\"link:step-area-end\":[G(`end`,`area`),{fill:!0}],\"link:step-start\":[G(`start`,`line`),{stroke:!0}],\"link:step\":[G(`mid`,`line`),{stroke:!0}],\"link:step-end\":[G(`end`,`line`),{stroke:!0}],\"mark:circle\":[H((e,{style:{size:t}})=>{let n=(t??5)/2;e.moveTo(n,0),e.arc(0,0,n,0,Math.PI*2)}),{stroke:!0,fill:!0}],\"mark:minus\":[H((e,{style:{size:t}})=>{let n=(t??5)/2;e.moveTo(-n,0),e.lineTo(n,0)}),{stroke:!0,fill:!1}],\"mark:triangle\":[H((e,{style:{size:t}})=>{let n=(t??5)/2;e.moveTo(0,-n),e.lineTo(+n*Math.sqrt(3)/2,n/2),e.lineTo(-n*Math.sqrt(3)/2,n/2),e.closePath()}),{stroke:!0,fill:!0}],\"mark:square\":[H((e,{style:{size:t}})=>{t=(t??5)/2*Math.sqrt(2),e.rect(-t/2,-t/2,t,t)}),{stroke:!0,fill:!0}],\"mark:diamond\":[H((e,{style:{size:t}})=>{t??=5,e.moveTo(0,-t/2),e.lineTo(t/2,0),e.lineTo(0,t/2),e.lineTo(-t/2,0),e.closePath()}),{stroke:!0,fill:!0}],\"mark:star\":[H((e,{style:{size:t}})=>{t??=5;let n=t/2,r=n*.4;for(let t=0;t<10;t++){let i=t%2==0?n:r,a=Math.PI/5*t-Math.PI/2,o=i*Math.cos(a),s=i*Math.sin(a);t===0?e.moveTo(o,s):e.lineTo(o,s)}e.closePath()}),{stroke:!0,fill:!0}],\"mark:plus\":[H((e,{style:{size:t}})=>{t??=5,e.moveTo(-t/2,0),e.lineTo(t/2,0),e.moveTo(0,-t/2),e.lineTo(0,t/2)}),{stroke:!0}],\"mark:cross\":[H((e,{style:{size:t}})=>{t=(t??5)/2*Math.sqrt(2),e.moveTo(-t/2,-t/2),e.lineTo(t/2,t/2),e.moveTo(-t/2,t/2),e.lineTo(t/2,-t/2)}),{stroke:!0}],\"mark:path\":[H((e,{style:{path:t,size:n,scale:r,origin:i}})=>{let a=new DOMMatrix().scale(r??1).scale(n??5).translate(-(i?.[0]??0),-(i?.[1]??0));e.addPath(new Path2D(t),a)}),{stroke:!0,fill:!0}],\"mark:line\":[H((e,{l:t})=>{e.moveTo(0,0),e.lineTo(t,0)},[`min`,`max`]),{stroke:!0}],\"mark:box\":[H((e,{l:t,style:{size:n,radius:r,padding:i}})=>{n??=5;let a=Ee(i),o=-a.l,s=-(a.t+n/2),c=a.l+t+a.r,l=a.t+n+a.b;r&&r>0?e.roundRect(o,s,c,l,r):e.rect(o,s,c,l)},[`min`,`max`]),{stroke:!0,fill:!0}],\"mark:section\":[H((e,{l:t,style:{size:n}})=>{n??=5,e.moveTo(0,-n/2),e.lineTo(0,n/2),e.moveTo(0,0),e.lineTo(t,0),e.moveTo(t,-n/2),e.lineTo(t,n/2)},[`min`,`max`]),{stroke:!0}],\"mark:icon\":[U,{fill:!0}],\"mark:text\":[U,{fill:!0}]};var Oe=class extends M{updateOptions(e){super.updateOptions(e)}#e=S(0);#t={};render(e){super.render(e),this.#n(e),this.#r(e)}#n(e){let t=this.#e.neq(e.timeAxis.current.resolution);if(this.#e=e.timeAxis.current.resolution.clone(),e.options.series)for(let n in e.options.series){let r=e.options.series[n],i=r.track??e.tracks[0].id,a=e.tracks.find(e=>e.id===i),{data:o,meta:s,revision:c}=e.dataCaches[`series:${n}:chart`];if(this.#t[n]&&!t&&this.#t[n].revision===c&&this.#t[n].trackId===i)continue;this.#t[n]={time:e.timeAxis.current.range[0],trackId:i,revision:c,linkOps:[],markOps:[]};let l=s.color,u=[],d=R(a.symmetric,r.data.scale===`log`,s);if(d){for(let e=0;e<o.length;e++){let t=o[e].time,r=o[e].value,i={x:{},y:{zero:a.y(0)}};for(let e in t)i.x[e]=t[e].sub(this.#t[n].time).div(this.#e,3).number();for(let e in r)i.y[e]=a.y(d(r[e]));u.push(i);for(let t of o[e].marks){if(!t)continue;let e={color:l,...t.style??{}},[r,a]=De[`mark:${t.draw}`],{path:o,strokeStyle:s,fillStyle:c,postFillStyle:u}=r?.([i],t.using,e)??{};this.#t[n].markOps||(this.#t[n].markOps=[]),this.#t[n].markOps.push({type:`mark`,draw:t.draw,time:this.#t[n].time,path:o,style:{...e,strokeStyle:s,fillStyle:c,postFillStyle:u,...a}})}}for(let e of s.links??[]){if(!e)continue;let t={color:l,...e.style??{}},[r,i]=De[`link:${e.draw}`],{path:a,strokeStyle:o,fillStyle:s}=r?.(u,e.using,t)??{};this.#t[n].linkOps||(this.#t[n].linkOps=[]),this.#t[n].linkOps.push({type:`link`,draw:e.draw,time:this.#t[n].time,path:a,style:{...t,strokeStyle:o,fillStyle:s,...i}})}}}}#r(e){if(!e.options.series)return;let t={};for(let n in this.#t){let r=this.#t[n];t[r.trackId]||(t[r.trackId]={});let i=r.time.sub(e.timeAxis.current.time??e.timeAxis.now).div(this.#e,3).number()+e.timeAxis.axisLength[0];for(let e of r.linkOps){let n=e.draw.includes(`area`)?`link:fill`:`link:stroke`;t[r.trackId][n]||(t[r.trackId][n]=[]),t[r.trackId][n].push({...e,ox:i,oy:0})}for(let e of r.markOps){let n=`marks`;t[r.trackId][n]||(t[r.trackId][n]=[]),t[r.trackId][n].push({...e,ox:i,oy:0})}}for(let n of e.tracks)P(e,n,()=>{let r=e.ctx;for(let i of fe){if(!t?.[n.id]?.[i])continue;let a=t[n.id][i];for(let t of a)r.save(),r.translate(t.ox,t.oy),t.path instanceof Path2D?ke(e,t.path,t.style):t.path&&(je(e,t.path,t.style),Ae(e,t.path,t.style)),r.restore()}})}};function ke({ctx:e},t,n){!t||!(t instanceof Path2D)||(n.fill&&!n.fillPost&&n.fillStyle&&(e.fillStyle=n.fillStyle,e.fill(t)),n.stroke&&n.strokeStyle&&(n.lineWidth??1)>0&&(e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=n.strokeStyle,e.lineWidth=n.lineWidth??1,n.lineDashArray&&(e.setLineDash(n.lineDashArray),e.lineDashOffset=n.lineDashOffset??0),e.stroke(t)),n.fill&&n.fillPost&&n.fillStyle&&(e.fillStyle=n.fillStyle,e.fill(t)))}function Ae({ctx:e},t,n){if(n.text){e.translate(n.offset?.[0]??0,n.offset?.[1]??0),e.font=`${n.fontWeight??`normal`} ${n.size??14}px ${n.fontFamily??`sans-serif`}`,e.textAlign=n.textAlign??`center`,e.textBaseline=n.textBaseline??`middle`;for(let r of t)e.save(),e.translate(r.x,r.y),n.angle&&e.rotate(n.angle/180*Math.PI),(n.textOutline||n.textOutlineColor!==void 0||n.textOutlineWidth!==void 0)&&(e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=n.textOutlineColor??`white`,e.lineWidth=n.textOutlineWidth??2,e.strokeText(n.text??``,0,0)),e.fillStyle=K(n.textColor??n.color??`black`,n.textOpacity??1),e.fillText(n.text??``,0,0),e.restore()}}function je({ctx:e},t,n){if(n.icon){e.translate(n.offset?.[0]??0,n.offset?.[1]??0),e.font=`${n.iconFontWeight??`normal`} ${n.size??16}px ${n.iconFontFamily??`icons`}`,e.textAlign=n.iconAlign??`center`,e.textBaseline=n.iconBaseline??`middle`;for(let r of t)e.save(),e.translate(r.x,r.y),n.angle&&e.rotate(n.angle/180*Math.PI),(n.iconOutline||n.iconOutlineColor!==void 0||n.iconOutlineWidth!==void 0)&&(e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=n.iconOutlineColor??`white`,e.lineWidth=n.iconOutlineWidth??2,e.strokeText(n.icon??``,0,0)),e.fillStyle=K(n.iconColor??n.color??`black`,n.iconOpacity??1),e.fillText(n.icon??``,0,0),e.restore()}}var Me=class{values;constructor(...e){this.values=e}clone(){return new this.constructor(...this.values)}get length(){return this.values.length}set(...e){return this.values=e,this}add(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]+=e[t];return this}sub(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]-=e[t];return this}scale(e){for(let t=this.length-1;t>=0;t--)this.values[t]*=e;return this}get norm(){return Math.sqrt(this.values.reduce((e,t)=>e+t**2,0))}normalize(){let e=this.norm;return e?this.scale(1/e):this}distanceTo(e){return this.clone().sub(e).norm}},J=class extends Me{get x(){return this.values[0]}set x(e){this.values[0]=e}get y(){return this.values[1]}set y(e){this.values[1]=e}toJSON(){return{x:this.x,y:this.y}}};function Ne(e,t,n){let r=0,i=e.length;for(;r<i;){let a=r+i>>1,o=n(e[a]);o!=null&&S(o).lt(t)?r=a+1:i=a}return r}function Pe(e,t,n){let r=0,i=e.length;for(;r<i;){let a=r+i>>1,o=n(e[a]);o!=null&&S(o).le(t)?r=a+1:i=a}return r}function Fe(e,[t,n],r){let i=t===void 0?0:Ne(e,t,r),a=n===void 0?e.length:Ne(e,n,r);return i<a?[i,a]:[0,0]}function Ie(e,t){let n=(e,t,n,r)=>Math.min(t,r)-Math.max(e,n),r=n(e.point.x,e.point.x+e.box.width+2,t.point.x,t.point.x+t.box.width+2),i=n(e.point.y,e.point.y+e.box.height+2,t.point.y,t.point.y+t.box.height+2);return r<=0||i<=0?null:{w:r,h:i,d:Math.hypot(r,i)}}function Le(e,t,n){let r=0,i=0,a=new J(0,0);do{r=0;let i=e.map(e=>({...e,force:(e?.force??new J(.01*e.id,0)).set(.01*e.id,0)}));for(let e=0;e<i.length;e++)for(let t=e+1;t<i.length;t++){let n=i[e],r=i[t];if(n===r||n.sideX!==r.sideX)continue;let o=Ie(n,r);if(o)if(n.point.distanceTo(r.point)===0){let e=[0,o.h/2];n.force.sub(e),r.force.add(e)}else{let e=a.set(...r.point.values).sub(n.point).normalize(),t=[o.w/2*e.x,o.h/2*e.y];n.force.sub(t),r.force.add(t)}}i.forEach(e=>{let t=a.set(e.point.x,0);e.force.sub(t.normalize().scale(.2))});for(let e=0;e<i.length;e++){let a=i[e];a.point.add(a.force),a.point.x<0&&(a.force.x+=a.point.x,a.point.x-=a.point.x),a.point.y-a.box.height/2<0+t&&(a.force.y+=a.point.y-a.box.height/2-t,a.point.y-=a.point.y-a.box.height/2-t),a.point.y+a.box.height/2+1>n&&(a.force.y+=a.point.y+a.box.height/2+1-n,a.point.y-=a.point.y+a.box.height/2+1-n),r+=a.force.norm**2}}while(r>1&&i++<100);return i<100}var Re=class extends M{postRender(e){super.postRender(e),this.#t(e)}#e(e,t){if(!e)return;let n=Pe(e,t,e=>e.time.time);if(0<n&&n<=e.length)return e[n-1]}#t(e){if(e.timeAxis.animating||!e.options.series)return;let t=e.timeAxis.cursor.time??S(Date.now()/1e3);F(e,(n,r)=>{let i=e.ctx,a=[],o=1;i.textBaseline=`middle`,i.textAlign=`left`;for(let n of r.seriesKeys){let s=e.options.series?.[n];if(!s)throw Error(`Invalid series`);if(s.tooltip===!1)continue;let{data:c,meta:l}=e.dataCaches[`series:${n}:instantaneous`];if(!l)continue;let u=R(r.symmetric,s.data.scale===`log`,l);if(!u)continue;let d=this.#e(c,t);if(!d)continue;let f=d.time.time;if(!f)continue;let p=e.timeAxis.p(f),m=d.value,h=d.text,g=i.measureText(h),_=l.color;if(m==null)continue;let v=r.y(u(m));a.push({id:a.length,cx:p,cy:v,point:new J(0,v),color:_,metrics:g,sideX:o,text:{dx:6,dy:0,value:h},box:{dx:.5,dy:.5-g.fontBoundingBoxAscent-2,width:12+g.width,height:4+g.fontBoundingBoxAscent+g.fontBoundingBoxDescent}}),o=-o}Le(a,e.chart.oy,e.chart.oy+e.chart.height);for(let e of a)e.point.x=e.cx+e.sideX*(e.point.x+20);for(let{cx:e,cy:t,point:n,color:r}of a)i.beginPath(),i.moveTo(e,t),i.lineTo(n.x,n.y),i.strokeStyle=`white`,i.lineWidth=3,i.stroke(),i.strokeStyle=r,i.lineWidth=1,i.setLineDash([3]),i.stroke(),i.setLineDash([]);for(let{cx:e,cy:t,point:n,sideX:r,text:o,color:s,box:c}of a)i.beginPath(),i.arc(e,t,3,0,Math.PI*2),i.fillStyle=s,i.fill(),i.strokeStyle=`white`,i.stroke(),i.beginPath(),i.roundRect(n.x+c.dx,n.y+c.dy,c.width*r,c.height,4),i.shadowBlur=3,i.shadowColor=`black`,i.shadowOffsetX=0,i.shadowOffsetY=1,i.fillStyle=s,i.fill(),i.shadowBlur=0,i.shadowColor=`transparent`,i.shadowOffsetX=0,i.shadowOffsetY=0,i.lineWidth=1,i.strokeStyle=`white`,i.stroke(),i.textBaseline=`middle`,i.textAlign=r<0?`right`:`left`,i.fillStyle=`white`,i.fillText(o.value,n.x+r*o.dx,n.y+o.dy)})}};function ze(e,t={}){return{font:`${e?.fontWeight??t?.fontWeight??`normal`} ${e?.fontSize??t?.fontSize??`12px`} \"${e?.fontFamily??t?.fontFamily??`BIZ UDPGothic`}\"`,color:e?.color??t?.color}}var Be=class extends M{render(e){super.render(e),F(e,()=>{this.#t(e)})}preRender(e){super.preRender(e),F(e,()=>{this.#e(e)})}#e(e){let t=e.ctx,{width:n}=e.size,r=e.renderingTrack.axisY,i=e.renderingTrack.id,a=I(e.options.tracks?.[i].timeAxis,{});if(!a)return;let o=e.dataCaches[`tracks:${i}:timeAxis`]?.data;o&&(t.beginPath(),a.axis!==!1&&(t.strokeStyle=(typeof a.axis==`object`?a.axis.color:void 0)||`#3333`,t.moveTo(0,r+.5),t.lineTo(n,r+.5)),t.strokeStyle=(a.ticks!==!1&&typeof a.ticks==`object`?a.ticks.color:void 0)||`#3333`,o.forEach(n=>{if(!n.tick)return;let i=e.timeAxis.p(n.time.time);a.ticks!==!1&&(t.moveTo(i,r-(n.major?10:5)),t.lineTo(i,r+(e.symmetric?n.major?10:5:0)))}),t.stroke())}#t(e){let t=e.ctx,n=e.renderingTrack.axisY+2,r=e.renderingTrack.id,i=I(e.options.tracks?.[r].timeAxis,{});if(!i)return;let a=e.dataCaches[`tracks:${r}:timeAxis`]?.data;if(!a||i.labels===!1)return;let o=ze(i.labels);t.fillStyle=o?.color??`black`,t.font=o?.font,t.textAlign=`center`,t.textBaseline=`top`,a.forEach(r=>{let i=e.timeAxis.p(r.time.time);r.text!==void 0&&t.fillText(r.text,i,n)})}};let Y={z:0,r:S(1)};function Ve(e){return Y.r.eq(e)?Y.z:-e.log(k.base).number()}function X(e){return Y.z===e?Y.r:(Y.z=e,Y.r=S(k.base).pow(-e,BigInt(Math.floor(e))),Y.r)}function He(e,t){return t?t.reduce((t,n)=>Math.abs(n-e)<Math.abs(t-e)?n:t,t[0]):Number(S(e).floorBy(k.chunkStep).toFixed(2))}function Ue(e,t,n=k.defaultChunkSize){let r=X(t),i=r.mul(n);if(!e[0]||!e[1]||!i.isPositive())return[{id:`z${t}`,seq:0n,expires:1/0,range:e,resolution:r,zoom:t}];let a=[],o=e[1].add(i);for(let n=e[0];n.le(o);n=n.add(i)){let e=n.div(i).floor().integer(),o=[i.mul(e),i.mul(e+1n)],s=`z${t}:seq${e}`;a.push({id:s,seq:e,expires:1/0,range:o,resolution:r,zoom:t})}return a}function We(e,t){return t===void 0?e:e===void 0||t.lt(e)?t:e}function Ge(e,t){return t===void 0?e:e===void 0?t:e.gt(t)?e:t}function Ke(e,t){return(!e[0]||!t[1]||e[0].le(t[1]))&&(!t[0]||!e[1]||t[0].le(e[1]))}var qe=class extends j{#e={};#t=[];#n;#r;#i;#a;#o;#s;#c={};#l;constructor(e){super(),this.#n=e.loader,this.#r=e.instantValue??!1,this.#i=e.instantZoomLevel,this.#a=e.immediate??!1,this.#s=e.zoomLevels,this.#o=e.chunkSize===null?0:e.chunkSize??k.defaultChunkSize,this.#l=e.name}updateOptions(e){this.#n=e.loader,this.#r=e.instantValue??!1,this.#i=e.instantZoomLevel,this.#a=e.immediate??!1,this.#s=e.zoomLevels,this.#o=e.chunkSize===null?0:e.chunkSize??k.defaultChunkSize,this.#l=e.name}#u(e,t){if(e.id in this.#e&&t){try{this.#t=this.#p(e.range,this.#t,t)??this.#t}catch(e){console.error(e)}this.changed(),this.dispatchEvent(`datachanged`)}}#d=!1;#f(e,t){let n={...this.#e};for(let e of t)delete n[e.id];for(let e in n)this.#d=!0,delete this.#e[e];!e.timeAxis.animating&&!e.timeAxis.editing&&this.#d&&(this.#d=!1,this.#t=this.#h(Object.values(this.#e),this.#t)??this.#t,this.changed(),this.dispatchEvent(`datachanged`))}#p(e,t,n){let[r,i]=Fe(t,e,e=>e.time._minTime??e.time.time);return[...t.slice(0,r),...n.filter(e=>e.time._minTime??e.time.time),...t.slice(i)].toSorted((e,t)=>{let n=e.time._minTime??e.time.time,r=t.time._maxTime??t.time.time;return n==null||r==null?0:n.lt(r)?-1:n.gt(r)?1:0})}#m=[S(0),S(0)];get window(){return this.#m}#h(e,t){let[n,r]=e.reduce((e,t)=>{let n=t.range[0],r=t.range[1];return[We(e[0],n),Ge(e[1],r)]},[void 0,void 0]);if(!n||!r)return t;let i=[n,r];return this.#m=i,t.filter(e=>Ke([e.time._minTime??e.time.time,e.time._maxTime??e.time.time],i))}#g(e,t){return t=He(t,this.#s),Ue(e,t,this.#o).map(e=>this.#e[e.id]??e)}update(e){if(this.#r){let t=e.timeAxis.committing.time??e.timeAxis.now,n=this.#i??e.timeAxis.committing.zoom.number(),r=X(n).mul(this.#o).div(2),i=[t.sub(r),t.add(r)];this.#_(e,i,n)}else if(this.#a){let t=e.timeAxis.current.zoom?.number()??0;this.#_(e,e.timeAxis.current.range,t)}else{let t=e.timeAxis.committing.zoom?.number()??0;this.#_(e,e.timeAxis.committing.range,t)}}#_(e,t,n){let r=this.#g(t,n),i=Date.now();r.forEach(e=>{this.#e[e.id]&&i<=e.expires||(this.#e[e.id]=e,this.#d=!0,e.expires=1/0,e._loading=!0,this.#n(e).then(t=>{e._loading=!1,e.expires=t?.expires??e.expires,this.#u(t,t.data)}))}),this.#f(e,r)}get data(){return this.#t}invalidate(){this.#e={},this.#d=!0}get meta(){return this.#c}updateMeta(e){this.#c=e,this.changed(),this.dispatchEvent(`metachanged`)}get name(){return this.#l}};function Z(e){if(e==null||C(e))return e;if(typeof e==`string`){let t=Date.parse(e);if(Number.isNaN(t))throw Error(`Parse error as Date`);return S(t/1e3)}return e instanceof Date?S(e.getTime()/1e3):S(e)}function Je(e){return e.map(Z)}let Ye=globalThis.requestAnimationFrame??(e=>setTimeout(e,0)),Xe=globalThis.cancelAnimationFrame??(e=>clearTimeout(e));var Ze=class{#e=null;#t;start(e){e={animation:`in-out`,duration:500,...e},this.cancel(),this.#t=()=>e.done?.(e.target());let t=e.overshoot??0,n=e.duration??500,r=performance.now(),i=e.animation?{linear:e=>e,\"in-out\":e=>e*e*e*(e*(e*6-15)+10),out:e=>1+(t+1)*(e-1)**3+t*(e-1)**2}[String(e.animation)]:null;if(!i||e.origin()===e.target()){this.done();return}let a=()=>{let t=performance.now()-r;if(t<n){let r=i(t/n),o=e.origin()*(1-r)+e.target()*r;e.update(o,r),this.#e=Ye(a)}else this.done()};this.#e=Ye(a)}done(){this.cancel(),this.#t?.()}cancel(){this.#e&&=(Xe(this.#e),null)}get animating(){return this.#e!==null}};function Q(e,t,n){let r=e??n;if(t[0]!==void 0){let e=t[0]??n;if(r.lt(e))return t[0]}if(t[1]!==void 0){let e=t[1]??n;if(r.gt(e))return t[1]}return e}var $=class extends j{#e;#t={id:void 0,value:null,nullValue:S(0),committed:null,committing:null,current:null,candidate:null,domain:[void 0,void 0],editing:!1,animating:!1,cursorMode:`current`,updated:!1};#n=new Ze;#r;get candidate(){return this.#t.candidate}get value(){return this.#t.value}get committing(){return this.#t.committing}parseValue(e){return S(e)}setValue(e,t){t??=!1;let n=this.parseValue(e);if(this.#t.value===n||n&&this.#t.value?.eq(n))return;let r=typeof t==`object`?t:{animation:t};this.begin(n),this.commit(r)}get committed(){return this.#t.committed}get current(){return this.#t.current}get domain(){return this.#t.domain}set domain(e){let t=e.map(e=>S(e));this.#t.domain=t,this.restore(),this.#c(),this.setValue(Q(this.value,t,this.#t.nullValue)),this.changed()}get editing(){return this.#t.editing}get animating(){return this.#t.animating}get cursor(){return this.#t.cursorMode===`current`?this.#t.current:this.#t.committing}constructor(e={initialValue:0}){super(),e.domain&&(this.#t.domain=e.domain.map(e=>S(e))),e.onNull&&(this.#r=e.onNull,this.#c()),this.#e=e.lazy??!1;let t=Q(S(e.initialValue),this.#t.domain,this.#t.nullValue);this.#t.value=t,this.#t.committed=t,this.#t.current=t,this.#t.candidate=t,this.#t.committing=t}handleSyncEvent(e){switch(e.type){case`begin`:this.#i(e);break;case`update`:this.#a(e);break;case`commit`:this.#o(e);break;case`restore`:this.#l(e);break;case`set:nullvalue`:this.#s(e);break}}begin(e){this.#c(),e===void 0&&(e=this.#t.current);let t=Q(e,this.#t.domain,this.#t.nullValue),n={type:`begin`,candidate:t};this.dispatchEvent(new A(`sync`,n)),this.dispatchEvent(new A(`valuechanging`,t)),this.#i(n)}#i({candidate:e}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.editing=!0,this.#t.updated=!1,this.#t.candidate=e,this.dispatchEvent(new A(`valuechanging`,e)),this.changed()}update(e){this.#c();let t=this.#t.nullValue,n=Q(e,this.#t.domain,t),r={type:`update`,candidate:n,current:(e??t).sub(this.#t.current??t).mul(n===e?1:.5).add(this.#t.current??t)};this.dispatchEvent(new A(`sync`,r)),this.#a(r)}#a({candidate:e,current:t}){this.#t.editing=!0,this.#t.updated=!0,this.#t.candidate=e,this.#t.current=t,this.dispatchEvent(new A(`valuechanging`,e)),this.changed()}commit(e={}){this.#c();let t=e.value===void 0?this.#t.candidate:e.value,n=t,r=Q(t,this.#t.domain,this.#t.nullValue),i=e.animation===void 0?this.#t.updated?`current`:`target`:this.#t.cursorMode,a={type:`commit`,targetValue:r,animation:e.animation===void 0?this.#t.editing?`out`:`in-out`:e.animation,duration:e.duration??500,cursorMode:i,divergentValue:n,lazy:e.lazy??this.#e};this.dispatchEvent(new A(`sync`,a)),this.#o(a)}#o({targetValue:e,divergentValue:t,animation:n,duration:r,cursorMode:i,lazy:a}){let o=()=>{this.#t.value=e,this.#t.editing=!1,this.changed(),this.dispatchEvent(new A(`valuechanging`,this.#t.value)),this.dispatchEvent(new A(`valuechanged`,this.#t.value))},s=this.#t.current??this.#t.nullValue,c=e??this.#t.nullValue,l=t??this.#t.nullValue,u=0;c.neq(l)&&l.neq(s)&&(u=3*(l.sub(s).div(c.sub(s)).number()-1)/2),this.#t.cursorMode=i,this.#t.candidate=e,this.#t.committing=e,a||o();let d=c.eq(s)?0:1;this.#t.animating=!0,this.#n.start({origin:()=>0,target:()=>d,update:t=>{this.#c(),this.#t.animating=!0;let n=(e??this.#t.nullValue).sub(s).mul(t).add(s);this.#t.current=n,this.changed()},done:()=>{this.#t.animating=!1,this.#t.current=e,a&&o(),this.#t.committed=e,this.changed()},animation:n,duration:r,overshoot:u})}#s({nullValue:e}){this.#t.nullValue=e}#c(){if(!this.#r)return;let e=this.parseValue(this.#r())??this.#t.nullValue;this.#t.nullValue=e}toString(){return JSON.stringify(this)}toJSON(){return{value:this.value,candidate:this.candidate,committed:this.committed,committing:this.committing,current:this.current,editing:this.editing,animating:this.animating}}#l({value:e,domain:t}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.value=e,this.#t.candidate=e,this.#t.committed=e,this.#t.committing=e,this.#t.current=e,this.#t.editing=!1,this.#t.animating=!1,this.#t.domain=t}restore(){let e={type:`restore`,value:this.value,domain:this.#t.domain};this.dispatchEvent(new A(`sync`,e)),this.#l(e)}},Qe=class extends j{time;zoom;constructor(e){super(),this.time=new $,this.zoom=new $,this.time=new $({initialValue:Z(e.time??null),domain:Je(e.timeRange??[void 0,null]),onNull:()=>Date.now()/1e3}),this.zoom=new $({initialValue:e.zoom??0,domain:e.zoomRange}),this.time.on(`change`,()=>this.changed()),this.zoom.on(`change`,()=>this.changed()),this.time.on(`valuechanging`,e=>this.dispatchEvent(new A(`timechanging`,e.value))),this.time.on(`valuechanged`,e=>this.dispatchEvent(new A(`timechanged`,e.value))),this.zoom.on(`valuechanging`,e=>this.dispatchEvent(new A(`zoomchanging`,e.value.number()))),this.zoom.on(`valuechanged`,e=>this.dispatchEvent(new A(`zoomchanged`,e.value.number())))}setTime(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??=`out`;try{this.time.setValue(Z(e),t)}catch{return!1}return!0}setTimeRange(e){this.time.domain=Je(e??[void 0,null])}setZoom(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??={animation:`linear`,duration:200,lazy:this.zoom.value.lt(e)};try{this.zoom.setValue(S(e),t)}catch{return!1}return!0}setZoomRange(e){this.zoom.domain=(e??[void 0,void 0]).map(S)}},$e=class{decay;minVelocity;delay;points=[];angle_=0;distance_=0;constructor(e=.005,t=.05,n=100){this.decay=e,this.minVelocity=t,this.delay=n}begin(){this.points=[]}update(e,t){let n=Date.now();this.points.push({x:e,y:t,t:n});let r=n-this.delay;for(;this.points.length>1&&this.points[0].t<r;)this.points.shift()}end(){let e=this.points.length;if(e<2)return!1;let t=Date.now()-this.delay,n=this.points[e-1];if(n.t<t)return!1;for(;this.points.length>1&&this.points[0].t<t;)this.points.shift();let r=this.points[0];if(n.t<Date.now()-this.delay)return!1;let i=n.x-r.x,a=n.y-r.y,o=n.t-r.t;return o<1e3/60?!1:(this.distance_=Math.sqrt(i*i+a*a)/o/this.decay,this.angle_=Math.atan2(a,i),!0)}getDistance(){return this.distance_}getAngle(){return this.angle_}},et=class extends j{#e;#t={cursorMode:`center`,axisLength:[0,0],disabled:!1,dragging:!1,pinch:null};#n=new $e;constructor(e={}){super(),this.#e=new Qe(e);let{time:t,zoom:n}=this.#e;t.on(`change`,()=>this.changed()),t.on(`valuechanged`,e=>this.dispatchEvent(new A(`timechanged`,e.value))),t.on(`valuechanging`,e=>this.dispatchEvent(new A(`timechanging`,e.value))),t.on(`sync`,e=>this.dispatchEvent(new A(`sync`,{time:e.value}))),n.on(`change`,()=>this.changed()),n.on(`valuechanged`,e=>this.dispatchEvent(new A(`zoomchanged`,e.value.number()))),n.on(`valuechanging`,e=>this.dispatchEvent(new A(`zoomchanging`,e.value.number()))),n.on(`sync`,e=>this.dispatchEvent(new A(`sync`,{zoom:e.value}))),t.on(`valuechanged`,()=>this.dispatchEvent(`viewchanged`)),n.on(`valuechanged`,()=>this.dispatchEvent(`viewchanged`)),t.on(`valuechanging`,()=>this.dispatchEvent(`viewchanging`)),n.on(`valuechanging`,()=>this.dispatchEvent(`viewchanging`))}z(e){return S(Ve(e))}r(e){return X(e.number())}p(e,t){if(Array.isArray(e))return e.map((e,t)=>this.p(e,t));if(e===void 0)return t===0?-100:this.#t.axisLength[0]+this.#t.axisLength[1]+100;let n=this.r(this.#e.zoom.current),r=this.#e.time.current??this.now,i=e??this.now;return S(i).sub(r).div$(n,3).number()+this.#t.axisLength[0]}t(e){if(Array.isArray(e))return e.map(e=>this.t(e));let t=this.r(this.#e.zoom.current),n=this.#e.time.current??this.now;return t.mul(e-this.#t.axisLength[0]).add(n).round(t.digits)}set disabled(e){this.#t.disabled=e}get disabled(){return this.#t.disabled}get editing(){return this.#e.time.editing||this.#e.zoom.editing}get dragging(){return this.#t.dragging}get animating(){return this.#e.time.animating||this.#e.zoom.animating}get current(){return{time:this.#e.time.current,zoom:this.#e.zoom.current,resolution:this.r(this.#e.zoom.current),range:this.rangeFor(this.#e.time.current,this.#e.zoom.current),p:this.p(this.#e.time.current)}}get candidate(){return{time:this.#e.time.candidate,zoom:this.#e.zoom.candidate,resolution:this.r(this.#e.zoom.candidate),range:this.rangeFor(this.#e.time.candidate,this.#e.zoom.candidate),p:this.p(this.#e.time.candidate)}}get value(){return{time:this.#e.time.value,zoom:this.#e.zoom.value,resolution:this.r(this.#e.zoom.value),range:this.rangeFor(this.#e.time.value,this.#e.zoom.value),p:this.p(this.#e.time.value)}}get committing(){return{time:this.#e.time.committing,zoom:this.#e.zoom.committing,resolution:this.r(this.#e.zoom.committing),range:this.rangeFor(this.#e.time.committing,this.#e.zoom.committing),p:this.p(this.#e.time.committing)}}get committed(){return{time:this.#e.time.committed,zoom:this.#e.zoom.committed,resolution:this.r(this.#e.zoom.committed),range:this.rangeFor(this.#e.time.committed,this.#e.zoom.committed),p:this.p(this.#e.time.committed)}}get cursor(){return{time:this.#e.time.cursor,p:this.p(this.#e.time.cursor)}}get range(){return{time:this.#e.time.domain,p:this.p(this.#e.time.domain)}}rangeFor(e,t){return[(e??this.now).sub(this.r(t).mul(this.#t.axisLength[0])),(e??this.now).add(this.r(t).mul(this.#t.axisLength[1]))]}#r(e){this.#e.time.begin(this.t(e)),this.#n.begin()}#i(e,t){this.#e.time.update(this.t(this.current.p-t)),this.#n.update(e,0)}#a(){if(this.#n.end()){let e=this.#n.getDistance(),t=this.#n.getAngle(),n=e*Math.cos(t);this.#e.time.commit({value:this.t(this.current.p-n)})}else this.#e.time.commit()}click(e){this.#e.time.begin(this.t(e)),this.#e.time.commit()}dragStart(e){this.disabled||(this.#r(e),this.#t.dragging=!0)}dragUpdate(e,t){!this.#t.dragging||this.disabled||this.#i(e,t)}dragEnd(){!this.#t.dragging||this.disabled||(this.#a(),this.#t.dragging=!1)}dragCancel(){this.#t.dragging=!1}pinchStart(e,t){if(!this.disabled){if(this.#e.time.update(this.#e.time.current),this.#t.pinch={anchorTime:[this.t(e),this.t(t)]},this.#t.pinch.anchorTime[0].eq(this.#t.pinch.anchorTime[1])){this.#t.pinch=null;return}this.#e.zoom.begin(this.#e.zoom.current)}}pinchUpdate(e,t){if(this.disabled)return;if(!this.#t.pinch)return this.pinchStart(e,t);let n=this.#t.pinch.anchorTime[0],r=this.#t.pinch.anchorTime[1];if(Math.abs(t-e)>2){let i=r.sub(n).div(t-e).abs(),a=this.z(i);this.#e.zoom.update(a)}}pinchEnd(){this.disabled||this.#t.pinch&&(this.#t.pinch=null,this.#e.zoom.commit({animation:`linear`,duration:200}))}setAxisLength(e){this.#t.axisLength=e,this.changed(),this.dispatchEvent(`viewchanged`),this.dispatchEvent(`viewchanging`)}get axisLength(){return this.#t.axisLength}get now(){return S(Date.now()/1e3)}handleSyncEvent(e){e.time&&this.#e.time.handleSyncEvent(e.time),e.zoom&&this.#e.zoom.handleSyncEvent(e.zoom)}},tt=class{id;height;symmetric;oy=0;paddingY=[5,5];labelHeight=0;seriesKeys;constructor(e){this.id=e.id,this.oy=e.oy??0,this.height=e.height??0,this.symmetric=e.symmetric??!1,this.labelHeight=e.labelHeight??0,this.seriesKeys=e.seriesKeys}get chartHeight(){return this.height-this.paddingY[0]-this.paddingY[1]-this.labelHeight}get axisY(){return(this.symmetric?this.chartHeight/2:this.chartHeight)+this.paddingY[0]}y(e){if(e==null||isNaN(e))return NaN;let t=this.symmetric?this.chartHeight/2:this.chartHeight;return this.axisY-t*e}getRenderers(){return[]}};function nt(e,t,n=globalThis.requestAnimationFrame){let r,i,a=ee(e),o=new et;o.on(`change`,()=>v()),o.on(`sync`,e=>a(`sync`,e.value)),o.on(`viewchanging`,()=>u());let s={onPointerEvent:e=>{let t={click:e=>o.click(e),\"drag:start\":e=>o.dragStart(e),\"drag:update\":(e,t)=>o.dragUpdate(e,t),\"drag:end\":()=>o.dragEnd(),\"pinch:start\":(e,t,n)=>o.pinchStart(e,n),\"pinch:update\":(e,t,n)=>o.pinchUpdate(e,n),\"pinch:end\":()=>o.pinchEnd()};if(e.type in t)return t[e.type](e.buttons[0]?.latest.x??0,e.buttons[0]?.delta.x??0,e.buttons[1]?.latest.x??0),!0},pointerStyle:()=>{}},c=[new Be,new Oe,new Re,new ue];c.forEach(e=>{e.on(`change`,()=>v()),e.on(`renderer:event`,t=>a(`renderer:event`,{value:t.value,uid:e.uid}))});let l={ctx:null,options:{},tracks:[],renderingTrack:null,dataCaches:{},chart:{ox:0,oy:0,width:1,height:1,get axisY(){return(l.symmetric?l.chart.height/2:l.chart.height)+l.chart.oy}},size:{width:1,height:1},get symmetric(){return this.renderingTrack?.symmetric??!1},dpr:1,timeAxis:o};async function u(){let e=o.current,t=o.revision;await a(`view:changed`,{time:e.time,zoom:e.zoom.number(),resolution:e.resolution,range:e.range},{rpc:!0}),o.revision===t&&Object.values(l.dataCaches).forEach(e=>d(e).then(()=>v()))}async function d(e){let{revision:t}=e,{resolution:n,zoom:r}=o.value,i=await a(`provider:loadMeta`,{key:e.name,zoom:r.number(),resolution:n},{rpc:!0});e.revision===t&&e.updateMeta(i)}function f(e,t={}){let n={...t,name:e,loader:async t=>await a(`provider:loadChunk`,{key:e,chunk:t},{rpc:!0})};if(l.dataCaches[e]){let t=l.dataCaches[e];return t.updateOptions(n),t.invalidate(),t}let r=new qe(n);return r.on(`change`,()=>v()),r.on(`datachanged`,async()=>u()),r}function p(e){let t={...e.dataCaches};for(let n in e.options.dataCacheOptions)e.dataCaches[n]=f(n,e.options.dataCacheOptions[n]),delete t[n];Object.keys(t).forEach(t=>delete e.dataCaches[t])}function m(e){for(let t of Object.values(e.dataCaches))t.update(e)}let h;function g(){if(!i)return;let e=i.height/l.dpr,t=Object.entries(l.options.tracks??{default:{}}),n=Math.max(0,e-t.reduce((e,[,t])=>e+(t?.height??0),0))/t.filter(([,e])=>e.height==null).length,r=0;l.tracks=t.map(([e,i])=>{let a=i.height??n;return r+=a,new tt({id:e,oy:r-a,height:a,symmetric:i.symmetric??!1,labelHeight:!i.symmetric&&i.timeAxis!==!1&&(typeof i.timeAxis!=`object`||i.timeAxis.labels!==!1)?14:0,seriesKeys:Object.entries(l.options.series??{}).filter(([,n])=>(n.track??t[0][0])===e).map(([e])=>e)})})}te(e,{init:({canvas:e})=>{i=e,r=i?.getContext(`2d`)},fonts:e=>{if(e)for(let n of e)try{let e=typeof n.source==`string`&&n.source.match(/url\\(\"([^\"]+)\"\\) *format\\(\"woff2\"\\)/);if(e&&e?.[1])fetch(e[1]).then(e=>e.arrayBuffer()).then(e=>{let r=new Uint8Array(e),i=new FontFace(n.family,r,n.desc);i.loaded.then(()=>{t?.add(i),v()}),i.load()});else{let e=new FontFace(n.family,n.source,n.desc);e.loaded.then(()=>{t?.add(e),v()}),e.load()}}catch(e){console.error(`Failed to load the font:`,e)}v()},\"options:update\":e=>{ae(l.options,e),e.dataCacheOptions&&p(l),(`tracks`in e||`series`in e)&&g();for(let t of c)t.updateOptions(e);v()},resize:async({size:e,context:t})=>{if(!i)return;let n=t?.dpr??l.dpr??1;i.width=e.width*n,i.height=e.height*n,o.setAxisLength([e.width/2,e.width/2]),l.dpr=n,g(),v()},pointer:async e=>{let t=[...c??[],s],n=(h??t).find(t=>t.onPointerEvent(e,l));return h=e.type===`up`||!n?void 0:[n],!0},cursor:async e=>{let t=[...c??[],s];return(h??t).map(t=>t.pointerStyle(e,l)).find(e=>e)},sync:e=>{o.handleSyncEvent(e)},reload:()=>{for(let e of Object.values(l.dataCaches))e.invalidate();v()}});let _=!1;function v(){_=!0}let y=0,b=0;function x(){y++}function S(){let e=Date.now(),t=(y*1e3/(e-b)).toFixed(1);b+1e3<=e&&(b=e,y=0),r?.clearRect(0,0,60,15),r?.fillText(`FPS: ${t}`,5,10)}function C(e){for(let t of c)r?.save(),e(t),r?.restore()}function w(e){!i||!r||(e.ctx=r,_=!1,m(e),x(),r.reset(),r.scale(e.dpr,e.dpr),C(t=>{t.preRender(e)}),P(e,null,()=>{N(e,o.range.time,`#00000010`)}),C(t=>{t.render(e)}),e.options.indicator!==!1&&P(e,null,()=>le(e)),C(t=>{t.postRender(e)}))}function T(){let e=o.range,t=e.time[0]===null&&0<=e.p[0]&&e.p[0]<l.size.width||e.time[1]===null&&0<=e.p[1]&&e.p[1]<l.size.width;return _||o.value.time===null||t}let E=()=>{n(E),T()&&w(l),l.options.showFps&&S()};n(E),setInterval(()=>u(),1e3)}nt(self,self.fonts)})();"],{type:`text/javascript;charset=utf-8`}));return new Worker(t,e)}function an(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`)return e.toString()===t.toString();if(e&&t&&typeof e==`object`){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!an(e[r],t[r]))return!1;return!0}return!1}function $(e,t,n=new WeakSet){if(e==null)return e;let r=typeof e;if(r===`string`||r===`number`||r===`boolean`||r===`bigint`)return e;if(r===`undefined`||r===`symbol`)return;if(r===`function`)return e.toString();if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||t?.includes(e))return e;if(n.has(e))throw TypeError(`Cannot serialize circular reference`);if(n.add(e),typeof e.toJSON==`function`){let r=e.toJSON();if(r!==e){let i=$(r,t,n);return n.delete(e),i}}if(Array.isArray(e)){let r=Array(e.length);for(let i=0;i<e.length;i++)r[i]=$(e[i],t,n);return n.delete(e),r}if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return n.delete(e),e;let i={};for(let r of Object.keys(e))i[r]=$(e[r],t,n);return n.delete(e),i}function on(e,t,n){e??={},t??={};let r=[],i={...t};for(let a in e)(!i[a]||i[a]!==e[a]&&!an(i[a]?._src,e[a]))&&(t[a]=n(e[a]),t[a]!==e[a]&&(t[a]._src=$(e[a]),r.push(a))),delete i[a];Object.keys(i).forEach(e=>delete t[e])}let sn=[`#080`,`#800`,`#008`,`#880`,`#088`,`#808`],cn={indicator:!0,padding:[5,5,5,5],sources:void 0,series:void 0,tracks:void 0,selection:void 0};var ln=class extends T{#e;call;#t={};#n={};#r={};#i=!1;#a=[];#o=!1;#s=null;#c=0;constructor(e){super(),this.#e=new rn,this.call=be(this.#e),xe(this.#e,{sync:e=>{this.dispatchEvent(new w(`sync`,e,this.uid))},"renderer:event":async e=>{this.dispatchEvent(new w(`renderer:event`,e.value,e.uid))},"provider:loadChunk":async({key:e,chunk:t})=>await this.#r[e]?.loadChunk(t),"provider:loadMeta":async({key:e,zoom:t,resolution:n})=>await this.#r[e].loadMeta({zoom:t,resolution:n}),"view:changed":async e=>{for(let t in this.dispatchEvent(new w(`viewchanged`,e,this.uid)),this.#n)this.#n[t].updateDataRange(e.range,e.zoom);return!0}});let t=e.canvas.transferControlToOffscreen();this.call(`init`,{canvas:t},{transfer:[t]}),this.setFonts(e.fonts)}async setFonts(e){if(e){this.#i=!1,this.#d();let t=await Fe(e);this.call(`fonts`,t);return}this.#i=!0,this.#u(),await this.#p()}[Symbol.dispose](){this.dispose()}dispose(){this.#d(),this.#e.terminate()}setOptions(e){this.#l={},this.updateOptions({...cn,...e})}#l={};updateOptions(e){A(this.#l,e);let t={...e},n=!1;if(`sources`in e&&on(this.#l.sources,this.#t,e=>(n=!0,nn(e))),(n||`series`in e||`tracks`in e)&&(on(this.#l.series,this.#n,e=>(e.data.color||(e.data.color=sn[this.#c++],this.#c%=sn.length),n=!0,$t({sources:this.#t,options:e}))),`tracks`in e&&(n=!0),n)){let e=[...Object.entries(this.#l.tracks??{default:{}}).filter(([,e])=>e.timeAxis!==!1).map(([e,t])=>[`tracks:${e}:timeAxis`,Kt,{timeAxis:t.timeAxis},{immediate:!0}]),...Object.entries(this.#n).flatMap(([e,t])=>{let n={series:t,options:this.#l},r={zoomLevels:t.zoomLevels,chunkSize:t.chunkSize};return[[`series:${e}:chart`,Ve,n,r],[`series:${e}:instantaneous`,Ge,n,{...r,instantValue:!0,instantZoomLevel:t.options.data.instantaneous?.zoom}]]})];t.dataCacheOptions={};let n={...this.#r};for(let[r,i,a,o]of e)this.#r[r]=new i(a),delete n[r],o&&(t.dataCacheOptions[r]=o);Object.keys(n).forEach(e=>delete this.#r[e])}this.call(`options:update`,t)}resize(e){this.call(`resize`,e)}onPointerEvent(e){this.call(`pointer`,e)}async pointerStyle(e){return await this.call(`cursor`,e,{rpc:!0})}sync(e,t){t&&t===this.uid||this.call(`sync`,e)}#u(){if(!this.#i||this.#o||typeof document>`u`)return;this.#o=!0;let e=[],t=document.fonts;if(t&&typeof t.addEventListener==`function`){let n=()=>this.#f();t.addEventListener(`loadingdone`,n),t.addEventListener(`loadingerror`,n),t.addEventListener(`loading`,n),e.push(()=>{t.removeEventListener(`loadingdone`,n),t.removeEventListener(`loadingerror`,n),t.removeEventListener(`loading`,n)})}if(typeof MutationObserver<`u`){let t=new MutationObserver(e=>{for(let t of e){if(t.type===`childList`&&[...Array.from(t.addedNodes??[]),...Array.from(t.removedNodes??[])].some(e=>un(e))){this.#f();return}if(t.type===`attributes`&&un(t.target)){this.#f();return}}});try{let n=document.head??document.documentElement??document;t.observe(n,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`rel`,`href`]}),e.push(()=>t.disconnect())}catch{t.disconnect()}}this.#a=e}#d(){if(this.#o){this.#o=!1;for(let e of this.#a)try{e()}catch{}this.#a=[],this.#s!=null&&(clearTimeout(this.#s),this.#s=null)}}#f(){this.#i&&this.#s==null&&(this.#s=setTimeout(()=>{this.#s=null,this.#p()},0))}async#p(){if(this.#i)try{let e=await Ie();this.call(`fonts`,e.length?e:void 0)}catch(e){console.error(`Failed to resolve document fonts`,e)}}invalidateSources(e){e||=Object.keys(this.#t);for(let t of e)this.#t[t]?.expireChunks();this.call(`reload`,null)}};function un(e){return typeof HTMLStyleElement<`u`&&e instanceof HTMLStyleElement?!0:typeof HTMLLinkElement<`u`&&e instanceof HTMLLinkElement?e.rel?.toLowerCase()===`stylesheet`:!1}var dn=class extends T{#e=null;#t=null;#n=null;#r;#i;#a;get time(){return this.#r.time.value?.clone()??null}set time(e){this.setTime(e)}setTime(e,t){this.#r.setTime(e,t)}get timeRange(){return this.#r.time.domain.map(e=>e==null?e:e.clone())}setTimeRange(e){this.#r.setTimeRange(e)}get zoom(){return this.#r.zoom.value.number()}set zoom(e){this.setZoom(e)}setZoom(e,t){return this.#r.setZoom(e,t)}fitTo(e,t){if(!this.#o.width)return!1;let n=typeof t?.padding==`number`?t.padding*2:Array.isArray(t?.padding)?t.padding.reduce((e,t)=>e+t):0,r=e.map(e=>E(e)),i=pe(r[1].sub(r[0]).div(this.#o.width-n).abs()),a=r[0].add(r[1]).div(2);this.setZoom(i,t?.animation===!1?!1:void 0),this.setTime(a,t?.animation===!1?!1:void 0)}get zoomRange(){return this.#r.zoom.domain.map(e=>e==null?e:e.number())}setZoomRange(e){this.#r.setZoomRange(e)}setSelection(e){if(this.#i.selection===!1)return;let t=e?.map(e=>E(e))??null;this.#t?.updateOptions({selection:{range:t}})}clearSelection(){this.setSelection(null)}get animating(){return this.#r.time.animating}get editing(){return this.#r.time.editing}#o={x:0,y:0,width:0,height:0,dpr:0};get size(){return{...this.#o}}#s=!1;set disabled(e){this.#s=e,this.#n&&(this.#n.disabled=e)}get disabled(){return this.#s}get options(){return this.#i}setOptions(e){this.#i={style:void 0,...e},this.#c(this.#i,!0)}updateOptions(e){A(this.#i,e),this.#c(e,!1)}#c(e,t){!this.#e||!this.#t||(`style`in e&&(this.#e.style.width=e.style?.width??`100%`,this.#e.style.height=e.style?.height??`36px`,this.#e.style.background=e.style?.background??`#fff`),t?this.#t.setOptions(e):this.#t.updateOptions(e),this.#l())}#l(){if(!this.#e||!this.#t)return;let e=window.devicePixelRatio,t=this.#e.getBoundingClientRect();if(this.#o.width===t.width&&this.#o.height===t.height&&this.#o.dpr===e)return;this.#o={x:t.x,y:t.y,width:t.width,height:t.height,dpr:e};let n=this.#o.width,r=this.#o.height;this.#t.resize({size:{width:n,height:r},context:{dpr:e}})}#u(){let e=this.#r.time,t=this.#r.zoom;this.#r.on(`change`,()=>this.changed()),this.#r.on(`timechanging`,e=>this.dispatchEvent(e)),this.#r.on(`timechanged`,e=>this.dispatchEvent(e)),this.#r.on(`zoomchanging`,e=>this.dispatchEvent(e)),this.#r.on(`zoomchanged`,e=>this.dispatchEvent(e)),e.on(`sync`,e=>this.#t?.sync({time:e.value},e.origin)),t.on(`sync`,e=>this.#t?.sync({zoom:e.value},e.origin))}#d(e){if(this.#s)return;e.preventDefault();let t=C.wheelStep;this.#r.setZoom(this.#r.zoom.committing.add(e.deltaY<0?t:-t))}constructor(e){super();let t=e??{};this.#r=new ue(t),this.#u(),this.#i={style:void 0,...t},this.#a=t.fonts??[],t.target&&this.mount(t.target)}reload(e){this.#t?.invalidateSources(e)}mount(e){let t=typeof e==`string`?document.querySelector(e):e;if(!t)throw Error(`mount failed`);return(this.#e||this.#t||this.#n)&&console.warn(`Timescope: mounted twice`),this.#e?.remove(),this.#e=document.createElement(`canvas`),this.#e.style.all=`unset`,this.#e.style.display=`block`,this.#e.style.touchAction=`none`,this.#e.style.width=this.#i.style?.width??`100%`,this.#e.style.height=this.#i.style?.height??`36px`,this.#e.style.background=this.#i.style?.background??`#fff`,this.#t=new ln({canvas:this.#e,fonts:this.#a}),this.#t.setOptions(this.#i),this.#r.time.restore(),this.#r.zoom.restore(),new ResizeObserver(()=>this.#l()).observe(this.#e),this.#t.on(`change`,()=>this.changed()),this.#t.on(`sync`,e=>{e.value.time&&(this.#r.time.handleSyncEvent(e.value.time),this.#r.time.dispatchEvent(new w(`sync`,e.value.time,e.origin))),e.value.zoom&&(this.#r.zoom.handleSyncEvent(e.value.zoom),this.#r.zoom.dispatchEvent(new w(`sync`,e.value.zoom,e.origin)))}),this.#t.on(`renderer:event`,e=>{typeof e.value==`object`&&e.value&&`range`in e.value&&`resizing`in e.value&&this.dispatchEvent(new w(e.value.resizing?`rangechanging`:`rangechanged`,e.value.range,e.origin))}),this.#n=new ve({element:this.#e,transform:e=>e.sub([this.#o.x,this.#o.y]),handler:e=>{this.#t?.onPointerEvent(e)},cursor:async e=>await this.#t?.pointerStyle(e)??void 0}),this.#e.addEventListener(`wheel`,this.#d.bind(this)),t.appendChild(this.#e),this}unmount(){this.#e?.remove(),this.#n?.detach(),this.#t?.dispose(),this.#t=null,this.#e=null,this.#n=null}dispose(){this.unmount()}};let fn=window;fn.Decimal=b,fn.Timescope=dn})();
package/index.d.ts ADDED
@@ -0,0 +1,451 @@
1
+ //#region ../../node_modules/.pnpm/@kikuchan+decimal@0.1.0-alpha.4/node_modules/@kikuchan/decimal/index.d.ts
2
+ //#region src/index.d.ts
3
+ declare const __brand: unique symbol;
4
+ interface DecimalInstance {
5
+ readonly [__brand]: never;
6
+ }
7
+ type DecimalLike = number | string | bigint | DecimalInstance | {
8
+ coeff: bigint;
9
+ digits: bigint;
10
+ };
11
+ type RoundingMode = 'trunc' | 'floor' | 'ceil' | 'round';
12
+ interface Decimal {
13
+ readonly [__brand]: never;
14
+ coeff: bigint;
15
+ digits: bigint;
16
+ clone(): Decimal;
17
+ round$(digits?: bigint | number, force?: boolean): this;
18
+ round(digits?: bigint | number, force?: boolean): Decimal;
19
+ floor$(digits?: bigint | number, force?: boolean): this;
20
+ floor(digits?: bigint | number, force?: boolean): Decimal;
21
+ ceil$(digits?: bigint | number, force?: boolean): this;
22
+ ceil(digits?: bigint | number, force?: boolean): Decimal;
23
+ trunc$(digits?: bigint | number, force?: boolean): this;
24
+ trunc(digits?: bigint | number, force?: boolean): Decimal;
25
+ rescale$(digits?: bigint | number, mode?: RoundingMode): this;
26
+ rescale(digits?: bigint | number, mode?: RoundingMode): Decimal;
27
+ roundBy$(step: DecimalLike, mode?: RoundingMode): this;
28
+ roundBy(step: DecimalLike, mode?: RoundingMode): Decimal;
29
+ floorBy$(step: DecimalLike): this;
30
+ floorBy(step: DecimalLike): Decimal;
31
+ ceilBy$(step: DecimalLike): this;
32
+ ceilBy(step: DecimalLike): Decimal;
33
+ truncBy$(step: DecimalLike): this;
34
+ truncBy(step: DecimalLike): Decimal;
35
+ split$(digits?: bigint | number, mode?: RoundingMode): [Decimal, Decimal];
36
+ split(digits?: bigint | number, mode?: RoundingMode): [Decimal, Decimal];
37
+ splitBy$(step: DecimalLike, mode?: RoundingMode): [Decimal, Decimal];
38
+ splitBy(step: DecimalLike, mode?: RoundingMode): [Decimal, Decimal];
39
+ neg$(flag?: boolean): this;
40
+ neg(flag?: boolean): Decimal;
41
+ abs$(): this;
42
+ abs(): Decimal;
43
+ sign$(): this;
44
+ sign(): Decimal;
45
+ isZero(): boolean;
46
+ isPositive(): boolean;
47
+ isNegative(): boolean;
48
+ add$(v: DecimalLike): this;
49
+ add(v: DecimalLike): Decimal;
50
+ sub$(v: DecimalLike): this;
51
+ sub(v: DecimalLike): Decimal;
52
+ mul$(v: DecimalLike, digits?: number | bigint | undefined): Decimal;
53
+ mul(v: DecimalLike, digits?: number | bigint | undefined): Decimal;
54
+ shift10$(exponent: bigint | number): this;
55
+ shift10(exponent: bigint | number): Decimal;
56
+ inverse$(digits?: bigint | number): this;
57
+ inverse(digits?: bigint | number): Decimal;
58
+ div$(v: DecimalLike, digits?: bigint | number, mode?: RoundingMode): this;
59
+ div(v: DecimalLike, digits?: bigint | number): Decimal;
60
+ mod$(v: DecimalLike): this;
61
+ mod(v: DecimalLike): Decimal;
62
+ modPositive$(v: DecimalLike): this;
63
+ modPositive(v: DecimalLike): Decimal;
64
+ clamp$(minValue: DecimalLike | undefined, maxValue: DecimalLike | undefined): this;
65
+ clamp(minValue: DecimalLike | undefined, maxValue: DecimalLike | undefined): Decimal;
66
+ cmp(v: DecimalLike): number;
67
+ eq(v: DecimalLike): boolean;
68
+ neq(v: DecimalLike): boolean;
69
+ lt(v: DecimalLike): boolean;
70
+ gt(v: DecimalLike): boolean;
71
+ le(v: DecimalLike): boolean;
72
+ ge(v: DecimalLike): boolean;
73
+ between(a: DecimalLike | undefined, b: DecimalLike | undefined): boolean;
74
+ isCloseTo(v: DecimalLike, tolerance: DecimalLike): boolean;
75
+ pow$(exponent: DecimalLike, digits?: bigint | number): this;
76
+ pow(exponent: DecimalLike, digits?: bigint | number): Decimal;
77
+ root$(degree: bigint | number, digits?: bigint | number): this;
78
+ root(degree: bigint | number, digits?: bigint | number): Decimal;
79
+ sqrt$(digits?: bigint | number): this;
80
+ sqrt(digits?: bigint | number): Decimal;
81
+ log$(base: DecimalLike, digits?: bigint | number): this;
82
+ log(base: DecimalLike, digits?: bigint | number): Decimal;
83
+ order(): bigint;
84
+ toString(): string;
85
+ toFixed(fractionDigits: bigint | number): string;
86
+ number(): number;
87
+ integer(): bigint;
88
+ }
89
+ declare function Decimal(v: null): null;
90
+ declare function Decimal(v: undefined): undefined;
91
+ declare function Decimal(v: DecimalLike): Decimal;
92
+ declare function Decimal(v: DecimalLike | null): Decimal | null;
93
+ declare function Decimal(v: DecimalLike | undefined): Decimal | undefined;
94
+ declare function Decimal(v: DecimalLike | undefined | null): Decimal | undefined | null;
95
+ declare namespace Decimal {
96
+ function isDecimal(v: unknown): v is Decimal;
97
+ function isDecimalLike(v: unknown): v is DecimalLike;
98
+ function pow10(n: bigint | number): Decimal;
99
+ function minmax(...values: (DecimalLike | null | undefined)[]): [Decimal | null, Decimal | null];
100
+ function min(...values: (DecimalLike | null | undefined)[]): Decimal | null;
101
+ function max(...values: (DecimalLike | null | undefined)[]): Decimal | null;
102
+ }
103
+ //#endregion
104
+ //#region src/core/decimal.d.ts
105
+ type NumberLike = string | bigint | number | DecimalInstance;
106
+ //#endregion
107
+ //#region src/core/range.d.ts
108
+ type Range<T$1> = [T$1, T$1];
109
+ //#endregion
110
+ //#region src/core/chunk.d.ts
111
+ /**
112
+ * Minimal descriptor for a data chunk (no payload).
113
+ */
114
+ type TimescopeDataChunkDesc = {
115
+ /** Chunk id string. */
116
+ id: string;
117
+ /** Sequence number (monotonic along time). */
118
+ seq: bigint;
119
+ /** Expiration timestamp (ms). */
120
+ expires?: number;
121
+ /** Time range covered by this chunk. */
122
+ range: Range<Decimal | undefined>;
123
+ /** Resolution in milliseconds per sample. */
124
+ resolution: Decimal;
125
+ /** Zoom level. */
126
+ zoom: number;
127
+ };
128
+ type TimescopeDataChunkLoaderApi = {
129
+ expiresAt: (t: number) => void;
130
+ expiresIn: (t: number) => void;
131
+ };
132
+ /**
133
+ * Loader function that receives a chunk descriptor and returns its payload.
134
+ */
135
+ type TimescopeDataChunkLoader<T$1> = (chunk: TimescopeDataChunkDesc, api: TimescopeDataChunkLoaderApi) => Promise<T$1 | undefined>;
136
+ //#endregion
137
+ //#region src/core/animation.d.ts
138
+ type TimescopeAnimationType = 'in-out' | 'linear' | 'out';
139
+ type TimescopeAnimationInput = false | TimescopeAnimationType | {
140
+ animation: TimescopeAnimationType | false;
141
+ duration: number;
142
+ lazy?: boolean;
143
+ };
144
+ //#endregion
145
+ //#region src/core/event.d.ts
146
+ type ExtractEventValue<E, T$1 extends string> = E extends TimescopeEvent<T$1, infer R> ? TimescopeEvent<T$1, R> : E extends T$1 ? E : never;
147
+ type ExtractEventName<E> = E extends TimescopeEvent<infer T, any> ? T : E extends string ? E : never;
148
+ declare class TimescopeEventEmitter<E extends TimescopeEvent<string, unknown> | string> {
149
+ #private;
150
+ uid: string;
151
+ dispatchEvent<T$1 extends string>(event: ExtractEventValue<E, T$1>): void;
152
+ on<T$1 extends ExtractEventName<E>>(type: T$1, cb: (e: ExtractEventValue<E, T$1>) => void): () => void;
153
+ un<T$1 extends ExtractEventName<E>>(type: T$1, cb: (e: ExtractEventValue<E, T$1>) => void): void;
154
+ }
155
+ declare class TimescopeEvent<T$1 extends string, V = any> {
156
+ type: T$1;
157
+ value: V;
158
+ origin?: string;
159
+ stopped: boolean;
160
+ prevented: boolean;
161
+ constructor(type: T$1, value: V, origin?: string);
162
+ stopPropagation(): void;
163
+ preventDefaults(): void;
164
+ }
165
+ declare class TimescopeObservable<E extends TimescopeEvent<string, unknown> | string = TimescopeEvent<string, unknown> | string> extends TimescopeEventEmitter<E | 'change'> {
166
+ #private;
167
+ changed(): void;
168
+ get revision(): number;
169
+ }
170
+ //#endregion
171
+ //#region src/bridge/protocol.d.ts
172
+ type TimescopeFont = {
173
+ family: string;
174
+ source: string | BufferSource;
175
+ desc?: FontFaceDescriptors;
176
+ };
177
+ //#endregion
178
+ //#region src/core/style.d.ts
179
+ type TextStyleOptions = {
180
+ color?: string;
181
+ fontWeight?: string;
182
+ fontSize?: string;
183
+ fontFamily?: string;
184
+ };
185
+ type TimescopeStyle = {
186
+ width?: string;
187
+ height?: string;
188
+ background?: string;
189
+ };
190
+ //#endregion
191
+ //#region src/core/time.d.ts
192
+ type TimeLike<N extends null | undefined = null> = string | Date | NumberLike | N;
193
+ type TimeUnit = 's' | 'ms' | 'us' | 'ns';
194
+ //#endregion
195
+ //#region src/core/zoom.d.ts
196
+ type ZoomLike = NumberLike;
197
+ //#endregion
198
+ //#region src/core/TimescopeState.d.ts
199
+ interface TimescopeStateOptions {
200
+ time?: TimeLike;
201
+ timeRange?: Range<TimeLike | null | undefined>;
202
+ zoom?: ZoomLike;
203
+ zoomRange?: Range<ZoomLike | undefined>;
204
+ }
205
+ //#endregion
206
+ //#region src/core/types.d.ts
207
+ type MaybeFn<R$1, T$1> = T$1 extends unknown[] ? ((...args: T$1) => R$1) | R$1 : R$1;
208
+ type UsingElement<V extends [string, string]> = `${V[1]}@${V[0]}` | V[1] | `@${V[0]}`;
209
+ type Using1<V extends [string, string]> = UsingElement<V> | [UsingElement<V>];
210
+ type Using2<V extends [string, string]> = [UsingElement<V>, UsingElement<V>];
211
+ type Using<V extends [string, string] = [string, string]> = Using1<V> | Using2<V>;
212
+ type StrokeStyle<T$1 = false> = {
213
+ lineWidth?: MaybeFn<number, T$1>;
214
+ lineColor?: MaybeFn<string, T$1>;
215
+ lineDashArray?: MaybeFn<number[], T$1>;
216
+ lineDashOffset?: MaybeFn<number, T$1>;
217
+ };
218
+ type FillStyle<T$1 = false> = {
219
+ fillColor?: MaybeFn<string, T$1>;
220
+ fillOpacity?: MaybeFn<number, T$1>;
221
+ fillPost?: boolean;
222
+ };
223
+ type SizeStyle<T$1 = false> = {
224
+ size?: MaybeFn<number, T$1>;
225
+ };
226
+ type AngleStyle<T$1 = false> = {
227
+ angle?: MaybeFn<number, T$1>;
228
+ };
229
+ type PathStyle<T$1 = false> = {
230
+ path?: MaybeFn<string, T$1>;
231
+ origin?: [number, number];
232
+ scale?: number;
233
+ };
234
+ type TextStyle<T$1 = false> = {
235
+ fontWeight?: MaybeFn<string, T$1>;
236
+ fontFamily?: MaybeFn<string, T$1>;
237
+ textAlign?: MaybeFn<'start' | 'center' | 'end' | 'left' | 'right', T$1>;
238
+ textBaseline?: MaybeFn<'top' | 'middle' | 'bottom' | 'hanging' | 'alphabetic' | 'ideographic', T$1>;
239
+ textColor?: MaybeFn<string, T$1>;
240
+ textOpacity?: MaybeFn<number, T$1>;
241
+ textOutline?: MaybeFn<boolean, T$1>;
242
+ textOutlineColor?: MaybeFn<string, T$1>;
243
+ textOutlineWidth?: MaybeFn<number, T$1>;
244
+ text?: MaybeFn<string, T$1>;
245
+ };
246
+ type IconStyle<T$1 = false> = {
247
+ iconFontWeight?: MaybeFn<string, T$1>;
248
+ iconFontFamily?: MaybeFn<string, T$1>;
249
+ iconAlign?: MaybeFn<'start' | 'center' | 'end' | 'left' | 'right', T$1>;
250
+ iconBaseline?: MaybeFn<'top' | 'middle' | 'bottom' | 'hanging' | 'alphabetic' | 'ideographic', T$1>;
251
+ iconColor?: MaybeFn<string, T$1>;
252
+ iconOpacity?: MaybeFn<number, T$1>;
253
+ iconOutline?: MaybeFn<boolean, T$1>;
254
+ iconOutlineColor?: MaybeFn<string, T$1>;
255
+ iconOutlineWidth?: MaybeFn<number, T$1>;
256
+ icon?: MaybeFn<string, T$1>;
257
+ };
258
+ type BoxStyle<T$1 = false> = {
259
+ padding?: MaybeFn<number | [number, number?, number?, number?], T$1>;
260
+ radius?: MaybeFn<number, T$1>;
261
+ };
262
+ type OffsetStyle<T$1 = false> = {
263
+ offset?: MaybeFn<[number, number], T$1>;
264
+ };
265
+ type TimescopeChartStyleEntry<D extends string, U extends boolean, S, T$1 extends unknown[] | false, V extends [string, string]> = {
266
+ draw: MaybeFn<D, T$1>;
267
+ using?: MaybeFn<U extends true ? Using2<V> : Using1<V>, T$1>;
268
+ style?: MaybeFn<S, T$1>;
269
+ };
270
+ type TimescopeChartMark<T$1 extends unknown[] | false, V extends [string, string] = [string, string]> = TimescopeChartStyleEntry<'circle', false, StrokeStyle<T$1> & FillStyle<T$1> & SizeStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'triangle' | 'square' | 'diamond' | 'star', false, StrokeStyle<T$1> & FillStyle<T$1> & SizeStyle<T$1> & AngleStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'plus' | 'cross' | 'minus', false, StrokeStyle<T$1> & SizeStyle<T$1> & AngleStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'text', false, SizeStyle<T$1> & AngleStyle<T$1> & TextStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'icon', false, SizeStyle<T$1> & AngleStyle<T$1> & IconStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'path', false, SizeStyle<T$1> & AngleStyle<T$1> & PathStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'line', true, StrokeStyle<T$1> & SizeStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'section', true, StrokeStyle<T$1> & SizeStyle<T$1> & OffsetStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'box', true, StrokeStyle<T$1> & FillStyle<T$1> & SizeStyle<T$1> & BoxStyle<T$1> & OffsetStyle<T$1>, T$1, V>;
271
+ type TimescopeChartLink<T$1 extends unknown[] | false, V extends [string, string] = [string, string]> = TimescopeChartStyleEntry<'line' | 'curve' | 'step' | 'step-start' | 'step-end', false, StrokeStyle<T$1>, T$1, V> | TimescopeChartStyleEntry<'area' | 'curve-area' | 'step-area' | 'step-area-start' | 'step-area-end', true, StrokeStyle<T$1> & FillStyle<T$1>, T$1, V>;
272
+ type TimescopeChartType = 'lines' | 'lines:filled' | 'curves' | 'curves:filled' | 'steps-start' | 'steps-start:filled' | 'steps' | 'steps:filled' | 'steps-end' | 'steps-end:filled' | 'points' | 'linespoints' | 'linespoints:filled' | 'curvespoints' | 'curvespoints:filled' | 'stepspoints-start' | 'stepspoints-start:filled' | 'stepspoints' | 'stepspoints:filled' | 'stepspoints-end' | 'stepspoints-end:filled' | 'impulses' | 'impulsespoints' | 'boxes' | 'boxes:filled';
273
+ type CalendarLevel = 'subsecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' | 'relative';
274
+ type TimeFormatFuncOptions = {
275
+ time: Decimal;
276
+ unit: TimeUnit;
277
+ level: CalendarLevel;
278
+ digits: number;
279
+ stride?: bigint;
280
+ };
281
+ type TimeFormatFunc = (opts: TimeFormatFuncOptions) => string | undefined;
282
+ interface TimescopeSourceCommonOptions {
283
+ /** Available zoom levels used to quantize resolution. */
284
+ zoomLevels?: number[];
285
+ /** Number of samples per chunk for tiled loading. */
286
+ chunkSize?: number;
287
+ }
288
+ type TimescopeSourceOptions = TimescopeSourceCommonOptions & ({
289
+ url: string;
290
+ } | {
291
+ data: unknown;
292
+ } | {
293
+ loader: TimescopeDataChunkLoader<unknown>;
294
+ });
295
+ type TimescopeSourceInput = string | unknown[] | object | TimescopeDataChunkLoader<unknown> | TimescopeSourceOptions;
296
+ type InferTimeKey<T$1> = T$1 extends string[] ? T$1[number] : T$1 extends Record<string, unknown> ? keyof T$1 : 'time';
297
+ type InferValueKey<T$1> = T$1 extends string[] ? T$1[number] : T$1 extends Record<string, unknown> ? keyof T$1 : 'value';
298
+ type InferSourceType<S> = S extends unknown[] ? S : S extends TimescopeDataChunkLoader<infer X> ? X : S extends {
299
+ url: string;
300
+ } ? unknown : S extends string ? unknown : S extends {
301
+ data: infer X;
302
+ } ? X : S extends {
303
+ loader: TimescopeDataChunkLoader<infer X>;
304
+ } ? X : S;
305
+ type FieldDefLike<D> = string | string[] | Record<string, string | ((data: Record<string, any>) => D)>;
306
+ type TimescopeSeriesInput<Source extends Record<string, TimescopeSourceInput>, SourceName extends keyof Source, TimeDef extends FieldDefLike<TimeLike<never>>, ValueDef extends FieldDefLike<NumberLike | null>, Track extends string> = {
307
+ data: {
308
+ source: SourceName;
309
+ parser?: (...args: [InferSourceType<Source[SourceName]>]) => Record<string, any>[];
310
+ time?: TimeDef;
311
+ value?: ValueDef;
312
+ name?: string;
313
+ unit?: string;
314
+ digits?: number;
315
+ color?: string;
316
+ scale?: 'linear' | 'log';
317
+ range?: NumberLike | Range<NumberLike | undefined> | {
318
+ expand?: boolean;
319
+ shrink?: boolean;
320
+ default?: NumberLike | Range<NumberLike | undefined>;
321
+ };
322
+ instantaneous?: {
323
+ using?: Using1<[InferTimeKey<TimeDef>, InferValueKey<ValueDef>]>;
324
+ zoom?: number;
325
+ };
326
+ };
327
+ chart?: TimescopeChartType | {
328
+ marks?: MaybeFn<TimescopeChartMark<[{
329
+ resolution: Decimal;
330
+ data: Record<string, any>;
331
+ time: Record<InferTimeKey<TimeDef>, Decimal>;
332
+ value: Record<InferValueKey<ValueDef>, Decimal | null>;
333
+ }], [InferTimeKey<TimeDef>, InferValueKey<ValueDef>]>[], [{
334
+ resolution: Decimal;
335
+ data: Record<string, any>;
336
+ time: Record<InferTimeKey<TimeDef>, Decimal>;
337
+ value: Record<InferValueKey<ValueDef>, Decimal | null>;
338
+ }]>;
339
+ links?: MaybeFn<TimescopeChartLink<[opts: {
340
+ resolution: Decimal;
341
+ }], [InferTimeKey<TimeDef>, InferValueKey<ValueDef>]>[], [opts: {
342
+ resolution: Decimal;
343
+ }]>;
344
+ };
345
+ tooltip?: boolean | {
346
+ label?: string;
347
+ format?: () => string;
348
+ };
349
+ yAxis?: boolean | 'left' | 'right' | {
350
+ side?: 'left' | 'right';
351
+ label?: string;
352
+ };
353
+ track?: Track;
354
+ };
355
+ type TimescopeOptionsSources<Source extends Record<string, TimescopeSourceInput>> = { [K in keyof Source]: Source[K] };
356
+ type TimescopeOptionsSeries<Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string> = { [K in keyof SourceName & keyof TimeDef & keyof ValueDef]: TimescopeSeriesInput<Source, SourceName[K] & string, TimeDef[K], ValueDef[K], Track> };
357
+ type TimescopeTimeAxisOptions = {
358
+ axis?: false | {
359
+ color?: string;
360
+ };
361
+ ticks?: false | {
362
+ color?: string;
363
+ };
364
+ labels?: false | TextStyleOptions;
365
+ relative?: boolean;
366
+ timeFormat?: TimeFormatFunc;
367
+ timeUnit?: 's' | 'ms' | 'us' | 'ns';
368
+ };
369
+ type TimescopeOptionsTracks<Track extends string> = { [K in Track]: {
370
+ height?: number;
371
+ symmetric?: boolean;
372
+ timeAxis?: TimescopeTimeAxisOptions | boolean;
373
+ } };
374
+ type TimescopeOptionsSelection = boolean | {
375
+ resizable?: boolean;
376
+ color?: string;
377
+ invert?: boolean;
378
+ range?: Range<Decimal | undefined> | null;
379
+ };
380
+ type TimescopeOptions<Source extends Record<string, TimescopeSourceInput> = Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source> = Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>> = Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>> = Record<string, FieldDefLike<NumberLike | null>>, Track extends string = string> = {
381
+ style?: TimescopeStyle;
382
+ showFps?: boolean;
383
+ padding?: readonly number[];
384
+ indicator?: boolean;
385
+ sources?: TimescopeOptionsSources<Source>;
386
+ series?: TimescopeOptionsSeries<Source, SourceName, TimeDef, ValueDef, Track>;
387
+ tracks?: TimescopeOptionsTracks<Track>;
388
+ selection?: TimescopeOptionsSelection;
389
+ };
390
+ interface TimescopeOptionsInitial<Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string> extends TimescopeOptions<Source, SourceName, TimeDef, ValueDef, Track>, TimescopeStateOptions {
391
+ target?: HTMLElement | string;
392
+ fonts?: (string | TimescopeFont)[];
393
+ }
394
+ declare function createDefineTimescopeOptions(wrapper?: (opts: object) => object): <Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string>(opts: TimescopeOptions<Source, SourceName, TimeDef, ValueDef, Track>) => typeof opts;
395
+ declare function createDefineTimescopeSources(wrapper?: (opts: object) => object): <Source extends Record<string, TimescopeSourceInput>>(opts: TimescopeOptionsSources<Source>) => typeof opts;
396
+ declare function createDefineTimescopeTracks(wrapper?: (opts: object) => object): <Track extends string>(opts: TimescopeOptionsTracks<Track>) => typeof opts;
397
+ declare function createDefineTimescopeSeries(wrapper?: (opts: object) => object): <Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string = "default">(opts: TimescopeOptionsSeries<Source, SourceName, TimeDef, ValueDef, Track>, sources?: TimescopeOptionsSources<Source>, tracks?: TimescopeOptionsTracks<Track>) => typeof opts;
398
+ declare const defineTimescopeOptions: <Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string>(opts: TimescopeOptions<Source, SourceName, TimeDef, ValueDef, Track>) => typeof opts;
399
+ declare const defineTimescopeSources: <Source extends Record<string, TimescopeSourceInput>>(opts: TimescopeOptionsSources<Source>) => typeof opts;
400
+ declare const defineTimescopeTracks: <Track extends string>(opts: TimescopeOptionsTracks<Track>) => typeof opts;
401
+ declare const defineTimescopeSeries: <Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string = "default">(opts: TimescopeOptionsSeries<Source, SourceName, TimeDef, ValueDef, Track>, sources?: TimescopeOptionsSources<Source>, tracks?: TimescopeOptionsTracks<Track>) => typeof opts;
402
+ //#endregion
403
+ //#region src/main/Timescope.d.ts
404
+ type TimescopeUpdateOptions<Source extends Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>>, Track extends string> = Omit<TimescopeOptions<Source, SourceName, TimeDef, ValueDef, Track>, 'series'> & {
405
+ series?: { [K in keyof SourceName & keyof TimeDef & keyof ValueDef]: Omit<TimescopeSeriesInput<Source, SourceName[K] & string, TimeDef[K], ValueDef[K], Track>, 'data'> & {
406
+ data: Omit<TimescopeSeriesInput<Source, SourceName[K] & string, TimeDef[K], ValueDef[K], Track>['data'], 'source'> & {
407
+ source?: TimescopeSeriesInput<Source, SourceName[K] & string, TimeDef[K], ValueDef[K], Track>['data']['source'];
408
+ };
409
+ } };
410
+ };
411
+ type TimescopeFitOptions = {
412
+ animation?: boolean;
413
+ padding?: number | [l: number, r: number];
414
+ };
415
+ declare class Timescope<Source extends Record<string, TimescopeSourceInput> = Record<string, TimescopeSourceInput>, SourceName extends Record<string, keyof Source> = Record<string, keyof Source>, TimeDef extends Record<string, FieldDefLike<TimeLike<never>>> = Record<string, FieldDefLike<TimeLike<never>>>, ValueDef extends Record<string, FieldDefLike<NumberLike | null>> = Record<string, FieldDefLike<NumberLike | null>>, Track extends string = string> extends TimescopeObservable<TimescopeEvent<'timechanging', Decimal | null> | TimescopeEvent<'timechanged', Decimal | null> | TimescopeEvent<'zoomchanging', number> | TimescopeEvent<'zoomchanged', number> | TimescopeEvent<'rangechanging', Range<Decimal>> | TimescopeEvent<'rangechanged', Range<Decimal> | null>> {
416
+ #private;
417
+ get time(): Decimal | null;
418
+ set time(v: TimeLike | null);
419
+ setTime(v: TimeLike | null, animation?: TimescopeAnimationInput): void;
420
+ get timeRange(): Range<Decimal | null | undefined>;
421
+ setTimeRange(domain?: Range<TimeLike | null | undefined>): void;
422
+ get zoom(): number;
423
+ set zoom(v: ZoomLike);
424
+ setZoom(v: ZoomLike, animation?: TimescopeAnimationInput): boolean;
425
+ fitTo(range: Range<TimeLike<never>>, opts?: TimescopeFitOptions): false | undefined;
426
+ get zoomRange(): Range<number | undefined>;
427
+ setZoomRange(domain?: Range<ZoomLike | undefined>): void;
428
+ setSelection(domain: Range<TimeLike<undefined>> | null): void;
429
+ clearSelection(): void;
430
+ get animating(): boolean;
431
+ get editing(): boolean;
432
+ get size(): {
433
+ x: number;
434
+ y: number;
435
+ width: number;
436
+ height: number;
437
+ dpr: number;
438
+ };
439
+ set disabled(v: boolean);
440
+ get disabled(): boolean;
441
+ get options(): TimescopeOptions;
442
+ setOptions(opts: TimescopeOptions): void;
443
+ updateOptions(opts: TimescopeUpdateOptions<Source, SourceName, TimeDef, ValueDef, Track>): void;
444
+ constructor(opts?: TimescopeOptionsInitial<Source, SourceName, TimeDef, ValueDef, Track>);
445
+ reload(sources?: (keyof SourceName & string)[]): void;
446
+ mount(target: HTMLElement | string): this;
447
+ unmount(): void;
448
+ dispose(): void;
449
+ }
450
+ //#endregion
451
+ export { AngleStyle, BoxStyle, CalendarLevel, Decimal, type DecimalLike, FieldDefLike, FillStyle, IconStyle, OffsetStyle, PathStyle, SizeStyle, StrokeStyle, TextStyle, TimeFormatFunc, TimeFormatFuncOptions, Timescope, TimescopeChartLink, TimescopeChartMark, TimescopeChartStyleEntry, TimescopeChartType, type NumberLike as TimescopeNumberLike, type TimescopeOptions, type TimescopeOptionsInitial, TimescopeOptionsSelection, TimescopeOptionsSeries, TimescopeOptionsSources, TimescopeOptionsTracks, TimescopeSeriesInput, TimescopeSourceCommonOptions, TimescopeSourceInput, TimescopeSourceOptions, TimescopeTimeAxisOptions, type TimeLike as TimescopeTimeLike, Using, Using1, Using2, createDefineTimescopeOptions, createDefineTimescopeSeries, createDefineTimescopeSources, createDefineTimescopeTracks, defineTimescopeOptions, defineTimescopeSeries, defineTimescopeSources, defineTimescopeTracks };
package/index.js ADDED
@@ -0,0 +1 @@
1
+ function e(e,t=`Digits must be an integer`){if(typeof e==`number`){if(!Number.isFinite(e)||!Number.isInteger(e))throw Error(t);return BigInt(e)}return e}function t(t){let n=e(t);return n<0n?0n:n}function n(e){let t=Number(e);return t<te.length?te[t]:5n**BigInt(e)}function r(e){let t=Number(e);return t<y.length?y[t]:10n**BigInt(e)}function i(e,t,n){let r=BigInt(t);if(r<=0n)return new g(1n);let i=new g(1n),a=e.clone();for(;r&1n&&i.mul$(a,n),r>>=1n,r!==0n;)a.mul$(a,n);return i}function a(e,t,n,r){if(t.isZero()||r<=0)return new g(1n);let{guardPrec:a,rootPrec:s}=f(n,r),c=o(t.coeff).toString().padStart(r,`0`),l=e.round(s),u=new g(1n);for(let e=0;e<r;e++){l=l.root(10n,s);let t=c.charCodeAt(e)-48;if(t<=0)continue;let n=i(l.clone(),t,a);u.mul$(n,a)}return u.round$(n)}function o(e){return e<0n?-e:e}function s(e){if(e===``)throw Error(`Invalid number`);let t=1n,n=e;if(n[0]===`-`?(t=-1n,n=n.slice(1)):n[0]===`+`&&(n=n.slice(1)),n===``)throw Error(`Invalid number`);let r=n.indexOf(`.`),i=n,a=``;r>=0&&(i=n.slice(0,r),a=n.slice(r+1)),i===``&&(i=`0`);let o=(i+a).replace(/^0+/,``),s=o===``?`0`:o;return{coeff:t*BigInt(s),digits:BigInt(a.length)}}function c(e){let t=e.search(/[eE]/);if(t===-1)return s(e);let n=e.slice(0,t),r=e.slice(t+1);if(r.trim()===``)throw Error(`Invalid number`);let{coeff:i,digits:a}=s(n);return{coeff:i,digits:a-BigInt(r)}}function l(e,t){let n=e.digits>t.digits?e.digits:t.digits,i=n-e.digits,a=n-t.digits;return{digits:n,aCoeff:e.coeff*r(i),bCoeff:t.coeff*r(a)}}function u(e){let t=Math.max(0,Number(e));return Math.min(2**53-1,t)}function d(e,t,n){let r=u(t),i=u(n),a=Math.max(r,i)+1,o=Math.max(a,1),s=e+o;for(;;){let t=Math.ceil(s*ee)+o,n=Math.max(t*2,1),r=Math.max(a,Math.ceil(Math.log10(n))+1);if(r<=o){let e=s+o;return{guardPrec:o,fracPrec:s,bits:t,divPrec:e}}o=r,s=e+o}}function f(e,t){let n=Math.max(1,t),r=Math.max(6,Math.ceil(Math.log10(n*4))+2),i=e+BigInt(r);return{guardPrec:i,rootPrec:i+BigInt(Math.max(r,6))}}function p(e,t){let n=Math.max(1,t.toString().replace(`-`,``).length),r=Math.max(12,n+4);return{iterPrec:e+BigInt(r),stopShift:e+2n}}function m(e,t,n,r){let i=[],a=[],o=new g(t),s=1n,c=n+Math.max(r,1);for(;o.le(e);)i.push(o),a.push(s),o=o.mul(o),s*=2n;let l=new g(e),u=0n;for(let e=i.length-1;e>=0;e--){let t=i[e];l.ge(t)&&(l.div$(t,c),u+=a[e])}return{exponent:u,remainder:l}}function h(e,t,n,r){let i=n+Math.max(r,1);if(e.eq(v))return{exponent:0n,remainder:v.clone()};if(e.ge(v))return m(e,t,n,r);let a=m(v.div(e,i),t,n,r);return a.remainder.eq(v)?{exponent:-a.exponent,remainder:v.clone()}:{exponent:-a.exponent-1n,remainder:v.div(a.remainder,i).mul$(t)}}var g=class s{coeff;digits;constructor(e,t){if(typeof e==`number`){if(e!==e||e===1/0||e===-1/0)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(e.toString()))}else if(typeof e==`string`){let t=e.trim();if(t===``)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(t))}else if(typeof e==`bigint`)this.coeff=e,this.digits=t??0n;else if(typeof e==`object`&&e&&`coeff`in e&&typeof e.coeff==`bigint`&&`digits`in e&&typeof e.digits==`bigint`)this.coeff=e.coeff,this.digits=e.digits;else throw Error(`Invalid input type for Decimal`)}clone(){return new s({coeff:this.coeff,digits:this.digits})}#e(e,t=0n){return x(e)&&(t=e.digits,e=e.coeff),this.coeff=e,this.digits=t,this}#t(e,t,n){let i=this.coeff,a=e.coeff,s=e.digits+t-this.digits;s>=0n?i*=r(s):a*=r(-s);let c=i/a,l=i-c*a;if(l!==0n&&n!==`trunc`){let e=i>=0n;switch(n){case`floor`:e||(c-=1n);break;case`ceil`:e&&(c+=1n);break;case`round`:{let t=o(l),n=a<0n?-a:a;t*2n>=n&&(c+=e?1n:-1n);break}default:break}}return this.#e(c,t)}#n(t,n=`trunc`){let i=e(t);if(this.isZero())return this.digits=i,this;if(i===this.digits)return this;if(i>this.digits){let e=r(i-this.digits);return this.coeff*=e,this.digits=i,this}return this.#t(v,i,n)}#r(){if(this.coeff===0n)return this.digits=0n,this;if(this.digits<=0n)return this;for(;this.digits>0n&&this.coeff%10n==0n;)this.coeff/=10n,this.digits-=1n;return this}round$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`round`)}round(e=0,t=!1){return this.clone().round$(e,t)}roundBy$(e,t=`round`){let n=new s(e).abs();if(n.isZero())throw Error(`Cannot align to zero`);return this.div$(n,0n,t).mul$(n)}roundBy(e,t=`round`){return this.clone().roundBy$(e,t)}floor$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`floor`)}floor(e=0,t=!1){return this.clone().floor$(e,t)}floorBy$(e){return this.roundBy$(e,`floor`)}floorBy(e){return this.clone().floorBy$(e)}ceil$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`ceil`)}ceil(e=0,t=!1){return this.clone().ceil$(e,t)}ceilBy$(e){return this.roundBy$(e,`ceil`)}ceilBy(e){return this.clone().ceilBy$(e)}trunc$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`trunc`)}trunc(e=0,t=!1){return this.clone().trunc$(e,t)}rescale$(e,t=`trunc`){return e==null?this.#r():this.#n(e,t)}rescale(e,t=`trunc`){return this.clone().rescale$(e,t)}truncBy$(e){return this.roundBy$(e,`trunc`)}truncBy(e){return this.clone().truncBy$(e)}#i(e){let t=this.clone();return e(this),[this,t.sub$(this)]}split$(e,t=`floor`){return this.#i(n=>n.#n(e??0n,t))}split(e,t=`floor`){return this.clone().split$(e,t)}splitBy$(e,t=`floor`){return this.#i(n=>n.roundBy$(e,t))}splitBy(e,t=`floor`){return this.clone().splitBy$(e,t)}neg$(e){return e!==!1&&(this.coeff=-this.coeff),this}neg(e){return this.clone().neg$(e)}isZero(){return this.coeff===0n}isPositive(){return this.coeff>0n}isNegative(){return this.coeff<0n}add$(e){let t=b(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r+i,this.digits=n,this}add(e){return this.clone().add$(e)}sub$(e){let t=b(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r-i,this.digits=n,this}sub(e){return this.clone().sub$(e)}mul$(e,t){let n=b(e);return this.coeff*=n.coeff,this.digits+=n.digits,t!==void 0&&this.round$(t),this}mul(e,t){return this.clone().mul$(e,t)}shift10$(t){let n=e(t,`Shift amount must be an integer`);return n===0n||(this.digits-=n),this}shift10(e){return this.clone().shift10$(e)}inverse$(e=_){if(this.isZero())throw Error(`Division by zero`);let n=t(e),r=this.clone();return this.#e(1n).div$(r,n)}inverse(e=_){return this.clone().inverse$(e)}div$(e,n,r=`round`){let i=n===void 0,a=t(n??_),o=b(e);if(o.isZero())throw Error(`Division by zero`);return this.isZero()?this:(this.#t(o,a,r),i?this.#r():this)}div(e,t,n=`round`){return this.clone().div$(e,t,n)}abs$(){return this.isNegative()&&(this.coeff=-this.coeff),this}abs(){return this.clone().abs$()}mod$(e){let t=b(e);if(t.isZero())throw Error(`Division by zero`);let{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r%i,this.digits=n,this}mod(e){return this.clone().mod$(e)}modPositive$(e){let t=b(e);if(t.isNegative())throw Error(`Modulo divisor must be positive`);return this.mod$(t),this.isNegative()&&this.add$(t),this}modPositive(e){return this.clone().modPositive$(e)}clamp$(e,t){let n=b(e),r=b(t);if(n&&r&&n.gt(r))throw Error(`Invalid clamp range`);return n&&this.lt(n)?(this.coeff=n.coeff,this.digits=n.digits,this):r&&this.gt(r)?(this.coeff=r.coeff,this.digits=r.digits,this):this}clamp(e,t){return this.clone().clamp$(e,t)}cmp(e){let t=b(e),{aCoeff:n,bCoeff:r}=l(this,t);return n===r?0:n>r?1:-1}eq(e){return this.cmp(e)===0}neq(e){return this.cmp(e)!==0}lt(e){return this.cmp(e)<0}gt(e){return this.cmp(e)>0}le(e){return this.cmp(e)<=0}ge(e){return this.cmp(e)>=0}between(e,t){let n=b(e),r=b(t);if(n&&r&&n.gt(r))throw Error(`Invalid between range`);return!(n&&this.lt(n)||r&&this.gt(r))}isCloseTo(e,t){let n=b(t);if(n.isNegative())throw Error(`Tolerance must be non-negative`);return this.sub(e).abs$().le(n)}pow$(e,n=_){let r=t(n),o=b(e);if(o.isZero())return this.#e(1n);if(this.isZero()){if(o.isNegative())throw Error(`Zero to negative exponent is undefined`);return this}let s=o.isNegative(),[c,l]=o.abs().split$(),u=this.clone(),d=l.isZero()?0:Number(l.digits);if(u.isNegative()&&d>0)throw Error(`Fractional exponent requires non-negative base`);let f=i(u,c.coeff),p=r;d>0&&(p=r+BigInt(Math.max(4,d)));let m=a(u,l,p,d);d>0&&f.mul$(m,p);let h=p>r?p:r,g=d>0?p:r;return s?this.#e(1n).div$(f,h):(f.round$(h,!0),this.#e(f)),this.round$(g,g===0n),this}pow(e,t=_){return this.clone().pow$(e,t)}root$(n,r=_){let a=e(n,`Root degree must be an integer`);if(a<=0n)throw Error(`Invalid root degree`);let o=t(r);if(a===1n)return o<this.digits?this:this.trunc$(o,!0);if(this.isZero())return this;let c=this.isNegative();if(c&&a%2n==0n)throw Error(`Even root of negative value is not defined`);let l=this.abs(),u=a-1n,{iterPrec:d,stopShift:f}=p(o,a),m=ne(-f),h=(()=>{let e=l.number();if(Number.isFinite(e)&&e>0){let t=Number(a);if(t>0){let n=e**(1/t);if(Number.isFinite(n)&&n>0)return new s(n).round$(d,!0)}}return new s(ne(l.order()/a)).round$(d,!0)})();this.#e(h.coeff,h.digits),this.isZero()&&this.#e(1n);for(let e=0;e<64;e++){let e=i(this.clone(),u,d);if(e.isZero())break;let t=l.div(e,d),n=this.mul(u,d).add$(t).div$(a,d);if(n.isCloseTo(this,m)||n.eq(this)){this.#e(n);break}this.#e(n)}return this.round$(d,!0),this.round$(o,o===0n),c&&this.neg$(),this}root(e,t=_){return this.clone().root$(e,t)}sqrt$(e=_){return this.root$(2n,e)}sqrt(e=_){return this.clone().sqrt$(e)}log$(e,r=_){let i=Number(t(r)),a=new s(e);if(!this.isPositive())throw Error(`Logarithm argument must be positive`);if(!a.isPositive())throw Error(`Logarithm base must be positive`);if(a.eq(v))throw Error(`Logarithm base cannot be one`);let{guardPrec:o,fracPrec:c,bits:l,divPrec:u}=d(i,a.digits,this.digits),f=a.lt(v),p=f?v.div(a,u):a,{exponent:m,remainder:g}=h(this,p,c,o);if(this.#e(m),c>0){let e=0n;for(let t=0;t<l;t++)g.mul$(g,u),e<<=1n,g.ge(p)&&(g.div$(p,u),e|=1n);e!==0n&&this.add$({coeff:e*n(l),digits:BigInt(l)})}let ee=i===0?0:c;return this.round$(ee),f&&this.neg$(),this}log(e,t=_){return this.clone().log$(e,t)}sign$(){return this.isZero()?this:(this.coeff=this.coeff<0n?-1n:1n,this.digits=0n,this)}sign(){return this.clone().sign$()}order(){if(this.isZero())throw RangeError(`order undefined for 0`);return BigInt(o(this.coeff).toString().length)-1n-this.digits}toFixed(t){let n=`Fraction digits must be a non-negative integer`,r=e(t,n);if(r<0n)throw Error(n);return this.round(r,!0).toString()}toString(){if(this.coeff===0n)return this.digits<=0n?`0`:`0.${`0`.repeat(Number(this.digits))}`;let e=this.coeff<0n,t=e?`-`:``,n=(e?-this.coeff:this.coeff).toString();if(this.digits<=0n)return`${t}${n}${`0`.repeat(Number(-this.digits))}`;let r=Number(this.digits),i=n.padStart(r+1,`0`),a=i.length-r;return`${t}${i.slice(0,a)}.${i.slice(a).padEnd(r,`0`)}`}[Symbol.for(`nodejs.util.inspect.custom`)](e,t){return`colors`in t&&t?.colors?`\x1b[33m${this.toString()}\x1b[m \x1b[90m(${this.coeff} * 10 ** ${-this.digits})\x1b[m`:this.toString()}number(){return Number(this.toString())}integer(){return this.digits<=0n?this.coeff*r(-this.digits):this.coeff/r(this.digits)}};const _=18n,ee=Math.log2(10),v=new g(1n),te=[],y=[];(function(){for(let e=0;e<256;e++)y[e]=10n**BigInt(e),te[e]=5n**BigInt(e)})();function b(e){return e==null||x(e)?e:new g(e)}(function(e){function t(e){return e instanceof g}e.isDecimal=t;function n(e){return!!(t(e)||typeof e==`string`||typeof e==`number`||typeof e==`bigint`||typeof e==`object`&&e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`)}e.isDecimalLike=n;function r(e){return new g({coeff:1n,digits:-BigInt(e)})}e.pow10=r;function i(...e){let t=null,n=null;for(let r=0;r<e.length;r++){let i=b(e[r]);i!=null&&((t===null||i.lt(t))&&(t=i),(n===null||i.gt(n))&&(n=i))}return[t,n]}e.minmax=i;function a(...e){return i(...e)[0]}e.min=a;function o(...e){return i(...e)[1]}e.max=o})(b||={});const x=b.isDecimal;b.isDecimalLike;const ne=b.pow10,S=b.minmax;b.min,b.max;function re(e){if(typeof e==`number`&&isNaN(e)||typeof e==`number`&&!isFinite(e))return null;try{return b(e)}catch{return null}}function ie(e){return function(t){return e?e(t):t}}function ae(e){return function(t){return e?e(t):t}}function oe(e){return function(t){return e?e(t):t}}function se(e){return function(t,n,r){return e?e(t):t}}const ce=ie(),le=ae(),ue=oe(),de=se();var C={clickTolerance:8,defaultChunkSize:256,base:2,chunkStep:1,wheelStep:.5};function fe(e){if(globalThis._uid||(globalThis._uid=1),e){if(`_uid`in e)return String(e._uid);e._uid=String(globalThis._uid),Object.defineProperty(e,`_uid`,{enumerable:!1})}return String(globalThis._uid++)}var pe=class{uid=fe(this);#e={};dispatchEvent(e){let t=typeof e==`string`?e:e.type,n=this.#e[t];if(n)for(let t of n)t(e)}on(e,t){let n=this.#e[e]??[];return n.push(t),this.#e[e]=n,()=>this.un(e,t)}un(e,t){let n=this.#e[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}},w=class{type;value;origin;stopped=!1;prevented=!1;constructor(e,t,n){this.type=e,this.value=t,this.origin=n}stopPropagation(){this.stopped=!0}preventDefaults(){this.prevented=!0}},T=class extends pe{#e=0;changed(){this.#e++,this.dispatchEvent(`change`)}get revision(){return this.#e}};function E(e){if(e==null||x(e))return e;if(typeof e==`string`){let t=Date.parse(e);if(Number.isNaN(t))throw Error(`Parse error as Date`);return b(t/1e3)}return e instanceof Date?b(e.getTime()/1e3):b(e)}function me(e){return e.map(E)}const he=globalThis.requestAnimationFrame??(e=>setTimeout(e,0)),ge=globalThis.cancelAnimationFrame??(e=>clearTimeout(e));var _e=class{#e=null;#t;start(e){e={animation:`in-out`,duration:500,...e},this.cancel(),this.#t=()=>e.done?.(e.target());let t=e.overshoot??0,n=e.duration??500,r=performance.now(),i=e.animation?{linear:e=>e,"in-out":e=>e*e*e*(e*(e*6-15)+10),out:e=>1+(t+1)*(e-1)**3+t*(e-1)**2}[String(e.animation)]:null;if(!i||e.origin()===e.target()){this.done();return}let a=()=>{let t=performance.now()-r;if(t<n){let r=i(t/n),o=e.origin()*(1-r)+e.target()*r;e.update(o,r),this.#e=he(a)}else this.done()};this.#e=he(a)}done(){this.cancel(),this.#t?.()}cancel(){this.#e&&=(ge(this.#e),null)}get animating(){return this.#e!==null}};function D(e,t,n){let r=e??n;if(t[0]!==void 0){let e=t[0]??n;if(r.lt(e))return t[0]}if(t[1]!==void 0){let e=t[1]??n;if(r.gt(e))return t[1]}return e}var O=class extends T{#e;#t={id:void 0,value:null,nullValue:b(0),committed:null,committing:null,current:null,candidate:null,domain:[void 0,void 0],editing:!1,animating:!1,cursorMode:`current`,updated:!1};#n=new _e;#r;get candidate(){return this.#t.candidate}get value(){return this.#t.value}get committing(){return this.#t.committing}parseValue(e){return b(e)}setValue(e,t){t??=!1;let n=this.parseValue(e);if(this.#t.value===n||n&&this.#t.value?.eq(n))return;let r=typeof t==`object`?t:{animation:t};this.begin(n),this.commit(r)}get committed(){return this.#t.committed}get current(){return this.#t.current}get domain(){return this.#t.domain}set domain(e){let t=e.map(e=>b(e));this.#t.domain=t,this.restore(),this.#c(),this.setValue(D(this.value,t,this.#t.nullValue)),this.changed()}get editing(){return this.#t.editing}get animating(){return this.#t.animating}get cursor(){return this.#t.cursorMode===`current`?this.#t.current:this.#t.committing}constructor(e={initialValue:0}){super(),e.domain&&(this.#t.domain=e.domain.map(e=>b(e))),e.onNull&&(this.#r=e.onNull,this.#c()),this.#e=e.lazy??!1;let t=D(b(e.initialValue),this.#t.domain,this.#t.nullValue);this.#t.value=t,this.#t.committed=t,this.#t.current=t,this.#t.candidate=t,this.#t.committing=t}handleSyncEvent(e){switch(e.type){case`begin`:this.#i(e);break;case`update`:this.#a(e);break;case`commit`:this.#o(e);break;case`restore`:this.#l(e);break;case`set:nullvalue`:this.#s(e);break}}begin(e){this.#c(),e===void 0&&(e=this.#t.current);let t=D(e,this.#t.domain,this.#t.nullValue),n={type:`begin`,candidate:t};this.dispatchEvent(new w(`sync`,n)),this.dispatchEvent(new w(`valuechanging`,t)),this.#i(n)}#i({candidate:e}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.editing=!0,this.#t.updated=!1,this.#t.candidate=e,this.dispatchEvent(new w(`valuechanging`,e)),this.changed()}update(e){this.#c();let t=this.#t.nullValue,n=D(e,this.#t.domain,t),r={type:`update`,candidate:n,current:(e??t).sub(this.#t.current??t).mul(n===e?1:.5).add(this.#t.current??t)};this.dispatchEvent(new w(`sync`,r)),this.#a(r)}#a({candidate:e,current:t}){this.#t.editing=!0,this.#t.updated=!0,this.#t.candidate=e,this.#t.current=t,this.dispatchEvent(new w(`valuechanging`,e)),this.changed()}commit(e={}){this.#c();let t=e.value===void 0?this.#t.candidate:e.value,n=t,r=D(t,this.#t.domain,this.#t.nullValue),i=e.animation===void 0?this.#t.updated?`current`:`target`:this.#t.cursorMode,a={type:`commit`,targetValue:r,animation:e.animation===void 0?this.#t.editing?`out`:`in-out`:e.animation,duration:e.duration??500,cursorMode:i,divergentValue:n,lazy:e.lazy??this.#e};this.dispatchEvent(new w(`sync`,a)),this.#o(a)}#o({targetValue:e,divergentValue:t,animation:n,duration:r,cursorMode:i,lazy:a}){let o=()=>{this.#t.value=e,this.#t.editing=!1,this.changed(),this.dispatchEvent(new w(`valuechanging`,this.#t.value)),this.dispatchEvent(new w(`valuechanged`,this.#t.value))},s=this.#t.current??this.#t.nullValue,c=e??this.#t.nullValue,l=t??this.#t.nullValue,u=0;c.neq(l)&&l.neq(s)&&(u=3*(l.sub(s).div(c.sub(s)).number()-1)/2),this.#t.cursorMode=i,this.#t.candidate=e,this.#t.committing=e,a||o();let d=c.eq(s)?0:1;this.#t.animating=!0,this.#n.start({origin:()=>0,target:()=>d,update:t=>{this.#c(),this.#t.animating=!0;let n=(e??this.#t.nullValue).sub(s).mul(t).add(s);this.#t.current=n,this.changed()},done:()=>{this.#t.animating=!1,this.#t.current=e,a&&o(),this.#t.committed=e,this.changed()},animation:n,duration:r,overshoot:u})}#s({nullValue:e}){this.#t.nullValue=e}#c(){if(!this.#r)return;let e=this.parseValue(this.#r())??this.#t.nullValue;this.#t.nullValue=e}toString(){return JSON.stringify(this)}toJSON(){return{value:this.value,candidate:this.candidate,committed:this.committed,committing:this.committing,current:this.current,editing:this.editing,animating:this.animating}}#l({value:e,domain:t}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.value=e,this.#t.candidate=e,this.#t.committed=e,this.#t.committing=e,this.#t.current=e,this.#t.editing=!1,this.#t.animating=!1,this.#t.domain=t}restore(){let e={type:`restore`,value:this.value,domain:this.#t.domain};this.dispatchEvent(new w(`sync`,e)),this.#l(e)}},ve=class extends T{time;zoom;constructor(e){super(),this.time=new O,this.zoom=new O,this.time=new O({initialValue:E(e.time??null),domain:me(e.timeRange??[void 0,null]),onNull:()=>Date.now()/1e3}),this.zoom=new O({initialValue:e.zoom??0,domain:e.zoomRange}),this.time.on(`change`,()=>this.changed()),this.zoom.on(`change`,()=>this.changed()),this.time.on(`valuechanging`,e=>this.dispatchEvent(new w(`timechanging`,e.value))),this.time.on(`valuechanged`,e=>this.dispatchEvent(new w(`timechanged`,e.value))),this.zoom.on(`valuechanging`,e=>this.dispatchEvent(new w(`zoomchanging`,e.value.number()))),this.zoom.on(`valuechanged`,e=>this.dispatchEvent(new w(`zoomchanged`,e.value.number())))}setTime(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??=`out`;try{this.time.setValue(E(e),t)}catch{return!1}return!0}setTimeRange(e){this.time.domain=me(e??[void 0,null])}setZoom(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??={animation:`linear`,duration:200,lazy:this.zoom.value.lt(e)};try{this.zoom.setValue(b(e),t)}catch{return!1}return!0}setZoomRange(e){this.zoom.domain=(e??[void 0,void 0]).map(b)}};function k(e,...t){return typeof e==`function`?e(...t):Array.isArray(e)?e.map(e=>k(e,...t)):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,n])=>[e,k(n,...t)])):e}function ye(e){return function(t){let n=e.split(`,`).map(e=>e.trim()),r=t;for(let e of n){let n=e.split(`.`);r=t;for(let e=0;e<n.length&&r!=null;e++){if(typeof r!=`object`){r=null;break}r=r[n[e]]}if(r!=null)return r}return r}}function be(e){return Object.prototype.toString.call(e)===`[object Object]`}function xe(e,t){for(let n in t){let r=t[n],i=e[n];Array.isArray(r)?e[n]=r.slice():r&&typeof r==`object`&&be(r)?((!i||typeof i!=`object`)&&(e[n]={}),xe(e[n],r)):e[n]=r}return e}const A={z:0,r:b(1)};function Se(e){return A.r.eq(e)?A.z:-e.log(C.base).number()}function Ce(e){return A.z===e?A.r:(A.z=e,A.r=b(C.base).pow(-e,BigInt(Math.floor(e))),A.r)}function we(e,t){return t?t.reduce((t,n)=>Math.abs(n-e)<Math.abs(t-e)?n:t,t[0]):Number(b(e).floorBy(C.chunkStep).toFixed(2))}var Te=class{values;constructor(...e){this.values=e}clone(){return new this.constructor(...this.values)}get length(){return this.values.length}set(...e){return this.values=e,this}add(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]+=e[t];return this}sub(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]-=e[t];return this}scale(e){for(let t=this.length-1;t>=0;t--)this.values[t]*=e;return this}get norm(){return Math.sqrt(this.values.reduce((e,t)=>e+t**2,0))}normalize(){let e=this.norm;return e?this.scale(1/e):this}distanceTo(e){return this.clone().sub(e).norm}},Ee=class extends Te{get x(){return this.values[0]}set x(e){this.values[0]=e}get y(){return this.values[1]}set y(e){this.values[1]=e}toJSON(){return{x:this.x,y:this.y}}},De=class{#e=`none`;#t={};#n=[];#r;#i;#a={none:[[[`pointerdown`,1,this.#o.bind(this)],`down`,[`down`]]],down:[[[`pointerdown`,2,this.#s.bind(this)],`pinch`,[`drag:start`,`pinch:start`]],[[`pointermove`,1,this.#l.bind(this)],`drag`,[`drag:start`]],[[`pointerup`,0],`none`,[`click`,`up`]],[[`pointercancel`,0],`none`,[`up`]]],drag:[[[`pointerdown`,2,this.#s.bind(this)],`pinch`,[`pinch:start`]],[[`pointermove`,1],`drag`,[`drag:update`]],[[`pointerup`,0],`none`,[`drag:end`,`up`]],[[`pointercancel`,0],`none`,[`drag:end`,`up`]]],pinch:[[[`pointermove`,2],`pinch`,[`pinch:update`]],[[`pointerup`,1,this.#c.bind(this)],`drag`,[`pinch:end`]],[[`pointercancel`,0],`none`,[`pinch:end`,`up`]]]};get state(){return this.#e}disabled=!1;#o(e){return this.#n.forEach(e=>e.anchor=e.latest.clone()),!0}#s(e){return this.#n.forEach(e=>e.anchor=e.latest.clone()),!0}#c(e){return this.#n.forEach(e=>e.anchor=e.latest.clone()),!0}#l(){let e=this.#n.find(e=>e.pressed)||this.#n[0];return e.latest.distanceTo(e.anchor)<4?!1:(this.#n.forEach(e=>e.anchor=e.latest.clone()),!0)}#u(e){if(this.disabled)return;let t=new Ee(e.clientX,e.clientY),n=this.#i(t,e)??t,r=!!(e.buttons&1),i=this.#t[e.pointerId]?.latest??n;this.#t[e.pointerId]={pointerId:e.pointerId,last:i,latest:n,delta:n.clone().sub(i),anchor:this.#t[e.pointerId]?.anchor??n,pressed:r};let a=Object.values(this.#t),o=a.filter(e=>e.pressed).length;this.#n=a.filter(t=>t.pressed||t.pointerId===e.pointerId),this.#m(e,o),this.#f(e),r||delete this.#t[e.pointerId]}#d;async#f(e){this.#r&&this.#d&&(this.#r.style.cursor=await this.#d({type:`cursor`,state:this.#e,buttons:this.#n,latest:this.#t[e.pointerId],shiftKey:e.shiftKey})??``)}#p;#m(e,t){let[[n,r,i],a,o]=this.#a[this.#e].find(([[n,r]])=>(n===`*`||n===e.type)&&(r===void 0||r===t))??[[`*`],this.#e];i?.(e)!==!1&&(this.#e=a,o&&o.forEach(t=>this.#p({type:t,state:this.#e,buttons:this.#n,latest:this.#t[e.pointerId],shiftKey:e.shiftKey})))}constructor(e={}){this.#i=e.transform??(e=>e),this.#p=e.handler??(async()=>void 0),this.#d=e.cursor,e.element&&this.attach(e.element)}#h;attach(e){this.#h?.abort(),this.#h=new AbortController;let t=this.#h.signal,n=e=>this.#u(e);return e.addEventListener(`pointerdown`,n,{signal:t}),window.addEventListener(`pointermove`,n,{passive:!0,signal:t}),window.addEventListener(`pointerup`,n,{passive:!0,signal:t}),window.addEventListener(`pointercancel`,n,{passive:!0,signal:t}),e.addEventListener(`touchstart`,e=>e.preventDefault(),{signal:t}),this.#r=e,this}detach(){this.#h?.abort()}};let Oe=0;function ke(e){return function(t,n,r={rpc:!1}){let i=++Oe;return e.postMessage({type:r.rpc?`rpc`:`event`,command:t,seq:i,payload:je(n,r.transfer)},r.transfer??[]),r.rpc?new Promise(n=>{let r=a=>{a.data.type===`rpc:ack`&&a.data.command===t&&a.data.seq===i&&(e.removeEventListener(`message`,r),n(M(a.data?.payload)))};e.addEventListener(`message`,r)}):Promise.resolve()}}function Ae(e,t){return e.addEventListener(`message`,async({data:{type:n,command:r,seq:i,payload:a}})=>{let o=r in t&&await t[r](M(a))||null;n===`rpc`&&e.postMessage({type:`rpc:ack`,command:r,seq:i,payload:je(o)})}),t}function j(e,t,n){if(e==null)return e;let r=typeof e;if(r===`string`||r===`number`||r===`boolean`||r===`bigint`)return e;if(r===`undefined`||r===`symbol`||r===`function`)return;if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||t?.includes(e))return e;if(n.has(e))throw TypeError(`Cannot serialize circular reference`);if(n.add(e),typeof e.toJSON==`function`){let r=e.toJSON();if(r!==e){let i=j(r,t,n);return n.delete(e),i}}if(Array.isArray(e)){let r=Array(e.length);for(let i=0;i<e.length;i++)r[i]=j(e[i],t,n);return n.delete(e),r}if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return n.delete(e),e;let i={};for(let r of Object.keys(e))i[r]=j(e[r],t,n);return n.delete(e),i}function je(e,t){return j(e,t,new WeakSet)}function Me(e){return typeof e==`object`&&!!e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`}function M(e){if(e==null)return e;let t=typeof e;if(t===`string`||t===`number`||t===`boolean`||t===`bigint`)return e;if(!(t===`undefined`||t===`symbol`||t===`function`)){if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas)return e;if(Me(e))return b(e);if(Array.isArray(e))return e.map(M);if(e&&typeof e==`object`){let t={};for(let n of Object.keys(e))t[n]=M(e[n]);return t}return e}}const Ne=[[`font-style`,`style`],[`font-weight`,`weight`],[`font-stretch`,`stretch`],[`unicode-range`,`unicodeRange`],[`font-variant`,`variant`],[`font-feature-settings`,`featureSettings`],[`font-display`,`display`],[`ascent-override`,`ascentOverride`],[`descent-override`,`descentOverride`],[`line-gap-override`,`lineGapOverride`]];function Pe(){return{visited:new Set}}function Fe(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):t}function Ie(e,t){return e.replace(/url\(([^)]+)\)/gi,(e,n)=>{let r=n.trim(),i=Fe(r);if(!i)return`url(${n})`;try{let e=new URL(i,t).toString(),n=r.startsWith(`"`)?`"`:r.startsWith(`'`)?`'`:``;return`url(${n}${e}${n})`}catch{return`url(${n})`}})}function Le(e,t){let n=e.style.getPropertyValue(`font-family`),r=e.style.getPropertyValue(`src`),i=Fe(n);if(!i||!r)return null;let a={};for(let[t,n]of Ne){let r=e.style.getPropertyValue(t);r.trim()&&(a[n]=r.trim())}return{family:i,source:t?Ie(r,t):r,desc:a}}function N(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof location<`u`&&location.href)return location.href}function Re(e,t){try{return t?new URL(e,t).toString():new URL(e).toString()}catch{return null}}function ze(e){try{let t=e.cssRules;return Array.from(t)}catch{return null}}async function Be(e,t,n){let r=[],i=t??N();for(let t of e){if(t.type===CSSRule.FONT_FACE_RULE){let e=Le(t,i);e&&r.push(e);continue}if(t.type===CSSRule.IMPORT_RULE){let e=Re(t.href,i);if(!e)continue;r.push(...await P(e,n))}}return r}async function Ve(e,t,n){let r=ze(e);return r?await Be(r,t??e.href??N(),n):e.href?await P(e.href,n,t):[]}async function P(e,t,n){let r=Re(e,n);if(!r||t.visited.has(r))return[];if(t.visited.add(r),typeof fetch>`u`||typeof CSSStyleSheet>`u`)throw Error(`Failed to load CSS: ${r}`);try{let e=await fetch(r);if(!e.ok)throw Error();let n=await e.text(),i=new CSSStyleSheet;return await i.replace(n),await Ve(i,e.url,t)}catch{throw Error(`Failed to load CSS: ${r}`)}}async function He(e){let t=Pe(),n=[];for(let r of e){if(typeof r==`string`){let e=await P(r,t);n.push(...e);continue}else typeof r.source==`string`&&(r.source=Ie(r.source,location.href));n.push(r)}return n}async function Ue(){if(typeof document>`u`||!document.styleSheets)return[];let e=Pe(),t=[],n=N();for(let r of Array.from(document.styleSheets)){let i;try{i=r}catch{continue}let a=i.href??n;try{let n=await Ve(i,a,e);t.push(...n)}catch{continue}}return t}var We=class{options;constructor(e){this.options=e}loadMeta(e){}},Ge=class extends We{constructor(e){super(e)}async loadChunk(e){let t=await this.options.series.loadChunk(e);return await this.transform(t)}async transform(e){return e}};const Ke={lines:{links:[{draw:`line`}]},"lines:filled":{links:[{draw:`area`},{draw:`line`}]},curves:{links:[{draw:`curve`}]},"curves:filled":{links:[{draw:`curve-area`},{draw:`curve`}]},"steps-start":{links:[{draw:`step-start`}]},"steps-start:filled":{links:[{draw:`step-area-start`},{draw:`step-start`}]},steps:{links:[{draw:`step`}]},"steps:filled":{links:[{draw:`step-area`},{draw:`step`}]},"steps-end":{links:[{draw:`step-end`}]},"steps-end:filled":{links:[{draw:`step-area-end`},{draw:`step-end`}]},points:{marks:[{draw:`circle`}]},linespoints:{links:[{draw:`line`}],marks:[{draw:`circle`}]},"linespoints:filled":{links:[{draw:`area`},{draw:`line`}],marks:[{draw:`circle`}]},curvespoints:{links:[{draw:`curve`}],marks:[{draw:`circle`}]},"curvespoints:filled":{links:[{draw:`curve-area`},{draw:`curve`}],marks:[{draw:`circle`}]},"stepspoints-start":{links:[{draw:`step-start`}],marks:[{draw:`circle`}]},"stepspoints-start:filled":{links:[{draw:`step-area-start`},{draw:`step-start`}],marks:[{draw:`circle`}]},stepspoints:{links:[{draw:`step`}],marks:[{draw:`circle`}]},"stepspoints:filled":{links:[{draw:`step-area`},{draw:`step`}],marks:[{draw:`circle`}]},"stepspoints-end":{links:[{draw:`step-end`}],marks:[{draw:`circle`}]},"stepspoints-end:filled":{links:[{draw:`step-area-end`},{draw:`step-end`}],marks:[{draw:`circle`}]},impulses:{marks:[{draw:`line`,using:[`value`,`zero`]}]},impulsespoints:{marks:[{draw:`line`,using:[`value`,`zero`]},{draw:`circle`}]},boxes:{marks:[{draw:`box`,using:[`value`,`zero`],style:{fillColor:`transparent`}}]},"boxes:filled":{marks:[{draw:`box`,using:[`value`,`zero`]}]}};function qe(e){return Ke[e]??{}}var Je=class extends Ge{marks;links;constructor(e){super(e);let t=typeof e.series.options.chart==`string`?qe(e.series.options.chart):e.series.options.chart??{};this.marks=t.marks,this.links=t.links}async transform(e){let t=e.data?.map(t=>{let n={resolution:e.resolution,data:t.data??{},time:t.time,value:t.value},r=k(this.marks,n);return{...t,marks:r?.map(e=>({...e,style:k(e.style,n)??{}}))??[]}});return{...e,data:t}}async loadMeta({resolution:e}){return{links:k(this.links,{resolution:e})?.map(e=>({...e,style:k(e.style,null)??{}}))??[],color:this.options.series.color,...this.options.series.dataRange}}};function Ye(e){let t=typeof e==`string`?[e,e]:e.length===1?[e[0],e[0]]:e,n=t[0].split(`@`),r=t[1].split(`@`);return[[n[0]||`value`,n[1]||`time`],[r[0]||`value`,r[1]||`time`]]}function Xe(e){return e?{using:e.using??`value`,zoom:e.zoom}:{using:`value`,zoom:void 0}}function Ze(e){let t=({name:e,unit:t,digits:n,value:r})=>{if(r==null)return`No data`;let i=[];return e&&i.push(e),i.push(r.toFixed(n)),t&&i.push(t),i.join(` `)};return typeof e==`boolean`||!e?{format:t}:{...e,format:e.format??t}}var Qe=class extends Ge{#e;#t;constructor(e){super(e),this.#e=Xe(e.series.options.data.instantaneous),this.#t=Ze(e.series.options.tooltip)}async transform(e){let{name:t,unit:n,digits:r}=this.options.series,i=this.#t.format,a=Ye(k(this.#e.using,e))[0],o=e.data?.flatMap(e=>{if(!this.#e)return[];let o=e.time[a[1]],s=e.value[a[0]];return[{time:{time:o},value:s,text:i({time:o,value:s,unit:n,digits:r,name:t})}]});return{...e,data:o}}async loadMeta(e){let t=this.options.series.color;return{...this.options.series.dataRange,color:t}}};const $e=b(1n),et=b(0n),F=60n,I=F*60n,L=I*24n,R=8640000000000n;function z(e,t){let n=e/t,r=e%t;return r!==0n&&r>0n!=t>0n&&(n-=1n),n}function tt(e,t){return e-z(e,t)*t}function nt(e){return e>0n?e:e+1n}function rt(e){return e>0n?e:e-1n}function B(e,t){let n=nt(e),r=t-1n,i=z(r,12n),a=r-i*12n;return{year:rt(n+i),month:a+1n,day:1n}}function V(e,t,n){let r=B(e,t);return at(it(r.year,r.month,n))}function it(e,t,n){let r=nt(e),i=t,a=n;i<=2n&&(r-=1n);let o=r/400n-(r<0n?1n:0n),s=r-o*400n;i+=i>2n?-3n:9n;let c=(153n*i+2n)/5n+a-1n,l=s*365n+s/4n-s/100n+c;return o*146097n+l-719468n}function at(e){let t=e+719468n,n=t/146097n-(t<0n?1n:0n),r=t-n*146097n,i=(r-r/1460n+r/36524n-r/146096n)/365n,a=i+n*400n,o=r-(365n*i+i/4n-i/100n),s=(5n*o+2n)/153n,c=o-(153n*s+2n)/5n+1n,l=s+(s<10n?3n:-9n);return l<=2n&&(a+=1n),{year:rt(a),month:l,day:c}}function ot(e){return e>R?R:e<-R?-R:e}function st(e){let t=ot(e);return-BigInt(Math.floor(new Date(Number(t)*1e3).getTimezoneOffset()))*F}function ct(e){return st(e)}function lt(e){return st(e)}function ut(e){let t=it(e.year,e.month,e.day),n=e.hour*I+e.minute*F+e.second,r=t*L+n;return b(r-lt(r)).add(e.subseconds)}function dt(e){let t=V(e.year,e.month,e.day),n=e.subseconds.modPositive($e),r=e.subseconds.sub(n).integer(),i=e.second+r;return ut({...e,...t,second:i,subseconds:n})}function ft(e){let[t]=e.split(),n=ct(t.integer()),[r,i]=e.add(b(n)).split(),a=r.integer(),o=z(a,L),s=tt(a,L),c=at(o),l=z(s,I),u=s-l*I,d=z(u,F),f=tt(u,F);return{year:c.year,month:c.month,day:c.day,hour:l,minute:d,second:f,subseconds:i}}function H(e,t){return dt({...t(ft(e)),hour:0n,minute:0n,second:0n,subseconds:et})}function U(e,t,n=0n){return t?Array.isArray(t)?t.map(e=>BigInt(e)).filter(t=>t<=e).toSorted().at(-1)??e:(t=BigInt(t),(e-n)/t*t+n):e}function W(e,t,n=0n){return t?Array.isArray(t)?t.map(e=>BigInt(e)).filter(t=>e<t).toSorted().at(0):(t=BigInt(t),((e-n)/t+1n)*t+n):e}function pt(e,t){return H(e,e=>({...V(e.year,e.month,U(e.day,t,1n))}))}function mt(e,t){return H(e,e=>{let n=W(e.day,t,1n);return n?V(e.year,e.month,n):B(e.year,W(e.month,1n,1n))})}function ht(e,t){return H(e,e=>B(e.year,U(e.month,t,1n)))}function gt(e,t){return H(e,e=>B(e.year,W(e.month,t,1n)))}function _t(e,t){return H(e,e=>{let n=U(e.year<=0n?e.year-1n:e.year,t,0n);return{year:n<=0n?n+1n:n,month:1n,day:1n}})}function vt(e,t){return H(e,e=>{let n=W(e.year<=0n?e.year-1n:e.year,t);return{year:n<=0n?n+1n:n,month:1n,day:1n}})}function yt(e,t){let n=b(t),r=pt(e,1n);return e.sub(r).floorBy(n).add(r)}function bt(e,t){return e.add(b(t))}function xt(e,t){return e===!1?null:((e===!0||e==null)&&(e=t),e)}const St={s:0n,ms:3n,us:6n,ns:9n};function Ct({time:e,digits:t}){return t>0?e.toFixed(t):e.toString()}function G(e,t,n){if(t===n)return e;let r=St[t]??0n,i=(St[n]??0n)-r;return e.shift10(i)}function*wt(e,t,n){if(!e[0]||!e[1])return;let r=n.timeFormat??Ct,i=b(C.defaultChunkSize),a=t.mul(i).log(10).round().integer(),o=b(10).pow(a,-a),s=t.mul(b(20)),c=[10n,5n,1n],l=o,u=1n;for(let e of c){let t=o.div(b(e));if(!t.lt(s)){l=t,u=e;break}}if(l.isZero())return;let d=b(u),f=b(1n),p=e[0].div(l).floor().sub(f),m=Math.max(0,-l.log(10).floor().number());for(let t=0;t<1e6;t+=1){p=p.add(f);let t=l.mul(p);if(t.ge(e[1]))break;if(t.lt(e[0]))continue;let i=p.mod(d).isZero();yield{time:{time:t},major:i,tick:!0,text:i?r({time:t,unit:n.timeUnit??`s`,level:`relative`,digits:m,stride:void 0}):``}}}function K(e){return{align:t=>yt(t,e),next:t=>bt(t,e)}}function q(e){return e=e.mul(60),{align:t=>yt(t,e),next:t=>bt(t,e)}}function J(e){return e=e.mul(3600),{align:t=>yt(t,e),next:t=>bt(t,e)}}function Y(e){return{align:t=>pt(t,e),next:t=>mt(t,e)}}function X(e){return{align:t=>ht(t,e),next:t=>gt(t,e)}}function Tt(e){return{align:t=>_t(t,e),next:t=>vt(t,e)}}const Et=[{ops:K,stride:1,step:1},{ops:K,stride:5,step:5},{ops:K,stride:10,step:10},{ops:K,stride:15,step:15},{ops:K,stride:30,step:30},{ops:q,stride:1,step:1},{ops:q,stride:5,step:5},{ops:q,stride:10,step:10},{ops:q,stride:15,step:15},{ops:q,stride:30,step:30},{ops:J,stride:1,step:1},{ops:J,stride:3,step:3},{ops:J,stride:6,step:6},{ops:J,stride:12,step:12},{ops:Y,stride:1,step:1},{ops:Y,stride:10,step:[1,10,20]},{ops:X,stride:1,step:1},{ops:X,stride:3,step:3}],Dt=b(86400),Ot=b(`2629800`),kt=b(`31557600`),At=b(60),jt=b(20),Mt=[1n,5n],Nt=[1n,5n],Pt=[`subsecond`,`second`,`minute`,`hour`,`day`,`month`,`year`];function Ft(e){switch(e.ops){case K:return`second`;case q:return`minute`;case J:return`hour`;case Y:return`day`;case X:return`month`;default:throw Error(`Unknown calendar definition`)}}function It(e){let{ops:t,step:n}=e;if(t===K||t===q||t===J)return t(b(n));if(t===Y||t===X)return t(Array.isArray(n)?n.map(e=>BigInt(e)):BigInt(n));throw Error(`Unsupported definition`)}function Lt(e){let t=b(BigInt(e.stride));switch(Ft(e)){case`second`:return b(e.step);case`minute`:return b(e.step).mul(60);case`hour`:return b(e.step).mul(3600);case`day`:return t.mul(Dt);case`month`:return t.mul(Ot);default:return b(0)}}const Rt=Et.map(e=>({level:Ft(e),stride:BigInt(e.stride),duration:Lt(e),digits:0,create:()=>It(e),source:e})).sort((e,t)=>e.duration.lt(t.duration)?-1:e.duration.gt(t.duration)?1:0),zt=Rt.reduce((e,t)=>{let n=e.get(t.level);return n?n.push(t):e.set(t.level,[t]),e},new Map);function Bt(e){if(e.digits<=0n)return 0;let t=e.digits,n=BigInt(2**53-1);return t>n&&(t=n),Number(t)}function Vt(e,t,n){return{level:`subsecond`,stride:1n,duration:e,digits:Bt(e),create:()=>K(e),subsecondMetadata:{exponent:t,factor:n}}}function Ht(e,t,n){let r=t&&t.lt(b(1))?t:b(1),i=e.lt(b(1));if(!i&&!n)return null;let a=i?e:b(1),o;a.isPositive()?(o=a.log(10).floor().integer(),o>=0n&&(o=-1n)):o=-1n;let s=null;for(let e=o;e<0n;e+=1n){let t=b(10).pow(e,-e);for(let n of Mt){let i=t.mul(b(n));if(i.lt(r)){if(a.isZero()||!i.lt(a))return Vt(i,e,n);(!s||s.step.lt(i))&&(s={step:i,exponent:e,factor:n})}}}return n&&s?Vt(s.step,s.exponent,s.factor):null}function Ut(e){let t=e.isPositive()?e:b(0);for(let e of Rt)if(t.isZero()||!e.duration.lt(t))return e;return null}function Wt(e,t,n,r){let i=zt.get(e);if(!i)return null;let a=t.isPositive()?t:b(0),o=null;for(let e of i){if(n&&!e.duration.lt(n))break;if(a.isZero()||!e.duration.lt(a))return e;o=e}return r&&o?o:null}function Gt(e){if(e<=0n)return 1n;let t=1n,n=10n,r=e;for(;r>0n;)(r&1n)==1n&&(t*=n),n*=n,r>>=1n;return t}function Kt(e){return{level:`year`,stride:e,duration:b(e).mul(kt),digits:0,create:()=>Tt(e),yearStride:e}}function qt(e){let t=e.isPositive()?e:b(0);if(t.isZero())return Kt(1n);let n=t.div(kt).log(10).floor().integer();n<0n&&(n=0n);for(let e=n;;e+=1n){let n=Gt(e);for(let e of Nt){let r=Kt(n*e);if(!r.duration.lt(t))return r}}}function Jt(e){return Pt.indexOf(e)}function Yt(e,t){let n=Jt(e.level);if(n<=0)return null;let r=Pt[n-1],i=e.duration;if(e.level===`year`){for(let n of[5n,4n,2n]){if(e.stride%n!==0n)continue;let r=e.stride/n;if(r<=0n)continue;let i=Kt(r);if(!i.duration.lt(t)&&i.duration.lt(e.duration))return i}let n=qt(t);return n.duration.lt(e.duration)?n:null}if(e.level===`subsecond`){let n=Ht(t,e.duration,!0);return n&&n.duration.lt(e.duration)?n:null}let a=e.level,o=zt.get(a)??[];for(let n=o.length-1;n>=0;--n){let r=o[n];if(r.duration.lt(e.duration)&&!r.duration.lt(t))return r}if(r===`subsecond`){let n=Ht(t,i,!0);return n&&n.duration.lt(e.duration)?n:null}return r===`year`?null:Wt(r,t,i,!0)}function Xt(e){if(!e||!e.isPositive())return null;let t=e.mul(At),n=e.mul(jt),r=Ht(t,null,!1);if(r||=Ut(t),r||=qt(t),!r)return null;let i=Yt(r,n);return{level:r.level,major:r.create(),minor:i?i.create():null,digits:r.digits,stride:r.stride}}function Zt(e){return e.replace(/[0-9]/g,e=>String.fromCodePoint(e.charCodeAt(0)-48+8320))}function Qt(e){let{time:t,unit:n}=e,r=e,{year:i,month:a,day:o,hour:s,minute:c,second:l,subseconds:u}=ft(G(t,n,`s`)),d=(e,t)=>e.toString().padStart(t,`0`),f=e=>d(e,2),p=e=>e>0n?e.toString():` ${(1n-e).toString()} BC`,m=()=>`${f(a)}/${f(o)}`,h=()=>`${f(s)}:${f(c)}`,g=r.digits>0?`.`+Zt(u.toFixed(r.digits).split(`.`)[1]):``,_=()=>`${f(s)}:${f(c)}:${f(l)}${g}`;switch(r.level){case`subsecond`:case`second`:return s===0n&&c===0n&&l===0n&&u.eq(0)?m():_();case`minute`:case`hour`:return s===0n&&c===0n?m():h();case`day`:return m();case`month`:if((r.stride??1n)===3n){let e=Math.floor((Number(a)-1)/3)+1;return e===1?`${p(i)} Q${e}`:`Q${e}`}return`${p(i)}/${f(a)}`;case`year`:default:return p(i)}}function $t(e,t,n){if(!e)return null;let r=e.next(t);return!r||r.le(t)||r.ge(n)?null:r}function*en(e,t,n){if(!e[0]||!e[1])return;let r=n.timeUnit??`s`,i=n.timeFormat??Qt,a=G(e[0],r,`s`),o=G(e[1],r,`s`);if(o.le(a))return;t=G(t,r,`s`);let s=Xt(t);if(!s)return;let c=s.major.align(a),l=s.minor?.align(a)??null;for(;c||l;){if(c!=null&&(l==null||c.le(l))&&c){if(a.le(c)){let e=G(c,`s`,r);yield{time:{time:e},major:!0,tick:!0,text:i({time:e,unit:r,...s})}}l&&l.eq(c)&&(l=$t(s.minor,l,o)),c=$t(s.major,c,o);continue}l&&=(a.le(l)&&(yield{time:{time:G(l,`s`,r)},major:!1,tick:!0,text:``}),$t(s.minor,l,o))}}var tn=class extends We{constructor(e){e={...e,timeAxis:xt(e.timeAxis,{timeUnit:`s`})},super(e)}async loadChunk(e){let t=[...this.options.timeAxis.relative?wt(e.range,e.resolution,this.options.timeAxis):en(e.range,e.resolution,this.options.timeAxis)].map(e=>({...e,time:{time:e.time.time,_minTime:e.time.time,_maxTime:e.time.time}}));return{...e,data:t}}},nn=class{#e;#t;constructor(e){let{maxSize:t}=e;if(!(typeof t==`number`&&Number.isFinite(t)&&t>0))throw TypeError("`maxSize` must be a number greater than 0");this.#e=Math.floor(t),this.#t=new Map}get size(){return this.#t.size}get maxSize(){return this.#e}get(e){if(!this.#t.has(e))return;let t=this.#t.get(e);return this.#t.delete(e),this.#t.set(e,t),t}set(e,t){if(this.#t.has(e)&&this.#t.delete(e),this.#t.set(e,t),this.#t.size>this.#e){let e=this.#t.keys().next().value;e!==void 0&&this.#t.delete(e)}return this}has(e){return this.#t.has(e)}delete(e){return this.#t.delete(e)}clear(){this.#t.clear()}*keys(){let e=Array.from(this.#t.keys());for(let t=e.length-1;t>=0;t--)yield e[t]}*values(){for(let[,e]of this)yield e}*entries(){yield*this[Symbol.iterator]()}*[Symbol.iterator](){let e=Array.from(this.#t.entries());for(let t=e.length-1;t>=0;t--)yield e[t]}};function rn(e,t,n=C.defaultChunkSize){let r=Ce(t),i=r.mul(n);if(!e[0]||!e[1]||!i.isPositive())return[{id:`z${t}`,seq:0n,expires:1/0,range:e,resolution:r,zoom:t}];let a=[],o=e[1].add(i);for(let n=e[0];n.le(o);n=n.add(i)){let e=n.div(i).floor().integer(),o=[i.mul(e),i.mul(e+1n)],s=`z${t}:seq${e}`;a.push({id:s,seq:e,expires:1/0,range:o,resolution:r,zoom:t})}return a}function an(e){return!!(x(e)||typeof e==`number`||typeof e==`string`||typeof e==`bigint`)}function on(e){return e==null?{shrink:!0,expand:!0,default:[b(0),void 0]}:Array.isArray(e)?{shrink:!0,expand:!0,default:e.map(b)}:typeof e==`number`||an(e)?{shrink:!0,expand:!0,default:[b(0),b(e)]}:e.default!=null&&!Array.isArray(e.default)?{shrink:e.shrink??!0,expand:e.expand??!0,default:[b(0),b(e.default)]}:{shrink:e.shrink??!0,expand:e.expand??!0,default:(e.default??[0,void 0]).map(b)}}function sn(e,t){return e._minTime?.le(t[1])&&t[0]?.le(e._maxTime)}var cn=class{#e;#t;#n;#r=new nn({maxSize:256});#i={min:b(0),max:b(1)};#a;constructor(e){this.#e=e.options,this.#t=e.sources,this.#a=e.options.data.color,this.#n=on(e.options.data.range)}get name(){return this.#e.data.name??``}get digits(){return this.#e.data.digits??1}get unit(){return this.#e.data.unit??``}get zoomLevels(){return this.#t[this.#e.data.source].zoomLevels}get chunkSize(){return this.#t[this.#e.data.source].chunkSize}get options(){return this.#e}async loadChunk(e){let t=await this.#t[this.#e.data.source].loadChunk(e),n=this.#e.data.parser?.(t.data)??t.data;if(!Array.isArray(n))throw Error(`Invalid data from the source after parsed.`);let r=Object.fromEntries((Array.isArray(this.#e.data.time)?this.#e.data.time.map(e=>[e,e]):Object.entries(typeof this.#e.data.time==`string`||this.#e.data.time==null?{time:this.#e.data.time??`time`}:this.#e.data.time)).map(([e,t])=>[e,typeof t==`function`?t:ye(t)])),i=Object.fromEntries((Array.isArray(this.#e.data.value)?this.#e.data.value.map(e=>[e,e]):Object.entries(typeof this.#e.data.value==`string`||this.#e.data.value==null?{value:this.#e.data.value??`value`}:this.#e.data.value)).map(([e,t])=>[e,typeof t==`function`?t:ye(t)])),a=n.map(e=>{let t=Object.fromEntries(Object.entries(r).map(([t,n])=>[t,E(n(e))])),n=Object.fromEntries(Object.entries(i).map(([t,n])=>[t,re(n(e))]).filter(([,e])=>e!==void 0)),[a,o]=S(...Object.values(t));return t._minTime=a,t._maxTime=o,{time:t,value:n,data:e}});return this.#r.set(t.id,a),{...t,data:a}}updateDataRange(e,t){t=we(t,this.zoomLevels);let[n,r]=S(...rn(e,t,this.chunkSize).flatMap(({id:t})=>{let n=this.#r.get(t);return n?n.flatMap(t=>sn(t.time,e)?S(...Object.values(t.value)):[]):[]}));n==null||r==null||(this.#i={min:this.#n.default[0]==null?n:this.#n.expand?b.min(n,this.#n.default[0],...this.#n.shrink?[]:[this.#i.min]):this.#n.default[0],max:this.#n.default[1]==null?r:this.#n.expand?b.max(r,this.#n.default[1],...this.#n.shrink?[]:[this.#i.max]):this.#n.default[1]})}get color(){return this.#a}get dataRange(){let[,e]=S(this.#i.min.abs(),this.#i.max.abs());return{...this.#i,amp:e}}};function ln(e){return new cn(e)}var un=class extends T{#e=`initial`;#t;#n;#r;#i;#a;#o;#s;get id(){return this.#o}get seq(){return this.#s}get range(){return this.#t}get resolution(){return this.#n}get zoom(){return this.#r}get state(){return this.#e}get expired(){return this.#e!==`loaded`&&this.#e!==`error`||this.#c<=Date.now()}#c=0;get expires(){return this.#c}setExpires(e){this.#c=e}invalidate(){this.#c=0}constructor(e){super(),this.#o=e.id,this.#s=e.seq,this.#t=e.range,this.#n=e.resolution,this.#r=e.zoom,this.#i=e.loader}reload(){return this.load(!0)}async load(e=!1){if(this.#a&&(this.#e===`loading`||!e&&!this.expired))return await this.#a;this.#e=`loading`,this.#c=1/0;try{let e={id:this.#o,seq:this.#s,expires:1/0,range:this.#t.map(e=>e?.clone()),zoom:this.#r,resolution:this.#n.clone()};return this.#a=this.#i(e,{expiresAt:t=>e.expires=t,expiresIn:t=>e.expires=t+Date.now()}).then(t=>(this.#e=`loaded`,this.#c=e.expires??1/0,this.changed(),t||null)),await this.#a}catch(e){return console.error(e),this.#e=`error`,this.changed(),null}}};function Z(e){return async(t,n)=>{let r=await e(t,n);return r instanceof Response?await r.json():r}}var Q=class extends T{#e=new nn({maxSize:1e3});zoomLevels;chunkSize;loader;constructor(e){if(super(),this.chunkSize=e.chunkSize||C.defaultChunkSize,this.zoomLevels=e.zoomLevels,`loader`in e)this.loader=Z(e.loader);else if(`data`in e)this.zoomLevels=[0],this.chunkSize=0,this.loader=async()=>e.data;else if(`url`in e)e.url.match(/{[a-zA-Z]+}/)?this.loader=Z(async t=>{let n=e.url.replace(/{[a-zA-Z]+}/g,e=>{switch(e.substring(1,e.length-1)){case`z`:case`zoom`:return t.zoom.toString();case`r`:case`resolution`:return t.resolution.rescale().toString();case`s`:case`start`:return t.range[0].rescale().toString();case`e`:case`end`:return t.range[1].rescale().toString();default:return console.warn(`Unknown template string is found in the URL: `+e),e}});return await fetch(n)}):(this.zoomLevels=[0],this.chunkSize=0,this.loader=Z(()=>fetch(e.url)));else throw Error(`No source`)}async loadChunk({id:e,seq:t,range:n,resolution:r,zoom:i}){let a=this.#t(e,t,n,r,i),o=await a.load()??void 0;return{id:e,seq:t,expires:a.expires,range:n,resolution:r,zoom:i,data:o}}#t(e,t,n,r,i){let a=this.#e.get(e);return a||(a=new un({id:e,seq:t,loader:this.loader,range:n,resolution:r,zoom:i}),this.#e.set(e,a)),a}async loadData(e,t){t=we(t,this.zoomLevels);let n=rn(e,t,this.chunkSize);return await Promise.all(n.map(e=>this.loadChunk(e)))}async expireChunks(e){for(let t of this.#e.values())(!e||!t.range[1]||t.range[1].gt(e[0])||!t.range[0]||t.range[0].lt(e[1]))&&t.invalidate();this.changed()}};function dn(e){return typeof e==`string`?new Q({url:e}):typeof e==`function`?new Q({loader:e}):e instanceof Q?e:typeof e==`object`&&e&&[`url`,`loader`,`data`].some(t=>t in e)?new Q(e):new Q({data:e})}function fn(e={}){let t=URL.createObjectURL(new Blob([`URL.revokeObjectURL(self.location.href);`,"(function(){function e(e,t=`Digits must be an integer`){if(typeof e==`number`){if(!Number.isFinite(e)||!Number.isInteger(e))throw Error(t);return BigInt(e)}return e}function t(t){let n=e(t);return n<0n?0n:n}function n(e){let t=Number(e);return t<b.length?b[t]:5n**BigInt(e)}function r(e){let t=Number(e);return t<x.length?x[t]:10n**BigInt(e)}function i(e,t,n){let r=BigInt(t);if(r<=0n)return new g(1n);let i=new g(1n),a=e.clone();for(;r&1n&&i.mul$(a,n),r>>=1n,r!==0n;)a.mul$(a,n);return i}function a(e,t,n,r){if(t.isZero()||r<=0)return new g(1n);let{guardPrec:a,rootPrec:s}=f(n,r),c=o(t.coeff).toString().padStart(r,`0`),l=e.round(s),u=new g(1n);for(let e=0;e<r;e++){l=l.root(10n,s);let t=c.charCodeAt(e)-48;if(t<=0)continue;let n=i(l.clone(),t,a);u.mul$(n,a)}return u.round$(n)}function o(e){return e<0n?-e:e}function s(e){if(e===``)throw Error(`Invalid number`);let t=1n,n=e;if(n[0]===`-`?(t=-1n,n=n.slice(1)):n[0]===`+`&&(n=n.slice(1)),n===``)throw Error(`Invalid number`);let r=n.indexOf(`.`),i=n,a=``;r>=0&&(i=n.slice(0,r),a=n.slice(r+1)),i===``&&(i=`0`);let o=(i+a).replace(/^0+/,``),s=o===``?`0`:o;return{coeff:t*BigInt(s),digits:BigInt(a.length)}}function c(e){let t=e.search(/[eE]/);if(t===-1)return s(e);let n=e.slice(0,t),r=e.slice(t+1);if(r.trim()===``)throw Error(`Invalid number`);let{coeff:i,digits:a}=s(n);return{coeff:i,digits:a-BigInt(r)}}function l(e,t){let n=e.digits>t.digits?e.digits:t.digits,i=n-e.digits,a=n-t.digits;return{digits:n,aCoeff:e.coeff*r(i),bCoeff:t.coeff*r(a)}}function u(e){let t=Math.max(0,Number(e));return Math.min(2**53-1,t)}function d(e,t,n){let r=u(t),i=u(n),a=Math.max(r,i)+1,o=Math.max(a,1),s=e+o;for(;;){let t=Math.ceil(s*v)+o,n=Math.max(t*2,1),r=Math.max(a,Math.ceil(Math.log10(n))+1);if(r<=o){let e=s+o;return{guardPrec:o,fracPrec:s,bits:t,divPrec:e}}o=r,s=e+o}}function f(e,t){let n=Math.max(1,t),r=Math.max(6,Math.ceil(Math.log10(n*4))+2),i=e+BigInt(r);return{guardPrec:i,rootPrec:i+BigInt(Math.max(r,6))}}function p(e,t){let n=Math.max(1,t.toString().replace(`-`,``).length),r=Math.max(12,n+4);return{iterPrec:e+BigInt(r),stopShift:e+2n}}function m(e,t,n,r){let i=[],a=[],o=new g(t),s=1n,c=n+Math.max(r,1);for(;o.le(e);)i.push(o),a.push(s),o=o.mul(o),s*=2n;let l=new g(e),u=0n;for(let e=i.length-1;e>=0;e--){let t=i[e];l.ge(t)&&(l.div$(t,c),u+=a[e])}return{exponent:u,remainder:l}}function h(e,t,n,r){let i=n+Math.max(r,1);if(e.eq(y))return{exponent:0n,remainder:y.clone()};if(e.ge(y))return m(e,t,n,r);let a=m(y.div(e,i),t,n,r);return a.remainder.eq(y)?{exponent:-a.exponent,remainder:y.clone()}:{exponent:-a.exponent-1n,remainder:y.div(a.remainder,i).mul$(t)}}var g=class s{coeff;digits;constructor(e,t){if(typeof e==`number`){if(e!==e||e===1/0||e===-1/0)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(e.toString()))}else if(typeof e==`string`){let t=e.trim();if(t===``)throw Error(`Invalid number`);({coeff:this.coeff,digits:this.digits}=c(t))}else if(typeof e==`bigint`)this.coeff=e,this.digits=t??0n;else if(typeof e==`object`&&e&&`coeff`in e&&typeof e.coeff==`bigint`&&`digits`in e&&typeof e.digits==`bigint`)this.coeff=e.coeff,this.digits=e.digits;else throw Error(`Invalid input type for Decimal`)}clone(){return new s({coeff:this.coeff,digits:this.digits})}#e(e,t=0n){return C(e)&&(t=e.digits,e=e.coeff),this.coeff=e,this.digits=t,this}#t(e,t,n){let i=this.coeff,a=e.coeff,s=e.digits+t-this.digits;s>=0n?i*=r(s):a*=r(-s);let c=i/a,l=i-c*a;if(l!==0n&&n!==`trunc`){let e=i>=0n;switch(n){case`floor`:e||(c-=1n);break;case`ceil`:e&&(c+=1n);break;case`round`:{let t=o(l),n=a<0n?-a:a;t*2n>=n&&(c+=e?1n:-1n);break}default:break}}return this.#e(c,t)}#n(t,n=`trunc`){let i=e(t);if(this.isZero())return this.digits=i,this;if(i===this.digits)return this;if(i>this.digits){let e=r(i-this.digits);return this.coeff*=e,this.digits=i,this}return this.#t(y,i,n)}#r(){if(this.coeff===0n)return this.digits=0n,this;if(this.digits<=0n)return this;for(;this.digits>0n&&this.coeff%10n==0n;)this.coeff/=10n,this.digits-=1n;return this}round$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`round`)}round(e=0,t=!1){return this.clone().round$(e,t)}roundBy$(e,t=`round`){let n=new s(e).abs();if(n.isZero())throw Error(`Cannot align to zero`);return this.div$(n,0n,t).mul$(n)}roundBy(e,t=`round`){return this.clone().roundBy$(e,t)}floor$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`floor`)}floor(e=0,t=!1){return this.clone().floor$(e,t)}floorBy$(e){return this.roundBy$(e,`floor`)}floorBy(e){return this.clone().floorBy$(e)}ceil$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`ceil`)}ceil(e=0,t=!1){return this.clone().ceil$(e,t)}ceilBy$(e){return this.roundBy$(e,`ceil`)}ceilBy(e){return this.clone().ceilBy$(e)}trunc$(t=0,n=!1){let r=e(t);return!n&&this.digits<=r?this:this.#n(r,`trunc`)}trunc(e=0,t=!1){return this.clone().trunc$(e,t)}rescale$(e,t=`trunc`){return e==null?this.#r():this.#n(e,t)}rescale(e,t=`trunc`){return this.clone().rescale$(e,t)}truncBy$(e){return this.roundBy$(e,`trunc`)}truncBy(e){return this.clone().truncBy$(e)}#i(e){let t=this.clone();return e(this),[this,t.sub$(this)]}split$(e,t=`floor`){return this.#i(n=>n.#n(e??0n,t))}split(e,t=`floor`){return this.clone().split$(e,t)}splitBy$(e,t=`floor`){return this.#i(n=>n.roundBy$(e,t))}splitBy(e,t=`floor`){return this.clone().splitBy$(e,t)}neg$(e){return e!==!1&&(this.coeff=-this.coeff),this}neg(e){return this.clone().neg$(e)}isZero(){return this.coeff===0n}isPositive(){return this.coeff>0n}isNegative(){return this.coeff<0n}add$(e){let t=S(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r+i,this.digits=n,this}add(e){return this.clone().add$(e)}sub$(e){let t=S(e),{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r-i,this.digits=n,this}sub(e){return this.clone().sub$(e)}mul$(e,t){let n=S(e);return this.coeff*=n.coeff,this.digits+=n.digits,t!==void 0&&this.round$(t),this}mul(e,t){return this.clone().mul$(e,t)}shift10$(t){let n=e(t,`Shift amount must be an integer`);return n===0n||(this.digits-=n),this}shift10(e){return this.clone().shift10$(e)}inverse$(e=_){if(this.isZero())throw Error(`Division by zero`);let n=t(e),r=this.clone();return this.#e(1n).div$(r,n)}inverse(e=_){return this.clone().inverse$(e)}div$(e,n,r=`round`){let i=n===void 0,a=t(n??_),o=S(e);if(o.isZero())throw Error(`Division by zero`);return this.isZero()?this:(this.#t(o,a,r),i?this.#r():this)}div(e,t,n=`round`){return this.clone().div$(e,t,n)}abs$(){return this.isNegative()&&(this.coeff=-this.coeff),this}abs(){return this.clone().abs$()}mod$(e){let t=S(e);if(t.isZero())throw Error(`Division by zero`);let{digits:n,aCoeff:r,bCoeff:i}=l(this,t);return this.coeff=r%i,this.digits=n,this}mod(e){return this.clone().mod$(e)}modPositive$(e){let t=S(e);if(t.isNegative())throw Error(`Modulo divisor must be positive`);return this.mod$(t),this.isNegative()&&this.add$(t),this}modPositive(e){return this.clone().modPositive$(e)}clamp$(e,t){let n=S(e),r=S(t);if(n&&r&&n.gt(r))throw Error(`Invalid clamp range`);return n&&this.lt(n)?(this.coeff=n.coeff,this.digits=n.digits,this):r&&this.gt(r)?(this.coeff=r.coeff,this.digits=r.digits,this):this}clamp(e,t){return this.clone().clamp$(e,t)}cmp(e){let t=S(e),{aCoeff:n,bCoeff:r}=l(this,t);return n===r?0:n>r?1:-1}eq(e){return this.cmp(e)===0}neq(e){return this.cmp(e)!==0}lt(e){return this.cmp(e)<0}gt(e){return this.cmp(e)>0}le(e){return this.cmp(e)<=0}ge(e){return this.cmp(e)>=0}between(e,t){let n=S(e),r=S(t);if(n&&r&&n.gt(r))throw Error(`Invalid between range`);return!(n&&this.lt(n)||r&&this.gt(r))}isCloseTo(e,t){let n=S(t);if(n.isNegative())throw Error(`Tolerance must be non-negative`);return this.sub(e).abs$().le(n)}pow$(e,n=_){let r=t(n),o=S(e);if(o.isZero())return this.#e(1n);if(this.isZero()){if(o.isNegative())throw Error(`Zero to negative exponent is undefined`);return this}let s=o.isNegative(),[c,l]=o.abs().split$(),u=this.clone(),d=l.isZero()?0:Number(l.digits);if(u.isNegative()&&d>0)throw Error(`Fractional exponent requires non-negative base`);let f=i(u,c.coeff),p=r;d>0&&(p=r+BigInt(Math.max(4,d)));let m=a(u,l,p,d);d>0&&f.mul$(m,p);let h=p>r?p:r,g=d>0?p:r;return s?this.#e(1n).div$(f,h):(f.round$(h,!0),this.#e(f)),this.round$(g,g===0n),this}pow(e,t=_){return this.clone().pow$(e,t)}root$(n,r=_){let a=e(n,`Root degree must be an integer`);if(a<=0n)throw Error(`Invalid root degree`);let o=t(r);if(a===1n)return o<this.digits?this:this.trunc$(o,!0);if(this.isZero())return this;let c=this.isNegative();if(c&&a%2n==0n)throw Error(`Even root of negative value is not defined`);let l=this.abs(),u=a-1n,{iterPrec:d,stopShift:f}=p(o,a),m=w(-f),h=(()=>{let e=l.number();if(Number.isFinite(e)&&e>0){let t=Number(a);if(t>0){let n=e**(1/t);if(Number.isFinite(n)&&n>0)return new s(n).round$(d,!0)}}return new s(w(l.order()/a)).round$(d,!0)})();this.#e(h.coeff,h.digits),this.isZero()&&this.#e(1n);for(let e=0;e<64;e++){let e=i(this.clone(),u,d);if(e.isZero())break;let t=l.div(e,d),n=this.mul(u,d).add$(t).div$(a,d);if(n.isCloseTo(this,m)||n.eq(this)){this.#e(n);break}this.#e(n)}return this.round$(d,!0),this.round$(o,o===0n),c&&this.neg$(),this}root(e,t=_){return this.clone().root$(e,t)}sqrt$(e=_){return this.root$(2n,e)}sqrt(e=_){return this.clone().sqrt$(e)}log$(e,r=_){let i=Number(t(r)),a=new s(e);if(!this.isPositive())throw Error(`Logarithm argument must be positive`);if(!a.isPositive())throw Error(`Logarithm base must be positive`);if(a.eq(y))throw Error(`Logarithm base cannot be one`);let{guardPrec:o,fracPrec:c,bits:l,divPrec:u}=d(i,a.digits,this.digits),f=a.lt(y),p=f?y.div(a,u):a,{exponent:m,remainder:g}=h(this,p,c,o);if(this.#e(m),c>0){let e=0n;for(let t=0;t<l;t++)g.mul$(g,u),e<<=1n,g.ge(p)&&(g.div$(p,u),e|=1n);e!==0n&&this.add$({coeff:e*n(l),digits:BigInt(l)})}let v=i===0?0:c;return this.round$(v),f&&this.neg$(),this}log(e,t=_){return this.clone().log$(e,t)}sign$(){return this.isZero()?this:(this.coeff=this.coeff<0n?-1n:1n,this.digits=0n,this)}sign(){return this.clone().sign$()}order(){if(this.isZero())throw RangeError(`order undefined for 0`);return BigInt(o(this.coeff).toString().length)-1n-this.digits}toFixed(t){let n=`Fraction digits must be a non-negative integer`,r=e(t,n);if(r<0n)throw Error(n);return this.round(r,!0).toString()}toString(){if(this.coeff===0n)return this.digits<=0n?`0`:`0.${`0`.repeat(Number(this.digits))}`;let e=this.coeff<0n,t=e?`-`:``,n=(e?-this.coeff:this.coeff).toString();if(this.digits<=0n)return`${t}${n}${`0`.repeat(Number(-this.digits))}`;let r=Number(this.digits),i=n.padStart(r+1,`0`),a=i.length-r;return`${t}${i.slice(0,a)}.${i.slice(a).padEnd(r,`0`)}`}[Symbol.for(`nodejs.util.inspect.custom`)](e,t){return`colors`in t&&t?.colors?`\\x1b[33m${this.toString()}\\x1b[m \\x1b[90m(${this.coeff} * 10 ** ${-this.digits})\\x1b[m`:this.toString()}number(){return Number(this.toString())}integer(){return this.digits<=0n?this.coeff*r(-this.digits):this.coeff/r(this.digits)}};let _=18n,v=Math.log2(10),y=new g(1n),b=[],x=[];(function(){for(let e=0;e<256;e++)x[e]=10n**BigInt(e),b[e]=5n**BigInt(e)})();function S(e){return e==null||C(e)?e:new g(e)}(function(e){function t(e){return e instanceof g}e.isDecimal=t;function n(e){return!!(t(e)||typeof e==`string`||typeof e==`number`||typeof e==`bigint`||typeof e==`object`&&e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`)}e.isDecimalLike=n;function r(e){return new g({coeff:1n,digits:-BigInt(e)})}e.pow10=r;function i(...e){let t=null,n=null;for(let r=0;r<e.length;r++){let i=S(e[r]);i!=null&&((t===null||i.lt(t))&&(t=i),(n===null||i.gt(n))&&(n=i))}return[t,n]}e.minmax=i;function a(...e){return i(...e)[0]}e.min=a;function o(...e){return i(...e)[1]}e.max=o})(S||={});let C=S.isDecimal;S.isDecimalLike;let w=S.pow10;S.minmax,S.min,S.max;let T=0;function ee(e){return function(t,n,r={rpc:!1}){let i=++T;return e.postMessage({type:r.rpc?`rpc`:`event`,command:t,seq:i,payload:ne(n,r.transfer)},r.transfer??[]),r.rpc?new Promise(n=>{let r=a=>{a.data.type===`rpc:ack`&&a.data.command===t&&a.data.seq===i&&(e.removeEventListener(`message`,r),n(D(a.data?.payload)))};e.addEventListener(`message`,r)}):Promise.resolve()}}function te(e,t){return e.addEventListener(`message`,async({data:{type:n,command:r,seq:i,payload:a}})=>{let o=r in t&&await t[r](D(a))||null;n===`rpc`&&e.postMessage({type:`rpc:ack`,command:r,seq:i,payload:ne(o)})}),t}function E(e,t,n){if(e==null)return e;let r=typeof e;if(r===`string`||r===`number`||r===`boolean`||r===`bigint`)return e;if(r===`undefined`||r===`symbol`||r===`function`)return;if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||t?.includes(e))return e;if(n.has(e))throw TypeError(`Cannot serialize circular reference`);if(n.add(e),typeof e.toJSON==`function`){let r=e.toJSON();if(r!==e){let i=E(r,t,n);return n.delete(e),i}}if(Array.isArray(e)){let r=Array(e.length);for(let i=0;i<e.length;i++)r[i]=E(e[i],t,n);return n.delete(e),r}if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return n.delete(e),e;let i={};for(let r of Object.keys(e))i[r]=E(e[r],t,n);return n.delete(e),i}function ne(e,t){return E(e,t,new WeakSet)}function re(e){return typeof e==`object`&&!!e&&`coeff`in e&&`digits`in e&&typeof e.coeff==`bigint`&&typeof e.digits==`bigint`}function D(e){if(e==null)return e;let t=typeof e;if(t===`string`||t===`number`||t===`boolean`||t===`bigint`)return e;if(!(t===`undefined`||t===`symbol`||t===`function`)){if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas)return e;if(re(e))return S(e);if(Array.isArray(e))return e.map(D);if(e&&typeof e==`object`){let t={};for(let n of Object.keys(e))t[n]=D(e[n]);return t}return e}}function O(e,...t){return typeof e==`function`?e(...t):Array.isArray(e)?e.map(e=>O(e,...t)):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,n])=>[e,O(n,...t)])):e}function ie(e){return Object.prototype.toString.call(e)===`[object Object]`}function ae(e,t){for(let n in t){let r=t[n],i=e[n];Array.isArray(r)?e[n]=r.slice():r&&typeof r==`object`&&ie(r)?((!i||typeof i!=`object`)&&(e[n]={}),ae(e[n],r)):e[n]=r}return e}var k={clickTolerance:8,defaultChunkSize:256,base:2,chunkStep:1,wheelStep:.5};function oe(e){if(globalThis._uid||(globalThis._uid=1),e){if(`_uid`in e)return String(e._uid);e._uid=String(globalThis._uid),Object.defineProperty(e,`_uid`,{enumerable:!1})}return String(globalThis._uid++)}var se=class{uid=oe(this);#e={};dispatchEvent(e){let t=typeof e==`string`?e:e.type,n=this.#e[t];if(n)for(let t of n)t(e)}on(e,t){let n=this.#e[e]??[];return n.push(t),this.#e[e]=n,()=>this.un(e,t)}un(e,t){let n=this.#e[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}},A=class{type;value;origin;stopped=!1;prevented=!1;constructor(e,t,n){this.type=e,this.value=t,this.origin=n}stopPropagation(){this.stopped=!0}preventDefaults(){this.prevented=!0}},j=class extends se{#e=0;changed(){this.#e++,this.dispatchEvent(`change`)}get revision(){return this.#e}},M=class extends j{constructor(){super()}updateOptions(e){}render(e){}preRender(e){}postRender(e){}onPointerEvent(e,t){}pointerStyle(e,t){}};function ce(e,t,n){if(!t)return;let{height:r}=e.size,i=e.ctx,[a,o]=e.timeAxis.p(t);i.fillStyle=n,i.fillRect(a,0,o-a,r)}function N(e,t,n){if(!t)return;let{width:r,height:i}=e.size,a=e.ctx,[o,s]=e.timeAxis.p(t);a.fillStyle=n,0<o&&a.fillRect(0,0,Math.min(o,r),i),s<r&&a.fillRect(s,0,r-s,i)}function le(e){let t=e.ctx,n=e.size.height,r=Math.round(e.timeAxis.cursor.p);t.fillStyle=`white`,t.strokeStyle=`red`,t.lineWidth=1,t.fillRect(r-1,0,3,n),t.beginPath(),t.moveTo(r+.5,0),t.lineTo(r+.5,n),t.stroke()}function P(e,t,n){let r=e.ctx,i=e.dpr,a={width:r.canvas.width/i,height:r.canvas.height/i};r.save(),t?(r.translate(0,t.oy),a.height=t.height,e.renderingTrack=t):e.renderingTrack=null,e.chart.ox=e.options.padding[3]??0,e.chart.oy=e.options.padding[0]??0,e.chart.width=a.width-e.chart.ox-e.options.padding[3],e.chart.height=a.height-e.chart.oy-e.options.padding[2],e.size.width=a.width,e.size.height=a.height,r.beginPath(),r.rect(0,0,e.size.width,e.size.height),r.clip(),n(e),r.restore()}function F(e,t){e.tracks.forEach(n=>P(e,n,()=>t(n.id,n)))}function I(e,t){return e===!1?null:((e===!0||e==null)&&(e=t),e)}function L(e,t,n=k.clickTolerance){return e&&e-n<=t&&t<=e+n}var ue=class extends M{#e=null;#t=`rgba(0, 0, 255, 0.2)`;#n=!1;#r=!1;#i=!0;#a=S(0n);#o=8;constructor(){super(),this.on(`change`,()=>{this.dispatchEvent(new A(`renderer:event`,{range:this.#e,resizing:this.#r}))})}updateOptions(e){let t=e.selection;t!==void 0&&(t===!1?(this.#i=!1,this.#e=null):t===!0?this.#i=!0:(t.resizable!==void 0&&(this.#i=t.resizable),t.color!==void 0&&(this.#t=t.color),t.invert!==void 0&&(this.#n=t.invert),t.range!==void 0&&(this.#e=t.range)),this.changed())}#s({shiftKey:e,buttons:t},n){if(!this.#i)return!1;let r=t[0].latest.x;if(e){let e=n.timeAxis.t(r);return this.#r=!0,this.#a=e,this.#e=[e,e],this.changed(),!0}if(!this.#e)return!1;let i=n.timeAxis.p(this.#e);if(L(i[0],r,this.#o)){let e=this.#e[1];return e===void 0?!1:(this.#r=!0,this.#a=e,!0)}else if(L(i[1],r,this.#o)){let e=this.#e[0];return e===void 0?!1:(this.#r=!0,this.#a=e,!0)}return!1}#c({buttons:e},t){if(!this.#i||!this.#r)return!1;let n=t.timeAxis.t(e[0].latest.x),r=this.#a;return this.#e=n.lt(r)?[n,r]:[r,n],this.changed(),!0}#l(e,t){if(!this.#i||!this.#r||!this.#e)return!1;this.#r=!1;let n=t.timeAxis.p(this.#e[0]),r=t.timeAxis.p(this.#e[1]);return Math.abs(n-r)<this.#o&&(this.#e=null),this.changed(),!0}onPointerEvent(e,t){if(this.#i)switch(e.type){case`down`:return this.#s(e,t);case`drag:update`:return this.#c(e,t);case`up`:return this.#l(e,t)}}pointerStyle(e,t){if(!this.#e||!this.#i)return;let n=t.timeAxis.p(this.#e);if(this.#r&&L(n[0],n[1],this.#o))return`not-allowed`;if(L(n[0],e.buttons[0].latest.x,this.#o))return`w-resize`;if(L(n[1],e.buttons[0].latest.x,this.#o))return`e-resize`}render(e){P(e,null,()=>{this.#n?N(e,this.#e,this.#t):ce(e,this.#e,this.#t)})}};function de(e){let t=typeof e==`string`?[e,e]:e.length===1?[e[0],e[0]]:e,n=t[0].split(`@`),r=t[1].split(`@`);return[[n[0]||`value`,n[1]||`time`],[r[0]||`value`,r[1]||`time`]]}function R(e,t,n){let{min:r,max:i,amp:a}=n;if(t){let e=r&&r.isPositive()&&r?.log(10),t=i&&i.isPositive()&&i?.log(10);if(!e||!t||t.eq(e))return null;let n=t.sub(e);return t=>{if(!t)return null;if(!t.isZero()&&!t.isNegative())return t.log(10).sub(e).div(n).number()}}else return!a||!r||!i||a.eq(0)||r.eq(i)?null:e?e=>e?.div(a).number():e=>e?.sub(r).div(i.sub(r)).number()}let fe=[`link:fill`,`link:stroke`,`marks`];function z(e,t,n){let r=typeof n.lineWidth==`number`&&isFinite(n.lineWidth)?n.lineWidth:1,i=Math.max(.75,r/2),a=new Path2D;a.arc(t.x,t.y,i,0,Math.PI*2),e.addPath(a)}function B(e,t,n,r){if(isNaN(t.y)||isNaN(n.y))return;let i=typeof r.lineWidth==`number`&&isFinite(r.lineWidth)?r.lineWidth:1,a=Math.max(1,i)/2;e.moveTo(t.x-a,t.y),e.lineTo(t.x+a,t.y),e.lineTo(n.x+a,n.y),e.lineTo(n.x-a,n.y),e.closePath()}function pe(e,t,n){let r=new Path2D,i=q(t??`value@time`),a=null,o=0,s=()=>{o===1&&a&&z(r,a,n),a=null,o=0};for(let t of e){let{x1:e,y1:n}=i(t);if(isNaN(n)){s();continue}o===0?(r.moveTo(e,n),a={x:e,y:n}):r.lineTo(e,n),o++}return s(),{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function V(e,t){if(!t.length)return;if(t.length===1){e.moveTo(t[0].x,t[0].y);return}if(t.length===2){e.moveTo(t[0].x,t[0].y),e.lineTo(t[1].x,t[1].y);return}let n=t.length,r=Array(n-1),i=Array(n-1);for(let e=0;e<n-1;e++)r[e]=t[e+1].x-t[e].x,i[e]=r[e]===0?0:(t[e+1].y-t[e].y)/r[e];let a=Array(n);a[0]=i[0];for(let e=1;e<n-1;e++)a[e]=(i[e-1]+i[e])/2;a[n-1]=i[n-2];for(let e=0;e<n-1;e++){if(i[e]===0||!isFinite(i[e])){a[e]=0,a[e+1]=0;continue}if(a[e]===0&&a[e+1]===0)continue;if(a[e]*i[e]<0||a[e+1]*i[e]<0){a[e]=0,a[e+1]=0;continue}let t=a[e]/i[e],n=a[e+1]/i[e],r=t*t+n*n;if(r>9){let o=3/Math.sqrt(r);a[e]=o*t*i[e],a[e+1]=o*n*i[e]}}e.moveTo(t[0].x,t[0].y);for(let i=0;i<n-1;i++){let n=r[i],o=t[i],s=t[i+1],c=o.x+n/3,l=o.y+a[i]*n/3,u=s.x-n/3,d=s.y-a[i+1]*n/3;e.bezierCurveTo(c,l,u,d,s.x,s.y)}}function me(e,t,n){let r=new Path2D,i=q(t??`value@time`),a=[],o=()=>{if(a.length){if(a.length===1){z(r,a[0],n),a=[];return}V(r,a),a=[]}};for(let t of e){let{x1:e,y1:n}=i(t);if(isNaN(n)){o();continue}a.push({x:e,y:n})}return o(),{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function he(e,t,n){let r=new Path2D,i=q(t??[`value@time`,`zero@time`]),a=e.map(i),o=0;for(;o<a.length;){for(;o<a.length&&(isNaN(a[o].y1)||isNaN(a[o].y2));)o++;if(o>=a.length)break;let e=[];for(;o<a.length&&!isNaN(a[o].y1)&&!isNaN(a[o].y2);)e.push(a[o]),o++;if(e.length===1){B(r,{x:e[0].x1,y:e[0].y1},{x:e[0].x2,y:e[0].y2},n);continue}V(r,e.map(e=>({x:e.x1,y:e.y1})));let t=e[e.length-1];r.lineTo(t.x2,t.y2);for(let t=e.length-2;t>=0;t--)r.lineTo(e[t].x2,e[t].y2);r.closePath()}return{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function ge(e,t,n){let r=new Path2D,i=q(t??[`value@time`,`zero@time`]),a=e.map(i),o=0;for(;o<a.length;){for(;o<a.length&&isNaN(a[o].y1);)o++;if(o>=a.length)break;let e=o;for(r.moveTo(a[e].x1,a[e].y1);o<a.length&&!isNaN(a[o].y1);)r.lineTo(a[o].x1,a[o].y1),o++;let t=o--,i=!1;for(;o>=e&&!isNaN(a[o].y2);)r.lineTo(a[o].x2,a[o].y2),o--,i=!0;!i&&!isNaN(a[e].y2)&&(r.lineTo(a[e].x2,a[e].y2),i=!0),r.lineTo(a[e].x1,a[e].y1),t-e===1&&i&&B(r,{x:a[e].x1,y:a[e].y1},{x:a[e].x2,y:a[e].y2},n),o=t}return{path:r,strokeStyle:n.lineColor??n.color??`black`,fillStyle:K(n.fillColor??n.color??`black`,n.fillOpacity??.25,`transparent`)}}function H(e,t=`value@time`){return function(n,r,i){let a=new Path2D,o=q(r??t),s=n.map(o);for(let t of s){let n=t.x2-t.x1,r=t.y2-t.y1,o=Math.hypot(n,r),s=Math.atan2(r,n)*180/Math.PI,c=new Path2D;e(c,{style:i,dx:n,dy:r,l:o});let l=new DOMMatrix().translate(t.x1,t.y1).rotate(s).translate(i.offset?.[0]??0,i.offset?.[1]??0).rotate(i.angle??0);a.addPath(c,l)}return{path:a,strokeStyle:i.lineColor??i.color??`black`,fillStyle:K(i.fillColor??i.color??`black`,i.fillOpacity??.25,`white`)}}}function U(e,t){let n=q(t??`value@time`);return{path:e.map(n).map(({x1:e,y1:t})=>({x:e,y:t}))}}let _e={line:{defaultUsing:`value@time`,predicate:e=>!isNaN(e.y1),hasBottom:!1},area:{defaultUsing:[`value@time`,`zero@time`],predicate:e=>!isNaN(e.y1)&&!isNaN(e.y2),hasBottom:!0}};function ve(e,t,n){if(n===`start`)return[{x:t.x,y:e.y},{x:t.x,y:t.y}];if(n===`end`)return[{x:e.x,y:t.y},{x:t.x,y:t.y}];let r=(e.x+t.x)/2;return[{x:r,y:e.y},{x:r,y:t.y},{x:t.x,y:t.y}]}function W(e,t,n){let r=[],i=null;for(let a of e){let e=t(a);if(isNaN(e.y)){i=null;continue}i?r.push(...ve(i,e,n)):r.push(e),i=e}return r}function G(e,t){let n=_e[t];return function(r,i,a){let o=q(i??n.defaultUsing),s=r.map(o),c=[],l=ye(s,e,n,a,c);if(t===`line`)for(let e of c)z(l,e,a);return{path:l,strokeStyle:a.lineColor??a.color??`black`,fillStyle:K(a.fillColor??a.color??`black`,a.fillOpacity??.25,`transparent`)}}}function ye(e,t,n,r,i=[]){let a=new Path2D,o=0;for(;o<e.length;){for(;o<e.length&&!n.predicate(e[o]);)o++;if(o>=e.length)break;let s=o,c=[];for(;o<e.length&&n.predicate(e[o]);)c.push(e[o]),o++;let l=o;if(!c.length)continue;let u=be(c,t,{left:s>0?e[s-1]:null,right:l<e.length?e[l]:null}),d=W(u,e=>({x:e.x1,y:e.y1}),t);if(!d.length)continue;let f=d.length===1,p=[];if(n.hasBottom){if(p=W(u,e=>({x:e.x2,y:e.y2}),t),!p.length)continue;if(f&&p.length===1){B(a,d[0],p[0],r);continue}}a.moveTo(d[0].x,d[0].y);for(let e=1;e<d.length;e++)a.lineTo(d[e].x,d[e].y);if(!n.hasBottom){f&&i.push(d[0]);continue}for(let e=p.length-1;e>=0;e--)a.lineTo(p[e].x,p[e].y);a.lineTo(d[0].x,d[0].y)}return a}function be(e,t,n){let r=e.map(e=>({...e}));return r.length?(xe(r,t,n.left),Se(r,t,n.right),r):r}function xe(e,t,n){if(!n)return;let r=Ce(t,n.x1,e[0].x1);r==null||r===e[0].x1||e.unshift(Te(e[0],r))}function Se(e,t,n){if(!n)return;let r=e[e.length-1],i=we(t,n.x1,r.x1);i==null||i===r.x1||e.push(Te(r,i))}function Ce(e,t,n){if(t==null||isNaN(t)||e===`start`)return null;if(e===`end`)return t;let r=(t+n)/2;return isNaN(r)?null:r}function we(e,t,n){if(t==null||isNaN(t)||e===`end`)return null;if(e===`start`)return t;let r=(n+t)/2;return isNaN(r)?null:r}function Te(e,t){return{x1:t,y1:e.y1,x2:t,y2:e.y2}}function K(e,t,n=`transparent`){return`color-mix(in srgb, ${e} ${t*100}%, ${n})`}function q(e){let[[t,n],[r,i]]=de(e);return function(e){return{x1:e.x[n],y1:e.y[t],x2:e.x[i],y2:e.y[r]}}}function Ee(e){return(typeof e==`number`||e==null)&&(e=[e??0]),{t:e[0],r:e[1]??e[0],b:e[2]??e[0],l:e[3]??e[1]??e[0]}}let De={\"link:line\":[pe,{stroke:!0}],\"link:curve\":[me,{stroke:!0}],\"link:area\":[ge,{fill:!0}],\"link:curve-area\":[he,{fill:!0}],\"link:step-area-start\":[G(`start`,`area`),{fill:!0}],\"link:step-area\":[G(`mid`,`area`),{fill:!0}],\"link:step-area-end\":[G(`end`,`area`),{fill:!0}],\"link:step-start\":[G(`start`,`line`),{stroke:!0}],\"link:step\":[G(`mid`,`line`),{stroke:!0}],\"link:step-end\":[G(`end`,`line`),{stroke:!0}],\"mark:circle\":[H((e,{style:{size:t}})=>{let n=(t??5)/2;e.moveTo(n,0),e.arc(0,0,n,0,Math.PI*2)}),{stroke:!0,fill:!0}],\"mark:minus\":[H((e,{style:{size:t}})=>{let n=(t??5)/2;e.moveTo(-n,0),e.lineTo(n,0)}),{stroke:!0,fill:!1}],\"mark:triangle\":[H((e,{style:{size:t}})=>{let n=(t??5)/2;e.moveTo(0,-n),e.lineTo(+n*Math.sqrt(3)/2,n/2),e.lineTo(-n*Math.sqrt(3)/2,n/2),e.closePath()}),{stroke:!0,fill:!0}],\"mark:square\":[H((e,{style:{size:t}})=>{t=(t??5)/2*Math.sqrt(2),e.rect(-t/2,-t/2,t,t)}),{stroke:!0,fill:!0}],\"mark:diamond\":[H((e,{style:{size:t}})=>{t??=5,e.moveTo(0,-t/2),e.lineTo(t/2,0),e.lineTo(0,t/2),e.lineTo(-t/2,0),e.closePath()}),{stroke:!0,fill:!0}],\"mark:star\":[H((e,{style:{size:t}})=>{t??=5;let n=t/2,r=n*.4;for(let t=0;t<10;t++){let i=t%2==0?n:r,a=Math.PI/5*t-Math.PI/2,o=i*Math.cos(a),s=i*Math.sin(a);t===0?e.moveTo(o,s):e.lineTo(o,s)}e.closePath()}),{stroke:!0,fill:!0}],\"mark:plus\":[H((e,{style:{size:t}})=>{t??=5,e.moveTo(-t/2,0),e.lineTo(t/2,0),e.moveTo(0,-t/2),e.lineTo(0,t/2)}),{stroke:!0}],\"mark:cross\":[H((e,{style:{size:t}})=>{t=(t??5)/2*Math.sqrt(2),e.moveTo(-t/2,-t/2),e.lineTo(t/2,t/2),e.moveTo(-t/2,t/2),e.lineTo(t/2,-t/2)}),{stroke:!0}],\"mark:path\":[H((e,{style:{path:t,size:n,scale:r,origin:i}})=>{let a=new DOMMatrix().scale(r??1).scale(n??5).translate(-(i?.[0]??0),-(i?.[1]??0));e.addPath(new Path2D(t),a)}),{stroke:!0,fill:!0}],\"mark:line\":[H((e,{l:t})=>{e.moveTo(0,0),e.lineTo(t,0)},[`min`,`max`]),{stroke:!0}],\"mark:box\":[H((e,{l:t,style:{size:n,radius:r,padding:i}})=>{n??=5;let a=Ee(i),o=-a.l,s=-(a.t+n/2),c=a.l+t+a.r,l=a.t+n+a.b;r&&r>0?e.roundRect(o,s,c,l,r):e.rect(o,s,c,l)},[`min`,`max`]),{stroke:!0,fill:!0}],\"mark:section\":[H((e,{l:t,style:{size:n}})=>{n??=5,e.moveTo(0,-n/2),e.lineTo(0,n/2),e.moveTo(0,0),e.lineTo(t,0),e.moveTo(t,-n/2),e.lineTo(t,n/2)},[`min`,`max`]),{stroke:!0}],\"mark:icon\":[U,{fill:!0}],\"mark:text\":[U,{fill:!0}]};var Oe=class extends M{updateOptions(e){super.updateOptions(e)}#e=S(0);#t={};render(e){super.render(e),this.#n(e),this.#r(e)}#n(e){let t=this.#e.neq(e.timeAxis.current.resolution);if(this.#e=e.timeAxis.current.resolution.clone(),e.options.series)for(let n in e.options.series){let r=e.options.series[n],i=r.track??e.tracks[0].id,a=e.tracks.find(e=>e.id===i),{data:o,meta:s,revision:c}=e.dataCaches[`series:${n}:chart`];if(this.#t[n]&&!t&&this.#t[n].revision===c&&this.#t[n].trackId===i)continue;this.#t[n]={time:e.timeAxis.current.range[0],trackId:i,revision:c,linkOps:[],markOps:[]};let l=s.color,u=[],d=R(a.symmetric,r.data.scale===`log`,s);if(d){for(let e=0;e<o.length;e++){let t=o[e].time,r=o[e].value,i={x:{},y:{zero:a.y(0)}};for(let e in t)i.x[e]=t[e].sub(this.#t[n].time).div(this.#e,3).number();for(let e in r)i.y[e]=a.y(d(r[e]));u.push(i);for(let t of o[e].marks){if(!t)continue;let e={color:l,...t.style??{}},[r,a]=De[`mark:${t.draw}`],{path:o,strokeStyle:s,fillStyle:c,postFillStyle:u}=r?.([i],t.using,e)??{};this.#t[n].markOps||(this.#t[n].markOps=[]),this.#t[n].markOps.push({type:`mark`,draw:t.draw,time:this.#t[n].time,path:o,style:{...e,strokeStyle:s,fillStyle:c,postFillStyle:u,...a}})}}for(let e of s.links??[]){if(!e)continue;let t={color:l,...e.style??{}},[r,i]=De[`link:${e.draw}`],{path:a,strokeStyle:o,fillStyle:s}=r?.(u,e.using,t)??{};this.#t[n].linkOps||(this.#t[n].linkOps=[]),this.#t[n].linkOps.push({type:`link`,draw:e.draw,time:this.#t[n].time,path:a,style:{...t,strokeStyle:o,fillStyle:s,...i}})}}}}#r(e){if(!e.options.series)return;let t={};for(let n in this.#t){let r=this.#t[n];t[r.trackId]||(t[r.trackId]={});let i=r.time.sub(e.timeAxis.current.time??e.timeAxis.now).div(this.#e,3).number()+e.timeAxis.axisLength[0];for(let e of r.linkOps){let n=e.draw.includes(`area`)?`link:fill`:`link:stroke`;t[r.trackId][n]||(t[r.trackId][n]=[]),t[r.trackId][n].push({...e,ox:i,oy:0})}for(let e of r.markOps){let n=`marks`;t[r.trackId][n]||(t[r.trackId][n]=[]),t[r.trackId][n].push({...e,ox:i,oy:0})}}for(let n of e.tracks)P(e,n,()=>{let r=e.ctx;for(let i of fe){if(!t?.[n.id]?.[i])continue;let a=t[n.id][i];for(let t of a)r.save(),r.translate(t.ox,t.oy),t.path instanceof Path2D?ke(e,t.path,t.style):t.path&&(je(e,t.path,t.style),Ae(e,t.path,t.style)),r.restore()}})}};function ke({ctx:e},t,n){!t||!(t instanceof Path2D)||(n.fill&&!n.fillPost&&n.fillStyle&&(e.fillStyle=n.fillStyle,e.fill(t)),n.stroke&&n.strokeStyle&&(n.lineWidth??1)>0&&(e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=n.strokeStyle,e.lineWidth=n.lineWidth??1,n.lineDashArray&&(e.setLineDash(n.lineDashArray),e.lineDashOffset=n.lineDashOffset??0),e.stroke(t)),n.fill&&n.fillPost&&n.fillStyle&&(e.fillStyle=n.fillStyle,e.fill(t)))}function Ae({ctx:e},t,n){if(n.text){e.translate(n.offset?.[0]??0,n.offset?.[1]??0),e.font=`${n.fontWeight??`normal`} ${n.size??14}px ${n.fontFamily??`sans-serif`}`,e.textAlign=n.textAlign??`center`,e.textBaseline=n.textBaseline??`middle`;for(let r of t)e.save(),e.translate(r.x,r.y),n.angle&&e.rotate(n.angle/180*Math.PI),(n.textOutline||n.textOutlineColor!==void 0||n.textOutlineWidth!==void 0)&&(e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=n.textOutlineColor??`white`,e.lineWidth=n.textOutlineWidth??2,e.strokeText(n.text??``,0,0)),e.fillStyle=K(n.textColor??n.color??`black`,n.textOpacity??1),e.fillText(n.text??``,0,0),e.restore()}}function je({ctx:e},t,n){if(n.icon){e.translate(n.offset?.[0]??0,n.offset?.[1]??0),e.font=`${n.iconFontWeight??`normal`} ${n.size??16}px ${n.iconFontFamily??`icons`}`,e.textAlign=n.iconAlign??`center`,e.textBaseline=n.iconBaseline??`middle`;for(let r of t)e.save(),e.translate(r.x,r.y),n.angle&&e.rotate(n.angle/180*Math.PI),(n.iconOutline||n.iconOutlineColor!==void 0||n.iconOutlineWidth!==void 0)&&(e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=n.iconOutlineColor??`white`,e.lineWidth=n.iconOutlineWidth??2,e.strokeText(n.icon??``,0,0)),e.fillStyle=K(n.iconColor??n.color??`black`,n.iconOpacity??1),e.fillText(n.icon??``,0,0),e.restore()}}var Me=class{values;constructor(...e){this.values=e}clone(){return new this.constructor(...this.values)}get length(){return this.values.length}set(...e){return this.values=e,this}add(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]+=e[t];return this}sub(e){if(Array.isArray(e)||(e=e.values),e.length!==this.length)throw Error(`Vector size mismatch`);for(let t=this.length-1;t>=0;t--)this.values[t]-=e[t];return this}scale(e){for(let t=this.length-1;t>=0;t--)this.values[t]*=e;return this}get norm(){return Math.sqrt(this.values.reduce((e,t)=>e+t**2,0))}normalize(){let e=this.norm;return e?this.scale(1/e):this}distanceTo(e){return this.clone().sub(e).norm}},J=class extends Me{get x(){return this.values[0]}set x(e){this.values[0]=e}get y(){return this.values[1]}set y(e){this.values[1]=e}toJSON(){return{x:this.x,y:this.y}}};function Ne(e,t,n){let r=0,i=e.length;for(;r<i;){let a=r+i>>1,o=n(e[a]);o!=null&&S(o).lt(t)?r=a+1:i=a}return r}function Pe(e,t,n){let r=0,i=e.length;for(;r<i;){let a=r+i>>1,o=n(e[a]);o!=null&&S(o).le(t)?r=a+1:i=a}return r}function Fe(e,[t,n],r){let i=t===void 0?0:Ne(e,t,r),a=n===void 0?e.length:Ne(e,n,r);return i<a?[i,a]:[0,0]}function Ie(e,t){let n=(e,t,n,r)=>Math.min(t,r)-Math.max(e,n),r=n(e.point.x,e.point.x+e.box.width+2,t.point.x,t.point.x+t.box.width+2),i=n(e.point.y,e.point.y+e.box.height+2,t.point.y,t.point.y+t.box.height+2);return r<=0||i<=0?null:{w:r,h:i,d:Math.hypot(r,i)}}function Le(e,t,n){let r=0,i=0,a=new J(0,0);do{r=0;let i=e.map(e=>({...e,force:(e?.force??new J(.01*e.id,0)).set(.01*e.id,0)}));for(let e=0;e<i.length;e++)for(let t=e+1;t<i.length;t++){let n=i[e],r=i[t];if(n===r||n.sideX!==r.sideX)continue;let o=Ie(n,r);if(o)if(n.point.distanceTo(r.point)===0){let e=[0,o.h/2];n.force.sub(e),r.force.add(e)}else{let e=a.set(...r.point.values).sub(n.point).normalize(),t=[o.w/2*e.x,o.h/2*e.y];n.force.sub(t),r.force.add(t)}}i.forEach(e=>{let t=a.set(e.point.x,0);e.force.sub(t.normalize().scale(.2))});for(let e=0;e<i.length;e++){let a=i[e];a.point.add(a.force),a.point.x<0&&(a.force.x+=a.point.x,a.point.x-=a.point.x),a.point.y-a.box.height/2<0+t&&(a.force.y+=a.point.y-a.box.height/2-t,a.point.y-=a.point.y-a.box.height/2-t),a.point.y+a.box.height/2+1>n&&(a.force.y+=a.point.y+a.box.height/2+1-n,a.point.y-=a.point.y+a.box.height/2+1-n),r+=a.force.norm**2}}while(r>1&&i++<100);return i<100}var Re=class extends M{postRender(e){super.postRender(e),this.#t(e)}#e(e,t){if(!e)return;let n=Pe(e,t,e=>e.time.time);if(0<n&&n<=e.length)return e[n-1]}#t(e){if(e.timeAxis.animating||!e.options.series)return;let t=e.timeAxis.cursor.time??S(Date.now()/1e3);F(e,(n,r)=>{let i=e.ctx,a=[],o=1;i.textBaseline=`middle`,i.textAlign=`left`;for(let n of r.seriesKeys){let s=e.options.series?.[n];if(!s)throw Error(`Invalid series`);if(s.tooltip===!1)continue;let{data:c,meta:l}=e.dataCaches[`series:${n}:instantaneous`];if(!l)continue;let u=R(r.symmetric,s.data.scale===`log`,l);if(!u)continue;let d=this.#e(c,t);if(!d)continue;let f=d.time.time;if(!f)continue;let p=e.timeAxis.p(f),m=d.value,h=d.text,g=i.measureText(h),_=l.color;if(m==null)continue;let v=r.y(u(m));a.push({id:a.length,cx:p,cy:v,point:new J(0,v),color:_,metrics:g,sideX:o,text:{dx:6,dy:0,value:h},box:{dx:.5,dy:.5-g.fontBoundingBoxAscent-2,width:12+g.width,height:4+g.fontBoundingBoxAscent+g.fontBoundingBoxDescent}}),o=-o}Le(a,e.chart.oy,e.chart.oy+e.chart.height);for(let e of a)e.point.x=e.cx+e.sideX*(e.point.x+20);for(let{cx:e,cy:t,point:n,color:r}of a)i.beginPath(),i.moveTo(e,t),i.lineTo(n.x,n.y),i.strokeStyle=`white`,i.lineWidth=3,i.stroke(),i.strokeStyle=r,i.lineWidth=1,i.setLineDash([3]),i.stroke(),i.setLineDash([]);for(let{cx:e,cy:t,point:n,sideX:r,text:o,color:s,box:c}of a)i.beginPath(),i.arc(e,t,3,0,Math.PI*2),i.fillStyle=s,i.fill(),i.strokeStyle=`white`,i.stroke(),i.beginPath(),i.roundRect(n.x+c.dx,n.y+c.dy,c.width*r,c.height,4),i.shadowBlur=3,i.shadowColor=`black`,i.shadowOffsetX=0,i.shadowOffsetY=1,i.fillStyle=s,i.fill(),i.shadowBlur=0,i.shadowColor=`transparent`,i.shadowOffsetX=0,i.shadowOffsetY=0,i.lineWidth=1,i.strokeStyle=`white`,i.stroke(),i.textBaseline=`middle`,i.textAlign=r<0?`right`:`left`,i.fillStyle=`white`,i.fillText(o.value,n.x+r*o.dx,n.y+o.dy)})}};function ze(e,t={}){return{font:`${e?.fontWeight??t?.fontWeight??`normal`} ${e?.fontSize??t?.fontSize??`12px`} \"${e?.fontFamily??t?.fontFamily??`BIZ UDPGothic`}\"`,color:e?.color??t?.color}}var Be=class extends M{render(e){super.render(e),F(e,()=>{this.#t(e)})}preRender(e){super.preRender(e),F(e,()=>{this.#e(e)})}#e(e){let t=e.ctx,{width:n}=e.size,r=e.renderingTrack.axisY,i=e.renderingTrack.id,a=I(e.options.tracks?.[i].timeAxis,{});if(!a)return;let o=e.dataCaches[`tracks:${i}:timeAxis`]?.data;o&&(t.beginPath(),a.axis!==!1&&(t.strokeStyle=(typeof a.axis==`object`?a.axis.color:void 0)||`#3333`,t.moveTo(0,r+.5),t.lineTo(n,r+.5)),t.strokeStyle=(a.ticks!==!1&&typeof a.ticks==`object`?a.ticks.color:void 0)||`#3333`,o.forEach(n=>{if(!n.tick)return;let i=e.timeAxis.p(n.time.time);a.ticks!==!1&&(t.moveTo(i,r-(n.major?10:5)),t.lineTo(i,r+(e.symmetric?n.major?10:5:0)))}),t.stroke())}#t(e){let t=e.ctx,n=e.renderingTrack.axisY+2,r=e.renderingTrack.id,i=I(e.options.tracks?.[r].timeAxis,{});if(!i)return;let a=e.dataCaches[`tracks:${r}:timeAxis`]?.data;if(!a||i.labels===!1)return;let o=ze(i.labels);t.fillStyle=o?.color??`black`,t.font=o?.font,t.textAlign=`center`,t.textBaseline=`top`,a.forEach(r=>{let i=e.timeAxis.p(r.time.time);r.text!==void 0&&t.fillText(r.text,i,n)})}};let Y={z:0,r:S(1)};function Ve(e){return Y.r.eq(e)?Y.z:-e.log(k.base).number()}function X(e){return Y.z===e?Y.r:(Y.z=e,Y.r=S(k.base).pow(-e,BigInt(Math.floor(e))),Y.r)}function He(e,t){return t?t.reduce((t,n)=>Math.abs(n-e)<Math.abs(t-e)?n:t,t[0]):Number(S(e).floorBy(k.chunkStep).toFixed(2))}function Ue(e,t,n=k.defaultChunkSize){let r=X(t),i=r.mul(n);if(!e[0]||!e[1]||!i.isPositive())return[{id:`z${t}`,seq:0n,expires:1/0,range:e,resolution:r,zoom:t}];let a=[],o=e[1].add(i);for(let n=e[0];n.le(o);n=n.add(i)){let e=n.div(i).floor().integer(),o=[i.mul(e),i.mul(e+1n)],s=`z${t}:seq${e}`;a.push({id:s,seq:e,expires:1/0,range:o,resolution:r,zoom:t})}return a}function We(e,t){return t===void 0?e:e===void 0||t.lt(e)?t:e}function Ge(e,t){return t===void 0?e:e===void 0?t:e.gt(t)?e:t}function Ke(e,t){return(!e[0]||!t[1]||e[0].le(t[1]))&&(!t[0]||!e[1]||t[0].le(e[1]))}var qe=class extends j{#e={};#t=[];#n;#r;#i;#a;#o;#s;#c={};#l;constructor(e){super(),this.#n=e.loader,this.#r=e.instantValue??!1,this.#i=e.instantZoomLevel,this.#a=e.immediate??!1,this.#s=e.zoomLevels,this.#o=e.chunkSize===null?0:e.chunkSize??k.defaultChunkSize,this.#l=e.name}updateOptions(e){this.#n=e.loader,this.#r=e.instantValue??!1,this.#i=e.instantZoomLevel,this.#a=e.immediate??!1,this.#s=e.zoomLevels,this.#o=e.chunkSize===null?0:e.chunkSize??k.defaultChunkSize,this.#l=e.name}#u(e,t){if(e.id in this.#e&&t){try{this.#t=this.#p(e.range,this.#t,t)??this.#t}catch(e){console.error(e)}this.changed(),this.dispatchEvent(`datachanged`)}}#d=!1;#f(e,t){let n={...this.#e};for(let e of t)delete n[e.id];for(let e in n)this.#d=!0,delete this.#e[e];!e.timeAxis.animating&&!e.timeAxis.editing&&this.#d&&(this.#d=!1,this.#t=this.#h(Object.values(this.#e),this.#t)??this.#t,this.changed(),this.dispatchEvent(`datachanged`))}#p(e,t,n){let[r,i]=Fe(t,e,e=>e.time._minTime??e.time.time);return[...t.slice(0,r),...n.filter(e=>e.time._minTime??e.time.time),...t.slice(i)].toSorted((e,t)=>{let n=e.time._minTime??e.time.time,r=t.time._maxTime??t.time.time;return n==null||r==null?0:n.lt(r)?-1:n.gt(r)?1:0})}#m=[S(0),S(0)];get window(){return this.#m}#h(e,t){let[n,r]=e.reduce((e,t)=>{let n=t.range[0],r=t.range[1];return[We(e[0],n),Ge(e[1],r)]},[void 0,void 0]);if(!n||!r)return t;let i=[n,r];return this.#m=i,t.filter(e=>Ke([e.time._minTime??e.time.time,e.time._maxTime??e.time.time],i))}#g(e,t){return t=He(t,this.#s),Ue(e,t,this.#o).map(e=>this.#e[e.id]??e)}update(e){if(this.#r){let t=e.timeAxis.committing.time??e.timeAxis.now,n=this.#i??e.timeAxis.committing.zoom.number(),r=X(n).mul(this.#o).div(2),i=[t.sub(r),t.add(r)];this.#_(e,i,n)}else if(this.#a){let t=e.timeAxis.current.zoom?.number()??0;this.#_(e,e.timeAxis.current.range,t)}else{let t=e.timeAxis.committing.zoom?.number()??0;this.#_(e,e.timeAxis.committing.range,t)}}#_(e,t,n){let r=this.#g(t,n),i=Date.now();r.forEach(e=>{this.#e[e.id]&&i<=e.expires||(this.#e[e.id]=e,this.#d=!0,e.expires=1/0,e._loading=!0,this.#n(e).then(t=>{e._loading=!1,e.expires=t?.expires??e.expires,this.#u(t,t.data)}))}),this.#f(e,r)}get data(){return this.#t}invalidate(){this.#e={},this.#d=!0}get meta(){return this.#c}updateMeta(e){this.#c=e,this.changed(),this.dispatchEvent(`metachanged`)}get name(){return this.#l}};function Z(e){if(e==null||C(e))return e;if(typeof e==`string`){let t=Date.parse(e);if(Number.isNaN(t))throw Error(`Parse error as Date`);return S(t/1e3)}return e instanceof Date?S(e.getTime()/1e3):S(e)}function Je(e){return e.map(Z)}let Ye=globalThis.requestAnimationFrame??(e=>setTimeout(e,0)),Xe=globalThis.cancelAnimationFrame??(e=>clearTimeout(e));var Ze=class{#e=null;#t;start(e){e={animation:`in-out`,duration:500,...e},this.cancel(),this.#t=()=>e.done?.(e.target());let t=e.overshoot??0,n=e.duration??500,r=performance.now(),i=e.animation?{linear:e=>e,\"in-out\":e=>e*e*e*(e*(e*6-15)+10),out:e=>1+(t+1)*(e-1)**3+t*(e-1)**2}[String(e.animation)]:null;if(!i||e.origin()===e.target()){this.done();return}let a=()=>{let t=performance.now()-r;if(t<n){let r=i(t/n),o=e.origin()*(1-r)+e.target()*r;e.update(o,r),this.#e=Ye(a)}else this.done()};this.#e=Ye(a)}done(){this.cancel(),this.#t?.()}cancel(){this.#e&&=(Xe(this.#e),null)}get animating(){return this.#e!==null}};function Q(e,t,n){let r=e??n;if(t[0]!==void 0){let e=t[0]??n;if(r.lt(e))return t[0]}if(t[1]!==void 0){let e=t[1]??n;if(r.gt(e))return t[1]}return e}var $=class extends j{#e;#t={id:void 0,value:null,nullValue:S(0),committed:null,committing:null,current:null,candidate:null,domain:[void 0,void 0],editing:!1,animating:!1,cursorMode:`current`,updated:!1};#n=new Ze;#r;get candidate(){return this.#t.candidate}get value(){return this.#t.value}get committing(){return this.#t.committing}parseValue(e){return S(e)}setValue(e,t){t??=!1;let n=this.parseValue(e);if(this.#t.value===n||n&&this.#t.value?.eq(n))return;let r=typeof t==`object`?t:{animation:t};this.begin(n),this.commit(r)}get committed(){return this.#t.committed}get current(){return this.#t.current}get domain(){return this.#t.domain}set domain(e){let t=e.map(e=>S(e));this.#t.domain=t,this.restore(),this.#c(),this.setValue(Q(this.value,t,this.#t.nullValue)),this.changed()}get editing(){return this.#t.editing}get animating(){return this.#t.animating}get cursor(){return this.#t.cursorMode===`current`?this.#t.current:this.#t.committing}constructor(e={initialValue:0}){super(),e.domain&&(this.#t.domain=e.domain.map(e=>S(e))),e.onNull&&(this.#r=e.onNull,this.#c()),this.#e=e.lazy??!1;let t=Q(S(e.initialValue),this.#t.domain,this.#t.nullValue);this.#t.value=t,this.#t.committed=t,this.#t.current=t,this.#t.candidate=t,this.#t.committing=t}handleSyncEvent(e){switch(e.type){case`begin`:this.#i(e);break;case`update`:this.#a(e);break;case`commit`:this.#o(e);break;case`restore`:this.#l(e);break;case`set:nullvalue`:this.#s(e);break}}begin(e){this.#c(),e===void 0&&(e=this.#t.current);let t=Q(e,this.#t.domain,this.#t.nullValue),n={type:`begin`,candidate:t};this.dispatchEvent(new A(`sync`,n)),this.dispatchEvent(new A(`valuechanging`,t)),this.#i(n)}#i({candidate:e}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.editing=!0,this.#t.updated=!1,this.#t.candidate=e,this.dispatchEvent(new A(`valuechanging`,e)),this.changed()}update(e){this.#c();let t=this.#t.nullValue,n=Q(e,this.#t.domain,t),r={type:`update`,candidate:n,current:(e??t).sub(this.#t.current??t).mul(n===e?1:.5).add(this.#t.current??t)};this.dispatchEvent(new A(`sync`,r)),this.#a(r)}#a({candidate:e,current:t}){this.#t.editing=!0,this.#t.updated=!0,this.#t.candidate=e,this.#t.current=t,this.dispatchEvent(new A(`valuechanging`,e)),this.changed()}commit(e={}){this.#c();let t=e.value===void 0?this.#t.candidate:e.value,n=t,r=Q(t,this.#t.domain,this.#t.nullValue),i=e.animation===void 0?this.#t.updated?`current`:`target`:this.#t.cursorMode,a={type:`commit`,targetValue:r,animation:e.animation===void 0?this.#t.editing?`out`:`in-out`:e.animation,duration:e.duration??500,cursorMode:i,divergentValue:n,lazy:e.lazy??this.#e};this.dispatchEvent(new A(`sync`,a)),this.#o(a)}#o({targetValue:e,divergentValue:t,animation:n,duration:r,cursorMode:i,lazy:a}){let o=()=>{this.#t.value=e,this.#t.editing=!1,this.changed(),this.dispatchEvent(new A(`valuechanging`,this.#t.value)),this.dispatchEvent(new A(`valuechanged`,this.#t.value))},s=this.#t.current??this.#t.nullValue,c=e??this.#t.nullValue,l=t??this.#t.nullValue,u=0;c.neq(l)&&l.neq(s)&&(u=3*(l.sub(s).div(c.sub(s)).number()-1)/2),this.#t.cursorMode=i,this.#t.candidate=e,this.#t.committing=e,a||o();let d=c.eq(s)?0:1;this.#t.animating=!0,this.#n.start({origin:()=>0,target:()=>d,update:t=>{this.#c(),this.#t.animating=!0;let n=(e??this.#t.nullValue).sub(s).mul(t).add(s);this.#t.current=n,this.changed()},done:()=>{this.#t.animating=!1,this.#t.current=e,a&&o(),this.#t.committed=e,this.changed()},animation:n,duration:r,overshoot:u})}#s({nullValue:e}){this.#t.nullValue=e}#c(){if(!this.#r)return;let e=this.parseValue(this.#r())??this.#t.nullValue;this.#t.nullValue=e}toString(){return JSON.stringify(this)}toJSON(){return{value:this.value,candidate:this.candidate,committed:this.committed,committing:this.committing,current:this.current,editing:this.editing,animating:this.animating}}#l({value:e,domain:t}){this.#n.cancel(),this.#t.cursorMode=`current`,this.#t.value=e,this.#t.candidate=e,this.#t.committed=e,this.#t.committing=e,this.#t.current=e,this.#t.editing=!1,this.#t.animating=!1,this.#t.domain=t}restore(){let e={type:`restore`,value:this.value,domain:this.#t.domain};this.dispatchEvent(new A(`sync`,e)),this.#l(e)}},Qe=class extends j{time;zoom;constructor(e){super(),this.time=new $,this.zoom=new $,this.time=new $({initialValue:Z(e.time??null),domain:Je(e.timeRange??[void 0,null]),onNull:()=>Date.now()/1e3}),this.zoom=new $({initialValue:e.zoom??0,domain:e.zoomRange}),this.time.on(`change`,()=>this.changed()),this.zoom.on(`change`,()=>this.changed()),this.time.on(`valuechanging`,e=>this.dispatchEvent(new A(`timechanging`,e.value))),this.time.on(`valuechanged`,e=>this.dispatchEvent(new A(`timechanged`,e.value))),this.zoom.on(`valuechanging`,e=>this.dispatchEvent(new A(`zoomchanging`,e.value.number()))),this.zoom.on(`valuechanged`,e=>this.dispatchEvent(new A(`zoomchanged`,e.value.number())))}setTime(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??=`out`;try{this.time.setValue(Z(e),t)}catch{return!1}return!0}setTimeRange(e){this.time.domain=Je(e??[void 0,null])}setZoom(e,t){if(typeof e==`number`&&!isFinite(e)||typeof e==`number`&&isNaN(e))return!1;t??={animation:`linear`,duration:200,lazy:this.zoom.value.lt(e)};try{this.zoom.setValue(S(e),t)}catch{return!1}return!0}setZoomRange(e){this.zoom.domain=(e??[void 0,void 0]).map(S)}},$e=class{decay;minVelocity;delay;points=[];angle_=0;distance_=0;constructor(e=.005,t=.05,n=100){this.decay=e,this.minVelocity=t,this.delay=n}begin(){this.points=[]}update(e,t){let n=Date.now();this.points.push({x:e,y:t,t:n});let r=n-this.delay;for(;this.points.length>1&&this.points[0].t<r;)this.points.shift()}end(){let e=this.points.length;if(e<2)return!1;let t=Date.now()-this.delay,n=this.points[e-1];if(n.t<t)return!1;for(;this.points.length>1&&this.points[0].t<t;)this.points.shift();let r=this.points[0];if(n.t<Date.now()-this.delay)return!1;let i=n.x-r.x,a=n.y-r.y,o=n.t-r.t;return o<1e3/60?!1:(this.distance_=Math.sqrt(i*i+a*a)/o/this.decay,this.angle_=Math.atan2(a,i),!0)}getDistance(){return this.distance_}getAngle(){return this.angle_}},et=class extends j{#e;#t={cursorMode:`center`,axisLength:[0,0],disabled:!1,dragging:!1,pinch:null};#n=new $e;constructor(e={}){super(),this.#e=new Qe(e);let{time:t,zoom:n}=this.#e;t.on(`change`,()=>this.changed()),t.on(`valuechanged`,e=>this.dispatchEvent(new A(`timechanged`,e.value))),t.on(`valuechanging`,e=>this.dispatchEvent(new A(`timechanging`,e.value))),t.on(`sync`,e=>this.dispatchEvent(new A(`sync`,{time:e.value}))),n.on(`change`,()=>this.changed()),n.on(`valuechanged`,e=>this.dispatchEvent(new A(`zoomchanged`,e.value.number()))),n.on(`valuechanging`,e=>this.dispatchEvent(new A(`zoomchanging`,e.value.number()))),n.on(`sync`,e=>this.dispatchEvent(new A(`sync`,{zoom:e.value}))),t.on(`valuechanged`,()=>this.dispatchEvent(`viewchanged`)),n.on(`valuechanged`,()=>this.dispatchEvent(`viewchanged`)),t.on(`valuechanging`,()=>this.dispatchEvent(`viewchanging`)),n.on(`valuechanging`,()=>this.dispatchEvent(`viewchanging`))}z(e){return S(Ve(e))}r(e){return X(e.number())}p(e,t){if(Array.isArray(e))return e.map((e,t)=>this.p(e,t));if(e===void 0)return t===0?-100:this.#t.axisLength[0]+this.#t.axisLength[1]+100;let n=this.r(this.#e.zoom.current),r=this.#e.time.current??this.now,i=e??this.now;return S(i).sub(r).div$(n,3).number()+this.#t.axisLength[0]}t(e){if(Array.isArray(e))return e.map(e=>this.t(e));let t=this.r(this.#e.zoom.current),n=this.#e.time.current??this.now;return t.mul(e-this.#t.axisLength[0]).add(n).round(t.digits)}set disabled(e){this.#t.disabled=e}get disabled(){return this.#t.disabled}get editing(){return this.#e.time.editing||this.#e.zoom.editing}get dragging(){return this.#t.dragging}get animating(){return this.#e.time.animating||this.#e.zoom.animating}get current(){return{time:this.#e.time.current,zoom:this.#e.zoom.current,resolution:this.r(this.#e.zoom.current),range:this.rangeFor(this.#e.time.current,this.#e.zoom.current),p:this.p(this.#e.time.current)}}get candidate(){return{time:this.#e.time.candidate,zoom:this.#e.zoom.candidate,resolution:this.r(this.#e.zoom.candidate),range:this.rangeFor(this.#e.time.candidate,this.#e.zoom.candidate),p:this.p(this.#e.time.candidate)}}get value(){return{time:this.#e.time.value,zoom:this.#e.zoom.value,resolution:this.r(this.#e.zoom.value),range:this.rangeFor(this.#e.time.value,this.#e.zoom.value),p:this.p(this.#e.time.value)}}get committing(){return{time:this.#e.time.committing,zoom:this.#e.zoom.committing,resolution:this.r(this.#e.zoom.committing),range:this.rangeFor(this.#e.time.committing,this.#e.zoom.committing),p:this.p(this.#e.time.committing)}}get committed(){return{time:this.#e.time.committed,zoom:this.#e.zoom.committed,resolution:this.r(this.#e.zoom.committed),range:this.rangeFor(this.#e.time.committed,this.#e.zoom.committed),p:this.p(this.#e.time.committed)}}get cursor(){return{time:this.#e.time.cursor,p:this.p(this.#e.time.cursor)}}get range(){return{time:this.#e.time.domain,p:this.p(this.#e.time.domain)}}rangeFor(e,t){return[(e??this.now).sub(this.r(t).mul(this.#t.axisLength[0])),(e??this.now).add(this.r(t).mul(this.#t.axisLength[1]))]}#r(e){this.#e.time.begin(this.t(e)),this.#n.begin()}#i(e,t){this.#e.time.update(this.t(this.current.p-t)),this.#n.update(e,0)}#a(){if(this.#n.end()){let e=this.#n.getDistance(),t=this.#n.getAngle(),n=e*Math.cos(t);this.#e.time.commit({value:this.t(this.current.p-n)})}else this.#e.time.commit()}click(e){this.#e.time.begin(this.t(e)),this.#e.time.commit()}dragStart(e){this.disabled||(this.#r(e),this.#t.dragging=!0)}dragUpdate(e,t){!this.#t.dragging||this.disabled||this.#i(e,t)}dragEnd(){!this.#t.dragging||this.disabled||(this.#a(),this.#t.dragging=!1)}dragCancel(){this.#t.dragging=!1}pinchStart(e,t){if(!this.disabled){if(this.#e.time.update(this.#e.time.current),this.#t.pinch={anchorTime:[this.t(e),this.t(t)]},this.#t.pinch.anchorTime[0].eq(this.#t.pinch.anchorTime[1])){this.#t.pinch=null;return}this.#e.zoom.begin(this.#e.zoom.current)}}pinchUpdate(e,t){if(this.disabled)return;if(!this.#t.pinch)return this.pinchStart(e,t);let n=this.#t.pinch.anchorTime[0],r=this.#t.pinch.anchorTime[1];if(Math.abs(t-e)>2){let i=r.sub(n).div(t-e).abs(),a=this.z(i);this.#e.zoom.update(a)}}pinchEnd(){this.disabled||this.#t.pinch&&(this.#t.pinch=null,this.#e.zoom.commit({animation:`linear`,duration:200}))}setAxisLength(e){this.#t.axisLength=e,this.changed(),this.dispatchEvent(`viewchanged`),this.dispatchEvent(`viewchanging`)}get axisLength(){return this.#t.axisLength}get now(){return S(Date.now()/1e3)}handleSyncEvent(e){e.time&&this.#e.time.handleSyncEvent(e.time),e.zoom&&this.#e.zoom.handleSyncEvent(e.zoom)}},tt=class{id;height;symmetric;oy=0;paddingY=[5,5];labelHeight=0;seriesKeys;constructor(e){this.id=e.id,this.oy=e.oy??0,this.height=e.height??0,this.symmetric=e.symmetric??!1,this.labelHeight=e.labelHeight??0,this.seriesKeys=e.seriesKeys}get chartHeight(){return this.height-this.paddingY[0]-this.paddingY[1]-this.labelHeight}get axisY(){return(this.symmetric?this.chartHeight/2:this.chartHeight)+this.paddingY[0]}y(e){if(e==null||isNaN(e))return NaN;let t=this.symmetric?this.chartHeight/2:this.chartHeight;return this.axisY-t*e}getRenderers(){return[]}};function nt(e,t,n=globalThis.requestAnimationFrame){let r,i,a=ee(e),o=new et;o.on(`change`,()=>v()),o.on(`sync`,e=>a(`sync`,e.value)),o.on(`viewchanging`,()=>u());let s={onPointerEvent:e=>{let t={click:e=>o.click(e),\"drag:start\":e=>o.dragStart(e),\"drag:update\":(e,t)=>o.dragUpdate(e,t),\"drag:end\":()=>o.dragEnd(),\"pinch:start\":(e,t,n)=>o.pinchStart(e,n),\"pinch:update\":(e,t,n)=>o.pinchUpdate(e,n),\"pinch:end\":()=>o.pinchEnd()};if(e.type in t)return t[e.type](e.buttons[0]?.latest.x??0,e.buttons[0]?.delta.x??0,e.buttons[1]?.latest.x??0),!0},pointerStyle:()=>{}},c=[new Be,new Oe,new Re,new ue];c.forEach(e=>{e.on(`change`,()=>v()),e.on(`renderer:event`,t=>a(`renderer:event`,{value:t.value,uid:e.uid}))});let l={ctx:null,options:{},tracks:[],renderingTrack:null,dataCaches:{},chart:{ox:0,oy:0,width:1,height:1,get axisY(){return(l.symmetric?l.chart.height/2:l.chart.height)+l.chart.oy}},size:{width:1,height:1},get symmetric(){return this.renderingTrack?.symmetric??!1},dpr:1,timeAxis:o};async function u(){let e=o.current,t=o.revision;await a(`view:changed`,{time:e.time,zoom:e.zoom.number(),resolution:e.resolution,range:e.range},{rpc:!0}),o.revision===t&&Object.values(l.dataCaches).forEach(e=>d(e).then(()=>v()))}async function d(e){let{revision:t}=e,{resolution:n,zoom:r}=o.value,i=await a(`provider:loadMeta`,{key:e.name,zoom:r.number(),resolution:n},{rpc:!0});e.revision===t&&e.updateMeta(i)}function f(e,t={}){let n={...t,name:e,loader:async t=>await a(`provider:loadChunk`,{key:e,chunk:t},{rpc:!0})};if(l.dataCaches[e]){let t=l.dataCaches[e];return t.updateOptions(n),t.invalidate(),t}let r=new qe(n);return r.on(`change`,()=>v()),r.on(`datachanged`,async()=>u()),r}function p(e){let t={...e.dataCaches};for(let n in e.options.dataCacheOptions)e.dataCaches[n]=f(n,e.options.dataCacheOptions[n]),delete t[n];Object.keys(t).forEach(t=>delete e.dataCaches[t])}function m(e){for(let t of Object.values(e.dataCaches))t.update(e)}let h;function g(){if(!i)return;let e=i.height/l.dpr,t=Object.entries(l.options.tracks??{default:{}}),n=Math.max(0,e-t.reduce((e,[,t])=>e+(t?.height??0),0))/t.filter(([,e])=>e.height==null).length,r=0;l.tracks=t.map(([e,i])=>{let a=i.height??n;return r+=a,new tt({id:e,oy:r-a,height:a,symmetric:i.symmetric??!1,labelHeight:!i.symmetric&&i.timeAxis!==!1&&(typeof i.timeAxis!=`object`||i.timeAxis.labels!==!1)?14:0,seriesKeys:Object.entries(l.options.series??{}).filter(([,n])=>(n.track??t[0][0])===e).map(([e])=>e)})})}te(e,{init:({canvas:e})=>{i=e,r=i?.getContext(`2d`)},fonts:e=>{if(e)for(let n of e)try{let e=typeof n.source==`string`&&n.source.match(/url\\(\"([^\"]+)\"\\) *format\\(\"woff2\"\\)/);if(e&&e?.[1])fetch(e[1]).then(e=>e.arrayBuffer()).then(e=>{let r=new Uint8Array(e),i=new FontFace(n.family,r,n.desc);i.loaded.then(()=>{t?.add(i),v()}),i.load()});else{let e=new FontFace(n.family,n.source,n.desc);e.loaded.then(()=>{t?.add(e),v()}),e.load()}}catch(e){console.error(`Failed to load the font:`,e)}v()},\"options:update\":e=>{ae(l.options,e),e.dataCacheOptions&&p(l),(`tracks`in e||`series`in e)&&g();for(let t of c)t.updateOptions(e);v()},resize:async({size:e,context:t})=>{if(!i)return;let n=t?.dpr??l.dpr??1;i.width=e.width*n,i.height=e.height*n,o.setAxisLength([e.width/2,e.width/2]),l.dpr=n,g(),v()},pointer:async e=>{let t=[...c??[],s],n=(h??t).find(t=>t.onPointerEvent(e,l));return h=e.type===`up`||!n?void 0:[n],!0},cursor:async e=>{let t=[...c??[],s];return(h??t).map(t=>t.pointerStyle(e,l)).find(e=>e)},sync:e=>{o.handleSyncEvent(e)},reload:()=>{for(let e of Object.values(l.dataCaches))e.invalidate();v()}});let _=!1;function v(){_=!0}let y=0,b=0;function x(){y++}function S(){let e=Date.now(),t=(y*1e3/(e-b)).toFixed(1);b+1e3<=e&&(b=e,y=0),r?.clearRect(0,0,60,15),r?.fillText(`FPS: ${t}`,5,10)}function C(e){for(let t of c)r?.save(),e(t),r?.restore()}function w(e){!i||!r||(e.ctx=r,_=!1,m(e),x(),r.reset(),r.scale(e.dpr,e.dpr),C(t=>{t.preRender(e)}),P(e,null,()=>{N(e,o.range.time,`#00000010`)}),C(t=>{t.render(e)}),e.options.indicator!==!1&&P(e,null,()=>le(e)),C(t=>{t.postRender(e)}))}function T(){let e=o.range,t=e.time[0]===null&&0<=e.p[0]&&e.p[0]<l.size.width||e.time[1]===null&&0<=e.p[1]&&e.p[1]<l.size.width;return _||o.value.time===null||t}let E=()=>{n(E),T()&&w(l),l.options.showFps&&S()};n(E),setInterval(()=>u(),1e3)}nt(self,self.fonts)})();"],{type:`text/javascript;charset=utf-8`}));return new Worker(t,e)}function pn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`)return e.toString()===t.toString();if(e&&t&&typeof e==`object`){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!pn(e[r],t[r]))return!1;return!0}return!1}function $(e,t,n=new WeakSet){if(e==null)return e;let r=typeof e;if(r===`string`||r===`number`||r===`boolean`||r===`bigint`)return e;if(r===`undefined`||r===`symbol`)return;if(r===`function`)return e.toString();if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||t?.includes(e))return e;if(n.has(e))throw TypeError(`Cannot serialize circular reference`);if(n.add(e),typeof e.toJSON==`function`){let r=e.toJSON();if(r!==e){let i=$(r,t,n);return n.delete(e),i}}if(Array.isArray(e)){let r=Array(e.length);for(let i=0;i<e.length;i++)r[i]=$(e[i],t,n);return n.delete(e),r}if(e instanceof Date||e instanceof RegExp||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return n.delete(e),e;let i={};for(let r of Object.keys(e))i[r]=$(e[r],t,n);return n.delete(e),i}function mn(e,t,n){e??={},t??={};let r=[],i={...t};for(let a in e)(!i[a]||i[a]!==e[a]&&!pn(i[a]?._src,e[a]))&&(t[a]=n(e[a]),t[a]!==e[a]&&(t[a]._src=$(e[a]),r.push(a))),delete i[a];Object.keys(i).forEach(e=>delete t[e])}const hn=[`#080`,`#800`,`#008`,`#880`,`#088`,`#808`],gn={indicator:!0,padding:[5,5,5,5],sources:void 0,series:void 0,tracks:void 0,selection:void 0};var _n=class extends T{#e;call;#t={};#n={};#r={};#i=!1;#a=[];#o=!1;#s=null;#c=0;constructor(e){super(),this.#e=new fn,this.call=ke(this.#e),Ae(this.#e,{sync:e=>{this.dispatchEvent(new w(`sync`,e,this.uid))},"renderer:event":async e=>{this.dispatchEvent(new w(`renderer:event`,e.value,e.uid))},"provider:loadChunk":async({key:e,chunk:t})=>await this.#r[e]?.loadChunk(t),"provider:loadMeta":async({key:e,zoom:t,resolution:n})=>await this.#r[e].loadMeta({zoom:t,resolution:n}),"view:changed":async e=>{for(let t in this.dispatchEvent(new w(`viewchanged`,e,this.uid)),this.#n)this.#n[t].updateDataRange(e.range,e.zoom);return!0}});let t=e.canvas.transferControlToOffscreen();this.call(`init`,{canvas:t},{transfer:[t]}),this.setFonts(e.fonts)}async setFonts(e){if(e){this.#i=!1,this.#d();let t=await He(e);this.call(`fonts`,t);return}this.#i=!0,this.#u(),await this.#p()}[Symbol.dispose](){this.dispose()}dispose(){this.#d(),this.#e.terminate()}setOptions(e){this.#l={},this.updateOptions({...gn,...e})}#l={};updateOptions(e){xe(this.#l,e);let t={...e},n=!1;if(`sources`in e&&mn(this.#l.sources,this.#t,e=>(n=!0,dn(e))),(n||`series`in e||`tracks`in e)&&(mn(this.#l.series,this.#n,e=>(e.data.color||(e.data.color=hn[this.#c++],this.#c%=hn.length),n=!0,ln({sources:this.#t,options:e}))),`tracks`in e&&(n=!0),n)){let e=[...Object.entries(this.#l.tracks??{default:{}}).filter(([,e])=>e.timeAxis!==!1).map(([e,t])=>[`tracks:${e}:timeAxis`,tn,{timeAxis:t.timeAxis},{immediate:!0}]),...Object.entries(this.#n).flatMap(([e,t])=>{let n={series:t,options:this.#l},r={zoomLevels:t.zoomLevels,chunkSize:t.chunkSize};return[[`series:${e}:chart`,Je,n,r],[`series:${e}:instantaneous`,Qe,n,{...r,instantValue:!0,instantZoomLevel:t.options.data.instantaneous?.zoom}]]})];t.dataCacheOptions={};let n={...this.#r};for(let[r,i,a,o]of e)this.#r[r]=new i(a),delete n[r],o&&(t.dataCacheOptions[r]=o);Object.keys(n).forEach(e=>delete this.#r[e])}this.call(`options:update`,t)}resize(e){this.call(`resize`,e)}onPointerEvent(e){this.call(`pointer`,e)}async pointerStyle(e){return await this.call(`cursor`,e,{rpc:!0})}sync(e,t){t&&t===this.uid||this.call(`sync`,e)}#u(){if(!this.#i||this.#o||typeof document>`u`)return;this.#o=!0;let e=[],t=document.fonts;if(t&&typeof t.addEventListener==`function`){let n=()=>this.#f();t.addEventListener(`loadingdone`,n),t.addEventListener(`loadingerror`,n),t.addEventListener(`loading`,n),e.push(()=>{t.removeEventListener(`loadingdone`,n),t.removeEventListener(`loadingerror`,n),t.removeEventListener(`loading`,n)})}if(typeof MutationObserver<`u`){let t=new MutationObserver(e=>{for(let t of e){if(t.type===`childList`&&[...Array.from(t.addedNodes??[]),...Array.from(t.removedNodes??[])].some(e=>vn(e))){this.#f();return}if(t.type===`attributes`&&vn(t.target)){this.#f();return}}});try{let n=document.head??document.documentElement??document;t.observe(n,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`rel`,`href`]}),e.push(()=>t.disconnect())}catch{t.disconnect()}}this.#a=e}#d(){if(this.#o){this.#o=!1;for(let e of this.#a)try{e()}catch{}this.#a=[],this.#s!=null&&(clearTimeout(this.#s),this.#s=null)}}#f(){this.#i&&this.#s==null&&(this.#s=setTimeout(()=>{this.#s=null,this.#p()},0))}async#p(){if(this.#i)try{let e=await Ue();this.call(`fonts`,e.length?e:void 0)}catch(e){console.error(`Failed to resolve document fonts`,e)}}invalidateSources(e){e||=Object.keys(this.#t);for(let t of e)this.#t[t]?.expireChunks();this.call(`reload`,null)}};function vn(e){return typeof HTMLStyleElement<`u`&&e instanceof HTMLStyleElement?!0:typeof HTMLLinkElement<`u`&&e instanceof HTMLLinkElement?e.rel?.toLowerCase()===`stylesheet`:!1}var yn=class extends T{#e=null;#t=null;#n=null;#r;#i;#a;get time(){return this.#r.time.value?.clone()??null}set time(e){this.setTime(e)}setTime(e,t){this.#r.setTime(e,t)}get timeRange(){return this.#r.time.domain.map(e=>e==null?e:e.clone())}setTimeRange(e){this.#r.setTimeRange(e)}get zoom(){return this.#r.zoom.value.number()}set zoom(e){this.setZoom(e)}setZoom(e,t){return this.#r.setZoom(e,t)}fitTo(e,t){if(!this.#o.width)return!1;let n=typeof t?.padding==`number`?t.padding*2:Array.isArray(t?.padding)?t.padding.reduce((e,t)=>e+t):0,r=e.map(e=>E(e)),i=Se(r[1].sub(r[0]).div(this.#o.width-n).abs()),a=r[0].add(r[1]).div(2);this.setZoom(i,t?.animation===!1?!1:void 0),this.setTime(a,t?.animation===!1?!1:void 0)}get zoomRange(){return this.#r.zoom.domain.map(e=>e==null?e:e.number())}setZoomRange(e){this.#r.setZoomRange(e)}setSelection(e){if(this.#i.selection===!1)return;let t=e?.map(e=>E(e))??null;this.#t?.updateOptions({selection:{range:t}})}clearSelection(){this.setSelection(null)}get animating(){return this.#r.time.animating}get editing(){return this.#r.time.editing}#o={x:0,y:0,width:0,height:0,dpr:0};get size(){return{...this.#o}}#s=!1;set disabled(e){this.#s=e,this.#n&&(this.#n.disabled=e)}get disabled(){return this.#s}get options(){return this.#i}setOptions(e){this.#i={style:void 0,...e},this.#c(this.#i,!0)}updateOptions(e){xe(this.#i,e),this.#c(e,!1)}#c(e,t){!this.#e||!this.#t||(`style`in e&&(this.#e.style.width=e.style?.width??`100%`,this.#e.style.height=e.style?.height??`36px`,this.#e.style.background=e.style?.background??`#fff`),t?this.#t.setOptions(e):this.#t.updateOptions(e),this.#l())}#l(){if(!this.#e||!this.#t)return;let e=window.devicePixelRatio,t=this.#e.getBoundingClientRect();if(this.#o.width===t.width&&this.#o.height===t.height&&this.#o.dpr===e)return;this.#o={x:t.x,y:t.y,width:t.width,height:t.height,dpr:e};let n=this.#o.width,r=this.#o.height;this.#t.resize({size:{width:n,height:r},context:{dpr:e}})}#u(){let e=this.#r.time,t=this.#r.zoom;this.#r.on(`change`,()=>this.changed()),this.#r.on(`timechanging`,e=>this.dispatchEvent(e)),this.#r.on(`timechanged`,e=>this.dispatchEvent(e)),this.#r.on(`zoomchanging`,e=>this.dispatchEvent(e)),this.#r.on(`zoomchanged`,e=>this.dispatchEvent(e)),e.on(`sync`,e=>this.#t?.sync({time:e.value},e.origin)),t.on(`sync`,e=>this.#t?.sync({zoom:e.value},e.origin))}#d(e){if(this.#s)return;e.preventDefault();let t=C.wheelStep;this.#r.setZoom(this.#r.zoom.committing.add(e.deltaY<0?t:-t))}constructor(e){super();let t=e??{};this.#r=new ve(t),this.#u(),this.#i={style:void 0,...t},this.#a=t.fonts??[],t.target&&this.mount(t.target)}reload(e){this.#t?.invalidateSources(e)}mount(e){let t=typeof e==`string`?document.querySelector(e):e;if(!t)throw Error(`mount failed`);return(this.#e||this.#t||this.#n)&&console.warn(`Timescope: mounted twice`),this.#e?.remove(),this.#e=document.createElement(`canvas`),this.#e.style.all=`unset`,this.#e.style.display=`block`,this.#e.style.touchAction=`none`,this.#e.style.width=this.#i.style?.width??`100%`,this.#e.style.height=this.#i.style?.height??`36px`,this.#e.style.background=this.#i.style?.background??`#fff`,this.#t=new _n({canvas:this.#e,fonts:this.#a}),this.#t.setOptions(this.#i),this.#r.time.restore(),this.#r.zoom.restore(),new ResizeObserver(()=>this.#l()).observe(this.#e),this.#t.on(`change`,()=>this.changed()),this.#t.on(`sync`,e=>{e.value.time&&(this.#r.time.handleSyncEvent(e.value.time),this.#r.time.dispatchEvent(new w(`sync`,e.value.time,e.origin))),e.value.zoom&&(this.#r.zoom.handleSyncEvent(e.value.zoom),this.#r.zoom.dispatchEvent(new w(`sync`,e.value.zoom,e.origin)))}),this.#t.on(`renderer:event`,e=>{typeof e.value==`object`&&e.value&&`range`in e.value&&`resizing`in e.value&&this.dispatchEvent(new w(e.value.resizing?`rangechanging`:`rangechanged`,e.value.range,e.origin))}),this.#n=new De({element:this.#e,transform:e=>e.sub([this.#o.x,this.#o.y]),handler:e=>{this.#t?.onPointerEvent(e)},cursor:async e=>await this.#t?.pointerStyle(e)??void 0}),this.#e.addEventListener(`wheel`,this.#d.bind(this)),t.appendChild(this.#e),this}unmount(){this.#e?.remove(),this.#n?.detach(),this.#t?.dispose(),this.#t=null,this.#e=null,this.#n=null}dispose(){this.unmount()}};export{b as Decimal,yn as Timescope,ie as createDefineTimescopeOptions,se as createDefineTimescopeSeries,ae as createDefineTimescopeSources,oe as createDefineTimescopeTracks,ce as defineTimescopeOptions,de as defineTimescopeSeries,le as defineTimescopeSources,ue as defineTimescopeTracks};
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "timescope",
3
+ "version": "0.0.0-alpha.0",
4
+ "type": "module",
5
+ "description": "Timescope - Canvas for Time-Series Visualization",
6
+ "author": "Xenodrive, Inc.",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "url": "https://github.com/xenodrive/timescope"
10
+ },
11
+ "types": "./index.d.ts",
12
+ "main": "./index.js",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./index.d.ts",
16
+ "browser": "./browser.js",
17
+ "import": "./index.js"
18
+ }
19
+ },
20
+ "dependencies": {}
21
+ }