svg-heatmap 2.1.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright © 2020, 2021 Jayden Chan. All rights reserved.
2
+ * Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
3
3
  *
4
4
  * svg-heatmap is free software: you can redistribute it and/or modify
5
5
  * it under the terms of the GNU General Public License version 3
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PalettePresets = exports.generate = void 0;
4
4
  /**
5
- * Copyright © 2020, 2021 Jayden Chan. All rights reserved.
5
+ * Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
6
6
  *
7
7
  * svg-heatmap is free software: you can redistribute it and/or modify
8
8
  * it under the terms of the GNU General Public License version 3
package/lib/svg.d.ts CHANGED
@@ -1,8 +1,24 @@
1
+ /**
2
+ * Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
3
+ *
4
+ * svg-heatmap is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU General Public License version 3
6
+ * as published by the Free Software Foundation.
7
+ *
8
+ * svg-heatmap is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with svg-heatmap. If not, see <https://www.gnu.org/licenses/>.
15
+ */
16
+ import { GenerateOptions } from "./types";
1
17
  /**
2
18
  * @param {number[]} data The heatmap data, 0-indexed to Jan 1
3
19
  * @param {number} year The year of the data. Used for day-of-week alignment
4
- * @param {string[]} [palette] Optional color palette to use. If not specified a palette will be generated
20
+ * @param {GenerateOptions} [opts] Generation options
5
21
  *
6
22
  * @return {string} The SVG heatmap string
7
23
  */
8
- export declare function generate(data: number[], year: number, palette?: string[], darkMode?: boolean): string;
24
+ export declare function generate(data: number[], year: number, opts?: GenerateOptions): string;
package/lib/svg.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generate = void 0;
3
+ exports.generate = generate;
4
4
  const date_fns_1 = require("date-fns");
5
5
  const SQUARE_SIZE = 20;
6
6
  const SQUARE_RX = 2;
@@ -30,45 +30,47 @@ const FOOTER = "</svg>";
30
30
  /**
31
31
  * @param {number[]} data The heatmap data, 0-indexed to Jan 1
32
32
  * @param {number} year The year of the data. Used for day-of-week alignment
33
- * @param {string[]} [palette] Optional color palette to use. If not specified a palette will be generated
33
+ * @param {GenerateOptions} [opts] Generation options
34
34
  *
35
35
  * @return {string} The SVG heatmap string
36
36
  */
