@milaboratories/graph-maker 1.1.167 → 1.1.169

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 (90) hide show
  1. package/dist/GraphMaker/constantsCommon.d.ts +5 -0
  2. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  3. package/dist/GraphMaker/constantsCommon.js +13 -8
  4. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  5. package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.d.ts.map +1 -1
  6. package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.js +60 -56
  7. package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.js.map +1 -1
  8. package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.d.ts.map +1 -1
  9. package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.js +86 -58
  10. package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.js.map +1 -1
  11. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -1
  12. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +56 -38
  13. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -1
  14. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.d.ts.map +1 -1
  15. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.js +48 -30
  16. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.js.map +1 -1
  17. package/dist/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue.js +109 -112
  18. package/dist/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue.js.map +1 -1
  19. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +20 -0
  20. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  21. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +19 -15
  22. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  23. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +3 -1
  24. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  25. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +8 -8
  26. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  27. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +23 -23
  28. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  29. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
  30. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +7 -5
  31. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
  32. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/BubbleSettingsImpl.js +19 -14
  33. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/BubbleSettingsImpl.js.map +1 -1
  34. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js +132 -132
  35. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js.map +1 -1
  36. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js +53 -53
  37. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js.map +1 -1
  38. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/ChartsGroup.js.map +1 -1
  39. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js +7 -7
  40. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js.map +1 -1
  41. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js +49 -83
  42. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js.map +1 -1
  43. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js +51 -34
  44. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js.map +1 -1
  45. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
  46. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +8 -8
  47. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  48. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +8 -8
  49. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js +54 -29
  50. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js.map +1 -1
  51. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js +2 -2
  52. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js.map +1 -1
  53. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  54. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js.map +1 -1
  55. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/AnnotationCellsSvg.js.map +1 -1
  56. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/index.js.map +1 -1
  57. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/CanvasCells.js +31 -31
  58. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/CanvasCells.js.map +1 -1
  59. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js +20 -20
  60. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js.map +1 -1
  61. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js +12 -12
  62. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js.map +1 -1
  63. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/SvgCells.js +14 -14
  64. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/SvgCells.js.map +1 -1
  65. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/tooltipUtils.js +14 -14
  66. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/tooltipUtils.js.map +1 -1
  67. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/fillCellsData.js +244 -0
  68. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/fillCellsData.js.map +1 -0
  69. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js +28 -214
  70. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js.map +1 -1
  71. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js +26 -26
  72. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js.map +1 -1
  73. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js +8 -8
  74. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js.map +1 -1
  75. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  76. package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js +12 -6
  77. package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js.map +1 -1
  78. package/dist/node_modules/@milaboratories/miplots4/dist/types/bubble.js +23 -12
  79. package/dist/node_modules/@milaboratories/miplots4/dist/types/bubble.js.map +1 -1
  80. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +2 -0
  81. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
  82. package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetOrGroupKey.js +7 -0
  83. package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetOrGroupKey.js.map +1 -0
  84. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +165 -95
  85. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
  86. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +64 -64
  87. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
  88. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +30 -30
  89. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
  90. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"bubble.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/bubble.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport {ControllerBase, PlotDataAndSettings} from '../ControllerBase';\nimport {ComponentController} from '../ComponentController';\nimport {columnOrAxisIdFromString, isColumnId} from '../../spec';\nimport type {DataStore} from '../../store';\nimport {\n createLinkerMap, createMultipliesByMap, getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates, getFormat, getLinkerColumnsForSource,\n OptionsInfo,\n} from '../../utils';\nimport {AxisId, ColumnId} from '../../spec';\nimport type {ColumnsProvider} from '../../pframe/ColumnsProvider';\n\nexport interface BubbleUIState extends InputStateParent<'bubble'> {\n type: 'bubble';\n components: {\n valueSize: ComponentStateSimple;\n valueColor: ComponentStateSimple;\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n };\n}\n\nexport const InitialBubbleState: BubbleUIState = {\n type: 'bubble',\n components: {\n valueSize: {type: 'simple', selectorStates: []},\n valueColor: {type: 'simple', selectorStates: []},\n x: {type: 'simple', selectorStates: []},\n y: {type: 'simple', selectorStates: []},\n filters: {type: 'filter', selectorStates: []},\n tabBy: {type: 'filter', selectorStates: []},\n facetBy: {type: 'simple', selectorStates: []},\n tooltipContent: {type: 'simple', selectorStates: []},\n },\n dividedAxes: {},\n};\n\nfunction getMultiSourceColumn(data: Awaited<ReturnType<ColumnsProvider['getTableOuterJoin']>>, selectedSources: string[]) {\n if (!selectedSources.length) {\n return [];\n }\n const selectedIds = selectedSources.map(str => columnOrAxisIdFromString(str));\n const n = Object.values(data.columnsData)[0].length;\n const result: string[] = [];\n for (let i = 0; i < n; i++) {\n const value = selectedIds\n .map((id) => {\n const key = id.toCanonicalString();\n return isColumnId(id)\n ? data.columnsData[key][i]\n : data.axesData[key][i];\n })\n .join(', ');\n result.push(value);\n }\n return result;\n}\n\nexport class BubbleStateController extends ControllerBase<BubbleUIState> {\n dataInputs = ['valueSize', 'valueColor'];\n dontAllowUnfilteredHighCardinality = true;\n constructor() {\n super({\n valueSize: new ComponentController<BubbleUIState, 'valueSize'>({\n componentName: 'valueSize',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueColor'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n }\n }),\n valueColor: new ComponentController<BubbleUIState, 'valueColor'>({\n componentName: 'valueColor',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n },\n }),\n x: new ComponentController<BubbleUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n y: new ComponentController<BubbleUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n tooltipContent: new ComponentController<BubbleUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n facetBy: new ComponentController<BubbleUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n })\n }, {\n filters: new ComponentController<BubbleUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n }),\n tabBy: new ComponentController<BubbleUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n });\n }\n\n getMustBeConsumedAxes(state: BubbleUIState, optionsInfo: OptionsInfo): Set<string> {\n if (!state.components.valueColor.selectorStates.length) {\n return new Set<string>();\n }\n const sourceId = state.components.valueColor.selectorStates[0].selectedSource;\n const data = optionsInfo.get(sourceId);\n if (!data || data.kind !== 'column') {\n return new Set<string>();\n }\n return new Set(data.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString()))\n }\n\n async createDataByColumns(store: DataStore, state: BubbleUIState): Promise<PlotDataAndSettings['data']> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if ((!valueColorColumnId || !valueSizeColumnId) || !isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n const multipliesByMap = await createMultipliesByMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const primaryColumns = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId);\n const parentSources = primaryColumns.map((v) => v.toCanonicalString());\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n const inputs = [\n state.components.facetBy,\n state.components.x,\n state.components.y,\n state.components.tooltipContent\n ];\n const secondarySources: (ColumnId | AxisId)[] = []; // primary sources are the only value column\n const linkerColumns:ColumnId[] = [];\n\n for (const {selectedSource} of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n }\n\n for (const input of inputs) {\n for (const {selectedSource} of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [...primaryColumns, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n true\n );\n\n secondarySources.forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item)\n ? data.columnsData[key]\n : data.axesData[key];\n });\n dataByColumns.values[valueColorColumnIdString] = isColumnId(valueColorColumnId)\n ? data.columnsData[valueColorColumnIdString]\n : data.axesData[valueColorColumnIdString]\n dataByColumns.values[valueSizeColumnIdString] = isColumnId(valueSizeColumnId)\n ? data.columnsData[valueSizeColumnIdString]\n : data.axesData[valueSizeColumnIdString]\n\n const xAxes = state.components.x.selectorStates.map(state => state.selectedSource);\n const xKey = xAxes.join(', ');\n const xAxesLabeled = await Promise.all(xAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[xKey] = getMultiSourceColumn(data, xAxes);\n dataByColumns.values.xLabels = getMultiSourceColumn(data, xAxesLabeled);\n\n // y column should contain yGroup axes\n const yAxes = state.components.y.selectorStates.map(state => state.selectedSource);\n const yKey = yAxes.join(', ');\n const yAxesLabeled = await Promise.all(yAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[yKey] = getMultiSourceColumn(data, yAxes);\n dataByColumns.values.yLabels = getMultiSourceColumn(data, yAxesLabeled);\n\n return {byColumns: dataByColumns};\n }\n\n async createChartSettings(store: DataStore, state: BubbleUIState): Promise<Record<string, unknown>> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if (!isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n\n const parentSources = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId).map((v) => v.toCanonicalString());\n const valueColor = {\n type: 'column',\n value: valueColorColumnIdString,\n label: await getColumnOrAxisLabel(store, valueColorColumnIdString, []),\n };\n const valueSize = {\n type: 'column',\n value: valueSizeColumnIdString,\n label: await getColumnOrAxisLabel(store, valueSizeColumnIdString, []),\n };\n const xAxes = state.components.x.selectorStates.map(({selectedSource}) => selectedSource)\n const xKey = xAxes.join(', ');\n\n const yAxes = state.components.y.selectorStates.map(({selectedSource}) => selectedSource)\n const yKey = yAxes.join(', ');\n\n const facetBy = await Promise.all(state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n })));\n\n const xAxisTitle = (await Promise.all(state.components.x.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n const yAxisTitle = (await Promise.all(state.components.y.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: getFormat(spec)\n };\n })\n );\n\n return {\n type: 'bubble',\n valueColor: valueColor,\n valueSize: valueSize,\n xColumn: {\n type: 'column',\n value: xKey,\n label: xAxisTitle,\n valueLabels: 'xLabels'\n },\n yColumn: {\n type: 'column',\n value: yKey,\n label: yAxisTitle,\n valueLabels: 'yLabels'\n },\n facetBy,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialBubbleState","getMultiSourceColumn","data","selectedSources","selectedIds","str","columnOrAxisIdFromString","n","result","i","value","id","key","isColumnId","BubbleStateController","ControllerBase","ComponentController","__publicField","state","optionsInfo","sourceId","s","AxisId","store","valueColorColumnIdString","_a","valueSizeColumnIdString","_b","valueColorColumnId","valueSizeColumnId","dataByColumns","canonicalize","linkerMap","createLinkerMap","multipliesByMap","createMultipliesByMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","primaryColumns","parentSources","v","parentAxesList","getAxesSpecsFromSources","inputs","secondarySources","linkerColumns","selectedSource","getLinkerColumnsForSource","input","labelsColumnId","getColumnOrAxisValueLabelsId","item","xAxes","xKey","xAxesLabeled","yAxes","yKey","yAxesLabeled","valueColor","getColumnOrAxisLabel","valueSize","facetBy","selectorState","xAxisTitle","yAxisTitle","tooltipContent","source","spec","getColumnOrAxisSpec","getFormat"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"bubble.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/bubble.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport { ControllerBase, PlotDataAndSettings } from '../ControllerBase';\nimport { ComponentController } from '../ComponentController';\nimport { columnOrAxisIdFromString, isColumnId } from '../../spec';\nimport type { DataStore } from '../../store';\nimport {\n createLinkerMap, createMultipliesByMap, getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates, getFormat, getLinkerColumnsForSource,\n OptionsInfo,\n} from '../../utils';\nimport { AxisId, ColumnId } from '../../spec';\nimport type { ColumnsProvider } from '../../pframe/ColumnsProvider';\n\nexport interface BubbleUIState extends InputStateParent<'bubble'> {\n type: 'bubble';\n components: {\n valueSize: ComponentStateSimple;\n valueColor: ComponentStateSimple;\n x: ComponentStateSimple;\n xGroupBy: ComponentStateSimple;\n y: ComponentStateSimple;\n yGroupBy: ComponentStateSimple;\n filters: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n };\n}\n\nexport const InitialBubbleState: BubbleUIState = {\n type: 'bubble',\n components: {\n valueSize: { type: 'simple', selectorStates: [] },\n valueColor: { type: 'simple', selectorStates: [] },\n x: { type: 'simple', selectorStates: [] },\n xGroupBy: { type: 'simple', selectorStates: [] },\n y: { type: 'simple', selectorStates: [] },\n yGroupBy: { type: 'simple', selectorStates: [] },\n filters: { type: 'filter', selectorStates: [] },\n tabBy: { type: 'filter', selectorStates: [] },\n facetBy: { type: 'simple', selectorStates: [] },\n tooltipContent: { type: 'simple', selectorStates: [] },\n },\n dividedAxes: {},\n};\n\nfunction getMultiSourceColumn(data: Awaited<ReturnType<ColumnsProvider['getTableOuterJoin']>>, selectedSources: string[]) {\n if (!selectedSources.length) {\n return [];\n }\n const selectedIds = selectedSources.map(str => columnOrAxisIdFromString(str));\n const n = Object.values(data.columnsData)[0].length;\n const result: string[] = [];\n for (let i = 0; i < n; i++) {\n const value = selectedIds\n .map((id) => {\n const key = id.toCanonicalString();\n return isColumnId(id)\n ? data.columnsData[key][i]\n : data.axesData[key][i];\n })\n .join(', ');\n result.push(value);\n }\n return result;\n}\n\nexport class BubbleStateController extends ControllerBase<BubbleUIState> {\n dataInputs = ['valueSize', 'valueColor'];\n dontAllowUnfilteredHighCardinality = true;\n constructor() {\n super({\n valueSize: new ComponentController<BubbleUIState, 'valueSize'>({\n componentName: 'valueSize',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueColor'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n }\n }),\n valueColor: new ComponentController<BubbleUIState, 'valueColor'>({\n componentName: 'valueColor',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n },\n }),\n x: new ComponentController<BubbleUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n xGroupBy: new ComponentController<BubbleUIState, 'xGroupBy'>({\n componentName: 'xGroupBy',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n dependsOn: ['x'],\n checkSourceBySpec: (spec, state) => {\n const allowedAxes = new Set([\n ...state.components.x.selectorStates.map(s => s.selectedSource),\n ...state.components.xGroupBy.selectorStates.map(s => s.selectedSource),\n ]);\n\n if ('kind' in spec && spec.kind === 'PColumn') {\n return AxisId.fromAxesSpec(spec.axesSpec).every(id =>\n allowedAxes.has(id.toCanonicalString())\n );\n }\n return true;\n },\n }),\n y: new ComponentController<BubbleUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n yGroupBy: new ComponentController<BubbleUIState, 'yGroupBy'>({\n componentName: 'yGroupBy',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n dependsOn: ['y'],\n checkSourceBySpec: (spec, state) => {\n const allowedAxes = new Set([\n ...state.components.x.selectorStates.map(s => s.selectedSource),\n ...state.components.xGroupBy.selectorStates.map(s => s.selectedSource),\n ]);\n\n if ('kind' in spec && spec.kind === 'PColumn') {\n return AxisId.fromAxesSpec(spec.axesSpec).every(id =>\n allowedAxes.has(id.toCanonicalString())\n );\n }\n return true;\n },\n }),\n tooltipContent: new ComponentController<BubbleUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n facetBy: new ComponentController<BubbleUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n })\n }, {\n filters: new ComponentController<BubbleUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n }),\n tabBy: new ComponentController<BubbleUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n });\n }\n\n getMustBeConsumedAxes(state: BubbleUIState, optionsInfo: OptionsInfo): Set<string> {\n if (!state.components.valueColor.selectorStates.length) {\n return new Set<string>();\n }\n const sourceId = state.components.valueColor.selectorStates[0].selectedSource;\n const data = optionsInfo.get(sourceId);\n if (!data || data.kind !== 'column') {\n return new Set<string>();\n }\n return new Set(data.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString()))\n }\n\n async createDataByColumns(store: DataStore, state: BubbleUIState): Promise<PlotDataAndSettings['data']> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if ((!valueColorColumnId || !valueSizeColumnId) || !isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n const multipliesByMap = await createMultipliesByMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const primaryColumns = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId);\n const parentSources = primaryColumns.map((v) => v.toCanonicalString());\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n const inputs = [\n state.components.facetBy,\n state.components.x,\n state.components.y,\n state.components.xGroupBy,\n state.components.yGroupBy,\n state.components.tooltipContent\n ];\n const secondarySources: (ColumnId | AxisId)[] = []; // primary sources are the only value column\n const linkerColumns: ColumnId[] = [];\n\n for (const { selectedSource } of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n }\n\n for (const input of inputs) {\n for (const { selectedSource } of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [...primaryColumns, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n true\n );\n\n secondarySources.forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item)\n ? data.columnsData[key]\n : data.axesData[key];\n });\n dataByColumns.values[valueColorColumnIdString] = isColumnId(valueColorColumnId)\n ? data.columnsData[valueColorColumnIdString]\n : data.axesData[valueColorColumnIdString]\n dataByColumns.values[valueSizeColumnIdString] = isColumnId(valueSizeColumnId)\n ? data.columnsData[valueSizeColumnIdString]\n : data.axesData[valueSizeColumnIdString]\n\n const xAxes = state.components.x.selectorStates\n .concat(state.components.xGroupBy.selectorStates)\n .map(state => state.selectedSource);\n const xKey = xAxes.join(', ');\n const xAxesLabeled = await Promise.all(xAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[xKey] = getMultiSourceColumn(data, xAxes);\n dataByColumns.values.xLabels = getMultiSourceColumn(data, xAxesLabeled);\n\n // y column should contain yGroup axes\n const yAxes = state.components.y.selectorStates\n .concat(state.components.yGroupBy.selectorStates)\n .map(state => state.selectedSource);\n const yKey = yAxes.join(', ');\n const yAxesLabeled = await Promise.all(yAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[yKey] = getMultiSourceColumn(data, yAxes);\n dataByColumns.values.yLabels = getMultiSourceColumn(data, yAxesLabeled);\n\n return { byColumns: dataByColumns };\n }\n\n async createChartSettings(store: DataStore, state: BubbleUIState): Promise<Record<string, unknown>> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if (!isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n\n const parentSources = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId).map((v) => v.toCanonicalString());\n const valueColor = {\n type: 'column',\n value: valueColorColumnIdString,\n label: await getColumnOrAxisLabel(store, valueColorColumnIdString, []),\n };\n const valueSize = {\n type: 'column',\n value: valueSizeColumnIdString,\n label: await getColumnOrAxisLabel(store, valueSizeColumnIdString, []),\n };\n const xAxes = state.components.x.selectorStates\n .concat(state.components.xGroupBy.selectorStates)\n .map(({selectedSource}) => columnOrAxisIdFromString(selectedSource))\n .map(id => id.toCanonicalString());\n const xKey = xAxes.join(', ');\n\n const yAxes = state.components.y.selectorStates\n .concat(state.components.yGroupBy.selectorStates)\n .map(({selectedSource}) => columnOrAxisIdFromString(selectedSource))\n .map(id => id.toCanonicalString());\n const yKey = yAxes.join(', ');\n\n const xGroupBy = await Promise.all(\n state.components.xGroupBy.selectorStates.map(async selectorState => ({\n type: 'column',\n label: await getColumnOrAxisLabel(store, selectorState.selectedSource, parentSources),\n value: selectorState.selectedSource,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n }))\n );\n const yGroupBy = await Promise.all(\n state.components.yGroupBy.selectorStates.map(async selectorState => ({\n type: 'column',\n label: await getColumnOrAxisLabel(store, selectorState.selectedSource, parentSources),\n value: selectorState.selectedSource,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n }))\n );\n\n const facetBy = await Promise.all(state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n })));\n\n const xAxisTitle = (await Promise.all(state.components.x.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n const yAxisTitle = (await Promise.all(state.components.y.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: getFormat(spec)\n };\n })\n );\n\n return {\n type: 'bubble',\n valueColor: valueColor,\n valueSize: valueSize,\n xColumn: {\n type: 'column',\n value: xKey,\n label: xAxisTitle,\n valueLabels: 'xLabels'\n },\n yColumn: {\n type: 'column',\n value: yKey,\n label: yAxisTitle,\n valueLabels: 'yLabels'\n },\n facetBy,\n xGroupBy,\n yGroupBy,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialBubbleState","getMultiSourceColumn","data","selectedSources","selectedIds","str","columnOrAxisIdFromString","n","result","i","value","id","key","isColumnId","BubbleStateController","ControllerBase","ComponentController","spec","state","allowedAxes","s","AxisId","__publicField","optionsInfo","sourceId","store","valueColorColumnIdString","_a","valueSizeColumnIdString","_b","valueColorColumnId","valueSizeColumnId","dataByColumns","canonicalize","linkerMap","createLinkerMap","multipliesByMap","createMultipliesByMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","primaryColumns","parentSources","v","parentAxesList","getAxesSpecsFromSources","inputs","secondarySources","linkerColumns","selectedSource","getLinkerColumnsForSource","input","labelsColumnId","getColumnOrAxisValueLabelsId","item","xAxes","xKey","xAxesLabeled","yAxes","yKey","yAxesLabeled","valueColor","getColumnOrAxisLabel","valueSize","xGroupBy","selectorState","yGroupBy","facetBy","xAxisTitle","yAxisTitle","tooltipContent","source","getColumnOrAxisSpec","getFormat"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,10 +1,10 @@
