// undefined v0.0.26 Copyright 2025 Iván Velasco González & John Alexis Guerra Gómez
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("d3")):"function"==typeof define&&define.amd?define(["d3"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).TimeWidget=t(e.d3)}(this,(function(e){"use strict";function t(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var n=t(e);function r(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function o(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e){o(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===a(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function s(e,t){o(2,arguments);var n=i(e),a=r(t);return isNaN(a)?new Date(NaN):a?(n.setDate(n.getDate()+a),n):n}function l(e,t){o(2,arguments);var n=i(e),a=r(t);if(isNaN(a))return new Date(NaN);if(!a)return n;var s=n.getDate(),l=new Date(n.getTime());l.setMonth(n.getMonth()+a+1,0);var c=l.getDate();return s>=c?l:(n.setFullYear(l.getFullYear(),l.getMonth(),s),n)}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){if(o(2,arguments),!t||"object"!==c(t))return new Date(NaN);var n=t.years?r(t.years):0,a=t.months?r(t.months):0,u=t.weeks?r(t.weeks):0,d=t.days?r(t.days):0,h=t.hours?r(t.hours):0,f=t.minutes?r(t.minutes):0,p=t.seconds?r(t.seconds):0,g=i(e),m=a||n?l(g,a+12*n):g,b=d||u?s(m,d+7*u):m,v=f+60*h,y=p+60*v,x=1e3*y,w=new Date(b.getTime()+x);return w}function d(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function h(e){o(1,arguments);var t=i(e);return t.setHours(0,0,0,0),t}var f=864e5;function p(e,t){o(2,arguments);var n=h(e),r=h(t),a=n.getTime()-d(n),i=r.getTime()-d(r);return Math.round((a-i)/f)}function g(e,t){o(2,arguments);var n=i(e),r=i(t),a=n.getTime()-r.getTime();return a<0?-1:a>0?1:a}var m=36e5;function b(e,t){o(2,arguments);var n=i(e),r=i(t),a=n.getFullYear()-r.getFullYear(),s=n.getMonth()-r.getMonth();return 12*a+s}function v(e,t){o(2,arguments);var n=i(e),r=i(t);return n.getFullYear()-r.getFullYear()}function y(e,t){var n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function x(e,t){o(2,arguments);var n=i(e),r=i(t),a=y(n,r),s=Math.abs(p(n,r));n.setDate(n.getDate()-a*s);var l=Number(y(n,r)===-a),c=a*(s-l);return 0===c?0:c}function w(e,t){return o(2,arguments),i(e).getTime()-i(t).getTime()}var k={ceil:Math.ceil,round:Math.round,floor:Math.floor,trunc:function(e){return e<0?Math.ceil(e):Math.floor(e)}};function S(e){return e?k[e]:k.trunc}function A(e,t,n){o(2,arguments);var r=w(e,t)/m;return S(null==n?void 0:n.roundingMethod)(r)}function _(e,t,n){o(2,arguments);var r=w(e,t)/6e4;return S(null==n?void 0:n.roundingMethod)(r)}function M(e){o(1,arguments);var t=i(e);return t.setHours(23,59,59,999),t}function C(e){o(1,arguments);var t=i(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function B(e){o(1,arguments);var t=i(e);return M(t).getTime()===C(t).getTime()}function D(e,t){o(2,arguments);var n,r=i(e),a=i(t),s=g(r,a),l=Math.abs(b(r,a));if(l<1)n=0;else{1===r.getMonth()&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-s*l);var c=g(r,a)===-s;B(i(e))&&1===l&&1===g(e,a)&&(c=!1),n=s*(l-Number(c))}return 0===n?0:n}function E(e,t,n){o(2,arguments);var r=w(e,t)/1e3;return S(null==n?void 0:n.roundingMethod)(r)}function T(e,t){o(2,arguments);var n=i(e),r=i(t),a=g(n,r),s=Math.abs(v(n,r));n.setFullYear(1584),r.setFullYear(1584);var l=g(n,r)===-a,c=a*(s-Number(l));return 0===c?0:c}function G(e){o(1,arguments);var t=i(e.start),n=i(e.end);if(isNaN(t.getTime()))throw new RangeError("Start Date is invalid");if(isNaN(n.getTime()))throw new RangeError("End Date is invalid");var r={};r.years=Math.abs(T(n,t));var a=g(n,t),s=u(t,{years:a*r.years});r.months=Math.abs(D(n,s));var l=u(s,{months:a*r.months});r.days=Math.abs(x(n,l));var c=u(l,{days:a*r.days});r.hours=Math.abs(A(n,c));var d=u(c,{hours:a*r.hours});r.minutes=Math.abs(_(n,d));var h=u(d,{minutes:a*r.minutes});return r.seconds=Math.abs(E(n,h)),r}function N(e,t){o(2,arguments);var n=r(t);return s(e,-n)}function $(e,t){o(2,arguments);var n=r(t);return l(e,-n)}function Y(e){return Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Y(e)}function R(e,t){if(o(2,arguments),!t||"object"!==Y(t))return new Date(NaN);var n=t.years?r(t.years):0,a=t.months?r(t.months):0,i=t.weeks?r(t.weeks):0,s=t.days?r(t.days):0,l=t.hours?r(t.hours):0,c=t.minutes?r(t.minutes):0,u=t.seconds?r(t.seconds):0,d=$(e,a+12*n),h=N(d,s+7*i),f=c+60*l,p=u+60*f,g=1e3*p,m=new Date(h.getTime()-g);return m}let L=0;function X(){console.log(performance.now()-L,...arguments),L=performance.now()}function j(e,t=1){const{l:r,c:o,h:a}=n.lch(e);return n.lch(r-18*t,o,a)}function P(e,t){if(e===t)return!0;if(null===e)return!1;if(null===t)return!1;if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function O(e,t,n){let r=t.domain(),o=n.domain(),a=[e[0][0],e[1][0]],i=[e[1][1],e[0][1]];return a[0]>r[0]&&a[1]<r[1]&&i[0]>o[0]&&i[1]<o[1]}const z=Object.freeze({Intersect:"intersect",Contains:"contains"}),H=Object.freeze({And:"and",Or:"OR"});function F({ts:e,detailsElement:t,detailsContainerHeight:r,detailsWidth:o,maxDetailsRecords:a,detailsHeight:i,x:s,y:l,margin:c={left:50,top:10,bottom:20,right:0}}={}){const u={};let d=new Map;const h=n.select(t).attr("id","detail").style("height",`${r}px`).style("width",`${o}px`).style("overflow-y","scroll").node(),f=n.line().defined((e=>void 0!==l(e)&&null!==l(e)));let p,g;function m({data:e,brushGroupSelected:t}){let r=a?e.get(t).slice(0,a):e.get(t);h.innerHTML="",n.select(h).selectAll("div.detailsContainer").data(r,(e=>e[0])).join("div").attr("class","detailsContainer").attr("group",(e=>e[0])).each((function(e){!function({points:e=[],width:t=600,height:r=300,margin:o={top:10,left:40,right:10,bottom:10},xScale:a=n.scaleLinear().range([0,t]),yScale:i=n.scaleLinear().range([r,0]),x:s=(e=>e[0]),y:l=(e=>e[1]),line:c=n.line(),title:u="",target:d=null,renderer:h="canvas",pointRadius:f=1.5,strokeColor:p="#777"}={}){let g=(d?n.select(d):n.create("div")).attr("class","details").style("position","relative");g.selectAll("*").remove();let m=g.append("canvas").style("position","absolute").style("top",`${o.top}px`).style("left",`${o.left}px`).style("height",r+"px").style("width",t+"px").style("pointer-events","none"),b=m.node().getContext("2d");const v=window.devicePixelRatio||1;m.attr("height",Math.floor(r*v)).attr("width",Math.floor(t*v)),b.scale(v,v);let y=g.append("svg").attr("viewBox",[0,0,t,r]).attr("height",r).attr("width",t).append("g").attr("class","gDrawing").attr("transform",`translate(${o.left}, ${o.top})`);if(y.append("g").attr("class","detailsYAxis").call(n.axisLeft(i).ticks(Math.floor(r/30))),y.append("g").attr("class","detailsXAxis").call(n.axisBottom(a)).attr("transform",`translate(0, ${r-o.top-o.bottom})`),y.append("text").text(u).attr("transform","translate(10, 0)").style("fill",p).style("font-size","0.7em"),"SVG"==h.toUpperCase())y.append("path").attr("d",c(e)).style("fill","none").style("stroke",p),y.append("points").selectAll("circle").data(e).join("circle").attr("cx",(e=>a(s(e)))).attr("cx",(e=>a(s(e)))).attr("r",f).attr("stroke",p);else{let t=new Path2D(c(e));b.strokeStyle=p,b.stroke(t),b.beginPath();for(let t of e)b.moveTo(a(s(t))+f,i(l(t))+f),b.arc(a(s(t)),i(l(t)),f,0,2*Math.PI);b.stroke()}}({target:this,width:o,height:i,margin:c,yScale:g,xScale:p,x:s,y:l,title:e[0],points:e[1],line:f})}))}return u.setScales=function({overviewX:e,overviewY:t}){p=e.copy(),p.range([0,o-c.right-c.left]),g=t.copy(),g.range([i-c.top-c.bottom,0]).nice().clamp(!0),f.x((e=>p(+s(e)))).y((e=>g(l(e))))},u.generatePrerenderDetails=function(e){return d=new Map,d},u.render=({data:e,brushGroupSelected:t})=>m({data:e,brushGroupSelected:t}),u}function U({ts:e,element:t,width:r=800,height:o=600,x:a,y:i,groupAttr:s}){let l,c,u,d={};const h=n.select(t).style("display","flex").style("flex-wrap","wrap").style("position","relative").style("top","0px").style("left","0px").style("background-color",e.backgroundColor);let f=n.line().defined((e=>void 0!==i(e)&&null!==i(e))),p=n.line();const g=h.selectAll("canvas").data([1]).join("canvas").attr("height",o*window.devicePixelRatio).attr("width",r*window.devicePixelRatio).style("position","absolute").style("z-index","-1").style("top",`${e.margin.top}px`).style("left",`${e.margin.left}px`).style("width",`${r}px`).style("height",`${o}px`).style("pointer-events","none"),m=g.node().getContext("2d");function b(t){return e.brushesColorScale(t)}function v(t,n,r,o=null){if(t){m.globalAlpha=n*e.alphaScale(t.length);for(let n of t){let t=l.get(n[0]);if(!t)return void console.log("renderOverviewCanvasSubset error finding path",n[0],n);let a=r;if(s){const n=e.colorScale(t.group);a=e.selectedColorTransform(n,o)}m.strokeStyle=""+a,m.stroke(t.path)}}else console.log("🚫 Error renderOverviewCanvasSubset called with no dataSubset",t)}return m.scale(window.devicePixelRatio,window.devicePixelRatio),d.data=function(e){l=new Map,e.forEach((e=>{let t=s?s(e[1][0]):null,n={path:new Path2D(f(e[1])),group:t};l.set(e[0],n)}))},d.setScales=function({scaleX:e,scaleY:t}){c=e,u=t,f=f.x((e=>c(+a(e)))).y((e=>u(i(e)))),p=p.x((e=>c(e[0]))).y((e=>u(e[1])))},d.render=function(t,n,r,o,a){!function(t,n,r,o,a){r=r||[],m.clearRect(0,0,g.node().width,g.node().height),a?(m.lineWidth=1,v(r,e.noSelectedAlpha,e.noSelectedColor),t.forEach(((t,r)=>{if(r!==n){let n=b(r);console.log("Render selected selectedColor",n,r),v(t,e.selectedAlpha,n.toString(),r)}})),v(t.get(n),e.selectedAlpha,b(n).toString(),n),m.save(),o&&(m.lineWidth=e.medianLineWidth,m.globalAlpha=e.medianLineAlpha,o.forEach((t=>{if(!t[1])return void console.log("Error drawing medians, empty data",t);let n=new Path2D(p(t[1]));m.setLineDash(e.medianLineDash),m.strokeStyle=j(b(t[0])),m.stroke(n)}))),m.restore()):v(r,e.defaultAlpha,e.defaultColor)}(t,n,r,o,a)},d}function V(e,t,n){var r,o=n||{},a=o.noTrailing,i=void 0!==a&&a,s=o.noLeading,l=void 0!==s&&s,c=o.debounceMode,u=void 0===c?void 0:c,d=!1,h=0;function f(){r&&clearTimeout(r)}function p(){for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];var s=this,c=Date.now()-h;function p(){h=Date.now(),t.apply(s,o)}function g(){r=void 0}d||(l||!u||r||p(),f(),void 0===u&&c>e?l?(h=Date.now(),i||(r=setTimeout(u?g:p,e))):p():!0!==i&&(r=setTimeout(u?g:p,void 0===u?e-c:e)))}return p.cancel=function(e){var t=(e||{}).upcomingOnly,n=void 0!==t&&t;f(),d=!n},p}function I({data:e,xPartitions:t=10,yPartitions:r=10,polylines:o=!0}){let a={},i=function(){let a=e.map((e=>e[0])),i=e.map((e=>e[1])).flat(),s=n.extent(i,(e=>e[0])),l=n.extent(i,(e=>e[1])),c=s[1]-s[0]+1,u=l[1]-l[0]+1,d=c/t,f=u/r,p={width:c,height:u,xinc:d,yinc:f,offsetX:s[0],offsetY:l[0],keys:a,BVH:[]};for(let e=0;e<t;++e){p.BVH[e]=[];let t=e*d;for(let n=0;n<r;++n){let r=f*n;p.BVH[e][n]={x0:t,x1:t+d,y0:r,y1:r+f,data:new Map}}}e=e.map((([e,t])=>[e,t.map((([e,t])=>[e-p.offsetX,t-p.offsetY]))])),o?function(e,t){let n=t.xinc,r=t.yinc;e.forEach((e=>{let o=e[0],a=-1,i=-1;for(let s=0;s<e[1].length;++s){let l=e[1][s],c=l[0],u=l[1];if(null!=c&&null!=u){let d=Math.floor(c/n),f=Math.floor(u/r);if((isNaN(d)||isNaN(f))&&X("ERROR: xIndex or YIndex is NaN: XCoor: "+c+"; yCoor: "+u),0===s)t.BVH[d][f].data.set(o,[[l]]);else if(d===a&&f===i)t.BVH[d][f].data.get(o).at(-1).push(l);else{let n=t.BVH[a][i];n.data.get(o).at(-1).push(l);let r=e[1][s-1];for(let e of t.BVH)for(let t of e)t!==n&&h([r,l],t.x0,t.y0,t.x1,t.y1)&&(t.data.has(o)?(t.data.get(o).push([r]),t.data.get(o).at(-1).push(l)):(t.data.set(o,[[r]]),t.data.get(o).at(-1).push(l)))}a=d,i=f}}}))}(e,p):function(e,t){let n=t.xinc,r=t.yinc;e.forEach((e=>{let o=e[0];for(let a of e[1]){let[e,i]=a,s=Math.floor(e/n),l=Math.floor(i/r),c=t.BVH[s][l];c.data.has(o)?c.data.get(o).push([e,i]):c.data.set(o,[e,i])}}))}(e,p);return p}();function s(e,t,n,r,o){let[a,i]=e;return a>=t&&a<=r&&i>=n&&i<=o}function l(e,t,n,r,o,a){if(e[0]<=n&&t[0]>=n||e[0]>=n&&t[0]<=n){let o=(t[1]-e[1])/(t[0]-e[0])*(n-e[0])+e[1];return o>=r&&o<=a}return!1}function c(e,t,n,r,o,a){if((e[0]<=o&&t[0])>=o||e[0]>=o&&t[0]<=o){let n=(t[1]-e[1])/(t[0]-e[0])*(o-e[0])+e[1];return n>=r&&n<=a}return!1}function u(e,t,n,r,o,a){if(e[1]<=r&&t[1]>=r||e[1]>=r&&t[1]<=r){let a=(t[1]-e[1])/(t[0]-e[0]),i=(r-e[1])/a+e[0];return i>=n&&i<=o}return!1}function d(e,t,n,r,o,a){if(e[1]>=a&&t[1]<=a||e[1]<=a&&t[1]>=a){let r=(t[1]-e[1])/(t[0]-e[0]),i=(a-e[1])/r+e[0];return i>=n&&i<=o}return!1}function h(e,t,n,r,o){let a=e[0];for(let i=1;i<e.length;++i){let s=e[i];if(l(a,s,t,n,0,o))return!0;if(c(a,s,0,n,r,o))return!0;if(u(a,s,t,n,r))return!0;if(d(a,s,t,0,r,o))return!0;a=s}return s(a,t,n,r,o)}function f(e,t,n,r,o){let a=e[0],i=e[e.length-1],h=!1,f=!1;if(!(a[0]<t&&i[0]<t||a[0]>r&&i[0]>r)){for(let i=1;i<e.length;++i){let s=e[i];if((h||l(a,s,t,n,0,o))&&(h=!0),(f||c(a,s,0,n,r,o))&&(f=!0),u(a,s,t,n,r))return!1;if(d(a,s,t,0,r,o))return!1;a=s}return!(!h&&!f)||s(e[0],t,n,r,o)}}function p(e,t,n,r){return(n>i.width||r>i.height||e<0||t<0)&&X("👁️ BVH is called off limits",[[e,t],[n,r]]),n=Math.min(n,i.width-1),r=Math.min(r,i.height-1),e=Math.max(e,0),t=Math.max(t,0),[[Math.floor(e/i.xinc),Math.floor(n/i.xinc)],[Math.floor(t/i.yinc),Math.floor(r/i.yinc)]]}function g(e,t,n,r){return[e-i.offsetX,t-i.offsetY,n-i.offsetX,r-i.offsetY]}return a.contains=function(e,t,n,r){return function(e,t,n,r,o){[e,t,n,r]=g(e,t,n,r);let[[a,s],[l,c]]=p(e,t,n,r),u=new Set,d=new Set;for(let h=a;h<=s;++h)for(let a=l;a<=c;++a)for(const s of i.BVH[h][a].data)if(!d.has(s[0]))for(const a of s[1]){let i=o(a,e,t,n,r);void 0!==i&&(i?u.add(s[0]):d.add(s[0]))}return d.forEach((e=>u.delete(e))),u}(e,t,n,r,f)},a.intersect=function(e,t,n,r){return function(e,t,n,r,o){[e,t,n,r]=g(e,t,n,r);let[[a,s],[l,c]]=p(e,t,n,r),u=new Set;for(let d=a;d<=s;++d)for(let a=l;a<=c;++a)for(const s of i.BVH[d][a].data)if(!u.has(s[0]))for(const a of s[1])if(o(a,e,t,n,r)){u.add(s[0]);break}return u}(e,t,n,r,h)},a}function W(e){const t=document.createElement("template");return t.innerHTML=e,document.importNode(t.content,!0)}function q(e){const t=document.createElementNS("http://www.w3.org/2000/svg","g");return t.innerHTML=e,t}const Q=Object.assign(ve(W,(e=>{if(null===e.firstChild)return null;if(e.firstChild===e.lastChild)return e.removeChild(e.firstChild);const t=document.createElement("span");return t.appendChild(e),t})),{fragment:ve(W,(e=>e))});Object.assign(ve(q,(e=>null===e.firstChild?null:e.firstChild===e.lastChild?e.removeChild(e.firstChild):e)),{fragment:ve(q,(e=>{const t=document.createDocumentFragment();for(;e.firstChild;)t.appendChild(e.firstChild);return t}))});const K=60,Z=62,J=47,ee=45,te=33,ne=61,re=10,oe=11,ae=12,ie=13,se=14,le=17,ce=22,ue=23,de=26,he="http://www.w3.org/2000/svg",fe="http://www.w3.org/1999/xlink",pe="http://www.w3.org/XML/1998/namespace",ge="http://www.w3.org/2000/xmlns/",me=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((e=>[e.toLowerCase(),e]))),be=new Map([["xlink:actuate",fe],["xlink:arcrole",fe],["xlink:href",fe],["xlink:role",fe],["xlink:show",fe],["xlink:title",fe],["xlink:type",fe],["xml:lang",pe],["xml:space",pe],["xmlns",ge],["xmlns:xlink",ge]]);function ve(e,t){return function({raw:n}){let r,o,a,i,s=1,l="",c=0;for(let e=0,t=arguments.length;e<t;++e){const t=n[e];if(e>0){const r=arguments[e];switch(s){case de:if(null!=r){const e=`${r}`;if(Ae(o))l+=e.replace(/[<]/g,ye);else{if(new RegExp(`</${o}[\\s>/]`,"i").test(l.slice(-o.length-2)+e))throw new Error("unsafe raw text");l+=e}}break;case 1:null==r||(r instanceof Node||"string"!=typeof r&&r[Symbol.iterator]||/(?:^|>)$/.test(n[e-1])&&/^(?:<|$)/.test(t)?(l+="\x3c!--::"+e+"--\x3e",c|=128):l+=`${r}`.replace(/[<&]/g,ye));break;case 9:{let o;if(s=ae,/^[\s>]/.test(t)){if(null==r||!1===r){l=l.slice(0,a-n[e-1].length);break}if(!0===r||""==(o=`${r}`)){l+="''";break}if("style"===n[e-1].slice(a,i)&&ke(r)||"function"==typeof r){l+="::"+e,c|=1;break}}if(void 0===o&&(o=`${r}`),""===o)throw new Error("unsafe unquoted empty string");l+=o.replace(/^['"]|[\s>&]/g,ye);break}case ae:l+=`${r}`.replace(/[\s>&]/g,ye);break;case oe:l+=`${r}`.replace(/['&]/g,ye);break;case re:l+=`${r}`.replace(/["&]/g,ye);break;case 6:if(ke(r)){l+="::"+e+"=''",c|=1;break}throw new Error("invalid binding");case le:break;default:throw new Error("invalid binding")}}for(let e=0,n=t.length;e<n;++e){const n=t.charCodeAt(e);switch(s){case 1:n===K&&(s=2);break;case 2:n===te?s=25:n===J?s=3:xe(n)?(r=e,o=void 0,s=4,--e):63===n?(s=5,--e):(s=1,--e);break;case 3:xe(n)?(s=4,--e):n===Z?s=1:(s=5,--e);break;case 4:we(n)?(s=6,o=_e(t,r,e)):n===J?s=se:n===Z&&(o=_e(t,r,e),s=Se(o)?de:1);break;case 6:we(n)||(n===J||n===Z?(s=7,--e):n===ne?(s=8,a=e+1,i=void 0):(s=8,--e,a=e+1,i=void 0));break;case 8:we(n)||n===J||n===Z?(s=7,--e,i=e):n===ne&&(s=9,i=e);break;case 7:we(n)||(n===J?s=se:n===ne?s=9:n===Z?s=Se(o)?de:1:(s=8,--e,a=e+1,i=void 0));break;case 9:we(n)||(34===n?s=re:39===n?s=oe:n===Z?s=Se(o)?de:1:(s=ae,--e));break;case re:34===n&&(s=ie);break;case oe:39===n&&(s=ie);break;case ae:we(n)?s=6:n===Z&&(s=Se(o)?de:1);break;case ie:we(n)?s=6:n===J?s=se:n===Z?s=Se(o)?de:1:(s=6,--e);break;case se:n===Z?s=1:(s=6,--e);break;case 5:n===Z&&(s=1);break;case 15:n===ee?s=16:n===Z?s=1:(s=le,--e);break;case 16:n===ee?s=ue:n===Z?s=1:(s=le,--e);break;case le:n===K?s=18:n===ee&&(s=ce);break;case 18:n===te?s=19:n!==K&&(s=le,--e);break;case 19:n===ee?s=20:(s=le,--e);break;case 20:n===ee?s=21:(s=ue,--e);break;case 21:s=ue,--e;break;case ce:n===ee?s=ue:(s=le,--e);break;case ue:n===Z?s=1:n===te?s=24:n!==ee&&(s=le,--e);break;case 24:n===ee?s=ce:n===Z?s=1:(s=le,--e);break;case 25:n===ee&&t.charCodeAt(e+1)===ee?(s=15,++e):(s=5,--e);break;case de:n===K&&(s=27);break;case 27:n===J?s=28:(s=de,--e);break;case 28:xe(n)?(r=e,s=29,--e):(s=de,--e);break;case 29:we(n)&&o===_e(t,r,e)?s=6:n===J&&o===_e(t,r,e)?s=se:n===Z&&o===_e(t,r,e)?s=1:xe(n)||(s=de,--e);break;default:s=void 0}}l+=t}const u=e(l),d=document.createTreeWalker(u,c,null,!1),h=[];for(;d.nextNode();){const e=d.currentNode;switch(e.nodeType){case 1:{const t=e.attributes;for(let n=0,r=t.length;n<r;++n){const{name:o,value:a}=t[n];if(/^::/.test(o)){const t=arguments[+o.slice(2)];Ce(e,o),--n,--r;for(const n in t){const r=t[n];null==r||!1===r||("function"==typeof r?e[n]=r:"style"===n&&ke(r)?Be(e[n],r):Me(e,n,!0===r?"":r))}}else if(/^::/.test(a)){const t=arguments[+a.slice(2)];Ce(e,o),--n,--r,"function"==typeof t?e[o]=t:Be(e[o],t)}}break}case 8:if(/^::/.test(e.data)){const t=e.parentNode,n=arguments[+e.data.slice(2)];if(n instanceof Node)t.insertBefore(n,e);else if("string"!=typeof n&&n[Symbol.iterator])if(n instanceof NodeList||n instanceof HTMLCollection)for(let r=n.length-1,o=e;r>=0;--r)o=t.insertBefore(n[r],o);else for(const r of n)null!=r&&t.insertBefore(r instanceof Node?r:document.createTextNode(r),e);else t.insertBefore(document.createTextNode(n),e);h.push(e)}}}for(const e of h)e.parentNode.removeChild(e);return t(u)}}function ye(e){return`&#${e.charCodeAt(0).toString()};`}function xe(e){return 65<=e&&e<=90||97<=e&&e<=122}function we(e){return 9===e||10===e||12===e||32===e||13===e}function ke(e){return e&&e.toString===Object.prototype.toString}function Se(e){return"script"===e||"style"===e||Ae(e)}function Ae(e){return"textarea"===e||"title"===e}function _e(e,t,n){return e.slice(t,n).toLowerCase()}function Me(e,t,n){e.namespaceURI===he&&(t=t.toLowerCase(),t=me.get(t)||t,be.has(t))?e.setAttributeNS(be.get(t),t,n):e.setAttribute(t,n)}function Ce(e,t){e.namespaceURI===he&&(t=t.toLowerCase(),t=me.get(t)||t,be.has(t))?e.removeAttributeNS(be.get(t),t):e.removeAttribute(t)}function Be(e,t){for(const n in t){const r=t[n];n.startsWith("--")?e.setProperty(n,r):e[n]=r}}function De({fmtX:e,fmtY:t,target:n,margin:r={top:0,left:0},callback:o=(()=>{})}){const a=Q`<input class="x0" contenteditable="true"></input>`,i=Q`<input class="y0" contenteditable="true"></input>`,s=Q`<input class="x1" contenteditable="true"></input>`,l=Q`<input class="y1" contenteditable="true"></input>`,c=e=>{function t(){this.style.width=this.value.length+1+"ch"}e.addEventListener("input",t),t.call(e)},u=()=>[a,i,s,l].map(c),d=Q`<button>✅</button>`,h=Q`<button>✅</button>`,f=Q`<div style="position: absolute; top:0; left:0;">
    <div style="display:flex; position: absolute; bottom: 0px; right: 0px;">
      ${a}<strong> x </strong>${i} ${d}
    </div>
  </div>`,p=Q`<div style="position: absolute; display:flex;">${s}<strong> x </strong>${l} ${h}</div>`,g=Q`<div class="__ts_tooltip" style="display: none; z-index:2; position: absolute; top: ${r.top}px; left: ${r.left}px;">
    <style>
    div.__ts_tooltip { 
      font-family: sans-serif; font-size: 10pt; 
    }
    div.__ts_tooltip > div > div * { 
      margin-right: 1px;
    }
    div.__ts_tooltip div > button {
      padding: 0px;
      display: none;
    }
    div.__ts_tooltip div:hover > button {
      padding: 0px;
      display: block;
    }
    div.__ts_tooltip input {
      background-color:rgba(255, 255, 255, 0);    
      border: none;
      outline: none;
    }
    div.__ts_tooltip input:focus {
        border: solid #aaa;
    }


    </style>
    <div>${f}</div>
    <div>${p}</div>

  </div>`;function m(){g.value=[[a.value,i.value],[s.value,l.value]],g.dispatchEvent(new Event("input",{bubbles:!0})),o(g.value)}g.__update=({selection:n,selectionPixels:r})=>{g.style.display="block",a.value=e(n[0][0]),s.value=e(n[1][0]),i.value=t(n[0][1]),l.value=t(n[1][1]),u(),f.style.top=r[0][1]+"px",f.style.left=r[0][0]+"px",p.style.top=r[1][1]+"px",p.style.left=r[1][0]+"px"},g.__hide=()=>g.style.display="none",d.addEventListener("click",m),h.addEventListener("click",m);let b=n.getElementsByClassName("__ts_tooltip");return b.length>0&&n.removeChild(b[0]),n.appendChild(g),u(),g}function Ee({target:e,callback:t}){const n=Q`<input type="radio" name="mode" id="__ts_c_intersect" value="intersect">`,r=Q`<input type="radio" name="mode" id="__ts_c_contains" value="contains">`,o=Q`<input type="checkbox"  id="__ts_c_not">`,a=Q`<input type="radio" name="aggregation" id="__ts_c_and" value="and">`,i=Q`<input type="radio" name="aggregation" id="__ts_c_or" value="or">`,s=Q`<button style="position: absolute; right: 0; top: 0; margin: 0; border: none; background: none; cursor: pointer; font-size: 0.8rem; color: #444; line-height: 1; padding: 2px 2px;">&times;</button>`;let l;n.onchange=h,r.onchange=h,a.onchange=h,i.onchange=h,o.onchange=h;let c=Q`<div class="__ts_contextMenu" style="display: none; z-index: 2; position: absolute" >
        ${s}
      
        <div class="__ts_option_label"><strong>Mode</strong></div>
        <div class="__ts_option_values">
          <div>
            ${n}
            <label for="__ts_c_intersect" title="Search for timelines that touch any part of the timebox">Intersect</label>
          </div>
          <div>
            ${r}
            <label for="__ts_c_contains" title="Search for timelines that are fully contained in the timebox">Contains</label>
          </div>
          <div>
            ${o}
            <label for="__ts_c_not" title=" ">Not</label>
          </div>
        </div>
      

      
        <div class="__ts_option_label"><strong>Aggregation</strong></div>
        <div class="__ts_option_values">
          <div>
            ${a}
            <label for="__ts_c_and">And</label>
          </div>
          <div>
            ${i}
            <label for="__ts_c_or">Or</label>
          </div>
        </div>
      
      

      <style> 
        .__ts_contextMenu { 
            border-radius: 3px;
            padding: 4px 14px 4px 4px;
            position: absolute; 
            width: max-content;
            background: #f6f6f6;
            opacity: 0.9;
            border: 1px solid #ccc; 
            font-family: sans-serif;
            font-size: 0.8rem;
            grid-template-columns: 1fr auto;
            grid-row-gap: 7px;
            box-shadow: 2px 2px 1px 0px #888888;
        }         

        .__ts_contextMenu  .__ts_option_values:hover { 
            background: #eee; 
        } 

        .__ts_contextMenu input[type="radio"] {
          margin-top: -1px;
          vertical-align: middle;
        }
      </style> 
    </div>`,u=e.getElementsByClassName("__ts_contextMenu");u.length>0&&e.removeChild(u[0]),e.appendChild(c);let d=null;function h(){let e=n.checked?z.Intersect:z.Contains,r=a.checked?H.And:H.Or,i=o.checked;t(e,r,i,l)}return c.onmouseleave=()=>d=setTimeout((()=>{c.__hide(),d=null}),1e3),c.onmouseenter=()=>{d&&clearTimeout(d),d=null},s.onclick=()=>c.__hide(),c.__hide=()=>c.style.display="none",c.__show=(e,t,s,u,d,h)=>{switch(l=h,e){case z.Intersect:n.checked=!0;break;case z.Contains:r.checked=!0;break;default:n.checked=!0,X("🚫 ERROR The method elected to compute the selection are not support")}switch(o.checked=s,t){case H.And:a.checked=!0;break;case H.Or:i.checked=!0;break;default:a.checked=!0,X("🚫 ERROR The aggregation method elected are not support")}c.style.display="grid",c.style.left=u+"px",c.style.top=d+"px"},c}return function(e,{target:t=document.createElement("div"),showBrushesControls:r=!0,showBrushTooltip:o=!0,showBrushesCoordinates:a=!0,showDataGroups:i=!0,showDetails:s=!0,x:l=(e=>e.x),y:c=(e=>e.y),id:d=(e=>e.id),color:h=null,referenceCurves:f=null,fmtX:p,fmtY:g=n.format(".1f"),stepX:m={days:10},stepY:b=1,xScale:v,yScale:y=n.scaleLinear(),xDomain:x,yDomain:w,yLabel:k="",xLabel:S="",xTicks:A,yTicks:_,filters:M=[],defaultAlpha:C=.7,selectedAlpha:B=1,noSelectedAlpha:D=.1,alphaScale:E=n.scalePow().exponent(.25).range([1,1]),backgroundColor:T="#ffffff",defaultColor:N="#aaa",selectedColor:$="#aaa",noSelectedColor:Y="#dce0e5",colorScale:L=n.scaleOrdinal(n.schemeAccent),brushesColorScale:W=(h?n.scaleOrdinal(n.schemeGreys[3].toReversed()):n.scaleOrdinal(n.schemeTableau10)),selectedColorTransform:q=((e,t)=>n.color(e).darker(t)),width:Q=800,detailsWidth:K=400,height:Z=600,detailsHeight:J=300,detailsContainerHeight:ee=400,margin:te={left:50,top:30,bottom:50,right:50},detailsMargin:ne=null,updateCallback:re=(()=>{}),statusCallback:oe=(()=>{}),brushShadow:ae="drop-shadow( 2px 2px 2px rgba(0, 0, 0, .7))",showGroupMedian:ie=!0,hasDetails:se=!1,doubleYlegend:le=!1,showGrid:ce=!1,brushGroupSize:ue=15,maxDetailsRecords:de=10,maxTimelines:he=null,xPartitions:fe=10,yPartitions:pe=10,medianNumBins:ge=10,medianLineDash:me=[7],medianLineAlpha:be=1,medianLineWidth:ve=2,medianFn:ye=n.median,medianMinRecordsPerBin:xe=5,autoUpdate:we=!0,_this:ke,fixAxis:Se,groupAttr:Ae=null,overviewWidth:_e,overviewHeight:Me,highlightAlpha:Ce=1}={}){Q=_e||Q,Z=Me||Z,ne=ne||te;let Be,Te,Ge,Ne,$e,Ye,Re,Le,Xe,je,Pe,Oe,ze,He,Fe,Ue,Ve,Ie,We,qe,Qe,Ke,Ze,Je,et,tt,nt={},rt=null;if(nt.x=l,nt.y=c,nt.id=d,nt.defaultAlpha=C,nt.selectedAlpha=B,nt.noSelectedAlpha=D,nt.backgroundColor=T,nt.defaultColor=N,nt.selectedColor=$,nt.noSelectedColor=Y,nt.hasDetails=se,nt.margin=te,nt.colorScale=L,nt.brushesColorScale=W,nt.color=h,nt.doubleYlegend=le,nt.showGrid=ce,nt.showBrushTooltip=o,nt.autoUpdate=we,nt.brushGroupSize=ue,nt.stepX=m,nt.stepY=b,nt.medianLineAlpha=be,nt.medianLineWidth=ve,nt.medianLineDash=me,nt.medianNumBins=ge,nt.medianFn=ye,nt.alphaScale=E,nt.medianMinRecordsPerBin=xe,nt.yScale=y,nt.xScale=v,nt.highlightAlpha=Ce,nt.selectedColorTransform=q,nt.xDomain=x,nt.yDomain=w,nt.maxTimelines=he,Ae&&(console.warn('The attribute "groupAttr" is deprecated use "color" instead'),h=Ae),"string"==typeof l){let e=l;l=t=>t[e]}if("string"==typeof c){let e=c;c=t=>t[e]}if("string"==typeof d){let e=d;d=t=>t[e]}if(h&&"string"==typeof h){let e=h;h=t=>t[e]}function ot(e){return nt.brushesColorScale(e)}function at(){tt.addBrushGroup()}function it(e){tt.selectBrushGroup(e)}function st(){n.select(je).select("#brushesList").selectAll(".brushControl").data(tt.getBrushesGroup(),(e=>e[0])).join("div").attr("class","brushControl").each((function(e,t,r){let o=r.length;const a=n.select(this);let i=e[1].name,s=We.has(e[0])?We.get(e[0]).length:0;a.node().innerHTML=`<div style="\n            display: flex;\n            flex-wrap: nowrap;\n            align-items: center;\n          ">\n            <input type="checkbox" id="checkBoxShowBrushGroup" ${e[1].isEnable?"checked":""} >\n            <div\n              id="groupColor"\n              style="\n              min-width: ${nt.brushGroupSize}px;\n              width: ${nt.brushGroupSize}px;\n              height: ${nt.brushGroupSize}px;\n              background-color: ${ot(e[0])};\n              border-width: ${e[0]===tt.getBrushGroupSelected()?2:0}px;\n              border-color: black;\n              border-style: solid;\n              margin-right: 5px;\n              cursor: pointer;\n            "></div>\n            <input\n              id="groupName"\n              style="margin-right: 5px; border: none;outline: none; width: ${i.length}ch;"\n              contenteditable="true"\n              value="${i}">\n            <span id="groupSize" style="margin-right: 5px;">(${s})</span>\n           <button style="color: red;font-weight: bold; border:none; background:none;\n            display:${o>1?"block":"none"}" id="btnRemoveBrushGroup">&cross;</button>\n          </div>\n        `,a.select("input#groupName").on("input",(function(e){n.select(this).style("width",e.target.value.length+"ch")})),a.select("input#groupName").on("change",(t=>{n.select(this).style("width",t.target.value.length+"ch"),tt.updateBrushGroupName(e[0],t.target.value),mt()})),a.select("#btnRemoveBrushGroup").on("click",(t=>{t.stopPropagation(),function(e){tt.removeBrushGroup(e)}(e[0])})),a.select("#checkBoxShowBrushGroup").on("click",(e=>{e.stopPropagation()})),a.select("#checkBoxShowBrushGroup").on("change",(t=>{t.stopPropagation(),function(e,t){tt.changeBrushGroupState(e,t)}(e[0],t.target.checked),console.log("Should change state of brushesGroup "+e[0],t.target.checked)})),a.select("div#groupColor").on("click",(()=>it(e[0]))),a.select("span#groupSize").on("click",(()=>it(e[0])))})),n.select(je).select("#brushesList").selectAll(".nonSelectedControl").remove(),n.select(je).select("#brushesList").append("div").attr("class","nonSelectedControl").each((function(){const e=n.select(this);let t="Non selected",r=qe.length;e.node().innerHTML=`<div style="\n            display: flex;\n            flex-wrap: nowrap;\n            align-items: center;\n            margin-bottom: 5px;\n          ">\n            <input type="checkbox" id="checkBoxShowBrushGroup" ${Qe?"checked":""} >\n            <output\n              style="margin-right: 0; border: none;outline: none; width: ${t.length}ch;"\n              >${t}</output>\n            <span id="groupSize" style="margin-right: 5px;">(${r})</span>\n          </div>\n        `,e.select("#checkBoxShowBrushGroup").on("change",(e=>{var t;e.stopPropagation(),t=e.target.checked,Qe=t,ft()}))})),ze.selectAll(".colorBrushes").data(tt.getBrushesGroup(),(e=>e[0])).join("rect").attr("class","colorBrushes").attr("id",(e=>"colorBrush-"+e[0])).attr("height",nt.brushGroupSize).attr("width",nt.brushGroupSize).attr("transform",((e,t)=>`translate(${90+t*(nt.brushGroupSize+5)}, -2)`)).style("stroke-width",(e=>e[0]===tt.getBrushGroupSelected()?2:0)).style("stroke","black").style("fill",(e=>ot(e[0]))).on("click",(function(){it(+n.select(this).attr("id").substr("11"))}))}function lt({xDataType:e,fData:t}){x||(x=Se&&ke?ke.extent.x:n.extent(t,l)),Ge=v?v.copy():void 0,"object"===e&&l(t[0])instanceof Date?(Ze=!0,Ge||(Ge=n.scaleTime()),Ge.domain(x),p?"M"===p.name&&(console.log('👁️t has been detected that the parameter fmtX formats numerical data, while the data selected for the X-axis is a date. The function d3.timeFormat("%Y-%m-%d") will be used as fmtX; '),p=n.timeFormat("%Y-%m-%d")):p=n.timeFormat("%Y-%m-%d")):(Ge||(Ge=n.scaleLinear()),Ge.domain(x),p||(p=n.format(".1f"))),Ge.range([0,Q-nt.margin.right-nt.margin.left]).nice(),nt.yDomain||(nt.yDomain=Se&&ke?ke.extent.y:n.extent(t,c)),Ne=y.copy(),Ne.domain(nt.yDomain),Ne.range([Z-nt.margin.top-nt.margin.bottom,0]).nice().clamp(!0)}function ct(){Ye=n.select($e).selectAll("div#render").data([1]).join("div").attr("id","render").style("position","relative").style("z-index",1),et=U({ts:nt,element:Ye.node(),width:Q,height:Z,x:l,y:c,groupAttr:h,overviewX:Ge,overviewY:Ne}),Oe=Ye.selectAll("svg").data([1]).join("svg").attr("viewBox",[0,0,Q,Z]).attr("height",Z).attr("width",Q);const e=Oe.selectAll("g.gDrawing").data([1]).join("g").attr("class","gDrawing").attr("transform",`translate(${nt.margin.left}, ${nt.margin.top})`).attr("tabindex",0).style("pointer-events","all").style("outline","-webkit-focus-ring-color solid 0px").on("keydown",(e=>{switch(e.preventDefault(),e.key){case"r":case"Backspace":case"Delete":tt.removeSelectedBrush();break;case"+":at();break;case"ArrowRight":!function(){let e=tt.getSelectedBrush();if(null===e)return;let[[t,n],[r,o]]=e[1].selectionDomain,a=Ge.domain()[1];if(Ze)if(r=u(r,nt.stepX),r>a){r=R(r,nt.stepX);let e=G({start:r,end:a});r=a,t=u(t,e)}else t=u(t,nt.stepX);else if(r+=nt.stepX,r>a){let e=a-r+nt.stepX;r=a,t-=e}else t+=nt.stepX;tt.moveSelectedBrush([[t,n],[r,o]],!0)}();break;case"ArrowLeft":!function(){let e=tt.getSelectedBrush();if(null===e)return;let[[t,n],[r,o]]=e[1].selectionDomain,a=Ge.domain()[0];if(Ze)if(t=R(t,nt.stepX),t<a){t=u(t,nt.stepX);let e=G({start:a,end:t});t=a,r=R(r,e)}else r=R(r,nt.stepX);else if(t-=nt.stepX,t<a){let e=t+nt.stepX-a;t=a,r-=e}else r-=nt.stepX;tt.moveSelectedBrush([[t,n],[r,o]],!0)}();break;case"ArrowUp":!function(){let e=tt.getSelectedBrush();if(null===e)return;let[[t,n],[r,o]]=e[1].selectionDomain;n+=nt.stepY;let a=Ne.domain()[1];if(n>a){let e=a-n+nt.stepY;n=a,o+=e}else o+=nt.stepY;tt.moveSelectedBrush([[t,n],[r,o]],!0)}();break;case"ArrowDown":!function(){let e=tt.getSelectedBrush();if(null===e)return;let[[t,n],[r,o]]=e[1].selectionDomain;o-=nt.stepY;let a=Ne.domain()[0];if(o<a){let e=o+nt.stepY-a;o=a,n-=e}else n-=nt.stepY;tt.moveSelectedBrush([[t,n],[r,o]],!0)}();break;case"i":tt.invertQuerySelectedGroup()}}));let o=n.axisLeft(Ne);_&&o.tickValues(_.map((e=>e[0]))).tickFormat(((e,t)=>_[t][1]?_[t][1]:_[t][0]));let d=e.selectAll("g.mainYAxis").data([1]).join("g").attr("class","mainYAxis").call(o).call((e=>e.selectAll("text.label").data([1]).join("text").text(k).attr("dy",-15).attr("class","label").style("fill","black").style("text-anchor","end").style("pointer-events","none"))).style("pointer-events","none");nt.doubleYlegend&&e.selectAll("g.secondYaxis").data([1]).join("g").attr("class","secondYaxis").call(n.axisRight(Ne)).attr("transform",`translate(${Q-nt.margin.left-nt.margin.right},0)`).style("pointer-events","none");let m=n.axisBottom(Ge||e);A&&m.tickValues(A.map((e=>e[0]))).tickFormat(((e,t)=>A[t][1]?A[t][1]:A[t][0]));let b=e.selectAll("g.mainXAxis").data([1]).join("g").attr("class","mainXAxis").call(m).attr("transform",`translate(0, ${Z-nt.margin.top-nt.margin.bottom})`).call((e=>e.selectAll("text.label").data([1]).join("text").attr("class","label").text(S).attr("transform",`translate(${Q-nt.margin.right-nt.margin.left-5}, -10 )`).style("fill","black").style("text-anchor","end").style("pointer-events","none"))).style("pointer-events","none");return Fe=e.selectAll("g.gReferences").data([1]).join("g").attr("class","gReferences").style("pointer-events","none"),d.selectAll("g.tick").selectAll(".gridline").data(nt.showGrid?[1]:[]).join("line").attr("class","gridline").attr("x1",0).attr("y1",0).attr("x2",Q-nt.margin.right-nt.margin.left).attr("y2",0).attr("stroke","#9ca5aecf").attr("stroke-dasharray","4"),b.selectAll("g.tick").selectAll(".gridline").data(nt.showGrid?[1]:[]).join("line").attr("class","gridline").attr("x1",0).attr("y1",-Z+nt.margin.top+nt.margin.bottom).attr("x2",0).attr("y2",0).attr("stroke","#9ca5aecf").attr("stroke-dasharray","4"),h&&(Te.forEach((e=>Ke.add(h(e)))),Ke.size),ze=Oe.selectAll("g.colorBrushes").data([1]).join("g").attr("class","colorBrushes").attr("transform",`translate(${nt.margin.left+10},${nt.margin.top-nt.brushGroupSize-5} )`),He=e.selectAll("g#brushes").data([1]).join("g").attr("id","brushes"),tt=function({ts:e,data:t,element:r,extent:o,tooltipTarget:a,contextMenuTarget:i,xPartitions:s,yPartitions:l,x:c,y:u,scaleX:d,scaleY:h,fmtX:f,fmtY:p,updateTime:g,brushShadow:m,minBrushSize:b=5,selectionCallback:v=(()=>{}),groupsCallback:y=(()=>{}),changeSelectedCoordinatesCallback:x=(()=>{}),selectedBrushCallback:w=(()=>{}),statusCallback:k=(()=>{})}){let S,A,_,M,C,B,D,E,T,G,N,$,Y,R,L,F={},U=0;if(!t)return;_=n.select(r),_.node().innerHTML="",M=V(g,te),C=V(g,le),B=V(50,me),D=V(50,ie),G=new Map,N=[],A=new Map,U=0,S=0;let W=t.map((e=>{let t=e[1].map((e=>[d(c(e)),h(u(e))]));return[e[0],t]}));function q([[e,t],[r,o]]){if(t=+t,o=+o,isNaN(+e)){let t=n.timeParse(f);e=t(e),r=t(r)}else e=+e,r=+r;F.moveBrush(L,[[e,t],[r,o]])}function Q(e,t,n,r){r[1].mode=e,r[1].aggregation=t,r[1].negate=n,de(r),ne(),ke()}$=I({data:W,xPartitions:s,yPartitions:l}),Y=De({fmtX:f,fmtY:p,target:a,margin:{top:e.margin.top,left:e.margin.left},callback:q}),R=Ee({target:i,callback:Q});const K=(t,n)=>{if(X("💡  onBrushStart",n,arguments.length),!n||!n.length)return void X("🚫 ERRROR onBrushStart called with no or wrong brush",n);const[r,o]=n;r===U-1&&(S++,we([r,o],E),A.get(E).isEnable=!0,T=[r,o],w(T),ke()),e.autoUpdate&&M(t,[r,o])};function Z({selection:t,sourceEvent:n},r){if(void 0!==n){if(t){let[[o,a],[i,s]]=t;Math.abs(o-i)<b&&Math.abs(a-s)<b?re(r):e.autoUpdate||(r[1].isSelected?le():te({selection:t,sourceEvent:n},r))}else re(r);r[0]===U-1&&J(),ke()}}function J(t=z.Intersect,r=H.And,a=E,i){let s=n.brush().on("start",K);A.get(a).brushes.set(U,Se(s,t,r,a,null,null,i));let l=[U,A.get(E).brushes.get(U)];s.on("brush.move",ue),s.on("brush.Selected",D),e.autoUpdate&&s.on("brush.brushed",M),e.showBrushTooltip&&s.on("brush.show",(e=>B(e,l))),s.on("end",Z),o&&s.extent(o),U++}function ee(e){return e.map((([e,t])=>[d.invert(e),h.invert(t)]))}function te({selection:e,sourceEvent:t},n){n[1]?void 0!==t&&e&&(n[1].selection=e,n[1].selectionDomain=ee(e),de(n)&&ne()):X("**🚫 ERROR brushed called without a brush[1]",n)}function ne(){if(N=[],G=new Map,A.forEach(((e,t)=>G.set(t,[]))),S>0)for(let e of t){let t=!1;for(let[n,r]of A.entries())se(e,r.brushes)&&(G.get(n).push(e),t=!0);t||N.push(e)}else N=t;v(G,N,0!==S)}function re([e,t]){S--,A.get(t.group).brushes.delete(e),ke(),ne(),oe(),Y.__hide()}function oe(){k()}function ae(){y(A)}function ie({selection:e}){let t=ee(e);x(t)}function se(e,t){if(0===t.size)return!1;if(1===t.size&&!t.values().next().value.intersections)return!1;let n=!0,r=!1;for(const o of t.values())if(o.intersections)switch(o.aggregation){case H.And:n=n&&o.intersections.has(e[0]),r=!0;break;case H.Or:if(o.intersections.has(e[0]))return!0}return n&&r}function le(){let e=!1;for(const t of A.values())for(const n of t.brushes)if(n[1].isSelected){let t=de(n);e=e||t}e&&ne()}function ce([e,t],n,r){let[[o,a],[i,s]]=t.selection;o+=n,i+=n,a+=r,s+=r;let l=_.selectAll("#brush-"+e);l.call(t.brush.move,[[o,a],[i,s]]),t.selection=[[o,a],[i,s]],be(l,t),t.selectionDomain=ee(t.selection)}function ue({selection:t,sourceEvent:r},o){if(void 0===r)return;if(!Array.isArray(o)||2!==o.length)return void X("👁️ moveSelectedBrushes called without array trigger returning",o);const[a,i]=o;if(be(n.select(this),i),!t||!i.isSelected)return;let[[s,l]]=t,c=s-i.selection[0][0],u=l-i.selection[0][1];i.selection=t,i.selectionDomain=ee(t);for(const e of A.values())for(const[t,n]of e.brushes)n.isSelected&&a!==t&&ce([t,n],c,u);e.autoUpdate&&C()}function de([e,n]){let[[r,o],[a,i]]=n.selection,s=null;switch(n.mode){case z.Intersect:s=$.intersect(r,o,a,i);break;case z.Contains:s=$.contains(r,o,a,i);break;default:s=$.intersect(r,o,a,i),X("🚫 ERROR The method elected to compute the selection are not support, using default intersection instead ")}if(n.negate){let e=new Set(t.map((e=>e[0])));for(const t of s)e.delete(t);s=e}let l=!P(s,n.intersections);return n.intersections=s,l}function he(e){e[1].isSelected=!e[1].isSelected,ae(),w(e)}function fe(){for(let e of A.values())for(let t of e.brushes)t[1].isSelected=!1}function pe(){let e=Array.from(A.keys()).sort(),t=-1;for(let n of e){if(t+1!==n)break;t++}return t++,t}function ge(e){return T&&e[0]===T[0]?m:""}function me({selection:e,sourceEvent:t},n){if(!e||void 0===t)return;let r=e.map((([e,t])=>[d.invert(+e),h.invert(+t)]));L=n,Y.__update({selection:r,selectionPixels:e})}function be(e,t){let n=[];if(t.isSelected){let e=10;n=[{x:t.selection[0][0]+e,y:t.selection[0][1]+e},{x:t.selection[1][0]-e,y:t.selection[1][1]-e},{x:t.selection[0][0]+e,y:t.selection[1][1]-e},{x:t.selection[1][0]-e,y:t.selection[0][1]+e}]}e.selectAll(".circle").data(n).join("circle").attr("class","circle").attr("cx",(e=>e.x)).attr("cy",(e=>e.y)).attr("r","4px").attr("fill",j(xe(t.group))).attr("fill-opacity",.5)}function ve(t){const r=t[1];n.select(this).selectAll(".selection").style("outline","-webkit-focus-ring-color solid 0px").style("fill",xe(r.group)).style("stroke-width",r.group===E?"2px":"0.5px").style("stroke-dasharray",r.mode===z.Intersect?"4":"").style("stroke",j(xe(r.group))).style("outline-color",j(xe(r.group))).style("fill",xe(r.group)).attr("tabindex",0).on("mousedown",(e=>{0===e.button&&(ie({selection:r.selection}),T=T&&t[0]===T[0]?null:t,w(T),_.selectAll(".brush").style("-webkit-filter",ge).style("filter",ge),e.shiftKey&&he(t))})).on("contextmenu",(e=>{e.preventDefault();let n=r.selection[0][0],o=r.selection[0][1];R.__show(r.mode,r.aggregation,r.negate,n,o,t)})),be(n.select(this),r),n.select(this).selectAll(".handle--w, .handle--e").style("fill",r.aggregation===H.Or?j(xe(r.group)):"none").style("opacity",.4),n.select(this).selectAll(".handle--n, .handle--s").style("fill",r.negate?"red":"none").style("opacity",.4),n.select(this).selectAll("title").data([0]).join("title").text(`Mode: ${r.mode===z.Contains?"Contains":"Intersect"}\nAggregation: ${r.aggregation===H.And?"And":"Or"}\nRight click for options`),e.showBrushTooltip&&n.select(this).selectAll(":not(.overlay)").on("mousemove",(e=>{me({selection:r.selection,sourceEvent:e},t)}))}function ye(e){E!==e&&(A.get(E).isActive=!1,fe(),A.get(),E=e,A.get(e).isActive=!0,A.get(e).isEnable=!0,ke())}function xe(t){return e.brushesColorScale(t)}function we([e,t],n){A.get(t.group).brushes.delete(e),t.group=n,A.get(n).brushes.set(e,t)}function ke(){let e=[];A.forEach((t=>e=e.concat(Array.from(t.brushes)))),e.sort(((e,t)=>n.descending(e[0],t[0])));const t=_.selectAll(".brush").data(e,(e=>e[0])).join("g").attr("class","brush").attr("id",(([e])=>"brush-"+e)).each((function([,e]){return n.select(this).call(e.brush)})).style("-webkit-filter",ge).style("filter",ge).style("display",(e=>A.get(e[1].group).isEnable?"":"none")).style("pointer-events",(e=>e[1].group===E?"all":"none")).each(ve);t.each((function(e){n.select(this).selectAll(".overlay").style("pointer-events",(()=>U-1===e[0]?"all":"none"))})),t.each((function([e,t]){t.initialSelection&&(X("🎉 setting initial selection",t.initialSelection),n.select(this).selectAll(".selection").style("stroke",j(xe(t.group))).style("outline-color",j(xe(t.group))).style("fill",xe(t.group)),F.moveBrush([e,t],t.initialSelection),t.initialSelection=void 0)}))}function Se(e,t,n,r,o,a,i){return{brush:e,intersections:null,mode:t,aggregation:n,negate:!1,isSelected:!1,group:r,selection:o,selectionDomain:a,initialSelection:i}}F.updateBrushGroupName=function(e,t){A.get(e).name=t,ae(),oe()},F.addBrushGroup=function(){let e=pe(),t={isEnable:!0,isActive:!1,name:"Group "+(e+1),brushes:new Map};A.set(e,t),G.set(e,[]),ye(e),v(G,N,0!==S),oe(),ae()},F.changeBrushGroupState=function(e,t){A.get(e).isEnable!==t&&(A.get(e).isEnable=t,t||T&&T[1].group===e&&Y.__hide(),ke(),oe(),ae())},F.selectBrushGroup=function(e){ye(e),oe(),ae()},F.getBrushesGroupSize=function(){return A.length},F.removeBrushGroup=function(e){if(A.length<=1)return;let t=A.keys(),n=t.next().value;n=n===e?t.next().value:n;let r=A.get(e);for(let[e,t]of r.brushes.entries())null!==t.selection?re([e,t]):(t.group=n,A.get(n).brushes.set(e,t),r.brushes.delete(e));E===e&&(A.get(n).isActive=!0,E=n),A.delete(e),ae()},F.getEnableGroups=function(){let e=new Set;return A.forEach(((t,n)=>{t.isEnable&&e.add(n)})),e},F.getBrushesGroup=function(){let e=new Map;return A.forEach(((t,n)=>{let r=Object.assign({},t);r.brushes=new Map(t.brushes),e.set(n,r)})),e.forEach((e=>{e.brushes.forEach(((t,n)=>{null===t.selection&&e.brushes.delete(n)}))})),e},F.getBrushGroupSelected=function(){return E},F.removeSelectedBrush=function(){T&&re(T)},F.getSelectedBrush=function(){return T},F.hasSelection=function(){return 0!==S},F.deselectBrush=function(){T&&(T=null,ke(),w(T))},F.changeSelectedBrushMode=function(e){T.mode=e,de(T)},F.changeSelectedBrushAggregation=function(e){T.aggregation=e,ne()},F.moveBrush=function([e,t],n,r=!1){let[[o,a],[i,s]]=n,l=d.domain()[0],c=d.domain()[1],u=h.domain()[0],f=h.domain()[1];o=Math.max(o,l),i=Math.min(i,c),a=Math.min(a,f),s=Math.max(s,u),l instanceof Date&&(o=new Date(o),i=new Date(i)),o>i&&([o,i]=[i,o]),a<s&&([a,s]=[s,a]);let p=d(o),g=d(i),m=h(a),b=h(s);_.selectAll("#brush-"+e).call(t.brush.move,[[p,m],[g,b]]),n=[[p,m],[g,b]];let v=[[o,a],[i,s]],y=new Event("move");r?ue({selection:n,sourceEvent:y},[e,t]):(te({selection:n,sourceEvent:y},[e,t]),Y.__update({selection:v,selectionPixels:n}))},F.moveSelectedBrush=function([[e,t],[n,r]],o=!1){T?F.moveBrush(T,[[e,t],[n,r]],o):X("🚫 ERROR moveSelectedBrush called but selectedBrush is falsy ",T)},F.invertQuery=function(e){let t=A.get(e).brushes,n=Number.MAX_VALUE,r=Number.MIN_VALUE;t.forEach((e=>{e.selection&&(n=Math.min(e.selection[0][1],n),r=Math.max(e.selection[1][1],r))}));let o=(r-n)/2+n;t.forEach(((e,t)=>{if(!e.selection)return;let n=(e.selection[1][1]-e.selection[0][1])/2+e.selection[0][1];ce([t,e],0,2*(o-n))})),C()},F.invertQuerySelectedGroup=function(){F.invertQuery(E)},F.addFilters=function(e,t=!1){if(e instanceof Map&&(e=Array.from(e.values())).forEach((e=>e.brushes=Array.from(e.brushes.values()))),0!==e.length){t?A.clear():A.forEach((e=>{e.brushes.forEach(((t,n)=>{t.selection||e.brushes.delete(n)}))}));for(let t of e){let e=pe(),n={isEnable:!t.isEnable||t.isEnable,isActive:!!t.isActive&&t.isActive,name:t.name,brushes:new Map};A.set(e,n),G.set(e,[]);for(const n of t.brushes)O(n.selectionDomain,d,h)||(n.selection?n.selectionDomain=ee(n.selection):n.selectionDomain=ee([[0,100],[0,100]])),J(n.mode,n.aggregation,e,n.selectionDomain),S++}J(),ne(),ke()}},F.drawBrushes=function(){ke()};let Ae=pe(),_e={isEnable:!0,isActive:!0,name:"Group "+(Ae+1),brushes:new Map};return A.set(Ae,_e),G.set(Ae,[]),E=Ae,A.get(Ae).isEnable=!0,J(),ke(),F}({ts:nt,element:He.node(),data:Be,tooltipTarget:Ye.node(),contextMenuTarget:Ye.node(),width:Q,height:Z,xPartitions:fe,yPartitions:pe,x:l,y:c,brushShadow:ae,fmtY:g,fmtX:p,scaleX:Ge,scaleY:Ne,updateTime:150,extent:[[0,0],[Q-te.left-te.right,Z-te.top-te.bottom]],selectionCallback:ft,groupsCallback:pt,changeSelectedCoordinatesCallback:ut}),ze.selectAll("text").data([1]).join("text").attr("x",0).attr("y",nt.brushGroupSize/2+2).text("Groups + : ").style("cursor","pointer").on("click",at),$e.appendChild(Re),function(){Le.innerHTML="";let e=n.select(Le),t=e.append("div");t.append("span").text(S||"X Axis:");let r=t.append("div"),o=Ge.domain(),i=r.append("div").append("input").attr("type",Ze?"Date":"number").attr("min",Ze?p(o[0]):o[0]).attr("max",Ze?p(o[1]):o[1]).attr("step",nt.stepX).attr("width","50%").on("change",dt),s=r.append("div").append("input").attr("type",Ze?"Date":"number").attr("min",Ze?p(o[0]):o[0]).attr("max",Ze?p(o[1]):o[1]).attr("width","50%").attr("step",nt.stepX).on("change",dt),l=e.append("div");l.append("span").text(k||"Y Axis:");let c=l.append("div"),u=Ne.domain(),d=c.append("div").append("input").attr("type","number").attr("min",u[0]).attr("max",u[1]).attr("width","50%").attr("step",nt.stepY).on("change",dt),h=c.append("div").append("input").attr("type","number").attr("min",u[0]).attr("max",u[1]).attr("width","50%").attr("step",nt.stepY).on("change",dt);rt=[[i,d],[s,h]],a&&(e.insert("h3",":first-child").text("Current TimeBox Coordinates:"),Re.appendChild(Le))}(),je.innerHTML='<div style="flex-basis:100%;">\n    <div id="brushesList">\n    </div>\n    <button id="btnAddBrushGroup">Add Group</button>\n    </div>',je.querySelector("button#btnAddBrushGroup").addEventListener("click",at),r&&(n.select(je).insert("h3",":first-child").text("Groups:"),Re.appendChild(je)),function(){if(h){Pe.innerHTML="";let e=n.select(Pe),t=e.selectAll(".groupData").data(Ke).join("div").attr("class","groupData");t.append("button").style("font-size",`${nt.brushGroupSize}px`).style("stroke","black").style("margin","2px").style("margin-right","10px").style("border-width","3px").style("border","solid black").style("width",`${nt.brushGroupSize}px`).style("height",`${nt.brushGroupSize}px`).style("background-color",(e=>nt.colorScale(e))).on("click",(function(e,t){Ke.has(t)?(Ke.delete(t),n.select(this).style("border","solid transparent")):(Ke.add(t),n.select(this).style("border","solid black")),ft()})),t.append("span").text((e=>e)),i&&(e.insert("h3",":first-child").text("Data Groups:"),Re.appendChild(Pe))}}(),et.setScales({scaleX:Ge,scaleY:Ne}),et.data(Be),function({overviewX:e,overviewY:r}){nt.hasDetails&&(Xe||(Xe=n.select(t).select("#details").node()||n.create("div").attr("id","#details").node()),Je=F({ts:nt,detailsElement:Xe,detailsContainerHeight:ee,detailsWidth:K,maxDetailsRecords:de,detailsHeight:J,x:l,y:c,margin:ne}),Je.setScales({overviewX:e,overviewY:r}),s&&$e.appendChild(Xe))}({overviewX:Ge,overviewY:Ne}),Ve.set(0,[]),We=Ve,Ie=Be,qe=Ie,ke?tt.addFilters(ke.value.status,!0):M&&tt.addFilters(M,!0),f&&nt.addReferenceCurves(f),e}function ut(e){!function(e){if(e){let[[t,n],[r,o]]=e;if(rt){let[[e,a],[i,s]]=rt;e.node().value=p(t),i.node().value=p(r),a.node().value=g(o).replace("−","-"),s.node().value=g(n).replace("−","-")}else X("updateBrushSpinBox called, but brushSpinBoxes not ready ",rt)}else!function(){let[[e,t],[n,r]]=rt;e.node().value="",n.node().value="",t.node().value="",r.node().value=""}()}(e),gt()}function dt(e){if(null===tt.getSelectedBrush())return;let t,n,[[r,o],[a,i]]=rt,s=Ge.domain(),l=+i.node().value,c=+o.node().value;Ze?(t=new Date(r.node().value),n=new Date(a.node().value),t>=n&&(e.target===r.node()?(n=u(t,nt.stepX),n=Math.min(n,s[1]),a.node().value=p(n)):(t=R(n,nt.stepX),t=Math.max(t,s[0]),r.node().value=p(t)))):(t=+r.node().value,n=+a.node().value,t>=n&&(e.target===r.node()?(n=t+nt.stepX,a.node().value=n):(t=n-nt.stepX,r.node().value=t))),c>=l&&(e.target===o.node()?(l=c+nt.stepY,i.node().value=l):(c=l-nt.stepY,o.node().value=c)),tt.moveSelectedBrush([[t,l],[n,c]])}function ht(e,t,n){let r=[],o=tt.getEnableGroups();o.forEach((e=>{Ue.has(e)&&r.push([e,Ue.get(e)])}));let a=new Map,i=new Set(t);if(e.forEach(((e,t)=>{o.has(t)?a.set(t,e):e.forEach((e=>i.add(e)))})),a.forEach((e=>i.delete(e))),t=Array.from(i),et.render(a,tt.getBrushGroupSelected(),Qe?t:[],r,n),nt.hasDetails){let t=tt.getBrushGroupSelected();window.requestAnimationFrame((()=>Je.render({data:e,brushGroupSelected:t})))}}function ft(e=Ve,t=Ie,n=tt.hasSelection()){Ve=e,Ie=t,h?[We,qe]=function(e,t){let n=new Map(e),r=t;for(let e of n){let t=e[1].filter((e=>Ke.has(h(e[1][0]))));n.set(e[0],t)}return r=r.filter((e=>Ke.has(h(e[1][0])))),[n,r]}(Ve,Ie):(We=Ve,qe=Ie),ie&&function(e){if(!tt.hasSelection())return;let t=+Ge.domain()[0],n=(+Ge.domain()[1]-t)/nt.medianNumBins;for(let r of e.entries()){let e=r[0],o=[],a=t;for(let e=0;e<nt.medianNumBins;++e)o.push({x0:a,x1:a+n,data:[]}),a+=n;for(let e of r[1])for(let r of e[1]){let e=Math.floor((l(r)-t)/n);e=e>nt.medianNumBins-1?e-1:e,o[e].data.push(c(r))}let i=[];for(let e of o)if(e.data.length>=nt.medianMinRecordsPerBin){let t=e.x0+(e.x1-e.x0)/2,n=nt.medianFn(e.data);i.push([t,n])}Ue.set(e,i)}X(" Bins computed",Ue)}(We),ht(We,qe,n),st(),mt(We)}function pt(){ht(We,qe,tt.hasSelection()),st(),mt()}function gt(){let e=new Map;for(let[t,n]of tt.getBrushesGroup()){let r={id:t,name:n.name,isActive:n.isActive,isEnable:n.isEnable,brushes:n.brushes};e.set(n.name,r)}$e.value.status=e,$e.dispatchEvent(new Event("input",{bubbles:!0}))}function mt(e=We){let t=new Map;for(let[n,r]of tt.getBrushesGroup()){let o=new Map;e.get(n).forEach((e=>o.set(e[0],e[1]))),t.set(r.name,o)}$e.value=function(e,t="tw_group"){return Array.from(e.entries()).map((([e,n])=>Array.from(n.values()).map((n=>n.map((n=>(n[t]=e,n))))))).flat(2)}(t,"tw_group"),$e.value.legacyValue=t,$e.value.groupsColorScale=W,$e.value.nonSelectedIds=Ie.map((e=>e[0])),$e.value.selectedIds=Ve.get(tt.getBrushGroupSelected()).map((e=>e[0])),$e.value.selectedGroup=tt.getBrushesGroup().get(tt.getBrushGroupSelected()).name,$e.value.asArray=e=>function(e,{getRepresentative:t=(e=>e[0]),groupAttributeName:n="tw_group"}={}){return[...e.entries()].map((([e,r])=>[...r.values()].map((r=>{const o=t(r);return o[n]=e,o})))).flat()}(t,e),$e.value.getColor=e=>W($e.value.status.get(e).id),$e.extent={x:Ge.domain(),y:Ne.domain()},$e.brushGroups=tt.getBrushesGroup(),gt()}return $e=n.select(t).style("display","flex").style("flex-wrap","wrap").style("position","relative").style("top","0px").style("left","0px").style("background-color",nt.backgroundColor).node(),Re=Re||n.select(t).select("#control").node()||n.create("div").attr("id","control").node(),Le=Le||n.select(t).select("#brushesCoordinates").node()||n.create("div").attr("id","brushesCoordinates").node(),je=je||n.select(t).select("#brushesGroups").node()||n.create("div").attr("id","brushesGroups").node(),Pe=Pe||n.select(t).select("#dataGroups").node()||n.create("div").attr("id","dataGroups").node(),Ue=new Map,Ve=new Map,Ie=[],Ke=new Set,Qe=!0,nt.addReferenceCurves=function(e){if(!Ge)return;if(!Array.isArray(e))throw new Error("The reference curves must be an array of Objects");let t=Ge.domain(),r=Ne.domain();e.forEach((e=>{e.data.sort(((e,t)=>n.ascending(l(e),l(t)))),e.data=e.data.filter((e=>e[0]>=t[0]&&e[0]<=t[1]&&e[1]>=r[0]&&e[1]<=r[1]))}));let o=n.line().defined((e=>void 0!==e[1]&&null!==e[1])).x((e=>Ge(e[0]))).y((e=>Ne(e[1])));Fe.selectAll(".referenceCurve").data(e).join("path").attr("class","referenceCurve").attr("d",(e=>o(e.data))).attr("stroke-width",2).style("fill","none").style("stroke",(e=>e.color)).style("opacity",(e=>e.opacity))},nt.updateCallback=function(e){return arguments.length?(re=e,nt):re},nt.statusCallback=function(e){return arguments.length?(oe=e,nt):oe},nt.data=function(t){X(" Processing data: ... ",(e=t).length),Te=e.filter((e=>void 0!==c(e)&&null!==c(e)&&void 0!==l(e)&&null!==l(e))),lt({xDataType:typeof l(Te[0]),fData:Te}),Te=Te.filter((e=>!isNaN(Ge(l(e)))&&!isNaN(Ne(c(e))))),Be=n.groups(Te,d),Be.map((e=>[e[0],e[1].sort(((e,t)=>n.ascending(l(e),l(t))))])),nt.alphaScale.domain([0,Be.length]),nt.maxTimelines&&(Be=Be.slice(0,nt.maxTimelines)),ct(),ft()},e&&nt.x&&nt.y&&nt.id?nt.data(e):(Ge=n.scaleLinear().range([0,Q-nt.margin.right-nt.margin.left]),Ne=n.scaleLinear().range([Z-nt.margin.top-nt.margin.bottom,0]).nice().clamp(!0),ct()),nt.render=()=>{ft()},nt.update=()=>{let e=$e.value.status;lt({xDataType:typeof l(Te[0]),fData:Te}),ct(),tt.addFilters(e,!0)},$e.ts=nt,$e.details=Xe,$e.brushesCoordinates=Le,$e.groups=je,$e.dataGroups=Pe,$e}}));
