@embeddable.com/remarkable-pro 0.1.31 → 0.1.32

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 (172) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +1 -1
  2. package/dist/BarChartDefaultPro.js +1 -1
  3. package/dist/BarChartGroupedHorizontalPro.js +1 -1
  4. package/dist/BarChartGroupedPro.js +1 -1
  5. package/dist/BarChartStackedHorizontalPro.js +1 -1
  6. package/dist/BarChartStackedPro.js +1 -1
  7. package/dist/ComparisonPeriodSelectFieldPro.js +1 -1
  8. package/dist/DateRangePickerCustomPro.js +1 -1
  9. package/dist/DateRangeSelectFieldPro.js +1 -1
  10. package/dist/{DimensionAndMeasureSingleSelectField-ClbFwtXO.js → DimensionAndMeasureSingleSelectField-BsBSTKKc.js} +2 -2
  11. package/dist/{DimensionAndMeasureSingleSelectField-ClbFwtXO.js.map → DimensionAndMeasureSingleSelectField-BsBSTKKc.js.map} +1 -1
  12. package/dist/DimensionMeasureMultiSelectFieldPro.js +1 -1
  13. package/dist/DimensionSingleSelectFieldPro.js +1 -1
  14. package/dist/DonutChartPro.js +1 -1
  15. package/dist/DonutLabelChartPro.js +1 -1
  16. package/dist/FilterBuilderPro.js +3 -3
  17. package/dist/{GranularitySelectField-Di0ay_uj.js → GranularitySelectField-DBaZn-Me.js} +2 -2
  18. package/dist/{GranularitySelectField-Di0ay_uj.js.map → GranularitySelectField-DBaZn-Me.js.map} +1 -1
  19. package/dist/GranularitySelectFieldPro.js +1 -1
  20. package/dist/HeatMapPro.js +1 -1
  21. package/dist/HorizontalDividerPro.js +1 -1
  22. package/dist/KpiChartNumberComparisonPro.js +1 -1
  23. package/dist/KpiChartNumberPro.js +1 -1
  24. package/dist/LineChartComparisonDefaultPro.js +1 -1
  25. package/dist/LineChartDefaultPro.js +1 -1
  26. package/dist/LineChartGroupedPro.js +1 -1
  27. package/dist/MarkdownPro.js +1 -1
  28. package/dist/MeasureMultiSelectFieldPro.js +1 -1
  29. package/dist/MeasureSingleSelectFieldPro.js +1 -1
  30. package/dist/MultiSelectFieldPro.js +1 -1
  31. package/dist/PieChartPro.js +1 -1
  32. package/dist/PivotTablePro.js +1 -1
  33. package/dist/SingleSelectFieldPro.js +1 -1
  34. package/dist/TableChartPaginated.js +1 -1
  35. package/dist/TableScrollable.js +1 -1
  36. package/dist/TextFieldPro.js +1 -1
  37. package/dist/bars.loadData.utils-FxKnljYM.js +116 -0
  38. package/dist/bars.loadData.utils-FxKnljYM.js.map +1 -0
  39. package/dist/bars.utils-jD7h2lii.js +159 -0
  40. package/dist/bars.utils-jD7h2lii.js.map +1 -0
  41. package/dist/{charts.fillGaps.hooks-DDOGO5JR.js → charts.fillGaps.hooks-CvKhAwUj.js} +2 -2
  42. package/dist/{charts.fillGaps.hooks-DDOGO5JR.js.map → charts.fillGaps.hooks-CvKhAwUj.js.map} +1 -1
  43. package/dist/{charts.utils-ZAdb7oJ-.js → charts.utils-N3kN-XFw.js} +2 -2
  44. package/dist/{charts.utils-ZAdb7oJ-.js.map → charts.utils-N3kN-XFw.js.map} +1 -1
  45. package/dist/{component.inputs.constants-C-vfrygQ.js → component.inputs.constants-C7tJAhsQ.js} +236 -193
  46. package/dist/component.inputs.constants-C7tJAhsQ.js.map +1 -0
  47. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/BarChartGroupedHorizontalPro.emb.d.ts +11 -0
  48. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/BarChartGroupedHorizontalPro.emb.d.ts.map +1 -1
  49. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/definition.d.ts +37 -11
  50. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/definition.d.ts.map +1 -1
  51. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/index.d.ts +5 -1
  52. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/index.d.ts.map +1 -1
  53. package/dist/components/charts/bars/BarChartGroupedPro/BarChartGroupedPro.emb.d.ts +11 -0
  54. package/dist/components/charts/bars/BarChartGroupedPro/BarChartGroupedPro.emb.d.ts.map +1 -1
  55. package/dist/components/charts/bars/BarChartGroupedPro/definition.d.ts +37 -11
  56. package/dist/components/charts/bars/BarChartGroupedPro/definition.d.ts.map +1 -1
  57. package/dist/components/charts/bars/BarChartGroupedPro/index.d.ts +5 -1
  58. package/dist/components/charts/bars/BarChartGroupedPro/index.d.ts.map +1 -1
  59. package/dist/components/charts/bars/BarChartStackedHorizontalPro/BarChartStackedHorizontalPro.emb.d.ts +11 -0
  60. package/dist/components/charts/bars/BarChartStackedHorizontalPro/BarChartStackedHorizontalPro.emb.d.ts.map +1 -1
  61. package/dist/components/charts/bars/BarChartStackedHorizontalPro/definition.d.ts +37 -11
  62. package/dist/components/charts/bars/BarChartStackedHorizontalPro/definition.d.ts.map +1 -1
  63. package/dist/components/charts/bars/BarChartStackedHorizontalPro/index.d.ts +5 -1
  64. package/dist/components/charts/bars/BarChartStackedHorizontalPro/index.d.ts.map +1 -1
  65. package/dist/components/charts/bars/BarChartStackedPro/BarChartStackedPro.emb.d.ts +11 -0
  66. package/dist/components/charts/bars/BarChartStackedPro/BarChartStackedPro.emb.d.ts.map +1 -1
  67. package/dist/components/charts/bars/BarChartStackedPro/definition.d.ts +37 -11
  68. package/dist/components/charts/bars/BarChartStackedPro/definition.d.ts.map +1 -1
  69. package/dist/components/charts/bars/BarChartStackedPro/index.d.ts +5 -1
  70. package/dist/components/charts/bars/BarChartStackedPro/index.d.ts.map +1 -1
  71. package/dist/components/charts/bars/bars.hooks.d.ts +8 -0
  72. package/dist/components/charts/bars/bars.hooks.d.ts.map +1 -0
  73. package/dist/components/charts/bars/bars.hooks.test.d.ts +2 -0
  74. package/dist/components/charts/bars/bars.hooks.test.d.ts.map +1 -0
  75. package/dist/components/charts/bars/bars.loadData.utils.d.ts +47 -0
  76. package/dist/components/charts/bars/bars.loadData.utils.d.ts.map +1 -0
  77. package/dist/components/charts/bars/bars.loadData.utils.test.d.ts +2 -0
  78. package/dist/components/charts/bars/bars.loadData.utils.test.d.ts.map +1 -0
  79. package/dist/components/charts/bars/bars.utils.d.ts +1 -0
  80. package/dist/components/charts/bars/bars.utils.d.ts.map +1 -1
  81. package/dist/components/component.inputs.constants.d.ts +26 -0
  82. package/dist/components/component.inputs.constants.d.ts.map +1 -1
  83. package/dist/components/types/SortDirection.type.emb.d.ts +9 -0
  84. package/dist/components/types/SortDirection.type.emb.d.ts.map +1 -0
  85. package/dist/definition-2JaSZCXp.js +206 -0
  86. package/dist/definition-2JaSZCXp.js.map +1 -0
  87. package/dist/{definition-5a__Y0lx.js → definition-B2mKjUhy.js} +4 -4
  88. package/dist/{definition-5a__Y0lx.js.map → definition-B2mKjUhy.js.map} +1 -1
  89. package/dist/definition-B5l2-yZu.js +204 -0
  90. package/dist/definition-B5l2-yZu.js.map +1 -0
  91. package/dist/{definition-ChFv8Vq8.js → definition-B6Jm5skX.js} +2 -2
  92. package/dist/{definition-ChFv8Vq8.js.map → definition-B6Jm5skX.js.map} +1 -1
  93. package/dist/{definition-DM13nXMm.js → definition-B9bfDi7Q.js} +3 -3
  94. package/dist/{definition-DM13nXMm.js.map → definition-B9bfDi7Q.js.map} +1 -1
  95. package/dist/{definition-DRFMnEQh.js → definition-BCbRycZt.js} +3 -3
  96. package/dist/{definition-DRFMnEQh.js.map → definition-BCbRycZt.js.map} +1 -1
  97. package/dist/{definition-B9E-HZdm.js → definition-BIk4lZdI.js} +3 -3
  98. package/dist/{definition-B9E-HZdm.js.map → definition-BIk4lZdI.js.map} +1 -1
  99. package/dist/{definition-D1wwcuOy.js → definition-BKcHxtMp.js} +3 -3
  100. package/dist/{definition-D1wwcuOy.js.map → definition-BKcHxtMp.js.map} +1 -1
  101. package/dist/{definition-Bhvd22lu.js → definition-Bdwvh471.js} +2 -2
  102. package/dist/{definition-Bhvd22lu.js.map → definition-Bdwvh471.js.map} +1 -1
  103. package/dist/{definition-mtzDmBoh.js → definition-Bn3Fi9C4.js} +5 -5
  104. package/dist/{definition-mtzDmBoh.js.map → definition-Bn3Fi9C4.js.map} +1 -1
  105. package/dist/{definition-CzAzy1Hk.js → definition-BqIza8Nx.js} +3 -3
  106. package/dist/{definition-CzAzy1Hk.js.map → definition-BqIza8Nx.js.map} +1 -1
  107. package/dist/{definition-5T5HRGnj.js → definition-BrVG5pTw.js} +5 -5
  108. package/dist/{definition-5T5HRGnj.js.map → definition-BrVG5pTw.js.map} +1 -1
  109. package/dist/{definition-DSAR_Bsa.js → definition-C8DCZNOR.js} +3 -3
  110. package/dist/{definition-DSAR_Bsa.js.map → definition-C8DCZNOR.js.map} +1 -1
  111. package/dist/{definition-Di3x_6Rh.js → definition-CN6Ieeer.js} +5 -5
  112. package/dist/{definition-Di3x_6Rh.js.map → definition-CN6Ieeer.js.map} +1 -1
  113. package/dist/{definition-DsDQF6Da.js → definition-CbkzLjXK.js} +3 -3
  114. package/dist/{definition-DsDQF6Da.js.map → definition-CbkzLjXK.js.map} +1 -1
  115. package/dist/{definition-wDuSjm3O.js → definition-Cgq79V22.js} +3 -3
  116. package/dist/{definition-wDuSjm3O.js.map → definition-Cgq79V22.js.map} +1 -1
  117. package/dist/{definition-CWVSN9UB.js → definition-CkVv7VMQ.js} +4 -4
  118. package/dist/{definition-CWVSN9UB.js.map → definition-CkVv7VMQ.js.map} +1 -1
  119. package/dist/{definition-FEz36Zkx.js → definition-Cx1UPIho.js} +3 -3
  120. package/dist/{definition-FEz36Zkx.js.map → definition-Cx1UPIho.js.map} +1 -1
  121. package/dist/{definition-Cl_4hkGI.js → definition-D4-0-tXB.js} +3 -3
  122. package/dist/{definition-Cl_4hkGI.js.map → definition-D4-0-tXB.js.map} +1 -1
  123. package/dist/{definition-CV2xoi69.js → definition-DFoesKHP.js} +2 -2
  124. package/dist/{definition-CV2xoi69.js.map → definition-DFoesKHP.js.map} +1 -1
  125. package/dist/{definition-CBevT5lk.js → definition-Dh9UNSfZ.js} +2 -2
  126. package/dist/{definition-CBevT5lk.js.map → definition-Dh9UNSfZ.js.map} +1 -1
  127. package/dist/{definition-xGVDcBlW.js → definition-Dizabfqb.js} +5 -5
  128. package/dist/{definition-xGVDcBlW.js.map → definition-Dizabfqb.js.map} +1 -1
  129. package/dist/definition-DnWIyPun.js +203 -0
  130. package/dist/definition-DnWIyPun.js.map +1 -0
  131. package/dist/definition-DynupxEC.js +205 -0
  132. package/dist/definition-DynupxEC.js.map +1 -0
  133. package/dist/{definition-BKX3li26.js → definition-EqCeNipq.js} +3 -3
  134. package/dist/{definition-BKX3li26.js.map → definition-EqCeNipq.js.map} +1 -1
  135. package/dist/{definition-DpFvucVl.js → definition-SCQMKDEM.js} +4 -4
  136. package/dist/{definition-DpFvucVl.js.map → definition-SCQMKDEM.js.map} +1 -1
  137. package/dist/{definition-DxkipQYz.js → definition-bvWr0LdF.js} +2 -2
  138. package/dist/{definition-DxkipQYz.js.map → definition-bvWr0LdF.js.map} +1 -1
  139. package/dist/{definition-Bdcy082b.js → definition-ngOUqoDo.js} +3 -3
  140. package/dist/{definition-Bdcy082b.js.map → definition-ngOUqoDo.js.map} +1 -1
  141. package/dist/{definition-C8CAdqhV.js → definition-oe6halnQ.js} +2 -2
  142. package/dist/{definition-C8CAdqhV.js.map → definition-oe6halnQ.js.map} +1 -1
  143. package/dist/{definition-C4aPFAKq.js → definition-pNCrIBqW.js} +5 -5
  144. package/dist/{definition-C4aPFAKq.js.map → definition-pNCrIBqW.js.map} +1 -1
  145. package/dist/{definition-Cxji761B.js → definition-v66e9pZV.js} +3 -3
  146. package/dist/{definition-Cxji761B.js.map → definition-v66e9pZV.js.map} +1 -1
  147. package/dist/{dimensionsAndMeasures.utils-x51eIYbW.js → dimensionsAndMeasures.utils-DtUfSnpA.js} +2 -2
  148. package/dist/{dimensionsAndMeasures.utils-x51eIYbW.js.map → dimensionsAndMeasures.utils-DtUfSnpA.js.map} +1 -1
  149. package/dist/embeddable-components.json +42 -42
  150. package/dist/{embeddable-types-671f4.js → embeddable-types-4089f.js} +55 -43
  151. package/dist/embeddable-types.js.map +1 -1
  152. package/dist/{formatter.utils-DXI8s5Y5.js → formatter.utils-BLaKKpAa.js} +2 -2
  153. package/dist/{formatter.utils-DXI8s5Y5.js.map → formatter.utils-BLaKKpAa.js.map} +1 -1
  154. package/dist/{granularity.utils-DYOJiFaK.js → granularity.utils-Hj10GihD.js} +2 -2
  155. package/dist/{granularity.utils-DYOJiFaK.js.map → granularity.utils-Hj10GihD.js.map} +1 -1
  156. package/dist/index.js +42 -42
  157. package/dist/{pies.utils-4osQ9x_J.js → pies.utils-BlPQ76Jf.js} +3 -3
  158. package/dist/{pies.utils-4osQ9x_J.js.map → pies.utils-BlPQ76Jf.js.map} +1 -1
  159. package/dist/{tables.utils-BpqebRcu.js → tables.utils-BF3qUwBS.js} +3 -3
  160. package/dist/{tables.utils-BpqebRcu.js.map → tables.utils-BF3qUwBS.js.map} +1 -1
  161. package/package.json +1 -1
  162. package/dist/bars.utils-B8_oDn4j.js +0 -157
  163. package/dist/bars.utils-B8_oDn4j.js.map +0 -1
  164. package/dist/component.inputs.constants-C-vfrygQ.js.map +0 -1
  165. package/dist/definition-BtJ2IsdK.js +0 -174
  166. package/dist/definition-BtJ2IsdK.js.map +0 -1
  167. package/dist/definition-Bxj6nf61.js +0 -170
  168. package/dist/definition-Bxj6nf61.js.map +0 -1
  169. package/dist/definition-DETLn9Wn.js +0 -172
  170. package/dist/definition-DETLn9Wn.js.map +0 -1
  171. package/dist/definition-j7sh3jCh.js +0 -172
  172. package/dist/definition-j7sh3jCh.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.utils-DXI8s5Y5.js","sources":["../src/utils/cache.utils.ts","../src/utils/data.utils.ts","../src/theme/formatter/formatter.utils.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\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getSubInputValue = (key: DimensionOrMeasure, inputKey: string, metaKey?: string) =>\n key.inputs?.[inputKey] ?? (key.meta as any)?.[metaKey ?? inputKey];\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 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 = getSubInputValue(key, '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 data: (key: DimensionOrMeasure, value: any): string => {\n let newValue = value;\n\n // Nulls (inputs override meta)\n if (value == null) {\n return getSubInputValue(key, 'displayNullAs') ?? '';\n }\n\n // JSON and Markdown (inputs override meta)\n const displayFormat = getSubInputValue(key, 'displayFormat');\n if (displayFormat === DisplayFormatTypeOptions.JSON) {\n return JSON.stringify(value, null, 2);\n }\n if (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 (inputs override meta; meta uses pretext/posttext)\n const prefix = getSubInputValue(key, 'prefix', 'pretext') || '';\n const suffix = getSubInputValue(key, 'suffix', 'posttext') || '';\n const appended = `${prefix}${newValue}${suffix}`;\n\n // Max characters (inputs override meta)\n const maxCharacters = getSubInputValue(key, 'maxCharacters');\n if (maxCharacters != null) {\n if (appended.length <= maxCharacters) {\n return appended;\n }\n return appended.substring(0, maxCharacters) + '...';\n }\n\n return appended;\n },\n };\n};\n"],"names":["cache","factory","internalCache","params","key","formatter","ISO_DATE_TIME_REGEX","isValidISODate","value","getSubInputValue","inputKey","metaKey","_a","_b","getThemeFormatter","theme","cachedNumberFormatter","options","cachedDataNumberFormatter","cachedDateTimeFormatter","cachedDataDateTimeFormatter","cachedDataOthersFormatter","displayName","resolveI18nString","resolved","newValue","displayFormat","DisplayFormatTypeOptions","prefix","suffix","appended","maxCharacters"],"mappings":"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"}
1
+ {"version":3,"file":"formatter.utils-BLaKKpAa.js","sources":["../src/utils/cache.utils.ts","../src/utils/data.utils.ts","../src/theme/formatter/formatter.utils.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\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getSubInputValue = (key: DimensionOrMeasure, inputKey: string, metaKey?: string) =>\n key.inputs?.[inputKey] ?? (key.meta as any)?.[metaKey ?? inputKey];\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 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 = getSubInputValue(key, '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 data: (key: DimensionOrMeasure, value: any): string => {\n let newValue = value;\n\n // Nulls (inputs override meta)\n if (value == null) {\n return getSubInputValue(key, 'displayNullAs') ?? '';\n }\n\n // JSON and Markdown (inputs override meta)\n const displayFormat = getSubInputValue(key, 'displayFormat');\n if (displayFormat === DisplayFormatTypeOptions.JSON) {\n return JSON.stringify(value, null, 2);\n }\n if (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 (inputs override meta; meta uses pretext/posttext)\n const prefix = getSubInputValue(key, 'prefix', 'pretext') || '';\n const suffix = getSubInputValue(key, 'suffix', 'posttext') || '';\n const appended = `${prefix}${newValue}${suffix}`;\n\n // Max characters (inputs override meta)\n const maxCharacters = getSubInputValue(key, 'maxCharacters');\n if (maxCharacters != null) {\n if (appended.length <= maxCharacters) {\n return appended;\n }\n return appended.substring(0, maxCharacters) + '...';\n }\n\n return appended;\n },\n };\n};\n"],"names":["cache","factory","internalCache","params","key","formatter","ISO_DATE_TIME_REGEX","isValidISODate","value","getSubInputValue","inputKey","metaKey","_a","_b","getThemeFormatter","theme","cachedNumberFormatter","options","cachedDataNumberFormatter","cachedDateTimeFormatter","cachedDataDateTimeFormatter","cachedDataOthersFormatter","displayName","resolveI18nString","resolved","newValue","displayFormat","DisplayFormatTypeOptions","prefix","suffix","appended","maxCharacters"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { j as s, b as y } from "./index-CJYh9LRs.js";
2
- import { G as p } from "./GranularitySelectField-Di0ay_uj.js";
2
+ import { G as p } from "./GranularitySelectField-DBaZn-Me.js";
3
3
  const g = "_chartGranularitySelectFieldContainer_m26zn_1", G = "_marginTop_m26zn_7", o = {
4
4
  chartGranularitySelectFieldContainer: g,
5
5
  marginTop: G
@@ -48,4 +48,4 @@ export {
48
48
  S as C,
49
49
  x as g
50
50
  };
51
- //# sourceMappingURL=granularity.utils-DYOJiFaK.js.map
51
+ //# sourceMappingURL=granularity.utils-Hj10GihD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"granularity.utils-DYOJiFaK.js","sources":["../src/components/charts/shared/ChartGranularitySelectField/ChartGranularitySelectField.tsx","../src/components/charts/utils/granularity.utils.ts"],"sourcesContent":["import { Dimension, Granularity } from '@embeddable.com/core';\nimport {\n GranularitySelectField,\n GranularitySelectFieldProps,\n} from '../../../editors/shared/GranularitySelectField/GranularitySelectField';\nimport styles from './ChartGranularitySelectField.module.css';\nimport clsx from 'clsx';\n\nexport type ChartGranularitySelectFieldProps = Pick<GranularitySelectFieldProps, 'onChange'> & {\n dimension: Dimension;\n hasMarginTop?: boolean;\n};\n\nconst dimensionGranularities: Granularity[] = ['day', 'week', 'month', 'quarter', 'year'];\n\nexport const ChartGranularitySelectField = ({\n dimension,\n hasMarginTop,\n ...props\n}: ChartGranularitySelectFieldProps) => {\n const showGranularitySelector = dimension?.inputs?.showGranularityDropdown;\n\n if (!showGranularitySelector) {\n return null;\n }\n\n const dimensionTimeRange = dimension.inputs?.dateBounds;\n const dimensionGranularity = dimension.inputs?.granularity;\n\n return (\n <div\n className={clsx(\n styles.chartGranularitySelectFieldContainer,\n hasMarginTop && styles.marginTop,\n )}\n >\n <GranularitySelectField\n {...props}\n primaryTimeRange={dimensionTimeRange}\n granularity={dimensionGranularity}\n granularities={dimensionGranularities}\n variant=\"ghost\"\n side=\"bottom\"\n align=\"end\"\n />\n </div>\n );\n};\n","import { Dimension, Granularity } from '@embeddable.com/core';\n\nexport const getDimensionWithGranularity = (\n dimension: Dimension,\n granularity?: Granularity,\n): Dimension => {\n const currentGranularity = granularity ?? dimension.inputs?.granularity;\n\n return {\n ...dimension,\n inputs: {\n ...dimension.inputs,\n granularity: currentGranularity,\n },\n };\n};\n"],"names":["dimensionGranularities","ChartGranularitySelectField","dimension","hasMarginTop","props","_a","dimensionTimeRange","_b","dimensionGranularity","_c","jsx","clsx","styles","GranularitySelectField","getDimensionWithGranularity","granularity","currentGranularity"],"mappings":";;;;;GAaMA,IAAwC,CAAC,OAAO,QAAQ,SAAS,WAAW,MAAM,GAE3EC,IAA8B,CAAC;AAAA,EAC1C,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAwC;;AAGtC,MAAI,GAF4BC,IAAAH,KAAA,gBAAAA,EAAW,WAAX,gBAAAG,EAAmB;AAGjD,WAAO;AAGT,QAAMC,KAAqBC,IAAAL,EAAU,WAAV,gBAAAK,EAAkB,YACvCC,KAAuBC,IAAAP,EAAU,WAAV,gBAAAO,EAAkB;AAE/C,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPT,KAAgBS,EAAO;AAAA,MAAA;AAAA,MAGzB,UAAAF,gBAAAA,EAAAA;AAAAA,QAACG;AAAA,QAAA;AAAA,UACE,GAAGT;AAAA,UACJ,kBAAkBE;AAAA,UAClB,aAAaE;AAAA,UACb,eAAeR;AAAA,UACf,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,OAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IACR;AAAA,EAAA;AAGN,GC7Cac,IAA8B,CACzCZ,GACAa,MACc;;AACd,QAAMC,IAAqBD,OAAeV,IAAAH,EAAU,WAAV,gBAAAG,EAAkB;AAE5D,SAAO;AAAA,IACL,GAAGH;AAAA,IACH,QAAQ;AAAA,MACN,GAAGA,EAAU;AAAA,MACb,aAAac;AAAA,IAAA;AAAA,EACf;AAEJ;"}
1
+ {"version":3,"file":"granularity.utils-Hj10GihD.js","sources":["../src/components/charts/shared/ChartGranularitySelectField/ChartGranularitySelectField.tsx","../src/components/charts/utils/granularity.utils.ts"],"sourcesContent":["import { Dimension, Granularity } from '@embeddable.com/core';\nimport {\n GranularitySelectField,\n GranularitySelectFieldProps,\n} from '../../../editors/shared/GranularitySelectField/GranularitySelectField';\nimport styles from './ChartGranularitySelectField.module.css';\nimport clsx from 'clsx';\n\nexport type ChartGranularitySelectFieldProps = Pick<GranularitySelectFieldProps, 'onChange'> & {\n dimension: Dimension;\n hasMarginTop?: boolean;\n};\n\nconst dimensionGranularities: Granularity[] = ['day', 'week', 'month', 'quarter', 'year'];\n\nexport const ChartGranularitySelectField = ({\n dimension,\n hasMarginTop,\n ...props\n}: ChartGranularitySelectFieldProps) => {\n const showGranularitySelector = dimension?.inputs?.showGranularityDropdown;\n\n if (!showGranularitySelector) {\n return null;\n }\n\n const dimensionTimeRange = dimension.inputs?.dateBounds;\n const dimensionGranularity = dimension.inputs?.granularity;\n\n return (\n <div\n className={clsx(\n styles.chartGranularitySelectFieldContainer,\n hasMarginTop && styles.marginTop,\n )}\n >\n <GranularitySelectField\n {...props}\n primaryTimeRange={dimensionTimeRange}\n granularity={dimensionGranularity}\n granularities={dimensionGranularities}\n variant=\"ghost\"\n side=\"bottom\"\n align=\"end\"\n />\n </div>\n );\n};\n","import { Dimension, Granularity } from '@embeddable.com/core';\n\nexport const getDimensionWithGranularity = (\n dimension: Dimension,\n granularity?: Granularity,\n): Dimension => {\n const currentGranularity = granularity ?? dimension.inputs?.granularity;\n\n return {\n ...dimension,\n inputs: {\n ...dimension.inputs,\n granularity: currentGranularity,\n },\n };\n};\n"],"names":["dimensionGranularities","ChartGranularitySelectField","dimension","hasMarginTop","props","_a","dimensionTimeRange","_b","dimensionGranularity","_c","jsx","clsx","styles","GranularitySelectField","getDimensionWithGranularity","granularity","currentGranularity"],"mappings":";;;;;GAaMA,IAAwC,CAAC,OAAO,QAAQ,SAAS,WAAW,MAAM,GAE3EC,IAA8B,CAAC;AAAA,EAC1C,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAwC;;AAGtC,MAAI,GAF4BC,IAAAH,KAAA,gBAAAA,EAAW,WAAX,gBAAAG,EAAmB;AAGjD,WAAO;AAGT,QAAMC,KAAqBC,IAAAL,EAAU,WAAV,gBAAAK,EAAkB,YACvCC,KAAuBC,IAAAP,EAAU,WAAV,gBAAAO,EAAkB;AAE/C,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPT,KAAgBS,EAAO;AAAA,MAAA;AAAA,MAGzB,UAAAF,gBAAAA,EAAAA;AAAAA,QAACG;AAAA,QAAA;AAAA,UACE,GAAGT;AAAA,UACJ,kBAAkBE;AAAA,UAClB,aAAaE;AAAA,UACb,eAAeR;AAAA,UACf,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,OAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IACR;AAAA,EAAA;AAGN,GC7Cac,IAA8B,CACzCZ,GACAa,MACc;;AACd,QAAMC,IAAqBD,OAAeV,IAAAH,EAAU,WAAV,gBAAAG,EAAkB;AAE5D,SAAO;AAAA,IACL,GAAGH;AAAA,IACH,QAAQ;AAAA,MACN,GAAGA,EAAU;AAAA,MACb,aAAac;AAAA,IAAA;AAAA,EACf;AAEJ;"}
package/dist/index.js CHANGED
@@ -1,57 +1,57 @@
1
1
  import { a as h, g as C, b, i as S } from "./styles.utils-C8CnV0SB.js";
2
2
  import { i as F, s as D } from "./color.utils-BSg_DFOh.js";
3
- import { c as y, a as R, g as k, i as L } from "./formatter.utils-DXI8s5Y5.js";
3
+ import { c as y, a as R, g as k, i as L } from "./formatter.utils-BLaKKpAa.js";
4
4
  import { b as G, c as E, a as M, g as A, l as B, d as v, u as w } from "./dates.utils-C3LPV893.js";
5
- import { d as I, b as j, c as H, e as _, f as N, h as z, i as K, a as V, g as q, r as W, j as U, k as X } from "./charts.utils-ZAdb7oJ-.js";
5
+ import { d as I, b as j, c as H, e as _, f as N, h as z, i as K, a as V, g as q, r as W, j as U, k as X } from "./charts.utils-N3kN-XFw.js";
6
6
  import { i as Z, a as J, r as Q, b as ee } from "./component.utils-Dua9clQJ.js";
7
- import { C as te, G as re, d as oe, a as se, g as ie, i as ne, s as le, t as pe, b as me } from "./component.inputs.constants-C-vfrygQ.js";
7
+ import { C as te, G as re, d as oe, a as se, b as ie, i as ne, s as le, t as pe, c as me } from "./component.inputs.constants-C7tJAhsQ.js";
8
8
  import { g as ce, a as ue } from "./timeRange.utils-D1hjtzlU.js";
9
9
  import { p as Pe } from "./preview.data.constants--FLtEcg5.js";
10
- import { i as he, b as Ce } from "./definition-C4aPFAKq.js";
11
- import { i as Se, b as xe } from "./definition-DETLn9Wn.js";
12
- import { i as De, b as Te } from "./definition-Bxj6nf61.js";
13
- import { i as Re, b as ke } from "./definition-5T5HRGnj.js";
14
- import { i as Oe, b as Ge } from "./definition-BtJ2IsdK.js";
15
- import { i as Me, b as Ae } from "./definition-j7sh3jCh.js";
16
- import { g as ve, a as we, b as $e } from "./bars.utils-B8_oDn4j.js";
17
- import { i as je, k as He } from "./definition-DsDQF6Da.js";
18
- import { i as Ne, k as ze } from "./definition-BKX3li26.js";
10
+ import { i as he, b as Ce } from "./definition-pNCrIBqW.js";
11
+ import { i as Se, b as xe } from "./definition-DynupxEC.js";
12
+ import { i as De, b as Te } from "./definition-DnWIyPun.js";
13
+ import { i as Re, b as ke } from "./definition-BrVG5pTw.js";
14
+ import { i as Oe, b as Ge } from "./definition-2JaSZCXp.js";
15
+ import { i as Me, b as Ae } from "./definition-B5l2-yZu.js";
16
+ import { g as ve, a as we, b as $e } from "./bars.utils-jD7h2lii.js";
17
+ import { i as je, k as He } from "./definition-CbkzLjXK.js";
18
+ import { i as Ne, k as ze } from "./definition-EqCeNipq.js";
19
19
  import { g as Ve } from "./kpis.utils-DsZ2GzuB.js";
20
- import { i as We, g as Ue, a as Xe, l as Ye } from "./definition-xGVDcBlW.js";
21
- import { i as Je, g as Qe, a as ea, l as aa } from "./definition-Di3x_6Rh.js";
22
- import { i as ra, g as oa, a as sa, l as ia } from "./definition-mtzDmBoh.js";
20
+ import { i as We, g as Ue, a as Xe, l as Ye } from "./definition-Dizabfqb.js";
21
+ import { i as Je, g as Qe, a as ea, l as aa } from "./definition-CN6Ieeer.js";
22
+ import { i as ra, g as oa, a as sa, l as ia } from "./definition-Bn3Fi9C4.js";
23
23
  import { g as la } from "./lines.utils-CEGfmIHB.js";
24
- import { i as ma, d as da } from "./definition-DM13nXMm.js";
25
- import { i as ua, p as ga } from "./definition-DSAR_Bsa.js";
26
- import { i as fa, d as ha } from "./definition-CWVSN9UB.js";
27
- import { g as ba, a as Sa } from "./pies.utils-4osQ9x_J.js";
28
- import { i as Fa, h as Da } from "./definition-DpFvucVl.js";
29
- import { i as ya, g as Ra, a as ka, b as La, c as Oa, p as Ga } from "./definition-5a__Y0lx.js";
30
- import { i as Ma, d as Aa, t as Ba } from "./definition-FEz36Zkx.js";
31
- import { T as wa, i as $a, d as Ia, t as ja } from "./definition-wDuSjm3O.js";
32
- import { b as _a, c as Na, g as za, a as Ka } from "./tables.utils-BpqebRcu.js";
24
+ import { i as ma, d as da } from "./definition-B9bfDi7Q.js";
25
+ import { i as ua, p as ga } from "./definition-C8DCZNOR.js";
26
+ import { i as fa, d as ha } from "./definition-CkVv7VMQ.js";
27
+ import { g as ba, a as Sa } from "./pies.utils-BlPQ76Jf.js";
28
+ import { i as Fa, h as Da } from "./definition-SCQMKDEM.js";
29
+ import { i as ya, g as Ra, a as ka, b as La, c as Oa, p as Ga } from "./definition-B2mKjUhy.js";
30
+ import { i as Ma, d as Aa, t as Ba } from "./definition-Cx1UPIho.js";
31
+ import { T as wa, i as $a, d as Ia, t as ja } from "./definition-Cgq79V22.js";
32
+ import { b as _a, c as Na, g as za, a as Ka } from "./tables.utils-BF3qUwBS.js";
33
33
  import { g as qa, u as Wa } from "./tables.hooks-fVC_4V5K.js";
34
34
  import { C as Xa } from "./ChartCard-Cqhxv7xl.js";
35
- import { C as Za, g as Ja } from "./granularity.utils-DYOJiFaK.js";
35
+ import { C as Za, g as Ja } from "./granularity.utils-Hj10GihD.js";
36
36
  import { i as et, e as at } from "./definition-B4ALO0PD.js";
37
- import { i as rt, h as ot } from "./definition-CV2xoi69.js";
38
- import { i as it, m as nt } from "./definition-C8CAdqhV.js";
39
- import { u as pt } from "./charts.fillGaps.hooks-DDOGO5JR.js";
40
- import { i as dt, c as ct, g as ut, a as gt } from "./definition-Bhvd22lu.js";
41
- import { i as ft, d as ht, g as Ct } from "./definition-DxkipQYz.js";
42
- import { i as St, d as xt } from "./definition-CBevT5lk.js";
43
- import { i as Dt, m as Tt } from "./definition-Cl_4hkGI.js";
44
- import { i as Rt, s as kt } from "./definition-DRFMnEQh.js";
45
- import { i as Ot, d as Gt } from "./definition-Bdcy082b.js";
46
- import { i as Mt, m as At } from "./definition-B9E-HZdm.js";
47
- import { i as vt, d as wt } from "./definition-CzAzy1Hk.js";
48
- import { i as It, m as jt } from "./definition-D1wwcuOy.js";
49
- import { i as _t, g as Nt } from "./definition-Cxji761B.js";
50
- import { i as Kt, t as Vt } from "./definition-ChFv8Vq8.js";
37
+ import { i as rt, h as ot } from "./definition-DFoesKHP.js";
38
+ import { i as it, m as nt } from "./definition-oe6halnQ.js";
39
+ import { u as pt } from "./charts.fillGaps.hooks-CvKhAwUj.js";
40
+ import { i as dt, c as ct, g as ut, a as gt } from "./definition-Bdwvh471.js";
41
+ import { i as ft, d as ht, g as Ct } from "./definition-bvWr0LdF.js";
42
+ import { i as St, d as xt } from "./definition-Dh9UNSfZ.js";
43
+ import { i as Dt, m as Tt } from "./definition-D4-0-tXB.js";
44
+ import { i as Rt, s as kt } from "./definition-BCbRycZt.js";
45
+ import { i as Ot, d as Gt } from "./definition-ngOUqoDo.js";
46
+ import { i as Mt, m as At } from "./definition-BIk4lZdI.js";
47
+ import { i as vt, d as wt } from "./definition-BqIza8Nx.js";
48
+ import { i as It, m as jt } from "./definition-BKcHxtMp.js";
49
+ import { i as _t, g as Nt } from "./definition-v66e9pZV.js";
50
+ import { i as Kt, t as Vt } from "./definition-B6Jm5skX.js";
51
51
  import { E as Wt } from "./EditorCard-BABTQLwW.js";
52
- import { D as Xt } from "./DimensionAndMeasureSingleSelectField-ClbFwtXO.js";
53
- import { G as Zt, g as Jt, a as Qt, b as er } from "./GranularitySelectField-Di0ay_uj.js";
54
- import { g as tr } from "./dimensionsAndMeasures.utils-x51eIYbW.js";
52
+ import { D as Xt } from "./DimensionAndMeasureSingleSelectField-BsBSTKKc.js";
53
+ import { G as Zt, g as Jt, a as Qt, b as er } from "./GranularitySelectField-DBaZn-Me.js";
54
+ import { g as tr } from "./dimensionsAndMeasures.utils-DtUfSnpA.js";
55
55
  import { i as or } from "./index-Bo7tyDqZ.js";
56
56
  import { i as ir } from "./index-DMsxz8Oj.js";
57
57
  const n = "remarkable-theme-fonts", i = "data-remarkable-preconnect", l = "data-remarkable-google-fonts", m = (e) => {
@@ -1,5 +1,5 @@
1
- import { r as u, g as b, a as d } from "./charts.utils-ZAdb7oJ-.js";
2
- import { g as c } from "./formatter.utils-DXI8s5Y5.js";
1
+ import { r as u, g as b, a as d } from "./charts.utils-N3kN-XFw.js";
2
+ import { g as c } from "./formatter.utils-BLaKKpAa.js";
3
3
  import { g as l } from "./styles.utils-C8CnV0SB.js";
4
4
  import { t as f } from "./index-CJYh9LRs.js";
5
5
  import { i as h } from "./component.utils-Dua9clQJ.js";
@@ -73,4 +73,4 @@ export {
73
73
  w as a,
74
74
  O as g
75
75
  };
76
- //# sourceMappingURL=pies.utils-4osQ9x_J.js.map
76
+ //# sourceMappingURL=pies.utils-BlPQ76Jf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pies.utils-4osQ9x_J.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 { getDatalabelPercentage, 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, context) => {\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(Number(value), context.dataset.data);\n }\n return themeFormatter.data(measure, value);\n },\n },\n tooltip: {\n callbacks: {\n label(context) {\n const raw = context.raw as number;\n return `${themeFormatter.data(measure, raw)} (${getDatalabelPercentage(raw, context.dataset.data)})`;\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","_a","getDatalabelPercentage","raw"],"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,GAAwBK,MAAY;;AAC9C,kBAAIC,IAAAF,EAAQ,WAAR,QAAAE,EAAgB,wBACXC,EAAuB,OAAOP,CAAK,GAAGK,EAAQ,QAAQ,IAAI,IAE5DhB,EAAe,KAAKe,GAASJ,CAAK;AAAA,QAC3C;AAAA,MAAA;AAAA,MAEF,SAAS;AAAA,QACP,WAAW;AAAA,UACT,MAAMK,GAAS;AACb,kBAAMG,IAAMH,EAAQ;AACpB,mBAAO,GAAGhB,EAAe,KAAKe,GAASI,CAAG,CAAC,KAAKD,EAAuBC,GAAKH,EAAQ,QAAQ,IAAI,CAAC;AAAA,UACnG;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"pies.utils-BlPQ76Jf.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 { getDatalabelPercentage, 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, context) => {\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(Number(value), context.dataset.data);\n }\n return themeFormatter.data(measure, value);\n },\n },\n tooltip: {\n callbacks: {\n label(context) {\n const raw = context.raw as number;\n return `${themeFormatter.data(measure, raw)} (${getDatalabelPercentage(raw, context.dataset.data)})`;\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","_a","getDatalabelPercentage","raw"],"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,GAAwBK,MAAY;;AAC9C,kBAAIC,IAAAF,EAAQ,WAAR,QAAAE,EAAgB,wBACXC,EAAuB,OAAOP,CAAK,GAAGK,EAAQ,QAAQ,IAAI,IAE5DhB,EAAe,KAAKe,GAASJ,CAAK;AAAA,QAC3C;AAAA,MAAA;AAAA,MAEF,SAAS;AAAA,QACP,WAAW;AAAA,UACT,MAAMK,GAAS;AACb,kBAAMG,IAAMH,EAAQ;AACpB,mBAAO,GAAGhB,EAAe,KAAKe,GAASI,CAAG,CAAC,KAAKD,EAAuBC,GAAKH,EAAQ,QAAQ,IAAI,CAAC;AAAA,UACnG;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -1,6 +1,6 @@
1
1
  import { j as o, W as p, X as f, Y as h, y as a } from "./index-CJYh9LRs.js";
2
- import { g as w } from "./formatter.utils-DXI8s5Y5.js";
3
- import { D as c } from "./component.inputs.constants-C-vfrygQ.js";
2
+ import { g as w } from "./formatter.utils-BLaKKpAa.js";
3
+ import { D as c } from "./component.inputs.constants-C7tJAhsQ.js";
4
4
  const T = (e) => {
5
5
  var n;
6
6
  const t = (n = e.inputs) == null ? void 0 : n.align;
@@ -83,4 +83,4 @@ export {
83
83
  A as c,
84
84
  F as g
85
85
  };
86
- //# sourceMappingURL=tables.utils-BpqebRcu.js.map
86
+ //# sourceMappingURL=tables.utils-BF3qUwBS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tables.utils-BpqebRcu.js","sources":["../src/components/charts/tables/tables.utils.tsx"],"sourcesContent":["import { DataResponse, Dimension, DimensionOrMeasure } from '@embeddable.com/core';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { CssSize, Markdown, TableBodyCellWithCopy } from '@embeddable.com/remarkable-ui';\nimport { Theme } from '../../../theme/theme.types';\nimport {\n getStyleNumber,\n TableHeaderAlign,\n TableHeaderItem,\n TableHeaderItemAlign,\n} from '@embeddable.com/remarkable-ui';\nimport { DisplayFormatTypeOptions } from '../../types/DisplayFormat.type.emb';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getTableHeaderAlign = (dimOrMeas: DimensionOrMeasure): TableHeaderItemAlign => {\n const subInputAlign = dimOrMeas.inputs?.align;\n\n if (subInputAlign) return subInputAlign;\n\n // Get width by native type\n switch (dimOrMeas.nativeType) {\n case 'boolean':\n case 'time':\n case 'number':\n return TableHeaderAlign.RIGHT;\n default:\n return TableHeaderAlign.LEFT;\n }\n};\n\nexport const getTableHeaderMinWidth = (dimOrMeas: DimensionOrMeasure): CssSize => {\n const subInputWidth = dimOrMeas.inputs?.width;\n\n if (subInputWidth) return subInputWidth;\n\n // Get width by native type\n switch (dimOrMeas.nativeType) {\n case 'string':\n return getStyleNumber('--em-tablechart-min-width--string' as any, '8.75rem') as number;\n case 'number':\n return getStyleNumber('--em-tablechart-min-width--number' as any, '5.625rem') as number;\n case 'time':\n return getStyleNumber('--em-tablechart-min-width--time' as any, '8.75rem') as number;\n case 'boolean':\n default:\n return getStyleNumber('--em-tablechart-min-width--boolean' as any, '5.625rem') as number;\n }\n};\n\nexport const getTableHeaders = (\n props: {\n dimensionsAndMeasures: DimensionOrMeasure[];\n displayNullAs?: string;\n },\n theme: Theme,\n): TableHeaderItem<any>[] => {\n const themeFormatter = getThemeFormatter(theme);\n return props.dimensionsAndMeasures.map((dimOrMeas) => {\n const displayFormat: string = dimOrMeas.inputs?.displayFormat;\n const hasCustomCellFormatter =\n displayFormat &&\n (displayFormat === DisplayFormatTypeOptions.JSON ||\n displayFormat === DisplayFormatTypeOptions.MARKDOWN);\n\n return {\n id: dimOrMeas.name,\n title: themeFormatter.dimensionOrMeasureTitle(dimOrMeas),\n minWidth: getTableHeaderMinWidth(dimOrMeas),\n align: getTableHeaderAlign(dimOrMeas),\n accessor: (row) => {\n const updatedDimOrMeas = {\n ...dimOrMeas,\n inputs: { ...dimOrMeas.inputs, displayNullAs: props.displayNullAs },\n };\n return themeFormatter.data(updatedDimOrMeas, row[dimOrMeas.name]);\n },\n cellStyle: (value) => {\n const tableCellStyle = dimOrMeas.inputs?.tableCellStyle;\n if (tableCellStyle) {\n const activeTableCellStyle = theme.defaults.tableCellStyleOptions?.find(\n (style) => style.value === tableCellStyle,\n );\n if (activeTableCellStyle) {\n return activeTableCellStyle.styles(value);\n }\n }\n return undefined;\n },\n cell: hasCustomCellFormatter\n ? ({ value }) => {\n let currentValue: string | undefined;\n if (typeof value === 'string') {\n currentValue = value;\n } else if (value !== undefined && value !== null) {\n currentValue = String(value);\n } else {\n currentValue = undefined;\n }\n\n return (\n <TableBodyCellWithCopy value={value}>\n {displayFormat === DisplayFormatTypeOptions.MARKDOWN ? (\n // Markdown\n <Markdown content={currentValue} />\n ) : (\n // JSON\n <pre>{currentValue}</pre>\n )}\n </TableBodyCellWithCopy>\n );\n }\n : undefined,\n };\n });\n};\n\nexport const getTableRows = (props: { clickDimension?: Dimension; rows: DataResponse['data'] }) => {\n if (!props.rows || props.rows.length === 0) {\n return [];\n }\n\n const clickDimensionName = props.clickDimension?.name;\n\n if (!clickDimensionName || Object.keys(props.rows[0]!).includes(clickDimensionName)) {\n return props.rows;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return props.rows.map(({ [clickDimensionName]: _, ...row }) => ({\n ...row,\n }));\n};\n"],"names":["getTableHeaderAlign","dimOrMeas","subInputAlign","_a","TableHeaderAlign","getTableHeaderMinWidth","subInputWidth","getStyleNumber","getTableHeaders","props","theme","themeFormatter","getThemeFormatter","displayFormat","hasCustomCellFormatter","DisplayFormatTypeOptions","row","updatedDimOrMeas","value","tableCellStyle","activeTableCellStyle","_b","style","currentValue","jsx","TableBodyCellWithCopy","Markdown","getTableRows","clickDimensionName","_"],"mappings":"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"}
1
+ {"version":3,"file":"tables.utils-BF3qUwBS.js","sources":["../src/components/charts/tables/tables.utils.tsx"],"sourcesContent":["import { DataResponse, Dimension, DimensionOrMeasure } from '@embeddable.com/core';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { CssSize, Markdown, TableBodyCellWithCopy } from '@embeddable.com/remarkable-ui';\nimport { Theme } from '../../../theme/theme.types';\nimport {\n getStyleNumber,\n TableHeaderAlign,\n TableHeaderItem,\n TableHeaderItemAlign,\n} from '@embeddable.com/remarkable-ui';\nimport { DisplayFormatTypeOptions } from '../../types/DisplayFormat.type.emb';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getTableHeaderAlign = (dimOrMeas: DimensionOrMeasure): TableHeaderItemAlign => {\n const subInputAlign = dimOrMeas.inputs?.align;\n\n if (subInputAlign) return subInputAlign;\n\n // Get width by native type\n switch (dimOrMeas.nativeType) {\n case 'boolean':\n case 'time':\n case 'number':\n return TableHeaderAlign.RIGHT;\n default:\n return TableHeaderAlign.LEFT;\n }\n};\n\nexport const getTableHeaderMinWidth = (dimOrMeas: DimensionOrMeasure): CssSize => {\n const subInputWidth = dimOrMeas.inputs?.width;\n\n if (subInputWidth) return subInputWidth;\n\n // Get width by native type\n switch (dimOrMeas.nativeType) {\n case 'string':\n return getStyleNumber('--em-tablechart-min-width--string' as any, '8.75rem') as number;\n case 'number':\n return getStyleNumber('--em-tablechart-min-width--number' as any, '5.625rem') as number;\n case 'time':\n return getStyleNumber('--em-tablechart-min-width--time' as any, '8.75rem') as number;\n case 'boolean':\n default:\n return getStyleNumber('--em-tablechart-min-width--boolean' as any, '5.625rem') as number;\n }\n};\n\nexport const getTableHeaders = (\n props: {\n dimensionsAndMeasures: DimensionOrMeasure[];\n displayNullAs?: string;\n },\n theme: Theme,\n): TableHeaderItem<any>[] => {\n const themeFormatter = getThemeFormatter(theme);\n return props.dimensionsAndMeasures.map((dimOrMeas) => {\n const displayFormat: string = dimOrMeas.inputs?.displayFormat;\n const hasCustomCellFormatter =\n displayFormat &&\n (displayFormat === DisplayFormatTypeOptions.JSON ||\n displayFormat === DisplayFormatTypeOptions.MARKDOWN);\n\n return {\n id: dimOrMeas.name,\n title: themeFormatter.dimensionOrMeasureTitle(dimOrMeas),\n minWidth: getTableHeaderMinWidth(dimOrMeas),\n align: getTableHeaderAlign(dimOrMeas),\n accessor: (row) => {\n const updatedDimOrMeas = {\n ...dimOrMeas,\n inputs: { ...dimOrMeas.inputs, displayNullAs: props.displayNullAs },\n };\n return themeFormatter.data(updatedDimOrMeas, row[dimOrMeas.name]);\n },\n cellStyle: (value) => {\n const tableCellStyle = dimOrMeas.inputs?.tableCellStyle;\n if (tableCellStyle) {\n const activeTableCellStyle = theme.defaults.tableCellStyleOptions?.find(\n (style) => style.value === tableCellStyle,\n );\n if (activeTableCellStyle) {\n return activeTableCellStyle.styles(value);\n }\n }\n return undefined;\n },\n cell: hasCustomCellFormatter\n ? ({ value }) => {\n let currentValue: string | undefined;\n if (typeof value === 'string') {\n currentValue = value;\n } else if (value !== undefined && value !== null) {\n currentValue = String(value);\n } else {\n currentValue = undefined;\n }\n\n return (\n <TableBodyCellWithCopy value={value}>\n {displayFormat === DisplayFormatTypeOptions.MARKDOWN ? (\n // Markdown\n <Markdown content={currentValue} />\n ) : (\n // JSON\n <pre>{currentValue}</pre>\n )}\n </TableBodyCellWithCopy>\n );\n }\n : undefined,\n };\n });\n};\n\nexport const getTableRows = (props: { clickDimension?: Dimension; rows: DataResponse['data'] }) => {\n if (!props.rows || props.rows.length === 0) {\n return [];\n }\n\n const clickDimensionName = props.clickDimension?.name;\n\n if (!clickDimensionName || Object.keys(props.rows[0]!).includes(clickDimensionName)) {\n return props.rows;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return props.rows.map(({ [clickDimensionName]: _, ...row }) => ({\n ...row,\n }));\n};\n"],"names":["getTableHeaderAlign","dimOrMeas","subInputAlign","_a","TableHeaderAlign","getTableHeaderMinWidth","subInputWidth","getStyleNumber","getTableHeaders","props","theme","themeFormatter","getThemeFormatter","displayFormat","hasCustomCellFormatter","DisplayFormatTypeOptions","row","updatedDimOrMeas","value","tableCellStyle","activeTableCellStyle","_b","style","currentValue","jsx","TableBodyCellWithCopy","Markdown","getTableRows","clickDimensionName","_"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@embeddable.com/remarkable-pro",
3
3
  "author": "embeddable (https://embeddable.com)",
4
- "version": "0.1.31",
4
+ "version": "0.1.32",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/embeddable-hq/remarkable-pro"
@@ -1,157 +0,0 @@
1
- import { t as D, v as w } from "./index-CJYh9LRs.js";
2
- import { r as M, g as O, a as p } from "./charts.utils-ZAdb7oJ-.js";
3
- import { g as C } from "./formatter.utils-DXI8s5Y5.js";
4
- import { g as f } from "./styles.utils-C8CnV0SB.js";
5
- const E = (l, d) => {
6
- var g;
7
- const m = C(d), { data: n = [], dimension: c, groupDimension: a, measure: i } = l, s = [...new Set(n.map((r) => r[c.name]).filter((r) => r != null))].sort(), t = `${a.name}${a.nativeType === w && ((g = a.inputs) != null && g.granularity) ? `.${a.inputs.granularity}` : ""}`, e = [...new Set(n.map((r) => r[t]))].filter((r) => r != null), o = D(), u = e.map((r, b) => {
8
- const $ = f({
9
- dimensionOrMeasure: a,
10
- theme: d,
11
- color: "background",
12
- value: `${a.name}.${r}`,
13
- index: b,
14
- chartColors: o
15
- }), v = f({
16
- dimensionOrMeasure: a,
17
- theme: d,
18
- color: "border",
19
- value: `${a.name}.${r}`,
20
- index: b,
21
- chartColors: o
22
- });
23
- return {
24
- label: m.data(a, r),
25
- rawLabel: r,
26
- backgroundColor: $,
27
- borderColor: v,
28
- data: s.map((P) => {
29
- const h = n.find(
30
- (k) => k[t] === r && k[c.name] === P
31
- );
32
- return h ? Number(h[i.name]) : 0;
33
- })
34
- };
35
- });
36
- return {
37
- labels: s,
38
- datasets: u
39
- };
40
- }, I = (l, d = M) => {
41
- if (!l.data)
42
- return {
43
- labels: [],
44
- datasets: [{ data: [] }]
45
- };
46
- const m = C(d), n = O(l.data, l.dimension, l.measures, l.maxItems), c = D();
47
- return {
48
- labels: n.map((a) => a[l.dimension.name]),
49
- datasets: l.measures.map((a, i) => {
50
- const s = f({
51
- dimensionOrMeasure: a,
52
- theme: d,
53
- color: "background",
54
- value: a.name,
55
- index: i,
56
- chartColors: c
57
- }), t = f({
58
- dimensionOrMeasure: a,
59
- theme: d,
60
- color: "border",
61
- value: a.name,
62
- index: i,
63
- chartColors: c
64
- });
65
- return {
66
- label: m.dimensionOrMeasureTitle(a),
67
- data: n.map((e) => e[a.name] ?? 0),
68
- backgroundColor: s,
69
- borderColor: t
70
- };
71
- })
72
- };
73
- }, T = (l, d) => {
74
- const { datasets: m } = l.chart.data, n = l.dataIndex, c = m.reduce((a, i) => {
75
- const s = i.data[n];
76
- return a + (s || 0);
77
- }, 0);
78
- return d(c);
79
- }, S = (l, d) => {
80
- const { onBarClicked: m, measures: n, dimension: c, horizontal: a, data: i } = l, s = C(d);
81
- return {
82
- plugins: {
83
- legend: { position: d.charts.legendPosition ?? "bottom" },
84
- datalabels: {
85
- labels: {
86
- total: {
87
- formatter: (t, e) => T(
88
- e,
89
- (o) => s.data(n[0], o)
90
- )
91
- },
92
- value: {
93
- formatter: (t, e) => {
94
- var u;
95
- const o = n[e.datasetIndex % n.length];
96
- return (u = o.inputs) != null && u.showValueAsPercentage ? p(Number(t), e.dataset.data) : s.data(o, t);
97
- }
98
- }
99
- }
100
- },
101
- tooltip: {
102
- callbacks: {
103
- title: (t) => {
104
- var o;
105
- const e = (o = t[0]) == null ? void 0 : o.label;
106
- return s.data(c, e);
107
- },
108
- label: (t) => {
109
- var b;
110
- const e = n[t.datasetIndex % n.length], o = t.raw, u = s.data(c, t.dataset.label) || "", g = s.data(e, o);
111
- let r = "";
112
- return (b = e.inputs) != null && b.showValueAsPercentage && (r = `(${p(o, t.dataset.data)})`), `${u}: ${g} ${r}`;
113
- }
114
- }
115
- }
116
- },
117
- scales: {
118
- x: {
119
- ticks: {
120
- callback: (t) => {
121
- if (a)
122
- return s.data(n[0], t);
123
- if (!i || !i.labels) return;
124
- const e = i.labels[Number(t)];
125
- return s.data(c, e);
126
- }
127
- }
128
- },
129
- y: {
130
- ticks: {
131
- callback: (t) => {
132
- if (!a)
133
- return s.data(n[0], t);
134
- if (!i || !i.labels) return;
135
- const e = i.labels[Number(t)];
136
- return s.data(c, e);
137
- }
138
- }
139
- }
140
- },
141
- onClick: (t, e, o) => {
142
- var b;
143
- if (!m) return;
144
- const u = e[0], g = u ? o.data.labels[u.index] : null, r = u ? (b = o.data.datasets[u.datasetIndex]) == null ? void 0 : b.rawLabel : null;
145
- m({
146
- axisDimensionValue: g,
147
- groupingDimensionValue: r
148
- });
149
- }
150
- };
151
- };
152
- export {
153
- S as a,
154
- E as b,
155
- I as g
156
- };
157
- //# sourceMappingURL=bars.utils-B8_oDn4j.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bars.utils-B8_oDn4j.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { CUBE_DIMENSION_TYPE_TIME, DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { getDatalabelPercentage, groupTailAsOther } from '../charts.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupDimensionName = `${groupDimension.name}${groupDimension.nativeType === CUBE_DIMENSION_TYPE_TIME && groupDimension.inputs?.granularity ? `.${groupDimension.inputs.granularity}` : ''}`;\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked?: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(Number(value), context.dataset.data);\n }\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\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n\n const dimensionLabel = themeFormatter.data(dimension, context.dataset.label) || '';\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data)})`;\n }\n return `${dimensionLabel}: ${measureValue} ${percentage}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n if (!onBarClicked) return;\n\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","axis","d","groupDimensionName","CUBE_DIMENSION_TYPE_TIME","_a","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","getDatalabelPercentage","label","raw","dimensionLabel","measureValue","percentage","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"component.inputs.constants-C-vfrygQ.js","sources":["../src/components/types/DisplayFormat.type.emb.ts","../src/theme/defaults/defaults.GranularityOptions.constants.ts","../src/components/types/Align.type.emb.ts","../src/components/types/TableCellStyle.type.emb.ts","../src/components/component.subinputs.constants.ts","../src/components/types/ComparisonPeriod.type.emb.ts","../src/components/component.inputs.constants.ts"],"sourcesContent":["import { defineOption, defineType } from '@embeddable.com/core';\n\nexport const DisplayFormatTypeOptions = {\n MARKDOWN: 'Markdown',\n JSON: 'Json',\n} as const;\n\nconst DisplayFormatType = defineType('DisplayFormat', {\n label: 'Display format',\n optionLabel: (value: string) => value,\n});\n\ndefineOption(DisplayFormatType, DisplayFormatTypeOptions.MARKDOWN);\ndefineOption(DisplayFormatType, DisplayFormatTypeOptions.JSON);\n\nexport default DisplayFormatType;\n","import { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\n\nexport const Granularity = {\n second: 'second',\n minute: 'minute',\n hour: 'hour',\n day: 'day',\n week: 'week',\n month: 'month',\n quarter: 'quarter',\n year: 'year',\n} as const;\n\nexport type TGranularity = keyof typeof Granularity;\nexport type TGranularityValue = (typeof Granularity)[TGranularity];\n\nexport const defaultGranularitySelectFieldOptions: SelectListOptionProps[] = [\n { value: Granularity.second, label: 'defaults.granularityOptions.second|Second' },\n { value: Granularity.minute, label: 'defaults.granularityOptions.minute|Minute' },\n { value: Granularity.hour, label: 'defaults.granularityOptions.hour|Hour' },\n { value: Granularity.day, label: 'defaults.granularityOptions.day|Day' },\n { value: Granularity.week, label: 'defaults.granularityOptions.week|Week' },\n { value: Granularity.month, label: 'defaults.granularityOptions.month|Month' },\n { value: Granularity.quarter, label: 'defaults.granularityOptions.quarter|Quarter' },\n { value: Granularity.year, label: 'defaults.granularityOptions.year|Year' },\n];\n\nexport const granularities = Object.values(Granularity);\n","import { defineOption, defineType } from '@embeddable.com/core';\n\nconst AlignType = defineType('align', {\n label: 'Alignment',\n optionLabel: (value: string) => value,\n});\n\ndefineOption(AlignType, 'left');\ndefineOption(AlignType, 'center');\ndefineOption(AlignType, 'right');\n\nexport default AlignType;\n","import { defineOption, defineType } from '@embeddable.com/core';\n\nconst TableCellStyleType = defineType('tableCellStyle', {\n label: 'Table cell style',\n optionLabel: (value: string) => value,\n});\n\ndefineOption(TableCellStyleType, 'Bold');\ndefineOption(TableCellStyleType, 'Italic');\ndefineOption(TableCellStyleType, 'Positive vs Negative');\n\nexport default TableCellStyleType;\n","import ColorType from '../editors/ColorEditor/Color.type.emb';\nimport { Granularity } from '../theme/defaults/defaults.GranularityOptions.constants';\nimport AlignType from './types/Align.type.emb';\nimport DisplayFormatType from './types/DisplayFormat.type.emb';\nimport TableCellStyleType from './types/TableCellStyle.type.emb';\n\n/* -------------------- */\n/* ----- Generics ----- */\n/* -------------------- */\n\nconst number = {\n name: 'number',\n type: 'number',\n label: 'Number',\n} as const;\n\nconst string = {\n name: 'string',\n type: 'string',\n label: 'String',\n} as const;\n\nconst boolean = {\n name: 'boolean',\n type: 'boolean',\n label: 'Boolean',\n} as const;\n\nconst timeRange = {\n name: 'timeRange',\n type: 'timeRange',\n label: 'Time range',\n} as const;\n\n/* ------------------ */\n/* ----- Common ----- */\n/* ------------------ */\n\nconst width = {\n name: 'width',\n type: 'number',\n label: 'Width',\n description: 'You can input a number in pixels e.g. 400',\n} as const;\n\nconst align = { name: 'align', type: AlignType, label: 'Align' } as const;\n\nconst prefix = { name: 'prefix', type: 'string', label: 'Prefix' } as const;\n\nconst suffix = { name: 'suffix', type: 'string', label: 'Suffix' } as const;\n\nconst displayName = {\n name: 'displayName',\n type: 'string',\n label: 'Display name',\n} as const;\n\nconst maxCharacters = {\n name: 'maxCharacters',\n type: 'number',\n label: 'Maximum characters',\n description: undefined,\n supportedTypes: ['string'],\n} as const;\n\nconst decimalPlaces = {\n name: 'decimalPlaces',\n type: 'number',\n label: 'Decimal places',\n supportedTypes: ['number'],\n} as const;\n\nconst currency = {\n name: 'currency',\n type: 'string',\n label: 'Currency',\n description: 'e.g. EUR',\n supportedTypes: ['number'],\n} as const;\n\nconst abbreviateLargeNumber = {\n name: 'abbreviateLargeNumber',\n type: 'boolean',\n label: 'Abbreviate large number',\n supportedTypes: ['number'],\n} as const;\n\nconst dateBounds = {\n name: 'dateBounds',\n type: 'timeRange',\n label: 'Date bounds',\n description: 'Set the date range for the axis',\n supportedTypes: ['time'],\n} as const;\n\nconst granularity = {\n name: 'granularity',\n type: 'granularity',\n label: 'Granularity',\n supportedTypes: ['time'],\n defaultValue: Granularity.day,\n} as const;\n\nconst color = {\n type: ColorType,\n name: 'color',\n label: 'Color',\n} as const;\n\nconst granularities = {\n name: 'granularities',\n type: 'granularity',\n label: 'Granularities',\n supportedTypes: ['time'],\n array: true,\n // Ignore seconds and minutes\n defaultValue: [\n Granularity.hour,\n Granularity.day,\n Granularity.week,\n Granularity.month,\n Granularity.quarter,\n Granularity.year,\n ],\n} as const;\n\nconst displayFormat = {\n type: DisplayFormatType,\n name: 'displayFormat',\n label: 'Display format',\n} as const;\n\nconst tableCellStyle = {\n type: TableCellStyleType,\n name: 'tableCellStyle',\n label: 'Table cell style',\n} as const;\n\nconst showValueAsPercentage = {\n name: 'showValueAsPercentage',\n type: 'boolean',\n label: 'Show values as percentage',\n defaultValue: false,\n} as const;\n\nconst showGranularityDropdown = {\n type: 'boolean',\n name: 'showGranularityDropdown',\n label: 'Show granularity dropdown',\n description:\n 'Display a granularity selector inside the chart. The Granularity input above is used only as the default when this option is enabled.',\n supportedTypes: ['time'],\n defaultValue: false,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const dimensionMeasureSubInputs: any[] = [\n prefix,\n suffix,\n displayName,\n maxCharacters,\n decimalPlaces,\n currency,\n abbreviateLargeNumber,\n];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const timeDimensionSubInputs: any[] = [\n prefix,\n suffix,\n displayName,\n maxCharacters,\n decimalPlaces,\n currency,\n abbreviateLargeNumber,\n granularity,\n dateBounds,\n];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const timeDimensionWithGranularitySelectFieldSubInputs: any[] = [\n prefix,\n suffix,\n displayName,\n maxCharacters,\n decimalPlaces,\n currency,\n abbreviateLargeNumber,\n granularity,\n showGranularityDropdown,\n // Not required for now - defaults to day, week, month, quarter, year\n // granularities,\n {\n ...dateBounds,\n description:\n 'Set a date range or connect your primary date-range variable to define the x-axis min and max. If “Show granularity dropdown” is enabled, this also enables auto-selection of the most appropriate granularity',\n },\n];\n\nexport const subInputs = {\n boolean,\n timeRange,\n number,\n string,\n width,\n align,\n prefix,\n suffix,\n displayName,\n maxCharacters,\n decimalPlaces,\n currency,\n abbreviateLargeNumber,\n dateBounds,\n granularity,\n granularities,\n color,\n displayFormat,\n tableCellStyle,\n showGranularityDropdown,\n showValueAsPercentage,\n};\n","import { defineOption, defineType } from '@embeddable.com/core';\n\nconst ComparisonPeriodType = defineType('comparisonPeriod', {\n label: 'Comparison period',\n optionLabel: (value: string) => value,\n});\n\ndefineOption(ComparisonPeriodType, 'Previous period');\ndefineOption(ComparisonPeriodType, 'Previous week');\ndefineOption(ComparisonPeriodType, 'Previous month');\ndefineOption(ComparisonPeriodType, 'Previous quarter');\ndefineOption(ComparisonPeriodType, 'Previous year');\n\nexport default ComparisonPeriodType;\n","import ColorType from '../editors/ColorEditor/Color.type.emb';\nimport { Granularity } from '../theme/defaults/defaults.GranularityOptions.constants';\nimport {\n dimensionMeasureSubInputs,\n timeDimensionSubInputs,\n timeDimensionWithGranularitySelectFieldSubInputs,\n} from './component.subinputs.constants';\nimport ComparisonPeriodType from './types/ComparisonPeriod.type.emb';\nimport MarkdownType from '../editors/MarkdownEditor/Markdown.type.emb';\n\n/* -------------------- */\n/* ----- Generics ----- */\n/* -------------------- */\n\nconst boolean = {\n name: 'boolean',\n type: 'boolean',\n label: 'Boolean',\n} as const;\n\nconst timeRange = {\n name: 'timeRange',\n type: 'timeRange',\n label: 'Time range',\n} as const;\n\nconst number = {\n name: 'number',\n type: 'number',\n label: 'Number',\n} as const;\n\nconst string = {\n name: 'string',\n type: 'string',\n label: 'String',\n} as const;\n\n/* ------------------ */\n/* ----- Common ----- */\n/* ------------------ */\n\nconst title = {\n name: 'title',\n type: 'string',\n label: 'Title',\n category: 'Component Header',\n} as const;\n\nconst description = {\n name: 'description',\n type: 'string',\n label: 'Description',\n category: 'Component Header',\n} as const;\n\nconst tooltip = {\n name: 'tooltip',\n type: 'string',\n label: 'Tooltip',\n category: 'Component Header',\n} as const;\n\nconst dataset = {\n name: 'dataset',\n type: 'dataset',\n label: 'Dataset',\n required: true,\n category: 'Component Data',\n} as const;\n\nconst maxLegendItems = {\n name: 'maxLegendItems',\n type: 'number',\n label: 'Max legend items',\n defaultValue: 10,\n category: 'Component Data',\n} as const;\n\nconst dimension = {\n name: 'dimension',\n type: 'dimension',\n label: 'Dimension',\n config: {\n dataset: 'dataset',\n },\n required: true,\n category: 'Component Data',\n inputs: dimensionMeasureSubInputs,\n} as const;\n\nconst groupBy = {\n ...dimension,\n name: 'groupBy',\n label: 'Group by',\n} as const;\n\nconst granularity = {\n name: 'granularity',\n type: 'granularity',\n label: 'Granularity',\n} as const;\n\nconst granularities = {\n name: 'granularities',\n type: 'granularity',\n label: 'Granularities',\n array: true,\n // Ignore seconds and minutes\n defaultValue: [\n Granularity.hour,\n Granularity.day,\n Granularity.week,\n Granularity.month,\n Granularity.quarter,\n Granularity.year,\n ],\n} as const;\n\nconst dimensionSimple = {\n name: 'dimensionSimple',\n type: 'dimension',\n label: 'Dimension',\n config: {\n dataset: 'dataset',\n hideGranularity: true,\n },\n required: true,\n category: 'Component Data',\n} as const;\n\nconst dimensionTime = {\n name: 'dimensionTime',\n type: 'dimension',\n label: 'Dimension time',\n config: {\n dataset: 'dataset',\n supportedTypes: ['time'],\n hideGranularity: true,\n },\n required: true,\n category: 'Component Data',\n} as const;\n\nconst dimensionWithDateBounds = {\n name: 'dimension',\n type: 'dimension',\n label: 'Dimension',\n config: {\n dataset: 'dataset',\n },\n required: true,\n category: 'Component Data',\n inputs: timeDimensionSubInputs,\n} as const;\n\nconst dimensionWithGranularitySelectField = {\n name: 'dimension',\n type: 'dimension',\n label: 'Dimension',\n config: {\n dataset: 'dataset',\n },\n required: true,\n category: 'Component Data',\n inputs: timeDimensionWithGranularitySelectFieldSubInputs,\n} as const;\n\nconst dimensions = {\n name: 'dimensions',\n type: 'dimension',\n label: 'Dimensions',\n config: {\n dataset: 'dataset',\n },\n array: true,\n required: true,\n category: 'Component Data',\n inputs: dimensionMeasureSubInputs,\n} as const;\n\nconst dimensionOrMeasure = {\n name: 'dimensionOrMeasure',\n type: 'dimensionOrMeasure',\n label: 'Dimension or measure',\n config: {\n dataset: 'dataset',\n },\n category: 'Component Data',\n inputs: dimensionMeasureSubInputs,\n} as const;\n\nconst dimensionsAndMeasures = {\n name: 'dimensionsAndMeasures',\n type: 'dimensionOrMeasure',\n label: 'Dimensions and measures',\n array: true,\n required: true,\n config: {\n dataset: 'dataset',\n },\n category: 'Component Data',\n inputs: dimensionMeasureSubInputs,\n} as const;\n\nconst measure = {\n name: 'measure',\n type: 'measure',\n label: 'Measure',\n config: {\n dataset: 'dataset',\n },\n required: true,\n category: 'Component Data',\n inputs: dimensionMeasureSubInputs,\n} as const;\n\nconst measures = {\n name: 'measures',\n type: 'measure',\n label: 'Measures',\n array: true,\n config: {\n dataset: 'dataset',\n },\n required: true,\n category: 'Component Data',\n inputs: dimensionMeasureSubInputs,\n} as const;\n\nconst measureOptions = {\n ...measures,\n name: 'measureOptions',\n label: 'Measure options',\n};\n\nconst dimensionOptions = {\n ...dimensions,\n name: 'dimensionOptions',\n label: 'Dimension options',\n};\n\nconst dimensionAndMeasureOptions = {\n ...dimensionsAndMeasures,\n name: 'dimensionAndMeasureOptions',\n label: 'Dimension and measure options',\n};\nconst comparisonPeriod = {\n name: 'comparisonPeriod',\n type: ComparisonPeriodType,\n label: 'Comparison period',\n category: 'Component data',\n};\n\nconst maxResults = {\n name: 'maxResults',\n type: 'number',\n label: 'Max results',\n category: 'Component Settings',\n defaultValue: 1000,\n} as const;\n\nconst placeholder = {\n name: 'placeholder',\n type: 'string',\n label: 'Placeholder',\n category: 'Component Settings',\n} as const;\n\nconst showLegend = {\n name: 'showLegend',\n type: 'boolean',\n label: 'Show legend',\n defaultValue: true,\n category: 'Component Settings',\n} as const;\n\nconst showTooltips = {\n name: 'showTooltips',\n type: 'boolean',\n label: 'Show tooltips',\n defaultValue: true,\n category: 'Component Settings',\n} as const;\n\nconst showValueLabels = {\n name: 'showValueLabels',\n type: 'boolean',\n label: 'Show value labels',\n defaultValue: true,\n category: 'Component Settings',\n} as const;\n\nconst showTotalLabels = {\n name: 'showTotalLabels',\n type: 'boolean',\n label: 'Show total labels',\n defaultValue: false,\n category: 'Component Settings',\n} as const;\n\nconst showLogarithmicScale = {\n name: 'showLogarithmicScale',\n type: 'boolean',\n label: 'Show logarithmic scale',\n defaultValue: false,\n category: 'Component Settings',\n} as const;\n\nconst displayPercentages = {\n name: 'displayPercentages',\n type: 'boolean',\n label: 'Display percentages',\n defaultValue: false,\n category: 'Component Settings',\n} as const;\n\nconst color = {\n type: ColorType,\n name: 'color',\n label: 'Color',\n category: 'Component Settings',\n} as const;\n\nconst fontSize = {\n type: 'number',\n name: 'fontSize',\n label: 'Font size',\n category: 'Component Settings',\n} as const;\n\nconst clearable = {\n type: 'boolean',\n name: 'clearable',\n label: 'Can be cleared',\n defaultValue: true,\n category: 'Component Settings',\n} as const;\n\nconst displayNullAs = {\n ...string,\n name: 'displayNullAs',\n label: 'Display null as',\n category: 'Component Settings',\n} as const;\n\nconst xAxisLabel = {\n name: 'xAxisLabel',\n type: 'string',\n label: 'X-axis Label',\n category: 'Axes Settings',\n} as const;\n\nconst yAxisLabel = {\n name: 'yAxisLabel',\n type: 'string',\n label: 'Y-axis label',\n category: 'Axes Settings',\n} as const;\n\nconst reverseXAxis = {\n name: 'reverseXAxis',\n type: 'boolean',\n label: 'Reverse x-axis',\n defaultValue: false,\n category: 'Axes Settings',\n} as const;\n\nconst reverseYAxis = {\n name: 'reverseYAxis',\n type: 'boolean',\n label: 'Reverse y-axis',\n defaultValue: false,\n category: 'Axes Settings',\n} as const;\n\nconst yAxisRangeMin = {\n name: 'yAxisRangeMin',\n type: 'number',\n label: 'Y-axis range min',\n category: 'Axes Settings',\n} as const;\n\nconst yAxisRangeMax = {\n name: 'yAxisRangeMax',\n type: 'number',\n label: 'Y-axis range max',\n category: 'Axes Settings',\n} as const;\n\nconst xAxisRangeMin = {\n name: 'xAxisRangeMin',\n type: 'number',\n label: 'X-axis range min',\n category: 'Axes Settings',\n} as const;\n\nconst xAxisRangeMax = {\n name: 'xAxisRangeMax',\n type: 'number',\n label: 'X-axis range max',\n category: 'Axes Settings',\n} as const;\n\nconst xAxisMaxItems = {\n name: 'xAxisMaxItems',\n type: 'number',\n label: 'Max x-axis items',\n category: 'Axes Settings',\n} as const;\n\nconst yAxisMaxItems = {\n name: 'yAxisMaxItems',\n type: 'number',\n label: 'Max y-axis items',\n category: 'Axes Settings',\n} as const;\n\nconst markdown = {\n name: 'markdown',\n type: MarkdownType,\n label: 'Markdown',\n description:\n 'All markdown features are supported, including tables, images, links, etc. You can also access translations using {{translation_key|fallback value}}.',\n category: 'Component Settings',\n} as const;\n\nexport const inputs = {\n boolean,\n timeRange,\n number,\n string,\n title,\n description,\n tooltip,\n dataset,\n maxLegendItems,\n dimension,\n groupBy,\n dimensionSimple,\n dimensionTime,\n dimensionWithDateBounds,\n dimensionWithGranularitySelectField,\n dimensions,\n dimensionOrMeasure,\n dimensionsAndMeasures,\n measure,\n measures,\n measureOptions,\n dimensionOptions,\n dimensionAndMeasureOptions,\n comparisonPeriod,\n maxResults,\n placeholder,\n showLegend,\n showTooltips,\n showValueLabels,\n showTotalLabels,\n showLogarithmicScale,\n displayPercentages,\n color,\n fontSize,\n clearable,\n displayNullAs,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n reverseYAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n xAxisRangeMin,\n xAxisRangeMax,\n xAxisMaxItems,\n yAxisMaxItems,\n granularity,\n granularities,\n markdown,\n} as const;\n"],"names":["DisplayFormatTypeOptions","DisplayFormatType","defineType","value","defineOption","Granularity","defaultGranularitySelectFieldOptions","granularities","AlignType","TableCellStyleType","number","string","boolean","timeRange","width","align","prefix","suffix","displayName","maxCharacters","decimalPlaces","currency","abbreviateLargeNumber","dateBounds","granularity","color","ColorType","displayFormat","tableCellStyle","showValueAsPercentage","showGranularityDropdown","dimensionMeasureSubInputs","timeDimensionSubInputs","timeDimensionWithGranularitySelectFieldSubInputs","subInputs","ComparisonPeriodType","title","description","tooltip","dataset","maxLegendItems","dimension","groupBy","dimensionSimple","dimensionTime","dimensionWithDateBounds","dimensionWithGranularitySelectField","dimensions","dimensionOrMeasure","dimensionsAndMeasures","measure","measures","measureOptions","dimensionOptions","dimensionAndMeasureOptions","comparisonPeriod","maxResults","placeholder","showLegend","showTooltips","showValueLabels","showTotalLabels","showLogarithmicScale","displayPercentages","fontSize","clearable","displayNullAs","xAxisLabel","yAxisLabel","reverseXAxis","reverseYAxis","yAxisRangeMin","yAxisRangeMax","xAxisRangeMin","xAxisRangeMax","xAxisMaxItems","yAxisMaxItems","markdown","MarkdownType","inputs"],"mappings":"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"}