@embeddable.com/remarkable-pro 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BarChartDefaultHorizontalPro.js +8 -8
- package/dist/BarChartDefaultPro.js +5 -5
- package/dist/BarChartGroupedHorizontalPro.js +5 -5
- package/dist/BarChartGroupedPro.js +5 -5
- package/dist/BarChartStackedHorizontalPro.js +5 -5
- package/dist/BarChartStackedPro.js +5 -5
- package/dist/{ChartCard-Bu-80NJh.js → ChartCard-C94clFr-.js} +10 -10
- package/dist/{ChartCard-Bu-80NJh.js.map → ChartCard-C94clFr-.js.map} +1 -1
- package/dist/{Color.type.emb-JBTB4VAn.js → Color.type.emb-Ba6kRLMO.js} +8029 -8016
- package/dist/{Color.type.emb-JBTB4VAn.js.map → Color.type.emb-Ba6kRLMO.js.map} +1 -1
- package/dist/ColorEditor.js +2 -2
- package/dist/ComparisonPeriodSelectFieldPro.js +3 -3
- package/dist/DateRangePickerCustomPro.js +3 -3
- package/dist/DateRangeSelectFieldPro.js +3 -3
- package/dist/{DimensionAndMeasureSingleSelectField-C5B9m3hv.js → DimensionAndMeasureSingleSelectField-Btd0k1WN.js} +3 -3
- package/dist/{DimensionAndMeasureSingleSelectField-C5B9m3hv.js.map → DimensionAndMeasureSingleSelectField-Btd0k1WN.js.map} +1 -1
- package/dist/DimensionSingleSelectFieldPro.js +4 -4
- package/dist/DonutChartPro.js +7 -7
- package/dist/DonutLabelChartPro.js +4 -4
- package/dist/{EditorCard-DlwWVuY3.js → EditorCard-CvzyUx4Z.js} +3 -3
- package/dist/{EditorCard-DlwWVuY3.js.map → EditorCard-CvzyUx4Z.js.map} +1 -1
- package/dist/{GranularitySelectField-DpCZ47f8.js → GranularitySelectField-YRGQFZcI.js} +24 -23
- package/dist/{GranularitySelectField-DpCZ47f8.js.map → GranularitySelectField-YRGQFZcI.js.map} +1 -1
- package/dist/GranularitySelectFieldPro.js +6 -6
- package/dist/HeatMapPro.js +4 -4
- package/dist/HorizontalDividerPro.js +34 -0
- package/dist/HorizontalDividerPro.js.map +1 -0
- package/dist/{IconCalendarFilled-DPibPYqC.js → IconCalendarFilled-Bez59Tbf.js} +2 -2
- package/dist/{IconCalendarFilled-DPibPYqC.js.map → IconCalendarFilled-Bez59Tbf.js.map} +1 -1
- package/dist/KpiChartNumberComparisonPro.js +4 -4
- package/dist/KpiChartNumberPro.js +6 -6
- package/dist/LineChartComparisonDefaultPro.js +5 -5
- package/dist/LineChartDefaultPro.js +5 -5
- package/dist/LineChartGroupedPro.js +5 -5
- package/dist/MeasureSingleSelectFieldPro.js +4 -4
- package/dist/MultiSelectFieldPro.js +4 -4
- package/dist/PieChartPro.js +4 -4
- package/dist/PivotTablePro.js +4 -4
- package/dist/SingleSelectFieldPro.js +4 -4
- package/dist/TableChartPaginated.js +4 -4
- package/dist/TableScrollable.js +4 -4
- package/dist/{bars.utils-DZf4BZCu.js → bars.utils-D-RpVOx4.js} +4 -4
- package/dist/{bars.utils-DZf4BZCu.js.map → bars.utils-D-RpVOx4.js.map} +1 -1
- package/dist/{charts.utils-MNXWiXfk.js → charts.utils-zx_rdFOh.js} +4 -4
- package/dist/{charts.utils-MNXWiXfk.js.map → charts.utils-zx_rdFOh.js.map} +1 -1
- package/dist/component.inputs.constants-CafM9zee.js +564 -0
- package/dist/component.inputs.constants-CafM9zee.js.map +1 -0
- package/dist/{component.inputs.constants-Cj-atN8w.js → component.utils-DIYAoUYH.js} +332 -889
- package/dist/component.utils-DIYAoUYH.js.map +1 -0
- package/dist/components/shared/HorizontalDividerPro/index.d.ts +7 -0
- package/dist/components/shared/HorizontalDividerPro/index.d.ts.map +1 -0
- package/dist/embeddable-components.json +34 -32
- package/dist/embeddable-theme-0137e.js +1397 -1395
- package/dist/{granularity.utils-COYhEZ3f.js → granularity.utils-SZItYXwU.js} +3 -3
- package/dist/{granularity.utils-COYhEZ3f.js.map → granularity.utils-SZItYXwU.js.map} +1 -1
- package/dist/{index-BfrhwVwQ.js → index-21gf7llZ.js} +2 -2
- package/dist/{index-BfrhwVwQ.js.map → index-21gf7llZ.js.map} +1 -1
- package/dist/{index-DN5C1NTk.js → index-BIO7gVaq.js} +5 -5
- package/dist/{index-DN5C1NTk.js.map → index-BIO7gVaq.js.map} +1 -1
- package/dist/{index-BIYe6Mxp.js → index-BNT6NKHx.js} +16 -16
- package/dist/{index-BIYe6Mxp.js.map → index-BNT6NKHx.js.map} +1 -1
- package/dist/{index-ChBjG9Oi.js → index-BXFoQPId.js} +11 -11
- package/dist/{index-ChBjG9Oi.js.map → index-BXFoQPId.js.map} +1 -1
- package/dist/{index-B0Z1wHFa.js → index-BdxHzCYZ.js} +5 -5
- package/dist/{index-B0Z1wHFa.js.map → index-BdxHzCYZ.js.map} +1 -1
- package/dist/{index-CWAfLnlR.js → index-BpXWgDYM.js} +11 -11
- package/dist/{index-CWAfLnlR.js.map → index-BpXWgDYM.js.map} +1 -1
- package/dist/{index-BLtSOe_I.js → index-BvV-vs_w.js} +7 -7
- package/dist/{index-BLtSOe_I.js.map → index-BvV-vs_w.js.map} +1 -1
- package/dist/{index-r9MBmJ_q.js → index-C944U_JG.js} +5 -5
- package/dist/{index-r9MBmJ_q.js.map → index-C944U_JG.js.map} +1 -1
- package/dist/{index-C6YdlImA.js → index-CAyJ0NrS.js} +10 -10
- package/dist/{index-C6YdlImA.js.map → index-CAyJ0NrS.js.map} +1 -1
- package/dist/{index-5qsLc5gK.js → index-CIEihjtV.js} +5 -5
- package/dist/{index-5qsLc5gK.js.map → index-CIEihjtV.js.map} +1 -1
- package/dist/{index-BwwtBJde.js → index-CMHKa6yP.js} +9 -9
- package/dist/{index-BwwtBJde.js.map → index-CMHKa6yP.js.map} +1 -1
- package/dist/{index-D65Rq3k-.js → index-CZgS6ETq.js} +6 -6
- package/dist/{index-D65Rq3k-.js.map → index-CZgS6ETq.js.map} +1 -1
- package/dist/{index-Ci4fIfj8.js → index-Ce0UWspv.js} +4 -4
- package/dist/{index-Ci4fIfj8.js.map → index-Ce0UWspv.js.map} +1 -1
- package/dist/{index-DA8SRHFS.js → index-CfEzNLT4.js} +16 -16
- package/dist/{index-DA8SRHFS.js.map → index-CfEzNLT4.js.map} +1 -1
- package/dist/{index-77C7AtLU.js → index-CwFEQ-aM.js} +5 -5
- package/dist/{index-77C7AtLU.js.map → index-CwFEQ-aM.js.map} +1 -1
- package/dist/{index-BownhTSN.js → index-D4PsdoMC.js} +10 -10
- package/dist/{index-BownhTSN.js.map → index-D4PsdoMC.js.map} +1 -1
- package/dist/{index-CfSyZuh4.js → index-D7xFEool.js} +20 -20
- package/dist/{index-CfSyZuh4.js.map → index-D7xFEool.js.map} +1 -1
- package/dist/{index-s6HzicAx.js → index-DXP25cW2.js} +20 -20
- package/dist/{index-s6HzicAx.js.map → index-DXP25cW2.js.map} +1 -1
- package/dist/{index-CwEdsnOz.js → index-DehXK1Sh.js} +10 -10
- package/dist/{index-CwEdsnOz.js.map → index-DehXK1Sh.js.map} +1 -1
- package/dist/{index-DILo_r4-.js → index-DjT6EyFA.js} +8 -8
- package/dist/{index-DILo_r4-.js.map → index-DjT6EyFA.js.map} +1 -1
- package/dist/{index-DK0M5jbC.js → index-DmCl_k4C.js} +10 -10
- package/dist/{index-DK0M5jbC.js.map → index-DmCl_k4C.js.map} +1 -1
- package/dist/{index-DKN0VZXM.js → index-Do_uwX96.js} +13 -13
- package/dist/{index-DKN0VZXM.js.map → index-Do_uwX96.js.map} +1 -1
- package/dist/{index-CDfc3oko.js → index-Fd2bQqMW.js} +7 -7
- package/dist/{index-CDfc3oko.js.map → index-Fd2bQqMW.js.map} +1 -1
- package/dist/{index-CKM7Eu4P.js → index-MLteceEX.js} +8 -8
- package/dist/{index-CKM7Eu4P.js.map → index-MLteceEX.js.map} +1 -1
- package/dist/{index-1LMAV7gp.js → index-S9WNhMoH.js} +5 -5
- package/dist/{index-1LMAV7gp.js.map → index-S9WNhMoH.js.map} +1 -1
- package/dist/{index-d6y81S-C.js → index-bL_N9uYo.js} +15 -15
- package/dist/{index-d6y81S-C.js.map → index-bL_N9uYo.js.map} +1 -1
- package/dist/{index-CWoNbj8I.js → index-qtPDcHs8.js} +5 -5
- package/dist/{index-CWoNbj8I.js.map → index-qtPDcHs8.js.map} +1 -1
- package/dist/index.js +126 -125
- package/dist/index.js.map +1 -1
- package/dist/{pies.utils-CxJtBPWG.js → pies.utils-USn2uI6V.js} +5 -5
- package/dist/{pies.utils-CxJtBPWG.js.map → pies.utils-USn2uI6V.js.map} +1 -1
- package/dist/{preview.data.constants-DWqfMVjy.js → preview.data.constants-1No1RU-q.js} +6 -5
- package/dist/{preview.data.constants-DWqfMVjy.js.map → preview.data.constants-1No1RU-q.js.map} +1 -1
- package/dist/remarkable-pro.css +1 -1
- package/dist/{tables.utils-D4RGHDWw.js → tables.utils-BxlCEGVt.js} +4 -4
- package/dist/{tables.utils-D4RGHDWw.js.map → tables.utils-BxlCEGVt.js.map} +1 -1
- package/dist/{timeRange.utils-D8kYnjqp.js → timeRange.utils--6XjFw64.js} +5 -5
- package/dist/{timeRange.utils-D8kYnjqp.js.map → timeRange.utils--6XjFw64.js.map} +1 -1
- package/package.json +1 -1
- package/dist/component.inputs.constants-Cj-atN8w.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-d6y81S-C.js","sources":["../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.ts","../src/components/charts/lines/LineChartGroupedPro/index.tsx"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { mergician } from 'mergician';\nimport { getDimensionMeasureColor } from '../../../../theme/styles/styles.utils';\nimport { setColorAlpha } from '../../../../utils/color.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { getLineChartProOptionsOnClick, LineChartProOptionsClick } from '../lines.utils';\n\nexport const getLineChartGroupedProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n hasMinMaxYAxisRange: boolean;\n },\n theme: Theme,\n): ChartData<'line'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure, hasMinMaxYAxisRange } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupBy = [...new Set(data.map((d) => d[groupDimension.name]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets: ChartData<'line'>['datasets'] = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n chartColors,\n index,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n chartColors,\n index,\n });\n\n const dataset = {\n clip: hasMinMaxYAxisRange,\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor: setColorAlpha(backgroundColor, 0.5),\n pointBackgroundColor: backgroundColor,\n fill: measure.inputs?.['fillUnderLine'],\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimension.name] === groupByItem && d[dimension.name] === axisItem,\n );\n return record?.[measure.name] ?? (measure.inputs?.['connectGaps'] ? 0 : null);\n }),\n } as ChartData<'line'>['datasets'][number];\n\n return dataset;\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getLineChartGroupedProOptions = (\n options: {\n dimension: Dimension;\n measure: Measure;\n data: ChartData<'line'>;\n onLineClicked?: LineChartProOptionsClick;\n },\n theme: Theme,\n): ChartOptions<'line'> => {\n const { dimension, data, measure, onLineClicked } = options;\n const themeFormatter = getThemeFormatter(theme);\n\n const lineChartOptions: ChartOptions<'line'> = {\n plugins: {\n datalabels: {\n labels: {\n value: {\n formatter: (value: string | number) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const raw = context.raw as number;\n return `${context.dataset.label}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n };\n\n return mergician(\n getLineChartProOptionsOnClick({ onLineClicked }),\n lineChartOptions,\n theme.charts?.lineChartGroupedPro?.options || {},\n );\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Dimension, Granularity, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport {\n getLineChartGroupedProData,\n getLineChartGroupedProOptions,\n} from './LineChartGroupedPro.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport { LineChartProOptionsClick } from '../lines.utils';\nimport { LineChart } from '@embeddable.com/remarkable-ui';\nimport { ChartGranularitySelectField } from '../../shared/ChartGranularitySelectField/ChartGranularitySelectField';\n\nexport type LineChartGroupedProPropsOnLineClicked = {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n};\n\nexport type LineChartGroupedProProp = {\n xAxis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n results: DataResponse;\n reverseXAxis?: boolean;\n showLegend?: boolean;\n showLogarithmicScale?: boolean;\n showTooltips?: boolean;\n showValueLabels?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n yAxisRangeMax?: number;\n yAxisRangeMin?: number;\n setGranularity: (granularity: Granularity) => void;\n onLineClicked?: LineChartProOptionsClick;\n} & ChartCardHeaderProps;\n\nconst LineChartGroupedPro = (props: LineChartGroupedProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n hideMenu,\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\n setGranularity,\n onLineClicked,\n } = props;\n\n const results = useFillGaps({\n results: props.results,\n dimension: props.xAxis,\n });\n\n const data = getLineChartGroupedProData(\n {\n data: results.data,\n dimension: xAxis,\n groupDimension: groupBy,\n measure,\n hasMinMaxYAxisRange: Boolean(yAxisRangeMin != null || yAxisRangeMax != null),\n },\n theme,\n );\n const options = getLineChartGroupedProOptions(\n { data, dimension: xAxis, measure, onLineClicked },\n theme,\n );\n\n const granularitySelectorHasMarginTop = !title && !description && !tooltip;\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n description={description}\n title={title}\n tooltip={tooltip}\n hideMenu={hideMenu}\n >\n <ChartGranularitySelectField\n hasMarginTop={granularitySelectorHasMarginTop}\n dimension={xAxis}\n onChange={setGranularity}\n />\n <LineChart\n data={data}\n reverseXAxis={reverseXAxis}\n showLegend={showLegend}\n showLogarithmicScale={showLogarithmicScale}\n showTooltips={showTooltips}\n showValueLabels={showValueLabels}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n yAxisRangeMax={yAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n options={options}\n />\n </ChartCard>\n );\n};\n\nexport default LineChartGroupedPro;\n"],"names":["getLineChartGroupedProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","hasMinMaxYAxisRange","axis","d","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","setColorAlpha","_a","axisItem","record","getLineChartGroupedProOptions","options","onLineClicked","lineChartOptions","value","context","label","raw","mergician","getLineChartProOptionsOnClick","_b","LineChartGroupedPro","useTheme","i18nSetup","title","description","tooltip","xAxisLabel","yAxisLabel","resolveI18nProps","hideMenu","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","setGranularity","results","useFillGaps","granularitySelectorHasMarginTop","jsxs","ChartCard","jsx","ChartGranularitySelectField","LineChart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-bL_N9uYo.js","sources":["../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.ts","../src/components/charts/lines/LineChartGroupedPro/index.tsx"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { mergician } from 'mergician';\nimport { getDimensionMeasureColor } from '../../../../theme/styles/styles.utils';\nimport { setColorAlpha } from '../../../../utils/color.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { getLineChartProOptionsOnClick, LineChartProOptionsClick } from '../lines.utils';\n\nexport const getLineChartGroupedProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n hasMinMaxYAxisRange: boolean;\n },\n theme: Theme,\n): ChartData<'line'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure, hasMinMaxYAxisRange } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupBy = [...new Set(data.map((d) => d[groupDimension.name]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets: ChartData<'line'>['datasets'] = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n chartColors,\n index,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n chartColors,\n index,\n });\n\n const dataset = {\n clip: hasMinMaxYAxisRange,\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor: setColorAlpha(backgroundColor, 0.5),\n pointBackgroundColor: backgroundColor,\n fill: measure.inputs?.['fillUnderLine'],\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimension.name] === groupByItem && d[dimension.name] === axisItem,\n );\n return record?.[measure.name] ?? (measure.inputs?.['connectGaps'] ? 0 : null);\n }),\n } as ChartData<'line'>['datasets'][number];\n\n return dataset;\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getLineChartGroupedProOptions = (\n options: {\n dimension: Dimension;\n measure: Measure;\n data: ChartData<'line'>;\n onLineClicked?: LineChartProOptionsClick;\n },\n theme: Theme,\n): ChartOptions<'line'> => {\n const { dimension, data, measure, onLineClicked } = options;\n const themeFormatter = getThemeFormatter(theme);\n\n const lineChartOptions: ChartOptions<'line'> = {\n plugins: {\n datalabels: {\n labels: {\n value: {\n formatter: (value: string | number) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const raw = context.raw as number;\n return `${context.dataset.label}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n };\n\n return mergician(\n getLineChartProOptionsOnClick({ onLineClicked }),\n lineChartOptions,\n theme.charts?.lineChartGroupedPro?.options || {},\n );\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Dimension, Granularity, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport {\n getLineChartGroupedProData,\n getLineChartGroupedProOptions,\n} from './LineChartGroupedPro.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport { LineChartProOptionsClick } from '../lines.utils';\nimport { LineChart } from '@embeddable.com/remarkable-ui';\nimport { ChartGranularitySelectField } from '../../shared/ChartGranularitySelectField/ChartGranularitySelectField';\n\nexport type LineChartGroupedProPropsOnLineClicked = {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n};\n\nexport type LineChartGroupedProProp = {\n xAxis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n results: DataResponse;\n reverseXAxis?: boolean;\n showLegend?: boolean;\n showLogarithmicScale?: boolean;\n showTooltips?: boolean;\n showValueLabels?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n yAxisRangeMax?: number;\n yAxisRangeMin?: number;\n setGranularity: (granularity: Granularity) => void;\n onLineClicked?: LineChartProOptionsClick;\n} & ChartCardHeaderProps;\n\nconst LineChartGroupedPro = (props: LineChartGroupedProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n hideMenu,\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\n setGranularity,\n onLineClicked,\n } = props;\n\n const results = useFillGaps({\n results: props.results,\n dimension: props.xAxis,\n });\n\n const data = getLineChartGroupedProData(\n {\n data: results.data,\n dimension: xAxis,\n groupDimension: groupBy,\n measure,\n hasMinMaxYAxisRange: Boolean(yAxisRangeMin != null || yAxisRangeMax != null),\n },\n theme,\n );\n const options = getLineChartGroupedProOptions(\n { data, dimension: xAxis, measure, onLineClicked },\n theme,\n );\n\n const granularitySelectorHasMarginTop = !title && !description && !tooltip;\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n description={description}\n title={title}\n tooltip={tooltip}\n hideMenu={hideMenu}\n >\n <ChartGranularitySelectField\n hasMarginTop={granularitySelectorHasMarginTop}\n dimension={xAxis}\n onChange={setGranularity}\n />\n <LineChart\n data={data}\n reverseXAxis={reverseXAxis}\n showLegend={showLegend}\n showLogarithmicScale={showLogarithmicScale}\n showTooltips={showTooltips}\n showValueLabels={showValueLabels}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n yAxisRangeMax={yAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n options={options}\n />\n </ChartCard>\n );\n};\n\nexport default LineChartGroupedPro;\n"],"names":["getLineChartGroupedProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","hasMinMaxYAxisRange","axis","d","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","setColorAlpha","_a","axisItem","record","getLineChartGroupedProOptions","options","onLineClicked","lineChartOptions","value","context","label","raw","mergician","getLineChartProOptionsOnClick","_b","LineChartGroupedPro","useTheme","i18nSetup","title","description","tooltip","xAxisLabel","yAxisLabel","resolveI18nProps","hideMenu","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","setGranularity","results","useFillGaps","granularitySelectorHasMarginTop","jsxs","ChartCard","jsx","ChartGranularitySelectField","LineChart"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { j as n, f as b } from "./Color.type.emb-
|
|
1
|
+
import { j as n, f as b } from "./Color.type.emb-Ba6kRLMO.js";
|
|
2
2
|
import { useTheme as j } from "@embeddable.com/react";
|
|
3
3
|
import { u as D, c as y, g as x, a as C } from "./dates.utils-D13NY0HZ.js";
|
|
4
|
-
import {
|
|
5
|
-
import { E as L } from "./EditorCard-
|
|
6
|
-
import { I as O } from "./IconCalendarFilled-
|
|
4
|
+
import { a as M, r as P, i as T } from "./component.utils-DIYAoUYH.js";
|
|
5
|
+
import { E as L } from "./EditorCard-CvzyUx4Z.js";
|
|
6
|
+
import { I as O } from "./IconCalendarFilled-Bez59Tbf.js";
|
|
7
7
|
const v = (a) => {
|
|
8
8
|
const e = j();
|
|
9
9
|
M(e);
|
|
@@ -37,4 +37,4 @@ export {
|
|
|
37
37
|
v as D,
|
|
38
38
|
w as i
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=index-
|
|
40
|
+
//# sourceMappingURL=index-qtPDcHs8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-qtPDcHs8.js","sources":["../src/components/editors/dates/DateRangePickerCustomPro/index.tsx"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { DateRange, DateRangePickerField } from '@embeddable.com/remarkable-ui';\nimport { Theme } from '../../../../theme/theme.types';\nimport { useLoadDayjsLocale } from '../../../../utils/date.utils';\nimport { TimeRange } from '@embeddable.com/core';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { EditorCard, EditorCardHeaderProps } from '../../shared/EditorCard/EditorCard';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport {\n getDateRangeFromTimeRange,\n getTimeRangeFromDateRange,\n getTimeRangeLabel,\n} from '../dates.utils';\nimport { IconCalendarFilled } from '@tabler/icons-react';\n\nexport type DateRangePickerPresetsProps = {\n onChange: (newDateRange: TimeRange) => void;\n placeholder?: string;\n selectedValue?: TimeRange;\n clearable?: boolean;\n showTwoMonths?: boolean;\n} & EditorCardHeaderProps;\n\nconst DateRangePickerPresets = (props: DateRangePickerPresetsProps) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { dayjsLocaleReady } = useLoadDayjsLocale();\n\n if (!dayjsLocaleReady) {\n return null;\n }\n\n const { description, placeholder, title, tooltip } = resolveI18nProps(props);\n const { onChange, clearable, selectedValue, showTwoMonths } = props;\n\n const handleChange = (newDateRange: DateRange | undefined) => {\n const timeRange: TimeRange = getTimeRangeFromDateRange(newDateRange);\n onChange(timeRange);\n };\n\n const dateRangeOptions = theme.defaults.dateRangesOptions;\n const displayValue = getTimeRangeLabel(selectedValue, 'MMM DD', dateRangeOptions);\n\n const locale = theme.i18n.language ?? theme.formatter.locale;\n\n return (\n <EditorCard title={title} description={description} tooltip={tooltip}>\n <DateRangePickerField\n startIcon={IconCalendarFilled}\n locale={locale}\n clearable={clearable}\n placeholder={placeholder}\n displayValue={displayValue}\n numberOfMonths={showTwoMonths ? 2 : 1}\n value={getDateRangeFromTimeRange(selectedValue, dateRangeOptions)}\n onChange={handleChange}\n submitLabel={i18n.t('editors.dateRangePicker.apply')}\n avoidCollisions={false}\n />\n </EditorCard>\n );\n};\n\nexport default DateRangePickerPresets;\n"],"names":["DateRangePickerPresets","props","theme","useTheme","i18nSetup","dayjsLocaleReady","useLoadDayjsLocale","description","placeholder","title","tooltip","resolveI18nProps","onChange","clearable","selectedValue","showTwoMonths","handleChange","newDateRange","timeRange","getTimeRangeFromDateRange","dateRangeOptions","displayValue","getTimeRangeLabel","locale","jsx","EditorCard","DateRangePickerField","IconCalendarFilled","getDateRangeFromTimeRange","i18n"],"mappings":";;;;;;AAuBA,MAAMA,IAAyB,CAACC,MAAuC;AACrE,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAM,EAAE,kBAAAG,EAAA,IAAqBC,EAAA;AAE7B,MAAI,CAACD;AACH,WAAO;AAGT,QAAM,EAAE,aAAAE,GAAa,aAAAC,GAAa,OAAAC,GAAO,SAAAC,EAAA,IAAYC,EAAiBV,CAAK,GACrE,EAAE,UAAAW,GAAU,WAAAC,GAAW,eAAAC,GAAe,eAAAC,MAAkBd,GAExDe,IAAe,CAACC,MAAwC;AAC5D,UAAMC,IAAuBC,EAA0BF,CAAY;AACnE,IAAAL,EAASM,CAAS;AAAA,EACpB,GAEME,IAAmBlB,EAAM,SAAS,mBAClCmB,IAAeC,EAAkBR,GAAe,UAAUM,CAAgB,GAE1EG,IAASrB,EAAM,KAAK,YAAYA,EAAM,UAAU;AAEtD,SACEsB,gBAAAA,EAAAA,IAACC,GAAA,EAAW,OAAAhB,GAAc,aAAAF,GAA0B,SAAAG,GAClD,UAAAc,gBAAAA,EAAAA;AAAAA,IAACE;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,MACX,QAAAJ;AAAA,MACA,WAAAV;AAAA,MACA,aAAAL;AAAA,MACA,cAAAa;AAAA,MACA,gBAAgBN,IAAgB,IAAI;AAAA,MACpC,OAAOa,EAA0Bd,GAAeM,CAAgB;AAAA,MAChE,UAAUJ;AAAA,MACV,aAAaa,EAAK,EAAE,+BAA+B;AAAA,MACnD,iBAAiB;AAAA,IAAA;AAAA,EAAA,GAErB;AAEJ;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -1,144 +1,145 @@
|
|
|
1
1
|
import { g as r, a as o, b as t, i as s } from "./styles.utils-BfpH_m_W.js";
|
|
2
2
|
import { i as l, s as n } from "./color.utils-BSg_DFOh.js";
|
|
3
|
-
import { c as m, g, i as P, p as f } from "./preview.data.constants-
|
|
3
|
+
import { c as m, g, i as P, p as f } from "./preview.data.constants-1No1RU-q.js";
|
|
4
4
|
import { g as u, a as d, b as x, c as h, l as S, d as b, u as c } from "./dates.utils-D13NY0HZ.js";
|
|
5
|
-
import { d as T, a as F, b as L, c as O, e as G, f as R, g as y, h as B, r as v, i as M, j as A } from "./charts.utils-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { i as
|
|
10
|
-
import { i as
|
|
11
|
-
import { i as
|
|
12
|
-
import { i as
|
|
13
|
-
import { i as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { i as
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { i as
|
|
20
|
-
import { i as
|
|
21
|
-
import { g as
|
|
22
|
-
import {
|
|
23
|
-
import { i as
|
|
24
|
-
import { i as
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { i as
|
|
28
|
-
import { i as
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import { g as
|
|
32
|
-
import {
|
|
33
|
-
import { C as
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import { i as
|
|
38
|
-
import { i as
|
|
39
|
-
import { i as
|
|
40
|
-
import { i as
|
|
41
|
-
import { i as
|
|
42
|
-
import { i as
|
|
43
|
-
import { i as
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
5
|
+
import { d as T, a as F, b as L, c as O, e as G, f as R, g as y, h as B, r as v, i as M, j as A } from "./charts.utils-zx_rdFOh.js";
|
|
6
|
+
import { i as I, a as E, r as H, b as j } from "./component.utils-DIYAoUYH.js";
|
|
7
|
+
import { C as V, G as w, d as z, a as N, g as W, i as X, s as _, t as U, b as Z } from "./component.inputs.constants-CafM9zee.js";
|
|
8
|
+
import { g as J, a as Q } from "./timeRange.utils--6XjFw64.js";
|
|
9
|
+
import { i as $ } from "./index-DehXK1Sh.js";
|
|
10
|
+
import { i as ae } from "./index-CZgS6ETq.js";
|
|
11
|
+
import { i as oe } from "./index-Do_uwX96.js";
|
|
12
|
+
import { i as se } from "./index-BNT6NKHx.js";
|
|
13
|
+
import { i as le } from "./index-DXP25cW2.js";
|
|
14
|
+
import { i as pe } from "./index-CAyJ0NrS.js";
|
|
15
|
+
import { g as ge, a as Pe, b as fe } from "./bars.utils-D-RpVOx4.js";
|
|
16
|
+
import { i as ue } from "./index-D4PsdoMC.js";
|
|
17
|
+
import { i as xe } from "./index-BpXWgDYM.js";
|
|
18
|
+
import { g as Se } from "./kpis.utils-DsZ2GzuB.js";
|
|
19
|
+
import { i as ce, g as De, a as Te } from "./index-CfEzNLT4.js";
|
|
20
|
+
import { i as Le, g as Oe, a as Ge } from "./index-bL_N9uYo.js";
|
|
21
|
+
import { i as ye, g as Be, a as ve } from "./index-Fd2bQqMW.js";
|
|
22
|
+
import { g as Ae } from "./lines.utils-CEGfmIHB.js";
|
|
23
|
+
import { i as Ie } from "./index-DjT6EyFA.js";
|
|
24
|
+
import { i as He } from "./index-C944U_JG.js";
|
|
25
|
+
import { i as Ke } from "./index-DmCl_k4C.js";
|
|
26
|
+
import { g as we, a as ze } from "./pies.utils-USn2uI6V.js";
|
|
27
|
+
import { i as We } from "./index-BXFoQPId.js";
|
|
28
|
+
import { i as _e, g as Ue, a as Ze, b as qe, c as Je } from "./index-S9WNhMoH.js";
|
|
29
|
+
import { i as Ye } from "./index-CwFEQ-aM.js";
|
|
30
|
+
import { T as ea, i as aa } from "./index-D7xFEool.js";
|
|
31
|
+
import { g as oa, a as ta, b as sa, c as ia } from "./tables.utils-BxlCEGVt.js";
|
|
32
|
+
import { g as na, u as pa } from "./tables.hooks-fVC_4V5K.js";
|
|
33
|
+
import { C as ga } from "./ChartCard-C94clFr-.js";
|
|
34
|
+
import { C as fa, g as Ca } from "./granularity.utils-SZItYXwU.js";
|
|
35
|
+
import { i as da } from "./index-CzKKN6Om.js";
|
|
36
|
+
import { u as ha } from "./charts.fillGaps.hooks-C7KsWcZb.js";
|
|
37
|
+
import { i as ba, g as ca, a as Da } from "./index-Ce0UWspv.js";
|
|
38
|
+
import { i as Fa, g as La } from "./index-CMHKa6yP.js";
|
|
39
|
+
import { i as Ga } from "./index-qtPDcHs8.js";
|
|
40
|
+
import { i as ya } from "./index-BIO7gVaq.js";
|
|
41
|
+
import { i as va } from "./index-BdxHzCYZ.js";
|
|
42
|
+
import { i as Aa } from "./index-BvV-vs_w.js";
|
|
43
|
+
import { i as Ia } from "./index-CIEihjtV.js";
|
|
44
|
+
import { i as Ha } from "./index-MLteceEX.js";
|
|
45
|
+
import { E as Ka } from "./EditorCard-CvzyUx4Z.js";
|
|
46
|
+
import { D as wa, g as za } from "./DimensionAndMeasureSingleSelectField-Btd0k1WN.js";
|
|
47
|
+
import { G as Wa, g as Xa, a as _a, b as Ua } from "./GranularitySelectField-YRGQFZcI.js";
|
|
48
|
+
import { i as qa } from "./index-21gf7llZ.js";
|
|
48
49
|
export {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
50
|
+
se as BarChartDefaultHorizontalPro,
|
|
51
|
+
$ as BarChartDefaultPro,
|
|
52
|
+
pe as BarChartGroupedHorizontalPro,
|
|
53
|
+
oe as BarChartGroupedPro,
|
|
54
|
+
le as BarChartStackedHorizontalPro,
|
|
55
|
+
ae as BarChartStackedPro,
|
|
56
|
+
ga as ChartCard,
|
|
57
|
+
fa as ChartGranularitySelectField,
|
|
58
|
+
qa as ColorEditorPro,
|
|
59
|
+
ba as ComparisonPeriodSelectFieldPro,
|
|
60
|
+
V as ComparisonPeriodType,
|
|
61
|
+
Ga as DateRangePickerCustomPro,
|
|
62
|
+
Fa as DateRangeSelectFieldPro,
|
|
63
|
+
wa as DimensionAndMeasureSingleSelectField,
|
|
64
|
+
Aa as DimensionSingleSelectFieldPro,
|
|
65
|
+
Ie as DonutChartPro,
|
|
66
|
+
Ke as DonutLabelChartPro,
|
|
67
|
+
Ka as EditorCard,
|
|
68
|
+
da as EmptyContainerPro,
|
|
69
|
+
w as Granularity,
|
|
70
|
+
Wa as GranularitySelectField,
|
|
71
|
+
Ha as GranularitySelectFieldPro,
|
|
72
|
+
We as HeatMapPro,
|
|
73
|
+
xe as KpiChartNumberComparisonPro,
|
|
74
|
+
ue as KpiChartNumberPro,
|
|
75
|
+
ye as LineChartComparisonDefaultPro,
|
|
76
|
+
ce as LineChartDefaultPro,
|
|
77
|
+
Le as LineChartGroupedPro,
|
|
78
|
+
Ia as MeasureSingleSelectFieldPro,
|
|
79
|
+
ya as MultiSelectFieldPro,
|
|
80
|
+
He as PieChartPro,
|
|
81
|
+
_e as PivotTablePro,
|
|
82
|
+
va as SingleSelectFieldPro,
|
|
83
|
+
ea as TABLE_SCROLLABLE_SIZE,
|
|
84
|
+
Ye as TableChartPaginatedPro,
|
|
85
|
+
aa as TableScrollablePro,
|
|
85
86
|
m as cache,
|
|
86
87
|
T as defaultChartMenuProOptions,
|
|
87
88
|
F as defaultComparisonPeriodOptions,
|
|
88
89
|
L as defaultDateRangeOptions,
|
|
89
|
-
|
|
90
|
+
z as defaultGranularitySelectFieldOptions,
|
|
90
91
|
O as defaultTableCellStyleOptions,
|
|
91
|
-
|
|
92
|
+
N as dimensionMeasureSubInputs,
|
|
92
93
|
G as exportCSV,
|
|
93
94
|
R as exportPNG,
|
|
94
95
|
y as exportXLSX,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
Xa as getAvailableGranularityOptionsFromTimeRange,
|
|
97
|
+
ge as getBarChartProData,
|
|
98
|
+
Pe as getBarChartProOptions,
|
|
99
|
+
fe as getBarStackedChartProData,
|
|
99
100
|
r as getColor,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
J as getComparisonPeriodDateRange,
|
|
102
|
+
Q as getComparisonPeriodLabel,
|
|
103
|
+
ca as getComparisonPeriodSelectFieldProOptions,
|
|
103
104
|
u as getDateRangeFromTimeRange,
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
La as getDateRangeSelectFieldProOptions,
|
|
106
|
+
za as getDimensionAndMeasureOptions,
|
|
106
107
|
o as getDimensionMeasureColor,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
108
|
+
Ca as getDimensionWithGranularity,
|
|
109
|
+
_a as getGranularitySelectFieldOptions,
|
|
110
|
+
Se as getKpiResults,
|
|
111
|
+
Be as getLineChartComparisonProData,
|
|
112
|
+
ve as getLineChartComparisonProOptions,
|
|
113
|
+
Oe as getLineChartGroupedProData,
|
|
114
|
+
Ge as getLineChartGroupedProOptions,
|
|
115
|
+
De as getLineChartProData,
|
|
116
|
+
Te as getLineChartProOptions,
|
|
117
|
+
Ae as getLineChartProOptionsOnClick,
|
|
117
118
|
t as getObjectStableKey,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
119
|
+
we as getPieChartProData,
|
|
120
|
+
ze as getPieChartProOptions,
|
|
121
|
+
Ue as getPivotColumnTotalsFor,
|
|
122
|
+
Ze as getPivotDimension,
|
|
123
|
+
qe as getPivotMeasures,
|
|
124
|
+
Je as getPivotRowTotalsFor,
|
|
125
|
+
Ua as getSafeSelection,
|
|
126
|
+
oa as getTableHeaderAlign,
|
|
127
|
+
ta as getTableHeaderMinWidth,
|
|
128
|
+
sa as getTableHeaders,
|
|
129
|
+
ia as getTableRows,
|
|
130
|
+
na as getTableSortedResults,
|
|
130
131
|
g as getThemeFormatter,
|
|
131
132
|
d as getTimeRangeFromDateRange,
|
|
132
133
|
x as getTimeRangeFromPresets,
|
|
133
134
|
h as getTimeRangeLabel,
|
|
134
|
-
|
|
135
|
+
W as granularities,
|
|
135
136
|
B as groupTailAsOther,
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
I as i18n,
|
|
138
|
+
E as i18nSetup,
|
|
138
139
|
s as injectCssVariables,
|
|
139
|
-
|
|
140
|
+
X as inputs,
|
|
140
141
|
l as isColorValid,
|
|
141
|
-
|
|
142
|
+
Da as isComparisonPeriodAvailable,
|
|
142
143
|
P as isValidISODate,
|
|
143
144
|
S as loadDayjsLocale,
|
|
144
145
|
b as localToUtcDate,
|
|
@@ -146,14 +147,14 @@ export {
|
|
|
146
147
|
v as remarkableTheme,
|
|
147
148
|
M as remarkableThemeFormatter,
|
|
148
149
|
A as remarkableThemeStyles,
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
H as resolveI18nProps,
|
|
151
|
+
j as resolveI18nString,
|
|
151
152
|
n as setColorAlpha,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
_ as subInputs,
|
|
154
|
+
U as timeDimensionSubInputs,
|
|
155
|
+
Z as timeDimensionWithGranularitySelectFieldSubInputs,
|
|
156
|
+
ha as useFillGaps,
|
|
157
|
+
pa as useGetTableSortedResults,
|
|
157
158
|
c as useLoadDayjsLocale
|
|
158
159
|
};
|
|
159
160
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { r as c, h as g } from "./charts.utils-
|
|
2
|
-
import { g as u } from "./preview.data.constants-
|
|
1
|
+
import { r as c, h as g } from "./charts.utils-zx_rdFOh.js";
|
|
2
|
+
import { g as u } from "./preview.data.constants-1No1RU-q.js";
|
|
3
3
|
import { a as l } from "./styles.utils-BfpH_m_W.js";
|
|
4
|
-
import { a as b } from "./Color.type.emb-
|
|
5
|
-
import { i as f } from "./component.
|
|
4
|
+
import { a as b } from "./Color.type.emb-Ba6kRLMO.js";
|
|
5
|
+
import { i as f } from "./component.utils-DIYAoUYH.js";
|
|
6
6
|
const F = (a, n = c) => {
|
|
7
7
|
const s = u(n);
|
|
8
8
|
if (!a.data)
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
M as a,
|
|
75
75
|
F as g
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=pies.utils-
|
|
77
|
+
//# sourceMappingURL=pies.utils-USn2uI6V.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pies.utils-
|
|
1
|
+
{"version":3,"file":"pies.utils-USn2uI6V.js","sources":["../src/components/charts/pies/pies.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { groupTailAsOther } from '../charts.utils';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { i18n } from '../../../theme/i18n/i18n';\n\nexport const getPieChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measure: Measure;\n maxLegendItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'pie'> => {\n const themeFormatter = getThemeFormatter(theme);\n\n if (!props.data)\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n\n const groupedData = groupTailAsOther(\n props.data,\n props.dimension,\n [props.measure],\n props.maxLegendItems,\n );\n\n const chartColors = getChartColors();\n const backgroundColor = groupedData.map((item, index) =>\n getDimensionMeasureColor({\n dimensionOrMeasure: props.dimension,\n theme,\n color: 'background',\n value: `${props.dimension.name}.${item[props.dimension.name]}`,\n chartColors,\n index,\n }),\n );\n\n const borderColor = groupedData.map((item, index) =>\n getDimensionMeasureColor({\n dimensionOrMeasure: props.dimension,\n theme,\n color: 'border',\n value: `${props.dimension.name}.${item[props.dimension.name]}`,\n chartColors,\n index,\n }),\n );\n\n return {\n labels: groupedData.map((item) => {\n const value = item[props.dimension.name];\n const formattedValue = themeFormatter.data(props.dimension, value);\n\n // If formatter did not work, try i18n translation\n if (value === formattedValue) {\n return i18n.t(value);\n }\n return formattedValue;\n }),\n datasets: [\n {\n data: groupedData.map((item) => item[props.measure.name]),\n backgroundColor,\n borderColor,\n },\n ],\n };\n};\n\nexport const getPieChartProOptions = (\n measure: Measure,\n theme: Theme = remarkableTheme,\n): Partial<ChartOptions<'pie'>> => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n formatter: (value: string | number) => themeFormatter.data(measure, value),\n },\n tooltip: {\n callbacks: {\n label(context) {\n const raw = context.raw as number;\n const total = context.dataset.data.reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (sum: number, v: any) => sum + parseFloat(v),\n 0,\n );\n const pct = Math.round((raw / total) * 100);\n return `${themeFormatter.data(measure, raw)} (${pct}%)`;\n },\n },\n },\n },\n };\n};\n"],"names":["getPieChartProData","props","theme","remarkableTheme","themeFormatter","getThemeFormatter","groupedData","groupTailAsOther","chartColors","getChartColors","backgroundColor","item","index","getDimensionMeasureColor","borderColor","value","formattedValue","i18n","getPieChartProOptions","measure","context","raw","total","sum","v","pct"],"mappings":";;;;;AAUO,MAAMA,IAAqB,CAChCC,GAMAC,IAAeC,MACM;AACrB,QAAMC,IAAiBC,EAAkBH,CAAK;AAE9C,MAAI,CAACD,EAAM;AACT,WAAO;AAAA,MACL,QAAQ,CAAA;AAAA,MACR,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,IAAA;AAG3B,QAAMK,IAAcC;AAAA,IAClBN,EAAM;AAAA,IACNA,EAAM;AAAA,IACN,CAACA,EAAM,OAAO;AAAA,IACdA,EAAM;AAAA,EAAA,GAGFO,IAAcC,EAAA,GACdC,IAAkBJ,EAAY;AAAA,IAAI,CAACK,GAAMC,MAC7CC,EAAyB;AAAA,MACvB,oBAAoBZ,EAAM;AAAA,MAC1B,OAAAC;AAAA,MACA,OAAO;AAAA,MACP,OAAO,GAAGD,EAAM,UAAU,IAAI,IAAIU,EAAKV,EAAM,UAAU,IAAI,CAAC;AAAA,MAC5D,aAAAO;AAAA,MACA,OAAAI;AAAA,IAAA,CACD;AAAA,EAAA,GAGGE,IAAcR,EAAY;AAAA,IAAI,CAACK,GAAMC,MACzCC,EAAyB;AAAA,MACvB,oBAAoBZ,EAAM;AAAA,MAC1B,OAAAC;AAAA,MACA,OAAO;AAAA,MACP,OAAO,GAAGD,EAAM,UAAU,IAAI,IAAIU,EAAKV,EAAM,UAAU,IAAI,CAAC;AAAA,MAC5D,aAAAO;AAAA,MACA,OAAAI;AAAA,IAAA,CACD;AAAA,EAAA;AAGH,SAAO;AAAA,IACL,QAAQN,EAAY,IAAI,CAACK,MAAS;AAChC,YAAMI,IAAQJ,EAAKV,EAAM,UAAU,IAAI,GACjCe,IAAiBZ,EAAe,KAAKH,EAAM,WAAWc,CAAK;AAGjE,aAAIA,MAAUC,IACLC,EAAK,EAAEF,CAAK,IAEdC;AAAA,IACT,CAAC;AAAA,IACD,UAAU;AAAA,MACR;AAAA,QACE,MAAMV,EAAY,IAAI,CAACK,MAASA,EAAKV,EAAM,QAAQ,IAAI,CAAC;AAAA,QACxD,iBAAAS;AAAA,QACA,aAAAI;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ,GAEaI,IAAwB,CACnCC,GACAjB,IAAeC,MACkB;AACjC,QAAMC,IAAiBC,EAAkBH,CAAK;AAE9C,SAAO;AAAA,IACL,SAAS;AAAA,MACP,QAAQ,EAAE,UAAUA,EAAM,OAAO,kBAAkB,SAAA;AAAA,MACnD,YAAY;AAAA,QACV,WAAW,CAACa,MAA2BX,EAAe,KAAKe,GAASJ,CAAK;AAAA,MAAA;AAAA,MAE3E,SAAS;AAAA,QACP,WAAW;AAAA,UACT,MAAMK,GAAS;AACb,kBAAMC,IAAMD,EAAQ,KACdE,IAAQF,EAAQ,QAAQ,KAAK;AAAA;AAAA,cAEjC,CAACG,GAAaC,MAAWD,IAAM,WAAWC,CAAC;AAAA,cAC3C;AAAA,YAAA,GAEIC,IAAM,KAAK,MAAOJ,IAAMC,IAAS,GAAG;AAC1C,mBAAO,GAAGlB,EAAe,KAAKe,GAASE,CAAG,CAAC,KAAKI,CAAG;AAAA,UACrD;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { b as T } from "./component.utils-DIYAoUYH.js";
|
|
2
|
+
import { D as N } from "./component.inputs.constants-CafM9zee.js";
|
|
3
|
+
import { R, U as b, W as i } from "./Color.type.emb-Ba6kRLMO.js";
|
|
3
4
|
const m = (a) => {
|
|
4
5
|
const c = {};
|
|
5
6
|
return (d) => {
|
|
@@ -27,7 +28,7 @@ const m = (a) => {
|
|
|
27
28
|
var s;
|
|
28
29
|
const r = (s = t.inputs) == null ? void 0 : s.displayName;
|
|
29
30
|
if (r)
|
|
30
|
-
return r.includes("|") ?
|
|
31
|
+
return r.includes("|") ? T(r) : r;
|
|
31
32
|
const n = e(t).format(t.name);
|
|
32
33
|
return n === t.name ? t.title ?? t.name : n;
|
|
33
34
|
},
|
|
@@ -48,7 +49,7 @@ const m = (a) => {
|
|
|
48
49
|
return (A = t.inputs) != null && A.maxCharacters ? s.length <= t.inputs.maxCharacters ? s : s.substring(0, t.inputs.maxCharacters) + "..." : s;
|
|
49
50
|
}
|
|
50
51
|
};
|
|
51
|
-
}, u = "country", o = "count", E = "average", p = "category", M = R(u, "string", { title: "Country" }), G =
|
|
52
|
+
}, u = "country", o = "count", E = "average", p = "category", M = R(u, "string", { title: "Country" }), G = b(o, "number", { title: "Count" }), V = b(E, "number", { title: "Average" }), K = R(p, "string", {
|
|
52
53
|
title: "Category"
|
|
53
54
|
}), x = i(
|
|
54
55
|
[u, o],
|
|
@@ -120,4 +121,4 @@ export {
|
|
|
120
121
|
O as i,
|
|
121
122
|
B as p
|
|
122
123
|
};
|
|
123
|
-
//# sourceMappingURL=preview.data.constants-
|
|
124
|
+
//# sourceMappingURL=preview.data.constants-1No1RU-q.js.map
|
package/dist/{preview.data.constants-DWqfMVjy.js.map → preview.data.constants-1No1RU-q.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.data.constants-DWqfMVjy.js","sources":["../src/utils/cache.utils.ts","../src/utils/data.utils.ts","../src/theme/formatter/formatter.utils.ts","../src/components/preview.data.constants.ts"],"sourcesContent":["/**\n * Creates a formatter cache.\n * Cache used to prevent unnecessary (expensive) creation of formatter objects\n */\nexport const cache = <Params, Formatter>(factory: (params?: Params) => Formatter) => {\n const internalCache: { [key: string]: Formatter } = {};\n const get = (params?: Params) => {\n const key = JSON.stringify(params);\n let formatter = internalCache[key];\n if (formatter) {\n return formatter;\n }\n formatter = factory(params);\n internalCache[key] = formatter;\n return formatter;\n };\n return get;\n};\n","const ISO_DATE_TIME_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}$/;\n\nexport const isValidISODate = (value: string): boolean => {\n return Boolean(value && ISO_DATE_TIME_REGEX.test(value));\n};\n","import { DimensionOrMeasure } from '@embeddable.com/core';\nimport { DateTimeFormatter, NumberFormatter, StringFormatter } from './formatter.types';\nimport { Theme } from '../theme.types';\nimport { cache } from '../../utils/cache.utils';\nimport { isValidISODate } from '../../utils/data.utils';\nimport { resolveI18nString } from '../../components/component.utils';\nimport { DisplayFormatTypeOptions } from '../../components/types/DisplayFormat.type.emb';\n\nexport type GetThemeFormatter = {\n string: (key: string) => string;\n number: (value: number | bigint, options?: Intl.NumberFormatOptions) => string;\n dateTime: (value: Date, options?: Intl.DateTimeFormatOptions) => string;\n dimensionOrMeasureTitle: (key: DimensionOrMeasure) => string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: (key: DimensionOrMeasure, value: any) => string;\n};\n\nexport const getThemeFormatter = (theme: Theme): GetThemeFormatter => {\n const cachedNumberFormatter = cache<Intl.NumberFormatOptions, NumberFormatter>((options) =>\n theme.formatter.numberFormatter(theme, options),\n );\n\n const cachedDataNumberFormatter = cache<DimensionOrMeasure, NumberFormatter>((key) =>\n theme.formatter.dataNumberFormatter(theme, key!),\n );\n\n const cachedDateTimeFormatter = cache<Intl.DateTimeFormatOptions, DateTimeFormatter>((options) =>\n theme.formatter.dateTimeFormatter(theme, options),\n );\n\n const cachedDataDateTimeFormatter = cache<DimensionOrMeasure, DateTimeFormatter>((key) =>\n theme.formatter.dataDateTimeFormatter(theme, key!),\n );\n\n const cachedDataOthersFormatter = cache<DimensionOrMeasure, StringFormatter>((key) =>\n theme.formatter.dataOthersFormatter(theme, key!),\n );\n\n return {\n string: (key: string) => theme.formatter.stringFormatter().format(key),\n number: (value: number | bigint, options?: Intl.NumberFormatOptions): string => {\n return cachedNumberFormatter(options).format(value);\n },\n dateTime: (value: Date, options?: Intl.DateTimeFormatOptions): string => {\n return cachedDateTimeFormatter(options).format(value);\n },\n dimensionOrMeasureTitle: (key: DimensionOrMeasure): string => {\n const displayName = key.inputs?.displayName;\n if (displayName) {\n if (displayName.includes('|')) {\n return resolveI18nString(displayName);\n }\n return displayName;\n }\n\n const resolved = cachedDataOthersFormatter(key).format(key.name);\n return resolved === key.name ? (key.title ?? key.name) : resolved;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: (key: DimensionOrMeasure, value: any): string => {\n let newValue = value;\n\n // Nulls\n if (value == null) {\n return key.inputs?.displayNullAs ?? '';\n }\n\n // JSON and Markdown\n if (key.inputs?.displayFormat === DisplayFormatTypeOptions.JSON) {\n return JSON.stringify(value, null, 2);\n } else if (key.inputs?.displayFormat === DisplayFormatTypeOptions.MARKDOWN) {\n return value;\n }\n // Objects\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n // Number\n if (key.nativeType === 'number') {\n newValue = cachedDataNumberFormatter(key).format(value);\n }\n\n // Time\n if (key.nativeType === 'time' && isValidISODate(value)) {\n newValue = cachedDataDateTimeFormatter(key).format(new Date(value));\n }\n\n // Others (boolean and string)\n if (key.nativeType === 'boolean' || key.nativeType === 'string') {\n newValue = cachedDataOthersFormatter(key).format(value);\n }\n\n // Prefix and suffix\n const appended = `${key.inputs?.prefix || ''}${newValue}${key.inputs?.suffix || ''}`;\n\n // Max characters\n if (key.inputs?.maxCharacters) {\n if (appended.length <= key.inputs.maxCharacters) {\n return appended;\n }\n return appended.substring(0, key.inputs.maxCharacters) + '...';\n }\n\n return appended;\n },\n };\n};\n","import { mockDataResponse, mockDimension, mockMeasure } from '@embeddable.com/core';\n\nconst dimensionName = 'country';\nconst measureName = 'count';\nconst measureVariantName = 'average';\nconst dimensionGroupName = 'category';\n\nconst dimension = mockDimension(dimensionName, 'string', { title: 'Country' });\nconst measure = mockMeasure(measureName, 'number', { title: 'Count' });\nconst measureVariant = mockMeasure(measureVariantName, 'number', { title: 'Average' });\nconst dimensionGroup = mockDimension(dimensionGroupName, 'string', {\n title: 'Category',\n});\n\nconst results1Measure1Dimension = mockDataResponse(\n [dimensionName, measureName],\n [\n ['US', 120],\n ['GER', 100],\n ['UK', 80],\n ['FRA', 70],\n ['SPA', 55],\n ],\n);\n\nconst results1Measure1DimensionVariant = mockDataResponse(\n [dimensionName, dimensionGroupName, measureName],\n [\n ['US', 100],\n ['GER', 90],\n ['UK', 75],\n ['FRA', 85],\n ['SPA', 60],\n ],\n);\n\nconst results1Measure2Dimensions = mockDataResponse(\n [dimensionName, dimensionGroupName, measureName],\n [\n ['US', 'Cat 1', 120],\n ['US', 'Cat 2', 130],\n\n ['GER', 'Cat 1', 100],\n ['GER', 'Cat 2', 110],\n\n ['UK', 'Cat 1', 80],\n ['UK', 'Cat 2', 95],\n\n ['FRA', 'Cat 1', 70],\n ['FRA', 'Cat 2', 60],\n\n ['SPA', 'Cat 1', 55],\n ['SPA', 'Cat 2', 35],\n ],\n);\n\nconst results1Measure2DimensionsVariant = mockDataResponse(\n [dimensionName, dimensionGroupName, measureName],\n [\n ['US', 'Cat 1', 100],\n ['US', 'Cat 2', 115],\n\n ['GER', 'Cat 1', 90],\n ['GER', 'Cat 2', 125],\n\n ['UK', 'Cat 1', 75],\n ['UK', 'Cat 2', 105],\n\n ['FRA', 'Cat 1', 85],\n ['FRA', 'Cat 2', 55],\n\n ['SPA', 'Cat 1', 60],\n ['SPA', 'Cat 2', 30],\n ],\n);\n\nconst results1Measure = mockDataResponse([measureName], [[120]]);\nconst results1MeasureVariant = mockDataResponse([measureName], [[100]]);\n\nconst dataset = {\n embeddableId: '',\n datasetId: '',\n inputName: '',\n variableValues: {},\n};\n\nexport const previewData = {\n dataset,\n dimension,\n dimensionGroup,\n measure,\n measureVariant,\n results1Measure,\n results1MeasureVariant,\n results1Measure1Dimension,\n results1Measure1DimensionVariant,\n results1Measure2Dimensions,\n results1Measure2DimensionsVariant,\n} as const;\n"],"names":["cache","factory","internalCache","params","key","formatter","ISO_DATE_TIME_REGEX","isValidISODate","value","getThemeFormatter","theme","cachedNumberFormatter","options","cachedDataNumberFormatter","cachedDateTimeFormatter","cachedDataDateTimeFormatter","cachedDataOthersFormatter","displayName","_a","resolveI18nString","resolved","newValue","_b","DisplayFormatTypeOptions","_c","appended","_d","_e","_f","dimensionName","measureName","measureVariantName","dimensionGroupName","dimension","mockDimension","measure","mockMeasure","measureVariant","dimensionGroup","results1Measure1Dimension","mockDataResponse","results1Measure1DimensionVariant","results1Measure2Dimensions","results1Measure2DimensionsVariant","results1Measure","results1MeasureVariant","dataset","previewData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preview.data.constants-1No1RU-q.js","sources":["../src/utils/cache.utils.ts","../src/utils/data.utils.ts","../src/theme/formatter/formatter.utils.ts","../src/components/preview.data.constants.ts"],"sourcesContent":["/**\n * Creates a formatter cache.\n * Cache used to prevent unnecessary (expensive) creation of formatter objects\n */\nexport const cache = <Params, Formatter>(factory: (params?: Params) => Formatter) => {\n const internalCache: { [key: string]: Formatter } = {};\n const get = (params?: Params) => {\n const key = JSON.stringify(params);\n let formatter = internalCache[key];\n if (formatter) {\n return formatter;\n }\n formatter = factory(params);\n internalCache[key] = formatter;\n return formatter;\n };\n return get;\n};\n","const ISO_DATE_TIME_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}$/;\n\nexport const isValidISODate = (value: string): boolean => {\n return Boolean(value && ISO_DATE_TIME_REGEX.test(value));\n};\n","import { DimensionOrMeasure } from '@embeddable.com/core';\nimport { DateTimeFormatter, NumberFormatter, StringFormatter } from './formatter.types';\nimport { Theme } from '../theme.types';\nimport { cache } from '../../utils/cache.utils';\nimport { isValidISODate } from '../../utils/data.utils';\nimport { resolveI18nString } from '../../components/component.utils';\nimport { DisplayFormatTypeOptions } from '../../components/types/DisplayFormat.type.emb';\n\nexport type GetThemeFormatter = {\n string: (key: string) => string;\n number: (value: number | bigint, options?: Intl.NumberFormatOptions) => string;\n dateTime: (value: Date, options?: Intl.DateTimeFormatOptions) => string;\n dimensionOrMeasureTitle: (key: DimensionOrMeasure) => string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: (key: DimensionOrMeasure, value: any) => string;\n};\n\nexport const getThemeFormatter = (theme: Theme): GetThemeFormatter => {\n const cachedNumberFormatter = cache<Intl.NumberFormatOptions, NumberFormatter>((options) =>\n theme.formatter.numberFormatter(theme, options),\n );\n\n const cachedDataNumberFormatter = cache<DimensionOrMeasure, NumberFormatter>((key) =>\n theme.formatter.dataNumberFormatter(theme, key!),\n );\n\n const cachedDateTimeFormatter = cache<Intl.DateTimeFormatOptions, DateTimeFormatter>((options) =>\n theme.formatter.dateTimeFormatter(theme, options),\n );\n\n const cachedDataDateTimeFormatter = cache<DimensionOrMeasure, DateTimeFormatter>((key) =>\n theme.formatter.dataDateTimeFormatter(theme, key!),\n );\n\n const cachedDataOthersFormatter = cache<DimensionOrMeasure, StringFormatter>((key) =>\n theme.formatter.dataOthersFormatter(theme, key!),\n );\n\n return {\n string: (key: string) => theme.formatter.stringFormatter().format(key),\n number: (value: number | bigint, options?: Intl.NumberFormatOptions): string => {\n return cachedNumberFormatter(options).format(value);\n },\n dateTime: (value: Date, options?: Intl.DateTimeFormatOptions): string => {\n return cachedDateTimeFormatter(options).format(value);\n },\n dimensionOrMeasureTitle: (key: DimensionOrMeasure): string => {\n const displayName = key.inputs?.displayName;\n if (displayName) {\n if (displayName.includes('|')) {\n return resolveI18nString(displayName);\n }\n return displayName;\n }\n\n const resolved = cachedDataOthersFormatter(key).format(key.name);\n return resolved === key.name ? (key.title ?? key.name) : resolved;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: (key: DimensionOrMeasure, value: any): string => {\n let newValue = value;\n\n // Nulls\n if (value == null) {\n return key.inputs?.displayNullAs ?? '';\n }\n\n // JSON and Markdown\n if (key.inputs?.displayFormat === DisplayFormatTypeOptions.JSON) {\n return JSON.stringify(value, null, 2);\n } else if (key.inputs?.displayFormat === DisplayFormatTypeOptions.MARKDOWN) {\n return value;\n }\n // Objects\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n // Number\n if (key.nativeType === 'number') {\n newValue = cachedDataNumberFormatter(key).format(value);\n }\n\n // Time\n if (key.nativeType === 'time' && isValidISODate(value)) {\n newValue = cachedDataDateTimeFormatter(key).format(new Date(value));\n }\n\n // Others (boolean and string)\n if (key.nativeType === 'boolean' || key.nativeType === 'string') {\n newValue = cachedDataOthersFormatter(key).format(value);\n }\n\n // Prefix and suffix\n const appended = `${key.inputs?.prefix || ''}${newValue}${key.inputs?.suffix || ''}`;\n\n // Max characters\n if (key.inputs?.maxCharacters) {\n if (appended.length <= key.inputs.maxCharacters) {\n return appended;\n }\n return appended.substring(0, key.inputs.maxCharacters) + '...';\n }\n\n return appended;\n },\n };\n};\n","import { mockDataResponse, mockDimension, mockMeasure } from '@embeddable.com/core';\n\nconst dimensionName = 'country';\nconst measureName = 'count';\nconst measureVariantName = 'average';\nconst dimensionGroupName = 'category';\n\nconst dimension = mockDimension(dimensionName, 'string', { title: 'Country' });\nconst measure = mockMeasure(measureName, 'number', { title: 'Count' });\nconst measureVariant = mockMeasure(measureVariantName, 'number', { title: 'Average' });\nconst dimensionGroup = mockDimension(dimensionGroupName, 'string', {\n title: 'Category',\n});\n\nconst results1Measure1Dimension = mockDataResponse(\n [dimensionName, measureName],\n [\n ['US', 120],\n ['GER', 100],\n ['UK', 80],\n ['FRA', 70],\n ['SPA', 55],\n ],\n);\n\nconst results1Measure1DimensionVariant = mockDataResponse(\n [dimensionName, dimensionGroupName, measureName],\n [\n ['US', 100],\n ['GER', 90],\n ['UK', 75],\n ['FRA', 85],\n ['SPA', 60],\n ],\n);\n\nconst results1Measure2Dimensions = mockDataResponse(\n [dimensionName, dimensionGroupName, measureName],\n [\n ['US', 'Cat 1', 120],\n ['US', 'Cat 2', 130],\n\n ['GER', 'Cat 1', 100],\n ['GER', 'Cat 2', 110],\n\n ['UK', 'Cat 1', 80],\n ['UK', 'Cat 2', 95],\n\n ['FRA', 'Cat 1', 70],\n ['FRA', 'Cat 2', 60],\n\n ['SPA', 'Cat 1', 55],\n ['SPA', 'Cat 2', 35],\n ],\n);\n\nconst results1Measure2DimensionsVariant = mockDataResponse(\n [dimensionName, dimensionGroupName, measureName],\n [\n ['US', 'Cat 1', 100],\n ['US', 'Cat 2', 115],\n\n ['GER', 'Cat 1', 90],\n ['GER', 'Cat 2', 125],\n\n ['UK', 'Cat 1', 75],\n ['UK', 'Cat 2', 105],\n\n ['FRA', 'Cat 1', 85],\n ['FRA', 'Cat 2', 55],\n\n ['SPA', 'Cat 1', 60],\n ['SPA', 'Cat 2', 30],\n ],\n);\n\nconst results1Measure = mockDataResponse([measureName], [[120]]);\nconst results1MeasureVariant = mockDataResponse([measureName], [[100]]);\n\nconst dataset = {\n embeddableId: '',\n datasetId: '',\n inputName: '',\n variableValues: {},\n};\n\nexport const previewData = {\n dataset,\n dimension,\n dimensionGroup,\n measure,\n measureVariant,\n results1Measure,\n results1MeasureVariant,\n results1Measure1Dimension,\n results1Measure1DimensionVariant,\n results1Measure2Dimensions,\n results1Measure2DimensionsVariant,\n} as const;\n"],"names":["cache","factory","internalCache","params","key","formatter","ISO_DATE_TIME_REGEX","isValidISODate","value","getThemeFormatter","theme","cachedNumberFormatter","options","cachedDataNumberFormatter","cachedDateTimeFormatter","cachedDataDateTimeFormatter","cachedDataOthersFormatter","displayName","_a","resolveI18nString","resolved","newValue","_b","DisplayFormatTypeOptions","_c","appended","_d","_e","_f","dimensionName","measureName","measureVariantName","dimensionGroupName","dimension","mockDimension","measure","mockMeasure","measureVariant","dimensionGroup","results1Measure1Dimension","mockDataResponse","results1Measure1DimensionVariant","results1Measure2Dimensions","results1Measure2DimensionsVariant","results1Measure","results1MeasureVariant","dataset","previewData"],"mappings":"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"}
|