@milaboratories/graph-maker 1.2.0 → 1.2.2

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 (113) hide show
  1. package/dist/assets/ui.css +1 -1
  2. package/dist/components/AesSettings/AesDataMappingDiscrete.css +1 -1
  3. package/dist/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
  4. package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js.map +1 -1
  5. package/dist/components/AesSettings/AesDataMappingDiscrete.vue3.js +1 -1
  6. package/dist/components/Chart.vue.d.ts.map +1 -1
  7. package/dist/components/Chart.vue.js +67 -66
  8. package/dist/components/Chart.vue.js.map +1 -1
  9. package/dist/components/ChartTruncationWarningAlert.css +1 -0
  10. package/dist/components/ChartTruncationWarningAlert.vue.d.ts +7 -0
  11. package/dist/components/ChartTruncationWarningAlert.vue.d.ts.map +1 -0
  12. package/dist/components/ChartTruncationWarningAlert.vue.js +10 -0
  13. package/dist/components/ChartTruncationWarningAlert.vue.js.map +1 -0
  14. package/dist/components/ChartTruncationWarningAlert.vue2.js +54 -0
  15. package/dist/components/ChartTruncationWarningAlert.vue2.js.map +1 -0
  16. package/dist/components/ChartTruncationWarningAlert.vue3.js +8 -0
  17. package/dist/components/ChartTruncationWarningAlert.vue3.js.map +1 -0
  18. package/dist/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
  19. package/dist/components/DragAndDrop/DnDBasketChip.vue.js +34 -31
  20. package/dist/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
  21. package/dist/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
  22. package/dist/components/DragAndDrop/DnDRangeChip.vue.js +34 -31
  23. package/dist/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
  24. package/dist/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
  25. package/dist/components/DragAndDrop/DndDoubleChip.vue.js +40 -35
  26. package/dist/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
  27. package/dist/components/PanelModal.vue.d.ts.map +1 -1
  28. package/dist/components/PanelModal.vue.js +25 -11
  29. package/dist/components/PanelModal.vue.js.map +1 -1
  30. package/dist/components/ReorderForm.vue.d.ts.map +1 -1
  31. package/dist/components/ReorderForm.vue2.js +14 -13
  32. package/dist/components/ReorderForm.vue2.js.map +1 -1
  33. package/dist/constantsCommon.d.ts +7 -0
  34. package/dist/constantsCommon.d.ts.map +1 -1
  35. package/dist/constantsCommon.js +33 -28
  36. package/dist/constantsCommon.js.map +1 -1
  37. package/dist/dataBindAes.d.ts.map +1 -1
  38. package/dist/dataBindAes.js +88 -93
  39. package/dist/dataBindAes.js.map +1 -1
  40. package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.d.ts.map +1 -1
  41. package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js +96 -78
  42. package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js.map +1 -1
  43. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.d.ts.map +1 -1
  44. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +189 -161
  45. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  46. package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.d.ts.map +1 -1
  47. package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js +157 -139
  48. package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js.map +1 -1
  49. package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.d.ts.map +1 -1
  50. package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js +154 -136
  51. package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js.map +1 -1
  52. package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.d.ts.map +1 -1
  53. package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js +232 -201
  54. package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js.map +1 -1
  55. package/dist/forms/DataMappingForm/utils.js +58 -58
  56. package/dist/forms/DataMappingForm/utils.js.map +1 -1
  57. package/dist/forms/LayersForm/AesSelector.vue.d.ts.map +1 -1
  58. package/dist/forms/LayersForm/AesSelector.vue.js +86 -86
  59. package/dist/forms/LayersForm/AesSelector.vue.js.map +1 -1
  60. package/dist/index.vue.d.ts.map +1 -1
  61. package/dist/index.vue.js +183 -159
  62. package/dist/index.vue.js.map +1 -1
  63. package/dist/store.d.ts +2 -1
  64. package/dist/store.d.ts.map +1 -1
  65. package/dist/store.js +135 -128
  66. package/dist/store.js.map +1 -1
  67. package/dist/types.d.ts +5 -0
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/utils/calculateDiscreteGroups.d.ts.map +1 -1
  70. package/dist/utils/calculateDiscreteGroups.js +6 -6
  71. package/dist/utils/calculateDiscreteGroups.js.map +1 -1
  72. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +9 -0
  73. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  74. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +24 -22
  75. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  76. package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts +19 -1
  77. package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts.map +1 -1
  78. package/dist/utils/createChartSettingsForRender/composeChartSettings.js +74 -40
  79. package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  80. package/dist/utils/createChartSettingsForRender/composeDendroSettings.d.ts +16 -0
  81. package/dist/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
  82. package/dist/utils/createChartSettingsForRender/composeDendroSettings.js +22 -22
  83. package/dist/utils/createChartSettingsForRender/composeDendroSettings.js.map +1 -1
  84. package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +4 -468
  85. package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  86. package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js +48 -31
  87. package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
  88. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +22 -0
  89. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  90. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +24 -22
  91. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  92. package/dist/utils/createChartSettingsForRender/composeHistogramSettings.d.ts +5 -0
  93. package/dist/utils/createChartSettingsForRender/composeHistogramSettings.d.ts.map +1 -1
  94. package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js +24 -22
  95. package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
  96. package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +19 -0
  97. package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
  98. package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +89 -71
  99. package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  100. package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +12 -0
  101. package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.map +1 -1
  102. package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +40 -35
  103. package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
  104. package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.d.ts.map +1 -1
  105. package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js +28 -28
  106. package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js.map +1 -1
  107. package/dist/utils/loadUniqueValuesToSave.d.ts +3 -1
  108. package/dist/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  109. package/dist/utils/loadUniqueValuesToSave.js +81 -63
  110. package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
  111. package/package.json +2 -2
  112. package/dist/assets/drag-and-drop/img/chip-close.svg.js +0 -7
  113. package/dist/assets/drag-and-drop/img/chip-close.svg.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"composeChartSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeChartSettings.ts"],"sourcesContent":["import type {\n ChartType,\n DemoDataStore,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport {\n getControllerByType,\n} from '@milaboratories/pf-plots';\nimport type {\n DefaultPalettes,\n GraphMakerProps,\n ReactiveState,\n TitlePosition,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport { addFixedOptionsToState } from '../addFixedOptionsToState';\nimport type {\n AxesState } from '../../constantsCommon';\nimport { DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL,\n} from '../../constantsCommon';\nimport type {\n BubbleSettings,\n DataByColumns,\n DendroSettings,\n DiscreteSettings,\n HeatmapSettings,\n HistogramSettings,\n ScatterplotSettings,\n ScatterplotUmapSettings,\n Settings,\n} from '@milaboratories/miplots4';\nimport { composeDiscreteSettings } from './composeDiscreteSettings';\nimport { composeScatterplotSettings } from './composeScatterplotSettings';\nimport { composeScatterplotUmapSettings } from './composeScatterplotUmapSettings';\nimport { composeHeatmapSettings } from './composeHeatmapSettings';\nimport { composeDendroSettings } from './composeDendroSettings';\nimport { composeHistogramSettings } from './composeHistogramSettings';\nimport { composeBubbleSettings } from './composeBubbleSettings';\n\nfunction getChartSizes(chartScale: number, facetByLength = 0) {\n return {\n width: (facetByLength > 0 ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH) * (chartScale / 100),\n height: (facetByLength > 0 ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT) * (chartScale / 100),\n };\n}\n\nfunction getChartTitle(\n chartType: ChartType,\n optionsState: InputState,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n axesSettings: AxesState,\n): {\n name: string;\n show: boolean;\n position?: TitlePosition;\n } {\n if (\n chartType !== 'scatterplot'\n && chartType !== 'scatterplot-umap'\n && chartType !== 'discrete'\n && chartType !== 'heatmap'\n && chartType !== 'histogram'\n && chartType !== 'bubble'\n ) {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'hidden') {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'custom') {\n return { name: axesSettings.title.value, show: true, position: axesSettings.title.position };\n }\n if (axesSettings.title.mode === 'auto') {\n const selectedFilters: string[] = [];\n const tabByStates = (optionsState.components?.tabBy.selectorStates ?? []);\n const filterStates = (optionsState.components?.filters.selectorStates ?? []).filter((state) => !tabByStates.some((tabByState) => tabByState.selectedSource === state.selectedSource));\n\n const usedInTitleStates = [\n ...tabByStates,\n ...filterStates,\n ] as SelectorStateFilter[];\n usedInTitleStates.forEach(({ type, selectedSource, selectedFilterValues }) => {\n if ((!type || type === 'equals') && selectedFilterValues && filterLabelsInfo[selectedSource]) {\n selectedFilters.push(...selectedFilterValues\n .map((selectedFilterValue) => filterLabelsInfo[selectedSource]?.[selectedFilterValue]?.label ?? String(selectedFilterValue)));\n }\n });\n const title = selectedFilters.join(', ');\n return { name: title, show: true, position: axesSettings.title.position };\n }\n return { name: '', show: false };\n}\n\nexport async function loadDataForPlot(\n inputGuide: InputGuide<InputState>,\n reactiveState: ReactiveState,\n dataStore: DemoDataStore | null,\n fixedOptions?: GraphMakerProps['fixedOptions'],\n) {\n if (!inputGuide.ready || dataStore === null) {\n return null;\n }\n try {\n const controller = getControllerByType(reactiveState.chartType);\n const optionsStateWithFixed = await addFixedOptionsToState(\n reactiveState.optionsState,\n dataStore,\n fixedOptions,\n );\n return controller.createDataForPlot(\n dataStore,\n optionsStateWithFixed,\n );\n } catch (err) {\n console.warn('Cant build chart data');\n console.warn((err as Error).message);\n return null;\n }\n}\nexport function composeChartSettings(\n chartData: PlotDataAndSettings | null,\n inputGuide: InputGuide<InputState>,\n labelsInfo: UniqueValuesBySourceMap,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n reactiveState: ReactiveState,\n defaultPalette: DefaultPalettes,\n): null | { settings: Settings; data: DataByColumns } {\n if (!inputGuide.ready || chartData === null) {\n return null;\n }\n\n let settings = { ...chartData.settings };\n const dataByColumns = chartData.data.byColumns;\n settings.title = getChartTitle(reactiveState.chartType, reactiveState.optionsState, filterLabelsInfo, reactiveState.axesSettings);\n settings.size = getChartSizes(reactiveState.chartScale, reactiveState.optionsState.components?.facetBy.selectorStates.length || 0);\n settings.legend = { show: reactiveState.axesSettings.other.showLegend };\n if (reactiveState.chartType === 'discrete') {\n settings = composeDiscreteSettings(settings as DiscreteSettings, reactiveState, labelsInfo, inputGuide, defaultPalette);\n }\n if (reactiveState.chartType === 'scatterplot') {\n settings = composeScatterplotSettings(settings as ScatterplotSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'scatterplot-umap') {\n settings = composeScatterplotUmapSettings(settings as ScatterplotUmapSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'heatmap') {\n settings = composeHeatmapSettings(settings as HeatmapSettings, reactiveState, defaultPalette);\n }\n if (reactiveState.chartType === 'dendro') {\n settings = composeDendroSettings(settings as DendroSettings, dataByColumns, reactiveState, inputGuide, labelsInfo);\n }\n if (reactiveState.chartType === 'histogram') {\n settings = composeHistogramSettings(settings as HistogramSettings, reactiveState, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'bubble') {\n settings = composeBubbleSettings(settings as BubbleSettings, reactiveState, defaultPalette);\n }\n return {\n settings: settings as Settings,\n data: chartData.data.byColumns,\n };\n}\n"],"names":["getChartSizes","chartScale","facetByLength","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","getChartTitle","chartType","optionsState","filterLabelsInfo","axesSettings","selectedFilters","tabByStates","_a","filterStates","_b","state","tabByState","type","selectedSource","selectedFilterValues","selectedFilterValue","loadDataForPlot","inputGuide","reactiveState","dataStore","fixedOptions","controller","getControllerByType","optionsStateWithFixed","addFixedOptionsToState","err","composeChartSettings","chartData","labelsInfo","defaultPalette","settings","dataByColumns","composeDiscreteSettings","composeScatterplotSettings","composeScatterplotUmapSettings","composeHeatmapSettings","composeDendroSettings","composeHistogramSettings","composeBubbleSettings"],"mappings":"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"}
