{"version":3,"file":"index.mjs","sources":["../../src/chart/BaseChart.vue","../../src/chart/utils/ChartTheme.js","../../src/chart/Chart.vue","../../src/chart/Chart.vue?vue&type=template&id=80746e98&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@openvue/core/basecomponent';\nimport ChartStyle from 'openvue/chart/style';\n\nexport default {\n    name: 'BaseChart',\n    extends: BaseComponent,\n    props: {\n        type: String,\n        data: null,\n        options: null,\n        plugins: null,\n        width: {\n            type: Number,\n            default: 300\n        },\n        height: {\n            type: Number,\n            default: 150\n        },\n        canvasProps: {\n            type: null,\n            default: null\n        },\n        themed: {\n            type: Boolean,\n            default: true\n        }\n    },\n    style: ChartStyle,\n    provide() {\n        return {\n            $pcChart: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","import { $dt } from '@openuxkit/styled';\n\n/**\n * Chart.js renders to a canvas, so it cannot consume `var(--p-*)` references the way the rest of\n * the library does. Token names are resolved through $dt so they stay correct across presets, then\n * read off the document to get concrete values the canvas can paint with.\n */\n\n/*\n * Fixed categorical order. Slots are assigned by dataset index and never cycled or reordered, so a\n * series keeps its colour when other series are added or filtered out.\n *\n * Both rows were checked for the OKLCH lightness band, chroma floor, adjacent colour-vision\n * separation and contrast against their own surface. Dark is a separate selection rather than a\n * lightened copy of light, because simply brightening these hues pushes them out of the band.\n */\nconst SERIES_TOKENS = [\n    { light: 'blue.500', dark: 'blue.500', fallback: '#3b82f6' },\n    { light: 'amber.500', dark: 'amber.600', fallback: '#f59e0b' },\n    { light: 'violet.500', dark: 'violet.500', fallback: '#8b5cf6' },\n    { light: 'emerald.500', dark: 'emerald.600', fallback: '#10b981' },\n    { light: 'fuchsia.500', dark: 'fuchsia.500', fallback: '#d946ef' },\n    { light: 'rose.500', dark: 'rose.500', fallback: '#f43f5e' },\n    { light: 'cyan.500', dark: 'cyan.600', fallback: '#06b6d4' },\n    { light: 'lime.500', dark: 'lime.600', fallback: '#84cc16' }\n];\n\nconst SEMANTIC_TOKENS = {\n    text: 'text.color',\n    textMuted: 'text.muted.color',\n    border: 'content.border.color',\n    background: 'content.background'\n};\n\nconst resolve = (styles, token) => styles.getPropertyValue($dt(token).name).trim();\n\n/*\n * Derive the scheme from the resolved surface rather than from a class name or media query, so it\n * stays correct however the application happens to toggle dark mode.\n */\nconst isDarkSurface = (color) => {\n    const parsed = parseColor(color);\n\n    if (!parsed) return false;\n\n    const [r, g, b] = parsed.map((channel) => {\n        const c = channel / 255;\n\n        return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n    });\n\n    return 0.2126 * r + 0.7152 * g + 0.0722 * b < 0.5;\n};\n\nconst parseColor = (value) => {\n    if (!value) return null;\n\n    const hex = value.match(/^#([\\da-f]{3}|[\\da-f]{6})$/i);\n\n    if (hex) {\n        const digits = hex[1].length === 3 ? [...hex[1]].map((d) => d + d) : hex[1].match(/../g);\n\n        return digits.map((d) => parseInt(d, 16));\n    }\n\n    const rgb = value.match(/rgba?\\(([^)]+)\\)/i);\n\n    if (rgb) {\n        return rgb[1]\n            .split(/[,\\s/]+/)\n            .slice(0, 3)\n            .map(Number);\n    }\n\n    return null;\n};\n\nconst withAlpha = (color, alpha) => {\n    const parsed = parseColor(color);\n\n    return parsed ? `rgba(${parsed[0]}, ${parsed[1]}, ${parsed[2]}, ${alpha})` : color;\n};\n\n/**\n * Reads the active theme off the given element and returns the palette plus a Chart.js options\n * skeleton. Returns null when nothing resolves, which is the case in non-browser environments.\n */\nexport function getChartTheme(element, type, datasetCount = 0) {\n    if (typeof window === 'undefined' || !element) return null;\n\n    try {\n        const styles = getComputedStyle(element);\n        const text = resolve(styles, SEMANTIC_TOKENS.text);\n\n        if (!text) return null;\n\n        const textMuted = resolve(styles, SEMANTIC_TOKENS.textMuted) || text;\n        const border = resolve(styles, SEMANTIC_TOKENS.border);\n        const background = resolve(styles, SEMANTIC_TOKENS.background);\n        const scheme = isDarkSurface(background) ? 'dark' : 'light';\n        const fontFamily = styles.fontFamily;\n\n        /*\n         * A slot that cannot be resolved keeps its position and falls back to the light step.\n         * Dropping it instead would shift every later series onto the wrong colour.\n         */\n        const palette = SERIES_TOKENS.map((slot) => resolve(styles, slot[scheme]) || resolve(styles, slot.light) || slot.fallback);\n\n        const options = {\n            plugins: {\n                /*\n                 * A legend is the secondary encoding that keeps series identifiable when a fill\n                 * does not clear contrast against the surface. Small point-style swatches keep it\n                 * from competing with the plot.\n                 */\n                legend: {\n                    /*\n                     * With one series the title or surrounding copy already names it, so a legend\n                     * would repeat a single label. Types coloured per data point always keep it,\n                     * since there the legend carries the identity of each slice.\n                     */\n                    display: datasetCount > 1 || PER_POINT.includes(type),\n                    labels: {\n                        color: text,\n                        font: { family: fontFamily, size: 12 },\n                        usePointStyle: true,\n                        pointStyle: 'circle',\n                        boxWidth: 8,\n                        boxHeight: 8,\n                        padding: 16\n                    }\n                },\n                tooltip: {\n                    titleColor: text,\n                    bodyColor: textMuted,\n                    backgroundColor: background,\n                    borderColor: border,\n                    borderWidth: 1,\n                    titleFont: { family: fontFamily, size: 12, weight: 600 },\n                    bodyFont: { family: fontFamily, size: 12 },\n                    padding: 12,\n                    cornerRadius: 6,\n                    boxPadding: 6,\n                    usePointStyle: true\n                }\n            }\n        };\n\n        const scales = getScales(type, { textMuted, border, fontFamily });\n\n        if (scales) options.scales = scales;\n\n        return { scheme, palette, text, textMuted, border, options };\n    } catch {\n        /*\n         * Theming is an enhancement, so a token that cannot be resolved must never stop the\n         * chart from rendering. Fall back to Chart.js defaults instead.\n         */\n        return null;\n    }\n}\n\n/*\n * Scale shape is per chart type. Radial types carry a single `r` scale and the circular types\n * have no scales at all, so a cartesian x/y pair would draw axes that do not belong there.\n */\nconst CARTESIAN = ['bar', 'line', 'scatter', 'bubble'];\nconst RADIAL = ['radar', 'polarArea'];\nconst PER_POINT = ['pie', 'doughnut', 'polarArea'];\n\nfunction getScales(type, { textMuted, border, fontFamily }) {\n    const ticks = { color: textMuted, font: { family: fontFamily, size: 12 }, padding: 8 };\n\n    if (CARTESIAN.includes(type)) {\n        /*\n         * Grid and axes stay recessive so the data reads first. Only the value axis keeps its\n         * lines: a grid in both directions boxes the plot in without adding information.\n         */\n        return {\n            x: {\n                ticks,\n                grid: { display: false },\n                border: { display: false }\n            },\n            y: {\n                ticks,\n                grid: { color: border, drawTicks: false },\n                border: { display: false }\n            }\n        };\n    }\n\n    if (RADIAL.includes(type)) {\n        return {\n            r: {\n                ticks: { ...ticks, backdropColor: 'transparent', showLabelBackdrop: false },\n                grid: { color: border },\n                angleLines: { color: border },\n                pointLabels: { color: textMuted, font: { family: fontFamily, size: 12 } }\n            }\n        };\n    }\n\n    return null;\n}\n\n/**\n * Applies palette slots to any dataset that has not set its own colours. Radial types read their\n * colours per data point rather than per dataset, so they receive an array instead of a scalar.\n */\nexport function applyPalette(data, type, palette) {\n    if (!data || !Array.isArray(data.datasets) || !palette.length) return data;\n\n    const perPoint = PER_POINT.includes(type);\n\n    return {\n        ...data,\n        datasets: data.datasets.map((dataset, index) => {\n            const next = { ...dataset };\n            const color = palette[index % palette.length];\n\n            const set = (key, value) => {\n                if (next[key] === undefined) next[key] = value;\n            };\n\n            if (perPoint) {\n                set(\n                    'backgroundColor',\n                    (dataset.data || []).map((_, i) => palette[i % palette.length])\n                );\n                /*\n                 * A ring in the surface colour separates adjacent slices without a visible stroke.\n                 */\n                set('borderColor', 'transparent');\n                set('borderWidth', 2);\n\n                return next;\n            }\n\n            const filled = dataset.fill || type === 'radar';\n\n            set('backgroundColor', filled ? withAlpha(color, 0.2) : color);\n            set('borderColor', color);\n\n            if (type === 'bar') {\n                // rounded at the data end, flat where the bar meets the baseline\n                set('borderRadius', 4);\n                set('borderSkipped', 'start');\n                set('maxBarThickness', 48);\n\n                return next;\n            }\n\n            if (type === 'bubble') {\n                /*\n                 * Bubble radius comes from the r value of each point, so it must not be overridden.\n                 */\n                set('backgroundColor', withAlpha(color, 0.6));\n                set('borderWidth', 1);\n\n                return next;\n            }\n\n            if (type === 'scatter') {\n                /*\n                 * The points are the whole chart here, so unlike a line they stay visible.\n                 */\n                set('pointRadius', 5);\n                set('pointHoverRadius', 7);\n                set('pointBackgroundColor', color);\n                set('pointBorderColor', color);\n\n                return next;\n            }\n\n            set('borderWidth', 2);\n            /*\n             * On a line the points stay hidden until hover so a dense series reads as a line, but\n             * the hit area is kept well above the mark size so they remain easy to target.\n             */\n            set('pointRadius', 0);\n            set('pointHoverRadius', 4);\n            set('pointHitRadius', 12);\n            set('pointBackgroundColor', color);\n            set('pointBorderColor', color);\n\n            return next;\n        })\n    };\n}\n\n/**\n * Merges token defaults underneath user supplied options. Anything the user sets wins, including\n * a value nested several levels down, so existing configurations keep working unchanged.\n */\nexport function mergeOptions(defaults, options) {\n    if (!options) return defaults;\n    if (!defaults) return options;\n\n    const merged = { ...defaults };\n\n    for (const key of Object.keys(options)) {\n        const value = options[key];\n        const base = defaults[key];\n        const mergeable = value && base && typeof value === 'object' && typeof base === 'object' && !Array.isArray(value) && !Array.isArray(base);\n\n        merged[key] = mergeable ? mergeOptions(base, value) : value;\n    }\n\n    return merged;\n}\n","<template>\n    <div :class=\"cx('root')\" :style=\"sx('root')\" v-bind=\"ptmi('root')\">\n        <canvas ref=\"canvas\" :width=\"width\" :height=\"height\" @click=\"onCanvasClick($event)\" v-bind=\"{ ...canvasProps, ...ptm('canvas') }\"></canvas>\n    </div>\n</template>\n\n<script>\nimport { ThemeService } from '@openuxkit/styled';\nimport BaseChart from './BaseChart.vue';\nimport { applyPalette, getChartTheme, mergeOptions } from './utils/ChartTheme';\n\nexport default {\n    name: 'Chart',\n    extends: BaseChart,\n    inheritAttrs: false,\n    emits: ['select', 'loaded'],\n    chart: null,\n    isDestroyed: false,\n    themeChangeListener: null,\n    themeObserver: null,\n    watch: {\n        /*\n         * Use deep watch to enable triggering watch for changes within structure\n         * otherwise the entire data object needs to be replaced to trigger watch\n         */\n        data: {\n            handler() {\n                this.syncChart();\n            },\n            deep: true\n        },\n        type() {\n            this.reinit();\n        },\n        options: {\n            handler() {\n                this.syncChart();\n            },\n            deep: true\n        },\n        themed() {\n            this.unbindThemeListeners();\n            this.bindThemeListeners();\n            this.syncChart();\n        }\n    },\n    mounted() {\n        this.initChart();\n        this.bindThemeListeners();\n    },\n    beforeUnmount() {\n        this.isDestroyed = true;\n        this.unbindThemeListeners();\n        this.destroyChart();\n    },\n    methods: {\n        initChart() {\n            import('chart.js/auto')\n                .then((module) => {\n                    this.destroyChart();\n\n                    /*\n                     * The import is async, so the component may already be unmounted by the time it resolves.\n                     * Creating the chart here would leave an instance attached to a detached canvas.\n                     */\n                    if (this.isDestroyed) {\n                        return;\n                    }\n\n                    if (module && module.default) {\n                        const { data, options } = this.resolveConfig();\n\n                        this.chart = new module.default(this.$refs.canvas, {\n                            type: this.type,\n                            data,\n                            options,\n                            plugins: this.plugins\n                        });\n                    }\n\n                    this.$emit('loaded', this.chart);\n                })\n                .catch((error) => {\n                    console.error('[OpenVue] Chart requires chart.js to be installed. Run \"npm install chart.js\" to use this component.', error);\n                });\n        },\n        resolveConfig() {\n            const theme = this.themed ? getChartTheme(this.$el, this.type, this.data?.datasets?.length ?? 0) : null;\n\n            return {\n                data: theme ? applyPalette(this.data, this.type, theme.palette) : this.data,\n                options: theme ? mergeOptions(theme.options, this.options) : this.options\n            };\n        },\n        syncChart() {\n            if (!this.chart) {\n                return;\n            }\n\n            const { data, options } = this.resolveConfig();\n\n            /*\n             * Chart.js keeps a reference to the config passed on construction, so replaced data and\n             * options objects have to be reassigned before update() can pick the new values up.\n             */\n            this.chart.data = data;\n            this.chart.options = options;\n            this.chart.update();\n        },\n        bindThemeListeners() {\n            if (!this.themed || typeof window === 'undefined') {\n                return;\n            }\n\n            this.themeChangeListener = () => this.syncChart();\n            ThemeService.on('theme:change', this.themeChangeListener);\n\n            /*\n             * A preset swap emits through ThemeService, but toggling dark mode only rewrites CSS\n             * custom properties, which fires nothing. Watching the attributes that scope those\n             * properties covers the toggle however the application implements it.\n             */\n            if (typeof MutationObserver !== 'undefined') {\n                this.themeObserver = new MutationObserver(this.themeChangeListener);\n                this.themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n            }\n        },\n        unbindThemeListeners() {\n            if (this.themeChangeListener) {\n                ThemeService.off('theme:change', this.themeChangeListener);\n                this.themeChangeListener = null;\n            }\n\n            if (this.themeObserver) {\n                this.themeObserver.disconnect();\n                this.themeObserver = null;\n            }\n        },\n        destroyChart() {\n            if (this.chart) {\n                this.chart.destroy();\n                this.chart = null;\n            }\n        },\n        getCanvas() {\n            return this.$refs.canvas;\n        },\n        getChart() {\n            return this.chart;\n        },\n        getBase64Image() {\n            return this.chart.toBase64Image();\n        },\n        refresh() {\n            if (this.chart) {\n                this.chart.update();\n            }\n        },\n        reinit() {\n            this.initChart();\n        },\n        onCanvasClick(event) {\n            if (this.chart) {\n                const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);\n                const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);\n\n                if (element && element[0] && dataset) {\n                    this.$emit('select', { originalEvent: event, element: element[0], dataset: dataset });\n                }\n            }\n        }\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" :style=\"sx('root')\" v-bind=\"ptmi('root')\">\n        <canvas ref=\"canvas\" :width=\"width\" :height=\"height\" @click=\"onCanvasClick($event)\" v-bind=\"{ ...canvasProps, ...ptm('canvas') }\"></canvas>\n    </div>\n</template>\n\n<script>\nimport { ThemeService } from '@openuxkit/styled';\nimport BaseChart from './BaseChart.vue';\nimport { applyPalette, getChartTheme, mergeOptions } from './utils/ChartTheme';\n\nexport default {\n    name: 'Chart',\n    extends: BaseChart,\n    inheritAttrs: false,\n    emits: ['select', 'loaded'],\n    chart: null,\n    isDestroyed: false,\n    themeChangeListener: null,\n    themeObserver: null,\n    watch: {\n        /*\n         * Use deep watch to enable triggering watch for changes within structure\n         * otherwise the entire data object needs to be replaced to trigger watch\n         */\n        data: {\n            handler() {\n                this.syncChart();\n            },\n            deep: true\n        },\n        type() {\n            this.reinit();\n        },\n        options: {\n            handler() {\n                this.syncChart();\n            },\n            deep: true\n        },\n        themed() {\n            this.unbindThemeListeners();\n            this.bindThemeListeners();\n            this.syncChart();\n        }\n    },\n    mounted() {\n        this.initChart();\n        this.bindThemeListeners();\n    },\n    beforeUnmount() {\n        this.isDestroyed = true;\n        this.unbindThemeListeners();\n        this.destroyChart();\n    },\n    methods: {\n        initChart() {\n            import('chart.js/auto')\n                .then((module) => {\n                    this.destroyChart();\n\n                    /*\n                     * The import is async, so the component may already be unmounted by the time it resolves.\n                     * Creating the chart here would leave an instance attached to a detached canvas.\n                     */\n                    if (this.isDestroyed) {\n                        return;\n                    }\n\n                    if (module && module.default) {\n                        const { data, options } = this.resolveConfig();\n\n                        this.chart = new module.default(this.$refs.canvas, {\n                            type: this.type,\n                            data,\n                            options,\n                            plugins: this.plugins\n                        });\n                    }\n\n                    this.$emit('loaded', this.chart);\n                })\n                .catch((error) => {\n                    console.error('[OpenVue] Chart requires chart.js to be installed. Run \"npm install chart.js\" to use this component.', error);\n                });\n        },\n        resolveConfig() {\n            const theme = this.themed ? getChartTheme(this.$el, this.type, this.data?.datasets?.length ?? 0) : null;\n\n            return {\n                data: theme ? applyPalette(this.data, this.type, theme.palette) : this.data,\n                options: theme ? mergeOptions(theme.options, this.options) : this.options\n            };\n        },\n        syncChart() {\n            if (!this.chart) {\n                return;\n            }\n\n            const { data, options } = this.resolveConfig();\n\n            /*\n             * Chart.js keeps a reference to the config passed on construction, so replaced data and\n             * options objects have to be reassigned before update() can pick the new values up.\n             */\n            this.chart.data = data;\n            this.chart.options = options;\n            this.chart.update();\n        },\n        bindThemeListeners() {\n            if (!this.themed || typeof window === 'undefined') {\n                return;\n            }\n\n            this.themeChangeListener = () => this.syncChart();\n            ThemeService.on('theme:change', this.themeChangeListener);\n\n            /*\n             * A preset swap emits through ThemeService, but toggling dark mode only rewrites CSS\n             * custom properties, which fires nothing. Watching the attributes that scope those\n             * properties covers the toggle however the application implements it.\n             */\n            if (typeof MutationObserver !== 'undefined') {\n                this.themeObserver = new MutationObserver(this.themeChangeListener);\n                this.themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n            }\n        },\n        unbindThemeListeners() {\n            if (this.themeChangeListener) {\n                ThemeService.off('theme:change', this.themeChangeListener);\n                this.themeChangeListener = null;\n            }\n\n            if (this.themeObserver) {\n                this.themeObserver.disconnect();\n                this.themeObserver = null;\n            }\n        },\n        destroyChart() {\n            if (this.chart) {\n                this.chart.destroy();\n                this.chart = null;\n            }\n        },\n        getCanvas() {\n            return this.$refs.canvas;\n        },\n        getChart() {\n            return this.chart;\n        },\n        getBase64Image() {\n            return this.chart.toBase64Image();\n        },\n        refresh() {\n            if (this.chart) {\n                this.chart.update();\n            }\n        },\n        reinit() {\n            this.initChart();\n        },\n        onCanvasClick(event) {\n            if (this.chart) {\n                const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);\n                const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);\n\n                if (element && element[0] && dataset) {\n                    this.$emit('select', { originalEvent: event, element: element[0], dataset: dataset });\n                }\n            }\n        }\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","type","String","data","options","plugins","width","Number","height","canvasProps","themed","Boolean","style","ChartStyle","provide","$pcChart","$parentInstance","SERIES_TOKENS","light","dark","fallback","SEMANTIC_TOKENS","text","textMuted","border","background","resolve","styles","token","getPropertyValue","$dt","trim","isDarkSurface","color","parsed","parseColor","_parsed$map","map","channel","c","Math","pow","_parsed$map2","_slicedToArray","r","g","b","value","hex","match","digits","length","_toConsumableArray","d","parseInt","rgb","split","slice","withAlpha","alpha","concat","getChartTheme","element","datasetCount","arguments","undefined","window","getComputedStyle","scheme","fontFamily","palette","slot","legend","display","PER_POINT","includes","labels","font","family","size","usePointStyle","pointStyle","boxWidth","boxHeight","padding","tooltip","titleColor","bodyColor","backgroundColor","borderColor","borderWidth","titleFont","weight","bodyFont","cornerRadius","boxPadding","scales","getScales","_unused","CARTESIAN","RADIAL","_ref","ticks","x","grid","y","drawTicks","_objectSpread","backdropColor","showLabelBackdrop","angleLines","pointLabels","applyPalette","Array","isArray","datasets","perPoint","dataset","index","next","set","key","_","i","filled","fill","mergeOptions","defaults","merged","_i","_Object$keys","Object","keys","base","mergeable","_typeof","BaseChart","inheritAttrs","emits","chart","isDestroyed","themeChangeListener","themeObserver","watch","handler","syncChart","deep","reinit","unbindThemeListeners","bindThemeListeners","mounted","initChart","beforeUnmount","destroyChart","methods","_this","then","module","_this$resolveConfig","resolveConfig","$refs","canvas","$emit","error","console","_this$data$datasets$l","_this$data","theme","$el","_this$resolveConfig2","update","_this2","ThemeService","on","MutationObserver","observe","document","documentElement","attributes","attributeFilter","off","disconnect","destroy","getCanvas","getChart","getBase64Image","toBase64Image","refresh","onCanvasClick","event","getElementsAtEventForMode","intersect","originalEvent","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","sx","ptmi","_createElementVNode","ref","onClick","_cache","$event","$options","ptm","_hoisted_1"],"mappings":"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"}