1
- import k from "../../_virtual/canonicalize.js";
2
- import z from "../../_virtual/lodash.js";
3
- import { ControllerBase as E } from "../ControllerBase.js";
1
+ import z from "../../_virtual/canonicalize.js";
2
+ import E from "../../_virtual/lodash.js";
3
+ import { ControllerBase as Y } from "../ControllerBase.js";
4
4
  import { ComponentController as u } from "../ComponentController.js";
5
5
  import { AxisId as P, columnOrAxisIdFromString as f, isColumnId as C } from "../../spec.js";
6
- import { createLinkerMap as Y, createMultipliesByMap as q, getFiltersFromStates as M, getAxesSpecsFromSources as X, getLinkerColumnsForSource as F, getColumnOrAxisValueLabelsId as b, createHighlightColumn as U, getColumnOrAxisLabel as A, getColumnOrAxisSpec as T, getFormat as N } from "../../utils.js";
7
- var J = Object.defineProperty, Z = (h, t, e) => t in h ? J(h, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : h[t] = e, j = (h, t, e) => Z(h, t + "", e);
6
+ import { createLinkerMap as q, createMultipliesByMap as M, getFiltersFromStates as U, getAxesSpecsFromSources as X, getLinkerColumnsForSource as F, getColumnOrAxisValueLabelsId as b, createHighlightColumn as H, getColumnOrAxisLabel as A, getColumnOrAxisSpec as T, getFormat as N } from "../../utils.js";
7
+ var J = Object.defineProperty, Z = (h, e, t) => e in h ? J(h, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : h[e] = t, k = (h, e, t) => Z(h, typeof e != "symbol" ? e + "" : e, t);
8
8
  const W = {
9
9
  type: "scatterplot-umap",
10
10
  components: {
@@ -21,7 +21,7 @@ const W = {
21
21
  },
22
22
  dividedAxes: {}
23
23
  };
24
- class _ extends E {
24
+ class _ extends Y {
25
25
  //allowHangingAxes = true;
26
26
  constructor() {
27
27
  super(
@@ -145,20 +145,20 @@ class _ extends E {
145
145
  }
146
146
  })
147
147
  }
148
- ), j(this, "dataInputs", ["x", "y"]);
148
+ ), k(this, "dataInputs", ["x", "y"]), k(this, "dontAllowUnfilteredHighCardinality", !0);
149
149
  }
150
- getMustBeConsumedAxes(t, e) {
151
- if (!t.components.x.selectorStates.length || !t.components.y.selectorStates.length)
150
+ getMustBeConsumedAxes(e, t) {
151
+ if (!e.components.x.selectorStates.length || !e.components.y.selectorStates.length)
152
152
  return /* @__PURE__ */ new Set();
153
- const y = t.components.x.selectorStates[0].selectedSource, S = t.components.y.selectorStates[0].selectedSource, m = e.get(y), r = e.get(S);
153
+ const g = e.components.x.selectorStates[0].selectedSource, S = e.components.y.selectorStates[0].selectedSource, m = t.get(g), r = t.get(S);
154
154
  if (!m || !r || m.kind !== "column" || r.kind !== "column")
155
155
  return /* @__PURE__ */ new Set();
156
156
  const a = m.spec.axesSpec.map((i) => P.fromAxisSpec(i).toCanonicalString()), c = r.spec.axesSpec.map((i) => P.fromAxisSpec(i).toCanonicalString()), p = a.filter((i) => !c.some((d) => d === i)), n = c.filter((i) => !a.some((d) => d === i));
157
157
  return p.length && n.length ? /* @__PURE__ */ new Set([...p, ...n]) : /* @__PURE__ */ new Set();
158
158
  }
159
- async createDataByColumns(t, e) {
160
- var y, S;
161
- const m = (y = e.components.x.selectorStates[0]) == null ? void 0 : y.selectedSource, r = (S = e.components.y.selectorStates[0]) == null ? void 0 : S.selectedSource;
159
+ async createDataByColumns(e, t) {
160
+ var g, S;
161
+ const m = (g = t.components.x.selectorStates[0]) == null ? void 0 : g.selectedSource, r = (S = t.components.y.selectorStates[0]) == null ? void 0 : S.selectedSource;
162
162
  if (!m || !r)
163
163
  throw Error("X or Y column is not valid");
164
164
  const a = f(m), c = f(r);
@@ -166,136 +166,136 @@ class _ extends E {
166
166
  throw Error("X or Y column is not valid");
167
167
  const p = {
168
168
  type: "columns",
169
- id: k(e.components) ?? "",
169
+ id: z(t.components) ?? "",
170
170
  values: {}
171
- }, n = await Y(t), i = await q(t), d = [
172
- ...e.components.filters.selectorStates,
173
- ...e.components.tabBy.selectorStates
174
- ], L = M(d), O = d.map((s) => f(s.selectedSource)).filter(C), v = [a, c].filter(C).map((s) => s.toCanonicalString());
171
+ }, n = await q(e), i = await M(e), d = [
172
+ ...t.components.filters.selectorStates,
173
+ ...t.components.tabBy.selectorStates
174
+ ], I = U(d), O = d.map((s) => f(s.selectedSource)).filter(C), v = [a, c].filter(C).map((s) => s.toCanonicalString());
175
175
  if (v.length === 0)
176
176
  throw Error("One of X and Y should be a column");
177
- const D = await X(t, v), B = [a, c, ...O], w = [], x = [];
177
+ const D = await X(e, v), L = [a, c, ...O], w = [], x = [];
178
178
  for (const { selectedSource: s } of d)
179
179
  x.push(...await F(
180
- t,
180
+ e,
181
181
  n,
182
182
  i,
183
183
  D,
184
184
  s
185
185
  ));
186
186
  const o = [
187
- e.components.grouping,
188
- e.components.facetBy,
189
- e.components.tooltipContent,
190
- e.components.label,
191
- e.components.highlight,
192
- e.components.size
187
+ t.components.grouping,
188
+ t.components.facetBy,
189
+ t.components.tooltipContent,
190
+ t.components.label,
191
+ t.components.highlight,
192
+ t.components.size
193
193
  ];
194
194
  for (const s of o)
195
- for (const { selectedSource: g } of s.selectorStates) {
196
- w.push(f(g)), x.push(...await F(
197
- t,
195
+ for (const { selectedSource: y } of s.selectorStates) {
196
+ w.push(f(y)), x.push(...await F(
197
+ e,
198
198
  n,
199
199
  i,
200
200
  D,
201
- g
201
+ y
202
202
  ));
203
- const I = await b(t, g, v);
204
- I && w.push(I);
203
+ const B = await b(e, y, v);
204
+ B && w.push(B);
205
205
  }
206
- const l = await t.pFrameProvider.getTableOuterJoin(
206
+ const l = await e.pFrameProvider.getTableOuterJoin(
207
207
  [a, c, ...x, ...O],
208
208
  w,
209
- L,
209
+ I,
210
210
  !1
211
211
  );
212
- return [...B, ...w].forEach((s) => {
213
- const g = s.toCanonicalString();
214
- p.values[g] = C(s) ? l.columnsData[g] : l.axesData[g];
215
- }), e.components.highlight.selectorStates.length && (p.values.highlight = U(e.components.highlight.selectorStates, l)), {
212
+ return [...L, ...w].forEach((s) => {
213
+ const y = s.toCanonicalString();
214
+ p.values[y] = C(s) ? l.columnsData[y] : l.axesData[y];
215
+ }), t.components.highlight.selectorStates.length && (p.values.highlight = H(t.components.highlight.selectorStates, l)), {
216
216
  byColumns: p,
217
217
  axesData: l.axesData
218
218
  };
219
219
  }
220
- async createChartSettings(t, e) {
221
- var y, S, m;
222
- const r = (y = e.components.x.selectorStates[0]) == null ? void 0 : y.selectedSource, a = (S = e.components.y.selectorStates[0]) == null ? void 0 : S.selectedSource, c = r ? f(r) : null, p = a ? f(a) : null;
220
+ async createChartSettings(e, t) {
221
+ var g, S, m;
222
+ const r = (g = t.components.x.selectorStates[0]) == null ? void 0 : g.selectedSource, a = (S = t.components.y.selectorStates[0]) == null ? void 0 : S.selectedSource, c = r ? f(r) : null, p = a ? f(a) : null;
223
223
  if (!r || !a || !c || !p || !C(c) && !C(p))
224
224
  throw Error("Empty or invalid required data");
225
225
  const n = [c, p].filter(C).map((o) => o.toCanonicalString()), i = {
226
226
  type: "column",
227
227
  value: r,
228
- label: await A(t, r, n)
228
+ label: await A(e, r, n)
229
229
  }, d = {
230
230
  type: "column",
231
231
  value: a,
232
- label: await A(t, a, n)
233
- }, L = {
232
+ label: await A(e, a, n)
233
+ }, I = {
234
234
  type: "column",
235
235
  value: "key"
236
236
  }, O = await Promise.all(
237
- e.components.facetBy.selectorStates.map(async (o) => {
237
+ t.components.facetBy.selectorStates.map(async (o) => {
238
238
  var l;
239
239
  return {
240
240
  type: "column",
241
- value: ((l = await b(t, o.selectedSource, n)) == null ? void 0 : l.toCanonicalString()) ?? o.selectedSource
241
+ value: ((l = await b(e, o.selectedSource, n)) == null ? void 0 : l.toCanonicalString()) ?? o.selectedSource
242
242
  };
243
243
  })
244
- ), v = z.uniq([
245
- ...e.components.grouping.selectorStates.map((o) => o.selectedSource),
246
- ...e.components.size.selectorStates.map((o) => o.selectedSource)
244
+ ), v = E.uniq([
245
+ ...t.components.grouping.selectorStates.map((o) => o.selectedSource),
246
+ ...t.components.size.selectorStates.map((o) => o.selectedSource)
247
247
  ]), D = await Promise.all(
248
248
  v.map(async (o) => {
249
249
  var l;
250
250
  return {
251
251
  columnName: {
252
252
  type: "column",
253
- label: await A(t, o, n) || o,
253
+ label: await A(e, o, n) || o,
254
254
  value: o,
255
- valueLabels: ((l = await b(t, o, n)) == null ? void 0 : l.toCanonicalString()) ?? o
255
+ valueLabels: ((l = await b(e, o, n)) == null ? void 0 : l.toCanonicalString()) ?? o
256
256
  }
257
257
  };
258
258
  })
259
- ), B = await Promise.all(
260
- e.components.tooltipContent.selectorStates.map(async (o) => {
259
+ ), L = await Promise.all(
260
+ t.components.tooltipContent.selectorStates.map(async (o) => {
261
261
  var l;
262
- const s = o.selectedSource, g = await T(t, s, n);
262
+ const s = o.selectedSource, y = await T(e, s, n);
263
263
  return {
264
264
  type: "column",
265
- label: await A(t, s, n) || s,
265
+ label: await A(e, s, n) || s,
266
266
  value: s,
267
- valueLabels: ((l = await b(t, s, n)) == null ? void 0 : l.toCanonicalString()) ?? s,
268
- format: N(g)
267
+ valueLabels: ((l = await b(e, s, n)) == null ? void 0 : l.toCanonicalString()) ?? s,
268
+ format: N(y)
269
269
  };
270
270
  })
271
271
  );
272
272
  let w;
273
- if (e.components.label.selectorStates.length) {
274
- const o = e.components.label.selectorStates[0].selectedSource, l = await T(t, o, n);
273
+ if (t.components.label.selectorStates.length) {
274
+ const o = t.components.label.selectorStates[0].selectedSource, l = await T(e, o, n);
275
275
  w = {
276
276
  type: "column",
277
277
  value: o,
278
- label: await A(t, o, n),
279
- valueLabels: ((m = await b(t, o, n)) == null ? void 0 : m.toCanonicalString()) ?? o,
278
+ label: await A(e, o, n),
279
+ valueLabels: ((m = await b(e, o, n)) == null ? void 0 : m.toCanonicalString()) ?? o,
280
280
  format: N(l)
281
281
  };
282
282
  }
283
283
  let x;
284
- return e.components.highlight.selectorStates.length && (x = {
284
+ return t.components.highlight.selectorStates.length && (x = {
285
285
  type: "column",
286
286
  value: "highlight"
287
287
  }), {
288
288
  type: "scatterplot-umap",
289
289
  x: i,
290
290
  y: d,
291
- keyColumn: L,
291
+ keyColumn: I,
292
292
  facetBy: O,
293
293
  grouping: D,
294
294
  label: w,
295
295
  highlight: x,
296
296
  tooltips: {
297
297
  show: !0,
298
- content: B
298
+ content: L
299
299
  }
300
300
  };
301
301
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scatterplot-umap.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/scatterplot-umap.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport lodash from 'lodash';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport { PValue } from '../../store';\nimport { ControllerBase, PlotDataAndSettings } from '../ControllerBase';\nimport { ComponentController } from '../ComponentController';\nimport { AxisId, ColumnId } from '../../spec';\nimport { columnOrAxisIdFromString, isColumnId } from '../../spec';\nimport type { DataStore } from '../../store';\nimport {\n createHighlightColumn,\n createLinkerMap,\n createMultipliesByMap,\n getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates,\n getFormat,\n getLinkerColumnsForSource,\n OptionsInfo,\n} from '../../utils';\n\nexport interface ScatterplotUmapUIState extends InputStateParent<'scatterplot-umap'> {\n type: 'scatterplot-umap';\n components: {\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n highlight: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n grouping: ComponentStateSimple;\n label: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n size: ComponentStateSimple;\n };\n}\n\nexport const InitialScatterplotUmapState: ScatterplotUmapUIState = {\n type: 'scatterplot-umap',\n components: {\n x: { type: 'simple', selectorStates: [] },\n y: { type: 'simple', selectorStates: [] },\n filters: { type: 'filter', selectorStates: [] },\n highlight: { type: 'filter', selectorStates: [] },\n tabBy: { type: 'filter', selectorStates: [] },\n facetBy: { type: 'simple', selectorStates: [] },\n grouping: { type: 'simple', selectorStates: [] },\n label: { type: 'simple', selectorStates: [] },\n tooltipContent: { type: 'simple', selectorStates: [] },\n size: { type: 'simple', selectorStates: [] },\n },\n dividedAxes: {},\n};\n\nexport class ScatterplotUmapStateController extends ControllerBase<ScatterplotUmapUIState> {\n dataInputs = ['x', 'y'];\n //allowHangingAxes = true;\n\n constructor() {\n super(\n {\n x: new ComponentController<ScatterplotUmapUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['y'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n y: new ComponentController<ScatterplotUmapUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['x'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n facetBy: new ComponentController<ScatterplotUmapUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n }),\n grouping: new ComponentController<ScatterplotUmapUIState, 'grouping'>({\n componentName: 'grouping',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n tooltipContent: new ComponentController<ScatterplotUmapUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n label: new ComponentController<ScatterplotUmapUIState, 'label'>({\n componentName: 'label',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: false,\n },\n }),\n size: new ComponentController<ScatterplotUmapUIState, 'size'>({\n componentName: 'size',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n },\n }),\n },\n {\n filters: new ComponentController<ScatterplotUmapUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n }\n }),\n tabBy: new ComponentController<ScatterplotUmapUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n highlight: new ComponentController<ScatterplotUmapUIState, 'highlight'>({\n componentName: 'highlight',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: true,\n }\n }),\n }\n );\n }\n\n getMustBeConsumedAxes(state: ScatterplotUmapUIState, optionsInfo: OptionsInfo): Set<string> {\n if (!state.components.x.selectorStates.length || !state.components.y.selectorStates.length) {\n return new Set<string>();\n }\n const sourceIdX = state.components.x.selectorStates[0].selectedSource;\n const sourceIdY = state.components.y.selectorStates[0].selectedSource;\n const dataX = optionsInfo.get(sourceIdX);\n const dataY = optionsInfo.get(sourceIdY);\n if (!dataX || !dataY || dataX.kind !== 'column' || dataY.kind !== 'column') {\n return new Set<string>();\n }\n const axesX = dataX.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const axesY = dataY.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const hangingX = axesX.filter(axisKey => !axesY.some(id => id === axisKey));\n const hangingY = axesY.filter(axisKey => !axesX.some(id => id === axisKey));\n\n if (hangingX.length && hangingY.length) {\n return new Set<string>([...hangingX, ...hangingY])\n }\n return new Set<string>();\n }\n\n async createDataByColumns(store: DataStore, state: ScatterplotUmapUIState): Promise<PlotDataAndSettings['data']> {\n const xColumnIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yColumnIdString = state.components.y.selectorStates[0]?.selectedSource;\n if (!xColumnIdString || !yColumnIdString) {\n throw Error('X or Y column is not valid');\n }\n const xId = columnOrAxisIdFromString(xColumnIdString);\n const yId = columnOrAxisIdFromString(yColumnIdString);\n if (!xId || !yId) {\n throw Error('X or Y column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n const multipliesByMap = await createMultipliesByMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const parentSources = [xId, yId].filter(isColumnId).map(item => item.toCanonicalString());\n if (parentSources.length === 0) {\n throw Error('One of X and Y should be a column');\n }\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n\n const primarySources = [xId, yId, ...filterColumns];\n const secondarySources: (ColumnId | AxisId)[] = [];\n const linkerColumns: ColumnId[] = [];\n\n for (const { selectedSource } of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource,\n ));\n }\n\n const inputs = [\n state.components.grouping,\n state.components.facetBy,\n state.components.tooltipContent,\n state.components.label,\n state.components.highlight,\n state.components.size,\n ];\n for (const input of inputs) {\n for (const { selectedSource } of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [xId, yId, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n false\n );\n\n [...primarySources, ...secondarySources].forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item) ? data.columnsData[key] : data.axesData[key];\n });\n\n if (state.components.highlight.selectorStates.length) {\n dataByColumns.values['highlight'] = createHighlightColumn(state.components.highlight.selectorStates, data) as PValue[];\n }\n\n return {\n byColumns: dataByColumns,\n axesData: data.axesData\n };\n }\n\n async createChartSettings(store: DataStore, state: ScatterplotUmapUIState): Promise<Record<string, unknown>> {\n const xIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yIdString = state.components.y.selectorStates[0]?.selectedSource;\n const xIdWithQ = xIdString ? columnOrAxisIdFromString(xIdString) : null;\n const yIdWithQ = yIdString ? columnOrAxisIdFromString(yIdString) : null;\n if (!xIdString || !yIdString || !xIdWithQ || !yIdWithQ || (!isColumnId(xIdWithQ) && !isColumnId(yIdWithQ))) {\n throw Error('Empty or invalid required data');\n }\n\n const parentSources = [xIdWithQ, yIdWithQ].filter(isColumnId).map(item => item.toCanonicalString());\n const x = {\n type: 'column',\n value: xIdString,\n label: await getColumnOrAxisLabel(store, xIdString, parentSources),\n };\n const y = {\n type: 'column',\n value: yIdString,\n label: await getColumnOrAxisLabel(store, yIdString, parentSources),\n };\n const keyColumn = {\n type: 'column',\n value: 'key',\n };\n const facetBy = await Promise.all(\n state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n }))\n );\n const allGroupingIds = lodash.uniq([\n ...state.components.grouping.selectorStates.map(s => s.selectedSource),\n ...state.components.size.selectorStates.map(s => s.selectedSource),\n ]);\n const grouping = await Promise.all(\n allGroupingIds.map(async idString => {\n return {\n columnName: {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, idString, parentSources)) || idString,\n value: idString,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, idString, parentSources))?.toCanonicalString() ??\n idString,\n }\n }\n })\n );\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: getFormat(spec)\n };\n })\n );\n\n let label;\n if (state.components.label.selectorStates.length) {\n const source = state.components.label.selectorStates[0].selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n label = {\n type: 'column',\n value: source,\n label: await getColumnOrAxisLabel(store, source, parentSources),\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: getFormat(spec)\n };\n }\n\n let highlight;\n if (state.components.highlight.selectorStates.length) {\n highlight = {\n type: 'column',\n value: 'highlight'\n }\n }\n return {\n type: 'scatterplot-umap',\n x,\n y,\n keyColumn,\n facetBy,\n grouping,\n label,\n highlight,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialScatterplotUmapState","ScatterplotUmapStateController","ControllerBase","ComponentController","__publicField","state","optionsInfo","sourceIdX","sourceIdY","dataX","dataY","axesX","s","AxisId","axesY","hangingX","axisKey","id","hangingY","store","xColumnIdString","_a","yColumnIdString","_b","xId","columnOrAxisIdFromString","yId","dataByColumns","canonicalize","linkerMap","createLinkerMap","multipliesByMap","createMultipliesByMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","isColumnId","parentSources","item","parentAxesList","getAxesSpecsFromSources","primarySources","secondarySources","linkerColumns","selectedSource","getLinkerColumnsForSource","inputs","input","labelsColumnId","getColumnOrAxisValueLabelsId","data","key","createHighlightColumn","xIdString","yIdString","xIdWithQ","yIdWithQ","x","getColumnOrAxisLabel","y","keyColumn","facetBy","selectorState","allGroupingIds","lodash","grouping","idString","tooltipContent","source","spec","getColumnOrAxisSpec","getFormat","label","_c","highlight"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"scatterplot-umap.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/scatterplot-umap.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport lodash from 'lodash';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport { PValue } from '../../store';\nimport { ControllerBase, PlotDataAndSettings } from '../ControllerBase';\nimport { ComponentController } from '../ComponentController';\nimport { AxisId, ColumnId } from '../../spec';\nimport { columnOrAxisIdFromString, isColumnId } from '../../spec';\nimport type { DataStore } from '../../store';\nimport {\n createHighlightColumn,\n createLinkerMap,\n createMultipliesByMap,\n getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates,\n getFormat,\n getLinkerColumnsForSource,\n OptionsInfo,\n} from '../../utils';\n\nexport interface ScatterplotUmapUIState extends InputStateParent<'scatterplot-umap'> {\n type: 'scatterplot-umap';\n components: {\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n highlight: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n grouping: ComponentStateSimple;\n label: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n size: ComponentStateSimple;\n };\n}\n\nexport const InitialScatterplotUmapState: ScatterplotUmapUIState = {\n type: 'scatterplot-umap',\n components: {\n x: { type: 'simple', selectorStates: [] },\n y: { type: 'simple', selectorStates: [] },\n filters: { type: 'filter', selectorStates: [] },\n highlight: { type: 'filter', selectorStates: [] },\n tabBy: { type: 'filter', selectorStates: [] },\n facetBy: { type: 'simple', selectorStates: [] },\n grouping: { type: 'simple', selectorStates: [] },\n label: { type: 'simple', selectorStates: [] },\n tooltipContent: { type: 'simple', selectorStates: [] },\n size: { type: 'simple', selectorStates: [] },\n },\n dividedAxes: {},\n};\n\nexport class ScatterplotUmapStateController extends ControllerBase<ScatterplotUmapUIState> {\n dataInputs = ['x', 'y'];\n dontAllowUnfilteredHighCardinality = true;\n //allowHangingAxes = true;\n\n constructor() {\n super(\n {\n x: new ComponentController<ScatterplotUmapUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['y'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n y: new ComponentController<ScatterplotUmapUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['x'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n facetBy: new ComponentController<ScatterplotUmapUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n }),\n grouping: new ComponentController<ScatterplotUmapUIState, 'grouping'>({\n componentName: 'grouping',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n tooltipContent: new ComponentController<ScatterplotUmapUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n label: new ComponentController<ScatterplotUmapUIState, 'label'>({\n componentName: 'label',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: false,\n },\n }),\n size: new ComponentController<ScatterplotUmapUIState, 'size'>({\n componentName: 'size',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n },\n }),\n },\n {\n filters: new ComponentController<ScatterplotUmapUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n }\n }),\n tabBy: new ComponentController<ScatterplotUmapUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n highlight: new ComponentController<ScatterplotUmapUIState, 'highlight'>({\n componentName: 'highlight',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: true,\n }\n }),\n }\n );\n }\n\n getMustBeConsumedAxes(state: ScatterplotUmapUIState, optionsInfo: OptionsInfo): Set<string> {\n if (!state.components.x.selectorStates.length || !state.components.y.selectorStates.length) {\n return new Set<string>();\n }\n const sourceIdX = state.components.x.selectorStates[0].selectedSource;\n const sourceIdY = state.components.y.selectorStates[0].selectedSource;\n const dataX = optionsInfo.get(sourceIdX);\n const dataY = optionsInfo.get(sourceIdY);\n if (!dataX || !dataY || dataX.kind !== 'column' || dataY.kind !== 'column') {\n return new Set<string>();\n }\n const axesX = dataX.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const axesY = dataY.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const hangingX = axesX.filter(axisKey => !axesY.some(id => id === axisKey));\n const hangingY = axesY.filter(axisKey => !axesX.some(id => id === axisKey));\n\n if (hangingX.length && hangingY.length) {\n return new Set<string>([...hangingX, ...hangingY])\n }\n return new Set<string>();\n }\n\n async createDataByColumns(store: DataStore, state: ScatterplotUmapUIState): Promise<PlotDataAndSettings['data']> {\n const xColumnIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yColumnIdString = state.components.y.selectorStates[0]?.selectedSource;\n if (!xColumnIdString || !yColumnIdString) {\n throw Error('X or Y column is not valid');\n }\n const xId = columnOrAxisIdFromString(xColumnIdString);\n const yId = columnOrAxisIdFromString(yColumnIdString);\n if (!xId || !yId) {\n throw Error('X or Y column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n const multipliesByMap = await createMultipliesByMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const parentSources = [xId, yId].filter(isColumnId).map(item => item.toCanonicalString());\n if (parentSources.length === 0) {\n throw Error('One of X and Y should be a column');\n }\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n\n const primarySources = [xId, yId, ...filterColumns];\n const secondarySources: (ColumnId | AxisId)[] = [];\n const linkerColumns: ColumnId[] = [];\n\n for (const { selectedSource } of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource,\n ));\n }\n\n const inputs = [\n state.components.grouping,\n state.components.facetBy,\n state.components.tooltipContent,\n state.components.label,\n state.components.highlight,\n state.components.size,\n ];\n for (const input of inputs) {\n for (const { selectedSource } of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [xId, yId, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n false\n );\n\n [...primarySources, ...secondarySources].forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item) ? data.columnsData[key] : data.axesData[key];\n });\n\n if (state.components.highlight.selectorStates.length) {\n dataByColumns.values['highlight'] = createHighlightColumn(state.components.highlight.selectorStates, data) as PValue[];\n }\n\n return {\n byColumns: dataByColumns,\n axesData: data.axesData\n };\n }\n\n async createChartSettings(store: DataStore, state: ScatterplotUmapUIState): Promise<Record<string, unknown>> {\n const xIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yIdString = state.components.y.selectorStates[0]?.selectedSource;\n const xIdWithQ = xIdString ? columnOrAxisIdFromString(xIdString) : null;\n const yIdWithQ = yIdString ? columnOrAxisIdFromString(yIdString) : null;\n if (!xIdString || !yIdString || !xIdWithQ || !yIdWithQ || (!isColumnId(xIdWithQ) && !isColumnId(yIdWithQ))) {\n throw Error('Empty or invalid required data');\n }\n\n const parentSources = [xIdWithQ, yIdWithQ].filter(isColumnId).map(item => item.toCanonicalString());\n const x = {\n type: 'column',\n value: xIdString,\n label: await getColumnOrAxisLabel(store, xIdString, parentSources),\n };\n const y = {\n type: 'column',\n value: yIdString,\n label: await getColumnOrAxisLabel(store, yIdString, parentSources),\n };\n const keyColumn = {\n type: 'column',\n value: 'key',\n };\n const facetBy = await Promise.all(\n state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n }))\n );\n const allGroupingIds = lodash.uniq([\n ...state.components.grouping.selectorStates.map(s => s.selectedSource),\n ...state.components.size.selectorStates.map(s => s.selectedSource),\n ]);\n const grouping = await Promise.all(\n allGroupingIds.map(async idString => {\n return {\n columnName: {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, idString, parentSources)) || idString,\n value: idString,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, idString, parentSources))?.toCanonicalString() ??\n idString,\n }\n }\n })\n );\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: getFormat(spec)\n };\n })\n );\n\n let label;\n if (state.components.label.selectorStates.length) {\n const source = state.components.label.selectorStates[0].selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n label = {\n type: 'column',\n value: source,\n label: await getColumnOrAxisLabel(store, source, parentSources),\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: getFormat(spec)\n };\n }\n\n let highlight;\n if (state.components.highlight.selectorStates.length) {\n highlight = {\n type: 'column',\n value: 'highlight'\n }\n }\n return {\n type: 'scatterplot-umap',\n x,\n y,\n keyColumn,\n facetBy,\n grouping,\n label,\n highlight,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialScatterplotUmapState","ScatterplotUmapStateController","ControllerBase","ComponentController","__publicField","state","optionsInfo","sourceIdX","sourceIdY","dataX","dataY","axesX","s","AxisId","axesY","hangingX","axisKey","id","hangingY","store","xColumnIdString","_a","yColumnIdString","_b","xId","columnOrAxisIdFromString","yId","dataByColumns","canonicalize","linkerMap","createLinkerMap","multipliesByMap","createMultipliesByMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","isColumnId","parentSources","item","parentAxesList","getAxesSpecsFromSources","primarySources","secondarySources","linkerColumns","selectedSource","getLinkerColumnsForSource","inputs","input","labelsColumnId","getColumnOrAxisValueLabelsId","data","key","createHighlightColumn","xIdString","yIdString","xIdWithQ","yIdWithQ","x","getColumnOrAxisLabel","y","keyColumn","facetBy","selectorState","allGroupingIds","lodash","grouping","idString","tooltipContent","source","spec","getColumnOrAxisSpec","getFormat","label","_c","highlight"],"mappings":"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","x_google_ignoreList":[0]}