1
+ {"version":3,"file":"composeChartSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeChartSettings.ts"],"sourcesContent":["import type {\n ChartType,\n DemoDataStore,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport {\n getControllerByType,\n} from '@milaboratories/pf-plots';\nimport type {\n DefaultPalettes,\n GraphMakerProps,\n ReactiveState,\n TitlePosition,\n UniqueValuesBySourceMap,\n} from '../../types';\n\nconst DISPLAY_MAX = 1000;\n\nexport type ChartTruncationWarning = {\n groups: boolean;\n facets: boolean;\n /** Visible (shown) count for groups */\n groupsVisible?: number;\n /** Total count for groups (use 1000+ in UI when >= 1000) */\n groupsTotal?: number;\n /** Visible (shown) count for facets */\n facetsVisible?: number;\n /** Total count for facets (use 1000+ in UI when >= 1000) */\n facetsTotal?: number;\n};\n\nexport function formatTruncationTotal(n: number): string {\n return n >= DISPLAY_MAX ? '1000+' : String(n);\n}\n\n/** Build facet order for chart settings from saved facet values, limited by maxFacetsCount. */\nexport function getFacetOrderForChartSettings(\n facetBy: { value: string }[],\n facetValuesData: UniqueValuesBySourceMap,\n maxFacetsCount: number,\n): string[] | undefined {\n if (!facetBy?.length || maxFacetsCount <= 0) {\n return undefined;\n }\n const valueLists = facetBy.map((col) => facetValuesData[col.value]?.list ?? []);\n if (valueLists.some((list) => !list.length)) {\n return undefined;\n }\n const keys = getFacetKeysFromValueLists(valueLists);\n return keys.slice(0, maxFacetsCount);\n}\nimport { addFixedOptionsToState } from '../addFixedOptionsToState';\nimport type {\n AxesState } from '../../constantsCommon';\nimport { DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL,\n} from '../../constantsCommon';\nimport type {\n BubbleSettings,\n DataByColumns,\n DendroSettings,\n DiscreteSettings,\n HeatmapSettings,\n HistogramSettings,\n ScatterplotSettings,\n ScatterplotUmapSettings,\n Settings,\n} from '@milaboratories/miplots4';\nimport { getFacetKeysFromValueLists } from '@milaboratories/miplots4';\nimport { composeDiscreteSettings } from './composeDiscreteSettings';\nimport { composeScatterplotSettings } from './composeScatterplotSettings';\nimport { composeScatterplotUmapSettings } from './composeScatterplotUmapSettings';\nimport { composeHeatmapSettings } from './composeHeatmapSettings';\nimport { composeDendroSettings } from './composeDendroSettings';\nimport { composeHistogramSettings } from './composeHistogramSettings';\nimport { composeBubbleSettings } from './composeBubbleSettings';\n\nfunction getChartSizes(chartScale: number, facetByLength = 0) {\n return {\n width: (facetByLength > 0 ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH) * (chartScale / 100),\n height: (facetByLength > 0 ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT) * (chartScale / 100),\n };\n}\n\nfunction getChartTitle(\n chartType: ChartType,\n optionsState: InputState,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n axesSettings: AxesState,\n): {\n name: string;\n show: boolean;\n position?: TitlePosition;\n } {\n if (\n chartType !== 'scatterplot'\n && chartType !== 'scatterplot-umap'\n && chartType !== 'discrete'\n && chartType !== 'heatmap'\n && chartType !== 'histogram'\n && chartType !== 'bubble'\n ) {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'hidden') {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'custom') {\n return { name: axesSettings.title.value, show: true, position: axesSettings.title.position };\n }\n if (axesSettings.title.mode === 'auto') {\n const selectedFilters: string[] = [];\n const tabByStates = (optionsState.components?.tabBy.selectorStates ?? []);\n const filterStates = (optionsState.components?.filters.selectorStates ?? []).filter((state) => !tabByStates.some((tabByState) => tabByState.selectedSource === state.selectedSource));\n\n const usedInTitleStates = [\n ...tabByStates,\n ...filterStates,\n ] as SelectorStateFilter[];\n usedInTitleStates.forEach(({ type, selectedSource, selectedFilterValues }) => {\n if ((!type || type === 'equals') && selectedFilterValues && filterLabelsInfo[selectedSource]) {\n selectedFilters.push(...selectedFilterValues\n .map((selectedFilterValue) => filterLabelsInfo[selectedSource]?.[selectedFilterValue]?.label ?? String(selectedFilterValue)));\n }\n });\n const title = selectedFilters.join(', ');\n return { name: title, show: true, position: axesSettings.title.position };\n }\n return { name: '', show: false };\n}\n\nexport async function loadDataForPlot(\n inputGuide: InputGuide<InputState>,\n reactiveState: ReactiveState,\n dataStore: DemoDataStore | null,\n fixedOptions?: GraphMakerProps['fixedOptions'],\n) {\n if (!inputGuide.ready || dataStore === null) {\n return null;\n }\n try {\n const controller = getControllerByType(reactiveState.chartType);\n const optionsStateWithFixed = await addFixedOptionsToState(\n reactiveState.optionsState,\n dataStore,\n fixedOptions,\n );\n return controller.createDataForPlot(\n dataStore,\n optionsStateWithFixed,\n );\n } catch (err) {\n console.warn('Cant build chart data');\n console.warn((err as Error).message);\n return null;\n }\n}\nexport function composeChartSettings(\n chartData: PlotDataAndSettings | null,\n inputGuide: InputGuide<InputState>,\n labelsInfo: UniqueValuesBySourceMap,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n reactiveState: ReactiveState,\n defaultPalette: DefaultPalettes,\n facetValuesData: UniqueValuesBySourceMap = {},\n): null | { settings: Settings; data: DataByColumns; truncationWarning: ChartTruncationWarning } {\n if (!inputGuide.ready || chartData === null) {\n return null;\n }\n\n let settings: Settings = { ...chartData.settings } as Settings;\n const dataByColumns = chartData.data.byColumns;\n settings.title = getChartTitle(reactiveState.chartType, reactiveState.optionsState, filterLabelsInfo, reactiveState.axesSettings);\n settings.size = getChartSizes(reactiveState.chartScale, reactiveState.optionsState.components?.facetBy.selectorStates.length || 0);\n settings.legend = { show: reactiveState.axesSettings.other.showLegend };\n\n const truncationWarning: ChartTruncationWarning = { groups: false, facets: false };\n\n if (reactiveState.chartType === 'discrete') {\n const result = composeDiscreteSettings(settings as DiscreteSettings, reactiveState, labelsInfo, inputGuide, defaultPalette);\n settings = result.settings;\n truncationWarning.groups = result.groupsAreTruncated;\n if (result.groupsAreTruncated && result.groupsVisible != null && result.groupsTotal != null) {\n truncationWarning.groupsVisible = result.groupsVisible;\n truncationWarning.groupsTotal = result.groupsTotal;\n }\n }\n if (reactiveState.chartType === 'scatterplot') {\n settings = composeScatterplotSettings(settings as ScatterplotSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'scatterplot-umap') {\n settings = composeScatterplotUmapSettings(settings as ScatterplotUmapSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'heatmap') {\n settings = composeHeatmapSettings(settings as HeatmapSettings, reactiveState, defaultPalette);\n }\n if (reactiveState.chartType === 'dendro') {\n settings = composeDendroSettings(settings as DendroSettings, dataByColumns, reactiveState, inputGuide, labelsInfo);\n }\n if (reactiveState.chartType === 'histogram') {\n settings = composeHistogramSettings(settings as HistogramSettings, reactiveState, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'bubble') {\n settings = composeBubbleSettings(settings as BubbleSettings, reactiveState, defaultPalette);\n }\n\n if ('facetBy' in settings && 'facetSettings' in settings && settings.facetBy?.length && settings.facetSettings) {\n const valueLists = settings.facetBy.map((col: { value: string }) => facetValuesData[col.value]?.list ?? []);\n const allFacetKeys = valueLists.every((list: string[]) => list.length > 0)\n ? getFacetKeysFromValueLists(valueLists)\n : [];\n const maxFacetsCount = reactiveState.axesSettings.other.maxFacetsCount;\n const order = getFacetOrderForChartSettings(\n settings.facetBy,\n facetValuesData,\n maxFacetsCount,\n );\n if (allFacetKeys.length > maxFacetsCount) {\n truncationWarning.facets = true;\n truncationWarning.facetsVisible = order?.length ?? 0;\n truncationWarning.facetsTotal = allFacetKeys.length;\n }\n settings.facetSettings = { ...settings.facetSettings, order };\n }\n return {\n settings: settings as Settings,\n data: chartData.data.byColumns,\n truncationWarning,\n };\n}\n"],"names":["DISPLAY_MAX","formatTruncationTotal","n","getFacetOrderForChartSettings","facetBy","facetValuesData","maxFacetsCount","valueLists","col","_a","list","getFacetKeysFromValueLists","getChartSizes","chartScale","facetByLength","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","getChartTitle","chartType","optionsState","filterLabelsInfo","axesSettings","selectedFilters","tabByStates","filterStates","_b","state","tabByState","type","selectedSource","selectedFilterValues","selectedFilterValue","loadDataForPlot","inputGuide","reactiveState","dataStore","fixedOptions","controller","getControllerByType","optionsStateWithFixed","addFixedOptionsToState","err","composeChartSettings","chartData","labelsInfo","defaultPalette","settings","dataByColumns","truncationWarning","result","composeDiscreteSettings","composeScatterplotSettings","composeScatterplotUmapSettings","composeHeatmapSettings","composeDendroSettings","composeHistogramSettings","composeBubbleSettings","allFacetKeys","order"],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
14
14
  format?: string | undefined;
