diff --git a/README.md b/README.md
index 92f77db5..7c84bdab 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,15 @@
Heat.js
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Heat.js%2C%20a%20free%20JavaScript%heat%20map&url=https://github.com/williamtroup/Heat.js&hashtags=javascript,heat,map)
-[![npm](https://img.shields.io/badge/npmjs-v1.6.0-blue)](https://www.npmjs.com/package/jheat.js)
-[![nuget](https://img.shields.io/badge/nuget-v1.6.0-purple)](https://www.nuget.org/packages/jHeat.js/)
+[![npm](https://img.shields.io/badge/npmjs-v1.6.1-blue)](https://www.npmjs.com/package/jheat.js)
+[![nuget](https://img.shields.io/badge/nuget-v1.6.1-purple)](https://www.nuget.org/packages/jHeat.js/)
[![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Heat.js/blob/main/LICENSE.txt)
[![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Heat.js/discussions)
[![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](https://william-troup.com/)
>
🌞 A lightweight JavaScript library that generates customizable heat maps and charts to visualize date-based activity and trends.
-> v1.6.0
+> v1.6.1
![Heat.js](docs/images/main.png)
diff --git a/README_NUGET.md b/README_NUGET.md
index 974492ca..d8d98aa7 100644
--- a/README_NUGET.md
+++ b/README_NUGET.md
@@ -1,8 +1,8 @@
-# Heat.js v1.6.0
+# Heat.js v1.6.1
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Heat.js%2C%20a%20free%20JavaScript%heat%20map&url=https://github.com/williamtroup/Heat.js&hashtags=javascript,heat,map)
-[![npm](https://img.shields.io/badge/npmjs-v1.6.0-blue)](https://www.npmjs.com/package/jheat.js)
-[![nuget](https://img.shields.io/badge/nuget-v1.6.0-purple)](https://www.nuget.org/packages/jHeat.js/)
+[![npm](https://img.shields.io/badge/npmjs-v1.6.1-blue)](https://www.npmjs.com/package/jheat.js)
+[![nuget](https://img.shields.io/badge/nuget-v1.6.1-purple)](https://www.nuget.org/packages/jHeat.js/)
[![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Heat.js/blob/main/LICENSE.txt)
[![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Heat.js/discussions)
[![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](https://william-troup.com/)
diff --git a/dist/heat.js b/dist/heat.js
index 677b34cd..d5d35318 100644
--- a/dist/heat.js
+++ b/dist/heat.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
(function() {
function render() {
var tagTypes = _configuration.domElementTypes;
@@ -195,7 +195,7 @@
fireCustomTrigger(bindingOptions.onNextYear, bindingOptions.currentView.year);
};
} else {
- optionMap.className += _string.space + "title-active";
+ addClass(optionMap, "title-active");
}
if (bindingOptions.currentView.view !== _elements_View_Chart) {
optionChart.onclick = function() {
@@ -204,7 +204,7 @@
fireCustomTrigger(bindingOptions.onNextYear, bindingOptions.currentView.year);
};
} else {
- optionChart.className += _string.space + "title-active";
+ addClass(optionChart, "title-active");
}
if (bindingOptions.showExportButton) {
var exportData = createElementWithHTML(titleBar, "button", "export", _configuration.exportButtonText);
@@ -256,7 +256,7 @@
fireCustomTrigger(bindingOptions.onNextYear, bindingOptions.currentView.year);
};
} else {
- year.className += _string.space + "year-active";
+ addClass(year, "year-active");
}
}
function renderControlMap(bindingOptions) {
@@ -269,7 +269,7 @@
if (bindingOptions.showDayNames) {
var days = createElement(map, "div", "days");
if (!bindingOptions.showMonthNames || bindingOptions.placeMonthNamesOnTheBottom) {
- days.style.paddingTop = "0px";
+ days.className = "days-months-bottom";
}
var dayNameIndex = 0;
for (; dayNameIndex < 7; dayNameIndex++) {
@@ -357,11 +357,11 @@
fireCustomTrigger(bindingOptions.onDayClick, date, dateCount);
};
} else {
- day.className += _string.space + "no-click";
+ addClass(day, "no-hover");
}
var useMapRangeColor = getMapRangeColor(mapRangeColors, dateCount);
if (isDefined(useMapRangeColor) && isHeatMapColorVisible(bindingOptions, useMapRangeColor.id)) {
- day.className += _string.space + useMapRangeColor.cssClassName;
+ addClass(day, useMapRangeColor.cssClassName);
}
return day;
}
@@ -454,11 +454,11 @@
fireCustomTrigger(bindingOptions.onDayClick, date, dateCount);
};
} else {
- dayLine.className += _string.space + "no-click";
+ addClass(dayLine, "no-hover");
}
var useMapRangeColor = getMapRangeColor(mapRangeColors, dateCount);
if (isDefined(useMapRangeColor) && isHeatMapColorVisible(bindingOptions, useMapRangeColor.id)) {
- dayLine.className += _string.space + useMapRangeColor.cssClassName;
+ addClass(dayLine, useMapRangeColor.cssClassName);
}
}
function renderControlViewGuide(bindingOptions) {
@@ -491,7 +491,7 @@
updateMapRangeColorToggles(bindingOptions, false);
};
} else {
- lessText.className += _string.space + "no-click";
+ addClass(lessText, "no-click");
}
var days = createElement(mapToggles, "div", "days");
var mapRangeColors = bindingOptions.mapRangeColors.sort(function(a, b) {
@@ -508,14 +508,14 @@
updateMapRangeColorToggles(bindingOptions, true);
};
} else {
- moreText.className += _string.space + "no-click";
+ addClass(moreText, "no-click");
}
}
}
function renderControlViewGuideTypeButton(bindingOptions, mapTypes, type) {
var typeButton = createElementWithHTML(mapTypes, "button", "type", type);
if (bindingOptions.currentView.type === type) {
- typeButton.className += _string.space + "active";
+ addClass(typeButton, "active");
}
typeButton.onclick = function() {
if (bindingOptions.currentView.type !== type) {
@@ -547,7 +547,7 @@
renderControlContainer(bindingOptions);
};
} else {
- day.className += _string.space + "no-click";
+ addClass(day, "no-hover");
}
}
function exportAllData(bindingOptions) {
@@ -600,13 +600,13 @@
}
function getCsvFilename(bindingOptions) {
var date = new Date();
- var datePart = padNumber(date.getDate()) + "-" + padNumber(date.getMonth() + 1) + "-" + date.getFullYear();
- var timePart = padNumber(date.getHours()) + "-" + padNumber(date.getMinutes());
+ var datePart = padNumber(date.getDate()) + _string.dash + padNumber(date.getMonth() + 1) + _string.dash + date.getFullYear();
+ var timePart = padNumber(date.getHours()) + _string.dash + padNumber(date.getMinutes());
var filenameStart = _string.empty;
if (bindingOptions.currentView.type !== _elements_DateCounts_DefaultType) {
- filenameStart = bindingOptions.currentView.type.toLowerCase().replace(_string.space, "_") + "_";
+ filenameStart = bindingOptions.currentView.type.toLowerCase().replace(_string.space, _string.underscore) + _string.underscore;
}
- return filenameStart + datePart + "_" + timePart + ".csv";
+ return filenameStart + datePart + _string.underscore + timePart + ".csv";
}
function getCsvValue(text) {
text = text.toString().replace(/(\r\n|\n|\r)/gm, _string.empty).replace(/(\s\s)/gm, _string.space);
@@ -767,6 +767,43 @@
}
return value;
}
+ function addClass(element, className) {
+ element.className += _string.space + className;
+ }
+ function cancelBubble(e) {
+ e.preventDefault();
+ e.cancelBubble = true;
+ }
+ function getScrollPosition() {
+ var doc = _parameter_Document.documentElement;
+ var left = (_parameter_Window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
+ var top = (_parameter_Window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
+ return {left:left, top:top};
+ }
+ function showElementAtMousePosition(e, element) {
+ var left = e.pageX;
+ var top = e.pageY;
+ var scrollPosition = getScrollPosition();
+ element.style.display = "block";
+ if (left + element.offsetWidth > _parameter_Window.innerWidth) {
+ left = left - element.offsetWidth;
+ } else {
+ left++;
+ }
+ if (top + element.offsetHeight > _parameter_Window.innerHeight) {
+ top = top - element.offsetHeight;
+ } else {
+ top++;
+ }
+ if (left < scrollPosition.left) {
+ left = e.pageX + 1;
+ }
+ if (top < scrollPosition.top) {
+ top = e.pageY + 1;
+ }
+ element.style.left = left + "px";
+ element.style.top = top + "px";
+ }
function fireCustomTrigger(triggerFunction) {
var result = null;
if (isDefinedFunction(triggerFunction)) {
@@ -823,46 +860,12 @@
}
return {parsed:parsed, result:result};
}
- function cancelBubble(e) {
- e.preventDefault();
- e.cancelBubble = true;
- }
- function getScrollPosition() {
- var doc = _parameter_Document.documentElement;
- var left = (_parameter_Window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
- var top = (_parameter_Window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
- return {left:left, top:top};
- }
- function showElementAtMousePosition(e, element) {
- var left = e.pageX;
- var top = e.pageY;
- var scrollPosition = getScrollPosition();
- element.style.display = "block";
- if (left + element.offsetWidth > _parameter_Window.innerWidth) {
- left = left - element.offsetWidth;
- } else {
- left++;
- }
- if (top + element.offsetHeight > _parameter_Window.innerHeight) {
- top = top - element.offsetHeight;
- } else {
- top++;
- }
- if (left < scrollPosition.left) {
- left = e.pageX + 1;
- }
- if (top < scrollPosition.top) {
- top = e.pageY + 1;
- }
- element.style.left = left + "px";
- element.style.top = top + "px";
- }
function newGuid() {
var result = [];
var charIndex = 0;
for (; charIndex < 32; charIndex++) {
if (charIndex === 8 || charIndex === 12 || charIndex === 16 || charIndex === 20) {
- result.push("-");
+ result.push(_string.dash);
}
var character = Math.floor(Math.random() * 16).toString(16);
result.push(character);
@@ -874,10 +877,10 @@
return numberString.length === 1 ? "0" + numberString : numberString;
}
function toStorageDate(date) {
- return date.getFullYear() + "-" + padNumber(date.getMonth() + 1) + "-" + padNumber(date.getDate());
+ return date.getFullYear() + _string.dash + padNumber(date.getMonth() + 1) + _string.dash + padNumber(date.getDate());
}
function getStorageDateYear(data) {
- return data.split("-")[0];
+ return data.split(_string.dash)[0];
}
function buildDefaultConfiguration() {
_configuration.safeMode = getDefaultBoolean(_configuration.safeMode, true);
@@ -916,7 +919,7 @@
var _parameter_Document = null;
var _parameter_Window = null;
var _configuration = {};
- var _string = {empty:"", space:" ", newLine:"\n"};
+ var _string = {empty:"", space:" ", newLine:"\n", dash:"-", underscore:"_"};
var _elements_Type = {};
var _elements_Day_Width = null;
var _elements_DateCounts = {};
@@ -1123,7 +1126,7 @@
return this;
};
this.getVersion = function() {
- return "1.6.0";
+ return "1.6.1";
};
(function(documentObject, windowObject) {
_parameter_Document = documentObject;
diff --git a/dist/heat.js.css b/dist/heat.js.css
index 952c05f1..2502408f 100644
--- a/dist/heat.js.css
+++ b/dist/heat.js.css
@@ -1,5 +1,5 @@
/*
- * Heat.js Library v1.6.0
+ * Heat.js Library v1.6.1
*
* Copyright 2024 Bunoon
* Released under the MIT License
@@ -284,7 +284,8 @@ div.heat-js div.map-contents div.map {
display: inline-flex;
flex-direction: row;
}
-div.heat-js div.map-contents div.map div.days {
+div.heat-js div.map-contents div.map div.days,
+div.heat-js div.map-contents div.map div.days-months-bottom {
background-color: var(--heat-js-container-background-color);
padding-right: calc(var(--heat-js-spacing) * 3);
padding-top: calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);
@@ -294,11 +295,13 @@ div.heat-js div.map-contents div.map div.days {
z-index: 50;
}
@media (min-width: 768px) {
- div.heat-js div.map-contents div.map div.days {
+ div.heat-js div.map-contents div.map div.days,
+ div.heat-js div.map-contents div.map div.days-months-bottom {
display: block;
}
}
-div.heat-js div.map-contents div.map div.days div.day-name {
+div.heat-js div.map-contents div.map div.days div.day-name,
+div.heat-js div.map-contents div.map div.days-months-bottom div.day-name {
font-weight: var(--heat-js-text-bold-weight);
text-align: left !important;
height: var(--heat-js-day-size);
@@ -307,6 +310,9 @@ div.heat-js div.map-contents div.map div.days div.day-name {
justify-content: center;
flex-direction: column;
}
+div.heat-js div.map-contents div.map div.days-months-bottom {
+ padding-top: 0 !important;
+}
div.heat-js div.map-contents div.map div.months {
display: flex;
justify-content: space-between;
@@ -357,7 +363,7 @@ div.heat-js div.map-contents div.map div.months div.month div.day-columns div.da
border: var(--heat-js-border-size) solid var(--heat-js-day-border-color);
transition: var(--heat-js-transition);
}
-div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:hover {
+div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:not(.no-hover):hover {
cursor: pointer;
background: var(--heat-js-day-background-color-hover);
}
@@ -444,7 +450,7 @@ div.heat-js div.chart-contents div.chart div.day-lines div.day-line:first-child
div.heat-js div.chart-contents div.chart div.day-lines div.day-line:last-child {
margin-right: 0;
}
-div.heat-js div.chart-contents div.chart div.day-lines div.day-line:hover {
+div.heat-js div.chart-contents div.chart div.day-lines div.day-line:not(.no-hover):hover {
cursor: pointer;
background: var(--heat-js-day-background-color-hover);
}
@@ -572,7 +578,6 @@ div.heat-js div.guide div.map-toggles div.days div.day {
width: var(--heat-js-day-size);
height: var(--heat-js-day-size);
margin-right: var(--heat-js-day-spacing);
- cursor: pointer;
transition: var(--heat-js-transition);
}
div.heat-js div.guide div.map-toggles div.days div.day:last-child {
@@ -584,16 +589,17 @@ div.heat-js div.guide div.map-toggles div.days div.day:last-child {
Heat.js - Colors
-------------------------------------------------------------------------
*/
-div.heat-js div.day-color-1:active,
-div.heat-js div.day-color-2:active,
-div.heat-js div.day-color-3:active,
-div.heat-js div.day-color-4:active {
+div.heat-js div.day-color-1:not(.no-hover):active,
+div.heat-js div.day-color-2:not(.no-hover):active,
+div.heat-js div.day-color-3:not(.no-hover):active,
+div.heat-js div.day-color-4:not(.no-hover):active {
opacity: var(--heat-js-day-opacity-active) !important;
}
-div.heat-js div.day-color-1:hover,
-div.heat-js div.day-color-2:hover,
-div.heat-js div.day-color-3:hover,
-div.heat-js div.day-color-4:hover {
+div.heat-js div.day-color-1:not(.no-hover):hover,
+div.heat-js div.day-color-2:not(.no-hover):hover,
+div.heat-js div.day-color-3:not(.no-hover):hover,
+div.heat-js div.day-color-4:not(.no-hover):hover {
+ cursor: pointer;
opacity: var(--heat-js-day-opacity-hover);
}
div.heat-js div.day-color-1 {
diff --git a/dist/heat.js.css.map b/dist/heat.js.css.map
index 4691ed88..f389d02b 100644
--- a/dist/heat.js.css.map
+++ b/dist/heat.js.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../src/heat.js.scss","../src/foundation/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EAGA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAuDA;AAAA;AAAA;AAAA;AAAA;AAMA;EChJI;EACA;EACA;EACA;EACA;EACA;ED6IA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EAGI;EACA;EACA;EACA,gBALe;EAMf;;AAzER;EACI;EACA;EACA;EACA;EACA;EACA;EAGI,cAVuF;;AA8EvF;EACI;;AAGJ;EACI,aAfW;EAgBX;EACA;EACA;EACA,YAnBW;EAoBX;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAzJpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAwIA;EACI;;AAGJ;EACI;;AAGJ;EAGI;EACA;EACA;EACA;EACA;EACA,aAPc;EAQd,gBARc;EASd;;AArJR;EACI;EACA;EACA;EACA;EACA;EACA;EAMI,aA2IsC;;AAEtC;EACI;;AAGJ;EACI,SAlBU;EAmBV;EACA;EACA;EACA;EACA;EACA,YAxBU;;AA0BV;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAMhB;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EATJ;IAUQ;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAMgB;EACI;;AAOpB;AAAA;EAEI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGI;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AAWpC;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAVJ;IAWQ;;;AAGJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAMhB;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;;AAEA;EAHJ;IAIQ;;;AAGJ;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;IACA;;;AAIR;EACI;;AAEA;EAHJ;IAIQ;;;AArgBZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAifI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EANJ;IAOQ;IACA;;;AAGJ;AAAA;EAEI;EACA;EACA;;AAEA;AAAA;EACI;EACA;;AAGJ;AAAA;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AASxB;AAAA;AAAA;AAAA;AAAA;AAWQ;AAAA;AAAA;AAAA;EACI;;AAGJ;AAAA;AAAA;AAAA;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAMA;EC3tBI;EACA;EACA;EACA;EACA;EACA;EDwtBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"heat.js.css"}
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../src/heat.js.scss","../src/foundation/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EAGA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAuDA;AAAA;AAAA;AAAA;AAAA;AAMA;EChJI;EACA;EACA;EACA;EACA;EACA;ED6IA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EAGI;EACA;EACA;EACA,gBALe;EAMf;;AAzER;EACI;EACA;EACA;EACA;EACA;EACA;EAGI,cAVuF;;AA8EvF;EACI;;AAGJ;EACI,aAfW;EAgBX;EACA;EACA;EACA,YAnBW;EAoBX;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAzJpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAwIA;EACI;;AAGJ;EACI;;AAGJ;EAGI;EACA;EACA;EACA;EACA;EACA,aAPc;EAQd,gBARc;EASd;;AArJR;EACI;EACA;EACA;EACA;EACA;EACA;EAMI,aA2IsC;;AAEtC;EACI;;AAGJ;EACI,SAlBU;EAmBV;EACA;EACA;EACA;EACA;EACA,YAxBU;;AA0BV;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAMhB;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAVJ;AAAA;IAWQ;;;AAGJ;AAAA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAMgB;EACI;;AAOpB;AAAA;EAEI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGI;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AAWpC;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAVJ;IAWQ;;;AAGJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAMhB;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;;AAEA;EAHJ;IAIQ;;;AAGJ;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;IACA;;;AAIR;EACI;;AAEA;EAHJ;IAIQ;;;AA1gBZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAsfI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EANJ;IAOQ;IACA;;;AAGJ;AAAA;EAEI;EACA;EACA;;AAEA;AAAA;EACI;EACA;;AAGJ;AAAA;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AASxB;AAAA;AAAA;AAAA;AAAA;AAWQ;AAAA;AAAA;AAAA;EACI;;AAGJ;AAAA;AAAA;AAAA;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAMA;EChuBI;EACA;EACA;EACA;EACA;EACA;ED6tBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"heat.js.css"}
\ No newline at end of file
diff --git a/dist/heat.js.min.css b/dist/heat.js.min.css
index c4084710..1ebe6c28 100644
--- a/dist/heat.js.min.css
+++ b/dist/heat.js.min.css
@@ -1,2 +1,2 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
-:root{--heat-js-color-black:#3b3a3a;--heat-js-color-white:#F5F5F5;--heat-js-color-gray:#AAA;--heat-js-container-background-color:#22272e;--heat-js-container-border-color:#454c56;--heat-js-tooltip-background-color:var(--heat-js-container-background-color);--heat-js-tooltip-border-color:var(--heat-js-container-border-color);--heat-js-tooltip-text-color:var(--heat-js-color-white);--heat-js-years-background-color:var(--heat-js-container-background-color);--heat-js-years-border-color:var(--heat-js-container-border-color);--heat-js-years-text-color:var(--heat-js-color-white);--heat-js-years-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-title-background-color:var(--heat-js-container-background-color);--heat-js-title-border-color:var(--heat-js-container-border-color);--heat-js-title-text-color:var(--heat-js-color-white);--heat-js-title-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-day-background-color:#2d333b;--heat-js-day-border-color:var(--heat-js-container-border-color);--heat-js-day-background-color-hover:var(--heat-js-container-border-color);--heat-js-day-spacing:6.3px;--heat-js-day-opacity-hover:.7;--heat-js-day-opacity-active:.5;--heat-js-day-size:1.1rem;--heat-js-day-color-1-background-color:rgba(57,211,83,.25);--heat-js-day-color-1-border-color:rgba(57,211,83,.15);--heat-js-day-color-1-text-color:var(--heat-js-color-white);--heat-js-day-color-2-background-color:rgba(57,211,83,.5);--heat-js-day-color-2-border-color:rgba(57,211,83,.25);--heat-js-day-color-2-text-color:var(--heat-js-color-white);--heat-js-day-color-3-background-color:rgba(57,211,83,.75);--heat-js-day-color-3-border-color:rgba(57,211,83,.5);--heat-js-day-color-3-text-color:var(--heat-js-color-white);--heat-js-day-color-4-background-color:rgba(57,211,83,1);--heat-js-day-color-4-border-color:rgba(57,211,83,.75);--heat-js-day-color-4-text-color:var(--heat-js-color-black);--heat-js-button-background-color:var(--heat-js-day-background-color);--heat-js-button-border-color:var(--heat-js-container-border-color);--heat-js-button-text-color:var(--heat-js-color-white);--heat-js-button-background-color-hover:var(--heat-js-container-border-color);--heat-js-button-background-color-active:#616b79;--heat-js-border-radius:.5rem;--heat-js-border-radius-day:.25rem;--heat-js-border-size:.5px;--heat-js-border-size-day:1px;--heat-js-spacing:10px;--heat-js-spacing-font-size:.85rem;--heat-js-text-bold-weight:400;--heat-js-title-bold-weight:800;--heat-js-transition:all .3s}div.heat-js{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;display:inline-block;position:relative;border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-container-background-color);color:var(--heat-js-color-white);border:var(--heat-js-border-size) solid var(--heat-js-container-border-color);padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);width:100%;max-width:700px;margin:0!important}div.heat-js div.no-click{pointer-events:none!important}div.heat-js *{box-sizing:border-box;line-height:normal}div.heat-js *::before,div.heat-js *::after{box-sizing:border-box;line-height:normal}div.heat-js div.title-bar{text-align:right;margin-bottom:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.title{float:left;font-weight:var(--heat-js-title-bold-weight);font-size:1.2rem;padding-bottom:3px;cursor:pointer}div.heat-js div.title-bar div.title div.down-arrow{display:inline-block;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:14px solid var(--heat-js-color-white);margin-right:var(--heat-js-spacing)}div.heat-js div.title-bar div.title:hover div.titles-list{display:block}div.heat-js div.title-bar div.title div.titles-list{padding-top:3px;display:none;position:absolute;width:100px;margin-top:3px;z-index:100}div.heat-js div.title-bar div.title div.titles-list div.titles{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-title-background-color);border:var(--heat-js-border-size) solid var(--heat-js-title-border-color);color:var(--heat-js-title-text-color);overflow-y:scroll}div.heat-js div.title-bar div.title div.titles-list div.titles div.title{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:left;width:100%;transition:var(--heat-js-transition);font-size:var(--heat-js-spacing-font-size)!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):active{opacity:0.5!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):hover{cursor:pointer;background-color:var(--heat-js-title-background-color-hover)}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:last-child{border-bottom:none}div.heat-js div.title-bar div.title div.titles-list div.titles div.title-active{background-color:var(--heat-js-title-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.title-bar button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.title-bar button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.title-bar button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.title-bar button.back{margin-left:calc(var(--heat-js-spacing) * 2)!important}div.heat-js div.title-bar button.export{margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.title-bar div.year-text{margin-left:var(--heat-js-spacing);margin-right:var(--heat-js-spacing);display:inline-block;font-weight:var(--heat-js-title-bold-weight);position:relative;padding-top:5px;padding-bottom:5px;cursor:pointer}div.heat-js div.title-bar div.year-text div.down-arrow{display:inline-block;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid var(--heat-js-color-white);margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.year-text:hover div.years-list{display:block}div.heat-js div.title-bar div.year-text div.years-list{padding:5px;display:none;position:absolute;width:80px;left:50%;transform:translateX(-50%);margin-top:5px}div.heat-js div.title-bar div.year-text div.years-list div.years{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-years-background-color);border:var(--heat-js-border-size) solid var(--heat-js-years-border-color);color:var(--heat-js-years-text-color);height:183px;overflow-y:scroll;scroll-snap-type:y mandatory}div.heat-js div.title-bar div.year-text div.years-list div.years div.year{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:center;width:100%;transition:var(--heat-js-transition);scroll-snap-align:start}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):active{opacity:0.5!important}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):hover{cursor:pointer;background-color:var(--heat-js-years-background-color-hover)}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:last-child{border-bottom:none}div.heat-js div.title-bar div.year-text div.years-list div.years div.year-active{background-color:var(--heat-js-years-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:none}@media (min-width:768px){div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:inline-block}}div.heat-js div.map-contents{overflow-x:scroll;overflow-y:hidden}div.heat-js div.map-contents div.map{display:inline-flex;flex-direction:row}div.heat-js div.map-contents div.map div.days{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;z-index:50}@media (min-width:768px){div.heat-js div.map-contents div.map div.days{display:block}}div.heat-js div.map-contents div.map div.days div.day-name{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);margin-bottom:var(--heat-js-day-spacing);display:inline-flex;justify-content:center;flex-direction:column}div.heat-js div.map-contents div.map div.months{display:flex;justify-content:space-between;flex-grow:1}div.heat-js div.map-contents div.map div.months div.month{flex:1;pointer-events:none}div.heat-js div.map-contents div.map div.months div.month:last-child div.day-columns div.day-column:last-child div.day{margin-right:0!important}div.heat-js div.map-contents div.map div.months div.month div.month-name,div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{font-weight:var(--heat-js-text-bold-weight);text-align:left!important}div.heat-js div.map-contents div.map div.months div.month div.month-name{margin-bottom:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{margin-top:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.day-columns{display:flex;justify-content:space-between}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled{display:flex;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);margin-bottom:var(--heat-js-day-spacing);font-size:.6rem;justify-content:center;align-items:center;overflow:hidden}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:last-child,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled:last-child{margin-bottom:0}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day{pointer-events:all;background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);transition:var(--heat-js-transition)}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents{display:flex;overflow-x:scroll;overflow-y:hidden;text-wrap:nowrap;white-space:nowrap}div.heat-js div.chart-contents div.chart{display:inline-flex;flex-direction:row}div.heat-js div.chart-contents div.chart div.labels{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;border-right:var(--heat-js-border-size) solid var(--heat-js-container-border-color);z-index:50}@media (min-width:768px){div.heat-js div.chart-contents div.chart div.labels{display:block}}div.heat-js div.chart-contents div.chart div.labels div.label-0,div.heat-js div.chart-contents div.chart div.labels div.label-25,div.heat-js div.chart-contents div.chart div.labels div.label-50,div.heat-js div.chart-contents div.chart div.labels div.label-75,div.heat-js div.chart-contents div.chart div.labels div.label-100{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);display:inline-flex;justify-content:center;flex-direction:column;position:absolute;left:0}div.heat-js div.chart-contents div.chart div.labels div.label-0{top:0}div.heat-js div.chart-contents div.chart div.labels div.label-25{top:25%;transform:translateY(-25%)}div.heat-js div.chart-contents div.chart div.labels div.label-50{top:50%;transform:translateY(-50%)}div.heat-js div.chart-contents div.chart div.labels div.label-75{top:75%;transform:translateY(-75%)}div.heat-js div.chart-contents div.chart div.labels div.label-100{bottom:0}div.heat-js div.chart-contents div.chart div.day-lines{flex:1;border-bottom:var(--heat-js-border-size) solid var(--heat-js-container-border-color)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);vertical-align:bottom;width:8px;margin-right:1px;display:inline-block;transition:var(--heat-js-transition)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:first-child{margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:last-child{margin-right:0}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents div.chart-months{position:relative;height:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing))}div.heat-js div.chart-contents div.chart-months div.month-name,div.heat-js div.chart-contents div.chart-months div.month-name-space{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;position:absolute;bottom:0}div.heat-js div.chart-contents div.chart-months div.month-name-space{left:0;top:0;position:sticky;background-color:var(--heat-js-container-background-color)}div.heat-js div.guide{display:block}@media (min-width:768px){div.heat-js div.guide{display:flex}}div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{margin-top:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}@media (min-width:768px){div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{flex-basis:100%;margin-bottom:0}}div.heat-js div.guide div.map-types{text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-types{text-align:left}}div.heat-js div.guide div.map-types button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.guide div.map-types button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.guide div.map-types button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button{margin-left:0!important;margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.guide div.map-toggles{display:flex;align-items:center;justify-content:center;text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-toggles{text-align:right;justify-content:right}}div.heat-js div.guide div.map-toggles div.less-text,div.heat-js div.guide div.map-toggles div.more-text{display:inline-block;font-weight:var(--heat-js-text-bold-weight);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.less-text:hover,div.heat-js div.guide div.map-toggles div.more-text:hover{cursor:pointer;text-decoration:underline}div.heat-js div.guide div.map-toggles div.less-text:active,div.heat-js div.guide div.map-toggles div.more-text:active{color:var(--heat-js-color-gray)}div.heat-js div.guide div.map-toggles div.less-text{margin-right:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.more-text{margin-left:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.days{display:inline-flex;align-items:center;justify-content:right}div.heat-js div.guide div.map-toggles div.days div.day{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);display:inline-block;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);cursor:pointer;transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.days div.day:last-child{margin-right:0}div.heat-js div.day-color-1:active,div.heat-js div.day-color-2:active,div.heat-js div.day-color-3:active,div.heat-js div.day-color-4:active{opacity:var(--heat-js-day-opacity-active)!important}div.heat-js div.day-color-1:hover,div.heat-js div.day-color-2:hover,div.heat-js div.day-color-3:hover,div.heat-js div.day-color-4:hover{opacity:var(--heat-js-day-opacity-hover)}div.heat-js div.day-color-1{background-color:var(--heat-js-day-color-1-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-1-border-color)!important;color:var(--heat-js-day-color-1-text-color)}div.heat-js div.day-color-2{background-color:var(--heat-js-day-color-2-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-2-border-color)!important;color:var(--heat-js-day-color-2-text-color)}div.heat-js div.day-color-3{background-color:var(--heat-js-day-color-3-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-3-border-color)!important;color:var(--heat-js-day-color-3-text-color)}div.heat-js div.day-color-4{background-color:var(--heat-js-day-color-4-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-4-border-color)!important;color:var(--heat-js-day-color-4-text-color)}div.heat-js-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;position:absolute;background-color:var(--heat-js-tooltip-background-color);border:var(--heat-js-border-size) solid var(--heat-js-tooltip-border-color);color:var(--heat-js-tooltip-text-color);border-radius:var(--heat-js-border-radius);z-index:2000;max-width:300px;padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);font-weight:var(--heat-js-text-bold-weight);display:none}
\ No newline at end of file
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
+:root{--heat-js-color-black:#3b3a3a;--heat-js-color-white:#F5F5F5;--heat-js-color-gray:#AAA;--heat-js-container-background-color:#22272e;--heat-js-container-border-color:#454c56;--heat-js-tooltip-background-color:var(--heat-js-container-background-color);--heat-js-tooltip-border-color:var(--heat-js-container-border-color);--heat-js-tooltip-text-color:var(--heat-js-color-white);--heat-js-years-background-color:var(--heat-js-container-background-color);--heat-js-years-border-color:var(--heat-js-container-border-color);--heat-js-years-text-color:var(--heat-js-color-white);--heat-js-years-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-title-background-color:var(--heat-js-container-background-color);--heat-js-title-border-color:var(--heat-js-container-border-color);--heat-js-title-text-color:var(--heat-js-color-white);--heat-js-title-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-day-background-color:#2d333b;--heat-js-day-border-color:var(--heat-js-container-border-color);--heat-js-day-background-color-hover:var(--heat-js-container-border-color);--heat-js-day-spacing:6.3px;--heat-js-day-opacity-hover:.7;--heat-js-day-opacity-active:.5;--heat-js-day-size:1.1rem;--heat-js-day-color-1-background-color:rgba(57,211,83,.25);--heat-js-day-color-1-border-color:rgba(57,211,83,.15);--heat-js-day-color-1-text-color:var(--heat-js-color-white);--heat-js-day-color-2-background-color:rgba(57,211,83,.5);--heat-js-day-color-2-border-color:rgba(57,211,83,.25);--heat-js-day-color-2-text-color:var(--heat-js-color-white);--heat-js-day-color-3-background-color:rgba(57,211,83,.75);--heat-js-day-color-3-border-color:rgba(57,211,83,.5);--heat-js-day-color-3-text-color:var(--heat-js-color-white);--heat-js-day-color-4-background-color:rgba(57,211,83,1);--heat-js-day-color-4-border-color:rgba(57,211,83,.75);--heat-js-day-color-4-text-color:var(--heat-js-color-black);--heat-js-button-background-color:var(--heat-js-day-background-color);--heat-js-button-border-color:var(--heat-js-container-border-color);--heat-js-button-text-color:var(--heat-js-color-white);--heat-js-button-background-color-hover:var(--heat-js-container-border-color);--heat-js-button-background-color-active:#616b79;--heat-js-border-radius:.5rem;--heat-js-border-radius-day:.25rem;--heat-js-border-size:.5px;--heat-js-border-size-day:1px;--heat-js-spacing:10px;--heat-js-spacing-font-size:.85rem;--heat-js-text-bold-weight:400;--heat-js-title-bold-weight:800;--heat-js-transition:all .3s}div.heat-js{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;display:inline-block;position:relative;border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-container-background-color);color:var(--heat-js-color-white);border:var(--heat-js-border-size) solid var(--heat-js-container-border-color);padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);width:100%;max-width:700px;margin:0!important}div.heat-js div.no-click{pointer-events:none!important}div.heat-js *{box-sizing:border-box;line-height:normal}div.heat-js *::before,div.heat-js *::after{box-sizing:border-box;line-height:normal}div.heat-js div.title-bar{text-align:right;margin-bottom:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.title{float:left;font-weight:var(--heat-js-title-bold-weight);font-size:1.2rem;padding-bottom:3px;cursor:pointer}div.heat-js div.title-bar div.title div.down-arrow{display:inline-block;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:14px solid var(--heat-js-color-white);margin-right:var(--heat-js-spacing)}div.heat-js div.title-bar div.title:hover div.titles-list{display:block}div.heat-js div.title-bar div.title div.titles-list{padding-top:3px;display:none;position:absolute;width:100px;margin-top:3px;z-index:100}div.heat-js div.title-bar div.title div.titles-list div.titles{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-title-background-color);border:var(--heat-js-border-size) solid var(--heat-js-title-border-color);color:var(--heat-js-title-text-color);overflow-y:scroll}div.heat-js div.title-bar div.title div.titles-list div.titles div.title{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:left;width:100%;transition:var(--heat-js-transition);font-size:var(--heat-js-spacing-font-size)!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):active{opacity:0.5!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):hover{cursor:pointer;background-color:var(--heat-js-title-background-color-hover)}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:last-child{border-bottom:none}div.heat-js div.title-bar div.title div.titles-list div.titles div.title-active{background-color:var(--heat-js-title-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.title-bar button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.title-bar button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.title-bar button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.title-bar button.back{margin-left:calc(var(--heat-js-spacing) * 2)!important}div.heat-js div.title-bar button.export{margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.title-bar div.year-text{margin-left:var(--heat-js-spacing);margin-right:var(--heat-js-spacing);display:inline-block;font-weight:var(--heat-js-title-bold-weight);position:relative;padding-top:5px;padding-bottom:5px;cursor:pointer}div.heat-js div.title-bar div.year-text div.down-arrow{display:inline-block;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid var(--heat-js-color-white);margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.year-text:hover div.years-list{display:block}div.heat-js div.title-bar div.year-text div.years-list{padding:5px;display:none;position:absolute;width:80px;left:50%;transform:translateX(-50%);margin-top:5px}div.heat-js div.title-bar div.year-text div.years-list div.years{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-years-background-color);border:var(--heat-js-border-size) solid var(--heat-js-years-border-color);color:var(--heat-js-years-text-color);height:183px;overflow-y:scroll;scroll-snap-type:y mandatory}div.heat-js div.title-bar div.year-text div.years-list div.years div.year{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:center;width:100%;transition:var(--heat-js-transition);scroll-snap-align:start}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):active{opacity:0.5!important}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):hover{cursor:pointer;background-color:var(--heat-js-years-background-color-hover)}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:last-child{border-bottom:none}div.heat-js div.title-bar div.year-text div.years-list div.years div.year-active{background-color:var(--heat-js-years-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:none}@media (min-width:768px){div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:inline-block}}div.heat-js div.map-contents{overflow-x:scroll;overflow-y:hidden}div.heat-js div.map-contents div.map{display:inline-flex;flex-direction:row}div.heat-js div.map-contents div.map div.days,div.heat-js div.map-contents div.map div.days-months-bottom{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;z-index:50}@media (min-width:768px){div.heat-js div.map-contents div.map div.days,div.heat-js div.map-contents div.map div.days-months-bottom{display:block}}div.heat-js div.map-contents div.map div.days div.day-name,div.heat-js div.map-contents div.map div.days-months-bottom div.day-name{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);margin-bottom:var(--heat-js-day-spacing);display:inline-flex;justify-content:center;flex-direction:column}div.heat-js div.map-contents div.map div.days-months-bottom{padding-top:0!important}div.heat-js div.map-contents div.map div.months{display:flex;justify-content:space-between;flex-grow:1}div.heat-js div.map-contents div.map div.months div.month{flex:1;pointer-events:none}div.heat-js div.map-contents div.map div.months div.month:last-child div.day-columns div.day-column:last-child div.day{margin-right:0!important}div.heat-js div.map-contents div.map div.months div.month div.month-name,div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{font-weight:var(--heat-js-text-bold-weight);text-align:left!important}div.heat-js div.map-contents div.map div.months div.month div.month-name{margin-bottom:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{margin-top:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.day-columns{display:flex;justify-content:space-between}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled{display:flex;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);margin-bottom:var(--heat-js-day-spacing);font-size:.6rem;justify-content:center;align-items:center;overflow:hidden}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:last-child,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled:last-child{margin-bottom:0}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day{pointer-events:all;background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);transition:var(--heat-js-transition)}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:not(.no-hover):hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents{display:flex;overflow-x:scroll;overflow-y:hidden;text-wrap:nowrap;white-space:nowrap}div.heat-js div.chart-contents div.chart{display:inline-flex;flex-direction:row}div.heat-js div.chart-contents div.chart div.labels{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;border-right:var(--heat-js-border-size) solid var(--heat-js-container-border-color);z-index:50}@media (min-width:768px){div.heat-js div.chart-contents div.chart div.labels{display:block}}div.heat-js div.chart-contents div.chart div.labels div.label-0,div.heat-js div.chart-contents div.chart div.labels div.label-25,div.heat-js div.chart-contents div.chart div.labels div.label-50,div.heat-js div.chart-contents div.chart div.labels div.label-75,div.heat-js div.chart-contents div.chart div.labels div.label-100{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);display:inline-flex;justify-content:center;flex-direction:column;position:absolute;left:0}div.heat-js div.chart-contents div.chart div.labels div.label-0{top:0}div.heat-js div.chart-contents div.chart div.labels div.label-25{top:25%;transform:translateY(-25%)}div.heat-js div.chart-contents div.chart div.labels div.label-50{top:50%;transform:translateY(-50%)}div.heat-js div.chart-contents div.chart div.labels div.label-75{top:75%;transform:translateY(-75%)}div.heat-js div.chart-contents div.chart div.labels div.label-100{bottom:0}div.heat-js div.chart-contents div.chart div.day-lines{flex:1;border-bottom:var(--heat-js-border-size) solid var(--heat-js-container-border-color)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);vertical-align:bottom;width:8px;margin-right:1px;display:inline-block;transition:var(--heat-js-transition)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:first-child{margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:last-child{margin-right:0}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:not(.no-hover):hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents div.chart-months{position:relative;height:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing))}div.heat-js div.chart-contents div.chart-months div.month-name,div.heat-js div.chart-contents div.chart-months div.month-name-space{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;position:absolute;bottom:0}div.heat-js div.chart-contents div.chart-months div.month-name-space{left:0;top:0;position:sticky;background-color:var(--heat-js-container-background-color)}div.heat-js div.guide{display:block}@media (min-width:768px){div.heat-js div.guide{display:flex}}div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{margin-top:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}@media (min-width:768px){div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{flex-basis:100%;margin-bottom:0}}div.heat-js div.guide div.map-types{text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-types{text-align:left}}div.heat-js div.guide div.map-types button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.guide div.map-types button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.guide div.map-types button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button{margin-left:0!important;margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.guide div.map-toggles{display:flex;align-items:center;justify-content:center;text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-toggles{text-align:right;justify-content:right}}div.heat-js div.guide div.map-toggles div.less-text,div.heat-js div.guide div.map-toggles div.more-text{display:inline-block;font-weight:var(--heat-js-text-bold-weight);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.less-text:hover,div.heat-js div.guide div.map-toggles div.more-text:hover{cursor:pointer;text-decoration:underline}div.heat-js div.guide div.map-toggles div.less-text:active,div.heat-js div.guide div.map-toggles div.more-text:active{color:var(--heat-js-color-gray)}div.heat-js div.guide div.map-toggles div.less-text{margin-right:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.more-text{margin-left:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.days{display:inline-flex;align-items:center;justify-content:right}div.heat-js div.guide div.map-toggles div.days div.day{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);display:inline-block;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.days div.day:last-child{margin-right:0}div.heat-js div.day-color-1:not(.no-hover):active,div.heat-js div.day-color-2:not(.no-hover):active,div.heat-js div.day-color-3:not(.no-hover):active,div.heat-js div.day-color-4:not(.no-hover):active{opacity:var(--heat-js-day-opacity-active)!important}div.heat-js div.day-color-1:not(.no-hover):hover,div.heat-js div.day-color-2:not(.no-hover):hover,div.heat-js div.day-color-3:not(.no-hover):hover,div.heat-js div.day-color-4:not(.no-hover):hover{cursor:pointer;opacity:var(--heat-js-day-opacity-hover)}div.heat-js div.day-color-1{background-color:var(--heat-js-day-color-1-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-1-border-color)!important;color:var(--heat-js-day-color-1-text-color)}div.heat-js div.day-color-2{background-color:var(--heat-js-day-color-2-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-2-border-color)!important;color:var(--heat-js-day-color-2-text-color)}div.heat-js div.day-color-3{background-color:var(--heat-js-day-color-3-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-3-border-color)!important;color:var(--heat-js-day-color-3-text-color)}div.heat-js div.day-color-4{background-color:var(--heat-js-day-color-4-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-4-border-color)!important;color:var(--heat-js-day-color-4-text-color)}div.heat-js-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;position:absolute;background-color:var(--heat-js-tooltip-background-color);border:var(--heat-js-border-size) solid var(--heat-js-tooltip-border-color);color:var(--heat-js-tooltip-text-color);border-radius:var(--heat-js-border-radius);z-index:2000;max-width:300px;padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);font-weight:var(--heat-js-text-bold-weight);display:none}
\ No newline at end of file
diff --git a/dist/heat.min.js b/dist/heat.min.js
index e0a635c2..050c04af 100644
--- a/dist/heat.min.js
+++ b/dist/heat.min.js
@@ -1,40 +1,40 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
-(function(){function Y(){for(var a=g.domElementTypes,c=a.length,b=0;bd;d++)for(var f=Q(a.currentView.year,d),e=0;e=e.minimum)d=e;else break}return d}function ka(a){r(a.currentView.tooltip)||(a.currentView.tooltip=n(y.body,"div","heat-js-tooltip"),a.currentView.tooltip.style.display="none",
-y.body.addEventListener("mousemove",function(){V(a)}),y.addEventListener("scroll",function(){V(a)}))}function K(a,c,b){null!==a&&(a.onmousemove=function(d){pa(d,c,b)})}function pa(a,c,b){qa(a);V(c);c.currentView.tooltipTimer=setTimeout(function(){c.currentView.tooltip.innerHTML=b;c.currentView.tooltip.style.display="block";var d=c.currentView.tooltip,f=a.pageX,e=a.pageY,k=y.documentElement;var l=(D.pageXOffset||k.scrollLeft)-(k.clientLeft||0);var m=(D.pageYOffset||k.scrollTop)-(k.clientTop||0);d.style.display=
-"block";f+d.offsetWidth>D.innerWidth?f-=d.offsetWidth:f++;e+d.offsetHeight>D.innerHeight?e-=d.offsetHeight:e++;fl;l++){m=Q(a.currentView.year,l);for(var v=0;ve;e++)-1e;e++)if(-1=C?A=!0:n(v,"div","day-disabled");if(A){var M=null;-1b;b++)if(-1l;l++)-1a.getDay()-1?6:a.getDay()-1}function ha(a,c){var b=a,d=fa(c);b=b.replace("{dddd}",g.dayNames[d]);b=b.replace("{dd}",E(c.getDate()));b=b.replace("{d}",c.getDate());d=b.replace;var f=c.getDate(),e=g.thText;if(31===f||21===f||1===f)e=g.stText;else if(22===f||2===f)e=g.ndText;else if(23===f||3===f)e=g.rdText;b=d.call(b,"{o}",e);b=b.replace("{mmmm}",g.monthNames[c.getMonth()]);b=b.replace("{mm}",E(c.getMonth()+
-1));b=b.replace("{m}",c.getMonth()+1);b=b.replace("{yyyy}",c.getFullYear());b=b.replace("{yyy}",c.getFullYear().toString().substring(1));b=b.replace("{yy}",c.getFullYear().toString().substring(2));return b=b.replace("{y}",parseInt(c.getFullYear().toString().substring(2)).toString())}function r(a){return null!==a&&void 0!==a&&a!==q.empty}function O(a){return r(a)&&"object"===typeof a}function J(a){return r(a)&&"boolean"===typeof a}function B(a){return r(a)&&"string"===typeof a}function G(a){return r(a)&&
-"function"===typeof a}function R(a){return r(a)&&"number"===typeof a}function T(a){return O(a)&&a instanceof Array}function n(a,c,b){c=c.toLowerCase();var d="text"===c;X.hasOwnProperty(c)||(X[c]=d?y.createTextNode(q.empty):y.createElement(c));c=X[c].cloneNode(!1);r(b)&&(c.className=b);a.appendChild(c);return c}function u(a,c,b,d){a=n(a,c,b);a.innerHTML=d;return a}function W(a,c,b){var d=null;b=r(b)?b:!1;D.getComputedStyle?d=y.defaultView.getComputedStyle(a,null).getPropertyValue(c):a.currentStyle&&
-(d=a.currentStyle[c]);b&&(d=parseFloat(d,10));return d}function p(a){var c=null;G(a)&&(c=a.apply(null,[].slice.call(arguments,1)));return c}function w(a,c){return B(a)?a:c}function x(a,c){return J(a)?a:c}function z(a,c){return G(a)?a:c}function S(a,c){return R(a)?a:c}function ja(a){var c=!0,b=null;try{B(a)&&(b=JSON.parse(a))}catch(d){try{b=eval("("+a+")"),G(b)&&(b=b())}catch(f){g.safeMode||(console.error("Errors in object: "+d.message+", "+f.message),c=!1),b=null}}return{parsed:c,result:b}}function qa(a){a.preventDefault();
-a.cancelBubble=!0}function ba(){for(var a=[],c=0;32>c;c++){8!==c&&12!==c&&16!==c&&20!==c||a.push("-");var b=Math.floor(16*Math.random()).toString(16);a.push(b)}return a.join(q.empty)}function E(a){a=a.toString();return 1===a.length?"0"+a:a}function H(a){return a.getFullYear()+"-"+E(a.getMonth()+1)+"-"+E(a.getDate())}function ia(){g.safeMode=x(g.safeMode,!0);var a=g,c=g.domElementTypes,b=["*"];B(c)?(c=c.split(q.space),0===c.length&&(c=b)):c=T(c)?c:b;a.domElementTypes=c;g.stText=w(g.stText,"st");g.ndText=
-w(g.ndText,"nd");g.rdText=w(g.rdText,"rd");g.thText=w(g.thText,"th");g.backButtonText=w(g.backButtonText,"Back");g.nextButtonText=w(g.nextButtonText,"Next");g.refreshButtonText=w(g.refreshButtonText,"Refresh");g.exportButtonText=w(g.exportButtonText,"Export");g.lessText=w(g.lessText,"Less");g.moreText=w(g.moreText,"More");g.dateText=w(g.dateText,"Date");g.countText=w(g.countText,"Count");g.mapText=w(g.mapText,"Map");g.chartText=w(g.chartText,"Chart");P(g.monthNames,12)&&(g.monthNames="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "));
-P(g.dayNames,7)&&(g.dayNames="Mon Tue Wed Thu Fri Sat Sun".split(" "))}function P(a,c){c=R(c)?c:1;return!T(a)||a.lengthb&&(a.currentView.year=b,t(a),p(a.onSetYear,a.currentView.year))}return this};this.getYear=function(a){var c=null;h.hasOwnProperty(a)&&(c=h[a].options.currentView.year);return c};this.render=function(a,
-c){Z(aa(c,a));return this};this.renderAll=function(){Y();return this};this.destroyAll=function(){for(var a in h)if(h.hasOwnProperty(a)){var c=h[a].options;c.currentView.element.innerHTML=q.empty;c.currentView.element.className=q.empty;y.body.removeChild(c.currentView.tooltip);p(c.onDestroy,c.currentView.element)}h={};return this};this.destroy=function(a){if(h.hasOwnProperty(a)){var c=h[a].options;c.currentView.element.innerHTML=q.empty;c.currentView.element.className=q.empty;y.body.removeChild(c.currentView.tooltip);
-p(c.onDestroy,c.currentView.element);delete h[a]}return this};this.setConfiguration=function(a){g=O(a)?a:{};ia();return this};this.getVersion=function(){return"1.6.0"};(function(a,c){y=a;D=c;ia();y.addEventListener("DOMContentLoaded",function(){Y()});r(D.$heat)||(D.$heat=this)})(document,window)})();
\ No newline at end of file
+c;b.currentView.tooltip=null;b.currentView.tooltipTimer=null;b.currentView.mapContents=null;b.currentView.mapContentsScrollLeft=0;b.currentView.chartContents=null;b.currentView.chartContentsScrollLeft=0;b.currentView.colorsVisible={};b.currentView.year=b.year;b.currentView.type="None";B(b.view)&&"map"!==b.view.toLowerCase()?"chart"===b.view.toLowerCase()?b.currentView.view=2:b.currentView.view=1:b.currentView.view=1;return b}function aa(a){q(a.onBeforeRender,a.currentView.element);B(a.currentView.element.id)||
+(a.currentView.element.id=ca());a.currentView.element.removeAttribute("data-heat-options");da(a.currentView.element.id,a);t(a);q(a.onRenderComplete,a.currentView.element)}function t(a){r(a.currentView.mapContents)&&(a.currentView.mapContentsScrollLeft=a.currentView.mapContents.scrollLeft);r(a.currentView.chartContents)&&(a.currentView.chartContentsScrollLeft=a.currentView.chartContents.scrollLeft);a.currentView.element.className="heat-js";a.currentView.element.innerHTML=p.empty;la(a);ma(a);na(a);
+oa(a);1===a.currentView.view?(a.currentView.mapContents.style.display="block",a.currentView.chartContents.style.display="none"):(a.currentView.mapContents.style.display="none",a.currentView.chartContents.style.display="block")}function V(a,c){return!a.currentView.colorsVisible.hasOwnProperty(c)||a.currentView.colorsVisible[c]}function da(a,c){h[a]={options:c,type:{},types:1};h[a].type.None={}}function ea(a,c){for(var b=a.mapRangeColors.length,d=0;dd;d++)for(var f=R(a.currentView.year,d),e=0;e=e.minimum)d=e;else break}return d}function la(a){r(a.currentView.tooltip)||(a.currentView.tooltip=n(y.body,"div","heat-js-tooltip"),a.currentView.tooltip.style.display="none",
+y.body.addEventListener("mousemove",function(){W(a)}),y.addEventListener("scroll",function(){W(a)}))}function L(a,c,b){null!==a&&(a.onmousemove=function(d){qa(d,c,b)})}function qa(a,c,b){ra(a);W(c);c.currentView.tooltipTimer=setTimeout(function(){c.currentView.tooltip.innerHTML=b;c.currentView.tooltip.style.display="block";var d=c.currentView.tooltip,f=a.pageX,e=a.pageY,k=y.documentElement;var l=(E.pageXOffset||k.scrollLeft)-(k.clientLeft||0);var m=(E.pageYOffset||k.scrollTop)-(k.clientTop||0);d.style.display=
+"block";f+d.offsetWidth>E.innerWidth?f-=d.offsetWidth:f++;e+d.offsetHeight>E.innerHeight?e-=d.offsetHeight:e++;fl;l++){m=R(a.currentView.year,l);for(var v=0;ve;e++)-1e;e++)if(-1<
+a.monthsToShow.indexOf(e+1)){var k=n(c,"div","month");a.showMonthNames&&!a.placeMonthNamesOnTheBottom&&u(k,"div","month-name",g.monthNames[e]);var l=n(k,"div","day-columns"),m=R(b,e),v=n(l,"div","day-column"),A=!1,D=ha(new Date(b,e,1)),M=1;m+=D;for(var G=0;G=D?A=!0:n(v,"div","day-disabled");if(A){var N=null;-1b;b++)if(-1l;l++)-1a.getDay()-1?6:a.getDay()-1}function ia(a,c){var b=a,d=ha(c);b=b.replace("{dddd}",g.dayNames[d]);
+b=b.replace("{dd}",F(c.getDate()));b=b.replace("{d}",c.getDate());d=b.replace;var f=c.getDate(),e=g.thText;if(31===f||21===f||1===f)e=g.stText;else if(22===f||2===f)e=g.ndText;else if(23===f||3===f)e=g.rdText;b=d.call(b,"{o}",e);b=b.replace("{mmmm}",g.monthNames[c.getMonth()]);b=b.replace("{mm}",F(c.getMonth()+1));b=b.replace("{m}",c.getMonth()+1);b=b.replace("{yyyy}",c.getFullYear());b=b.replace("{yyy}",c.getFullYear().toString().substring(1));b=b.replace("{yy}",c.getFullYear().toString().substring(2));
+return b=b.replace("{y}",parseInt(c.getFullYear().toString().substring(2)).toString())}function r(a){return null!==a&&void 0!==a&&a!==p.empty}function P(a){return r(a)&&"object"===typeof a}function K(a){return r(a)&&"boolean"===typeof a}function B(a){return r(a)&&"string"===typeof a}function H(a){return r(a)&&"function"===typeof a}function S(a){return r(a)&&"number"===typeof a}function U(a){return P(a)&&a instanceof Array}function n(a,c,b){c=c.toLowerCase();var d="text"===c;Y.hasOwnProperty(c)||(Y[c]=
+d?y.createTextNode(p.empty):y.createElement(c));c=Y[c].cloneNode(!1);r(b)&&(c.className=b);a.appendChild(c);return c}function u(a,c,b,d){a=n(a,c,b);a.innerHTML=d;return a}function X(a,c,b){var d=null;b=r(b)?b:!1;E.getComputedStyle?d=y.defaultView.getComputedStyle(a,null).getPropertyValue(c):a.currentStyle&&(d=a.currentStyle[c]);b&&(d=parseFloat(d,10));return d}function C(a,c){a.className+=p.space+c}function ra(a){a.preventDefault();a.cancelBubble=!0}function q(a){var c=null;H(a)&&(c=a.apply(null,
+[].slice.call(arguments,1)));return c}function w(a,c){return B(a)?a:c}function x(a,c){return K(a)?a:c}function z(a,c){return H(a)?a:c}function T(a,c){return S(a)?a:c}function ka(a){var c=!0,b=null;try{B(a)&&(b=JSON.parse(a))}catch(d){try{b=eval("("+a+")"),H(b)&&(b=b())}catch(f){g.safeMode||(console.error("Errors in object: "+d.message+", "+f.message),c=!1),b=null}}return{parsed:c,result:b}}function ca(){for(var a=[],c=0;32>c;c++){8!==c&&12!==c&&16!==c&&20!==c||a.push(p.dash);var b=Math.floor(16*Math.random()).toString(16);
+a.push(b)}return a.join(p.empty)}function F(a){a=a.toString();return 1===a.length?"0"+a:a}function I(a){return a.getFullYear()+p.dash+F(a.getMonth()+1)+p.dash+F(a.getDate())}function ja(){g.safeMode=x(g.safeMode,!0);var a=g,c=g.domElementTypes,b=["*"];B(c)?(c=c.split(p.space),0===c.length&&(c=b)):c=U(c)?c:b;a.domElementTypes=c;g.stText=w(g.stText,"st");g.ndText=w(g.ndText,"nd");g.rdText=w(g.rdText,"rd");g.thText=w(g.thText,"th");g.backButtonText=w(g.backButtonText,"Back");g.nextButtonText=w(g.nextButtonText,
+"Next");g.refreshButtonText=w(g.refreshButtonText,"Refresh");g.exportButtonText=w(g.exportButtonText,"Export");g.lessText=w(g.lessText,"Less");g.moreText=w(g.moreText,"More");g.dateText=w(g.dateText,"Date");g.countText=w(g.countText,"Count");g.mapText=w(g.mapText,"Map");g.chartText=w(g.chartText,"Chart");Q(g.monthNames,12)&&(g.monthNames="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "));Q(g.dayNames,7)&&(g.dayNames="Mon Tue Wed Thu Fri Sat Sun".split(" "))}function Q(a,c){c=S(c)?c:1;return!U(a)||
+a.lengthb&&(a.currentView.year=b,t(a),q(a.onSetYear,a.currentView.year))}return this};this.getYear=function(a){var c=null;h.hasOwnProperty(a)&&(c=h[a].options.currentView.year);return c};this.render=function(a,c){aa(ba(c,a));return this};this.renderAll=function(){Z();return this};this.destroyAll=function(){for(var a in h)if(h.hasOwnProperty(a)){var c=
+h[a].options;c.currentView.element.innerHTML=p.empty;c.currentView.element.className=p.empty;y.body.removeChild(c.currentView.tooltip);q(c.onDestroy,c.currentView.element)}h={};return this};this.destroy=function(a){if(h.hasOwnProperty(a)){var c=h[a].options;c.currentView.element.innerHTML=p.empty;c.currentView.element.className=p.empty;y.body.removeChild(c.currentView.tooltip);q(c.onDestroy,c.currentView.element);delete h[a]}return this};this.setConfiguration=function(a){g=P(a)?a:{};ja();return this};
+this.getVersion=function(){return"1.6.1"};(function(a,c){y=a;E=c;ja();y.addEventListener("DOMContentLoaded",function(){Z()});r(E.$heat)||(E.$heat=this)})(document,window)})();
\ No newline at end of file
diff --git a/dist/themes/heat.js.light.theme.css b/dist/themes/heat.js.light.theme.css
index 5d69809b..92525933 100644
--- a/dist/themes/heat.js.light.theme.css
+++ b/dist/themes/heat.js.light.theme.css
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
:root {
/* Colors */
--heat-js-color-black: #F5F5F5;
diff --git a/dist/translations/heat.translations.ar.js b/dist/translations/heat.translations.ar.js
index 33e20cf4..37c9b6ea 100644
--- a/dist/translations/heat.translations.ar.js
+++ b/dist/translations/heat.translations.ar.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.bn.js b/dist/translations/heat.translations.bn.js
index e43d775c..5c90c591 100644
--- a/dist/translations/heat.translations.bn.js
+++ b/dist/translations/heat.translations.bn.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.de.js b/dist/translations/heat.translations.de.js
index e7250138..5cc66c09 100644
--- a/dist/translations/heat.translations.de.js
+++ b/dist/translations/heat.translations.de.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.en.js b/dist/translations/heat.translations.en.js
index 8580dc6e..35f03626 100644
--- a/dist/translations/heat.translations.en.js
+++ b/dist/translations/heat.translations.en.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "st",
"ndText": "nd",
diff --git a/dist/translations/heat.translations.es.js b/dist/translations/heat.translations.es.js
index f8867702..2cc02fc9 100644
--- a/dist/translations/heat.translations.es.js
+++ b/dist/translations/heat.translations.es.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.fr.js b/dist/translations/heat.translations.fr.js
index 35186339..41beca89 100644
--- a/dist/translations/heat.translations.fr.js
+++ b/dist/translations/heat.translations.fr.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.hi.js b/dist/translations/heat.translations.hi.js
index f0743a48..f373b4b0 100644
--- a/dist/translations/heat.translations.hi.js
+++ b/dist/translations/heat.translations.hi.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.ja.js b/dist/translations/heat.translations.ja.js
index 16277dfa..e43ae4c5 100644
--- a/dist/translations/heat.translations.ja.js
+++ b/dist/translations/heat.translations.ja.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.pl.js b/dist/translations/heat.translations.pl.js
index c080107a..399adc40 100644
--- a/dist/translations/heat.translations.pl.js
+++ b/dist/translations/heat.translations.pl.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.pt.js b/dist/translations/heat.translations.pt.js
index 68503ecb..a75abcd1 100644
--- a/dist/translations/heat.translations.pt.js
+++ b/dist/translations/heat.translations.pt.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.tr.js b/dist/translations/heat.translations.tr.js
index 292951e2..f0c38a13 100644
--- a/dist/translations/heat.translations.tr.js
+++ b/dist/translations/heat.translations.tr.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/dist/translations/heat.translations.zh.js b/dist/translations/heat.translations.zh.js
index 2687d104..bdd7d36f 100644
--- a/dist/translations/heat.translations.zh.js
+++ b/dist/translations/heat.translations.zh.js
@@ -1,4 +1,4 @@
-/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */
+/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */
$heat.setConfiguration( {
"stText": "",
"ndText": "",
diff --git a/docs/CHANGE_LOG.md b/docs/CHANGE_LOG.md
index 0f15ac77..d1a34512 100644
--- a/docs/CHANGE_LOG.md
+++ b/docs/CHANGE_LOG.md
@@ -1,5 +1,13 @@
# Heat.js - Change Log:
+## Version 1.6.1:
+- Fixed a fault that prevented the tooltips from showing when click events are not assigned, or the map toggles are turned off.
+- Removed more duplicate code.
+- Removed a manual setter for the position of the day names in the map view (when the month names are at the bottom).
+
+
+
+
## Version 1.6.0:
#### **New Features:**
diff --git a/heat.js.nuspec b/heat.js.nuspec
index f5546d55..85519b1f 100644
--- a/heat.js.nuspec
+++ b/heat.js.nuspec
@@ -2,7 +2,7 @@
jHeat.js
- 1.6.0
+ 1.6.1
Heat.js
A lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends.
William Troup
diff --git a/package.json b/package.json
index 80af63ca..3979908a 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "jheat.js",
"title": "Heat.js",
"description": "A lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends.",
- "version": "1.6.0",
+ "version": "1.6.1",
"main": "dist/heat.js",
"homepage": "https://www.william-troup.com/heat-js/",
"author": {
diff --git a/src/heat.js b/src/heat.js
index 8f6d02dc..0aa620ad 100644
--- a/src/heat.js
+++ b/src/heat.js
@@ -4,7 +4,7 @@
* A lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends.
*
* @file observe.js
- * @version v1.6.0
+ * @version v1.6.1
* @author Bunoon
* @license MIT License
* @copyright Bunoon 2024
@@ -24,6 +24,8 @@
empty: "",
space: " ",
newLine: "\n",
+ dash: "-",
+ underscore: "_"
},
// Variables: Elements
@@ -307,7 +309,7 @@
};
} else {
- optionMap.className += _string.space + "title-active";
+ addClass( optionMap, "title-active" );
}
if ( bindingOptions.currentView.view !== _elements_View_Chart ) {
@@ -319,9 +321,8 @@
};
} else {
- optionChart.className += _string.space + "title-active";
+ addClass( optionChart, "title-active" );
}
-
if ( bindingOptions.showExportButton ) {
var exportData = createElementWithHTML( titleBar, "button", "export", _configuration.exportButtonText );
@@ -389,7 +390,7 @@
};
} else {
- year.className += _string.space + "year-active";
+ addClass( year, "year-active" );
}
}
@@ -414,7 +415,7 @@
var days = createElement( map, "div", "days" );
if ( !bindingOptions.showMonthNames || bindingOptions.placeMonthNamesOnTheBottom ) {
- days.style.paddingTop = "0px";
+ days.className = "days-months-bottom";
}
for ( var dayNameIndex = 0; dayNameIndex < 7; dayNameIndex++ ) {
@@ -523,13 +524,13 @@
};
} else {
- day.className += _string.space + "no-click";
+ addClass( day, "no-hover" );
}
var useMapRangeColor = getMapRangeColor( mapRangeColors, dateCount );
if ( isDefined( useMapRangeColor ) && isHeatMapColorVisible( bindingOptions, useMapRangeColor.id ) ) {
- day.className += _string.space + useMapRangeColor.cssClassName;
+ addClass( day, useMapRangeColor.cssClassName );
}
return day;
@@ -651,13 +652,13 @@
};
} else {
- dayLine.className += _string.space + "no-click";
+ addClass( dayLine, "no-hover" );
}
var useMapRangeColor = getMapRangeColor( mapRangeColors, dateCount );
if ( isDefined( useMapRangeColor ) && isHeatMapColorVisible( bindingOptions, useMapRangeColor.id ) ) {
- dayLine.className += _string.space + useMapRangeColor.cssClassName;
+ addClass( dayLine, useMapRangeColor.cssClassName );
}
}
@@ -702,7 +703,7 @@
};
} else {
- lessText.className += _string.space + "no-click";
+ addClass( lessText, "no-click" );
}
var days = createElement( mapToggles, "div", "days" ),
@@ -723,7 +724,7 @@
};
} else {
- moreText.className += _string.space + "no-click";
+ addClass( moreText, "no-click" );
}
}
}
@@ -732,7 +733,7 @@
var typeButton = createElementWithHTML( mapTypes, "button", "type", type );
if ( bindingOptions.currentView.type === type ) {
- typeButton.className += _string.space + "active";
+ addClass( typeButton, "active" );
}
typeButton.onclick = function() {
@@ -774,7 +775,7 @@
};
} else {
- day.className += _string.space + "no-click";
+ addClass( day, "no-hover" );
}
}
@@ -845,15 +846,15 @@
function getCsvFilename( bindingOptions ) {
var date = new Date(),
- datePart = padNumber( date.getDate() ) + "-" + padNumber( date.getMonth() + 1 ) + "-" + date.getFullYear(),
- timePart = padNumber( date.getHours() ) + "-" + padNumber( date.getMinutes() ),
+ datePart = padNumber( date.getDate() ) + _string.dash + padNumber( date.getMonth() + 1 ) + _string.dash + date.getFullYear(),
+ timePart = padNumber( date.getHours() ) + _string.dash + padNumber( date.getMinutes() ),
filenameStart = _string.empty;
if ( bindingOptions.currentView.type !== _elements_DateCounts_DefaultType ) {
- filenameStart = bindingOptions.currentView.type.toLowerCase().replace( _string.space, "_" ) + "_";
+ filenameStart = bindingOptions.currentView.type.toLowerCase().replace( _string.space, _string.underscore ) + _string.underscore;
}
- return filenameStart + datePart + "_" + timePart + ".csv";
+ return filenameStart + datePart + _string.underscore + timePart + ".csv";
}
function getCsvValue( text ) {
@@ -1111,6 +1112,57 @@
return value;
}
+ function addClass( element, className ) {
+ element.className += _string.space + className;
+ }
+
+ function cancelBubble( e ) {
+ e.preventDefault();
+ e.cancelBubble = true;
+ }
+
+ function getScrollPosition() {
+ var doc = _parameter_Document.documentElement,
+ left = ( _parameter_Window.pageXOffset || doc.scrollLeft ) - ( doc.clientLeft || 0 ),
+ top = ( _parameter_Window.pageYOffset || doc.scrollTop ) - ( doc.clientTop || 0 );
+
+ return {
+ left: left,
+ top: top
+ };
+ }
+
+ function showElementAtMousePosition( e, element ) {
+ var left = e.pageX,
+ top = e.pageY,
+ scrollPosition = getScrollPosition();
+
+ element.style.display = "block";
+
+ if ( left + element.offsetWidth > _parameter_Window.innerWidth ) {
+ left -= element.offsetWidth;
+ } else {
+ left++;
+ }
+
+ if ( top + element.offsetHeight > _parameter_Window.innerHeight ) {
+ top -= element.offsetHeight;
+ } else {
+ top++;
+ }
+
+ if ( left < scrollPosition.left ) {
+ left = e.pageX + 1;
+ }
+
+ if ( top < scrollPosition.top ) {
+ top = e.pageY + 1;
+ }
+
+ element.style.left = left + "px";
+ element.style.top = top + "px";
+ }
+
/*
* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -1204,53 +1256,6 @@
};
}
- function cancelBubble( e ) {
- e.preventDefault();
- e.cancelBubble = true;
- }
-
- function getScrollPosition() {
- var doc = _parameter_Document.documentElement,
- left = ( _parameter_Window.pageXOffset || doc.scrollLeft ) - ( doc.clientLeft || 0 ),
- top = ( _parameter_Window.pageYOffset || doc.scrollTop ) - ( doc.clientTop || 0 );
-
- return {
- left: left,
- top: top
- };
- }
-
- function showElementAtMousePosition( e, element ) {
- var left = e.pageX,
- top = e.pageY,
- scrollPosition = getScrollPosition();
-
- element.style.display = "block";
-
- if ( left + element.offsetWidth > _parameter_Window.innerWidth ) {
- left -= element.offsetWidth;
- } else {
- left++;
- }
-
- if ( top + element.offsetHeight > _parameter_Window.innerHeight ) {
- top -= element.offsetHeight;
- } else {
- top++;
- }
-
- if ( left < scrollPosition.left ) {
- left = e.pageX + 1;
- }
-
- if ( top < scrollPosition.top ) {
- top = e.pageY + 1;
- }
-
- element.style.left = left + "px";
- element.style.top = top + "px";
- }
-
/*
* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -1263,7 +1268,7 @@
for ( var charIndex = 0; charIndex < 32; charIndex++ ) {
if ( charIndex === 8 || charIndex === 12 || charIndex === 16 || charIndex === 20 ) {
- result.push( "-" );
+ result.push( _string.dash );
}
var character = Math.floor( Math.random() * 16 ).toString( 16 );
@@ -1479,11 +1484,11 @@
};
function toStorageDate( date ) {
- return date.getFullYear() + "-" + padNumber( date.getMonth() + 1 ) + "-" + padNumber( date.getDate() );
+ return date.getFullYear() + _string.dash + padNumber( date.getMonth() + 1 ) + _string.dash + padNumber( date.getDate() );
}
function getStorageDateYear( data ) {
- return data.split( "-" )[ 0 ];
+ return data.split( _string.dash )[ 0 ];
}
@@ -1860,7 +1865,7 @@
* @returns {string} The version number.
*/
this.getVersion = function() {
- return "1.6.0";
+ return "1.6.1";
};
diff --git a/src/heat.js.scss b/src/heat.js.scss
index fb1d4182..0e2b9562 100644
--- a/src/heat.js.scss
+++ b/src/heat.js.scss
@@ -1,5 +1,5 @@
/*
- * Heat.js Library v1.6.0
+ * Heat.js Library v1.6.1
*
* Copyright 2024 Bunoon
* Released under the MIT License
@@ -158,7 +158,7 @@ div.heat-js {
width: 100%;
max-width: 700px;
margin: 0 !important;
-
+
div.no-click {
pointer-events: none !important;
}
@@ -356,7 +356,8 @@ div.heat-js {
display: inline-flex;
flex-direction: row;
- div.days {
+ div.days,
+ div.days-months-bottom {
background-color: var(--heat-js-container-background-color);
padding-right: calc( var(--heat-js-spacing) * 3 );
padding-top: calc( var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px );
@@ -379,6 +380,10 @@ div.heat-js {
flex-direction: column;
}
}
+
+ div.days-months-bottom {
+ padding-top: 0 !important;
+ }
div.months {
display: flex;
@@ -444,7 +449,7 @@ div.heat-js {
border: var(--heat-js-border-size) solid var(--heat-js-day-border-color);
transition: var(--heat-js-transition);
- &:hover {
+ &:not(.no-hover):hover {
cursor: pointer;
background: var(--heat-js-day-background-color-hover);
}
@@ -549,7 +554,7 @@ div.heat-js {
margin-right: 0;
}
- &:hover {
+ &:not(.no-hover):hover {
cursor: pointer;
background: var(--heat-js-day-background-color-hover);
}
@@ -667,7 +672,6 @@ div.heat-js {
width: var(--heat-js-day-size);
height: var(--heat-js-day-size);
margin-right: var(--heat-js-day-spacing);
- cursor: pointer;
transition: var(--heat-js-transition);
&:last-child {
@@ -691,11 +695,12 @@ div.heat-js {
div.day-color-2,
div.day-color-3,
div.day-color-4 {
- &:active {
+ &:not(.no-hover):active {
opacity: var(--heat-js-day-opacity-active) !important;
}
- &:hover {
+ &:not(.no-hover):hover {
+ cursor: pointer;
opacity: var(--heat-js-day-opacity-hover);
}
}
diff --git a/test/dist/heat.js.no-clicks.html b/test/dist/heat.js.no-clicks.html
new file mode 100644
index 00000000..bb5abc47
--- /dev/null
+++ b/test/dist/heat.js.no-clicks.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ Heat.js - No Clicks
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/src/heat.js.no-clicks.html b/test/src/heat.js.no-clicks.html
new file mode 100644
index 00000000..20b0acde
--- /dev/null
+++ b/test/src/heat.js.no-clicks.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ Heat.js - No Clicks
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file