@milaboratories/graph-maker 1.1.142 → 1.1.144

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 (147) hide show
  1. package/dist/GraphMaker/components/ReorderForm.vue.d.ts +15 -0
  2. package/dist/GraphMaker/components/ReorderForm.vue.d.ts.map +1 -0
  3. package/dist/GraphMaker/components/ReorderForm.vue.js +43 -0
  4. package/dist/GraphMaker/components/ReorderForm.vue.js.map +1 -0
  5. package/dist/GraphMaker/components/ReorderForm.vue2.js +5 -0
  6. package/dist/GraphMaker/components/ReorderForm.vue2.js.map +1 -0
  7. package/dist/GraphMaker/constantsCommon.d.ts +15 -0
  8. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  9. package/dist/GraphMaker/constantsCommon.js +11 -8
  10. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  11. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  12. package/dist/GraphMaker/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.d.ts.map +1 -1
  13. package/dist/GraphMaker/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js +305 -172
  14. package/dist/GraphMaker/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js.map +1 -1
  15. package/dist/GraphMaker/index.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/index.vue.js +33 -33
  17. package/dist/GraphMaker/index.vue.js.map +1 -1
  18. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +3 -3
  19. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  20. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts +9 -9
  21. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
  22. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +5 -11
  23. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  24. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +3 -3
  25. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  26. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.d.ts +1 -1
  27. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +31 -5
  28. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
  29. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +56 -53
  30. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  31. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +1 -7
  32. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.map +1 -1
  33. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +13 -13
  34. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
  35. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.d.ts +6 -4
  36. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.d.ts.map +1 -1
  37. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.js +42 -13
  38. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.js.map +1 -1
  39. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  40. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +48 -44
  41. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
  42. package/dist/node_modules/@milaboratories/miplots4/dist/{discrete/components → common}/BandAxis.js +3 -3
  43. package/dist/node_modules/@milaboratories/miplots4/dist/common/BandAxis.js.map +1 -0
  44. package/dist/node_modules/@milaboratories/miplots4/dist/common/ContinuousGrid.js.map +1 -1
  45. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/ChartRenderer.js +14 -14
  46. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/ChartRenderer.js +197 -270
  47. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/ChartRenderer.js.map +1 -1
  48. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +9 -9
  49. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js +1 -1
  50. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js.map +1 -1
  51. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Grid.js.map +1 -1
  52. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +11 -11
  53. package/dist/node_modules/@milaboratories/miplots4/dist/histogram/ChartRenderer.js +1 -1
  54. package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-scale/src/band.js +44 -34
  55. package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-scale/src/band.js.map +1 -1
  56. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ChartRenderer.js +272 -195
  57. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ChartRenderer.js.map +1 -1
  58. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ScatterplotSettingsImpl.js +23 -23
  59. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  60. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Chart.js +54 -50
  61. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Chart.js.map +1 -1
  62. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartAxis.js +32 -28
  63. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartAxis.js.map +1 -1
  64. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  65. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  66. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTrendsData.js +29 -26
  67. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  68. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartsGroup.js +44 -41
  69. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartsGroup.js.map +1 -1
  70. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Grid.js +31 -27
  71. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Grid.js.map +1 -1
  72. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/dots.js.map +1 -1
  73. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/getLayersData.js +29 -18
  74. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/getLayersData.js.map +1 -1
  75. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/index.js +71 -57
  76. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/index.js.map +1 -1
  77. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/linearRegression.js.map +1 -1
  78. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/isNumericScale.js +11 -0
  79. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/isNumericScale.js.map +1 -0
  80. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/ChartRenderer.js +10 -10
  81. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  82. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  83. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js +6 -6
  84. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  85. package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js +35 -25
  86. package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js.map +1 -1
  87. package/dist/node_modules/@milaboratories/miplots4/dist/types/dendro.js +3 -3
  88. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +37 -37
  89. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
  90. package/dist/node_modules/@milaboratories/miplots4/dist/types/heatmap.js +6 -6
  91. package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot-umap.js +7 -7
  92. package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot-umap.js.map +1 -1
  93. package/dist/node_modules/@milaboratories/miplots4/dist/utils/createMultilineDiscreteLabels.js +32 -0
  94. package/dist/node_modules/@milaboratories/miplots4/dist/utils/createMultilineDiscreteLabels.js.map +1 -0
  95. package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetRowsColumns.js +18 -0
  96. package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetRowsColumns.js.map +1 -0
  97. package/dist/node_modules/@milaboratories/miplots4/dist/utils/measureMultilineDiscreteLabels.js +63 -0
  98. package/dist/node_modules/@milaboratories/miplots4/dist/utils/measureMultilineDiscreteLabels.js.map +1 -0
  99. package/dist/node_modules/@milaboratories/miplots4/dist/{discrete/utils → utils}/splitTextByWidth.js +1 -1
  100. package/dist/node_modules/@milaboratories/miplots4/dist/utils/splitTextByWidth.js.map +1 -0
  101. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +39 -32
  102. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
  103. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +68 -62
  104. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
  105. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +5 -5
  106. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +8 -8
  107. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +3 -3
  108. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +8 -8
  109. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
  110. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +12 -9
  111. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
  112. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/{index.js → error_like_shape.js} +1 -1
  113. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js.map +1 -0
  114. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js +8 -0
  115. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js.map +1 -0
  116. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/data_types.js +63 -0
  117. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/data_types.js.map +1 -0
  118. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js +152 -0
  119. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js.map +1 -0
  120. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +189 -0
  121. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -0
  122. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/errors.js +18 -0
  123. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/errors.js.map +1 -0
  124. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/json.js +12 -0
  125. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/json.js.map +1 -0
  126. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/plid.js +7 -0
  127. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/plid.js.map +1 -0
  128. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/ref.js +8 -0
  129. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/ref.js.map +1 -0
  130. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/components/PlDataTable.js +13 -0
  131. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/components/PlDataTable.js.map +1 -0
  132. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +89 -0
  133. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js.map +1 -0
  134. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +50 -45
  135. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
  136. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +54 -50
  137. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
  138. package/package.json +4 -4
  139. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/BandAxis.js.map +0 -1
  140. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/utils/splitTextByWidth.js.map +0 -1
  141. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Axis.js +0 -59
  142. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Axis.js.map +0 -1
  143. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +0 -1
  144. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +0 -979
  145. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +0 -1
  146. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js +0 -1599
  147. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../node_modules/@milaboratories/pf-plots/src/utils.ts"],"sourcesContent":["import {getNormalizedAxesList, LinkerMap, SingleValuePredicateV2} from '@milaboratories/pl-model-common';\nimport {SelectorState} from './common';\nimport {TableOuterJoinResult} from './pframe/ColumnsProvider';\nimport type {DataStore, PValue} from './store';\nimport type {ColumnOrAxisIdString} from './spec';\nimport {isAxisId} from './spec';\nimport {AxisId, ColumnId, columnOrAxisIdFromString, isColumnId} from './spec';\nimport type {AxisData, ColumnData, InputState, SelectorStateFilter} from './common';\nimport {\n AXIS_NATURE_KEY,\n COLUMN_DOMAIN_KEY,\n COLUMN_LABEL_KEY,\n COLUMN_NAME_KEY, DISCRETE_FILTER_KEY, IS_LINKER_COLUMN,\n IS_VIRTUAL_COLUMN,\n SUBSET_FILTER_KEY,\n} from './constants';\nimport {\n AxisSpec,\n type PColumnSpec,\n type PObjectId,\n type PTableRecordSingleValueFilterV2,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport { DemoDataStore } from './demoStore';\n\nexport async function addSourceInfoToMap( // by column id / axis id, without qualifications\n store: DataStore,\n selectedIdStr: ColumnOrAxisIdString,\n label: string | undefined,\n dataMap: Map<string, ColumnData | AxisData>,\n dataAxesList: AxisSpec[],\n dataAxes: Set<ColumnOrAxisIdString>,\n fixedAxesAllowed = true,\n linkerMap: LinkerMap\n) {\n const sourceId = columnOrAxisIdFromString(selectedIdStr);\n if (isColumnId(sourceId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(sourceId);\n if (!columnSpec) {\n return;\n }\n const extraAxesIds = getNotAllowedAxes(\n columnSpec,\n dataAxesList,\n dataAxes,\n linkerMap\n ).map((axisSpec) => AxisId.fromAxisSpec(axisSpec).toCanonicalString());\n\n const extraAxesSet = new Set(extraAxesIds);\n const axesIds = columnSpec.axesSpec.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString());\n const extraAxesIndexes: Record<string, number> = {};\n if (fixedAxesAllowed) {\n axesIds.forEach((id, idx) => {\n if (extraAxesSet.has(id)) {\n extraAxesIndexes[id] = idx;\n }\n });\n }\n const columnInfo: ColumnData = {\n kind: 'column',\n name: columnSpec.name,\n label: label ?? (await getColumnOrAxisLabel(store, selectedIdStr, [])),\n type: columnSpec.valueType,\n spec: columnSpec,\n annotations: columnSpec.annotations,\n isSubsetFilter: columnSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: columnSpec.valueType === 'String' || columnSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n axesToBeFixed: extraAxesIds,\n axesToBeFixedIndexes: extraAxesIndexes,\n };\n dataMap.set(sourceId.toCanonicalString(), columnInfo);\n for (const axisSpec of columnSpec.axesSpec) {\n const axisId = AxisId.fromAxisSpec(axisSpec);\n const axisIdStr = axisId.toCanonicalString();\n if (dataMap.has(axisIdStr)) {\n continue;\n }\n const mustBeConsumed = axisMustBeConsumed(axisSpec);\n const axisInfo: AxisData = {\n kind: 'axis',\n name: axisSpec.name,\n label: await getColumnOrAxisLabel(store, axisIdStr, [selectedIdStr]),\n type: axisSpec.type,\n mustBeConsumed,\n dividable: false,\n spec: axisSpec,\n annotations: axisSpec.annotations,\n isSubsetFilter: axisSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: axisSpec.type === 'String' || axisSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n parentSources: [selectedIdStr],\n };\n dataMap.set(axisIdStr, axisInfo);\n }\n }\n}\n\nexport function getDefaultInfo(sourceIdStr: ColumnOrAxisIdString): ColumnData | AxisData {\n const item = columnOrAxisIdFromString(sourceIdStr);\n const {name, type} = item;\n if (isColumnId(item)) {\n return {\n kind: 'column',\n name: '',\n label: ' ',\n type: item.type,\n spec: {axesSpec: [], kind: 'PColumn', valueType: item.type, name},\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: item.type === 'String',\n axesToBeFixed: [],\n axesToBeFixedIndexes: {}\n };\n }\n return {\n kind: 'axis',\n name: '',\n label: ' ',\n type: type,\n spec: {type, name},\n mustBeConsumed: false,\n dividable: false,\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: type === 'String',\n parentSources: [],\n };\n}\n\nexport function getStateCopy<State extends InputState>(state: State): State {\n return {\n type: state.type,\n components: {...state.components},\n dividedAxes: {...state.dividedAxes},\n } as State;\n}\n\nexport function getFilterFromState(state: SelectorStateFilter): PTableRecordSingleValueFilterV2[] {\n const {selectedSource, type, selectedFilterRange, selectedFilterValue} = state;\n const id = columnOrAxisIdFromString(selectedSource);\n if (!id) {\n throw Error('Empty source selected');\n }\n if (type === 'range') {\n const rangeFilters = [];\n if (selectedFilterRange?.max !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'LessOrEqual',\n reference: selectedFilterRange.max\n } as SingleValuePredicateV2,\n })\n }\n if (selectedFilterRange?.min !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'GreaterOrEqual',\n reference: selectedFilterRange?.min as number,\n } as SingleValuePredicateV2,\n })\n }\n return rangeFilters;\n } else if (type === 'subset') {\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'Not',\n operand: { operator: 'IsNA' }\n } as SingleValuePredicateV2,\n },\n ]\n }\n if (typeof selectedFilterValue === 'undefined') {\n return [];\n }\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {\n type: 'column' as const,\n id: id.name as PObjectId,\n },\n predicate: {\n operator: 'Equal',\n reference:\n id.type === 'String'\n ? String(selectedFilterValue)\n : (Number(selectedFilterValue) as string | number),\n } as SingleValuePredicateV2,\n },\n ];\n}\n\nexport function getFiltersFromStates(states: SelectorStateFilter[]): PTableRecordSingleValueFilterV2[] {\n const result: PTableRecordSingleValueFilterV2[] = [];\n for (const state of states) {\n result.push(...getFilterFromState(state));\n }\n return result;\n}\n\nexport function getGlobalId(spec: PColumnSpec): string;\nexport function getGlobalId(spec: AxisSpec): string;\nexport function getGlobalId(spec: AxisSpec | PColumnSpec): string {\n if ('kind' in spec && spec.kind === 'PColumn') {\n const name = spec.name ?? spec.annotations?.[COLUMN_NAME_KEY];\n const domain = spec.domain ?? spec.annotations?.[COLUMN_DOMAIN_KEY];\n return canonicalize({name, domain})!;\n }\n const name = spec.name;\n const domain = spec.domain;\n return canonicalize({name, domain})!;\n}\n\nasync function getAxisSpecFromParents(store: DataStore, axisId: AxisId, parentSources: ColumnOrAxisIdString[]) {\n for (const parentSource of parentSources) {\n const parentId = columnOrAxisIdFromString(parentSource);\n if (isColumnId(parentId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(parentId);\n const spec = (columnSpec?.axesSpec ?? []).find(\n s => AxisId.fromAxisSpec(s).toCanonicalString() === axisId.toCanonicalString(),\n );\n if (spec) {\n return spec;\n }\n }\n }\n return null;\n}\n\nconst LABEL_COLUMN_NAME = 'pl7.app/label';\n\nexport async function getColumnOrAxisValueLabelsId(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n): Promise<ColumnId | undefined> {\n const id = columnOrAxisIdFromString(selectedSource);\n if (isColumnId(id)) {\n return undefined;\n }\n async function getAxisGlobalId(axisId: AxisId) {\n const spec = await getAxisSpecFromParents(store, axisId, parentSources);\n return spec ? getGlobalId(spec) : null;\n }\n const labelColumns = await store.pFrameProvider.getColumnsFull([], false, undefined, [LABEL_COLUMN_NAME]);\n const sourceGlobalId = await getAxisGlobalId(id);\n const labelColumn = labelColumns.find(({spec}) => {\n return spec && spec.axesSpec.length === 1 && getGlobalId(spec.axesSpec[0]) === sourceGlobalId;\n });\n return labelColumn ? new ColumnId({name: labelColumn.columnId, type: labelColumn.spec.valueType}) : undefined;\n}\n\nexport async function getColumnOrAxisSpec(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const selectedId = columnOrAxisIdFromString(selectedSource);\n const labelsColumn = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n\n let spec: AxisSpec | PColumnSpec | null;\n if (isColumnId(selectedId)) {\n spec = await store.pFrameProvider.getColumnSpecById(labelsColumn ?? selectedId);\n } else {\n spec = labelsColumn\n ? await store.pFrameProvider.getColumnSpecById(labelsColumn)\n : await getAxisSpecFromParents(store, selectedId, parentSources);\n }\n return spec;\n}\n\nexport async function getColumnOrAxisLabel(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const spec = await getColumnOrAxisSpec(store, selectedSource, parentSources);\n if (!spec) {\n return '';\n }\n const label = spec.annotations?.[COLUMN_LABEL_KEY] ?? spec.name;\n return store.labelsModifier(spec.name, label);\n}\n\nexport function axisMustBeConsumed(spec: AxisSpec) {\n const axisNature = spec.annotations?.[AXIS_NATURE_KEY]?.toLowerCase();\n return Boolean(axisNature) && axisNature !== 'homogenous' && axisNature !== 'homogeneous';\n}\n\nexport function checkSourceBySpecForFilters(spec: PColumnSpec | AxisSpec) {\n //const type = 'kind' in spec && spec.kind === 'PColumn' ? spec.valueType : spec.type;\n if (spec.annotations?.[SUBSET_FILTER_KEY] === 'true') {\n return true;\n }\n if (spec.annotations?.[DISCRETE_FILTER_KEY] === 'true') {\n return true;\n }\n //return type === 'Double' || type === 'Float' || type === 'Int' || type === 'Long'\n return true;\n}\n\nexport function dataColumnPredicateDefault(spec: PColumnSpec) {\n return !spec.name.includes('metadata') && !(spec.annotations?.[IS_VIRTUAL_COLUMN] === 'true') && !(spec.annotations?.[SUBSET_FILTER_KEY] === 'true');\n}\n\nexport async function getAxesSpecsFromSources(store:DataStore, idStrs: ColumnOrAxisIdString[]):Promise<AxisSpec[]>{\n const set = new Set<ColumnOrAxisIdString>();\n const result:AxisSpec[] = [];\n for(const idStr of idStrs) {\n const id = columnOrAxisIdFromString(idStr);\n if (isColumnId(id)) {\n const spec = await store.pFrameProvider.getColumnSpecById(id);\n if (!spec) {\n continue;\n }\n spec.axesSpec.forEach(axisSpec => {\n const id = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n if (!set.has(id)) {\n set.add(id);\n result.push(axisSpec);\n }\n })\n }\n }\n return result;\n}\n\nexport async function createLinkerMap(store: DemoDataStore) {\n const allLinkerColumns = await store.pFrameProvider.getColumnsFull(\n [], false, undefined, undefined,\n {[IS_LINKER_COLUMN]: 'true'},\n );\n return LinkerMap.fromColumns(allLinkerColumns);\n}\n\nexport async function getLinkerColumnsForSource(\n store: DataStore,\n linkerMap: LinkerMap,\n dataInputAxes: AxisSpec[],\n secondarySource: ColumnOrAxisIdString,\n fixedAxesOfSecondaryColumn: SelectorState['fixedAxes']\n):Promise<ColumnId[]> {\n const columnOrAxisId = columnOrAxisIdFromString(secondarySource);\n if (!isColumnId(columnOrAxisId)) {\n return [];\n }\n const secondaryColumnSpec = await store.pFrameProvider.getColumnSpecById(columnOrAxisId);\n if (!secondaryColumnSpec) {\n return [];\n }\n const allColumnAxesWithoutFixed = secondaryColumnSpec.axesSpec.filter(\n (axisSpec) => {\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !fixedAxesOfSecondaryColumn?.some(el => el.axisSource === axisId);\n });\n\n const dataInputAxesSet = new Set(dataInputAxes.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString()));\n const rightPartAxes = allColumnAxesWithoutFixed.filter((axisSpec) => { // right part from column minus 'fixedAxes'\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !dataInputAxesSet.has(axisId);\n });\n\n const from = getNormalizedAxesList(dataInputAxes);\n const to = getNormalizedAxesList(rightPartAxes);\n\n return linkerMap.getLinkerColumnsForAxes({from,to}).map(v => new ColumnId({name: v.columnId, type: v.spec.valueType}));\n}\n\nexport function getNotAllowedAxes(\n columnSpec: PColumnSpec,\n dataInputAxesList: AxisSpec[], // axes from data-input\n someset: Set<unknown>, \n linkerMap: LinkerMap, // composite linkers, without chains\n): AxisSpec[] {\n const dataInputAxesSet = new Set(dataInputAxesList.map((v) => AxisId.fromAxisSpec(v).toCanonicalString()))\n const allColumnAxes = getNormalizedAxesList(columnSpec.axesSpec);\n // remove from the column axes - axes from data inputs\n const rightPartAxes = allColumnAxes.filter(\n (axisSpec:AxisSpec) => !dataInputAxesSet.has(AxisId.fromAxisSpec(axisSpec).toCanonicalString())\n );\n\n const sourceAxes = getNormalizedAxesList(dataInputAxesList);\n const targetAxes = LinkerMap.getAxesRoots(rightPartAxes);\n\n return linkerMap.getNonLinkableAxes(sourceAxes, targetAxes);\n}\n\nexport function createHighlightColumn(highlightSelectedStates:SelectorStateFilter[], data: TableOuterJoinResult) {\n const dataLength = data.columnsData[Object.keys(data.columnsData)[0]].length;\n const highlightColumn = new Int32Array(dataLength).fill(0);\n for (let rowIdx = 0; rowIdx < dataLength; rowIdx++) {\n let res = false;\n for (let i = 0; i < highlightSelectedStates.length; i++) {\n const {selectedSource, selectedFilterValue, selectedFilterRange, type} = highlightSelectedStates[i];\n const sourceId = columnOrAxisIdFromString(selectedSource);\n const value = (isColumnId(sourceId) ? data.columnsData[selectedSource] : data.axesData[selectedSource])[rowIdx];\n if (selectedFilterValue !== undefined) {\n res = res || value === selectedFilterValue;\n }\n if (selectedFilterRange !== undefined && (selectedFilterRange.min !== undefined || selectedFilterRange.max !== undefined) && typeof value === 'number') {\n let rangeResult = true;\n if (selectedFilterRange.min !== undefined) {\n rangeResult = rangeResult && value >= selectedFilterRange.min;\n }\n if (selectedFilterRange.max !== undefined) {\n rangeResult = rangeResult && value <= selectedFilterRange.max;\n }\n res = res || rangeResult;\n }\n if (type === 'subset') {\n res = res || (value !== null && value !== undefined);\n }\n }\n if (res) {\n highlightColumn[rowIdx] = 1;\n }\n }\n return highlightColumn as unknown as PValue[];\n}\n"],"names":["addSourceInfoToMap","store","selectedIdStr","label","dataMap","dataAxesList","dataAxes","fixedAxesAllowed","linkerMap","sourceId","columnOrAxisIdFromString","isColumnId","columnSpec","extraAxesIds","getNotAllowedAxes","axisSpec","AxisId","extraAxesSet","axesIds","extraAxesIndexes","id","idx","columnInfo","getColumnOrAxisLabel","_a","SUBSET_FILTER_KEY","_b","DISCRETE_FILTER_KEY","axisIdStr","mustBeConsumed","axisMustBeConsumed","axisInfo","_c","_d","getDefaultInfo","sourceIdStr","item","name","type","getStateCopy","state","getFilterFromState","selectedSource","selectedFilterRange","selectedFilterValue","rangeFilters","isAxisId","getFiltersFromStates","states","result","getGlobalId","spec","COLUMN_NAME_KEY","domain","COLUMN_DOMAIN_KEY","canonicalize","getAxisSpecFromParents","axisId","parentSources","parentSource","parentId","s","LABEL_COLUMN_NAME","getColumnOrAxisValueLabelsId","getAxisGlobalId","labelColumns","sourceGlobalId","labelColumn","ColumnId","getColumnOrAxisSpec","selectedId","labelsColumn","COLUMN_LABEL_KEY","axisNature","AXIS_NATURE_KEY","checkSourceBySpecForFilters","dataColumnPredicateDefault","IS_VIRTUAL_COLUMN","getAxesSpecsFromSources","idStrs","set","idStr","createLinkerMap","allLinkerColumns","IS_LINKER_COLUMN","LinkerMap","getLinkerColumnsForSource","dataInputAxes","secondarySource","fixedAxesOfSecondaryColumn","columnOrAxisId","secondaryColumnSpec","allColumnAxesWithoutFixed","el","dataInputAxesSet","rightPartAxes","from","getNormalizedAxesList","to","v","dataInputAxesList","someset","sourceAxes","targetAxes","createHighlightColumn","highlightSelectedStates","data","dataLength","highlightColumn","rowIdx","res","i","value","rangeResult"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../node_modules/@milaboratories/pf-plots/src/utils.ts"],"sourcesContent":["import {getNormalizedAxesList, LinkerMap, SingleValuePredicateV2} from '@milaboratories/pl-model-common';\nimport {SelectorState} from './common';\nimport {TableOuterJoinResult} from './pframe/ColumnsProvider';\nimport type {DataStore, PValue} from './store';\nimport type {ColumnOrAxisIdString} from './spec';\nimport {isAxisId} from './spec';\nimport {AxisId, ColumnId, columnOrAxisIdFromString, isColumnId} from './spec';\nimport type {AxisData, ColumnData, InputState, SelectorStateFilter} from './common';\nimport {\n AXIS_NATURE_KEY,\n COLUMN_DOMAIN_KEY,\n COLUMN_LABEL_KEY,\n COLUMN_NAME_KEY, DISCRETE_FILTER_KEY, IS_LINKER_COLUMN,\n IS_VIRTUAL_COLUMN,\n SUBSET_FILTER_KEY,\n} from './constants';\nimport {\n AxisSpec,\n type PColumnSpec,\n type PObjectId,\n type PTableRecordSingleValueFilterV2,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport { DemoDataStore } from './demoStore';\n\nexport async function addSourceInfoToMap( // by column id / axis id, without qualifications\n store: DataStore,\n selectedIdStr: ColumnOrAxisIdString,\n label: string | undefined,\n dataMap: Map<string, ColumnData | AxisData>,\n dataAxesList: AxisSpec[],\n dataAxes: Set<ColumnOrAxisIdString>,\n fixedAxesAllowed = true,\n linkerMap: LinkerMap\n) {\n const sourceId = columnOrAxisIdFromString(selectedIdStr);\n if (isColumnId(sourceId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(sourceId);\n if (!columnSpec) {\n return;\n }\n const extraAxesIds = getNotAllowedAxes(\n columnSpec,\n dataAxesList,\n dataAxes,\n linkerMap\n ).map((axisSpec) => AxisId.fromAxisSpec(axisSpec).toCanonicalString());\n\n const extraAxesSet = new Set(extraAxesIds);\n const axesIds = columnSpec.axesSpec.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString());\n const extraAxesIndexes: Record<string, number> = {};\n if (fixedAxesAllowed) {\n axesIds.forEach((id, idx) => {\n if (extraAxesSet.has(id)) {\n extraAxesIndexes[id] = idx;\n }\n });\n }\n const columnInfo: ColumnData = {\n kind: 'column',\n name: columnSpec.name,\n label: label ?? (await getColumnOrAxisLabel(store, selectedIdStr, [])),\n type: columnSpec.valueType,\n spec: columnSpec,\n annotations: columnSpec.annotations,\n isSubsetFilter: columnSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: columnSpec.valueType === 'String' || columnSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n axesToBeFixed: extraAxesIds,\n axesToBeFixedIndexes: extraAxesIndexes,\n };\n dataMap.set(sourceId.toCanonicalString(), columnInfo);\n for (const axisSpec of columnSpec.axesSpec) {\n const axisId = AxisId.fromAxisSpec(axisSpec);\n const axisIdStr = axisId.toCanonicalString();\n if (dataMap.has(axisIdStr)) {\n continue;\n }\n const mustBeConsumed = axisMustBeConsumed(axisSpec);\n const axisInfo: AxisData = {\n kind: 'axis',\n name: axisSpec.name,\n label: await getColumnOrAxisLabel(store, axisIdStr, [selectedIdStr]),\n type: axisSpec.type,\n mustBeConsumed,\n dividable: false,\n spec: axisSpec,\n annotations: axisSpec.annotations,\n isSubsetFilter: axisSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: axisSpec.type === 'String' || axisSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n parentSources: [selectedIdStr],\n };\n dataMap.set(axisIdStr, axisInfo);\n }\n }\n}\n\nexport function getDefaultInfo(sourceIdStr: ColumnOrAxisIdString): ColumnData | AxisData {\n const item = columnOrAxisIdFromString(sourceIdStr);\n const {name, type} = item;\n if (isColumnId(item)) {\n return {\n kind: 'column',\n name: '',\n label: ' ',\n type: item.type,\n spec: {axesSpec: [], kind: 'PColumn', valueType: item.type, name},\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: item.type === 'String',\n axesToBeFixed: [],\n axesToBeFixedIndexes: {}\n };\n }\n return {\n kind: 'axis',\n name: '',\n label: ' ',\n type: type,\n spec: {type, name},\n mustBeConsumed: false,\n dividable: false,\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: type === 'String',\n parentSources: [],\n };\n}\n\nexport function getStateCopy<State extends InputState>(state: State): State {\n return {\n type: state.type,\n components: {...state.components},\n dividedAxes: {...state.dividedAxes},\n } as State;\n}\n\nexport function getFilterFromState(state: SelectorStateFilter): PTableRecordSingleValueFilterV2[] {\n const {selectedSource, type, selectedFilterRange, selectedFilterValue} = state;\n const id = columnOrAxisIdFromString(selectedSource);\n if (!id) {\n throw Error('Empty source selected');\n }\n if (type === 'range') {\n const rangeFilters = [];\n if (selectedFilterRange?.max !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'LessOrEqual',\n reference: selectedFilterRange.max\n } as SingleValuePredicateV2,\n })\n }\n if (selectedFilterRange?.min !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'GreaterOrEqual',\n reference: selectedFilterRange?.min as number,\n } as SingleValuePredicateV2,\n })\n }\n return rangeFilters;\n } else if (type === 'subset') {\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'Not',\n operand: { operator: 'IsNA' }\n } as SingleValuePredicateV2,\n },\n ]\n }\n if (typeof selectedFilterValue === 'undefined') {\n return [];\n }\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {\n type: 'column' as const,\n id: id.name as PObjectId,\n },\n predicate: {\n operator: 'Equal',\n reference:\n id.type === 'String'\n ? String(selectedFilterValue)\n : (Number(selectedFilterValue) as string | number),\n } as SingleValuePredicateV2,\n },\n ];\n}\n\nexport function getFiltersFromStates(states: SelectorStateFilter[]): PTableRecordSingleValueFilterV2[] {\n const result: PTableRecordSingleValueFilterV2[] = [];\n for (const state of states) {\n result.push(...getFilterFromState(state));\n }\n return result;\n}\n\nexport function getGlobalId(spec: PColumnSpec): string;\nexport function getGlobalId(spec: AxisSpec): string;\nexport function getGlobalId(spec: AxisSpec | PColumnSpec): string {\n if ('kind' in spec && spec.kind === 'PColumn') {\n const name = spec.name ?? spec.annotations?.[COLUMN_NAME_KEY];\n const domain = spec.domain ?? spec.annotations?.[COLUMN_DOMAIN_KEY];\n return canonicalize({name, domain})!;\n }\n const name = spec.name;\n const domain = spec.domain;\n return canonicalize({name, domain})!;\n}\n\nasync function getAxisSpecFromParents(store: DataStore, axisId: AxisId, parentSources: ColumnOrAxisIdString[]) {\n for (const parentSource of parentSources) {\n const parentId = columnOrAxisIdFromString(parentSource);\n if (isColumnId(parentId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(parentId);\n const spec = (columnSpec?.axesSpec ?? []).find(\n s => AxisId.fromAxisSpec(s).toCanonicalString() === axisId.toCanonicalString(),\n );\n if (spec) {\n return spec;\n }\n }\n }\n return null;\n}\n\nconst LABEL_COLUMN_NAME = 'pl7.app/label';\n\nexport async function getColumnOrAxisValueLabelsId(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n): Promise<ColumnId | undefined> {\n const id = columnOrAxisIdFromString(selectedSource);\n if (isColumnId(id)) {\n return undefined;\n }\n async function getAxisGlobalId(axisId: AxisId) {\n const spec = await getAxisSpecFromParents(store, axisId, parentSources);\n return spec ? getGlobalId(spec) : null;\n }\n const labelColumns = await store.pFrameProvider.getColumnsFull([], false, undefined, [LABEL_COLUMN_NAME]);\n const sourceGlobalId = await getAxisGlobalId(id);\n const labelColumn = labelColumns.find(({spec}) => {\n return spec && spec.axesSpec.length === 1 && getGlobalId(spec.axesSpec[0]) === sourceGlobalId;\n });\n return labelColumn ? new ColumnId({name: labelColumn.columnId, type: labelColumn.spec.valueType}) : undefined;\n}\n\nexport async function getColumnOrAxisSpec(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const selectedId = columnOrAxisIdFromString(selectedSource);\n const labelsColumn = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n\n let spec: AxisSpec | PColumnSpec | null;\n if (isColumnId(selectedId)) {\n spec = await store.pFrameProvider.getColumnSpecById(labelsColumn ?? selectedId);\n } else {\n spec = labelsColumn\n ? await store.pFrameProvider.getColumnSpecById(labelsColumn)\n : await getAxisSpecFromParents(store, selectedId, parentSources);\n }\n return spec;\n}\n\nexport async function getColumnOrAxisLabel(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const spec = await getColumnOrAxisSpec(store, selectedSource, parentSources);\n if (!spec) {\n return '';\n }\n const label = spec.annotations?.[COLUMN_LABEL_KEY] ?? spec.name;\n return store.labelsModifier(spec.name, label);\n}\n\nexport function axisMustBeConsumed(spec: AxisSpec) {\n const axisNature = spec.annotations?.[AXIS_NATURE_KEY]?.toLowerCase();\n return Boolean(axisNature) && axisNature !== 'homogenous' && axisNature !== 'homogeneous';\n}\n\nexport function checkSourceBySpecForFilters(spec: PColumnSpec | AxisSpec) {\n //const type = 'kind' in spec && spec.kind === 'PColumn' ? spec.valueType : spec.type;\n if (spec.annotations?.[SUBSET_FILTER_KEY] === 'true') {\n return true;\n }\n if (spec.annotations?.[DISCRETE_FILTER_KEY] === 'true') {\n return true;\n }\n //return type === 'Double' || type === 'Float' || type === 'Int' || type === 'Long'\n return true;\n}\n\nexport function dataColumnPredicateDefault(spec: PColumnSpec) {\n return !spec.name.includes('metadata') && !(spec.annotations?.[IS_VIRTUAL_COLUMN] === 'true') && !(spec.annotations?.[SUBSET_FILTER_KEY] === 'true');\n}\n\nexport async function getAxesSpecsFromSources(store:DataStore, idStrs: ColumnOrAxisIdString[]):Promise<AxisSpec[]>{\n const set = new Set<ColumnOrAxisIdString>();\n const result:AxisSpec[] = [];\n for(const idStr of idStrs) {\n const id = columnOrAxisIdFromString(idStr);\n if (isColumnId(id)) {\n const spec = await store.pFrameProvider.getColumnSpecById(id);\n if (!spec) {\n continue;\n }\n spec.axesSpec.forEach(axisSpec => {\n const id = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n if (!set.has(id)) {\n set.add(id);\n result.push(axisSpec);\n }\n })\n }\n }\n return result;\n}\n\nexport async function createLinkerMap(store: DemoDataStore) {\n const allLinkerColumns = await store.pFrameProvider.getColumnsFull(\n [], false, undefined, undefined,\n {[IS_LINKER_COLUMN]: 'true'},\n );\n return LinkerMap.fromColumns(allLinkerColumns);\n}\n\nexport async function getLinkerColumnsForSource(\n store: DataStore,\n linkerMap: LinkerMap,\n dataInputAxes: AxisSpec[],\n secondarySource: ColumnOrAxisIdString,\n fixedAxesOfSecondaryColumn: SelectorState['fixedAxes']\n):Promise<ColumnId[]> {\n const columnOrAxisId = columnOrAxisIdFromString(secondarySource);\n if (!isColumnId(columnOrAxisId)) {\n return [];\n }\n const secondaryColumnSpec = await store.pFrameProvider.getColumnSpecById(columnOrAxisId);\n if (!secondaryColumnSpec) {\n return [];\n }\n const allColumnAxesWithoutFixed = secondaryColumnSpec.axesSpec.filter(\n (axisSpec) => {\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !fixedAxesOfSecondaryColumn?.some(el => el.axisSource === axisId);\n });\n\n const dataInputAxesSet = new Set(dataInputAxes.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString()));\n const rightPartAxes = allColumnAxesWithoutFixed.filter((axisSpec) => { // right part from column minus 'fixedAxes'\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !dataInputAxesSet.has(axisId);\n });\n\n const from = getNormalizedAxesList(dataInputAxes);\n const to = getNormalizedAxesList(rightPartAxes);\n\n return linkerMap.getLinkerColumnsForAxes({from,to}).map(v => new ColumnId({name: v.columnId, type: v.spec.valueType}));\n}\n\nexport function getNotAllowedAxes(\n columnSpec: PColumnSpec,\n dataInputAxesList: AxisSpec[], // axes from data-input\n someset: Set<unknown>, \n linkerMap: LinkerMap, // composite linkers, without chains\n): AxisSpec[] {\n const dataInputAxesSet = new Set(dataInputAxesList.map((v) => AxisId.fromAxisSpec(v).toCanonicalString()))\n const allColumnAxes = getNormalizedAxesList(columnSpec.axesSpec);\n // remove from the column axes - axes from data inputs\n const rightPartAxes = allColumnAxes.filter(\n (axisSpec:AxisSpec) => !dataInputAxesSet.has(AxisId.fromAxisSpec(axisSpec).toCanonicalString())\n );\n\n const sourceAxes = getNormalizedAxesList(dataInputAxesList);\n const targetAxes = LinkerMap.getAxesRoots(rightPartAxes);\n\n return linkerMap.getNonLinkableAxes(sourceAxes, targetAxes);\n}\n\nexport function createHighlightColumn(highlightSelectedStates:SelectorStateFilter[], data: TableOuterJoinResult) {\n const dataLength = data.columnsData[Object.keys(data.columnsData)[0]].length;\n const highlightColumn = new Int32Array(dataLength).fill(0);\n for (let rowIdx = 0; rowIdx < dataLength; rowIdx++) {\n let res = false;\n for (let i = 0; i < highlightSelectedStates.length; i++) {\n const {selectedSource, selectedFilterValue, selectedFilterRange, type} = highlightSelectedStates[i];\n const sourceId = columnOrAxisIdFromString(selectedSource);\n const value = (isColumnId(sourceId) ? data.columnsData[selectedSource] : data.axesData[selectedSource])[rowIdx];\n if (selectedFilterValue !== undefined) {\n res = res || value === selectedFilterValue;\n }\n if (selectedFilterRange !== undefined && (selectedFilterRange.min !== undefined || selectedFilterRange.max !== undefined) && typeof value === 'number') {\n let rangeResult = true;\n if (selectedFilterRange.min !== undefined) {\n rangeResult = rangeResult && value >= selectedFilterRange.min;\n }\n if (selectedFilterRange.max !== undefined) {\n rangeResult = rangeResult && value <= selectedFilterRange.max;\n }\n res = res || rangeResult;\n }\n if (type === 'subset') {\n res = res || (value !== null && value !== undefined);\n }\n }\n if (res) {\n highlightColumn[rowIdx] = 1;\n }\n }\n return highlightColumn as unknown as PValue[];\n}\n"],"names":["addSourceInfoToMap","store","selectedIdStr","label","dataMap","dataAxesList","dataAxes","fixedAxesAllowed","linkerMap","sourceId","columnOrAxisIdFromString","isColumnId","columnSpec","extraAxesIds","getNotAllowedAxes","axisSpec","AxisId","extraAxesSet","axesIds","extraAxesIndexes","id","idx","columnInfo","getColumnOrAxisLabel","_a","SUBSET_FILTER_KEY","_b","DISCRETE_FILTER_KEY","axisIdStr","mustBeConsumed","axisMustBeConsumed","axisInfo","_c","_d","getDefaultInfo","sourceIdStr","item","name","type","getStateCopy","state","getFilterFromState","selectedSource","selectedFilterRange","selectedFilterValue","rangeFilters","isAxisId","getFiltersFromStates","states","result","getGlobalId","spec","COLUMN_NAME_KEY","domain","COLUMN_DOMAIN_KEY","canonicalize","getAxisSpecFromParents","axisId","parentSources","parentSource","parentId","s","LABEL_COLUMN_NAME","getColumnOrAxisValueLabelsId","getAxisGlobalId","labelColumns","sourceGlobalId","labelColumn","ColumnId","getColumnOrAxisSpec","selectedId","labelsColumn","COLUMN_LABEL_KEY","axisNature","AXIS_NATURE_KEY","checkSourceBySpecForFilters","dataColumnPredicateDefault","IS_VIRTUAL_COLUMN","getAxesSpecsFromSources","idStrs","set","idStr","createLinkerMap","allLinkerColumns","IS_LINKER_COLUMN","LinkerMap","getLinkerColumnsForSource","dataInputAxes","secondarySource","fixedAxesOfSecondaryColumn","columnOrAxisId","secondaryColumnSpec","allColumnAxesWithoutFixed","el","dataInputAxesSet","rightPartAxes","from","getNormalizedAxesList","to","v","dataInputAxesList","someset","sourceAxes","targetAxes","createHighlightColumn","highlightSelectedStates","data","dataLength","highlightColumn","rowIdx","res","i","value","rangeResult"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/graph-maker",
3
- "version": "1.1.142",
3
+ "version": "1.1.144",
4
4
  "type": "module",
5
5
  "main": "dist/lib.js",
6
6
  "types": "dist/lib.d.ts",
@@ -37,9 +37,9 @@
37
37
  "dependencies": {
38
38
  "@ag-grid-community/core": "^32.3.3",
39
39
  "@milaboratories/helpers": "^1.6.15",
40
- "@milaboratories/miplots4": "^1.0.134",
41
- "@milaboratories/pf-plots": "^1.1.28",
42
- "@platforma-sdk/model": "^1.39.8",
40
+ "@milaboratories/miplots4": "^1.0.135",
41
+ "@milaboratories/pf-plots": "^1.1.30",
42
+ "@platforma-sdk/model": "^1.42.21",
43
43
  "@platforma-sdk/ui-vue": "^1.39.16",
44
44
  "@types/d3-hierarchy": "^3.1.7",
45
45
  "@types/d3-scale": "^4.0.8",
@@ -1 +0,0 @@
1
- {"version":3,"file":"BandAxis.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/components/BandAxis.tsx"],"sourcesContent":["import {BLACK} from '../../constants';\nimport {TICK_OFFSET} from '../constants';\nimport React from 'react';\nimport type {ScaleBand} from 'd3-scale';\n\ntype Scale = ScaleBand<string>;\ntype Orient = 'left' | 'bottom';\n\nfunction translateX(x: number) {\n return `translate(${x},0)`;\n}\n\nfunction translateY(y: number) {\n return `translate(0,${y})`;\n}\n\ntype LabelsPosition = 'center' | '45deg' | '90deg';\n\nconst FONT_HEIGHT = 21;\nfunction getRotationTransform(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (labelsPosition === '45deg') {\n const x = orient === 'left' ? -FONT_HEIGHT / 2 : 0;\n const y = orient === 'bottom' ? FONT_HEIGHT / 2 : -FONT_HEIGHT / 2;\n return `translate(${x},${y}) rotate(-45)`;\n }\n if (labelsPosition === '90deg' && orient === 'bottom') {\n return `translate(${-FONT_HEIGHT / 2},${TICK_OFFSET + FONT_HEIGHT / 2}) rotate(-90)`;\n }\n return orient === 'bottom' ? `translate(0,${TICK_OFFSET})` : `translate(${-TICK_OFFSET},0)`;\n}\n\nfunction getDominantBaseline(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (orient === 'left' || (orient === 'bottom' && labelsPosition === '90deg')) {\n return 'central';\n }\n if (labelsPosition === 'center') {\n return 'hanging';\n }\n return 'auto';\n}\n\nfunction getTextAnchor(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (orient === 'left' || (orient === 'bottom' && labelsPosition !== 'center')) {\n return 'end';\n }\n return 'middle';\n}\n\nexport const BandAxis = ({\n scale,\n tickSize = 6,\n tickPadding = TICK_OFFSET,\n orient = 'bottom',\n labelsPosition = 'center',\n labels = {},\n offset = typeof window !== 'undefined' && window.devicePixelRatio > 1 ? 0 : 0.5,\n}: {\n scale: Scale;\n tickSize?: number;\n tickPadding?: number;\n offset?: number;\n orient?: Orient;\n labels?: Record<string, string[]>;\n labelsPosition?: 'center' | '45deg' | '90deg';\n}) => {\n function center(scale: Scale, offset: number) {\n if (scale.bandwidth) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n }\n if (scale?.round()) {\n offset = Math.round(offset);\n }\n return (d: string) => {\n const value = scale(d);\n return value === undefined ? 0 : value + offset;\n };\n }\n\n const values = scale.domain();\n const getLabel = (tick: string) => labels[tick] ?? [];\n const spacing = Math.max(tickSize, 0) + tickPadding;\n const position = center(scale.copy(), offset);\n\n const transform = orient === 'bottom' ? translateX : translateY;\n const k = orient === 'left' ? -1 : 1;\n\n const lineProps = {\n [(orient === 'left' ? 'x' : 'y') + '2']: k * tickSize,\n };\n\n const textProps = {\n [orient === 'left' ? 'x' : 'y']: k * spacing,\n };\n\n return (\n <g>\n {values.map((tick: string, i: number) => (\n <g className=\"tick\" key={i} transform={transform(position(tick) + offset)}>\n <line stroke={BLACK} {...lineProps} />\n <g transform={getRotationTransform(labelsPosition, orient)}>\n {getLabel(tick).map((line, idx) => {\n return (\n <text\n key={`${line}_${idx}`}\n fill={BLACK}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fontFamily=\"Manrope\"\n dominantBaseline={getDominantBaseline(labelsPosition, orient)}\n textAnchor={getTextAnchor(labelsPosition, orient)}\n dy={20 * idx}\n {...textProps}\n >\n {line}\n </text>\n );\n })}\n </g>\n </g>\n ))}\n </g>\n );\n};\n"],"names":["translateX","x","translateY","y","FONT_HEIGHT","getRotationTransform","labelsPosition","orient","TICK_OFFSET","getDominantBaseline","getTextAnchor","BandAxis","scale","tickSize","tickPadding","labels","offset","center","d","value","values","getLabel","tick","spacing","position","transform","k","lineProps","textProps","m","i","jsxs","jsx","BLACK","line","idx"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"splitTextByWidth.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/utils/splitTextByWidth.ts"],"sourcesContent":["import { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\n\nfunction splitWord(word:string, startLineLength:number, maxLength:number, fontSize = 14) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n // \"_\" and \"-\" symbols have priority as separation bounds, if this is not enough split by single symbols\n const parts:string[] = [];\n word\n .split(/(?=[_-])|(?<=[_-])/)\n .forEach((part) => {\n const length = textMeasurer.getTextWidth(part);\n if (length > maxLength) {\n parts.push(...part.split(''));\n } else {\n parts.push(part);\n }\n });\n let currentLine = '';\n let currentLineLength = 0;\n let i = 0;\n let firstPart = '';\n while (currentLineLength <= startLineLength) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < startLineLength) {\n currentLine += parts[i];\n firstPart = currentLine;\n i++;\n }\n currentLineLength = nextLength;\n }\n currentLine = '';\n currentLineLength = 0;\n const lines:string[] = [];\n for (i; i < parts.length; i++) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < maxLength) {\n currentLine += parts[i];\n currentLineLength = nextLength;\n } else {\n lines.push(currentLine);\n currentLine = parts[i];\n currentLineLength = textMeasurer.getTextWidth(parts[i]);\n }\n }\n return {\n firstPart,\n lines,\n lastPart: currentLine,\n lastPartLength: currentLineLength\n };\n}\n\nexport function splitTextByWidth (text:string, maxWidth: number, fontSize: number) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n if (text.trim() === '') {\n return [];\n }\n if (textMeasurer.getTextWidth(text) <= maxWidth) {\n return [text];\n }\n const words = text.split(/\\s+/);\n const result:string[] = [];\n let currentLine = '';\n let currentLineLength = 0;\n for (let i = 0; i < words.length; i++) {\n const tempLine = `${currentLine} ${words[i]}`;\n const tempLineLength = textMeasurer.getTextWidth(tempLine);\n if (tempLineLength <= maxWidth) {\n currentLine = tempLine;\n currentLineLength = tempLineLength;\n } else {\n const wordLength = textMeasurer.getTextWidth(words[i]);\n if (wordLength > maxWidth) {\n const {\n firstPart,\n lines,\n lastPart,\n lastPartLength\n } = splitWord(words[i], maxWidth - currentLineLength, maxWidth, fontSize);\n result.push(`${currentLine} ${firstPart}`);\n result.push(...lines);\n currentLine = lastPart;\n currentLineLength = lastPartLength;\n } else {\n result.push(currentLine);\n currentLine = words[i];\n currentLineLength = wordLength;\n }\n }\n }\n result.push(currentLine);\n return result.filter((line) => {\n return line.length > 0;\n });\n}\n"],"names":["splitWord","word","startLineLength","maxLength","fontSize","textMeasurer","TextMeasurer","parts","part","currentLine","currentLineLength","i","firstPart","nextLength","lines","splitTextByWidth","text","maxWidth","words","result","tempLine","tempLineLength","wordLength","lastPart","lastPartLength","line"],"mappings":";AAEA,SAASA,EAAUC,GAAaC,GAAwBC,GAAkBC,IAAW,IAAI;AACrF,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY,GAE3DG,IAAiB,CAAA;AACvBN,EAAAA,EACK,MAAM,IAAA,OAAA,oBAAoB,CAAA,EAC1B,QAAQ,CAACO,MAAS;AACAH,MAAa,aAAaG,CAAI,IAChCL,IACTI,EAAM,KAAK,GAAGC,EAAK,MAAM,EAAE,CAAC,IAE5BD,EAAM,KAAKC,CAAI;AAAA,EAEvB,CAAC;AACL,MAAIC,IAAc,IACdC,IAAoB,GACpBC,IAAI,GACJC,IAAY;AAChB,SAAOF,KAAqBR,KAAiB;AACzC,UAAMW,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AAC/DE,IAAAA,IAAaX,MACbO,KAAeF,EAAMI,CAAC,GACtBC,IAAYH,GACZE,MAEJD,IAAoBG;AAAAA,EACxB;AACAJ,MAAc,IACdC,IAAoB;AACpB,QAAMI,IAAiB,CAAA;AACvB,OAAKH,GAAGA,IAAIJ,EAAM,QAAQI,KAAK;AAC3B,UAAME,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AAC/DE,IAAAA,IAAaV,KACbM,KAAeF,EAAMI,CAAC,GACtBD,IAAoBG,MAEpBC,EAAM,KAAKL,CAAW,GACtBA,IAAcF,EAAMI,CAAC,GACrBD,IAAoBL,EAAa,aAAaE,EAAMI,CAAC,CAAC;AAAA,EAE9D;AACA,SAAO;AAAA,IACH,WAAAC;AAAAA,IACA,OAAAE;AAAAA,IACA,UAAUL;AAAAA,IACV,gBAAgBC;AAAAA,EAAA;AAExB;AAEO,SAASK,EAAkBC,GAAaC,GAAkBb,GAAkB;AAC/E,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY;AACjE,MAAIY,EAAK,WAAW;AAChB,WAAO,CAAA;AAEX,MAAIX,EAAa,aAAaW,CAAI,KAAKC;AACnC,WAAO,CAACD,CAAI;AAEhB,QAAME,IAAQF,EAAK,MAAM,KAAK,GACxBG,IAAkB,CAAA;AACxB,MAAIV,IAAc,IACdC,IAAoB;AACxB,WAASC,IAAI,GAAGA,IAAIO,EAAM,QAAQP,KAAK;AACnC,UAAMS,IAAW,GAAGX,CAAW,IAAIS,EAAMP,CAAC,CAAC,IACrCU,IAAiBhB,EAAa,aAAae,CAAQ;AACzD,QAAIC,KAAkBJ;AAClBR,UAAcW,GACdV,IAAoBW;AAAAA,SACjB;AACH,YAAMC,IAAajB,EAAa,aAAaa,EAAMP,CAAC,CAAC;AACrD,UAAIW,IAAaL,GAAU;AACvB,cAAM;AAAA,UACF,WAAAL;AAAAA,UACA,OAAAE;AAAAA,UACA,UAAAS;AAAAA,UACA,gBAAAC;AAAAA,QAAA,IACAxB,EAAUkB,EAAMP,CAAC,GAAGM,IAAWP,GAAmBO,GAAUb,CAAQ;AACxEe,QAAAA,EAAO,KAAK,GAAGV,CAAW,IAAIG,CAAS,EAAE,GACzCO,EAAO,KAAK,GAAGL,CAAK,GACpBL,IAAcc,GACdb,IAAoBc;AAAAA,MACxB;AACIL,QAAAA,EAAO,KAAKV,CAAW,GACvBA,IAAcS,EAAMP,CAAC,GACrBD,IAAoBY;AAAAA,IAE5B;AAAA,EACJ;AACA,SAAAH,EAAO,KAAKV,CAAW,GAChBU,EAAO,OAAO,CAACM,MACXA,EAAK,SAAS,CACxB;AACL;","x_google_ignoreList":[0]}
@@ -1,59 +0,0 @@
1
- import { j as n } from "../../node_modules/react/jsx-runtime.js";
2
- import { BLACK as c } from "../../constants.js";
3
- import { TICK_OFFSET as i } from "../../discrete/constants.js";
4
- import { getTicksAndFormat as k } from "../utils/getTicksAndFormat.js";
5
- function w(t) {
6
- return `translate(${t},0)`;
7
- }
8
- function F(t) {
9
- return `translate(0,${t})`;
10
- }
11
- function $(t) {
12
- return t === "bottom" ? `translate(0,${i})` : `translate(${-i},0)`;
13
- }
14
- function v(t) {
15
- return t === "bottom" ? "hanging" : "central";
16
- }
17
- function A(t) {
18
- return t === "bottom" ? "middle" : "end";
19
- }
20
- const z = ({
21
- scale: t,
22
- tickSize: a = 6,
23
- tickPadding: f = i,
24
- orient: o = "bottom",
25
- onlyPositive: l = !1,
26
- offset: d = typeof window < "u" && window.devicePixelRatio > 1 ? 0 : 0.5
27
- }) => {
28
- function u(e) {
29
- return (r) => {
30
- const m = e(r);
31
- return m === void 0 ? 0 : +m;
32
- };
33
- }
34
- const { ticks: x, format: p } = k(t, l, o === "bottom"), g = Math.max(a, 0) + f, h = u(t.copy()), b = o === "bottom" ? w : F, s = o === "left" ? -1 : 1, j = {
35
- [(o === "left" ? "x" : "y") + "2"]: s * a
36
- }, y = {
37
- [o === "left" ? "x" : "y"]: s * g
38
- };
39
- return /* @__PURE__ */ n.jsx("g", { children: x.map((e, r) => /* @__PURE__ */ n.jsxs("g", { className: "tick", transform: b(h(e) + d), children: [
40
- /* @__PURE__ */ n.jsx("line", { stroke: c, ...j }),
41
- /* @__PURE__ */ n.jsx("g", { transform: $(o), children: /* @__PURE__ */ n.jsx(
42
- "text",
43
- {
44
- fill: c,
45
- fontSize: "14px",
46
- fontWeight: "500",
47
- fontFamily: "Manrope",
48
- dominantBaseline: v(o),
49
- textAnchor: A(o),
50
- ...y,
51
- children: p(e)
52
- }
53
- ) })
54
- ] }, r)) });
55
- };
56
- export {
57
- z as Axis
58
- };
59
- //# sourceMappingURL=Axis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Axis.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/scatterplot/components/Axis.tsx"],"sourcesContent":["import {BLACK} from '../../constants';\nimport {TICK_OFFSET} from '../../discrete/constants';\nimport {getTicksAndFormat} from '../utils/getTicksAndFormat';\nimport React from 'react';\nimport type {ScaleLinear, ScaleLogarithmic} from 'd3-scale';\n\ntype Scale = ScaleLinear<number, number> | ScaleLogarithmic<number, number>;\ntype Orient = 'left' | 'bottom';\n\nfunction translateX(x: number) {\n return `translate(${x},0)`;\n}\n\nfunction translateY(y: number) {\n return `translate(0,${y})`;\n}\n\nfunction getRotationTransform(orient: 'left' | 'bottom') {\n return orient === 'bottom' ? `translate(0,${TICK_OFFSET})` : `translate(${-TICK_OFFSET},0)`;\n}\n\nfunction getDominantBaseline(orient: 'left' | 'bottom') {\n return orient === 'bottom' ? 'hanging' : 'central';\n}\n\nfunction getTextAnchor( orient: 'left' | 'bottom') {\n return orient === 'bottom' ? 'middle' : 'end';\n}\n\nexport const Axis = ({\n scale,\n tickSize = 6,\n tickPadding = TICK_OFFSET,\n orient = 'bottom',\n onlyPositive = false,\n offset = typeof window !== 'undefined' && window.devicePixelRatio > 1 ? 0 : 0.5,\n}: {\n scale: Scale;\n tickSize?: number;\n tickPadding?: number;\n offset?: number;\n orient?: Orient;\n onlyPositive?: boolean;\n}) => {\n function number(scale: Scale) {\n return (d: number) => {\n const value = scale(d);\n return value === undefined ? 0 : +value;\n };\n }\n const {ticks: values, format} = getTicksAndFormat(scale, onlyPositive, orient === 'bottom');\n const spacing = Math.max(tickSize, 0) + tickPadding,\n position = (number)(scale.copy());\n\n const transform = orient === 'bottom' ? translateX : translateY;\n const k = orient === 'left' ? -1 : 1;\n\n const lineProps = {\n [(orient === 'left' ? 'x' : 'y') + '2']: k * tickSize,\n };\n\n const textProps = {\n [orient === 'left' ? 'x' : 'y']: k * spacing,\n };\n\n return (\n <g>\n {values.map((tick: number, i: number) => (\n <g className=\"tick\" key={i} transform={transform(position(tick) + offset)}>\n <line stroke={BLACK} {...lineProps} />\n <g transform={getRotationTransform(orient)}>\n <text\n fill={BLACK}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fontFamily=\"Manrope\"\n dominantBaseline={getDominantBaseline(orient)}\n textAnchor={getTextAnchor(orient)}\n {...textProps}\n >\n {format(tick)}\n </text>\n </g>\n </g>\n ))}\n </g>\n );\n};\n"],"names":["translateX","x","translateY","y","getRotationTransform","orient","TICK_OFFSET","getDominantBaseline","getTextAnchor","Axis","scale","tickSize","tickPadding","onlyPositive","offset","number","d","value","values","format","getTicksAndFormat","spacing","position","transform","k","lineProps","textProps","o","tick","i","jsxs","jsx","BLACK"],"mappings":";;;;AASA,SAASA,EAAWC,GAAW;AAC3B,SAAO,aAAaA,CAAC;AACzB;AAEA,SAASC,EAAWC,GAAW;AAC3B,SAAO,eAAeA,CAAC;AAC3B;AAEA,SAASC,EAAqBC,GAA2B;AACrD,SAAOA,MAAW,WAAW,eAAeC,CAAW,MAAM,aAAa,CAACA,CAAW;AAC1F;AAEA,SAASC,EAAoBF,GAA2B;AACpD,SAAOA,MAAW,WAAW,YAAY;AAC7C;AAEA,SAASG,EAAeH,GAA2B;AAC/C,SAAQA,MAAW,WAAW,WAAW;AAC7C;AAEO,MAAMI,IAAO,CAAC;AAAA,EAClB,OAAAC;AAAAA,EACA,UAAAC,IAAW;AAAA,EACX,aAAAC,IAAcN;AAAAA,EACd,QAAAD,IAAS;AAAA,EACT,cAAAQ,IAAe;AAAA,EACf,QAAAC,IAAS,OAAO,SAAW,OAAe,OAAO,mBAAmB,IAAI,IAAI;AAC/E,MAOM;AACF,WAASC,EAAOL,GAAc;AAC1B,WAAO,CAACM,MAAc;AAClB,YAAMC,IAAQP,EAAMM,CAAC;AACrB,aAAOC,MAAU,SAAY,IAAI,CAACA;AAAAA,IACtC;AAAA,EACJ;AACA,QAAM,EAAC,OAAOC,GAAQ,QAAAC,MAAUC,EAAkBV,GAAOG,GAAcR,MAAW,QAAQ,GACpFgB,IAAU,KAAK,IAAIV,GAAU,CAAC,IAAIC,GACpCU,IAAYP,EAAQL,EAAM,KAAA,CAAM,GAE9Ba,IAAYlB,MAAW,WAAWL,IAAaE,GAC/CsB,IAAInB,MAAW,SAAS,KAAK,GAE7BoB,IAAY;AAAA,IACd,EAAEpB,MAAW,SAAS,MAAM,OAAO,GAAG,GAAGmB,IAAIb;AAAAA,EAAA,GAG3Ce,IAAY;AAAA,IACd,CAACrB,MAAW,SAAS,MAAM,GAAG,GAAGmB,IAAIH;AAAAA,EAAA;AAGzC,SAAAM,gBAAAA,EAAA,IACK,KAAA,EACI,UAAAT,EAAO,IAAI,CAACU,GAAcC,MACvBC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAU,QAAe,WAAWP,EAAUD,EAASM,CAAI,IAAId,CAAM,GACpE,UAAA;AAAA,IAAAiB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQC,GAAQ,GAAGP,GAAW;AAAA,IACpCM,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW3B,EAAqBC,CAAM,GACrC,UAAA0B,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAMC;AAAAA,QACN,UAAS;AAAA,QACT,YAAW;AAAA,QACX,YAAW;AAAA,QACX,kBAAkBzB,EAAoBF,CAAM;AAAA,QAC5C,YAAYG,EAAcH,CAAM;AAAA,QAC/B,GAAGqB;AAAAA,QAEH,YAAOE,CAAI;AAAA,MAAA;AAAA,IAAA,GAEpB;AAAA,EAAA,KAdqBC,CAezB,CACH,GACL;AAER;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../../../../node_modules/@milaboratories/pf-plots/node_modules/@milaboratories/pl-error-like/src/error_like_shape.ts"],"sourcesContent":["import stringify from 'json-stringify-safe';\nimport { z } from 'zod';\n\n// We want to define StandardErrorLike and PlErrorLike, it's a way to define recursive types in zod.\n// https://zod.dev/?id=recursive-types\n// We need zod to parse error strings into these objects for keeping new UI and old blocks compatible.\n\nexport const BasePlErrorLike = z.object({\n type: z.literal('PlError'),\n name: z.string(),\n message: z.string(),\n /** The message with all details needed for SDK developers. */\n fullMessage: z.string().optional(),\n stack: z.string().optional(),\n});\n\n/** Known Pl backend and ML errors. */\nexport type PlErrorLike = z.infer<typeof BasePlErrorLike> & {\n cause?: ErrorLike;\n errors?: ErrorLike[];\n};\n\nexport const PlErrorLike: z.ZodType<PlErrorLike> = BasePlErrorLike.extend({\n cause: z.lazy(() => ErrorLike).optional(),\n errors: z.lazy(() => ErrorLike.array()).optional(),\n});\n\nconst BaseStandardErrorLike = z.object({\n type: z.literal('StandardError'),\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n});\n\n/** Others unknown errors that could be thrown by the client. */\nexport type StandardErrorLike = z.infer<typeof BaseStandardErrorLike> & {\n cause?: ErrorLike;\n errors?: ErrorLike[];\n};\n\nexport const StandardErrorLike: z.ZodType<StandardErrorLike> = BaseStandardErrorLike.extend({\n cause: z.lazy(() => ErrorLike).optional(),\n errors: z.lazy(() => ErrorLike.array()).optional(),\n});\n\nexport const ErrorLike = z.union([StandardErrorLike, PlErrorLike]);\nexport type ErrorLike = z.infer<typeof ErrorLike>;\n\n/** Converts everything into ErrorLike. */\nexport function ensureErrorLike(error: unknown): ErrorLike {\n const result = ErrorShape.safeParse(error);\n\n if (result.success) {\n const err = result.data;\n\n if (err.name === 'PlQuickJSError'\n || err.name === 'PlErrorReport'\n || err.name === 'PlInternalError'\n || err.name === 'PlTengoError'\n || err.name === 'PlRunnerError'\n || err.name === 'PlMonetizationError') {\n return {\n type: 'PlError',\n name: err.name,\n message: err.message,\n fullMessage: err.fullMessage ?? undefined,\n stack: err.stack ?? undefined,\n cause: err.cause ? ensureErrorLike(err.cause) : undefined,\n errors: err.errors ? err.errors.map(ensureErrorLike) : undefined,\n };\n }\n\n return {\n type: 'StandardError',\n name: err.name,\n message: err.message,\n stack: err.stack ?? undefined,\n cause: err.cause ? ensureErrorLike(err.cause) : undefined,\n errors: err.errors ? err.errors.map(ensureErrorLike) : undefined,\n };\n }\n\n return {\n type: 'StandardError',\n name: 'Error',\n // Stringify without circular dependencies.\n // Maps (and sets?) will be converted to empty json objects,\n // if this is a problem, we should change the library,\n // but the new library must work in all QuickJS, UI and Node.js like this one.\n message: stringify(error),\n };\n}\n\n/** Tries to parse strings into ErrorLike. It's needed for keeping old blocks compatible with new UI. */\nexport function parseErrorLikeSafe(err: string): {\n success: true;\n data: ErrorLike;\n} | {\n success: false;\n error: Error;\n} {\n try {\n return ErrorLike.safeParse(JSON.parse(err));\n } catch (e) {\n return { success: false, error: new Error(`parseErrorLikeSafe: could not parse JSON: ${err}, ${String(e)}`) };\n }\n}\n\n// We want to define ErrorShape schema just to parse it above, it's a way to define recursive types in zod.\n// https://zod.dev/?id=recursive-types\n\nconst baseErrorShape = z.object({\n name: z.string(),\n message: z.string(),\n fullMessage: z.string().optional(),\n stack: z.string().optional(),\n});\n\ntype ErrorShape = z.infer<typeof baseErrorShape> & {\n cause?: ErrorShape;\n errors?: ErrorShape[];\n};\n\nconst ErrorShape: z.ZodType<ErrorShape> = baseErrorShape.extend({\n cause: z.lazy(() => ErrorShape).optional(),\n errors: z.lazy(() => ErrorShape.array()).optional(),\n});\n"],"names":["BasePlErrorLike","z","PlErrorLike","ErrorLike","BaseStandardErrorLike","StandardErrorLike","baseErrorShape","ErrorShape"],"mappings":";;AAOaA,MAAAA,IAAkBC,EAAE,OAAO;AAAA,EACtC,MAAMA,EAAE,QAAQ,SAAS;AAAA,EACzB,MAAMA,EAAE,OAAA;AAAA,EACR,SAASA,EAAE,OAAA;AAAA;AAAA,EAEX,aAAaA,EAAE,OAAA,EAAS,SAAA;AAAA,EACxB,OAAOA,EAAE,OAAA,EAAS,SAAA;AACpB,CAAC,GAQYC,IAAsCF,EAAgB,OAAO;AAAA,EACxE,OAAOC,EAAE,KAAK,MAAME,CAAS,EAAE,SAAA;AAAA,EAC/B,QAAQF,EAAE,KAAK,MAAME,EAAU,MAAA,CAAO,EAAE,SAAA;AAC1C,CAAC,GAEKC,IAAwBH,EAAE,OAAO;AAAA,EACrC,MAAMA,EAAE,QAAQ,eAAe;AAAA,EAC/B,MAAMA,EAAE,OAAA;AAAA,EACR,SAASA,EAAE,OAAA;AAAA,EACX,OAAOA,EAAE,OAAA,EAAS,SAAA;AACpB,CAAC,GAQYI,IAAkDD,EAAsB,OAAO;AAAA,EAC1F,OAAOH,EAAE,KAAK,MAAME,CAAS,EAAE,SAAA;AAAA,EAC/B,QAAQF,EAAE,KAAK,MAAME,EAAU,MAAA,CAAO,EAAE,SAAA;AAC1C,CAAC,GAEYA,IAAYF,EAAE,MAAM,CAACI,GAAmBH,CAAW,CAAC,GAkE3DI,IAAiBL,EAAE,OAAO;AAAA,EAC9B,MAAMA,EAAE,OAAA;AAAA,EACR,SAASA,EAAE,OAAA;AAAA,EACX,aAAaA,EAAE,OAAA,EAAS,SAAA;AAAA,EACxB,OAAOA,EAAE,OAAA,EAAS,SAAA;AACpB,CAAC,GAOKM,IAAoCD,EAAe,OAAO;AAAA,EAC9D,OAAOL,EAAE,KAAK,MAAMM,CAAU,EAAE,SAAA;AAAA,EAChC,QAAQN,EAAE,KAAK,MAAMM,EAAW,MAAA,CAAO,EAAE,SAAA;AAC3C,CAAC;","x_google_ignoreList":[0]}