15
15
  label?: string | undefined;
16
16
  valueLabels?: string | undefined;
17
+ nullValueLabel?: string | undefined;
17
18
  };
18
19
  parentId: {
19
20
  type: "column";
@@ -21,6 +22,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
21
22
  format?: string | undefined;
22
23
  label?: string | undefined;
23
24
  valueLabels?: string | undefined;
25
+ nullValueLabel?: string | undefined;
24
26
  };
25
27
  size?: {
26
28
  scale?: number | undefined;
@@ -44,6 +46,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
44
46
  format?: string | undefined;
45
47
  label?: string | undefined;
46
48
  valueLabels?: string | undefined;
49
+ nullValueLabel?: string | undefined;
47
50
  };
48
51
  domain: number[];
49
52
  range: string[];
@@ -55,6 +58,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
55
58
  format?: string | undefined;
56
59
  label?: string | undefined;
57
60
  valueLabels?: string | undefined;
61
+ nullValueLabel?: string | undefined;
58
62
  };
59
63
  valuesMap: Record<string, string>;
60
64
  } | undefined;
@@ -65,6 +69,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
65
69
  format?: string | undefined;
66
70
  label?: string | undefined;
67
71
  valueLabels?: string | undefined;
72
+ nullValueLabel?: string | undefined;
68
73
  };
