{"version":3,"file":"static/chunks/5718.e4f54b13846b1dcb.js","mappings":"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","sources":["webpack://_N_E/./public/img/legend-check.svg","webpack://_N_E/./components/ProductDiagram/ProductDiagram.js","webpack://_N_E/./components/ProductDiagram/index.js","webpack://_N_E/./components/ProductDiagram/ProductDiagram.module.scss"],"sourcesContent":["var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgLegendCheck = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: 9.75,\n  height: 8.461,\n  fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  stroke: \"#000\",\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\",\n  strokeWidth: 1.5,\n  d: \"M9 .75 4.617 7.71.75 3.587\"\n})));\nexport default SvgLegendCheck;","import React, { useEffect, useState } from 'react';\nimport { defaults } from 'chart.js';\nimport { Line } from 'react-chartjs-2';\nimport { useTranslation } from 'next-i18next';\nimport Check from '../../public/img/legend-check.svg';\nimport classNames from 'classnames';\nimport debounce from 'debounce';\nimport Papa from 'papaparse';\nimport PropTypes from 'prop-types';\nimport 'chart.js/auto';\n\nimport styles from './ProductDiagram.module.scss';\n\nconst ProductDiagram = ({ title = '', sheets = [], note = '' }) => {\n    // // Bypass for SSR\n    if (typeof window === 'undefined') {\n        return null;\n    }\n\n    defaults.font.family = 'Inter, sans-serif';\n    const { t } = useTranslation();\n    const palette = [\n        'rgba(0, 91, 117, 1)',\n        'rgba(254, 202, 1, 1)',\n        'rgba(15, 177, 193, 1)',\n        'rgba(237, 111, 136, 1)',\n        'rgba(29, 172, 44, 1)',\n    ];\n    const unit = 'Öre/kWh';\n    const [chartData, setChartData] = useState({\n        labels: [],\n        datasets: [],\n    });\n    const [mounted, setMounted] = useState(false);\n    const [sheet, setSheet] = useState(\n        sheets.length > 0 ? sheets[0].file.url : null\n    );\n    const [downloadSheet, setDownloadSheet] = useState(\n        sheets.length > 0 ? sheets[0].downloadFile.url : null\n    );\n    const [displayYears, setDisplayYears] = useState(2);\n    const [addDiscount, setAddDiscount] = useState(false);\n    const [hasDiscount, setHasDiscount] = useState(false);\n    const [minMax, setMinMax] = useState([99999, 0]);\n    const [activeDatasets, setActiveDatasets] = useState([true, true]);\n    const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n    useEffect(() => {\n        setMounted(true);\n        getChartData();\n\n        window.addEventListener('resize', handleResize);\n\n        // Clean up the event listener when the component unmounts\n        return () => {\n            window.removeEventListener('resize', handleResize);\n        };\n    }, []);\n\n    useEffect(() => {\n        getChartData();\n    }, [displayYears, sheet, addDiscount, activeDatasets, windowWidth]);\n\n    const handleResize = debounce(\n        () => setWindowWidth(window.innerWidth),\n        1000\n    );\n\n    const handleLegendClick = (datasetIndex) => {\n        setActiveDatasets((prevActiveDatasets) => {\n            const updatedActiveDatasets = [...prevActiveDatasets];\n            updatedActiveDatasets[datasetIndex] =\n                !updatedActiveDatasets[datasetIndex];\n            return updatedActiveDatasets;\n        });\n    };\n\n    const updateMinMax = (values) => {\n        setMinMax((prevMinMax) => {\n            const [currentMinValue, currentMaxValue] = prevMinMax;\n\n            const newMinValue = Math.min(currentMinValue, ...values);\n            const newMaxValue = Math.max(currentMaxValue, ...values);\n\n            return [newMinValue, newMaxValue];\n        });\n    };\n\n    const getChartData = () => {\n        Papa.parse(`${sheet}`, {\n            download: true,\n            header: true,\n            skipEmptyLines: true,\n            complete: (result) => {\n                const dataByYear = result.data.reduce((acc, item) => {\n                    const year = item.Year;\n\n                    if (!acc[year]) {\n                        acc[year] = [];\n                    }\n\n                    acc[year].push(item);\n                    return acc;\n                }, {});\n\n                const keys = Object.keys(dataByYear);\n                const firstKey = keys[0];\n                const lastKey = keys[keys.length - 1];\n                const datasets = [];\n                let lastDisplayYears = {};\n                let labels = [];\n\n                if (displayYears === 2) {\n                    lastDisplayYears = Object.fromEntries(\n                        Object.entries(dataByYear).slice(-(displayYears + 1))\n                    );\n                    const months = Object.keys(dataByYear[firstKey][0]).slice(\n                        2,\n                        -1\n                    );\n                    let values = {};\n                    let discount = false;\n\n                    for (const year in lastDisplayYears) {\n                        const monthsAndYear = months.map(\n                            (item) => `${item} ${year}`\n                        );\n                        labels = [...labels, ...monthsAndYear];\n\n                        const yearData = dataByYear[year];\n\n                        yearData.forEach((item) => {\n                            const label = item[''];\n                            discount = item.Discount;\n                            setHasDiscount(Boolean(discount));\n\n                            if (!values[label]) {\n                                values[label] = [];\n                            }\n\n                            values[label].push(\n                                ...Object.values(item).slice(2, -1)\n                            );\n                        });\n                    }\n\n                    let emptyPos = 36;\n\n                    for (const key in values) {\n                        const valuesArray = values[key];\n                        emptyPos = valuesArray.findIndex(\n                            (value) => value === ''\n                        );\n                        emptyPos = emptyPos === -1 ? 36 : emptyPos;\n                    }\n\n                    labels = labels.slice(emptyPos - 24, emptyPos);\n\n                    for (const key in values) {\n                        const valuesArray = values[key];\n                        let finalValues = valuesArray\n                            .slice(emptyPos - 24, emptyPos)\n                            .map((item) => parseFloat(item));\n\n                        if (addDiscount && discount) {\n                            finalValues.forEach((value, index) => {\n                                finalValues[index] = value - discount;\n                            });\n                        }\n\n                        values[key] = finalValues;\n\n                        datasets.push({\n                            label: `${key}`,\n                            data: values[key],\n                        });\n                    }\n                } else {\n                    const availableYearsLength = Object.keys(dataByYear).length;\n                    const averagePerYear = {};\n                    labels = keys.slice(\n                        availableYearsLength - (displayYears + 1),\n                        availableYearsLength - 1\n                    );\n                    lastDisplayYears = Object.fromEntries(\n                        Object.entries(dataByYear).slice(\n                            availableYearsLength - (displayYears + 1),\n                            availableYearsLength - 1\n                        )\n                    );\n\n                    for (const year in lastDisplayYears) {\n                        const yearData = dataByYear[year];\n\n                        yearData.forEach((item) => {\n                            const label = item[''];\n                            const values = Object.values(item).slice(2, -1);\n                            const discount = item.Discount;\n                            updateMinMax(values);\n                            setHasDiscount(Boolean(discount));\n\n                            if (addDiscount && discount) {\n                                values.forEach((value, index) => {\n                                    values[index] = value - discount;\n                                });\n                            }\n\n                            const average =\n                                values.reduce(\n                                    (sum, value) => sum + parseFloat(value),\n                                    0\n                                ) / values.length;\n\n                            if (!averagePerYear[label]) {\n                                averagePerYear[label] = [];\n                            }\n\n                            averagePerYear[label].push(average.toFixed(2));\n                        });\n                    }\n\n                    for (const label in averagePerYear) {\n                        datasets.push({\n                            label: `${label}`,\n                            data: averagePerYear[label],\n                        });\n                    }\n                }\n\n                setChartData({\n                    labels,\n                    datasets: datasets.map((item, index) => ({\n                        ...item,\n                        backgroundColor: activeDatasets[index]\n                            ? palette[index]\n                            : palette[index].replace(/[^,]+(?=\\))/, '0.1'),\n                        borderColor: activeDatasets[index]\n                            ? palette[index]\n                            : palette[index].replace(/[^,]+(?=\\))/, '0.1'),\n                        borderRadius: 5,\n                        maxBarThickness: 70,\n                        pointHoverRadius: 10,\n                        pointRadius: windowWidth < 768 ? 4 : 6,\n                        dimmed: false,\n                    })),\n                });\n            },\n        });\n    };\n\n    // const handleSetSheet = (e) => {\n    //     setSheet(e.target.value);\n    // };\n\n    const handleSetSheet = (e) => {\n        const sheet = sheets[e.target.value].file.url;\n        const downloadSheet = sheets[e.target.value].downloadFile.url;\n        setSheet(sheet);\n        setDownloadSheet(downloadSheet);\n    };\n\n    const handleSetDiscount = (e) => {\n        setAddDiscount(parseInt(e.target.value));\n    };\n\n    const chartOptions = {\n        maintainAspectRatio: false,\n        scales: {\n            x: {\n                grid: {\n                    display: false,\n                },\n                ticks: {\n                    color: '#005b75',\n                    maxTicksLimit: 12,\n                },\n            },\n            y: {\n                ticks: {\n                    callback: function (value, index) {\n                        if (index === 0) return 'Öre/kWh';\n                        return value;\n                    },\n                    color: '#005b75',\n                    padding: 15,\n                },\n                // suggestedMax: minMax[1],\n            },\n        },\n        plugins: {\n            legend: { display: false },\n            tooltip: {\n                mode: 'index',\n                intersect: true,\n                position: 'nearest',\n                backgroundColor: '#ffffff',\n                bodyColor: '#005b75',\n                borderColor: '#005b75',\n                borderWidth: 1,\n                boxPadding: 8,\n                padding: 10,\n                pointStyle: 'circle',\n                titleColor: '#005b75',\n                titleFont: {\n                    size: 16,\n                    weight: 'bold',\n                },\n                usePointStyle: true,\n                callbacks: {\n                    label: ({ dataset, formattedValue }) => {\n                        return `${dataset.label}: ${formattedValue} ${unit}`;\n                    },\n                    afterBody: (data) => {\n                        return `\\n Diff: ${((Math.abs(data[0].raw - data[1].raw) * 100) / 100).toFixed(2)} Öre/kWh`;\n                    },\n                },\n            },\n        },\n    };\n\n    return (\n        mounted && (\n            <div className={styles['ProductDiagram']}>\n                {chartData ? (\n                    <div className={styles['ProductDiagram__Container']}>\n                        {!!title && (\n                            <h2 className={styles['ProductDiagram__Title']}>\n                                {title}\n                            </h2>\n                        )}\n                        <div className={styles['ProductDiagram__Filters']}>\n                            <span\n                                className={[\n                                    styles['ProductDiagram__Buttons'],\n                                    styles[\n                                        'ProductDiagram__Buttons--AlignLeft'\n                                    ],\n                                ].join(' ')}>\n                                <button\n                                    className={classNames(\n                                        styles['ProductDiagram__Button'],\n                                        {\n                                            [styles[\n                                                'ProductDiagram__Button--Active'\n                                            ]]: displayYears === 2,\n                                        }\n                                    )}\n                                    onClick={() => setDisplayYears(2)}>\n                                    2 {t('ProductDiagram.years')}\n                                </button>\n                                <button\n                                    className={classNames(\n                                        styles['ProductDiagram__Button'],\n                                        {\n                                            [styles[\n                                                'ProductDiagram__Button--Active'\n                                            ]]: displayYears === 6,\n                                        }\n                                    )}\n                                    onClick={() => setDisplayYears(6)}>\n                                    6 {t('ProductDiagram.years')}\n                                </button>\n                            </span>\n                            <span\n                                className={\n                                    styles['ProductDiagram__FiltersRight']\n                                }>\n                                {hasDiscount && (\n                                    <>\n                                        <span\n                                            className={classNames([\n                                                styles[\n                                                    'ProductDiagram__Buttons'\n                                                ],\n                                                styles[\n                                                    'ProductDiagram__Buttons--NoMobile'\n                                                ],\n                                            ])}>\n                                            <button\n                                                className={classNames(\n                                                    styles[\n                                                        'ProductDiagram__Button'\n                                                    ],\n                                                    {\n                                                        [styles[\n                                                            'ProductDiagram__Button--Active'\n                                                        ]]: addDiscount,\n                                                    }\n                                                )}\n                                                onClick={() =>\n                                                    setAddDiscount(true)\n                                                }>\n                                                {t(\n                                                    'ProductDiagram.withDiscount'\n                                                )}\n                                            </button>\n                                            <button\n                                                className={classNames(\n                                                    styles[\n                                                        'ProductDiagram__Button'\n                                                    ],\n                                                    {\n                                                        [styles[\n                                                            'ProductDiagram__Button--Active'\n                                                        ]]: !addDiscount,\n                                                    }\n                                                )}\n                                                onClick={() =>\n                                                    setAddDiscount(false)\n                                                }>\n                                                {t(\n                                                    'ProductDiagram.withoutDiscount'\n                                                )}\n                                            </button>\n                                        </span>\n                                        <span\n                                            className={classNames([\n                                                styles[\n                                                    'ProductDiagram__Buttons'\n                                                ],\n                                                styles[\n                                                    'ProductDiagram__Buttons--NoDesktop'\n                                                ],\n                                            ])}>\n                                            <label className={styles['ProductDiagram__SelectLabel']} htmlFor=\"discount\">\n                                                {t('ProductDiagram.chooseDiscount')}\n                                            </label>\n                                            <select\n                                                id=\"discount\"\n                                                className={\n                                                    styles[\n                                                        'ProductDiagram__Select'\n                                                    ]\n                                                }\n                                                onChange={(e) =>\n                                                    handleSetDiscount(e)\n                                                }>\n                                                <option\n                                                    key=\"discount_0\"\n                                                    value={0}>\n                                                    {t(\n                                                        'ProductDiagram.withoutDiscount'\n                                                    )}\n                                                </option>\n                                                <option\n                                                    key=\"discount_1\"\n                                                    value={1}>\n                                                    {t(\n                                                        'ProductDiagram.withDiscount'\n                                                    )}\n                                                </option>\n                                            </select>\n                                        </span>\n                                    </>\n                                )}\n                                <span\n                                    className={\n                                        styles['ProductDiagram__Buttons']\n                                    }>\n                                    <label className={styles['ProductDiagram__SelectLabel']} htmlFor=\"area\">\n                                        {t('ProductDiagram.chooseArea')}\n                                    </label>\n                                    <select\n                                        className={\n                                            styles['ProductDiagram__Select']\n                                        }\n                                        id=\"area\"\n                                        onChange={(e) => handleSetSheet(e)}>\n                                        {sheets.map((item, index) => (\n                                            <option key={index} value={index}>\n                                                {item.file.title}\n                                            </option>\n                                        ))}\n                                    </select>\n                                </span>\n                                <span\n                                    className={classNames([\n                                        styles['ProductDiagram__Buttons'],\n                                        styles[\n                                            'ProductDiagram__Buttons--NoMobile'\n                                        ],\n                                    ])}>\n                                    <a\n                                        className={\n                                            styles['ProductDiagram__Download']\n                                        }\n                                        href={\n                                            downloadSheet\n                                                ? downloadSheet\n                                                : sheet\n                                        }\n                                        download>\n                                        <span className=\"sr-only\">\n                                            {t('ProductDiagram.download')}\n                                        </span>\n                                    </a>\n                                </span>\n                            </span>\n                        </div>\n                        <div className={styles['ProductDiagram__Chart']}>\n                            <Line options={chartOptions} data={chartData} />\n                        </div>\n                        <span className={styles['ProductDiagram__Legend']}>\n                            {chartData.datasets.map((item, index) => (\n                                <span\n                                    role=\"button\"\n                                    className={classNames(\n                                        styles['ProductDiagram__LegendButton'],\n                                        {\n                                            [styles[\n                                                'ProductDiagram__LegendButton--Dark'\n                                            ]]: index === 0,\n                                            [styles[\n                                                'ProductDiagram__LegendButton--Active'\n                                            ]]: activeDatasets[index],\n                                        }\n                                    )}\n                                    key={index}\n                                    onClick={() => handleLegendClick(index)}\n                                    style={{ '--color': palette[index] }}>\n                                    <span\n                                        className={\n                                            styles[\n                                                'ProductDiagram__LegendButtonCheck'\n                                            ]\n                                        }>\n                                        <Check />\n                                    </span>\n                                    {item.label}\n                                </span>\n                            ))}\n                        </span>\n                        <p className={styles['ProductDiagram__Note']}>{note}</p>\n                    </div>\n                ) : (\n                    <div>Loading...</div>\n                )}\n            </div>\n        )\n    );\n};\n\nProductDiagram.propTypes = {\n    title: PropTypes.string,\n    sheets: PropTypes.array,\n};\n\nexport default ProductDiagram;\n","import ProductDiagram from './ProductDiagram';\n\nexport default ProductDiagram;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ProductDiagram\":\"ProductDiagram_ProductDiagram__1tWYu\",\"ProductDiagram__Title\":\"ProductDiagram_ProductDiagram__Title__3vAcE\",\"ProductDiagram__Container\":\"ProductDiagram_ProductDiagram__Container__jrNnR\",\"ProductDiagram__Filters\":\"ProductDiagram_ProductDiagram__Filters__tT7tJ\",\"ProductDiagram__FiltersRight\":\"ProductDiagram_ProductDiagram__FiltersRight__NYupX\",\"ProductDiagram__Buttons\":\"ProductDiagram_ProductDiagram__Buttons__HcYCD\",\"ProductDiagram__Buttons--AlignLeft\":\"ProductDiagram_ProductDiagram__Buttons--AlignLeft__9DZzE\",\"ProductDiagram__Buttons--NoMobile\":\"ProductDiagram_ProductDiagram__Buttons--NoMobile___LoUC\",\"ProductDiagram__Buttons--NoDesktop\":\"ProductDiagram_ProductDiagram__Buttons--NoDesktop__3Vv3j\",\"ProductDiagram__Button\":\"ProductDiagram_ProductDiagram__Button__u3xh3\",\"ProductDiagram__Button--Active\":\"ProductDiagram_ProductDiagram__Button--Active__PTTDa\",\"ProductDiagram__SelectLabel\":\"ProductDiagram_ProductDiagram__SelectLabel__9UDQY\",\"ProductDiagram__Select\":\"ProductDiagram_ProductDiagram__Select__bgj4N\",\"ProductDiagram__Download\":\"ProductDiagram_ProductDiagram__Download___dt6F\",\"ProductDiagram__Legend\":\"ProductDiagram_ProductDiagram__Legend__iRbU6\",\"ProductDiagram__LegendButton\":\"ProductDiagram_ProductDiagram__LegendButton__g4kdh\",\"ProductDiagram__LegendButton--Active\":\"ProductDiagram_ProductDiagram__LegendButton--Active__s800N\",\"ProductDiagram__LegendButton--Dark\":\"ProductDiagram_ProductDiagram__LegendButton--Dark__ka3xO\",\"ProductDiagram__LegendButtonCheck\":\"ProductDiagram_ProductDiagram__LegendButtonCheck__xcyMU\",\"ProductDiagram__Chart\":\"ProductDiagram_ProductDiagram__Chart__lJ5Wa\",\"ProductDiagram__Note\":\"ProductDiagram_ProductDiagram__Note__U1_xU\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","legend_check","props","react","createElement","xmlns","width","height","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","d","ProductDiagram","title","sheets","note","param","defaults","font","family","useTranslation","palette","chartData","setChartData","useState","labels","datasets","mounted","setMounted","sheet","setSheet","file","url","downloadSheet","setDownloadSheet","downloadFile","displayYears","setDisplayYears","addDiscount","setAddDiscount","hasDiscount","setHasDiscount","minMax","setMinMax","activeDatasets","setActiveDatasets","windowWidth","setWindowWidth","window","innerWidth","useEffect","getChartData","addEventListener","handleResize","removeEventListener","debounce","handleLegendClick","updatedActiveDatasets","prevActiveDatasets","datasetIndex","updateMinMax","currentMinValue","currentMaxValue","prevMinMax","Math","min","values","max","Papa","download","header","skipEmptyLines","complete","dataByYear","result","data","reduce","acc","item","year","Year","push","keys","firstKey","lastDisplayYears","fromEntries","entries","slice","months","discount","map","yearData","forEach","label","Boolean","Discount","emptyPos","key","valuesArray","findIndex","value","finalValues","parseFloat","index","availableYearsLength","averagePerYear","average","sum","toFixed","backgroundColor","replace","borderColor","borderRadius","maxBarThickness","pointHoverRadius","pointRadius","dimmed","handleSetSheet","target","handleSetDiscount","parseInt","jsx_runtime","jsx","div","className","styles","jsxs","h2","span","join","button","classNames","onClick","Fragment","htmlFor","select","id","onChange","option","a","href","Line","options","maintainAspectRatio","scales","x","grid","display","ticks","color","maxTicksLimit","y","callback","padding","plugins","legend","tooltip","mode","intersect","position","bodyColor","borderWidth","boxPadding","pointStyle","titleColor","titleFont","size","weight","usePointStyle","callbacks","dataset","formattedValue","afterBody","abs","raw","role","style","Check","p","propTypes","PropTypes","components_ProductDiagram","module","exports"],"sourceRoot":""}