chartjs-chart-matrix 2.0.1 → 2.1.1

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.
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * chartjs-chart-matrix v2.0.1
2
+ * chartjs-chart-matrix v0.0.0-development
3
3
  * https://chartjs-chart-matrix.pages.dev/
4
- * (c) 2023 Jukka Kurkela
4
+ * (c) 2025 Jukka Kurkela
5
5
  * Released under the MIT license
6
6
  */
7
7
  (function (global, factory) {
@@ -10,7 +10,7 @@ typeof define === 'function' && define.amd ? define(['exports', 'chart.js', 'cha
10
10
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["chartjs-chart-matrix"] = {}, global.Chart, global.Chart.helpers));
11
11
  })(this, (function (exports, chart_js, helpers) { 'use strict';
12
12
 
13
- var version = "2.0.1";
13
+ var version = "0.0.0-development";
14
14
 
15
15
  class MatrixController extends chart_js.DatasetController {
16
16
 
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * chartjs-chart-matrix v2.0.1
2
+ * chartjs-chart-matrix v0.0.0-development
3
3
  * https://chartjs-chart-matrix.pages.dev/
4
- * (c) 2023 Jukka Kurkela
4
+ * (c) 2025 Jukka Kurkela
5
5
  * Released under the MIT license
6
6
  */
7
7
  import { DatasetController, Element } from 'chart.js';
8
8
  import { toTRBLCorners, addRoundedRectPath, isObject } from 'chart.js/helpers';
9
9
 
10
- var version = "2.0.1";
10
+ var version = "0.0.0-development";
11
11
 
12
12
  class MatrixController extends DatasetController {
13
13
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * chartjs-chart-matrix v2.0.1
2
+ * chartjs-chart-matrix v0.0.0-development
3
3
  * https://chartjs-chart-matrix.pages.dev/
4
- * (c) 2023 Jukka Kurkela
4
+ * (c) 2025 Jukka Kurkela
5
5
  * Released under the MIT license
6
6
  */
7
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("chart.js"),require("chart.js/helpers")):"function"==typeof define&&define.amd?define(["exports","chart.js","chart.js/helpers"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["chartjs-chart-matrix"]={},t.Chart,t.Chart.helpers)}(this,(function(t,e,i){"use strict";class r extends e.DatasetController{static id="matrix";static version="2.0.1";static defaults={dataElementType:"matrix",animations:{numbers:{type:"number",properties:["x","y","width","height"]}}};static overrides={interaction:{mode:"nearest",intersect:!0},scales:{x:{type:"linear",offset:!0},y:{type:"linear",reverse:!0}}};initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,r){const s=this,a="reset"===r,{xScale:h,yScale:l}=s._cachedMeta,d=s.resolveDataElementOptions(e,r),c=s.getSharedOptions(r,t[e],d);for(let d=e;d<e+i;d++){const e=!a&&s.getParsed(d),i=a?h.getBasePixel():h.getPixelForValue(e.x),c=a?l.getBasePixel():l.getPixelForValue(e.y),u=s.resolveDataElementOptions(d,r),{width:g,height:p,anchorX:f,anchorY:x}=u,y={x:n(f,i,g),y:o(x,c,p),width:g,height:p,options:u};s.updateElement(t[d],d,y,r)}s.updateSharedOptions(c,r)}draw(){const t=this,e=t.getMeta().data||[];let i,r;for(i=0,r=e.length;i<r;++i)e[i].draw(t._ctx)}}function n(t,e,i){return"left"===t||"start"===t?e:"right"===t||"end"===t?e-i:e-i/2}function o(t,e,i){return"top"===t||"start"===t?e:"bottom"===t||"end"===t?e-i:e-i/2}function s(t,e){const{x:i,y:r,width:n,height:o}=t.getProps(["x","y","width","height"],e);return{left:i,top:r,right:i+n,bottom:r+o}}function a(t,e,i){return Math.max(Math.min(t,i),e)}function h(t){const e=s(t),r=e.right-e.left,n=e.bottom-e.top,o=function(t,e,r){const n=t.options.borderWidth;let o,s,h,l;return i.isObject(n)?(o=+n.top||0,s=+n.right||0,h=+n.bottom||0,l=+n.left||0):o=s=h=l=+n||0,{t:a(o,0,r),r:a(s,0,e),b:a(h,0,r),l:a(l,0,e)}}(t,r/2,n/2);return{outer:{x:e.left,y:e.top,w:r,h:n},inner:{x:e.left+o.l,y:e.top+o.t,w:r-o.l-o.r,h:n-o.t-o.b}}}function l(t,e,i,r){const n=null===e,o=null===i,a=!(!t||n&&o)&&s(t,r);return a&&(n||e>=a.left&&e<=a.right)&&(o||i>=a.top&&i<=a.bottom)}class d extends e.Element{static id="matrix";static defaults={backgroundColor:void 0,borderColor:void 0,borderWidth:void 0,borderRadius:0,anchorX:"center",anchorY:"center",width:20,height:20};constructor(t){super(),this.options=void 0,this.width=void 0,this.height=void 0,t&&Object.assign(this,t)}draw(t){const e=this.options,{inner:r,outer:n}=h(this),o=i.toTRBLCorners(e.borderRadius);t.save(),n.w!==r.w||n.h!==r.h?(t.beginPath(),i.addRoundedRectPath(t,{x:n.x,y:n.y,w:n.w,h:n.h,radius:o}),i.addRoundedRectPath(t,{x:r.x,y:r.y,w:r.w,h:r.h,radius:o}),t.fillStyle=e.backgroundColor,t.fill(),t.fillStyle=e.borderColor,t.fill("evenodd")):(t.beginPath(),i.addRoundedRectPath(t,{x:r.x,y:r.y,w:r.w,h:r.h,radius:o}),t.fillStyle=e.backgroundColor,t.fill()),t.restore()}inRange(t,e,i){return l(this,t,e,i)}inXRange(t,e){return l(this,t,null,e)}inYRange(t,e){return l(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,width:r,height:n}=this.getProps(["x","y","width","height"],t);return{x:e+r/2,y:i+n/2}}tooltipPosition(){return this.getCenterPoint()}getRange(t){return"x"===t?this.width/2:this.height/2}}e.Chart.register(r,d),t.MatrixController=r,t.MatrixElement=d}));
7
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("chart.js"),require("chart.js/helpers")):"function"==typeof define&&define.amd?define(["exports","chart.js","chart.js/helpers"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["chartjs-chart-matrix"]={},t.Chart,t.Chart.helpers)}(this,(function(t,e,i){"use strict";class r extends e.DatasetController{static id="matrix";static version="0.0.0-development";static defaults={dataElementType:"matrix",animations:{numbers:{type:"number",properties:["x","y","width","height"]}}};static overrides={interaction:{mode:"nearest",intersect:!0},scales:{x:{type:"linear",offset:!0},y:{type:"linear",reverse:!0}}};initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,r){const s=this,a="reset"===r,{xScale:h,yScale:l}=s._cachedMeta,d=s.resolveDataElementOptions(e,r),c=s.getSharedOptions(r,t[e],d);for(let d=e;d<e+i;d++){const e=!a&&s.getParsed(d),i=a?h.getBasePixel():h.getPixelForValue(e.x),c=a?l.getBasePixel():l.getPixelForValue(e.y),u=s.resolveDataElementOptions(d,r),{width:g,height:p,anchorX:f,anchorY:x}=u,y={x:n(f,i,g),y:o(x,c,p),width:g,height:p,options:u};s.updateElement(t[d],d,y,r)}s.updateSharedOptions(c,r)}draw(){const t=this,e=t.getMeta().data||[];let i,r;for(i=0,r=e.length;i<r;++i)e[i].draw(t._ctx)}}function n(t,e,i){return"left"===t||"start"===t?e:"right"===t||"end"===t?e-i:e-i/2}function o(t,e,i){return"top"===t||"start"===t?e:"bottom"===t||"end"===t?e-i:e-i/2}function s(t,e){const{x:i,y:r,width:n,height:o}=t.getProps(["x","y","width","height"],e);return{left:i,top:r,right:i+n,bottom:r+o}}function a(t,e,i){return Math.max(Math.min(t,i),e)}function h(t){const e=s(t),r=e.right-e.left,n=e.bottom-e.top,o=function(t,e,r){const n=t.options.borderWidth;let o,s,h,l;return i.isObject(n)?(o=+n.top||0,s=+n.right||0,h=+n.bottom||0,l=+n.left||0):o=s=h=l=+n||0,{t:a(o,0,r),r:a(s,0,e),b:a(h,0,r),l:a(l,0,e)}}(t,r/2,n/2);return{outer:{x:e.left,y:e.top,w:r,h:n},inner:{x:e.left+o.l,y:e.top+o.t,w:r-o.l-o.r,h:n-o.t-o.b}}}function l(t,e,i,r){const n=null===e,o=null===i,a=!(!t||n&&o)&&s(t,r);return a&&(n||e>=a.left&&e<=a.right)&&(o||i>=a.top&&i<=a.bottom)}class d extends e.Element{static id="matrix";static defaults={backgroundColor:void 0,borderColor:void 0,borderWidth:void 0,borderRadius:0,anchorX:"center",anchorY:"center",width:20,height:20};constructor(t){super(),this.options=void 0,this.width=void 0,this.height=void 0,t&&Object.assign(this,t)}draw(t){const e=this.options,{inner:r,outer:n}=h(this),o=i.toTRBLCorners(e.borderRadius);t.save(),n.w!==r.w||n.h!==r.h?(t.beginPath(),i.addRoundedRectPath(t,{x:n.x,y:n.y,w:n.w,h:n.h,radius:o}),i.addRoundedRectPath(t,{x:r.x,y:r.y,w:r.w,h:r.h,radius:o}),t.fillStyle=e.backgroundColor,t.fill(),t.fillStyle=e.borderColor,t.fill("evenodd")):(t.beginPath(),i.addRoundedRectPath(t,{x:r.x,y:r.y,w:r.w,h:r.h,radius:o}),t.fillStyle=e.backgroundColor,t.fill()),t.restore()}inRange(t,e,i){return l(this,t,e,i)}inXRange(t,e){return l(this,t,null,e)}inYRange(t,e){return l(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,width:r,height:n}=this.getProps(["x","y","width","height"],t);return{x:e+r/2,y:i+n/2}}tooltipPosition(){return this.getCenterPoint()}getRange(t){return"x"===t?this.width/2:this.height/2}}e.Chart.register(r,d),t.MatrixController=r,t.MatrixElement=d}));
8
8
  //# sourceMappingURL=chartjs-chart-matrix.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartjs-chart-matrix.min.js","sources":["../src/controller.js","../src/element.js","../src/index.js"],"sourcesContent":["import {DatasetController} from 'chart.js';\nimport {version} from '../package.json';\n\nexport default class MatrixController extends DatasetController {\n\n static id = 'matrix';\n static version = version;\n\n static defaults = {\n dataElementType: 'matrix',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height']\n }\n },\n };\n\n static overrides = {\n interaction: {\n mode: 'nearest',\n intersect: true\n },\n scales: {\n x: {\n type: 'linear',\n offset: true\n },\n y: {\n type: 'linear',\n reverse: true\n }\n },\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n\n me.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(rects, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const {xScale, yScale} = me._cachedMeta;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(mode, rects[start], firstOpts);\n\n for (let i = start; i < start + count; i++) {\n const parsed = !reset && me.getParsed(i);\n const x = reset ? xScale.getBasePixel() : xScale.getPixelForValue(parsed.x);\n const y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(parsed.y);\n const options = me.resolveDataElementOptions(i, mode);\n const {width, height, anchorX, anchorY} = options;\n const properties = {\n x: resolveX(anchorX, x, width),\n y: resolveY(anchorY, y, height),\n width,\n height,\n options\n };\n me.updateElement(rects[i], i, properties, mode);\n }\n\n me.updateSharedOptions(sharedOptions, mode);\n }\n\n draw() {\n const me = this;\n const data = me.getMeta().data || [];\n let i, ilen;\n\n for (i = 0, ilen = data.length; i < ilen; ++i) {\n data[i].draw(me._ctx);\n }\n }\n}\n\nfunction resolveX(anchorX, x, width) {\n if (anchorX === 'left' || anchorX === 'start') {\n return x;\n }\n if (anchorX === 'right' || anchorX === 'end') {\n return x - width;\n }\n return x - width / 2;\n}\n\nfunction resolveY(anchorY, y, height) {\n if (anchorY === 'top' || anchorY === 'start') {\n return y;\n }\n if (anchorY === 'bottom' || anchorY === 'end') {\n return y - height;\n }\n return y - height / 2;\n}\n","import {Element} from 'chart.js';\nimport {isObject, addRoundedRectPath, toTRBLCorners} from 'chart.js/helpers';\n\n/**\n * Helper function to get the bounds of the rect\n * @param {MatrixElement} rect the rect\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the rect\n * @private\n */\nfunction getBounds(rect, useFinalPosition) {\n const {x, y, width, height} = rect.getProps(['x', 'y', 'width', 'height'], useFinalPosition);\n return {left: x, top: y, right: x + width, bottom: y + height};\n}\n\nfunction limit(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}\n\nfunction parseBorderWidth(rect, maxW, maxH) {\n const value = rect.options.borderWidth;\n let t, r, b, l;\n\n if (isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n\n return {\n t: limit(t, 0, maxH),\n r: limit(r, 0, maxW),\n b: limit(b, 0, maxH),\n l: limit(l, 0, maxW)\n };\n}\n\nfunction boundingRects(rect) {\n const bounds = getBounds(rect);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(rect, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b\n }\n };\n}\n\nfunction inRange(rect, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const bounds = !rect || (skipX && skipY) ? false : getBounds(rect, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nexport default class MatrixElement extends Element {\n\n static id = 'matrix';\n\n static defaults = {\n backgroundColor: undefined,\n borderColor: undefined,\n borderWidth: undefined,\n borderRadius: 0,\n anchorX: 'center',\n anchorY: 'center',\n width: 20,\n height: 20\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.width = undefined;\n this.height = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const options = this.options;\n const {inner, outer} = boundingRects(this);\n const radius = toTRBLCorners(options.borderRadius);\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {x: outer.x, y: outer.y, w: outer.w, h: outer.h, radius});\n addRoundedRectPath(ctx, {x: inner.x, y: inner.y, w: inner.w, h: inner.h, radius});\n ctx.fillStyle = options.backgroundColor;\n ctx.fill();\n ctx.fillStyle = options.borderColor;\n ctx.fill('evenodd');\n } else {\n ctx.beginPath();\n addRoundedRectPath(ctx, {x: inner.x, y: inner.y, w: inner.w, h: inner.h, radius});\n ctx.fillStyle = options.backgroundColor;\n ctx.fill();\n }\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, width, height} = this.getProps(['x', 'y', 'width', 'height'], useFinalPosition);\n return {\n x: x + width / 2,\n y: y + height / 2\n };\n }\n\n tooltipPosition() {\n return this.getCenterPoint();\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import {Chart} from 'chart.js';\nimport MatrixController from './controller.js';\nimport MatrixElement from './element.js';\n\nChart.register(MatrixController, MatrixElement);\n\nexport {MatrixController, MatrixElement};\n"],"names":["MatrixController","DatasetController","static","dataElementType","animations","numbers","type","properties","interaction","mode","intersect","scales","x","offset","y","reverse","initialize","this","enableOptionSharing","super","update","meta","_cachedMeta","updateElements","data","length","rects","start","count","me","reset","xScale","yScale","firstOpts","resolveDataElementOptions","sharedOptions","getSharedOptions","i","parsed","getParsed","getBasePixel","getPixelForValue","options","width","height","anchorX","anchorY","resolveX","resolveY","updateElement","updateSharedOptions","draw","getMeta","ilen","_ctx","getBounds","rect","useFinalPosition","getProps","left","top","right","bottom","limit","value","min","max","Math","boundingRects","bounds","border","maxW","maxH","borderWidth","t","r","b","l","isObject","parseBorderWidth","outer","w","h","inner","inRange","skipX","skipY","MatrixElement","Element","backgroundColor","undefined","borderColor","borderRadius","constructor","cfg","Object","assign","ctx","radius","toTRBLCorners","save","beginPath","addRoundedRectPath","fillStyle","fill","restore","mouseX","mouseY","inXRange","inYRange","getCenterPoint","tooltipPosition","getRange","axis","Chart","register"],"mappings":"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"}
1
+ {"version":3,"file":"chartjs-chart-matrix.min.js","sources":["../src/controller.js","../src/element.js","../src/index.js"],"sourcesContent":["import {DatasetController} from 'chart.js';\nimport {version} from '../package.json';\n\nexport default class MatrixController extends DatasetController {\n\n static id = 'matrix';\n static version = version;\n\n static defaults = {\n dataElementType: 'matrix',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height']\n }\n },\n };\n\n static overrides = {\n interaction: {\n mode: 'nearest',\n intersect: true\n },\n scales: {\n x: {\n type: 'linear',\n offset: true\n },\n y: {\n type: 'linear',\n reverse: true\n }\n },\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n\n me.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(rects, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const {xScale, yScale} = me._cachedMeta;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(mode, rects[start], firstOpts);\n\n for (let i = start; i < start + count; i++) {\n const parsed = !reset && me.getParsed(i);\n const x = reset ? xScale.getBasePixel() : xScale.getPixelForValue(parsed.x);\n const y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(parsed.y);\n const options = me.resolveDataElementOptions(i, mode);\n const {width, height, anchorX, anchorY} = options;\n const properties = {\n x: resolveX(anchorX, x, width),\n y: resolveY(anchorY, y, height),\n width,\n height,\n options\n };\n me.updateElement(rects[i], i, properties, mode);\n }\n\n me.updateSharedOptions(sharedOptions, mode);\n }\n\n draw() {\n const me = this;\n const data = me.getMeta().data || [];\n let i, ilen;\n\n for (i = 0, ilen = data.length; i < ilen; ++i) {\n data[i].draw(me._ctx);\n }\n }\n}\n\nfunction resolveX(anchorX, x, width) {\n if (anchorX === 'left' || anchorX === 'start') {\n return x;\n }\n if (anchorX === 'right' || anchorX === 'end') {\n return x - width;\n }\n return x - width / 2;\n}\n\nfunction resolveY(anchorY, y, height) {\n if (anchorY === 'top' || anchorY === 'start') {\n return y;\n }\n if (anchorY === 'bottom' || anchorY === 'end') {\n return y - height;\n }\n return y - height / 2;\n}\n","import {Element} from 'chart.js';\nimport {isObject, addRoundedRectPath, toTRBLCorners} from 'chart.js/helpers';\n\n/**\n * Helper function to get the bounds of the rect\n * @param {MatrixElement} rect the rect\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the rect\n * @private\n */\nfunction getBounds(rect, useFinalPosition) {\n const {x, y, width, height} = rect.getProps(['x', 'y', 'width', 'height'], useFinalPosition);\n return {left: x, top: y, right: x + width, bottom: y + height};\n}\n\nfunction limit(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}\n\nfunction parseBorderWidth(rect, maxW, maxH) {\n const value = rect.options.borderWidth;\n let t, r, b, l;\n\n if (isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n\n return {\n t: limit(t, 0, maxH),\n r: limit(r, 0, maxW),\n b: limit(b, 0, maxH),\n l: limit(l, 0, maxW)\n };\n}\n\nfunction boundingRects(rect) {\n const bounds = getBounds(rect);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(rect, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b\n }\n };\n}\n\nfunction inRange(rect, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const bounds = !rect || (skipX && skipY) ? false : getBounds(rect, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nexport default class MatrixElement extends Element {\n\n static id = 'matrix';\n\n static defaults = {\n backgroundColor: undefined,\n borderColor: undefined,\n borderWidth: undefined,\n borderRadius: 0,\n anchorX: 'center',\n anchorY: 'center',\n width: 20,\n height: 20\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.width = undefined;\n this.height = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const options = this.options;\n const {inner, outer} = boundingRects(this);\n const radius = toTRBLCorners(options.borderRadius);\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {x: outer.x, y: outer.y, w: outer.w, h: outer.h, radius});\n addRoundedRectPath(ctx, {x: inner.x, y: inner.y, w: inner.w, h: inner.h, radius});\n ctx.fillStyle = options.backgroundColor;\n ctx.fill();\n ctx.fillStyle = options.borderColor;\n ctx.fill('evenodd');\n } else {\n ctx.beginPath();\n addRoundedRectPath(ctx, {x: inner.x, y: inner.y, w: inner.w, h: inner.h, radius});\n ctx.fillStyle = options.backgroundColor;\n ctx.fill();\n }\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, width, height} = this.getProps(['x', 'y', 'width', 'height'], useFinalPosition);\n return {\n x: x + width / 2,\n y: y + height / 2\n };\n }\n\n tooltipPosition() {\n return this.getCenterPoint();\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import {Chart} from 'chart.js';\nimport MatrixController from './controller.js';\nimport MatrixElement from './element.js';\n\nChart.register(MatrixController, MatrixElement);\n\nexport {MatrixController, MatrixElement};\n"],"names":["MatrixController","DatasetController","static","dataElementType","animations","numbers","type","properties","interaction","mode","intersect","scales","x","offset","y","reverse","initialize","this","enableOptionSharing","super","update","meta","_cachedMeta","updateElements","data","length","rects","start","count","me","reset","xScale","yScale","firstOpts","resolveDataElementOptions","sharedOptions","getSharedOptions","i","parsed","getParsed","getBasePixel","getPixelForValue","options","width","height","anchorX","anchorY","resolveX","resolveY","updateElement","updateSharedOptions","draw","getMeta","ilen","_ctx","getBounds","rect","useFinalPosition","getProps","left","top","right","bottom","limit","value","min","max","Math","boundingRects","bounds","border","maxW","maxH","borderWidth","t","r","b","l","isObject","parseBorderWidth","outer","w","h","inner","inRange","skipX","skipY","MatrixElement","Element","backgroundColor","undefined","borderColor","borderRadius","constructor","cfg","Object","assign","ctx","radius","toTRBLCorners","save","beginPath","addRoundedRectPath","fillStyle","fill","restore","mouseX","mouseY","inXRange","inYRange","getCenterPoint","tooltipPosition","getRange","axis","Chart","register"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chartjs-chart-matrix",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "description": "Chart.js module for creating matrix charts",
5
5
  "type": "module",
6
6
  "main": "dist/chartjs-chart-matrix.cjs",
@@ -21,7 +21,7 @@
21
21
  "scripts": {
22
22
  "autobuild": "rollup -c -w",
23
23
  "build": "rollup -c",
24
- "dev": "karma start ./karma.conf.cjs --no-signle-run --auto-watch --browsers chrome",
24
+ "dev": "karma start ./karma.conf.cjs --no-single-run --auto-watch --browsers chrome",
25
25
  "docs": "npm run build && vuepress build docs --no-cache",
26
26
  "docs:dev": "npm run build && vuepress dev docs --no-cache",
27
27
  "lint": "concurrently -r \"npm:lint-*\"",
@@ -30,7 +30,7 @@
30
30
  "lint-types": "eslint \"types/**/*.ts\" && tsc -p types/tests/",
31
31
  "test": "cross-env NODE_ENV=test concurrently \"npm:test-*\"",
32
32
  "test-lint": "npm run lint",
33
- "test-karma": "karma start ./karma.conf.cjs --auto-watch --single-run",
33
+ "test-karma": "karma start ./karma.conf.cjs --no-auto-watch --single-run",
34
34
  "test-integration:node-commonjs": "npm run test --prefix test/integration/node-commonjs",
35
35
  "test-integration:node-module": "npm run test --prefix test/integration/node-module"
36
36
  },
@@ -56,37 +56,37 @@
56
56
  "homepage": "https://chartjs-chart-matrix.pages.dev/",
57
57
  "devDependencies": {
58
58
  "@napi-rs/canvas": "^0.1.30",
59
- "@rollup/plugin-commonjs": "^24.0.1",
59
+ "@rollup/plugin-commonjs": "^28.0.1",
60
60
  "@rollup/plugin-json": "^6.0.0",
61
61
  "@rollup/plugin-node-resolve": "^15.0.1",
62
62
  "@rollup/plugin-terser": "^0.4.0",
63
63
  "@typescript-eslint/eslint-plugin": "^5.6.0",
64
64
  "@typescript-eslint/parser": "^5.6.0",
65
65
  "chart.js": "^4.0.1",
66
- "chartjs-adapter-date-fns": "^2.0.0",
66
+ "chartjs-adapter-date-fns": "^3.0.0",
67
67
  "chartjs-test-utils": "^0.5.0",
68
- "concurrently": "^7.4.0",
68
+ "concurrently": "^9.0.1",
69
69
  "cross-env": "^7.0.3",
70
70
  "date-fns": "^2.19.0",
71
71
  "eslint": "^8.4.1",
72
72
  "eslint-config-chartjs": "^0.3.0",
73
73
  "eslint-plugin-es": "^4.1.0",
74
- "eslint-plugin-html": "^7.1.0",
74
+ "eslint-plugin-html": "^8.1.2",
75
75
  "eslint-plugin-markdown": "^3.0.0",
76
- "jasmine-core": "^4.4.0",
76
+ "jasmine-core": "^5.1.2",
77
77
  "karma": "^6.2.0",
78
78
  "karma-chrome-launcher": "^3.1.0",
79
79
  "karma-coverage": "^2.0.3",
80
80
  "karma-firefox-launcher": "^2.1.0",
81
81
  "karma-jasmine": "^5.1.0",
82
82
  "karma-jasmine-html-reporter": "^2.0.0",
83
- "karma-rollup-preprocessor": "7.0.7",
83
+ "karma-rollup-preprocessor": "7.0.8",
84
84
  "karma-spec-reporter": "^0.0.36",
85
- "pixelmatch": "^5.2.1",
86
- "rollup": "^3.3.0",
85
+ "pixelmatch": "^6.0.0",
86
+ "rollup": "^4.21.2",
87
87
  "rollup-plugin-analyzer": "^4.0.0",
88
- "rollup-plugin-istanbul": "^4.0.0",
89
- "typescript": "^4.5.2",
88
+ "rollup-plugin-istanbul": "^5.0.0",
89
+ "typescript": "^5.3.3",
90
90
  "vuepress": "^1.9.7",
91
91
  "vuepress-plugin-flexsearch": "^0.3.0",
92
92
  "vuepress-plugin-redirect": "^1.2.5",