69
74
  valuesMap: Record<string, "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "20" | "21" | "22" | "23" | "24" | "25">;
70
75
  } | undefined;
@@ -75,6 +80,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
75
80
  format?: string | undefined;
76
81
  label?: string | undefined;
77
82
  valueLabels?: string | undefined;
83
+ nullValueLabel?: string | undefined;
78
84
  };
79
85
  domain: number[];
80
86
  range: string[];
@@ -86,6 +92,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
86
92
  format?: string | undefined;
87
93
  label?: string | undefined;
88
94
  valueLabels?: string | undefined;
95
+ nullValueLabel?: string | undefined;
89
96
  };
90
97
  valuesMap: Record<string, string>;
91
98
  } | undefined;
@@ -96,6 +103,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
96
103
  format?: string | undefined;
97
104
  label?: string | undefined;
98
105
  valueLabels?: string | undefined;
106
+ nullValueLabel?: string | undefined;
99
107
  };
100
108
  domain: number[];
101
109
  range: number[];
@@ -107,6 +115,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
107
115
  format?: string | undefined;
108
116
  label?: string | undefined;
109
117
  valueLabels?: string | undefined;
118
+ nullValueLabel?: string | undefined;
110
119
  };
111
120
  valuesMap: Record<string, number>;
112
121
  } | undefined;