37
- function generate(data, year, palette, darkMode) {
37
+ function generate(data, year, opts) {
38
+ var _a, _b, _c, _d;
38
39
  const svg = [];
39
- const p = palette !== null && palette !== void 0 ? palette : genPalette();
40
- const textColor = (darkMode !== null && darkMode !== void 0 ? darkMode : false) ? "#FFFFFF" : "#000000";
41
- svg.push(HEADER);
40
+ const p = (_a = opts === null || opts === void 0 ? void 0 : opts.palette) !== null && _a !== void 0 ? _a : genPalette();
41
+ const textColor = ((_b = opts === null || opts === void 0 ? void 0 : opts.darkMode) !== null && _b !== void 0 ? _b : false) ? "#FFFFFF" : "#000000";
42
+ const headerAndFooter = (_c = opts === null || opts === void 0 ? void 0 : opts.headerAndFooter) !== null && _c !== void 0 ? _c : true;
43
+ const padSquareColor = (_d = opts === null || opts === void 0 ? void 0 : opts.padSquareColor) !== null && _d !== void 0 ? _d : "#222222";
44
+ if (headerAndFooter) {
45
+ svg.push(HEADER);
46
+ }
42
47
  svg.push(`<style>
43
48
  .outline { fill: none; stroke: #DDD; stroke-width: 2px }
44
- .lbl { font-family: sans-serif; fill: ${textColor} }\n`);
49
+ .lbl { font-family: sans-serif; fill: ${textColor} }
50
+ .pad-square { fill: ${padSquareColor}; stroke: none }\n`);
45
51
  svg.push(genPaletteClasses(p));
46
52
  svg.push("\n</style>\n");
47
53
  svg.push(outline());
48
- svg.push(legend(palette));
49
- const yLabelPad = SQUARE_SIZE * 0.78;
50
- svg.push(label([X_OFFSET, getSquareCoord(0)[1] + yLabelPad], "Sun", "end"));
51
- svg.push(label([X_OFFSET, getSquareCoord(1)[1] + yLabelPad], "Mon", "end"));
52
- svg.push(label([X_OFFSET, getSquareCoord(2)[1] + yLabelPad], "Tue", "end"));
53
- svg.push(label([X_OFFSET, getSquareCoord(3)[1] + yLabelPad], "Wed", "end"));
54
- svg.push(label([X_OFFSET, getSquareCoord(4)[1] + yLabelPad], "Thu", "end"));
55
- svg.push(label([X_OFFSET, getSquareCoord(5)[1] + yLabelPad], "Fri", "end"));
56
- svg.push(label([X_OFFSET, getSquareCoord(6)[1] + yLabelPad], "Sat", "end"));
54
+ svg.push(legend(opts === null || opts === void 0 ? void 0 : opts.palette));
55
+ ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"].forEach((day, i) => svg.push(label([X_OFFSET, getSquareCoord(i)[1] + SQUARE_SIZE * 0.78], day, "end")));
57
56
  for (let i = 0; i < 12; i++) {
58
57
  const date = new Date(year, i, 1);
59
- const [x] = getSquareCoord((Number(date_fns_1.format(date, "w")) - 1) * 7);
60
- svg.push(label([x, Y_OFFSET], date_fns_1.format(date, "MMM")));
58
+ const [x] = getSquareCoord((Number((0, date_fns_1.format)(date, "w")) - 1) * 7);
59
+ svg.push(label([x, Y_OFFSET], (0, date_fns_1.format)(date, "MMM")));
61
60
  }
62
61
  const max = Math.max(...data);
63
- const paddingBefore = Number(date_fns_1.format(new Date(year, 0, 1), "e")) - 1;
62
+ const paddingBefore = Number((0, date_fns_1.format)(new Date(year, 0, 1), "e")) - 1;
64
63
  Array(paddingBefore)
65
- .fill(0)
66
- .concat(data.concat(Array(53 * 7 - data.length - paddingBefore).fill(0)))
67
- .forEach((day, i) => svg.push(dataSquare(getSquareCoord(i), palette ? day : Math.floor((day / max) * (AUTO_PALETTE_SIZE - 1)), i - paddingBefore, year, day)));
68
- svg.push(FOOTER);
64
+ .fill(-1)
65
+ .concat(data.concat(Array(53 * 7 - data.length - paddingBefore).fill(-1)))
66
+ .forEach((value, i) => svg.push(dataSquare(getSquareCoord(i), (opts === null || opts === void 0 ? void 0 : opts.palette)
67
+ ? value
68
+ : Math.floor((value / max) * (AUTO_PALETTE_SIZE - 1)), i - paddingBefore, year, value, opts)));
69
+ if (headerAndFooter) {
70
+ svg.push(FOOTER);
71
+ }
69
72
  return svg.join("");
70
73
  }
71
- exports.generate = generate;
72
74
  function genPalette() {
73
75
  const palette = ["#eeeeee"];
74
76
  for (let i = 0; i < 99; i++) {
@@ -136,8 +138,15 @@ function getSquareCoord(i) {
136
138
  function label([x, y], text, anchor) {
137
139
  return `<text x="${x}" y="${y}" class="lbl" text-anchor="${anchor !== null && anchor !== void 0 ? anchor : "start"}">${text}</text>`;
138
140
  }
139
- function dataSquare([x, y], p, i, year, day) {
140
- return `<rect onmouseover="svg_hm_h(${year}, ${i}, ${day})" x="${x}" y="${y}" width="${SQUARE_SIZE}" height="${SQUARE_SIZE}" rx="${SQUARE_RX}" class="p${p}"/>`;
141
+ function dataSquare([x, y], p, i, year, value, opts) {
142
+ const onMouseOver = (opts === null || opts === void 0 ? void 0 : opts.onSquareMouseOver)
143
+ ? ` onmouseover="${templateReplaceEventHandler(opts.onSquareMouseOver, year, i, value)}"`
144
+ : "";
145
+ const onClick = (opts === null || opts === void 0 ? void 0 : opts.onSquareClick)
146
+ ? ` onclick="${templateReplaceEventHandler(opts.onSquareClick, year, i, value)}"`
147
+ : "";
148
+ const className = value === -1 ? "pad-square" : `p${p}`;
149
+ return `<rect${onMouseOver}${onClick} x="${x}" y="${y}" width="${SQUARE_SIZE}" height="${SQUARE_SIZE}" rx="${SQUARE_RX}" class="${className}"/>`;
141
150
  }
142
151
  function pSquare([x, y], p) {
143
152
  return `<rect x="${x}" y="${y}" width="${SQUARE_SIZE}" height="${SQUARE_SIZE}" rx="${SQUARE_RX}" class="p${p}"/>`;
@@ -145,4 +154,10 @@ function pSquare([x, y], p) {
145
154
  function outline() {
146
155
  return `<rect x="0" y="0" width="${WIDTH}" height="${HEIGHT}" rx="${OUTLINE_RX}" class="outline"/>`;
147
156
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N2Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnQkEsdUNBQWtDO0FBRWxDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDcEIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNwQixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sS0FBSyxHQUNULENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUU7SUFDbEMsYUFBYTtJQUNiLFlBQVksR0FBRyxDQUFDO0lBQ2hCLFFBQVEsQ0FBQztBQUNYLE1BQU0sTUFBTSxHQUNWLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDakMsYUFBYTtJQUNiLFlBQVksR0FBRyxDQUFDO0lBQ2hCLFFBQVE7SUFDUixpQkFBaUIsQ0FBQztBQUVwQixNQUFNLE1BQU0sR0FBRyxrREFBa0QsS0FBSyxhQUFhLE1BQU07OztDQUd4RixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRXhCOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsSUFBYyxFQUNkLElBQVksRUFDWixPQUFrQixFQUNsQixRQUFrQjtJQUVsQixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxVQUFVLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFNBQVMsR0FBRyxDQUFBLFFBQVEsYUFBUixRQUFRLGNBQVIsUUFBUSxHQUFJLEtBQUssRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDNUQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDOzswQ0FFK0IsU0FBUyxNQUFNLENBQUMsQ0FBQztJQUN6RCxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUxQixNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUU1RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGlCQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENB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
157
+ function templateReplaceEventHandler(input, year, i, value) {
158
+ return input
159
+ .replaceAll("%year", year.toString())
160
+ .replaceAll("%i", i.toString())
161
+ .replaceAll("%value", value.toString());
162
+ }
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N2Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVEQSw0QkFnRUM7QUF2R0QsdUNBQWtDO0FBRWxDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDcEIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNwQixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sS0FBSyxHQUNULENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUU7SUFDbEMsYUFBYTtJQUNiLFlBQVksR0FBRyxDQUFDO0lBQ2hCLFFBQVEsQ0FBQztBQUNYLE1BQU0sTUFBTSxHQUNWLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDakMsYUFBYTtJQUNiLFlBQVksR0FBRyxDQUFDO0lBQ2hCLFFBQVE7SUFDUixpQkFBaUIsQ0FBQztBQUVwQixNQUFNLE1BQU0sR0FBRyxrREFBa0QsS0FBSyxhQUFhLE1BQU07OztDQUd4RixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRXhCOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsSUFBYyxFQUNkLElBQVksRUFDWixJQUFzQjs7SUFFdEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLEdBQUcsTUFBQSxJQUFJLGFB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
package/lib/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright © 2020, 2021 Jayden Chan. All rights reserved.
2
+ * Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
3
3
  *
4
4
  * svg-heatmap is free software: you can redistribute it and/or modify
5
5
  * it under the terms of the GNU General Public License version 3
@@ -13,7 +13,15 @@
13
13
  * You should have received a copy of the GNU General Public License
14
14
  * along with svg-heatmap. If not, see <https://www.gnu.org/licenses/>.
15
15
  */
16
- export declare type Coord = [number, number];
16
+ export type Coord = [number, number];
17
+ export type GenerateOptions = {
18
+ palette?: string[];
19
+ padSquareColor?: string;
20
+ darkMode?: boolean;
21
+ headerAndFooter?: boolean;
22
+ onSquareMouseOver?: string;
23
+ onSquareClick?: string;
24
+ };
17
25
  export declare const PalettePresets: {
18
26
  gitHubOld: string[];
19
27
  gitHub: string[];
package/lib/types.js CHANGED
@@ -29,4 +29,4 @@ exports.PalettePresets = {
29
29
  "#1f1d42",
30
30
  ],
31
31
  };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUJhLFFBQUEsY0FBYyxHQUFHO0lBQzVCLGtCQUFrQjtJQUNsQixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELGtCQUFrQjtJQUNsQixNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0NBQ0YsQ0FBQyJ9
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEJhLFFBQUEsY0FBYyxHQUFHO0lBQzVCLGtCQUFrQjtJQUNsQixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELGtCQUFrQjtJQUNsQixNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0NBQ0YsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svg-heatmap",
3
- "version": "2.1.0",
3
+ "version": "3.1.0",
4
4
  "description": "Generate GitHub-like heatmap graphs with SVG",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -28,10 +28,10 @@
28
28
  },
29
29
  "homepage": "https://github.com/jayden-chan/svg-heatmap#readme",
30
30
  "devDependencies": {
31
- "@types/node": "^14.14.6",
32
- "typescript": "^4.0.5"
31
+ "@types/node": "20",
32
+ "typescript": "^5.7.2"
33
33
  },
34
34
  "dependencies": {
35
- "date-fns": "^2.16.1"
35
+ "date-fns": "^4.1.0"
36
36
  }
37
37
  }