@embeddable.com/remarkable-pro 0.0.4 → 0.0.5

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.
Files changed (116) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +25 -85
  2. package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
  3. package/dist/BarChartDefaultPro.js +25 -84
  4. package/dist/BarChartDefaultPro.js.map +1 -1
  5. package/dist/BarChartGroupedHorizontalPro.js +33 -102
  6. package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
  7. package/dist/BarChartGroupedPro.js +27 -95
  8. package/dist/BarChartGroupedPro.js.map +1 -1
  9. package/dist/BarChartStackedHorizontalPro.js +28 -98
  10. package/dist/BarChartStackedHorizontalPro.js.map +1 -1
  11. package/dist/BarChartStackedPro.js +28 -97
  12. package/dist/BarChartStackedPro.js.map +1 -1
  13. package/dist/{ChartCard-C7c2rTst.js → ChartCard-DPqhmLst.js} +19 -19
  14. package/dist/{ChartCard-C7c2rTst.js.map → ChartCard-DPqhmLst.js.map} +1 -1
  15. package/dist/{Color.type.emb-CSPAaucR.js → Color.type.emb-WlORCMYm.js} +2 -2
  16. package/dist/{Color.type.emb-CSPAaucR.js.map → Color.type.emb-WlORCMYm.js.map} +1 -1
  17. package/dist/ColorEditor.js +2 -2
  18. package/dist/{ComparisonPeriod.type.emb-DOpJ1iWj.js → ComparisonPeriod.type.emb-2GetmOu1.js} +2 -2
  19. package/dist/{ComparisonPeriod.type.emb-DOpJ1iWj.js.map → ComparisonPeriod.type.emb-2GetmOu1.js.map} +1 -1
  20. package/dist/ComparisonPeriodSelectFieldPro.js +17 -58
  21. package/dist/ComparisonPeriodSelectFieldPro.js.map +1 -1
  22. package/dist/DateRangeSelectFieldPro.js +3 -3
  23. package/dist/DonutChartPro.js +3 -3
  24. package/dist/DonutLabelChartPro.js +3 -3
  25. package/dist/EditorCard-BaL9GbQ9.js +32 -0
  26. package/dist/{EditorCard-BtlvgP9q.js.map → EditorCard-BaL9GbQ9.js.map} +1 -1
  27. package/dist/HeatMapPro.js +26 -93
  28. package/dist/HeatMapPro.js.map +1 -1
  29. package/dist/KpiChartNumberComparisonPro.js +25 -94
  30. package/dist/KpiChartNumberComparisonPro.js.map +1 -1
  31. package/dist/KpiChartNumberPro.js +14 -31
  32. package/dist/KpiChartNumberPro.js.map +1 -1
  33. package/dist/LineChartComparisonDefaultPro.js +59 -370
  34. package/dist/LineChartComparisonDefaultPro.js.map +1 -1
  35. package/dist/LineChartDefaultPro.js +31 -179
  36. package/dist/LineChartDefaultPro.js.map +1 -1
  37. package/dist/LineChartGroupedPro.js +30 -174
  38. package/dist/LineChartGroupedPro.js.map +1 -1
  39. package/dist/MultiSelectFieldPro.js +3 -3
  40. package/dist/PieChartPro.js +3 -3
  41. package/dist/PivotTablePro.js +23 -145
  42. package/dist/PivotTablePro.js.map +1 -1
  43. package/dist/SingleSelectFieldPro.js +3 -3
  44. package/dist/TableChartPaginated.js +37 -172
  45. package/dist/TableChartPaginated.js.map +1 -1
  46. package/dist/{bars.utils-JRnFN04m.js → bars.utils-aO0eZx5e.js} +7 -7
  47. package/dist/{bars.utils-JRnFN04m.js.map → bars.utils-aO0eZx5e.js.map} +1 -1
  48. package/dist/{charts.utils-DAkS2VK1.js → charts.utils-CZnXoUqF.js} +4 -4
  49. package/dist/{charts.utils-DAkS2VK1.js.map → charts.utils-CZnXoUqF.js.map} +1 -1
  50. package/dist/{component.constants-h6et83ck.js → component.constants-C7cqSNbp.js} +2 -2
  51. package/dist/{component.constants-h6et83ck.js.map → component.constants-C7cqSNbp.js.map} +1 -1
  52. package/dist/components/charts/tables/HeatMapPro/index.d.ts.map +1 -1
  53. package/dist/components/charts/tables/PivotTablePro/PivotPro.utils.d.ts +1 -4
  54. package/dist/components/charts/tables/PivotTablePro/PivotPro.utils.d.ts.map +1 -1
  55. package/dist/components/charts/tables/PivotTablePro/index.d.ts.map +1 -1
  56. package/dist/components/charts/tables/tables.hooks.d.ts +17 -0
  57. package/dist/components/charts/tables/tables.hooks.d.ts.map +1 -0
  58. package/dist/embeddable-components.json +12 -12
  59. package/dist/{formatter.utils-DXzI4Hz_.js → formatter.utils-CfrcSyDX.js} +2 -2
  60. package/dist/{formatter.utils-DXzI4Hz_.js.map → formatter.utils-CfrcSyDX.js.map} +1 -1
  61. package/dist/{index-QOVQo6ZK.js → index-2EH0Voxh.js} +5 -5
  62. package/dist/{index-QOVQo6ZK.js.map → index-2EH0Voxh.js.map} +1 -1
  63. package/dist/index-85Nzu6wl.js +95 -0
  64. package/dist/index-85Nzu6wl.js.map +1 -0
  65. package/dist/index-9GEogpMN.js +82 -0
  66. package/dist/index-9GEogpMN.js.map +1 -0
  67. package/dist/{index-Czj-HZH9.js → index-BAomPP89.js} +5 -5
  68. package/dist/{index-Czj-HZH9.js.map → index-BAomPP89.js.map} +1 -1
  69. package/dist/{index-B4S34Z5S.js → index-BQf2W8Zn.js} +6 -6
  70. package/dist/{index-B4S34Z5S.js.map → index-BQf2W8Zn.js.map} +1 -1
  71. package/dist/index-BSc_Axva.js +326 -0
  72. package/dist/index-BSc_Axva.js.map +1 -0
  73. package/dist/index-BjdJeBiT.js +73 -0
  74. package/dist/index-BjdJeBiT.js.map +1 -0
  75. package/dist/index-C1EIos9z.js +159 -0
  76. package/dist/index-C1EIos9z.js.map +1 -0
  77. package/dist/index-C_F-ZHJz.js +163 -0
  78. package/dist/index-C_F-ZHJz.js.map +1 -0
  79. package/dist/index-Cc-mtCkt.js +83 -0
  80. package/dist/index-Cc-mtCkt.js.map +1 -0
  81. package/dist/index-CvmifdRS.js +72 -0
  82. package/dist/index-CvmifdRS.js.map +1 -0
  83. package/dist/index-D1L8EF47.js +82 -0
  84. package/dist/index-D1L8EF47.js.map +1 -0
  85. package/dist/{index-BR6dp5RX.js → index-D8D1R5YG.js} +12 -12
  86. package/dist/{index-BR6dp5RX.js.map → index-D8D1R5YG.js.map} +1 -1
  87. package/dist/index-DGz1wzRd.js +81 -0
  88. package/dist/index-DGz1wzRd.js.map +1 -0
  89. package/dist/index-DORMEL0e.js +82 -0
  90. package/dist/index-DORMEL0e.js.map +1 -0
  91. package/dist/index-DTuHmdil.js +89 -0
  92. package/dist/index-DTuHmdil.js.map +1 -0
  93. package/dist/index-DZU1PTjb.js +148 -0
  94. package/dist/index-DZU1PTjb.js.map +1 -0
  95. package/dist/index-DaeSYZkv.js +30 -0
  96. package/dist/index-DaeSYZkv.js.map +1 -0
  97. package/dist/{index-CWYH2gE2.js → index-Dhwlo6sD.js} +5 -5
  98. package/dist/{index-CWYH2gE2.js.map → index-Dhwlo6sD.js.map} +1 -1
  99. package/dist/{index-C8O2asSv.js → index-L9ViZuWi.js} +5 -5
  100. package/dist/{index-C8O2asSv.js.map → index-L9ViZuWi.js.map} +1 -1
  101. package/dist/{index-DF-AuKua.js → index-WCMGd0_l.js} +15 -14
  102. package/dist/{index-DF-AuKua.js.map → index-WCMGd0_l.js.map} +1 -1
  103. package/dist/index-wy7P41uG.js +56 -0
  104. package/dist/index-wy7P41uG.js.map +1 -0
  105. package/dist/index.d.ts +27 -6
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +117 -74
  108. package/dist/index.js.map +1 -1
  109. package/dist/{pies.utils-Bl8jquyV.js → pies.utils-DlK4ABKU.js} +5 -5
  110. package/dist/{pies.utils-Bl8jquyV.js.map → pies.utils-DlK4ABKU.js.map} +1 -1
  111. package/dist/tables.hooks-BQdyUxau.js +45 -0
  112. package/dist/tables.hooks-BQdyUxau.js.map +1 -0
  113. package/dist/{timeRange.utils-CslTQiVA.js → timeRange.utils-CWl9EGOR.js} +2 -2
  114. package/dist/{timeRange.utils-CslTQiVA.js.map → timeRange.utils-CWl9EGOR.js.map} +1 -1
  115. package/package.json +1 -1
  116. package/dist/EditorCard-BtlvgP9q.js +0 -32