@@ -117,6 +126,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
117
126
  format?: string | undefined;
118
127
  label?: string | undefined;
119
128
  valueLabels?: string | undefined;
129
+ nullValueLabel?: string | undefined;
120
130
  } | undefined;
121
131
  height?: {
122
132
  type: "column";
@@ -124,12 +134,14 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
124
134
  format?: string | undefined;
125
135
  label?: string | undefined;
126
136
  valueLabels?: string | undefined;
137
+ nullValueLabel?: string | undefined;
127
138
  } | undefined;
128
139
  legend?: {
129
140
  show?: boolean | undefined;
130
141
  position?: "right" | "inside" | "top" | "bottom" | undefined;
131
142
  } | undefined;
132
143
  facetSettings?: {
144
+ order?: string[] | undefined;
133
145
  nRows?: number | undefined;
134
146
  nCols?: number | undefined;
135
147
  } | undefined;
@@ -139,6 +151,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
139
151
  format?: string | undefined;
140
152
  label?: string | undefined;
141
153
  valueLabels?: string | undefined;
154
+ nullValueLabel?: string | undefined;
142
155
  }[] | undefined;
143
156
  showNodes?: boolean | undefined;
144
157
  edgeInheritance?: "up" | "down" | undefined;
@@ -151,6 +164,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
151
164
  format?: string | undefined;
152
165
  label?: string | undefined;
153
166
  valueLabels?: string | undefined;
167
+ nullValueLabel?: string | undefined;
154
168
  } | undefined;
155
169
  heatmapAxis?: {
156
170
  type: "column";
@@ -158,6 +172,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
158
172
  format?: string | undefined;
159
173
  label?: string | undefined;
160
174
  valueLabels?: string | undefined;
175
+ nullValueLabel?: string | undefined;
161
176
  } | undefined;
162
177
  heatmapGroup?: {
163
178
  type: "column";
@@ -165,6 +180,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
165
180
  format?: string | undefined;
166
181
  label?: string | undefined;
167
182
  valueLabels?: string | undefined;
183
+ nullValueLabel?: string | undefined;
168
184
  }[] | undefined;
