{"version":3,"file":"ironsource-fusion-ui-components-chart-common-base.mjs","sources":["../../../projects/fusion-ui/components/chart/common/base/entities/chart-options.ts","../../../projects/fusion-ui/components/chart/common/base/entities/chart-type.enum.ts","../../../projects/fusion-ui/components/chart/common/base/chart-v4.tooltip.ts","../../../projects/fusion-ui/components/chart/common/base/chart.config.ts","../../../projects/fusion-ui/components/chart/common/base/error-messages.ts","../../../projects/fusion-ui/components/chart/common/base/chart.service.ts","../../../projects/fusion-ui/components/chart/common/base/hoverVerticalLine.plugin.ts","../../../projects/fusion-ui/components/chart/common/base/chart.base.component.ts","../../../projects/fusion-ui/components/chart/common/base/ironsource-fusion-ui-components-chart-common-base.ts"],"sourcesContent":["/*\n * Created on 2020.4.4 By Andy Kononenko (andyk@ironsrc.com)\n */\n\nexport interface ChartBaseDatasetOptions {\n    colorSettings: string[];\n    fillOpacity: number; // in %\n    seriesToShow: number;\n    dateFormat?: string; // default MMM dd, yyyy\n    lineOptions: ChartLineOptions;\n    barOptions: ChartBarOptions;\n    pieOptions: ChartPieOptions;\n}\ninterface ChartLineOptions {\n    fill?: boolean;\n    hidden?: boolean;\n    tension?: number;\n    borderWidth?: number;\n    pointBorderColor?: string;\n    pointBackgroundColor?: string;\n    pointHoverBackgroundColor?: string;\n}\ninterface ChartBarOptions {\n    borderRadius?: number;\n    borderWidth: number;\n    backgroundColor: string[];\n    borderColor: string[];\n}\n\ninterface ChartPieOptions {\n    cutout?: number | string;\n    borderWidth?: number;\n    rotation?: number;\n    hoverBorderWidth?: number;\n    backgroundColor: string[];\n}\n","export enum ChartType {\n    Line = 'line',\n    StackedLine = 'stackedLine',\n    Bar = 'bar',\n    StackedBar = 'stackedBar',\n    Doughnut = 'doughnut',\n    Pie = 'pie'\n}\n","const FLAG_BASE_URL = 'https://fusion.ironsrc.net/assets/flags/v4/';\nconst ICONS_BASE_URL = 'https://fusion.ironsrc.net/assets/icons/';\n\nconst COUNTRIES = {\n    Afghanistan: 'af',\n    'Aland Islands': 'ax',\n    Albania: 'al',\n    Algeria: 'dz',\n    'American Samoa': 'as',\n    Andorra: 'ad',\n    Angola: 'ao',\n    Anguilla: 'ai',\n    Antarctica: 'aq',\n    'Antigua and Barbuda': 'ag',\n    Argentina: 'ar',\n    Armenia: 'am',\n    Aruba: 'aw',\n    Australia: 'au',\n    Austria: 'at',\n    Azerbaijan: 'az',\n    Bahamas: 'bs',\n    Bahrain: 'bh',\n    Bangladesh: 'bd',\n    Barbados: 'bb',\n    Belarus: 'by',\n    Belgium: 'be',\n    Belize: 'bz',\n    Benin: 'bj',\n    Bermuda: 'bm',\n    Bhutan: 'bt',\n    Bolivia: 'bo',\n    'Bosnia and Herzegovina': 'ba',\n    Botswana: 'bw',\n    'Bouvet Island': 'bv',\n    Brazil: 'br',\n    'British Indian Ocean Territory': 'io',\n    'Brunei Darussalam': 'bn',\n    Bulgaria: 'bg',\n    'Burkina Faso': 'bf',\n    Burundi: 'bi',\n    Cambodia: 'kh',\n    Cameroon: 'cm',\n    Canada: 'ca',\n    'Cape Verde': 'cv',\n    'Caribbean Netherlands': 'bq',\n    'Cayman Islands': 'ky',\n    'Central African Republic': 'cf',\n    Chad: 'td',\n    Chile: 'cl',\n    China: 'cn',\n    'Christmas Island': 'cx',\n    'Cocos (Keeling) Islands': 'cc',\n    Colombia: 'co',\n    Comoros: 'km',\n    Congo: 'cg',\n    'Congo, The Democratic Republic of the': 'cd',\n    'Cook Islands': 'ck',\n    'Costa Rica': 'cr',\n    'Cote D`Ivoire': 'ci',\n    Croatia: 'hr',\n    Cuba: 'cu',\n    Curacao: 'cw',\n    Cyprus: 'cy',\n    'Czech Republic': 'cz',\n    Denmark: 'dk',\n    Djibouti: 'dj',\n    Dominica: 'dm',\n    'Dominican Republic': 'do',\n    'East Timor': 'tl',\n    Ecuador: 'ec',\n    Egypt: 'eg',\n    'El Salvador': 'sv',\n    'Equatorial Guinea': 'gq',\n    Eritrea: 'er',\n    Estonia: 'ee',\n    Ethiopia: 'et',\n    'Falkland Islands (Malvinas)': 'fk',\n    'Faroe Islands': 'fo',\n    Fiji: 'fj',\n    Finland: 'fi',\n    France: 'fr',\n    'French Guiana': 'gf',\n    'French Polynesia': 'pf',\n    'French Southern Territories': 'tf',\n    Gabon: 'ga',\n    Gambia: 'gm',\n    Georgia: 'ge',\n    Germany: 'de',\n    Ghana: 'gh',\n    Gibraltar: 'gi',\n    Greece: 'gr',\n    Greenland: 'gl',\n    Grenada: 'gd',\n    Guadeloupe: 'gp',\n    Guam: 'gu',\n    Guatemala: 'gt',\n    Guernsey: 'gg',\n    Guinea: 'gn',\n    'Guinea-Bissau': 'gw',\n    Guyana: 'gy',\n    Haiti: 'ht',\n    'Heard Island and McDonald Islands': 'hm',\n    'Holy See (Vatican City State)': 'va',\n    Honduras: 'hn',\n    'Hong Kong': 'hk',\n    Hungary: 'hu',\n    Iceland: 'is',\n    India: 'in',\n    Indonesia: 'id',\n    'Iran, Islamic Republic of': 'ir',\n    Iraq: 'iq',\n    Ireland: 'ie',\n    'Isle of Man': 'im',\n    Israel: 'il',\n    Italy: 'it',\n    Jamaica: 'jm',\n    Japan: 'jp',\n    Jersey: 'je',\n    Jordan: 'jo',\n    Kazakhstan: 'kz',\n    Kenya: 'ke',\n    Kiribati: 'ki',\n    'Korea, Democratic People`s Republic of': 'kp',\n    'Korea, Republic of': 'kr',\n    Kosovo: 'xk',\n    Kuwait: 'kw',\n    Kyrgyzstan: 'kg',\n    'Lao People`s Democratic Republic': 'la',\n    Latvia: 'lv',\n    Lebanon: 'lb',\n    Lesotho: 'ls',\n    Liberia: 'lr',\n    Libya: 'ly',\n    Liechtenstein: 'li',\n    Lithuania: 'lt',\n    Luxembourg: 'lu',\n    Macau: 'mo',\n    Macedonia: 'mk',\n    Madagascar: 'mg',\n    Malawi: 'mw',\n    Malaysia: 'my',\n    Maldives: 'mv',\n    Mali: 'ml',\n    Malta: 'mt',\n    'Marshall Islands': 'mh',\n    Martinique: 'mq',\n    Mauritania: 'mr',\n    Mauritius: 'mu',\n    Mayotte: 'yt',\n    Mexico: 'mx',\n    'Micronesia, Federated States of': 'fm',\n    'Moldova, Republic of': 'md',\n    Monaco: 'mc',\n    Mongolia: 'mn',\n    Montenegro: 'me',\n    Montserrat: 'ms',\n    Morocco: 'ma',\n    Mozambique: 'mz',\n    Myanmar: 'mm',\n    Namibia: 'na',\n    Nauru: 'nr',\n    Nepal: 'np',\n    Netherlands: 'nl',\n    'New Caledonia': 'nc',\n    'New Zealand': 'nz',\n    Nicaragua: 'ni',\n    Niger: 'ne',\n    Nigeria: 'ng',\n    Niue: 'nu',\n    'Norfolk Island': 'nf',\n    'Northern Mariana Islands': 'mp',\n    Norway: 'no',\n    Oman: 'om',\n    Pakistan: 'pk',\n    Palau: 'pw',\n    'Palestine, State of': 'ps',\n    Panama: 'pa',\n    'Papua New Guinea': 'pg',\n    Paraguay: 'py',\n    Peru: 'pe',\n    Philippines: 'ph',\n    Pitcairn: 'pn',\n    Poland: 'pl',\n    Portugal: 'pt',\n    'Puerto Rico': 'pr',\n    Qatar: 'qa',\n    Reunion: 're',\n    Romania: 'ro',\n    'Russian Federation': 'ru',\n    Rwanda: 'rw',\n    'Saint Barthelemy': 'bl',\n    'Saint Helena': 'sh',\n    'Saint Kitts and Nevis': 'kn',\n    'Saint Lucia': 'lc',\n    'Saint Martin': 'mf',\n    'Saint Pierre and Miquelon': 'pm',\n    'Saint Vincent and the Grenadines': 'vc',\n    Samoa: 'ws',\n    'San Marino': 'sm',\n    'Sao Tome and Principe': 'st',\n    'Saudi Arabia': 'sa',\n    Senegal: 'sn',\n    Serbia: 'rs',\n    Seychelles: 'sc',\n    'Sierra Leone': 'sl',\n    Singapore: 'sg',\n    'Sint Maarten': 'sx',\n    Slovakia: 'sk',\n    Slovenia: 'si',\n    'Solomon Islands': 'sb',\n    Somalia: 'so',\n    'South Africa': 'za',\n    'South Georgia and the South Sandwich Islands': 'gs',\n    'South Sudan': 'ss',\n    Spain: 'es',\n    'Sri Lanka': 'lk',\n    Sudan: 'sd',\n    Suriname: 'sr',\n    'Svalbard and Jan Mayen': 'sj',\n    Swaziland: 'sz',\n    Sweden: 'se',\n    Switzerland: 'ch',\n    'Syrian Arab Republic': 'sy',\n    Taiwan: 'tw',\n    Tajikistan: 'tj',\n    'Tanzania, United Republic of': 'tz',\n    Thailand: 'th',\n    Togo: 'tg',\n    Tokelau: 'tk',\n    Tonga: 'to',\n    'Trinidad and Tobago': 'tt',\n    Tunisia: 'tn',\n    Turkey: 'tr',\n    Turkmenistan: 'tm',\n    'Turks and Caicos Islands': 'tc',\n    Tuvalu: 'tv',\n    Uganda: 'ug',\n    Ukraine: 'ua',\n    'United Arab Emirates': 'ae',\n    'United Kingdom': 'gb',\n    'United States Minor Outlying Islands': 'um',\n    'United States': 'us',\n    Uruguay: 'uy',\n    Uzbekistan: 'uz',\n    Vanuatu: 'vu',\n    Venezuela: 've',\n    Vietnam: 'vn',\n    'Virgin Islands, British': 'vg',\n    'Virgin Islands, U.S.': 'vi',\n    'Wallis and Futuna': 'wf',\n    'Western Sahara': 'eh',\n    Yemen: 'ye',\n    Zambia: 'zm',\n    Zimbabwe: 'zw'\n};\n\nconst TOOLTIP_ELEMENT_STYLE = `\n  min-width: var(--chart-tooltip-min-width, 120px);\n  max-width: var(--chart-tooltip-max-width);\n  background:white;\n  opacity:1;\n  pointer-events:none;\n  position:absolute;\n  z-index: var(--chart-tooltip-z-index, 1001);\n  padding: 8px;\n  box-shadow: 0px 4px 8px -2px rgba(16, 24, 40, 0.12);\n  border: 1px solid #e4e4e4;\n  border-radius: 6px;\n  transform: translate(-50%, 0);\n  transition: all .1s ease;\n`;\n\nconst WRAPPER_STYLE = `\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 8px\n`;\n\nconst HEADER_ROW_STYLE = `\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-family: Inter;\n    font-size: 13px;\n    font-style: normal;\n    font-weight: 500;\n    line-height: 20px;\n    overflow: hidden;\n    color: var(--text-primary, #202020);\n    text-overflow: ellipsis;\n    white-space: nowrap;\n`;\n\nconst BODY_ROWS_WRAPPER = `\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n`;\n\nconst BODY_ROW_STYLE = `\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-family: Inter;\n    font-size: 13px;\n    font-style: normal;\n    font-weight: 400;\n    line-height: 20px;\n    letter-spacing: -0.039px;\n`;\n\nconst ROUND_INDICATOR_ELEMENT_STYLE = `\n    height:12px;\n    width:12px;\n    display:block;\n    border-radius:2px\n`;\n\nconst BODY_ROW_ICON_STYLE = `\nwidth: 16px;\nheight: 16px;\nbackground-color: var(--action-active, #808080);\n`;\nconst TITLE_ROW_ICON_STYLE = `\nwidth: 16px;\nheight: 16px;\nbackground-color: var(--action-active, #808080);\n`;\nconst BODY_ROW_LABEL_STYLE = `\n    display: block;\n    flex: 1;\n    overflow: hidden;\n    color: var(--text-secondary, #646464);\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    margin-right: 4px;\n`;\n\nconst BODY_ROW_VALUE_STYLE = `\nmargin-left: auto;\ncolor: var(--text-secondary, #646464);\n`;\n\nconst FOOTER_ROW_STYLE = `\n    font-family: Inter;\n    font-size: 13px;\n    font-style: normal;\n    font-weight: 500;\n    line-height: 20px;\n    color: var(--text-primary, #202020);\n    display: flex;\n    gap: 4px;\n`;\n\nfunction getOrCreateTooltip(chart) {\n    let tooltipEl = chart.canvas.parentNode.querySelector('div');\n\n    if (!tooltipEl) {\n        tooltipEl = document.createElement('div');\n        tooltipEl.className = 'fu-chart-tooltip';\n        tooltipEl.style.cssText = TOOLTIP_ELEMENT_STYLE;\n\n        const table = document.createElement('div');\n        table.style.cssText = WRAPPER_STYLE;\n        table.classList.add('fu-chart-tooltip-wrapper');\n\n        tooltipEl.appendChild(table);\n        chart.canvas.parentNode.appendChild(tooltipEl);\n    }\n\n    return tooltipEl;\n}\n\nfunction generateTooltipHeaderElement(title) {\n    const headerRowEl = document.createElement('div');\n    headerRowEl.style.cssText = HEADER_ROW_STYLE;\n    const countryCode = COUNTRIES[title];\n    if (countryCode) {\n        const flagImage = document.createElement('img');\n        flagImage.style.width = '16px';\n        flagImage.style.height = '16px';\n        flagImage.style.borderRadius = '50%';\n        flagImage.src = FLAG_BASE_URL + countryCode + '.svg';\n        headerRowEl.appendChild(flagImage);\n    } else if (title.includes(',(')) {\n        const tileSplit = title.split(',(');\n        title = tileSplit[0];\n        const icon = tileSplit[1].replace(')', '');\n        if (!!icon) {\n            const iconImg = document.createElement('div');\n            iconImg.style.cssText = TITLE_ROW_ICON_STYLE;\n            iconImg.style.mask = `url(${ICONS_BASE_URL + 'v4/branded/' + icon.toLowerCase() + '.svg'}) no-repeat center`;\n            headerRowEl.appendChild(iconImg);\n        }\n    }\n    const text = document.createTextNode(title);\n    headerRowEl.appendChild(text);\n    return headerRowEl;\n}\n\nfunction generateTooltipFooterElement(footer) {\n    const parsedBody = splitLastOccurrence(footer, ':');\n    const label = parsedBody[0];\n    const val = parsedBody[1];\n\n    const footerRow = document.createElement('div');\n    footerRow.style.cssText = FOOTER_ROW_STYLE;\n    footerRow.innerHTML = `<div>${label}</div><div style=\"margin-left: auto\">${val}</div>`;\n    return footerRow;\n}\n\nfunction generateTooltipBodyRow({tooltip, i, body}) {\n    const bodyRow = document.createElement('div');\n    bodyRow.style.cssText = BODY_ROW_STYLE;\n    const colors = tooltip.labelColors[i];\n    const colorDiv = document.createElement('div');\n    const labelColor = colors.borderColor === '#fcfcfc'.toUpperCase() ? colors.backgroundColor : colors.borderColor;\n    colorDiv.style.cssText = `\n    background:${labelColor};\n    border-color:${labelColor};\n    ${ROUND_INDICATOR_ELEMENT_STYLE}\n  `;\n\n    const parsedBody = splitLastOccurrence(body[0], ':');\n    const label = parsedBody[0];\n    const val = parsedBody[1];\n\n    const labelDiv = document.createElement('div');\n    labelDiv.style.cssText = BODY_ROW_LABEL_STYLE;\n    labelDiv.innerText = label;\n\n    const valueDiv = document.createElement('div');\n    valueDiv.style.cssText = BODY_ROW_VALUE_STYLE;\n    valueDiv.innerText = val;\n\n    bodyRow.appendChild(colorDiv);\n\n    const icon = tooltip.dataPoints.map(d => d.dataset.icon ?? null).filter(Boolean)[i];\n    if (!!icon) {\n        const iconImg = document.createElement('div');\n        iconImg.style.cssText = BODY_ROW_ICON_STYLE;\n        iconImg.style.mask = `url(${ICONS_BASE_URL + icon + '.svg'}) no-repeat center`;\n        bodyRow.appendChild(iconImg);\n    }\n\n    bodyRow.appendChild(labelDiv);\n    bodyRow.appendChild(valueDiv);\n    return bodyRow;\n}\n\nexport function externalV4TooltipHandler(context) {\n    const {chart, tooltip} = context;\n    const tooltipEl = getOrCreateTooltip(chart);\n    const bodySortReverse = chart?.config?._config?.options?.plugins?.tooltip?.sortReverse ?? false;\n\n    if (tooltip.opacity === 0) {\n        tooltipEl.style.opacity = 0;\n        return;\n    }\n\n    if (tooltip.body) {\n        const titleLines = tooltip.title || [];\n        const bodyLines = tooltip.body.map(b => b.lines);\n        const footerLine = tooltip.footer || [];\n\n        const tooltipHead = document.createElement('div');\n        tooltipHead.style.cssText = HEADER_ROW_STYLE;\n        const tooltipBody = document.createElement('div');\n        tooltipBody.style.cssText = BODY_ROWS_WRAPPER;\n        const tooltipRoot = tooltipEl.querySelector('div.fu-chart-tooltip-wrapper');\n        if (chart.config?._config?.type !== 'doughnut') {\n            titleLines.forEach((title: string | HTMLElement) => {\n                if (typeof title !== 'string' && title.tagName === 'IMG') {\n                    tooltipHead.appendChild(title);\n                } else {\n                    const tr = generateTooltipHeaderElement(title);\n                    tooltipHead.appendChild(tr);\n                }\n            });\n        }\n        bodyLines.forEach((body, i) => {\n            if (bodyLines.length > 1 && bodySortReverse) {\n                tooltipBody.prepend(generateTooltipBodyRow({tooltip, i, body}));\n            } else {\n                tooltipBody.appendChild(generateTooltipBodyRow({tooltip, i, body}));\n            }\n        });\n\n        while (tooltipRoot.firstChild) {\n            tooltipRoot.firstChild.remove();\n        }\n\n        if (tooltipHead.textContent.trim().length) {\n            tooltipRoot.appendChild(tooltipHead);\n        }\n        tooltipRoot.appendChild(tooltipBody);\n\n        if (footerLine?.length && bodyLines?.length > 1) {\n            tooltipRoot.appendChild(generateTooltipFooterElement(footerLine[0]));\n        }\n    }\n\n    const {offsetLeft: positionX, offsetTop: positionY} = chart.canvas;\n    const maxBottomPoint = chart.canvas.clientHeight + 90;\n    const tooltipYPosition = tooltip.caretY + tooltipEl.clientHeight;\n\n    const yPositionAdjustment = maxBottomPoint < tooltipYPosition ? -15 : 0;\n\n    const chartRect = chart.canvas.getBoundingClientRect();\n    const tooltipOffset = positionX + 30 + tooltip.width / 2;\n    const isOnTheRight =\n        chart.width - (tooltip.caretX + tooltipOffset) < tooltip.width / 2 &&\n        chartRect.left > tooltip.width / 2 &&\n        chart.config?._config?.type !== 'doughnut';\n    const tooltipLeft = tooltip.caretX + (positionX + 30 + tooltip.width / 2) * (isOnTheRight ? -1 : 1);\n\n    tooltipEl.style.opacity = 1;\n    tooltipEl.style.left = tooltipLeft + 'px';\n    tooltipEl.style.top = positionY + tooltip.caretY + yPositionAdjustment + 'px';\n}\n\nfunction splitLastOccurrence(str, substring) {\n    const lastIndex = str.lastIndexOf(substring);\n    const before = str.slice(0, lastIndex);\n    const after = str.slice(lastIndex + 1);\n\n    return [before, after];\n}\n","/**\n * Base ChartJS dataset options used for data render\n */\nimport {ChartBaseDatasetOptions} from './entities/chart-options';\nimport {externalV4TooltipHandler} from './chart-v4.tooltip';\n\nexport const BASE_DATASET_OPTIONS: {[key: string]: ChartBaseDatasetOptions} = {\n    style_v1: {\n        colorSettings: ['backgroundColor', 'borderColor', 'pointBorderColor', 'pointBackgroundColor'],\n        fillOpacity: 50, // in %\n        seriesToShow: 7,\n        lineOptions: {\n            fill: false,\n            hidden: false,\n            pointBorderColor: '#ffffff'\n        },\n        barOptions: {\n            borderWidth: 1,\n            backgroundColor: [],\n            borderColor: []\n        },\n        pieOptions: {\n            backgroundColor: []\n        }\n    },\n    style_v2: {\n        colorSettings: ['backgroundColor', 'borderColor', 'pointBorderColor', 'pointBackgroundColor'],\n        fillOpacity: 40, // in %\n        seriesToShow: 7,\n        dateFormat: 'MMM dd, yyyy',\n        lineOptions: {\n            fill: false,\n            hidden: false,\n            pointBackgroundColor: '#ffffff'\n        },\n        barOptions: {\n            borderWidth: 0,\n            backgroundColor: [],\n            borderColor: []\n        },\n        pieOptions: {\n            backgroundColor: []\n        }\n    },\n    style_v4: {\n        colorSettings: ['backgroundColor', 'borderColor', 'pointBorderColor', 'pointHoverBackgroundColor'],\n        fillOpacity: 10,\n        seriesToShow: 7,\n        dateFormat: 'MMM dd',\n        lineOptions: {\n            fill: false,\n            hidden: false,\n            borderWidth: 2,\n            tension: 0.4,\n            pointHoverBackgroundColor: '#fcfcfc'\n        },\n        barOptions: {\n            borderRadius: 4,\n            borderWidth: 0,\n            backgroundColor: [],\n            borderColor: []\n        },\n        pieOptions: {\n            cutout: '73%',\n            borderWidth: 2,\n            hoverBorderWidth: 2,\n            backgroundColor: []\n        }\n    }\n};\n\n/**\n * ChartJS Global Configuration\n * http://www.chartjs.org/docs/#chart-configuration-global-configuration\n */\nexport const CHART_CONFIGURATIONS: any = {\n    style_v1: {\n        colorsPalette: 'base', // extend by fusion\n        dottedLineForToday: true, // extend by fusion\n        calculateMaxForAll: true, // extend by fusion: calculate Y maximum of chart for all datasets (not showed only)\n        calculatePieSummary: true, // extend by fusion\n\n        responsive: true, // Resizes the chart canvas when its container does\n        maintainAspectRatio: false, // Maintain the original canvas aspect ratio (width / height) when resizing.\n        resizeDelay: 0, // Delay the resize update by give amount of milliseconds. This can ease the resize process by debouncing update of the elements.\n\n        interaction: {\n            mode: 'nearest'\n        },\n        plugins: {\n            legend: {\n                display: false\n            },\n            title: {\n                display: false\n            },\n            subtitle: {\n                display: true\n            },\n            tooltip: {\n                enabled: true,\n                backgroundColor: '#fff',\n                titleFont: {size: 16},\n                titleColor: '#172D4C',\n                bodyFont: {size: 16},\n                bodyColor: '#172D4C',\n                borderColor: 'rgba(194,205,215,1)',\n                borderWidth: 1,\n                cornerRadius: 0,\n                caretSize: 10,\n                xPadding: 10,\n                yPadding: 10\n            }\n        },\n        layout: {\n            padding: {\n                top: 10\n            }\n        },\n        elements: {\n            line: {\n                borderWidth: 1,\n                tension: 0\n            },\n            point: {\n                borderWidth: 1,\n                pointRadius: 2,\n                pointHoverRadius: 3,\n                pointHitRadius: 2\n            }\n        },\n        scales: {\n            x: {\n                beginAtZero: true,\n                ticks: {\n                    color: '#678099',\n                    padding: 7,\n                    maxRotation: 0\n                },\n                grid: {\n                    display: false,\n                    drawBorder: false\n                }\n            },\n            y: {\n                beginAtZero: true,\n                ticks: {\n                    color: '#678099',\n                    padding: 10\n                },\n                grid: {\n                    drawBorder: false,\n                    lineWidth: 1,\n                    color: '#e1e6eb'\n                }\n            }\n        }\n    },\n    style_v2: {\n        colorsPalette: 'base', // extend by fusion\n        dottedLineForToday: true, // extend by fusion\n        calculateMaxForAll: true, // extend by fusion: calculate Y maximum of chart for all datasets (not showed only)\n        calculatePieSummary: true, // extend by fusion\n\n        responsive: true, // Resizes the chart canvas when its container does\n        maintainAspectRatio: false, // Maintain the original canvas aspect ratio (width / height) when resizing.\n        resizeDelay: 0, // Delay the resize update by give amount of milliseconds. This can ease the resize process by debouncing update of the elements.\n        interaction: {\n            mode: 'nearest'\n        },\n        plugins: {\n            legend: {\n                display: false\n            },\n            title: {\n                display: false\n            },\n            subtitle: {\n                display: true\n            },\n            tooltip: {\n                enabled: true,\n                backgroundColor: '#fff',\n                titleFont: {size: 16},\n                titleColor: '#172D4C',\n                bodyFont: {size: 16},\n                bodyColor: '#172D4C',\n                borderColor: 'rgba(194,205,215,1)',\n                borderWidth: 1,\n                cornerRadius: 0,\n                caretSize: 10,\n                xPadding: 10,\n                yPadding: 10\n            }\n        },\n        layout: {\n            padding: {\n                top: 10\n            }\n        },\n        elements: {\n            line: {\n                borderWidth: 2,\n                tension: 0\n            },\n            point: {\n                borderWidth: 2,\n                radius: 3,\n                hoverRadius: 4,\n                hitRadius: 3\n            }\n        },\n        scales: {\n            x: {\n                beginAtZero: true,\n                ticks: {\n                    color: '#7b838c',\n                    font: {size: 11},\n                    padding: 0\n                },\n                grid: {\n                    drawBorder: false,\n                    display: false\n                }\n            },\n            y: {\n                beginAtZero: true,\n                ticks: {\n                    color: '#7b838c',\n                    font: {size: 11},\n                    padding: 16\n                },\n                grid: {\n                    drawBorder: false,\n                    lineWidth: 1,\n                    color: '#e5e7e9'\n                }\n            }\n        }\n    },\n    style_v4: {\n        dottedLineForToday: true, // extend by fusion\n        calculateMaxForAll: true, // extend by fusion: calculate Y maximum of chart for all datasets (not showed only)\n        calculatePieSummary: true, // extend by fusion\n\n        responsive: true, // Resizes the chart canvas when its container does\n        maintainAspectRatio: false, // Maintain the original canvas aspect ratio (width / height) when resizing.\n        resizeDelay: 0, // Delay the resize update by give amount of milliseconds. This can ease the resize process by debouncing update of the elements.\n        interaction: {\n            mode: 'point'\n        },\n        plugins: {\n            legend: {\n                display: false\n            },\n            title: {\n                display: false\n            },\n            subtitle: {\n                display: true\n            },\n            tooltip: {\n                enabled: false,\n                position: 'nearest',\n                sortReverse: true,\n                external: externalV4TooltipHandler\n            }\n        },\n        layout: {\n            padding: {\n                top: 10\n            }\n        },\n        elements: {\n            line: {\n                borderWidth: 2,\n                tension: 0.4\n            },\n            point: {\n                radius: 0,\n                hitRadius: 8,\n                hoverBorderWidth: 2,\n                pointHoverBackgroundColor: '#fcfcfc'\n            }\n        },\n        scales: {\n            x: {\n                beginAtZero: true,\n                ticks: {\n                    color: '#646464',\n                    font: {size: 12, weight: 400},\n                    padding: 0,\n                    minRotation: 0,\n                    maxRotation: 0,\n                    autoSkip: true\n                },\n                grid: {\n                    drawBorder: false,\n                    display: false\n                }\n            },\n            y: {\n                border: {\n                    display: false\n                },\n                beginAtZero: true,\n                ticks: {\n                    color: '#646464',\n                    font: {size: 12, weight: 400},\n                    padding: 8\n                },\n                grid: {\n                    lineWidth: 1,\n                    color: '#E4E4E4',\n                    display: true,\n                    tickLength: 8,\n                    drawTicks: false\n                }\n            }\n        }\n    }\n};\n","export const ERROR_MESSAGES = {\n    data_parse_exception: 'Data parsing exception: data values for chart not exist',\n    configuration_not_valid: 'chart configuration error, data field are required to render char type of'\n};\n","import {Injectable} from '@angular/core';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\nimport {ChartData as ChartJsData, ChartDataset as ChartJsDataSets} from 'chart.js';\nimport {ChartData} from './entities/chart-data';\nimport {ChartLegend} from './entities/chart-legend';\nimport {ERROR_MESSAGES} from './error-messages';\nimport {ChartType} from './entities/chart-type.enum';\n\n@Injectable()\nexport class ChartDataService {\n    parseChartData(data: ChartData, type: ChartType, isStacked = false): ChartJsData {\n        let parsed: ChartJsData = void 0; // void 0 returns undefined and can not be overwritten while undefined can be overwritten.\n        switch (type) {\n            case ChartType.Line:\n                parsed = {\n                    labels: this.getLegends(data),\n                    datasets: this.getDataSet(data)\n                };\n                break;\n            case ChartType.Bar:\n                parsed = this.getGroupedDataSet(data);\n                break;\n            case ChartType.Doughnut:\n            case ChartType.Pie:\n                parsed = this.getPieData(data);\n                break;\n        }\n\n        if (!parsed) {\n            throw new Error(`${ERROR_MESSAGES.configuration_not_valid} ${type}`);\n        }\n        return parsed;\n    }\n\n    setLastDotted(dataset: ChartJsDataSets[]): ChartJsDataSets[] {\n        const dottedOption = {borderDash: [3, 5]};\n        // duplicate dataset with dotted option\n        return dataset.reduce((acc, item) => {\n            const count = item.data.length;\n            if (count > 2) {\n                const data1 = [...item.data];\n                const data2 = [...item.data];\n\n                data1.pop();\n                data2.fill(null, 0, count - 2);\n                acc.push({...item, ...{data: data1}}, {...item, ...{data: data2}, ...dottedOption});\n            } else {\n                // just update with \"doted\"\n                acc.push({...item, ...dottedOption});\n            }\n            return acc;\n        }, []);\n    }\n\n    private getDataSet(data: ChartData): ChartJsDataSets[] {\n        const dataset: ChartJsDataSets[] = [];\n        const dataKeys = Object.keys(data.data);\n        data.legends.forEach((label: ChartLegend, idx) => {\n            const dataValues: number[] = [];\n            dataKeys.forEach(key => {\n                dataValues.push(data.data[key][idx]);\n            });\n            dataset.push(\n                // @ts-ignore\n                Object.assign(\n                    {\n                        id: label.id,\n                        label: label.displayName,\n                        data: dataValues,\n                        displayFormat: !isNullOrUndefined(label.displayFormat) ? label.displayFormat : null,\n                        icon: !isNullOrUndefined(label.icon) ? label.icon : null\n                    },\n                    !isNullOrUndefined(label.hidden) ? {hidden: label.hidden} : {}\n                )\n            );\n        });\n        return dataset;\n    }\n\n    private getGroupedDataSet(data: ChartData): ChartJsData {\n        const legends: Array<string> = [];\n        const dataset: Array<any> = [];\n        data.legends.forEach((label: ChartLegend, idx) => {\n            // @ts-ignore\n            legends.push(label.displayName);\n        });\n        Object.keys(data.data).forEach((key: string) => {\n            dataset.push({\n                label: key,\n                data: data.data[key]\n            });\n        });\n\n        return {\n            labels: legends,\n            datasets: dataset\n        };\n    }\n\n    private getLegends(data: ChartData): string[] {\n        return Object.keys(data.data);\n    }\n\n    private getTotals(data: ChartData): ChartJsData /*{labels: string[], datasets: {data: number[]}[]}*/ {\n        const legends: Array<string> = [];\n        const dataset: Array<number> = [];\n        data.legends.forEach((label: ChartLegend, idx) => {\n            // @ts-ignore\n            legends.push(label.displayName);\n            if (!isNullOrUndefined(label.value)) {\n                dataset.push(label.value);\n            } else if (!isNullOrUndefined(data.data)) {\n                const dataKeys = Object.keys(data.data);\n                dataset.push(\n                    Number(\n                        dataKeys\n                            .reduce((sum: number, key: string) => {\n                                sum += data.data[key][idx];\n                                return sum;\n                            }, 0)\n                            .toFixed(2)\n                    )\n                );\n            } else {\n                throw new Error(ERROR_MESSAGES.data_parse_exception);\n            }\n        });\n\n        return {\n            labels: legends,\n            datasets: [\n                {\n                    data: dataset\n                }\n            ]\n        };\n    }\n\n    private getPieData(data: ChartData): ChartJsData /*{labels: string[], datasets: {data: number[]}}*/ {\n        const legends: Array<string> = [];\n        const dataset: Array<number> = [];\n        if (Array.isArray(data.data)) {\n            data.data.forEach(item => {\n                legends.push(item.displayText);\n                dataset.push(item.value);\n            });\n        } else {\n            Object.keys(data.data)\n                .map(key => [key, data.data[key]] as any)\n                .forEach(item => {\n                    legends.push(item[0]);\n                    dataset.push(item[1]);\n                });\n        }\n\n        return {\n            labels: legends,\n            datasets: [\n                {\n                    data: dataset,\n                    legends\n                } as any\n            ]\n        };\n    }\n}\n","export const HoverVerticalLine = {\n    id: 'hoverVerticalLine',\n    beforeDraw: chart => {\n        if (chart.getActiveElements().length) {\n            const activePoint = chart.getActiveElements()[0];\n            const chartArea = chart.chartArea;\n            const ctx = chart.ctx;\n            ctx.save();\n            // grey vertical hover line - full chart height\n            ctx.beginPath();\n            ctx.moveTo(activePoint.element.x, chartArea.top);\n            ctx.lineTo(activePoint.element.x, chartArea.bottom);\n            ctx.lineWidth = 1;\n            ctx.strokeStyle = 'rgba(0,0,0, 0.1)';\n            ctx.stroke();\n            ctx.restore();\n        }\n    }\n};\n","import {Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {ChartData, FusionChartPieData, FusionChartPieDataItem} from './entities/chart-data';\nimport {ChartLabel} from './entities/chart-label';\nimport {ChartDataset} from './entities/chart-dataset';\nimport {CurrencyPipe, DatePipe, DecimalPipe, PercentPipe} from '@angular/common';\nimport {UniqueIdService} from '@ironsource/fusion-ui/services/unique-id';\nimport {ChartDataService} from './chart.service';\nimport {ColorsService} from '@ironsource/fusion-ui/services/colors';\nimport {isDateString, isNullOrUndefined, isNumber} from '@ironsource/fusion-ui/utils';\nimport {BASE_DATASET_OPTIONS, CHART_CONFIGURATIONS} from './chart.config';\nimport {ShortNumberScaleSuffixPipe} from '@ironsource/fusion-ui/pipes/numbers';\nimport {ChartBaseDatasetOptions} from './entities/chart-options';\nimport {ChartType} from './entities/chart-type.enum';\nimport {ClonePipe} from '@ironsource/fusion-ui/pipes/clone';\nimport {HoverVerticalLine} from './hoverVerticalLine.plugin';\nimport {ChartLegend} from './entities/chart-legend';\n\n// Chart.js 3 is tree-shakeable, so it is necessary to import and register the controllers, elements, scales and plugins you are going to use.\nimport {\n    Chart,\n    ArcElement,\n    LineElement,\n    BarElement,\n    PointElement,\n    LineController,\n    BarController,\n    PieController,\n    ScatterController,\n    CategoryScale,\n    LinearScale,\n    Filler,\n    Tooltip,\n    ChartType as ChartTypeJs,\n    ChartData as ChartJsData,\n    ChartOptions as ChartJsOptions\n} from 'chart.js';\n\nChart.register(\n    ArcElement,\n    LineElement,\n    BarElement,\n    PointElement,\n    LineController,\n    BarController,\n    PieController,\n    ScatterController,\n    CategoryScale,\n    LinearScale,\n    Filler,\n    Tooltip,\n    HoverVerticalLine\n);\n\n@Directive()\nexport abstract class ChartBaseComponent implements OnInit, OnDestroy, OnChanges {\n    /** @internal */\n    @Input() id: string;\n    /** @internal */\n    @Input() type: ChartType;\n\n    @Input() set data(value: ChartData | FusionChartPieData) {\n        this._data = {...value};\n    }\n\n    /** @internal */\n    @Input() set options(value: {}) {\n        if (!!value) {\n            this._options = {...this._options, ...value};\n        }\n    }\n\n    /** @internal */\n    get options(): any {\n        return this._options;\n    }\n\n    @Input() chartSubject: string; // user in tooltip for BAR chart type\n    @Input() loading: boolean;\n    @Input() noData: boolean;\n    @Output() afterDatasetInit: EventEmitter<ChartDataset[]> = new EventEmitter();\n\n    /** @internal */\n    pieDataSum: number;\n    /** @internal */\n    pieSumLabel: string;\n    /** @internal */\n    componentVersion = 2;\n\n    private _options: any = {\n        yAxisLines: 4\n    };\n\n    protected _data: ChartData | FusionChartPieData;\n    protected ctx: HTMLCanvasElement;\n    protected canvasContent: CanvasRenderingContext2D;\n    protected chart: Chart;\n    protected chartData: ChartJsData;\n    protected chartOptions: ChartJsOptions;\n    protected maxVal: number;\n    protected isStacked = false;\n    protected yAxesFormat: string;\n\n    private legends: ChartLegend[] = [];\n    private barWidth: number; // for bar chart type, if showCharsAmountXLabels is set to true\n\n    // originalLabels and originalBarData used for store chart type Bar data without filtering;\n    private originalBarData: any;\n    private originalLabels: string[];\n\n    constructor(\n        protected datePipe: DatePipe,\n        protected currencyPipe: CurrencyPipe,\n        protected decimalPipe: DecimalPipe,\n        protected percentPipe: PercentPipe,\n        protected numberToStringPipe: ShortNumberScaleSuffixPipe,\n        protected uniqueIdService: UniqueIdService,\n        protected dataParseService: ChartDataService,\n        protected colorsService: ColorsService,\n        protected elemRef: ElementRef,\n        protected clonePipe: ClonePipe\n    ) {}\n\n    ngOnInit() {\n        this.id = this.id || `fs-chart-${this.uniqueIdService.getUniqueId()}`;\n        this.type = this.type || ChartType.Line;\n\n        if (this.type === ChartType.StackedLine) {\n            this.type = ChartType.Line;\n            this.isStacked = true;\n        } else if (this.type === ChartType.StackedBar) {\n            this.type = ChartType.Bar;\n            this.isStacked = true;\n        }\n\n        if (this.type === ChartType.Doughnut) {\n            this.pieSumLabel = (this._data as FusionChartPieData)?.label;\n        }\n\n        this.elemRef.nativeElement.querySelector('div').id = this.id;\n        this.ctx = this.elemRef.nativeElement.querySelector('canvas');\n        this.canvasContent = this.ctx.getContext('2d');\n        if (!isNullOrUndefined(this.ctx) && this._data && Object.keys(this._data).length) {\n            this.setChart(this._data, this.type);\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.chart = void 0;\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!isNullOrUndefined(this.ctx) && changes.data && !changes.data.firstChange) {\n            this.setChart(changes.data.currentValue, this.type);\n        }\n    }\n\n    private setChart(data, type): void {\n        this.yAxesFormat = this.getDisplayFormat(data) ?? data.displayFormat;\n        this.chartData = this.dataParseService.parseChartData(data, type, this.isStacked);\n        this.chartOptions = this.getChartOptions();\n        this.legends = (data as ChartData).legends;\n\n        if (!isNullOrUndefined(this.chart)) {\n            this.chart.destroy();\n        }\n        this.chart = this.renderChart(this.ctx);\n\n        if (\n            (this.type === ChartType.Bar || this.type === ChartType.StackedBar) &&\n            isNumber(this.options.showCharsAmountXLabels) &&\n            !!this.chartData?.labels?.length\n        ) {\n            this.barWidth = (this.chart.getDatasetMeta(0)?.xScale?.width ?? this.ctx.width) / this.chartData?.labels?.length;\n            if (this.barWidth) {\n                this.chartOptions.scales.x.ticks.callback = this.trimAxisXLabel.bind(this);\n                this.chart.update();\n            }\n        }\n\n        this.afterDatasetInit.emit(this.chartData.datasets as ChartDataset[]);\n    }\n\n    // region chart datasets show / hide methods\n    /** @internal */\n    toggleDataset(label: ChartLabel, recalculateYMax = false): void {\n        if ((this.type === ChartType.Bar || this.type === ChartType.StackedBar) && label.typeCheckbox) {\n            this.filterBarData(label, recalculateYMax);\n        } else {\n            this.toggleLineDataset(label, recalculateYMax);\n        }\n    }\n\n    private filterBarData(label: ChartLabel, recalculateYMax = false): void {\n        if (isNullOrUndefined(this.originalBarData)) {\n            this.originalLabels = [...this.chart.data.labels] as string[];\n            this.originalBarData = structuredClone(this.chart.data.datasets);\n        }\n        if (!label.labelVisible.value) {\n            const otherDataIndex = this.getLabelIndex(label.id);\n            if (otherDataIndex !== -1) {\n                Object.keys(this.chart.data.datasets).forEach(key => {\n                    this.chart.data.datasets[key].data.splice(otherDataIndex, 1);\n                });\n                this.chart.data.labels.splice(otherDataIndex, 1);\n            }\n        } else {\n            this.chart.data.labels = [...this.originalLabels] as string[];\n            this.chart.data.datasets = structuredClone(this.originalBarData);\n        }\n        if (recalculateYMax) {\n            this.calcYAxes(this.chart?.options?.scales?.y);\n        }\n\n        this.chart.update();\n    }\n\n    private getLabelIndex(labelId: string | number): number {\n        let index = -1;\n        this.chart.data.labels.find((item, idx) => {\n            if (index === -1) {\n                if (Array.isArray(item) && item[0] === labelId) {\n                    index = idx;\n                } else {\n                    index = item === labelId ? idx : -1;\n                }\n            }\n        });\n        return index;\n    }\n\n    private toggleLineDataset(label: ChartLabel, recalculateYMax = false): void {\n        this.chart.data.datasets\n            .filter(item => {\n                let thisLabel: boolean =\n                    item.label === label.label && (!isNullOrUndefined((item as any).id) ? (item as any).id === label.id : true);\n                return thisLabel;\n            })\n            .forEach(item => {\n                item.hidden = !label.labelVisible.value;\n            });\n\n        if (recalculateYMax) {\n            this.calcYAxes(this.chart?.options?.scales?.y);\n        }\n        this.chart.update('none');\n    }\n    // endregion\n\n    // region chart dataset highlight methods\n    /** @internal */\n    highlightDataset(label: ChartLabel) {\n        const datasets: any = this.chart?.data.datasets;\n        if (!isNullOrUndefined(label)) {\n            this.setChartUnHoveredBGColor(label, datasets);\n        } else {\n            this.setChartHoveredBGColor(label, datasets);\n        }\n        this.chart.update();\n    }\n\n    private setChartUnHoveredBGColor(label: ChartLabel, datasets: any): void {\n        datasets.forEach((dataset: any, idx: number) => {\n            const isOtherDataset = !isNullOrUndefined(dataset.id) ? dataset.id !== label.id : idx !== label.id;\n            if (isOtherDataset || this.type === ChartType.Doughnut) {\n                if (this.type === ChartType.Line) {\n                    dataset.borderColor = dataset.backgroundColor;\n                } else if (this.type === ChartType.Bar) {\n                    dataset.backgroundColor = (dataset.backgroundColor as string).replace(',1)', ',0.1)');\n                } else if (this.type === ChartType.Doughnut) {\n                    (dataset.backgroundColor as string[]).forEach((color, idx) => {\n                        if (idx !== label.id) {\n                            dataset.backgroundColor[idx] = dataset.backgroundColor[idx].replace(',1)', ',0.1)');\n                        }\n                    });\n                }\n            } else {\n                if (this.type === ChartType.Line) {\n                    dataset.backgroundColor = (dataset.backgroundColor as string).replace('0.1)', '0.7)');\n                }\n            }\n        });\n    }\n\n    private setChartHoveredBGColor(label: ChartLabel, datasets: any): void {\n        datasets.forEach((dataset, idx) => {\n            if (this.type === ChartType.Line) {\n                dataset.borderColor = (dataset.backgroundColor as string).replace('0.1)', '1)');\n                dataset.backgroundColor = (dataset.backgroundColor as string).replace('0.7)', '0.1)');\n            } else if (this.type === ChartType.Bar) {\n                dataset.backgroundColor = (dataset.backgroundColor as string).replace(',0.1)', ',1)');\n            } else if (this.type === ChartType.Doughnut) {\n                (dataset.backgroundColor as string[]).forEach((color, idx) => {\n                    dataset.backgroundColor[idx] = dataset.backgroundColor[idx].replace(',0.1)', ',1)');\n                });\n            }\n        });\n    }\n    // endregion\n\n    /** @internal */\n    addDatasetStyleOptions(isLastDotted = true) {\n        const palette: string[] = this.getColors();\n        const datasetOptions = this.getDataSetOptionsByStyleVersion(this.componentVersion);\n        const bgOpacity = datasetOptions.fillOpacity;\n\n        if (this.type === ChartType.Line) {\n            this.addDatasetLineStyleOptions(datasetOptions, isLastDotted, palette, bgOpacity);\n        } else if (this.type === ChartType.Bar) {\n            this.addDatasetBarStyleOptions(datasetOptions, palette, bgOpacity);\n        } else if (this.type === ChartType.Pie || this.type === ChartType.Doughnut) {\n            this.addDatasetPieStyleOptions(datasetOptions);\n        }\n    }\n\n    protected getColors(): string[] {\n        const palette = this.colorsService.getColorPalette(this.componentVersion);\n        const legends = (this._data as ChartData).legends;\n        // todo: need to check this case for stacked bar (it look like related to Object.keys(data) not for label).\n        const customPalette =\n            Array.isArray(legends) && legends.some(legend => !!legend.color)\n                ? legends.map((legend, idx) => {\n                      return !isNullOrUndefined(legend.color)\n                          ? legend.color\n                          : !isNullOrUndefined(palette[idx])\n                          ? palette[idx]\n                          : '#' + Math.floor(Math.random() * 16777215).toString(16); // no color - gen random\n                  })\n                : palette;\n        return customPalette;\n    }\n\n    private addDatasetLineStyleOptions(datasetOptions, isLastDotted, palette, bgOpacity) {\n        const colorKeys = datasetOptions.colorSettings;\n        const seriesToShow = datasetOptions.seriesToShow;\n        const lineOptions = datasetOptions.lineOptions;\n        const dateFormat = datasetOptions.dateFormat ?? 'MMM dd, yyyy';\n        const isOneDataPoint = this.chartData.labels.length === 1;\n\n        // set bg fill options\n        lineOptions.fill = this.isStacked;\n        if (this.componentVersion === 4) {\n            lineOptions.pointRadius = isOneDataPoint ? 3 : 0;\n            lineOptions.clip = 5;\n            colorKeys.push('pointBackgroundColor');\n        }\n        bgOpacity = this.componentVersion === 4 ? bgOpacity : bgOpacity / 2;\n        this.chartData.datasets = this.chartData.datasets.map((item, idx) => {\n            const dataGroupOptions = colorKeys.reduce((resultOptions, colorOption) => {\n                const color = (this._data as ChartData)?.legends[idx]?.color || palette[idx];\n                switch (colorOption) {\n                    case 'backgroundColor':\n                        resultOptions[colorOption] = this.colorsService.toRgba(color, bgOpacity);\n                        break;\n                    case 'pointBackgroundColor':\n                        resultOptions[colorOption] = lineOptions[colorOption] ? lineOptions[colorOption] : color;\n                        break;\n                    case 'pointHoverBackgroundColor':\n                        resultOptions[colorOption] = lineOptions[colorOption] ? lineOptions[colorOption] : color;\n                        break;\n                    case 'pointBorderColor':\n                        resultOptions[colorOption] = lineOptions[colorOption] ? lineOptions[colorOption] : color;\n                        break;\n                    default:\n                        resultOptions[colorOption] = color;\n                }\n                return resultOptions;\n            }, {});\n\n            // hide series over limit if not set\n            if (!isNullOrUndefined(item.hidden)) {\n                lineOptions.hidden = item.hidden;\n            } else {\n                lineOptions.hidden = idx > seriesToShow - 1;\n            }\n            // set fill option from line to line on stacked line chart\n            if (this.componentVersion === 4 && this.isStacked) {\n                lineOptions.fill = idx !== 0 ? '-1' : 'start';\n            }\n            // set line options\n            Object.assign(dataGroupOptions, lineOptions);\n            return Object.assign(item, dataGroupOptions);\n        });\n        // format xAxis (dates)\n        if (this.componentVersion !== 4) {\n            this.chartData.labels = this.chartData.labels.map(lbl => {\n                return isDateString(lbl as string) ? this.datePipe.transform(lbl as any, dateFormat) : lbl;\n            });\n        }\n        // support for last point (if last point - today) - dotted line type\n        if (isLastDotted) {\n            this.chartData.datasets = this.dataParseService.setLastDotted(this.chartData.datasets);\n        }\n        // check for one data point (do center align)\n        if (this.chartData.labels.length === 1) {\n            this.chartData.labels = ['', this.chartData.labels[0], ''];\n            this.chartData.datasets.forEach(dataset => {\n                (dataset as any).data = [null, dataset.data[0], null];\n                // set point style for today and / yesterday\n                if (isLastDotted) {\n                    dataset['pointBackgroundColor'] = '#ffffff';\n                    dataset['pointBorderColor'] = dataset.borderColor;\n                } else {\n                    dataset['pointBorderColor'] = dataset.borderColor;\n                }\n            });\n        }\n    }\n\n    private addDatasetBarStyleOptions(datasetOptions, palette, bgOpacity) {\n        const barOptions = datasetOptions.barOptions;\n        this.chartData.datasets = this.chartData.datasets.map((item, idx) => {\n            if (this.componentVersion === 4) {\n                barOptions.borderColor = palette[idx];\n                barOptions.backgroundColor = this.colorsService.toRgba(palette[idx], 100);\n                barOptions.hoverBackgroundColor = palette[idx];\n                barOptions.borderWidth = 0;\n                barOptions.barPercentage = 0.9;\n                if (this.isStacked) {\n                    barOptions.barPercentage = 0.5;\n                    barOptions.borderWidth = 2;\n                    barOptions.borderColor = '#FCFCFC';\n                    barOptions.hoverBorderColor = '#FCFCFC';\n                }\n            } else {\n                for (let i = 0; i < item.data.length; i++) {\n                    barOptions.borderColor.push(palette[i]);\n                    barOptions.backgroundColor.push(this.colorsService.toRgba(palette[i], bgOpacity));\n                }\n            }\n            return Object.assign(item, barOptions);\n        });\n    }\n\n    private addDatasetPieStyleOptions(datasetOptions) {\n        const pieOptions = datasetOptions.pieOptions;\n        const piePalette: string[] = this.colorsService.getPieColorsPalette(this.componentVersion);\n        const onlyOneData = this.chartData.datasets[0].data.length === 1;\n        // add colors and labels\n        pieOptions.backgroundColor = [];\n        pieOptions.hoverBackgroundColor = [];\n        pieOptions.hoverBorderWidth = pieOptions.hoverBorderWidth;\n        pieOptions.borderWidth = !onlyOneData ? pieOptions.borderWidth : 0;\n\n        this.chartData.datasets = this.chartData.datasets.map(item => {\n            for (let i = 0; i < item.data.length; i++) {\n                let color;\n                if (Array.isArray(this._data.data)) {\n                    color = (this._data.data as FusionChartPieDataItem[]).find(part => part.displayText === this.chartData.labels[i]).color;\n                }\n                if (!color) {\n                    color = piePalette[i] ? piePalette[i] : piePalette[piePalette.length - 1];\n                }\n                if (this.componentVersion === 4) {\n                    pieOptions.backgroundColor.push(this.colorsService.toRgba(color, 100));\n                    pieOptions.hoverBackgroundColor.push(color);\n                    pieOptions.borderColor = '#FCFCFC';\n                    pieOptions.hoverBorderWidth = 0;\n                    pieOptions.hoverBorderColor = 'transparent';\n                } else {\n                    pieOptions.backgroundColor.push(color);\n                }\n            }\n            return {...item, ...pieOptions};\n        });\n    }\n\n    private getDisplayFormat(data: ChartData): string {\n        if (data && Array.isArray(data.legends) && data.legends.length !== 0) {\n            return data.legends[0].displayFormat || null;\n        }\n        return null;\n    }\n\n    protected getDataSetOptionsByStyleVersion(versionNumber = 2): ChartBaseDatasetOptions {\n        const options = BASE_DATASET_OPTIONS[`style_v${versionNumber}`]\n            ? BASE_DATASET_OPTIONS[`style_v${versionNumber}`]\n            : BASE_DATASET_OPTIONS.style_v2;\n        return {...options};\n    }\n\n    protected getChartOptionsByStyleVersion(versionNumber = 2): any {\n        const options = CHART_CONFIGURATIONS[`style_v${versionNumber}`]\n            ? CHART_CONFIGURATIONS[`style_v${versionNumber}`]\n            : CHART_CONFIGURATIONS.style_v2;\n\n        return this.clonePipe.transform(options);\n    }\n\n    private applyOptions() {\n        return this.deepMerge(this.getChartOptionsByStyleVersion(this.componentVersion), this.options);\n    }\n\n    private deepMerge(target, source) {\n        for (const key of Object.keys(source)) {\n            const currentTarget = target[key];\n            const currentSource = source[key];\n\n            if (currentTarget) {\n                const objectSource = typeof currentSource === 'object';\n                const objectTarget = typeof currentTarget === 'object';\n\n                if (objectSource && objectTarget) {\n                    void (Array.isArray(currentTarget) && Array.isArray(currentSource)\n                        ? void (target[key] = currentTarget.concat(currentSource))\n                        : void this.deepMerge(currentTarget, currentSource));\n                    continue;\n                }\n            }\n            target[key] = currentSource;\n        }\n        return target;\n    }\n\n    private getChartOptions(): ChartJsOptions {\n        const options: any = {...this.applyOptions()};\n        // hide legends for bar chart type by default\n        if (this.type === ChartType.Bar || this.type === ChartType.Pie || this.type === ChartType.Doughnut) {\n            options.plugins.legend.display = false;\n        }\n        const isLastDotted = this.isLastDotted(options);\n\n        // set style options for the chart\n        this.addDatasetStyleOptions(isLastDotted);\n\n        // set min/ max for yAxes if line\n        if (this.type === ChartType.Line) {\n            this.setLineChartOptions(options);\n        } else if (this.type === ChartType.Bar) {\n            this.setBarChartOptions(options);\n        } else if (this.type === ChartType.Doughnut || this.type === ChartType.Pie) {\n            this.setPieChartOptions(options);\n        }\n\n        const isV4InteractionIndex = this.componentVersion === 4 && options?.interaction?.mode === 'index';\n\n        // region apply tooltip options\n        options.plugins.tooltip = {\n            ...options.plugins.tooltip,\n            callbacks: {\n                ...options.plugins.tooltip.callbacks,\n                label: this.getTooltipLabel.bind(this),\n                ...(isV4InteractionIndex\n                    ? {\n                          footer: this.calculateTotals.bind(this),\n                          beforeTitle: this.getBeforeTitle.bind(this),\n                          title: this.getTooltipDateTitle.bind(this)\n                      }\n                    : {})\n            },\n            ...(isLastDotted ? {filter: this.filterTooltip.bind(this)} : {})\n        };\n\n        options.plugins['hoverVerticalLine'] = false;\n        if (this.type === ChartType.Line && isV4InteractionIndex) {\n            options.plugins['hoverVerticalLine'] = true;\n        }\n        // end region\n\n        return options;\n    }\n\n    protected setLineChartOptions(options) {\n        // calculate line-point options (if more than 50 points on char)\n        if (Array.isArray(this.chartData.datasets) && this.chartData.datasets.length !== 0 && this.chartData.datasets[0].data.length > 50) {\n            options.elements.point.pointRadius = 0;\n        }\n        this.calcYAxes(options.scales.y);\n        if (this.isStacked) {\n            options.scales.y.stacked = true;\n            this.chartData.datasets.forEach(dataset => {\n                if (dataset.label === 'Sum') {\n                    dataset['fill'] = false;\n                }\n            });\n        }\n        if (this.componentVersion === 4) {\n            const datasetOptions = this.getDataSetOptionsByStyleVersion(this.componentVersion);\n            const dateFormat = datasetOptions.dateFormat ?? 'MMM dd, yyyy';\n            options.scales.x.ticks.callback = (index: any) => {\n                const label = this.chartData.labels[index] as string;\n                const value = isDateString(label) ? this.datePipe.transform(label, dateFormat) : label;\n                return value;\n            };\n        }\n    }\n\n    private setBarChartOptions(options) {\n        this.calcYAxes(options.scales.y);\n        if (!this.isStacked) {\n            if (this.chartSubject) {\n                this.chartData.datasets.forEach(dataset => {\n                    Object.assign(dataset, {\n                        label: this.chartSubject\n                    });\n                });\n            }\n        } else {\n            options.scales.x.stacked = true;\n            options.scales.y.stacked = true;\n            options.interaction = {\n                intersect: false,\n                mode: 'index',\n                axis: 'x'\n            };\n            options.plugins.tooltip = {\n                ...options.plugins.tooltip\n            };\n        }\n    }\n\n    private trimAxisXLabel(index: number): string | string[] {\n        const label = this.chartData.labels[index] as string | string[];\n        const len = Math.round(this.barWidth * (this._options?.showCharsAmountXLabels / 100));\n        const isArray = Array.isArray(label);\n        let labelText = isArray ? label[0] : label;\n        if (labelText.length > len) {\n            labelText = labelText.substring(0, len) + '...';\n            return isArray ? [labelText, label[1]] : labelText;\n        }\n        return label;\n    }\n\n    private setPieChartOptions(options) {\n        delete options.scales;\n        delete options.elements;\n        if (options.calculatePieSummary) {\n            this.pieDataSum = (this.chartData.datasets[0].data as any[]).reduce((sum, item) => (sum += item), 0);\n        }\n    }\n\n    private isLastDotted(options): boolean {\n        // eslint-disable-next-line one-var\n        const todayString = (() => {\n                // eslint-disable-next-line one-var\n                const d = new Date(),\n                    month = '' + (d.getMonth() + 1),\n                    day = '' + d.getDate(),\n                    year = d.getFullYear();\n                return [year, month.length < 2 ? '0' + month : month, day.length < 2 ? '0' + day : day].join('-');\n            })(),\n            dataKeys = Object.keys(this._data?.data);\n\n        return options.dottedLineForToday && dataKeys[dataKeys.length - 1] === todayString;\n    }\n\n    // region tooltip related methods\n    private filterTooltip(context): boolean {\n        return !context.dataset.borderDash;\n    }\n\n    private getTooltipLabel(context) {\n        const label = context.dataset.label ?? context.label ?? '';\n        const val = context.parsed.y ?? context?.formattedValue?.replace(/,/g, '');\n        const format = context.dataset.displayFormat ?? this.yAxesFormat;\n\n        return ` ${label}: ${!!format ? this.getFormatted(val, format) : val}`;\n    }\n\n    private calculateTotals(tooltipItem: any[]) {\n        const format = this.yAxesFormat;\n        const total = tooltipItem.reduce((acc, val) => acc + val.raw, 0);\n        return `Total: ${!!format ? this.getFormatted(total, format) : total}`;\n    }\n\n    private getBeforeTitle(data): HTMLElement {\n        const legend = this.legends.find(legend => {\n            return Array.isArray(legend.displayName)\n                ? legend.displayName.join(',') === data[0].label\n                : legend.displayName === data[0].label;\n        });\n        if (!!legend?.imageUrl) {\n            const appImage = document.createElement('img');\n            appImage.style.width = '20px';\n            appImage.style.height = '20px';\n            appImage.style.borderRadius = '4px';\n            appImage.src = legend?.imageUrl;\n            return appImage;\n        }\n        return null;\n    }\n\n    private getTooltipDateTitle(data): string {\n        const label = data[0].label;\n        const value = isDateString(label) ? this.datePipe.transform(label, 'MMM d, YYYY') : label;\n        return value;\n    }\n\n    // endregion\n\n    private renderChart(ctx: HTMLCanvasElement) {\n        const opts = {\n            type: this.type as ChartTypeJs,\n            data: this.chartData,\n            options: this.chartOptions\n        };\n\n        // console.log('opts', opts);\n\n        return new Chart(ctx, opts);\n    }\n\n    protected calcYAxes(yAxe: any): void {\n        const sets = this.options.calculateMaxForAll ? this.chartData.datasets : this.chartData.datasets.filter(item => !item.hidden);\n        const tickCount = this.options.yAxisLines || 5;\n        // region get max & min values\n        const setsStacked = [{data: []}];\n        // for staked we need to calculate sum of all data values in set\n        if (this.isStacked) {\n            setsStacked[0].data = sets.reduce((acc, item, index) => {\n                item.data.forEach((val, idx) => {\n                    if (acc[idx]) {\n                        acc[idx] += val;\n                    } else {\n                        acc[idx] = val;\n                    }\n                });\n                return acc;\n            }, []);\n        }\n\n        let [max, min] = (this.isStacked ? setsStacked : sets).reduce(\n            ([_max, _min], item) => [Math.max(_max, Math.max.apply(null, item.data)), Math.min(_min, Math.min.apply(null, item.data))],\n            [-Infinity, 0]\n        );\n        // endregion\n\n        const yAxeMaxAddPercent = this.options.yAxeMaxAddPercent;\n        if (!!yAxeMaxAddPercent) {\n            max = max + max * yAxeMaxAddPercent;\n        }\n\n        let stepSize;\n        let formatCallbackObj;\n        if (max <= 1 && min >= -1) {\n            stepSize = 0.2;\n            max = 1;\n            formatCallbackObj = {};\n        } else {\n            const roundTo = Math.pow(10, parseInt(max.toString(), 10).toString().length - 1);\n            const maxVal = Math.ceil((max / roundTo) * 10) * (roundTo / 10);\n            stepSize = parseFloat(((maxVal - min) / tickCount).toFixed(2));\n            max = stepSize * tickCount;\n            formatCallbackObj = {\n                callback: (value: number) => {\n                    return value === 0 ? value : this.getFormatted(value, 'shortString');\n                }\n            };\n        }\n\n        yAxe.ticks = {\n            ...yAxe.ticks,\n            ...{\n                min,\n                max,\n                stepSize\n            },\n            ...formatCallbackObj\n        };\n    }\n\n    protected getFormatted(value: number, format?: string): string {\n        let retVal: string = value.toString();\n        if (!isNullOrUndefined(format)) {\n            const formatter = format.split(':');\n            value = isNumber(value) ? value : Number(value);\n            switch (formatter[0]) {\n                case 'currency':\n                    retVal = this.currencyPipe.transform(value, 'USD', true);\n                    break;\n                case 'shortCurrency':\n                    retVal =\n                        '$' +\n                        this.numberToStringPipe.transform(value, {\n                            noSeparateBySpace: true,\n                            precision: this.componentVersion === 4 ? 3 : undefined\n                        });\n                    break;\n                case 'percent':\n                    retVal = this.percentPipe.transform(value / 100, formatter[1]);\n                    break;\n                case 'number':\n                    retVal = this.decimalPipe.transform(value, formatter[1]);\n                    break;\n                case 'shortString':\n                    retVal = isNumber(value)\n                        ? this.numberToStringPipe.transform(value, {\n                              noSeparateBySpace: true,\n                              precision: this.componentVersion === 4 ? 3 : undefined\n                          })\n                        : value;\n                    break;\n            }\n        }\n        return retVal;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.ChartDataService"],"mappings":"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"}