{"version":3,"sources":["jsdelivr-header.js","/npm/chartjs-chart-matrix@3.0.0/dist/chartjs-chart-matrix.esm.js"],"names":[],"mappings":"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","file":"/npm/chartjs-chart-matrix@3.0.0/dist/chartjs-chart-matrix.esm.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/chartjs-chart-matrix@3.0.0/dist/chartjs-chart-matrix.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * chartjs-chart-matrix v0.0.0-development\n * https://chartjs-chart-matrix.pages.dev/\n * (c) 2025 Jukka Kurkela\n * Released under the MIT license\n */\nimport { DatasetController, Element } from 'chart.js';\nimport { isObject, toTRBLCorners, addRoundedRectPath } from 'chart.js/helpers';\n\nvar version = \"0.0.0-development\";\n\nclass MatrixController extends DatasetController {\n    initialize() {\n        this.enableOptionSharing = true;\n        super.initialize();\n    }\n    update(mode) {\n        const meta = this._cachedMeta;\n        this.updateElements(meta.data, 0, meta.data.length, mode);\n    }\n    updateElements(rects, start, count, mode) {\n        const reset = mode === 'reset';\n        const { xScale, yScale } = this._cachedMeta;\n        const firstOpts = this.resolveDataElementOptions(start, mode);\n        const sharedOptions = this.getSharedOptions(firstOpts);\n        for(let i = start; i < start + count; i++){\n            const parsed = !reset && this.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 = this.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            this.updateElement(rects[i], i, properties, mode);\n        }\n        this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    }\n    draw() {\n        const ctx = this.chart.ctx;\n        const data = this.getMeta().data || [];\n        let i, ilen;\n        for(i = 0, ilen = data.length; i < ilen; ++i){\n            data[i].draw(ctx);\n        }\n    }\n}\nMatrixController.id = 'matrix';\nMatrixController.version = version;\nMatrixController.defaults = {\n    dataElementType: 'matrix',\n    animations: {\n        numbers: {\n            type: 'number',\n            properties: [\n                'x',\n                'y',\n                'width',\n                'height'\n            ]\n        }\n    }\n};\nMatrixController.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};\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}\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\nfunction getBounds(element, useFinalPosition) {\n    const { x, y, width, height } = element.getProps([\n        'x',\n        'y',\n        'width',\n        'height'\n    ], useFinalPosition);\n    return {\n        left: x,\n        top: y,\n        right: x + width,\n        bottom: y + height\n    };\n}\nfunction limit(value, min, max) {\n    return Math.max(Math.min(value, max), min);\n}\nfunction parseBorderWidth(options, maxW, maxH) {\n    const value = options.borderWidth;\n    let t, r, b, l;\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    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}\nfunction boundingRects(element) {\n    const bounds = getBounds(element, false);\n    const width = bounds.right - bounds.left;\n    const height = bounds.bottom - bounds.top;\n    const border = parseBorderWidth(element.options, width / 2, height / 2);\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}\nfunction inRange(element, x, y, useFinalPosition) {\n    const skipX = x === null;\n    const skipY = y === null;\n    const bounds = !element || skipX && skipY ? false : getBounds(element, useFinalPosition);\n    return bounds && (skipX || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nclass MatrixElement extends Element {\n    draw(ctx) {\n        const options = this.options;\n        const { inner, outer } = boundingRects(this);\n        const radius = toTRBLCorners(options.borderRadius);\n        ctx.save();\n        if (outer.w !== inner.w || outer.h !== inner.h) {\n            ctx.beginPath();\n            addRoundedRectPath(ctx, {\n                x: outer.x,\n                y: outer.y,\n                w: outer.w,\n                h: outer.h,\n                radius\n            });\n            addRoundedRectPath(ctx, {\n                x: inner.x,\n                y: inner.y,\n                w: inner.w,\n                h: inner.h,\n                radius\n            });\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, {\n                x: inner.x,\n                y: inner.y,\n                w: inner.w,\n                h: inner.h,\n                radius\n            });\n            ctx.fillStyle = options.backgroundColor;\n            ctx.fill();\n        }\n        ctx.restore();\n    }\n    inRange(mouseX, mouseY, useFinalPosition) {\n        return inRange(this, mouseX, mouseY, useFinalPosition);\n    }\n    inXRange(mouseX, useFinalPosition) {\n        return inRange(this, mouseX, null, useFinalPosition);\n    }\n    inYRange(mouseY, useFinalPosition) {\n        return inRange(this, null, mouseY, useFinalPosition);\n    }\n    getCenterPoint(useFinalPosition) {\n        const { x, y, width, height } = this.getProps([\n            'x',\n            'y',\n            'width',\n            'height'\n        ], useFinalPosition);\n        return {\n            x: x + width / 2,\n            y: y + height / 2\n        };\n    }\n    tooltipPosition() {\n        return this.getCenterPoint();\n    }\n    getRange(axis) {\n        return axis === 'x' ? this.width / 2 : this.height / 2;\n    }\n    constructor(cfg){\n        super();\n        if (cfg) {\n            Object.assign(this, cfg);\n        }\n    }\n}\nMatrixElement.id = 'matrix';\nMatrixElement.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\nexport { MatrixController, MatrixElement };\n"]}