highcharts
Version:
JavaScript charting framework
23 lines • 23.1 kB
JavaScript
!/**
* Highmaps JS v12.6.0 (2026-04-13)
* @module highcharts/modules/heatmap
* @requires highcharts
*
* (c) 2009-2026 Highsoft AS
* Author: Torstein Hønsi
*
* A commercial license may be required depending on use.
* See www.highcharts.com/license
*/function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(t._Highcharts,t._Highcharts.Axis,t._Highcharts.Color,t._Highcharts.SeriesRegistry,t._Highcharts.SVGElement,t._Highcharts.SVGRenderer):"function"==typeof define&&define.amd?define("highcharts/modules/heatmap",["highcharts/highcharts"],function(t){return e(t,t.Axis,t.Color,t.SeriesRegistry,t.SVGElement,t.SVGRenderer)}):"object"==typeof exports?exports["highcharts/modules/heatmap"]=e(t._Highcharts,t._Highcharts.Axis,t._Highcharts.Color,t._Highcharts.SeriesRegistry,t._Highcharts.SVGElement,t._Highcharts.SVGRenderer):t.Highcharts=e(t.Highcharts,t.Highcharts.Axis,t.Highcharts.Color,t.Highcharts.SeriesRegistry,t.Highcharts.SVGElement,t.Highcharts.SVGRenderer)}("u"<typeof window?this:window,(t,e,i,s,o,r)=>(()=>{"use strict";var l,a,n,h,c={28:t=>{t.exports=o},512:t=>{t.exports=s},532:t=>{t.exports=e},540:t=>{t.exports=r},620:t=>{t.exports=i},944:e=>{e.exports=t}},p={};function d(t){var e=p[t];if(void 0!==e)return e.exports;var i=p[t]={exports:{}};return c[t](i,i.exports,d),i.exports}d.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return d.d(e,{a:e}),e},d.d=(t,e)=>{for(var i in e)d.o(e,i)&&!d.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},d.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var u={};d.d(u,{default:()=>th});var f=d(944),g=d.n(f),m=d(532),y=d.n(m),x=d(620),b=d.n(x);let{doc:v,win:C}=g();function A(t,e,i,s={}){let o="function"==typeof t&&t.prototype||t;Object.hasOwnProperty.call(o,"hcEvents")||(o.hcEvents={});let r=o.hcEvents;g().Point&&t instanceof g().Point&&t.series&&t.series.chart&&(t.series.chart.runTrackerClick=!0);let l=t.addEventListener;l&&l.call(t,e,i,!!g().supportsPassiveEvents&&{passive:void 0===s.passive?-1!==e.indexOf("touch"):s.passive,capture:!1}),r[e]||(r[e]=[]);let a={fn:i,order:"number"==typeof s.order?s.order:1/0};return r[e].push(a),r[e].sort((t,e)=>t.order-e.order),function(){!function(t,e,i){function s(e,i){let s=t.removeEventListener;s&&s.call(t,e,i,!1)}function o(i){let o,r;t.nodeName&&(e?(o={})[e]=!0:o=i,S(o,function(t,e){if(i[e])for(r=i[e].length;r--;)s(e,i[e][r].fn)}))}let r="function"==typeof t&&t.prototype||t;if(Object.hasOwnProperty.call(r,"hcEvents")){let t=r.hcEvents;if(e){let r=t[e]||[];i?(t[e]=r.filter(function(t){return i!==t.fn}),s(e,i)):(o(t),t[e]=[])}else o(t),delete r.hcEvents}}(t,e,i)}}function w(t,e,i){return t>e?t<i?t:i:e}function M(t){return null!=t}function E(t,e){let i;for(i in t||(t={}),e)t[i]=e[i];return t}function P(t,e,i,s){if(i=i||{},v?.createEvent&&(t.dispatchEvent||t.fireEvent&&t!==g())){let s=v.createEvent("Events");s.initEvent(e,!0,!0),i=E(s,i),t.dispatchEvent?t.dispatchEvent(i):t.fireEvent(e,i)}else if(t.hcEvents){i.target||E(i,{preventDefault:function(){i.defaultPrevented=!0},target:t,type:e});let s=[],o=t,r=!1;for(;o.hcEvents;)Object.hasOwnProperty.call(o,"hcEvents")&&o.hcEvents[e]&&(s.length&&(r=!0),s.unshift.apply(s,o.hcEvents[e])),o=Object.getPrototypeOf(o);r&&s.sort((t,e)=>t.order-e.order),s.forEach(e=>{!1===e.fn.call(t,i,t)&&i.preventDefault()})}s&&!i.defaultPrevented&&s.call(t,i)}function L(t){return T(t)&&"number"==typeof t.nodeType}function k(t){return"number"==typeof t&&!isNaN(t)&&t<1/0&&t>-1/0}function I(t){let e=Object.prototype.toString.call(t);return"[object Array]"===e||"[object Array Iterator]"===e}function T(t,e){return!!t&&"object"==typeof t&&(!e||!I(t))}function O(t,...e){let i,s=[t,...e],o={},r=function(t,e){return"object"!=typeof t&&(t={}),S(e,function(i,s){if("__proto__"!==s&&"constructor"!==s){let o;!T(i,!0)||(o=i?.constructor,T(i,!0)&&!L(i)&&o?.name&&"Object"!==o.name)||L(i)?t[s]=e[s]:t[s]=r(t[s]||{},i)}}),t};!0===t&&(o=s[1],s=Array.prototype.slice.call(s,2));let l=s.length;for(i=0;i<l;i++)o=r(o,s[i]);return o}function S(t,e,i){for(let s in t)Object.hasOwnProperty.call(t,s)&&e.call(i||t[s],t[s],s,t)}function D(){let t=arguments,e=t.length;for(let i=0;i<e;i++){let e=t[i];if(null!=e)return e}}function V(t,e,i){return/%$/.test(t)?e*parseFloat(t)/100+(i||0):parseFloat(t)}Array.prototype.find;let{parse:H}=b();(l=a||(a={})).initDataClasses=function(t){let e=this.chart,i=this.legendItem=this.legendItem||{},s=this.options,o=t.dataClasses||[],r,l,a=e.options.chart.colorCount,n=0,h;this.dataClasses=l=[],i.labels=[];for(let t=0,i=o.length;t<i;++t)r=O(r=o[t]),l.push(r),(e.styledMode||!r.color)&&("category"===s.dataClassColor?(e.styledMode||(a=(h=e.options.colors||[]).length,r.color=h[n]),r.colorIndex=n,++n===a&&(n=0)):r.color=H(s.minColor).tweenTo(H(s.maxColor),i<2?.5:t/(i-1)))},l.initStops=function(){let t=this.options,e=this.stops=t.stops||[[0,t.minColor||""],[1,t.maxColor||""]];for(let t=0,i=e.length;t<i;++t)e[t].color=H(e[t][1])},l.normalizedValue=function(t){let e=this.max||0,i=this.min||0;return this.logarithmic&&(t=this.logarithmic.log2lin(t)),1-(e-t)/(e-i||1)},l.toColor=function(t,e){let i,s,o,r,l,a,n=this.dataClasses,h=this.stops;if(n){for(a=n.length;a--;)if(s=(l=n[a]).from,o=l.to,(void 0===s||t>=s)&&(void 0===o||t<=o)){r=l.color,e&&(e.dataClass=a,e.colorIndex=l.colorIndex);break}}else{for(i=this.normalizedValue(t),a=h.length;a--&&!(i>h[a][0]););s=h[a]||h[a+1],i=1-((o=h[a+1]||s)[0]-i)/(o[0]-s[0]||1),r=s.color.tweenTo(o.color,i)}return r};let z=a,{parse:G}=b();!function(t){let e;function i(){let{userOptions:t}=this;if(this.colorAxis=[],t.colorAxis){var i;t.colorAxis=I(i=t.colorAxis)?i:[i],t.colorAxis.map(t=>new e(this,t))}}function s(t){let e=this.chart.colorAxis||[],i=e=>{let i=t.allItems.indexOf(e);-1!==i&&(this.destroyItem(t.allItems[i]),t.allItems.splice(i,1))},s=[],o,r;for(e.forEach(function(t){o=t.options,o?.showInLegend&&(o.dataClasses&&o.visible?s=s.concat(t.getDataClassLegendSymbols()):o.visible&&s.push(t),t.series.forEach(function(t){(!t.options.showInLegend||o.dataClasses)&&("point"===t.options.legendType?t.points.forEach(function(t){i(t)}):i(t))}))}),r=s.length;r--;)t.allItems.unshift(s[r])}function o(t){t.visible&&t.item.legendColor&&t.item.legendItem.symbol.attr({fill:t.item.legendColor})}function r(t){this.chart.colorAxis?.forEach(e=>{e.update({},t.redraw)})}function l(){(this.chart.colorAxis?.length||this.colorAttribs)&&this.translateColors()}function a(){let t=this.axisTypes;t?-1===t.indexOf("colorAxis")&&t.push("colorAxis"):this.axisTypes=["colorAxis"]}function n(t){let e=this,i=t?"show":"hide";e.visible=e.options.visible=!!t,["graphic","dataLabel"].forEach(function(t){e[t]&&e[t][i]()}),this.series.buildKDTree()}function h(){let t=this,e=this.getPointsCollection(),i=this.options.nullColor,s=this.colorAxis,o=this.colorKey;e.forEach(e=>{let r=e.getNestedProperty(o),l=e.options.color||(e.isNull||null===e.value?i:s&&void 0!==r?s.toColor(r,e):e.color||t.color);l&&e.color!==l&&(e.color=l,"point"===t.options.legendType&&e.legendItem&&e.legendItem.label&&t.chart.legend.colorizeItem(e,e.visible))})}function c(){this.elem.attr("fill",G(this.start).tweenTo(G(this.end),this.pos),void 0,!0)}function p(){this.elem.attr("stroke",G(this.start).tweenTo(G(this.end),this.pos),void 0,!0)}t.compose=function(t,d,u,f,g){var m;let y,x=d.prototype,b=u.prototype,v=g.prototype;x.collectionsWithUpdate.includes("colorAxis")||(e=t,x.collectionsWithUpdate.push("colorAxis"),x.collectionsWithInit.colorAxis=[x.addColorAxis],A(d,"afterCreateAxes",i),y=(m=d).prototype.createAxis,m.prototype.createAxis=function(t,i){if("colorAxis"!==t)return y.apply(this,arguments);let s=new e(this,O(i.axis,{index:this[t].length,isX:!1}));return this.isDirtyLegend=!0,this.axes.forEach(t=>{t.series=[]}),this.series.forEach(t=>{t.bindAxes(),t.isDirtyData=!0}),D(i.redraw,!0)&&this.redraw(i.animation),s},b.fillSetter=c,b.strokeSetter=p,A(f,"afterGetAllItems",s),A(f,"afterColorizeItem",o),A(f,"afterUpdate",r),E(v,{optionalAxis:"colorAxis",translateColors:h}),E(v.pointClass.prototype,{setVisible:n}),A(g,"afterTranslate",l,{order:1}),A(g,"bindAxes",a))},t.pointSetVisible=n}(n||(n={}));let R=n;var _=d(512),j=d.n(_);let{defaultOptions:W}=g(),{series:N}=j();W.colorAxis=O(W.xAxis,{lineWidth:0,minPadding:0,maxPadding:0,gridLineColor:"#ffffff",gridLineWidth:1,tickPixelInterval:72,startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},width:.01,color:"#999999"},labels:{distance:8,overflow:"justify",rotation:0},minColor:"#e6e9ff",maxColor:"#0022ff",tickLength:5,title:{margin:5},showInLegend:!0});class K extends y(){static compose(t,e,i,s){R.compose(K,t,e,i,s)}constructor(t,e){super(t,e),this.coll="colorAxis",this.visible=!0,this.init(t,e)}init(t,e){let i=t.options.legend||{},s=e.layout?"vertical"!==e.layout:"vertical"!==i.layout;this.side=e.side||s?2:1,this.reversed=e.reversed,this.opposite=!s,super.init(t,e,"colorAxis"),this.userOptions=e,I(t.userOptions.colorAxis)&&(t.userOptions.colorAxis[this.index]=e),e.dataClasses&&this.initDataClasses(e),this.initStops(),this.horiz=s,this.zoomEnabled=!1}hasData(){return!!(this.tickPositions||[]).length}setTickPositions(){if(!this.dataClasses)return super.setTickPositions()}setOptions(t){let e=this.chart.options.legend||{},i=W.colorAxis,s=O("vertical"!==(t.layout||e.layout||i.layout)?{title:{rotation:0}}:{title:{rotation:90,margin:10}},i,t,{showEmpty:!1,visible:this.chart.options.legend.enabled&&!1!==t.visible});super.setOptions(s),this.options.crosshair=this.options.marker}setAxisSize(){let t=this.chart,e=this.legendItem?.symbol,{width:i,height:s}=this.getSize();e&&(this.left=+e.attr("x"),this.top=+e.attr("y"),this.width=i=+e.attr("width"),this.height=s=+e.attr("height"),this.right=t.chartWidth-this.left-i,this.bottom=t.chartHeight-this.top-s,this.pos=this.horiz?this.left:this.top),this.len=(this.horiz?i:s)||K.defaultLegendLength}getOffset(){let t=this.legendItem?.group,e=this.chart.axisOffset[this.side];if(t){this.axisParent=t,super.getOffset();let i=this.chart.legend;i.allItems.forEach(function(t){t instanceof K&&t.drawLegendSymbol(i,t)}),i.render(),this.chart.getMargins(!0),this.added||(this.added=!0),this.labelLeft=0,this.labelRight=this.width,this.chart.axisOffset[this.side]=e}}setLegendColor(){let t=this.horiz,e=this.reversed,i=+!!e,s=+!e,o=t?[i,0,s,0]:[0,s,0,i];this.legendColor={linearGradient:{x1:o[0],y1:o[1],x2:o[2],y2:o[3]},stops:this.stops}}drawLegendSymbol(t,e){let i=e.legendItem||{},s=t.padding,o=t.options,r=this.options.labels,l=D(o.itemDistance,10),a=this.horiz,{width:n,height:h}=this.getSize(),c=D(o.labelPadding,a?16:30);this.setLegendColor();let p=0,d=0;if(this.options.title?.text&&!this.axisTitle){this.axisGroup||(this.axisParent=i.group,this.createGroups());let t=this.len,e=this.top,s=this.left,o=this.width;this.len=a?n:h,this.top=0,this.left=0,this.width=n,this.addTitle(!0),this.len=t,this.top=e,this.left=s,this.width=o}if(this.axisTitle){let t=this.axisTitle.getBBox();p=t.height,d=t.width}let u=this.options.title||{},f=this.axisTitle?u.margin??0:0,g=a?p+f:0;i.symbol||(i.symbol=this.chart.renderer.symbol("roundedRect").attr({r:o.symbolRadius??3,zIndex:1}).add(i.group)),i.symbol.attr({x:0,y:(t.baseline||0)-11+g,width:n,height:h}),a?(i.labelWidth=Math.max(n+s+l,d||0),i.labelHeight=h+s+c+p+f):(i.labelWidth=n+s+(r.x??r.distance??0)+(this.maxLabelLength||0)+(d||0)+f,i.labelHeight=Math.max(h+s,p||0))}getTitlePosition(t){let e=super.getTitlePosition(t),i=this.options.title?.margin??0;if(this.horiz&&t)e.y=this.top-i;else if(!this.horiz&&t){let t=this.options.labels||{},s=t.x??t.distance??0;e.x=this.left+this.width+s+(this.maxLabelLength||0)+i}return e}setState(t){this.series.forEach(function(e){e.setState(t)})}setVisible(){}getSeriesExtremes(){let t=this.series,e,i,s,o,r=t.length;for(this.dataMin=1/0,this.dataMax=-1/0;r--;){for(let l of(i=(o=t[r]).colorKey=D(o.options.colorKey,o.colorKey,o.pointValKey,o.zoneAxis,"y"),s=o[i+"Min"]&&o[i+"Max"],[i,"value","y"]))if((e=o.getColumn(l)).length)break;if(s)o.minColorValue=o[i+"Min"],o.maxColorValue=o[i+"Max"];else{let t=N.prototype.getExtremes.call(o,e);o.minColorValue=t.dataMin,o.maxColorValue=t.dataMax}M(o.minColorValue)&&M(o.maxColorValue)&&(this.dataMin=Math.min(this.dataMin,o.minColorValue),this.dataMax=Math.max(this.dataMax,o.maxColorValue)),s||N.prototype.applyExtremes.call(o)}}drawCrosshair(t,e){let i,s=this.legendItem||{},o=e?.plotX,r=e?.plotY,l=this.pos,a=this.len;e&&((i=this.toPixels(e.getNestedProperty(e.series.colorKey)))<l?i=l-2:i>l+a&&(i=l+a+2),e.plotX=i,e.plotY=this.len-i,super.drawCrosshair(t,e),e.plotX=o,e.plotY=r,this.cross&&!this.cross.addedToColorAxis&&s.group&&(this.cross.addClass("highcharts-coloraxis-marker").add(s.group),this.cross.addedToColorAxis=!0,this.chart.styledMode||"object"!=typeof this.crosshair||this.cross.attr({fill:this.crosshair.color})))}getPlotLinePath(t){let e=this.left,i=t.translatedValue,s=this.top;return k(i)?this.horiz?[["M",i-4,s-6],["L",i+4,s-6],["L",i,s],["Z"]]:[["M",e,i],["L",e-6,i+6],["L",e-6,i-6],["Z"]]:super.getPlotLinePath(t)}update(t,e){let i=this.chart.legend;this.series.forEach(t=>{t.isDirtyData=!0}),(t.dataClasses&&i.allItems||this.dataClasses)&&this.destroyItems(),super.update(t,e),this.legendItem?.label&&(this.setLegendColor(),i.colorizeItem(this,!0))}destroyItems(){let t=this.chart,e=this.legendItem||{};if(e.label)t.legend.destroyItem(this);else if(e.labels)for(let i of e.labels)t.legend.destroyItem(i);t.isDirtyLegend=!0}destroy(){this.chart.isDirtyLegend=!0,this.destroyItems(),super.destroy(...[].slice.call(arguments))}remove(t){this.destroyItems(),super.remove(t)}getDataClassLegendSymbols(){let t,e=this,i=e.chart,s=e.legendItem&&e.legendItem.labels||[],o=i.options.legend,r=D(o.valueDecimals,-1),l=D(o.valueSuffix,""),a=t=>e.series.reduce((e,i)=>(e.push(...i.points.filter(e=>e.dataClass===t)),e),[]);return s.length||e.dataClasses.forEach((o,n)=>{let h=o.from,c=o.to,{numberFormatter:p}=i,d=!0;t="",void 0===h?t="< ":void 0===c&&(t="> "),void 0!==h&&(t+=p(h,r)+l),void 0!==h&&void 0!==c&&(t+=" - "),void 0!==c&&(t+=p(c,r)+l),s.push(E({chart:i,name:t,options:{},drawLegendSymbol:N.prototype.drawLegendSymbol,visible:!0,isDataClass:!0,setState:t=>{for(let e of a(n))e.setState(t)},setVisible:function(){this.visible=d=e.visible=!d;let t=[];for(let e of a(n))e.setVisible(d),e.hiddenInDataClass=!d,-1===t.indexOf(e.series)&&t.push(e.series);i.legend.colorizeItem(this,d),t.forEach(t=>{P(t,"afterDataClassLegendClick")})}},o))}),s}getSize(){let{chart:t,horiz:e}=this,{height:i,width:s}=this.options,{legend:o}=t.options;return{width:D(M(s)?V(s,t.chartWidth):void 0,o?.symbolWidth,e?K.defaultLegendLength:12),height:D(M(i)?V(i,t.chartHeight):void 0,o?.symbolHeight,e?12:K.defaultLegendLength)}}}K.defaultLegendLength=200,K.keepProps=["legendItem"],E(K.prototype,z),Array.prototype.push.apply(y().keepProps,K.keepProps);/**
* @license Highcharts JS v12.6.0 (2026-04-13)
* @module highcharts/modules/color-axis
* @requires highcharts
*
* ColorAxis module
*
* (c) 2012-2026 Highsoft AS
* Author: Paweł Potaczek
*
* A commercial license may be required depending on use.
* See www.highcharts.com/license
*/let F=g();F.ColorAxis=F.ColorAxis||K,F.ColorAxis.compose(F.Chart,F.Fx,F.Legend,F.Series);var X=d(28),U=d.n(X);let{column:{prototype:Y}}=j().seriesTypes;var B=h||(h={});function Z(t){let e=this.series,i=e.chart.renderer;this.moveToTopOnHover&&this.graphic&&(e.stateMarkerGraphic||(e.stateMarkerGraphic=new(U())(i,"use").css({pointerEvents:"none"}).add(this.graphic.parentGroup)),t?.state==="hover"?(this.graphic.attr({id:this.id}),e.stateMarkerGraphic.attr({href:`${i.url}#${this.id}`,visibility:"visible"})):e.stateMarkerGraphic.attr({href:""}))}B.pointMembers={dataLabelOnNull:!0,moveToTopOnHover:!0,isValid:function(){return null!==this.value&&this.value!==1/0&&this.value!==-1/0&&(void 0===this.value||!isNaN(this.value))}},B.seriesMembers={colorKey:"value",axisTypes:["xAxis","yAxis","colorAxis"],parallelArrays:["x","y","value"],pointArrayMap:["value"],trackerGroups:["group","markerGroup","dataLabelsGroup"],colorAttribs:function(t){let e={};return M(t.color)&&(!t.state||"normal"===t.state)&&(e[this.colorProp||"fill"]=t.color),e},pointAttribs:Y.pointAttribs},B.compose=function(t){return A(t.prototype.pointClass,"afterSetState",Z),t};let $=h,{scatter:{prototype:{pointClass:q}}}=j().seriesTypes;class J extends q{applyOptions(t,e){return(this.isNull||null===this.value)&&delete this.color,super.applyOptions(t,e),this.formatPrefix=this.isNull||null===this.value?"null":"point",this}getCellAttributes(){let t=this.series,e=t.options,i=(e.colsize||1)/2,s=(e.rowsize||1)/2,o=t.xAxis,r=t.yAxis,l=this.options.marker||t.options.marker,a=t.pointPlacementToXValue(),n=D(this.pointPadding,e.pointPadding,0),h={x1:w(Math.round(o.len-o.translate(this.x-i,!1,!0,!1,!0,-a)),-o.len,2*o.len),x2:w(Math.round(o.len-o.translate(this.x+i,!1,!0,!1,!0,-a)),-o.len,2*o.len),y1:w(Math.round(r.translate(this.y-s,!1,!0,!1,!0)),-r.len,2*r.len),y2:w(Math.round(r.translate(this.y+s,!1,!0,!1,!0)),-r.len,2*r.len)};for(let t of[["width","x"],["height","y"]]){let e=t[0],i=t[1],s=i+"1",a=i+"2",c=Math.abs(h[s]-h[a]),p=l&&l.lineWidth||0,d=Math.abs(h[s]+h[a])/2,u=l&&l[e];if(M(u)&&u<c){let t=u/2+p/2;h[s]=d-t,h[a]=d+t}n&&(("x"===i&&o.reversed||"y"===i&&!r.reversed)&&(s=a,a=i+"1"),h[s]+=n,h[a]-=n)}return h}haloPath(t){if(!t)return[];let{x:e=0,y:i=0,width:s=0,height:o=0}=this.shapeArgs||{};return[["M",e-t,i-t],["L",e-t,i+o+t],["L",e+s+t,i+o+t],["L",e+s+t,i-t],["Z"]]}isValid(){return this.value!==1/0&&this.value!==-1/0}}E(J.prototype,{dataLabelOnNull:!0,moveToTopOnHover:!0,ttBelow:!1});var Q=d(540),tt=d.n(Q);let{doc:te}=g(),{series:ti,seriesTypes:{column:ts,scatter:to}}=j(),{prototype:{symbols:tr}}=tt(),{colorFromPoint:tl,getContext:ta}={colorFromPoint:function(t,e){let i=e.series.colorAxis;if(i){let s=i.toColor(t||0,e).split(")")[0].split("(")[1].split(",").map(t=>D(parseFloat(t),parseInt(t,10)));return s[3]=255*D(s[3],1),M(t)&&e.visible||(s[3]=0),s}return[0,0,0,0]},getContext:function(t){let{canvas:e,context:i}=t;return e&&i?.clearRect?(i.clearRect(0,0,e.width,e.height),i):(t.canvas=te.createElement("canvas"),t.context=t.canvas.getContext("2d",{willReadFrequently:!0})||void 0,t.context)}};class tn extends to{constructor(){super(...arguments),this.valueMax=NaN,this.valueMin=NaN,this.isDirtyCanvas=!0}drawPoints(){let t=this,e=t.options,i=e.interpolation,s=e.marker||{};if(i){let{image:e,chart:i,xAxis:s,yAxis:o}=t,{reversed:r=!1,len:l}=s,{reversed:a=!1,len:n}=o,h={width:l,height:n};if(!e||t.isDirtyData||t.isDirtyCanvas){let l=ta(t),{canvas:n,options:{colsize:c=1,rowsize:p=1},points:d,points:{length:u}}=t,f=i.colorAxis&&i.colorAxis[0];if(n&&l&&f){let{min:f,max:g}=s.getExtremes(),{min:m,max:y}=o.getExtremes(),x=g-f,b=y-m,v=Math.round(x/c/8*8),C=Math.round(b/p/8*8),[A,w]=[[v,v/x,r,"ceil"],[C,C/b,!a,"floor"]].map(([t,e,i,s])=>i?i=>Math[s](t-e*i):t=>Math[s](e*t)),M=n.width=v+1,E=M*(n.height=C+1),P=(u-1)/E,L=new Uint8ClampedArray(4*E),k=(t,e)=>4*Math.ceil(M*w(e-m)+A(t-f));t.buildKDTree();for(let t=0;t<E;t++){let e=d[Math.ceil(P*t)],{x:i,y:s}=e;L.set(tl(e.value,e),k(i,s))}l.putImageData(new ImageData(L,M),0,0),e?e.attr({...h,href:n.toDataURL("image/png",1)}):(t.directTouch=!1,t.image=i.renderer.image(n.toDataURL("image/png",1)).attr(h).add(t.group))}t.isDirtyCanvas=!1}else(e.width!==l||e.height!==n)&&e.attr(h)}else(s.enabled||t._hasPointMarkers)&&(ti.prototype.drawPoints.call(t),t.points.forEach(e=>{e.graphic&&(e.graphic[t.chart.styledMode?"css":"animate"](t.colorAttribs(e)),null===e.value&&e.graphic.addClass("highcharts-null-point"))}))}getExtremes(){let{dataMin:t,dataMax:e}=ti.prototype.getExtremes.call(this,this.getColumn("value"));return k(t)&&(this.valueMin=t),k(e)&&(this.valueMax=e),ti.prototype.getExtremes.call(this)}getValidPoints(t,e){return ti.prototype.getValidPoints.call(this,t,e,!0)}hasData(){return!!this.dataTable.rowCount}init(){super.init.apply(this,arguments);let t=this.options;t.pointRange=D(t.pointRange,t.colsize||1),this.yAxis.axisPointRange=t.rowsize||1,tr.ellipse=tr.circle,t.marker&&k(t.borderRadius)&&(t.marker.r=t.borderRadius);let e=this.canvas=document.createElement("canvas");e&&(this.context=e?.getContext("webgpu"))}markerAttribs(t,e){let i=t.shapeArgs||{};if(t.hasImage)return{x:t.plotX,y:t.plotY};if(e&&"normal"!==e){let s=t.options.marker||{},o=this.options.marker||{},r=o.states?.[e]||{},l=s.states?.[e]||{},a=(l.width||r.width||i.width||0)+(l.widthPlus||r.widthPlus||0),n=(l.height||r.height||i.height||0)+(l.heightPlus||r.heightPlus||0);return{x:(i.x||0)+((i.width||0)-a)/2,y:(i.y||0)+((i.height||0)-n)/2,width:a,height:n}}return i}pointAttribs(t,e){let i=ti.prototype.pointAttribs.call(this,t,e),s=this.options||{},o=this.chart.options.plotOptions||{},r=o.series||{},l=o.heatmap||{},a=t?.options.borderColor||s.borderColor||l.borderColor||r.borderColor,n=t?.options.borderWidth||s.borderWidth||l.borderWidth||r.borderWidth||i["stroke-width"];if(i.stroke=t?.marker?.lineColor||s.marker?.lineColor||a||this.color,i["stroke-width"]=n,e&&"normal"!==e){let o=O(s.states?.[e],s.marker?.states?.[e],t?.options.marker?.states?.[e]||{});i.fill=o.color||b().parse(i.fill).brighten(o.brightness||0).get(),i.stroke=o.lineColor||i.stroke}return i}translate(){let{borderRadius:t,marker:e}=this.options,i=e?.symbol||"rect",s=tr[i]?i:"rect",o=-1!==["circle","square"].indexOf(s);for(let e of(this.generatePoints(),this.points)){let r=e.getCellAttributes(),l=Math.min(r.x1,r.x2),a=Math.min(r.y1,r.y2),n=Math.max(Math.abs(r.x2-r.x1),0),h=Math.max(Math.abs(r.y2-r.y1),0);if(e.hasImage=0===(e.marker?.symbol||i||"").indexOf("url"),o){let t=Math.abs(n-h);l=Math.min(r.x1,r.x2)+(n<h?0:t/2),a=Math.min(r.y1,r.y2)+(n<h?t/2:0),n=h=Math.min(n,h)}e.hasImage&&(e.marker={width:n,height:h}),e.plotX=e.clientX=(r.x1+r.x2)/2,e.plotY=(r.y1+r.y2)/2,e.shapeType="path",e.shapeArgs=O(!0,{x:l,y:a,width:n,height:h},{d:tr[s](l,a,n,h,{r:k(t)?t:0})})}P(this,"afterTranslate")}}tn.defaultOptions=O(to.defaultOptions,{animation:!1,borderRadius:0,borderWidth:0,interpolation:!1,nullColor:"#f7f7f7",dataLabels:{formatter:function(){let{numberFormatter:t}=this.series.chart,{value:e}=this.point;return k(e)?t(e,-1):""},inside:!0,verticalAlign:"middle",crop:!1,overflow:"allow",padding:0},marker:{symbol:"rect",radius:0,lineColor:void 0,states:{hover:{lineWidthPlus:0},select:{}}},clip:!0,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}<br/>"},states:{hover:{halo:!1,brightness:.2}},legendSymbol:"rectangle"}),A(tn,"afterDataClassLegendClick",function(){this.isDirtyCanvas=!0,this.drawPoints(),this.options.enableMouseTracking&&this.drawTracker()}),E(tn.prototype,{axisTypes:$.seriesMembers.axisTypes,colorKey:$.seriesMembers.colorKey,directTouch:!0,getExtremesFromAll:!0,keysAffectYAxis:["y"],parallelArrays:$.seriesMembers.parallelArrays,pointArrayMap:["y","value"],pointClass:J,specialGroup:"group",trackerGroups:$.seriesMembers.trackerGroups,alignDataLabel:ts.prototype.alignDataLabel,colorAttribs:$.seriesMembers.colorAttribs,getSymbol:ti.prototype.getSymbol}),$.compose(tn),j().registerSeriesType("heatmap",tn);let th=g();return u.default})());