@gemx-dev/heatmap-react 3.5.92-dev.22 → 3.5.92-dev.23

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/dist/esm/index.js CHANGED
@@ -6103,19 +6103,24 @@ class ScrollBucketRenderer {
6103
6103
  if (canvas.width <= 0 || canvas.height <= 0)
6104
6104
  return;
6105
6105
  const buckets = this.mapToBuckets(data);
6106
- if (buckets.length === 0)
6107
- return;
6108
- const maxPercent = Math.max(...buckets.map((b) => b.percent));
6109
- if (maxPercent <= 0)
6110
- return;
6106
+ const maxPercent = buckets.length > 0 ? Math.max(...buckets.map((b) => b.percent)) : 0;
6107
+ // Coldest hue (240 = blue) used as the baseline for buckets with no data
6108
+ const coldColor = 'hsla(240, 100%, 50%, 0.6)';
6111
6109
  const gradient = context.createLinearGradient(0, 0, 0, canvas.height);
6112
- for (const bucket of buckets) {
6113
- const stopMid = (bucket.startY + bucket.endY) / 2 / 100;
6114
- // Same hue direction as HeatmapHelper.scroll() (MaxHue = 240):
6115
- // high percent → hue 0 (red/hot), low percent → hue 240 (blue/cold)
6116
- const hue = (1 - bucket.percent / maxPercent) * 240;
6117
- const color = `hsla(${Math.round(hue)}, 100%, 50%, 0.6)`;
6118
- gradient.addColorStop(stopMid, color);
6110
+ if (buckets.length === 0 || maxPercent <= 0) {
6111
+ // No data fill entire canvas with the coldest color
6112
+ gradient.addColorStop(0, coldColor);
6113
+ gradient.addColorStop(1, coldColor);
6114
+ }
6115
+ else {
6116
+ for (const bucket of buckets) {
6117
+ const stopMid = (bucket.startY + bucket.endY) / 2 / 100;
6118
+ // Same hue direction as HeatmapHelper.scroll() (MaxHue = 240):
6119
+ // high percent → hue 0 (red/hot), low percent → hue 240 (blue/cold)
6120
+ const hue = (1 - bucket.percent / maxPercent) * 240;
6121
+ const color = `hsla(${Math.round(hue)}, 100%, 50%, 0.6)`;
6122
+ gradient.addColorStop(stopMid, color);
6123
+ }
6119
6124
  }
6120
6125
  context.fillStyle = gradient;
6121
6126
  context.fillRect(0, 0, canvas.width, canvas.height);
@@ -6103,19 +6103,24 @@ class ScrollBucketRenderer {
6103
6103
  if (canvas.width <= 0 || canvas.height <= 0)
6104
6104
  return;
6105
6105
  const buckets = this.mapToBuckets(data);
6106
- if (buckets.length === 0)
6107
- return;
6108
- const maxPercent = Math.max(...buckets.map((b) => b.percent));
6109
- if (maxPercent <= 0)
6110
- return;
6106
+ const maxPercent = buckets.length > 0 ? Math.max(...buckets.map((b) => b.percent)) : 0;
6107
+ // Coldest hue (240 = blue) used as the baseline for buckets with no data
6108
+ const coldColor = 'hsla(240, 100%, 50%, 0.6)';
6111
6109
  const gradient = context.createLinearGradient(0, 0, 0, canvas.height);
6112
- for (const bucket of buckets) {
6113
- const stopMid = (bucket.startY + bucket.endY) / 2 / 100;
6114
- // Same hue direction as HeatmapHelper.scroll() (MaxHue = 240):
6115
- // high percent → hue 0 (red/hot), low percent → hue 240 (blue/cold)
6116
- const hue = (1 - bucket.percent / maxPercent) * 240;
6117
- const color = `hsla(${Math.round(hue)}, 100%, 50%, 0.6)`;
6118
- gradient.addColorStop(stopMid, color);
6110
+ if (buckets.length === 0 || maxPercent <= 0) {
6111
+ // No data fill entire canvas with the coldest color
6112
+ gradient.addColorStop(0, coldColor);
6113
+ gradient.addColorStop(1, coldColor);
6114
+ }
6115
+ else {
6116
+ for (const bucket of buckets) {
6117
+ const stopMid = (bucket.startY + bucket.endY) / 2 / 100;
6118
+ // Same hue direction as HeatmapHelper.scroll() (MaxHue = 240):
6119
+ // high percent → hue 0 (red/hot), low percent → hue 240 (blue/cold)
6120
+ const hue = (1 - bucket.percent / maxPercent) * 240;
6121
+ const color = `hsla(${Math.round(hue)}, 100%, 50%, 0.6)`;
6122
+ gradient.addColorStop(stopMid, color);
6123
+ }
6119
6124
  }
6120
6125
  context.fillStyle = gradient;
6121
6126
  context.fillRect(0, 0, canvas.width, canvas.height);
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollBucketRenderer.d.ts","sourceRoot":"","sources":["../../../../src/libs/visualizer/renderers/ScrollBucketRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,aAAa,CAA8C;gBAEvD,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,wBAAwB,CAG9B;IAEF,OAAO,CAAC,wBAAwB,CAS9B;IAEF,KAAK,QAAO,IAAI,CAEd;IAEF,KAAK,QAAO,IAAI,CAGd;IAEF;;;;;OAKG;IACH,YAAY,GAAU,MAAM,iBAAiB,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ7D;IAEF,OAAO,CAAC,IAAI,CAuCV;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,CA0BlB;CACH"}
1
+ {"version":3,"file":"ScrollBucketRenderer.d.ts","sourceRoot":"","sources":["../../../../src/libs/visualizer/renderers/ScrollBucketRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,aAAa,CAA8C;gBAEvD,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,wBAAwB,CAG9B;IAEF,OAAO,CAAC,wBAAwB,CAS9B;IAEF,KAAK,QAAO,IAAI,CAEd;IAEF,KAAK,QAAO,IAAI,CAGd;IAEF;;;;;OAKG;IACH,YAAY,GAAU,MAAM,iBAAiB,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ7D;IAEF,OAAO,CAAC,IAAI,CA4CV;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,CA0BlB;CACH"}