@@ -1 +1 @@
1
- {"version":3,"file":"LineChartGroupedPro.js","sources":["../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.ts","../src/components/charts/lines/LineChartGroupedPro/index.tsx","../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.emb.ts"],"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 { getObjectStableKey } from '../../../../utils.ts/object.utils';\nimport { getColor } from '../../../../theme/styles/styles.utils';\nimport { setColorAlpha } from '../../../../utils.ts/color.utils';\nimport { getChartContrastColors } from '@embeddable.com/remarkable-ui';\nimport { getLineChartProOptions, 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 themeKey = getObjectStableKey(theme);\n const chartContrastColors = getChartContrastColors();\n const datasets: ChartData<'line'>['datasets'] = groupBy.map((groupByItem, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.backgroundColors ?? chartContrastColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.borderColors ?? chartContrastColors,\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 getLineChartProOptions({ 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, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } 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';\n\nexport type LineChartGroupedProPropsOnLineClicked = {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n};\n\ntype LineChartGroupedProProp = {\n description: string;\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 title: string;\n xAxisLabel: string;\n yAxisLabel: string;\n yAxisRangeMax?: number;\n yAxisRangeMin?: number;\n onLineClicked: LineChartProOptionsClick;\n};\n\nconst LineChartGroupedPro = (props: LineChartGroupedProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\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\n theme,\n );\n const options = getLineChartGroupedProOptions(\n { data, dimension: xAxis, measure, onLineClicked },\n theme,\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\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","import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimension,\n dimensionWithDateBounds,\n genericBoolean,\n maxResults,\n measure,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n title,\n xAxisLabel,\n yAxisLabel,\n yAxisRangeMax,\n yAxisRangeMin,\n} from '../../../component.constants';\nimport LineChartGroupedPro from './index';\nimport { loadData, Value } from '@embeddable.com/core';\nimport { LineChartProOptionsClickArg } from '../lines.utils';\n\nexport const meta = {\n name: 'LineChartGroupedPro',\n label: 'Line Chart - Grouped',\n category: 'Line Charts',\n inputs: [\n dataset,\n {\n ...measure,\n inputs: [\n ...measure.inputs,\n { ...genericBoolean, name: 'fillUnderLine', label: 'Fill under line' },\n { ...genericBoolean, name: 'connectGaps', label: 'Connect gaps', defaultValue: true },\n ],\n },\n { ...dimensionWithDateBounds, name: 'xAxis', label: 'X-axis' },\n { ...dimension, name: 'groupBy', label: 'Group by' },\n title,\n description,\n maxResults,\n showLegend,\n showTooltips,\n showValueLabels,\n showLogarithmicScale,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n ],\n events: [\n {\n name: 'onLineClicked',\n label: 'A line is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked Axis Dimension Value',\n type: 'string',\n },\n {\n name: 'groupingDimensionValue',\n label: 'Clicked Grouping Dimension Value',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(LineChartGroupedPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [inputs.xAxis, inputs.groupBy, inputs.measure],\n }),\n };\n },\n events: {\n onLineClicked: (value: LineChartProOptionsClickArg) => {\n return {\n axisDimensionValue: value.dimensionValue || Value.noFilter(),\n groupingDimensionValue: value.groupingDimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["getLineChartGroupedProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","hasMinMaxYAxisRange","axis","d","groupBy","themeKey","getObjectStableKey","chartContrastColors","getChartContrastColors","datasets","groupByItem","index","backgroundColor","getColor","borderColor","setColorAlpha","_a","axisItem","record","getLineChartGroupedProOptions","options","onLineClicked","lineChartOptions","value","context","label","raw","mergician","getLineChartProOptions","_b","LineChartGroupedPro","useTheme","i18nSetup","title","description","xAxisLabel","yAxisLabel","resolveI18nProps","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","results","useFillGaps","jsx","ChartCard","LineChart","meta","dataset","genericBoolean","dimensionWithDateBounds","maxResults","LineChartGroupedPro_emb","defineComponent","inputs","loadData","Value"],"mappings":"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"}
1
+ {"version":3,"file":"LineChartGroupedPro.js","sources":["../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.emb.ts"],"sourcesContent":["import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimension,\n dimensionWithDateBounds,\n genericBoolean,\n maxResults,\n measure,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n title,\n xAxisLabel,\n yAxisLabel,\n yAxisRangeMax,\n yAxisRangeMin,\n} from '../../../component.constants';\nimport LineChartGroupedPro from './index';\nimport { loadData, Value } from '@embeddable.com/core';\nimport { LineChartProOptionsClickArg } from '../lines.utils';\n\nexport const meta = {\n name: 'LineChartGroupedPro',\n label: 'Line Chart - Grouped',\n category: 'Line Charts',\n inputs: [\n dataset,\n {\n ...measure,\n inputs: [\n ...measure.inputs,\n { ...genericBoolean, name: 'fillUnderLine', label: 'Fill under line' },\n { ...genericBoolean, name: 'connectGaps', label: 'Connect gaps', defaultValue: true },\n ],\n },\n { ...dimensionWithDateBounds, name: 'xAxis', label: 'X-axis' },\n { ...dimension, name: 'groupBy', label: 'Group by' },\n title,\n description,\n maxResults,\n showLegend,\n showTooltips,\n showValueLabels,\n showLogarithmicScale,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n ],\n events: [\n {\n name: 'onLineClicked',\n label: 'A line is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked Axis Dimension Value',\n type: 'string',\n },\n {\n name: 'groupingDimensionValue',\n label: 'Clicked Grouping Dimension Value',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(LineChartGroupedPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [inputs.xAxis, inputs.groupBy, inputs.measure],\n }),\n };\n },\n events: {\n onLineClicked: (value: LineChartProOptionsClickArg) => {\n return {\n axisDimensionValue: value.dimensionValue || Value.noFilter(),\n groupingDimensionValue: value.groupingDimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","measure","genericBoolean","dimensionWithDateBounds","dimension","title","description","maxResults","showLegend","showTooltips","showValueLabels","showLogarithmicScale","xAxisLabel","yAxisLabel","reverseXAxis","yAxisRangeMin","yAxisRangeMax","LineChartGroupedPro_emb","defineComponent","LineChartGroupedPro","inputs","loadData","value","Value"],"mappings":";;;;AAwBO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACA;AAAA,MACE,GAAGC;AAAA,MACH,QAAQ;AAAA,QACN,GAAGA,EAAQ;AAAA,QACX,EAAE,GAAGC,GAAgB,MAAM,iBAAiB,OAAO,kBAAA;AAAA,QACnD,EAAE,GAAGA,GAAgB,MAAM,eAAe,OAAO,gBAAgB,cAAc,GAAA;AAAA,MAAK;AAAA,IACtF;AAAA,IAEF,EAAE,GAAGC,GAAyB,MAAM,SAAS,OAAO,SAAA;AAAA,IACpD,EAAE,GAAGC,GAAW,MAAM,WAAW,OAAO,WAAA;AAAA,IACxCC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,QAER;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEJ,GAEAC,IAAeC,EAAgBC,GAAqBpB,GAAM;AAAA,EACxD,OAAO,CAACqB,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,OAAOD,EAAO;AAAA,MACd,MAAMA,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,OAAOA,EAAO,SAASA,EAAO,OAAO;AAAA,IAAA,CACtD;AAAA,EAAA;AAAA,EAGL,QAAQ;AAAA,IACN,eAAe,CAACE,OACP;AAAA,MACL,oBAAoBA,EAAM,kBAAkBC,EAAM,SAAA;AAAA,MAClD,wBAAwBD,EAAM,0BAA0BC,EAAM,SAAA;AAAA,IAAS;AAAA,EAE3E;AAEJ,CAAC;"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { V as t, l as r } from "./index-BR6dp5RX.js";
3
- import { v as s, w as d, F as u, G as m, _ as c } from "./component.constants-h6et83ck.js";
4
- import { M as p, a as f } from "./index-Czj-HZH9.js";
2
+ import { V as t, l as r } from "./index-D8D1R5YG.js";
3
+ import { v as s, w as d, F as u, G as m, _ as c } from "./component.constants-C7cqSNbp.js";
4
+ import { M as p, a as f } from "./index-BAomPP89.js";
5
5
  const g = {
6
6
  name: "MultiSelectFieldPro",
7
7
  label: "Multi Select Field",
@@ -1,7 +1,7 @@
1
- import { V as a, l as s } from "./index-BR6dp5RX.js";
1
+ import { V as a, l as s } from "./index-D8D1R5YG.js";
2
2
  import { defineComponent as t } from "@embeddable.com/react";
3
- import { P as o } from "./index-C8O2asSv.js";
4
- import { v as i, D as n, w as r, F as m, G as l, I as d, Z as p, J as c, K as u } from "./component.constants-h6et83ck.js";
3
+ import { P as o } from "./index-L9ViZuWi.js";
4
+ import { v as i, D as n, w as r, F as m, G as l, I as d, Z as p, J as c, K as u } from "./component.constants-C7cqSNbp.js";
5
5
  const C = {
6
6
  name: "PieChartPro",
7
7
  label: "Pie Chart",
@@ -1,152 +1,30 @@
1
- import { j as A, n as x, l as G } from "./index-BR6dp5RX.js";
2
- import { useTheme as N, defineComponent as j } from "@embeddable.com/react";
3
- import { a as O, r as k, i as E, v as I, E as F, k as v, z as y, F as V, G as q, d as z, c as D, H } from "./component.constants-h6et83ck.js";
4
- import { C as L } from "./ChartCard-C7c2rTst.js";
5
- import { useMemo as _, useRef as J } from "react";
6
- import { u as M } from "./charts.fillGaps.hooks-YayOXVmt.js";
7
- import { g as W } from "./formatter.utils-DXzI4Hz_.js";
8
- const K = (e, t) => {
9
- const n = W(t);
10
- return e.measures.map((o) => {
11
- var s, a;
12
- return {
13
- key: o.name,
14
- label: n.dimensionOrMeasureTitle(o),
15
- showAsPercentage: !!((s = o.inputs) != null && s.showAsPercentage),
16
- percentageDecimalPlaces: ((a = o.inputs) == null ? void 0 : a.decimalPlaces) ?? 1,
17
- accessor: (r) => r[o.name] == null ? e.displayNullAs : n.data(o, r[o.name])
18
- };
19
- });
20
- }, S = (e, t) => {
21
- const n = W(t);
22
- return {
23
- key: e.dimension.name,
24
- label: n.dimensionOrMeasureTitle(e.dimension),
25
- formatValue: (o) => n.data(e.dimension, o)
26
- };
27
- }, Q = (e) => e.filter((t) => {
28
- var n;
29
- return (n = t.inputs) == null ? void 0 : n.showColumnTotal;
30
- }).map((t) => t.name), U = (e) => e.filter((t) => {
31
- var n;
32
- return (n = t.inputs) == null ? void 0 : n.showRowTotal;
33
- }).map((t) => t.name);
34
- function X(e) {
35
- let t = 0, n = 0;
36
- for (let o = 0; o < e.length - 1; o++) {
37
- const s = e[o], a = e[o + 1];
38
- s == null || a == null || (s < a ? t++ : s > a && n++);
39
- }
40
- return t > n ? "asc" : n > t ? "desc" : "equal";
41
- }
42
- function C(e) {
43
- let t = 0, n = 0;
44
- for (let o = 0; o < e.length - 1; o++) {
45
- const s = e[o], a = e[o + 1];
46
- s == null || a == null || (s < a ? t++ : s > a && n++);
47
- }
48
- return t > 0 && n > 0;
49
- }
50
- const Y = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "desc" ? t > n ? -1 : t < n ? 1 : 0 : 0, Z = (e, t, n, o, s, a) => {
51
- const r = e.data ?? [], c = r[0];
52
- if (!c) return [];
53
- const b = () => a.reduce((l, i) => (l[i.name] = void 0, l), {}), f = (l, i, d) => {
54
- if (!C(l))
55
- return r;
56
- const h = X(l), p = [...l].sort(Y(h)).map((m) => {
57
- const u = r.find(
58
- (w) => w[i.name] === m && w[d.name] === c[d.name]
59
- );
60
- return u || {
61
- ...c,
62
- [i.name]: m,
63
- ...b()
64
- };
65
- }), T = r.filter(
66
- (m) => !p.some(
67
- (u) => u[i.name] === m[i.name] && u[d.name] === m[d.name]
68
- )
69
- );
70
- return [...p, ...T];
71
- };
72
- return C(t) ? f(t, o, s) : C(n) ? f(n, s, o) : r;
73
- }, $ = (e) => {
74
- var R;
75
- const t = N();
76
- O(t);
77
- const { description: n, title: o } = k(e), { measures: s, rowDimension: a, columnDimension: r, displayNullAs: c, columnWidth: b, firstColumnWidth: f } = e, l = Array.from(
78
- new Set((e.results.data ?? []).filter(Boolean).map((g) => g[r.name]))
79
- ), i = Array.from(
80
- new Set((e.results.data ?? []).filter(Boolean).map((g) => g[a.name]))
81
- ), d = M({
82
- results: e.results,
83
- dimension: r
84
- }), h = M({
85
- results: d,
86
- dimension: a
87
- }), P = _(() => Z(
88
- h,
89
- l,
90
- i,
91
- r,
92
- a,
93
- s
94
- ), [
95
- h,
96
- l,
97
- i,
98
- r,
99
- a,
100
- s
101
- ]), p = J(null), T = K({ measures: s, displayNullAs: c }, t), m = S({ dimension: a }, t), u = S({ dimension: r }, t), w = Q(s), B = U(s);
102
- return /* @__PURE__ */ A.jsx(
103
- L,
104
- {
105
- ref: p,
106
- title: o,
107
- subtitle: n,
108
- data: e.results,
109
- dimensionsAndMeasures: [a, r, ...s],
110
- errorMessage: (R = e.results) == null ? void 0 : R.error,
111
- children: /* @__PURE__ */ A.jsx(
112
- x,
113
- {
114
- firstColumnWidth: f,
115
- columnWidth: b,
116
- totalLabel: E.t("charts.pivotTable.total"),
117
- data: P,
118
- measures: T,
119
- rowDimension: m,
120
- columnDimension: u,
121
- columnTotalsFor: w,
122
- rowTotalsFor: B
123
- }
124
- )
125
- }
126
- );
127
- }, ee = {
1
+ import { l as t } from "./index-D8D1R5YG.js";
2
+ import { defineComponent as n } from "@embeddable.com/react";
3
+ import { P as i } from "./index-DTuHmdil.js";
4
+ import { v as m, E as o, k as a, z as l, F as r, G as u, d, c as s, H as b } from "./component.constants-C7cqSNbp.js";
5
+ const c = {
128
6
  name: "PivotTablePro",
129
7
  label: "Pivot Table",
130
8
  category: "Table Charts",
131
9
  inputs: [
132
- I,
10
+ m,
133
11
  {
134
- ...F,
12
+ ...o,
135
13
  label: "Measures To Display",
136
14
  inputs: [
137
- ...F.inputs,
15
+ ...o.inputs,
138
16
  {
139
- ...v,
17
+ ...a,
140
18
  name: "showColumnTotal",
141
19
  label: "Show Column Total"
142
20
  },
143
21
  {
144
- ...v,
22
+ ...a,
145
23
  name: "showRowTotal",
146
24
  label: "Show Row Total"
147
25
  },
148
26
  {
149
- ...v,
27
+ ...a,
150
28
  name: "showAsPercentage",
151
29
  label: "Show As Percentage",
152
30
  description: "If turned on, other measures may be ignored",
@@ -155,36 +33,36 @@ const Y = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "des
155
33
  ]
156
34
  },
157
35
  {
158
- ...y,
36
+ ...l,
159
37
  label: "Row Dimension",
160
38
  name: "rowDimension"
161
39
  },
162
40
  {
163
- ...y,
41
+ ...l,
164
42
  label: "Column Dimension",
165
43
  name: "columnDimension"
166
44
  },
167
- V,
168
- q,
169
- { ...z, name: "displayNullAs", label: "Display Null As" },
45
+ r,
46
+ u,
47
+ { ...d, name: "displayNullAs", label: "Display Null As" },
170
48
  {
171
- ...D,
49
+ ...s,
172
50
  name: "firstColumnWidth",
173
51
  label: "First Column Width",
174
52
  description: "Set the width in px (e.g. 200)"
175
53
  },
176
54
  {
177
- ...D,
55
+ ...s,
178
56
  name: "columnWidth",
179
57
  label: "Column Width",
180
58
  description: "Set the width in px (e.g. 200)"
181
59
  },
182
- H
60
+ b
183
61
  ]
184
- }, ie = j($, ee, {
62
+ }, D = n(i, c, {
185
63
  props: (e) => ({
186
64
  ...e,
187
- results: G({
65
+ results: t({
188
66
  from: e.dataset,
189
67
  select: [e.rowDimension, e.columnDimension, ...e.measures],
190
68
  limit: e.maxResults,
@@ -193,7 +71,7 @@ const Y = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "des
193
71
  })
194
72
  });
195
73
  export {
196
- ie as default,
197
- ee as meta
74
+ D as default,
75
+ c as meta
198
76
  };
199
77
  //# sourceMappingURL=PivotTablePro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PivotTablePro.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx","../src/components/charts/tables/PivotTablePro/PivotTablePro.emb.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n\ntype Order = 'asc' | 'desc' | 'equal';\n\nfunction predominantOrder(arr: (string | number | boolean)[]): Order {\n let asc = 0;\n let desc = 0;\n\n for (let i = 0; i < arr.length - 1; i++) {\n const a = arr[i];\n const b = arr[i + 1];\n\n if (a == null || b == null) continue;\n\n if (a < b) asc++;\n else if (a > b) desc++;\n }\n\n if (asc > desc) return 'asc';\n if (desc > asc) return 'desc';\n return 'equal';\n}\n\nfunction isOrderMixed(arr: (string | number | boolean)[]): boolean {\n let asc = 0;\n let desc = 0;\n\n for (let i = 0; i < arr.length - 1; i++) {\n const a = arr[i];\n const b = arr[i + 1];\n\n if (a == null || b == null) continue;\n\n if (a < b) asc++;\n else if (a > b) desc++;\n }\n\n return asc > 0 && desc > 0;\n}\n\nconst getSortComparator = (order: Order) => {\n return <T>(a: T, b: T) => {\n if (order === 'asc') {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n if (order === 'desc') {\n return a > b ? -1 : a < b ? 1 : 0;\n }\n return 0;\n };\n};\n\nexport const getPivotTableRows = (\n results: DataResponse,\n columnOrder: (string | number | boolean)[],\n rowOrder: (string | number | boolean)[],\n columnDimension: Dimension,\n rowDimension: Dimension,\n measures: Measure[],\n) => {\n const data = results.data ?? [];\n const firstRow = data[0];\n\n if (!firstRow) return [];\n\n const buildEmptyMeasures = () =>\n measures.reduce<Record<string, unknown>>((acc, measure) => {\n acc[measure.name] = undefined;\n return acc;\n }, {});\n\n const reorderByAxis = (\n axisOrder: (string | number | boolean)[],\n axisDimension: Dimension,\n fixedDimension: Dimension,\n ) => {\n if (!isOrderMixed(axisOrder)) {\n return data;\n }\n\n const order = predominantOrder(axisOrder);\n const sortedAxisOrder = [...axisOrder].sort(getSortComparator(order));\n\n // “Leader” rows: one per value in the axis order, at the fixed dimension’s first value\n const leaderRows = sortedAxisOrder.map((value) => {\n const existing = data.find(\n (x) =>\n x[axisDimension.name] === value &&\n x[fixedDimension.name] === firstRow[fixedDimension.name],\n );\n\n if (existing) return existing;\n\n return {\n ...firstRow,\n [axisDimension.name]: value,\n ...buildEmptyMeasures(),\n };\n });\n\n // Remove rows that are already covered by leaderRows (same [axis, fixed] tuple)\n const restResults = data.filter(\n (resultRow) =>\n !leaderRows.some(\n (leaderRow) =>\n leaderRow[axisDimension.name] === resultRow[axisDimension.name] &&\n leaderRow[fixedDimension.name] === resultRow[fixedDimension.name],\n ),\n );\n\n return [...leaderRows, ...restResults];\n };\n\n // Preserve original behavior: fix columns if mixed, otherwise rows if mixed\n if (isOrderMixed(columnOrder)) {\n return reorderByAxis(columnOrder, columnDimension, rowDimension);\n }\n\n if (isOrderMixed(rowOrder)) {\n return reorderByAxis(rowOrder, rowDimension, columnDimension);\n }\n\n return data;\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useMemo, useRef } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n getPivotTableRows,\n} from './PivotPro.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype PivotTableProProps = {\n title: string;\n description: string;\n results: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n};\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { description, title } = resolveI18nProps(props);\n const { measures, rowDimension, columnDimension, displayNullAs, columnWidth, firstColumnWidth } =\n props;\n\n const colOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useMemo(() => {\n return getPivotTableRows(\n resultsRowColumnDimensionFillGaps,\n colOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n );\n }, [\n resultsRowColumnDimensionFillGaps,\n colOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n ]);\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n subtitle={description}\n data={props.results}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n","import { loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport PivotTablePro from './index';\nimport {\n dataset,\n description,\n title,\n maxResults,\n measures,\n subInputGenericBoolean,\n genericString,\n dimensionWithDateBounds,\n genericNumber,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'PivotTablePro',\n label: 'Pivot Table',\n category: 'Table Charts',\n inputs: [\n dataset,\n {\n ...measures,\n label: 'Measures To Display',\n inputs: [\n ...measures.inputs,\n {\n ...subInputGenericBoolean,\n name: 'showColumnTotal',\n label: 'Show Column Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showRowTotal',\n label: 'Show Row Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showAsPercentage',\n label: 'Show As Percentage',\n description: 'If turned on, other measures may be ignored',\n defaultValue: false,\n },\n ],\n },\n {\n ...dimensionWithDateBounds,\n label: 'Row Dimension',\n name: 'rowDimension',\n },\n {\n ...dimensionWithDateBounds,\n label: 'Column Dimension',\n name: 'columnDimension',\n },\n title,\n description,\n { ...genericString, name: 'displayNullAs', label: 'Display Null As' },\n {\n ...genericNumber,\n name: 'firstColumnWidth',\n label: 'First Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n {\n ...genericNumber,\n name: 'columnWidth',\n label: 'Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n\n maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(PivotTablePro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n\n results: loadData({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n }),\n };\n },\n});\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","predominantOrder","arr","asc","desc","i","a","b","isOrderMixed","getSortComparator","order","getPivotTableRows","results","columnOrder","rowOrder","columnDimension","rowDimension","data","firstRow","buildEmptyMeasures","acc","reorderByAxis","axisOrder","axisDimension","fixedDimension","leaderRows","existing","x","restResults","resultRow","leaderRow","PivotTablePro","useTheme","i18nSetup","description","title","resolveI18nProps","displayNullAs","columnWidth","firstColumnWidth","colOrder","d","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","useMemo","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","jsx","ChartCard","PivotTable","i18n","meta","dataset","subInputGenericBoolean","dimensionWithDateBounds","genericString","genericNumber","maxResults","PivotTablePro_emb","defineComponent","inputs","loadData"],"mappings":"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"}
1
+ {"version":3,"file":"PivotTablePro.js","sources":["../src/components/charts/tables/PivotTablePro/PivotTablePro.emb.ts"],"sourcesContent":["import { loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport PivotTablePro from './index';\nimport {\n dataset,\n description,\n title,\n maxResults,\n measures,\n subInputGenericBoolean,\n genericString,\n dimensionWithDateBounds,\n genericNumber,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'PivotTablePro',\n label: 'Pivot Table',\n category: 'Table Charts',\n inputs: [\n dataset,\n {\n ...measures,\n label: 'Measures To Display',\n inputs: [\n ...measures.inputs,\n {\n ...subInputGenericBoolean,\n name: 'showColumnTotal',\n label: 'Show Column Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showRowTotal',\n label: 'Show Row Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showAsPercentage',\n label: 'Show As Percentage',\n description: 'If turned on, other measures may be ignored',\n defaultValue: false,\n },\n ],\n },\n {\n ...dimensionWithDateBounds,\n label: 'Row Dimension',\n name: 'rowDimension',\n },\n {\n ...dimensionWithDateBounds,\n label: 'Column Dimension',\n name: 'columnDimension',\n },\n title,\n description,\n { ...genericString, name: 'displayNullAs', label: 'Display Null As' },\n {\n ...genericNumber,\n name: 'firstColumnWidth',\n label: 'First Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n {\n ...genericNumber,\n name: 'columnWidth',\n label: 'Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n\n maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(PivotTablePro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n\n results: loadData({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n }),\n };\n },\n});\n"],"names":["meta","dataset","measures","subInputGenericBoolean","dimensionWithDateBounds","title","description","genericString","genericNumber","maxResults","PivotTablePro_emb","defineComponent","PivotTablePro","inputs","loadData"],"mappings":";;;;AAeO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACA;AAAA,MACE,GAAGC;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,QACN,GAAGA,EAAS;AAAA,QACZ;AAAA,UACE,GAAGC;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,GAAGA;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,GAAGA;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,IACF;AAAA,IAEF;AAAA,MACE,GAAGC;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAER;AAAA,MACE,GAAGA;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAERC;AAAA,IACAC;AAAA,IACA,EAAE,GAAGC,GAAe,MAAM,iBAAiB,OAAO,kBAAA;AAAA,IAClD;AAAA,MACE,GAAGC;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAGfC;AAAA,EAAA;AAEJ,GAEAC,IAAeC,EAAgBC,GAAeZ,GAAM;AAAA,EAClD,OAAO,CAACa,OACC;AAAA,IACL,GAAGA;AAAA,IAEH,SAASC,EAAS;AAAA,MAChB,MAAMD,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,cAAcA,EAAO,iBAAiB,GAAGA,EAAO,QAAQ;AAAA,MACxE,OAAOA,EAAO;AAAA,MACd,WAAW;AAAA,IAAA,CACZ;AAAA,EAAA;AAGP,CAAC;"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { V as n, l as r } from "./index-BR6dp5RX.js";
3
- import { v as s, w as d, F as m, G as c, _ as p } from "./component.constants-h6et83ck.js";
4
- import { M as u, S as g } from "./index-QOVQo6ZK.js";
2
+ import { V as n, l as r } from "./index-D8D1R5YG.js";
3
+ import { v as s, w as d, F as m, G as c, _ as p } from "./component.constants-C7cqSNbp.js";
4
+ import { M as u, S as g } from "./index-2EH0Voxh.js";
5
5
  const f = {
6
6
  name: "SingleSelectFieldPro",
7
7
  label: "Single Select Field",
@@ -1,160 +1,25 @@
1
- import { T as I, h as r, u as W, o as G, p as q, j as y, q as B, r as U, V as _, l as P, m as J } from "./index-BR6dp5RX.js";
2
- import { useTheme as K, defineComponent as Q } from "@embeddable.com/react";
3
- import { a as X, r as Y, i as Z, v as $, C as T, s as O, e as ee, F as ne, G as ae, g as te, d as ie, H as se, x as oe } from "./component.constants-h6et83ck.js";
4
- import { C as le } from "./ChartCard-C7c2rTst.js";
5
- import { useState as S, useRef as re, useCallback as ce, useEffect as g } from "react";
6
- import { g as de } from "./formatter.utils-DXzI4Hz_.js";
7
- const me = (n) => {
8
- var a;
9
- const e = (a = n.inputs) == null ? void 0 : a.align;
10
- if (e) return e;
11
- switch (n.nativeType) {
12
- case "number":
13
- case "boolean":
14
- case "time":
15
- return I.RIGHT;
16
- default:
17
- return I.LEFT;
18
- }
19
- }, ue = (n) => {
20
- var a;
21
- const e = (a = n.inputs) == null ? void 0 : a.width;
22
- if (e) return e;
23
- switch (n.nativeType) {
24
- case "string":
25
- return r("--em-tablechart-min-width--string", "8.75rem");
26
- case "number":
27
- return r("--em-tablechart-min-width--number", "5.625rem");
28
- case "time":
29
- return r("--em-tablechart-min-width--time", "8.75rem");
30
- case "boolean":
31
- default:
32
- return r("--em-tablechart-min-width--boolean", "5.625rem");
33
- }
34
- }, ge = (n, e) => {
35
- const a = de(e);
36
- return n.dimensionsAndMeasures.map((i) => ({
37
- id: i.name,
38
- title: a.dimensionOrMeasureTitle(i),
39
- accessor: (s) => s[i.name] == null ? n.displayNullAs ?? "" : a.data(i, s[i.name]),
40
- minWidth: ue(i),
41
- align: me(i)
42
- }));
43
- }, he = (n) => {
44
- var a;
45
- if (!n.rows || n.rows.length === 0)
46
- return [];
47
- const e = (a = n.clickDimension) == null ? void 0 : a.name;
48
- return !e || Object.keys(n.rows[0]).includes(e) ? n.rows : n.rows.map(({ [e]: i, ...s }) => ({
49
- ...s
50
- }));
51
- }, be = (n, e) => (n == null ? void 0 : n.id) !== (e == null ? void 0 : e.id) || (n == null ? void 0 : n.direction) !== (e == null ? void 0 : e.direction) || !n && !!e || !!n && !e, fe = r("--em-tablechart-cell-height", "2.5rem"), we = r("--em-tablechart-cell-height", "2.5rem"), De = r("--em-tablechart-pagination-height", "3rem");
52
- let H;
53
- const pe = (n) => {
54
- const e = K();
55
- X(e);
56
- const [a, i] = S(void 0), [s, h] = S(!1), { description: w, title: c } = Y(n), {
57
- results: t,
58
- allResults: b,
59
- dimensionsAndMeasures: D,
60
- displayNullAs: L,
61
- showIndex: M,
62
- clickDimension: p,
63
- state: d,
64
- setState: A,
65
- onRowClicked: V
66
- } = n, [f, k] = S(d.sort), j = ge({ dimensionsAndMeasures: D, displayNullAs: L }, e), v = (t == null ? void 0 : t.data) || [], z = he({ rows: v, clickDimension: p }), R = re(null), F = W(R), m = G({
67
- availableHeight: F,
68
- headerHeight: fe,
69
- rowHeight: we,
70
- footerHeight: De
71
- }), l = ce(
72
- (o) => {
73
- A((u) => ({
74
- ...u,
75
- ...o
76
- }));
77
- },
78
- [A]
79
- ), N = (o) => {
80
- h(!0), l({ isLoadingDownloadData: !0 }), H = (u) => o({
81
- title: c,
82
- data: u,
83
- dimensionsAndMeasures: D,
84
- containerRef: R,
85
- theme: e
86
- });
87
- }, E = (o) => {
88
- var C;
89
- if (!p) return;
90
- const u = (C = v[o]) == null ? void 0 : C[p.name];
91
- V(u);
92
- }, x = q(l);
93
- return g(() => {
94
- be(d.sort, f) && k(d.sort);
95
- }, [d.sort]), g(() => {
96
- x({ sort: f });
97
- }, [f, x]), g(() => {
98
- m && l({ pageSize: m });
99
- }, [m, l]), g(() => {
100
- t != null && t.total && t.total !== a && i(t.total);
101
- }, [t, a]), g(() => {
102
- if (s) {
103
- if (!b || b.isLoading)
104
- return;
105
- H(b.data), h(!1), l({ isLoadingDownloadData: !1 });
106
- }
107
- }, [s, b, l]), /* @__PURE__ */ y.jsx(
108
- le,
109
- {
110
- ref: R,
111
- title: c,
112
- subtitle: w,
113
- data: t,
114
- dimensionsAndMeasures: D,
115
- errorMessage: t == null ? void 0 : t.error,
116
- onCustomDownload: N,
117
- children: /* @__PURE__ */ y.jsx(
118
- B,
119
- {
120
- onRowIndexClick: E,
121
- headers: j,
122
- rows: z,
123
- showIndex: M,
124
- page: d.page,
125
- pageSize: m,
126
- paginationLabel: Z.t("charts.tablePaginated.pagination", {
127
- page: d.page + 1,
128
- totalPages: U(a, m) ?? "?"
129
- }),
130
- total: a,
131
- sort: f,
132
- onSortChange: (o) => {
133
- k(o);
134
- },
135
- onPageChange: (o) => l({ page: o })
136
- }
137
- )
138
- }
139
- );
140
- }, Re = {
1
+ import { V as t, l, m as u } from "./index-D8D1R5YG.js";
2
+ import { defineComponent as g } from "@embeddable.com/react";
3
+ import { T as p } from "./index-DZU1PTjb.js";
4
+ import { v as D, C as r, s as b, e as f, F as C, G as w, g as A, d as M, H as k, x as h } from "./component.constants-C7cqSNbp.js";
5
+ const v = {
141
6
  name: "TableChartPaginated",
142
7
  label: "Table Chart - Paginated",
143
8
  category: "Table Charts",
144
9
  inputs: [
145
- $,
10
+ D,
146
11
  {
147
- ...T,
12
+ ...r,
148
13
  label: "Columns",
149
- inputs: [...T.inputs, O, ee]
14
+ inputs: [...r.inputs, b, f]
150
15
  },
151
- ne,
152
- ae,
153
- { ...te, name: "showIndex", label: "Show Index Column", defaultValue: !0 },
154
- { ...ie, name: "displayNullAs", label: "Display null as" },
155
- { ...se, label: "Max Results to Download" },
16
+ C,
17
+ w,
18
+ { ...A, name: "showIndex", label: "Show Index Column", defaultValue: !0 },
19
+ { ...M, name: "displayNullAs", label: "Display null as" },
20
+ { ...k, label: "Max Results to Download" },
156
21
  {
157
- ...oe,
22
+ ...h,
158
23
  label: "Dimension to set on click",
159
24
  name: "clickDimension",
160
25
  category: "Data Mapping for Interactions",
@@ -174,47 +39,47 @@ const pe = (n) => {
174
39
  ]
175
40
  }
176
41
  ]
177
- }, Se = {
42
+ }, R = {
178
43
  page: 0,
179
44
  pageSize: void 0,
180
45
  sort: void 0,
181
46
  isLoadingDownloadData: !1
182
- }, ye = Q(pe, Re, {
47
+ }, I = g(p, v, {
183
48
  /* @ts-expect-error - to be fixed in @embeddable.com/react */
184
- props: (n, [e, a]) => {
185
- const i = n.dimensionsAndMeasures.find(
186
- (c) => {
187
- var t;
188
- return c.name === ((t = e == null ? void 0 : e.sort) == null ? void 0 : t.id);
49
+ props: (n, [e, d]) => {
50
+ const a = n.dimensionsAndMeasures.find(
51
+ (i) => {
52
+ var o;
53
+ return i.name === ((o = e == null ? void 0 : e.sort) == null ? void 0 : o.id);
189
54
  }
190
- ), s = i && (e != null && e.sort) ? [
55
+ ), s = a && (e != null && e.sort) ? [
191
56
  {
192
- property: i,
57
+ property: a,
193
58
  direction: e.sort.direction
194
59
  }
195
- ] : [], h = n.dimensionsAndMeasures.some(
196
- (c) => {
197
- var t;
198
- return c.name === ((t = n.clickDimension) == null ? void 0 : t.name);
60
+ ] : [], m = n.dimensionsAndMeasures.some(
61
+ (i) => {
62
+ var o;
63
+ return i.name === ((o = n.clickDimension) == null ? void 0 : o.name);
199
64
  }
200
- ), w = [
65
+ ), c = [
201
66
  ...n.dimensionsAndMeasures,
202
- h ? [] : n.clickDimension
67
+ m ? [] : n.clickDimension
203
68
  ];
204
69
  return {
205
70
  ...n,
206
- state: J(Se, e ?? {}),
71
+ state: u(R, e ?? {}),
207
72
  // Merge with default state
208
- setState: a,
209
- results: e != null && e.pageSize ? P({
73
+ setState: d,
74
+ results: e != null && e.pageSize ? l({
210
75
  from: n.dataset,
211
- select: w,
76
+ select: c,
212
77
  offset: e.page * e.pageSize,
213
78
  limit: e.pageSize,
214
79
  countRows: !0,
215
80
  orderBy: s
216
81
  }) : void 0,
217
- allResults: e != null && e.isLoadingDownloadData ? P({
82
+ allResults: e != null && e.isLoadingDownloadData ? l({
218
83
  from: n.dataset,
219
84
  select: n.dimensionsAndMeasures,
220
85
  orderBy: s,
@@ -224,12 +89,12 @@ const pe = (n) => {
224
89
  },
225
90
  events: {
226
91
  onRowClicked: (n) => ({
227
- rowDimensionValue: n !== void 0 ? n : _.noFilter()
92
+ rowDimensionValue: n !== void 0 ? n : t.noFilter()
228
93
  })
229
94
  }
230
95
  });
231
96
  export {
232
- ye as default,
233
- Re as meta
97
+ I as default,
98
+ v as meta
234
99
  };
235
100
  //# sourceMappingURL=TableChartPaginated.js.map