169
185
  heatmapSettings?: {
170
186
  aes?: {
@@ -1 +1 @@
1
- {"version":3,"file":"composeDendroSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EAAE,UAAU,EACtB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EACvD,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,gBAAgB,EAAE,uBAAuB;;;;YAoImxrB,CAAC;gBAAuC,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAA0G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;aAAuD,CAAC;aAAmC,CAAC;cAAoC,CAAC;oBAA0C,CAAC;qBAA2C,CAAC;oBAA0C,CAAC;qBAA2C,CAAC;iBAAuC,CAAC;oBAA0C,CAAC;kBAAwC,CAAC;mBAAyC,CAAC;;;iBAAsE,CAAC;iBAAmG,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;iBAA4H,CAAC;;;;sBAAwR,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;iBAAwR,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;gBAA2H,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;;;;;;;;cAA0M,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAqH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;aAA2G,CAAC;aAAmC,CAAC;;;;;cAAsH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;;;;;;cAAsY,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAA0H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;WAA8E,CAAC;sBAA0B,CAAC;qBAA6C,CAAC;;iBAA8E,CAAC;;;;;;;EADt72B"}
1
+ {"version":3,"file":"composeDendroSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EAAE,UAAU,EACtB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EACvD,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,gBAAgB,EAAE,uBAAuB;;;;YAqI+jzB,CAAC;gBAAuC,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA0G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;aAAuD,CAAC;aAAmC,CAAC;cAAoC,CAAC;oBAA0C,CAAC;qBAA2C,CAAC;oBAA0C,CAAC;qBAA2C,CAAC;iBAAuC,CAAC;oBAA0C,CAAC;kBAAwC,CAAC;mBAAyC,CAAC;;;iBAAsE,CAAC;iBAAmG,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;iBAA4H,CAAC;;;;sBAAwR,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;iBAAwR,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAA2H,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;;;;;cAA0M,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAqH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;aAA2G,CAAC;aAAqC,CAAC;aAAmC,CAAC;;;;;cAAsH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;;;;;;cAAsY,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA0H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;WAA8E,CAAC;sBAA0B,CAAC;qBAA6C,CAAC;;iBAA8E,CAAC;;;;;;;EADn+/B"}
@@ -1,62 +1,62 @@
1
- import { getDendroAes as S, DEFAULT_DOT_SHAPE as _, DEFAULT_DOT_RANGE as C } from "../../dataBindAes.js";
2
- import { DEFAULT_BLACK as F, PALETTE_MAP as p, DEFAULT_CATEGORICAL_PALETTE as h } from "../../constantsAesthetic.js";
1
+ import { getDendroAes as p, DEFAULT_DOT_SHAPE as _, DEFAULT_DOT_RANGE as C } from "../../dataBindAes.js";
2
+ import { DEFAULT_BLACK as F, PALETTE_MAP as h, DEFAULT_CATEGORICAL_PALETTE as f } from "../../constantsAesthetic.js";
3
3
  import { DEFAULT_HEIGHT as D, DEFAULT_WIDTH as M, isNumberRange as I } from "../../constantsCommon.js";
4
4
  const v = 280;
5
- function R(o, E, r, L, d) {
6
- var f, m, u, A, y;
5
+ function R(o, L, r, E, i) {
6
+ var m, u, A, y;
7
7
  o.rootPosition = "left", o.size = { width: M, height: D };
8
8
  const n = r.optionsState.components, t = r.layersSettings.dendro, e = o == null ? void 0 : o.aes;
9
9
  if (e.nodeShape && typeof e.nodeShape == "object") {
10
- const s = (f = n.nodeShape.selectorStates[0]) == null ? void 0 : f.selectedSource, l = S(
10
+ const s = (m = n.nodeShape.selectorStates[0]) == null ? void 0 : m.selectedSource, l = p(
11
11
  s,
12
- d,
12
+ i,
13
13
  r.dataBindAes,
14
14
  "dotShape",
15
- h
15
+ f
16
16
  );
17
17
  Object.keys(l).length ? e.nodeShape.valuesMap = l : e.nodeShape = _;
18
18
  } else typeof t.dotShape == "string" && (e.nodeShape = t.dotShape);
19
19
  if (e.nodeColor && typeof e.nodeColor == "object") {
20
- const s = (m = n.nodeColor.selectorStates[0]) == null ? void 0 : m.selectedSource, l = S(
20
+ const s = (u = n.nodeColor.selectorStates[0]) == null ? void 0 : u.selectedSource, l = p(
21
21
  s,
22
- d,
22
+ i,
23
23
  r.dataBindAes,
24
24
  "color",
25
- h
25
+ f
26
26
  );
27
27
  Object.keys(l).length ? e.nodeColor.valuesMap = l : e.nodeColor = F;
28
28
  } else typeof t.dotFill == "string" && (e.nodeColor = t.dotFill);
29
29
  if (e.nodeSize && typeof e.nodeSize == "object") {
30
- const s = (u = n.nodeSize.selectorStates[0]) == null ? void 0 : u.selectedSource;
30
+ const s = (A = n.nodeSize.selectorStates[0]) == null ? void 0 : A.selectedSource;
31
31
  let [l, c] = [1 / 0, -1 / 0];
32
- E.values[s].forEach((i) => {
33
- const a = Number(i);
32
+ L.values[s].forEach((d) => {
33
+ const a = Number(d);
34
34
  a < l && (l = a), a > c && (c = a);
35
35
  }), e.nodeSize.domain = [l, c], e.nodeSize.range = I(t.dotSize) ? [t.dotSize.min, t.dotSize.max] : [C.min, C.max];
36
36
  } else typeof t.dotSize == "number" && (e.nodeSize = t.dotSize);
37
37
  if (e.lineColor && typeof e.lineColor == "object") {
38
- const s = (A = n.lineColor.selectorStates[0]) == null ? void 0 : A.selectedSource;
39
- e.lineColor.valuesMap = S(
38
+ const s = (y = n.lineColor.selectorStates[0]) == null ? void 0 : y.selectedSource;
39
+ e.lineColor.valuesMap = p(
40
40
  s,
41
- d,
41
+ i,
42
42
  r.dataBindAes,
43
43
  "color",
44
- h
44
+ f
45
45
  );
46
46
  } else typeof t.lineColor == "string" && (e.lineColor = t.lineColor);
47
47
  if (n.heatmapForSequence.selectorStates.length > 0 && (o.heatmapSettings = {
48
48
  valueType: "stringSource",
49
49
  aes: {
50
- colorsList: p.bright.colors
50
+ colorsList: h.bright.colors
51
51
  }
52
52
  }, o.size.maxCellWidth = 8), n.heatmapAnnotation.selectorStates.length > 0) {
53
- const s = n.heatmapAnnotation.selectorStates[0].selectedSource, l = L.getSourceInfo(s), c = l.type === "Double" || l.type === "Float" || l.type === "Int" || l.type === "Long" ? "continuous" : "discrete", i = p.bright.colors;
53
+ const s = n.heatmapAnnotation.selectorStates[0].selectedSource, l = E.getSourceInfo(s), c = l.type === "Double" || l.type === "Float" || l.type === "Int" || l.type === "Long" ? "continuous" : "discrete", d = h.bright.colors;
54
54
  let a;
55
- const T = (y = d[s]) == null ? void 0 : y.list;
56
- T && (a = T.reduce((b, z, g) => (b[z] = i[g % i.length], b), {})), o.heatmapSettings = {
55
+ const S = i[s], T = S == null ? void 0 : S.list;
56
+ T && (a = T.reduce((b, z, g) => (b[z] = d[g % d.length], b), {})), o.heatmapSettings = {
57
57
  valueType: c,
58
58
  aes: {
59
- colorsList: p.viridis.colors,
59
+ colorsList: h.viridis.colors,
60
60
  colorsMap: a
61
61
  }
62
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"composeDendroSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"sourcesContent":["import type {\n DendroUIState,\n InputGuide, InputState,\n PlotDataAndSettings,\n} from '@milaboratories/pf-plots';\nimport type { ReactiveState, UniqueValuesBySourceMap } from '../../types';\nimport { DEFAULT_DOT_RANGE, DEFAULT_DOT_SHAPE, getDendroAes } from '../../dataBindAes';\nimport { DEFAULT_BLACK, DEFAULT_CATEGORICAL_PALETTE, PALETTE_MAP } from '../../constantsAesthetic';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, isNumberRange } from '../../constantsCommon';\nimport type { DendroSettings } from '@milaboratories/miplots4';\n\nconst NARROW_TREE_WIDTH = 280;\n\nexport function composeDendroSettings(\n settings: DendroSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n) {\n settings.rootPosition = 'left';\n settings.size = { width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT };\n\n const optionsState = (reactiveState.optionsState as DendroUIState).components;\n const layerSettings = reactiveState.layersSettings.dendro;\n const aes = settings?.aes as Record<string, Record<string, unknown> | string | number>;\n if (aes.nodeShape && typeof aes.nodeShape === 'object') {\n const selectedStr = optionsState.nodeShape.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'dotShape',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeShape.valuesMap = valuesMap;\n } else {\n aes.nodeShape = DEFAULT_DOT_SHAPE;\n }\n } else if (typeof layerSettings.dotShape === 'string') {\n aes.nodeShape = layerSettings.dotShape as string;\n }\n if (aes.nodeColor && typeof aes.nodeColor === 'object') {\n const selectedStr = optionsState.nodeColor.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeColor.valuesMap = valuesMap;\n } else {\n aes.nodeColor = DEFAULT_BLACK;\n }\n } else if (typeof layerSettings.dotFill === 'string') {\n aes.nodeColor = layerSettings.dotFill;\n }\n if (aes.nodeSize && typeof aes.nodeSize === 'object') {\n const selectedStr = optionsState.nodeSize.selectorStates[0]?.selectedSource;\n let [min, max] = [Infinity, -Infinity];\n dataByColumns.values[selectedStr].forEach((v) => {\n const value = Number(v);\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n });\n\n aes.nodeSize.domain = [min, max];\n aes.nodeSize.range = isNumberRange(layerSettings.dotSize) ? [layerSettings.dotSize.min, layerSettings.dotSize.max] : [DEFAULT_DOT_RANGE.min, DEFAULT_DOT_RANGE.max];\n } else if (typeof layerSettings.dotSize === 'number') {\n aes.nodeSize = layerSettings.dotSize;\n }\n if (aes.lineColor && typeof aes.lineColor === 'object') {\n const selectedStr = optionsState.lineColor.selectorStates[0]?.selectedSource;\n aes.lineColor.valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n } else if (\n typeof layerSettings.lineColor === 'string'\n ) {\n aes.lineColor = layerSettings.lineColor;\n }\n\n if (optionsState.heatmapForSequence.selectorStates.length > 0) {\n settings.heatmapSettings = {\n valueType: 'stringSource',\n aes: {\n colorsList: PALETTE_MAP['bright'].colors,\n },\n };\n (settings.size as Record<string, number>).maxCellWidth = 8;\n }\n\n if (optionsState.heatmapAnnotation.selectorStates.length > 0) {\n const selectedSource = optionsState.heatmapAnnotation.selectorStates[0].selectedSource;\n const info = inputGuide.getSourceInfo(selectedSource);\n const valueType\n = info.type === 'Double'\n || info.type === 'Float'\n || info.type === 'Int'\n || info.type === 'Long'\n ? 'continuous'\n : 'discrete';\n const colors = PALETTE_MAP['bright'].colors; // TODO: should be in settings\n\n let colorsMap;\n const uniqueValues = uniqueValuesData[selectedSource]?.list;\n if (uniqueValues) {\n colorsMap = uniqueValues.reduce((res: Record<string, string>, value, idx) => {\n res[value] = colors[idx % colors.length];\n return res;\n }, {});\n }\n\n settings.heatmapSettings = {\n valueType,\n aes: {\n colorsList: PALETTE_MAP['viridis'].colors,\n colorsMap: colorsMap,\n },\n };\n }\n\n settings.mode = layerSettings.mode;\n settings.leavesMode = layerSettings.leavesMode;\n settings.showNodesLabels = optionsState.labels.selectorStates.length > 0;\n settings.showLeavesLabels = optionsState.labels.selectorStates.length > 0;\n\n // in other cases (if there is heatmap) tree width is half-width of svg\n if (layerSettings.showTable\n && optionsState.heatmapAnnotation.selectorStates.length === 0\n && optionsState.heatmapForSequence.selectorStates.length === 0\n ) {\n (settings.size as Record<string, number>).width = NARROW_TREE_WIDTH;\n }\n\n (settings.size as Record<string, number>).scale = reactiveState.chartScale / 100;\n settings.legend = { show: reactiveState.layersSettings.dendro.showLegend ?? true };\n return settings;\n}\n"],"names":["NARROW_TREE_WIDTH","composeDendroSettings","settings","dataByColumns","reactiveState","inputGuide","uniqueValuesData","DEFAULT_WIDTH","DEFAULT_HEIGHT","optionsState","layerSettings","aes","selectedStr","_a","valuesMap","getDendroAes","DEFAULT_CATEGORICAL_PALETTE","DEFAULT_DOT_SHAPE","_b","DEFAULT_BLACK","_c","min","max","v","value","isNumberRange","DEFAULT_DOT_RANGE","_d","PALETTE_MAP","selectedSource","info","valueType","colors","colorsMap","uniqueValues","_e","res","idx"],"mappings":"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"}
1
+ {"version":3,"file":"composeDendroSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"sourcesContent":["import type {\n DendroUIState,\n InputGuide, InputState,\n PlotDataAndSettings,\n} from '@milaboratories/pf-plots';\nimport type { ReactiveState, UniqueValuesBySourceMap } from '../../types';\nimport { DEFAULT_DOT_RANGE, DEFAULT_DOT_SHAPE, getDendroAes } from '../../dataBindAes';\nimport { DEFAULT_BLACK, DEFAULT_CATEGORICAL_PALETTE, PALETTE_MAP } from '../../constantsAesthetic';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, isNumberRange } from '../../constantsCommon';\nimport type { DendroSettings } from '@milaboratories/miplots4';\n\nconst NARROW_TREE_WIDTH = 280;\n\nexport function composeDendroSettings(\n settings: DendroSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n) {\n settings.rootPosition = 'left';\n settings.size = { width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT };\n\n const optionsState = (reactiveState.optionsState as DendroUIState).components;\n const layerSettings = reactiveState.layersSettings.dendro;\n const aes = settings?.aes as Record<string, Record<string, unknown> | string | number>;\n if (aes.nodeShape && typeof aes.nodeShape === 'object') {\n const selectedStr = optionsState.nodeShape.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'dotShape',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeShape.valuesMap = valuesMap;\n } else {\n aes.nodeShape = DEFAULT_DOT_SHAPE;\n }\n } else if (typeof layerSettings.dotShape === 'string') {\n aes.nodeShape = layerSettings.dotShape as string;\n }\n if (aes.nodeColor && typeof aes.nodeColor === 'object') {\n const selectedStr = optionsState.nodeColor.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeColor.valuesMap = valuesMap;\n } else {\n aes.nodeColor = DEFAULT_BLACK;\n }\n } else if (typeof layerSettings.dotFill === 'string') {\n aes.nodeColor = layerSettings.dotFill;\n }\n if (aes.nodeSize && typeof aes.nodeSize === 'object') {\n const selectedStr = optionsState.nodeSize.selectorStates[0]?.selectedSource;\n let [min, max] = [Infinity, -Infinity];\n dataByColumns.values[selectedStr].forEach((v) => {\n const value = Number(v);\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n });\n\n aes.nodeSize.domain = [min, max];\n aes.nodeSize.range = isNumberRange(layerSettings.dotSize) ? [layerSettings.dotSize.min, layerSettings.dotSize.max] : [DEFAULT_DOT_RANGE.min, DEFAULT_DOT_RANGE.max];\n } else if (typeof layerSettings.dotSize === 'number') {\n aes.nodeSize = layerSettings.dotSize;\n }\n if (aes.lineColor && typeof aes.lineColor === 'object') {\n const selectedStr = optionsState.lineColor.selectorStates[0]?.selectedSource;\n aes.lineColor.valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n } else if (\n typeof layerSettings.lineColor === 'string'\n ) {\n aes.lineColor = layerSettings.lineColor;\n }\n\n if (optionsState.heatmapForSequence.selectorStates.length > 0) {\n settings.heatmapSettings = {\n valueType: 'stringSource',\n aes: {\n colorsList: PALETTE_MAP['bright'].colors,\n },\n };\n (settings.size as Record<string, number>).maxCellWidth = 8;\n }\n\n if (optionsState.heatmapAnnotation.selectorStates.length > 0) {\n const selectedSource = optionsState.heatmapAnnotation.selectorStates[0].selectedSource;\n const info = inputGuide.getSourceInfo(selectedSource);\n const valueType\n = info.type === 'Double'\n || info.type === 'Float'\n || info.type === 'Int'\n || info.type === 'Long'\n ? 'continuous'\n : 'discrete';\n const colors = PALETTE_MAP['bright'].colors; // TODO: should be in settings\n\n let colorsMap;\n const dendroEntry = uniqueValuesData[selectedSource];\n const uniqueValues = dendroEntry?.list;\n if (uniqueValues) {\n colorsMap = uniqueValues.reduce((res: Record<string, string>, value, idx) => {\n res[value] = colors[idx % colors.length];\n return res;\n }, {});\n }\n\n settings.heatmapSettings = {\n valueType,\n aes: {\n colorsList: PALETTE_MAP['viridis'].colors,\n colorsMap: colorsMap,\n },\n };\n }\n\n settings.mode = layerSettings.mode;\n settings.leavesMode = layerSettings.leavesMode;\n settings.showNodesLabels = optionsState.labels.selectorStates.length > 0;\n settings.showLeavesLabels = optionsState.labels.selectorStates.length > 0;\n\n // in other cases (if there is heatmap) tree width is half-width of svg\n if (layerSettings.showTable\n && optionsState.heatmapAnnotation.selectorStates.length === 0\n && optionsState.heatmapForSequence.selectorStates.length === 0\n ) {\n (settings.size as Record<string, number>).width = NARROW_TREE_WIDTH;\n }\n\n (settings.size as Record<string, number>).scale = reactiveState.chartScale / 100;\n settings.legend = { show: reactiveState.layersSettings.dendro.showLegend ?? true };\n return settings;\n}\n"],"names":["NARROW_TREE_WIDTH","composeDendroSettings","settings","dataByColumns","reactiveState","inputGuide","uniqueValuesData","DEFAULT_WIDTH","DEFAULT_HEIGHT","optionsState","layerSettings","aes","selectedStr","_a","valuesMap","getDendroAes","DEFAULT_CATEGORICAL_PALETTE","DEFAULT_DOT_SHAPE","_b","DEFAULT_BLACK","_c","min","max","v","value","isNumberRange","DEFAULT_DOT_RANGE","_d","PALETTE_MAP","selectedSource","info","valueType","colors","colorsMap","dendroEntry","uniqueValues","res","idx"],"mappings":"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"}