@milaboratories/graph-maker 1.1.154 → 1.1.156

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 (64) hide show
  1. package/dist/GraphMaker/constantsCommon.d.ts +2 -0
  2. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  3. package/dist/GraphMaker/constantsCommon.js +29 -27
  4. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  5. package/dist/GraphMaker/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.d.ts.map +1 -1
  6. package/dist/GraphMaker/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js +215 -148
  7. package/dist/GraphMaker/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js.map +1 -1
  8. package/dist/GraphMaker/store.d.ts.map +1 -1
  9. package/dist/GraphMaker/store.js +59 -57
  10. package/dist/GraphMaker/store.js.map +1 -1
  11. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts +5 -0
  12. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
  13. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +1 -0
  14. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  15. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +5 -0
  16. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  17. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +24 -24
  18. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  19. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +2 -0
  20. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
  21. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +2 -0
  22. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.map +1 -1
  23. package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +22 -22
  24. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/ChartRenderer.js +160 -156
  25. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/ChartRenderer.js.map +1 -1
  26. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/DendroSettingsImpl.js +31 -27
  27. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/DendroSettingsImpl.js.map +1 -1
  28. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Chart.js +53 -53
  29. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Chart.js.map +1 -1
  30. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/getHierarchyData.js +30 -24
  31. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/getHierarchyData.js.map +1 -1
  32. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/index.js +78 -77
  33. package/dist/node_modules/@milaboratories/miplots4/dist/dendro/index.js.map +1 -1
  34. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js +267 -258
  35. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js.map +1 -1
  36. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/HeatmapSettingsImpl.js +59 -54
  37. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  38. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js +91 -89
  39. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js.map +1 -1
  40. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js +17 -17
  41. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js +98 -87
  42. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js.map +1 -1
  43. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js +98 -76
  44. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js.map +1 -1
  45. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateCaptionTails.js +57 -57
  46. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  47. package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js +52 -51
  48. package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js.map +1 -1
  49. package/dist/node_modules/@milaboratories/miplots4/dist/types/dendro.js +13 -8
  50. package/dist/node_modules/@milaboratories/miplots4/dist/types/dendro.js.map +1 -1
  51. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +5 -5
  52. package/dist/node_modules/@milaboratories/miplots4/dist/types/heatmap.js +19 -11
  53. package/dist/node_modules/@milaboratories/miplots4/dist/types/heatmap.js.map +1 -1
  54. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +6 -6
  55. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
  56. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +94 -91
  57. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
  58. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +2 -2
  59. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
  60. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +50 -49
  61. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
  62. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +15 -14
  63. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
  64. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue, HeatmapEventHandlers, HeatmapSettings } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsData } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n groupedCellsData: GroupedCellsData;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n } = this.settings;\n\n const groupedCellsData = getCells(\n this.data,\n xColumn,\n yColumn,\n valueColumn,\n facetBy,\n xGroupBy,\n yGroupBy,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs\n );\n const dendrogramsData = getDendrograms(groupedCellsData, dendrogramX, dendrogramY, facetSettings);\n const cellUniqValues =\n chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n }\n\n _updateAesInData() {\n return;\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n } = this.settings;\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["ChartHeatmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","HeatmapSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","xColumn","yColumn","valueColumn","xGroupBy","yGroupBy","facetBy","annotations","chartSettings","facetSettings","dendrogramX","dendrogramY","normalization","NAValueAs","prevDendrogramXColumns","_a","isColumnName","currentDendrogramXColumns","prevDendrogramYColumns","_b","currentDendrogramYColumns","compareColumnGroups","columns1","columns2","column","idx","a","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","prevData","prevKeys","keys","d","key","groupedCellsData","getCells","dendrogramsData","getDendrograms","cellUniqValues","id","aes","inheritedDendrogramAes"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue, HeatmapEventHandlers, HeatmapSettings } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsData } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n groupedCellsData: GroupedCellsData;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder\n } = this.settings;\n\n const groupedCellsData = getCells(\n this.data,\n xColumn,\n yColumn,\n valueColumn,\n facetBy,\n xGroupBy,\n yGroupBy,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n chartSettings.xAxis,\n chartSettings.yAxis,\n );\n const dendrogramsData = getDendrograms(groupedCellsData, dendrogramX, dendrogramY, facetSettings);\n const cellUniqValues =\n chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n }\n\n _updateAesInData() {\n return;\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n keysOrder,\n xColumn,\n yColumn,\n xGroupBy,\n yGroupBy,\n } = this.settings;\n const customOrder = {\n x: keysOrder[xColumn.value]?.length > 0,\n y: keysOrder[yColumn.value]?.length > 0,\n xGroup: xGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n yGroup: yGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n };\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n customOrder,\n );\n }\n}\n"],"names":["ChartHeatmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","HeatmapSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","xColumn","yColumn","valueColumn","xGroupBy","yGroupBy","facetBy","annotations","chartSettings","facetSettings","dendrogramX","dendrogramY","normalization","NAValueAs","prevDendrogramXColumns","_a","isColumnName","currentDendrogramXColumns","prevDendrogramYColumns","_b","currentDendrogramYColumns","compareColumnGroups","columns1","columns2","column","idx","a","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","prevData","prevKeys","keys","l","key","keysOrder","groupedCellsData","getCells","dendrogramsData","getDendrograms","cellUniqValues","id","aes","inheritedDendrogramAes","customOrder","v"],"mappings":";;;;;;;;AAYO,MAAMA,WAAqBC,EAAc;AAAA,EAW5C,YAAYC,GAAiBC,GAA2BC,GAAqC;AACzF,UAAMF,GAAMC,CAAQ,GAXxBE,EAAA,MAAA,UAAA,GACAA,EAAA,MAAA,iBAAgB,IAAIC,EAAAA,CAAA,GAEpBD,EAAA,6BAA2C,MAAA;AAAA,IAAA,CAAA,GAC3CA,EAAA,MAAA,kBAIW,IAAA,GAKP,KAAK,WAAW,IAAIE,EAAoBJ,CAAQ,GAC5CC,MACA,KAAK,sBAAsBA,EAAc,CAAC;AAAA,EAElD;AAAA,EAEA,MAAMI,GAAmB;AACrB,QAAI;AACA,WAAK,cAAc,KAAKA,CAAI,GAC5B,KAAK,eACL,KAAK,aAAA,GACL,KAAK,WAAW;AAAA,IACpB,SAASC,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,UAAU;AACN,SAAK,cAAc,MAAA;AAAA,EACvB;AAAA,EAEA,sBAAsBP,GAAiBC,GAA2B;AAC9D,QAAI;AACA,YAAMO,IAAmB,KAAK,UACxBC,IAAe,KAAK;AAC1B,WAAK,WAAW,IAAIJ,EAAoBJ,CAAQ,GAChD,KAAK,OAAOD,GAER,KAAK,oCAAoCQ,GAAkB,KAAK,QAAQ,KACxE,KAAK,gCAAgCC,GAAc,KAAK,IAAI,IAE5D,KAAK,YAAA,IAEL,KAAK,oBAET,KAAK,aAAA;AAAA,IACT,SAASF,GAAK;AACNA,MAAAA,aAAe,UACf,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,iBAAiBG,GAAgBC,GAAiB;AAC9C,YAAQ,KAAK,4BAA4B;AAAA,EAC7C;AAAA,EAEA,SAAiB;AACb,WAAA,KAAK,aAAA,GACEC,EAAe,KAAK,cAAc,SAAS;AAAA,EACtD;AAAA,EAEA,oCAAoCC,GAAmCZ,GAA+B;;AAClG,UAAM;AAAA,MACF,SAAAa;AAAAA,MACA,SAAAC;AAAAA,MACA,aAAAC;AAAAA,MACA,UAAAC;AAAAA,MACA,UAAAC;AAAAA,MACA,SAAAC;AAAAA,MACA,aAAAC;AAAAA,MACA,eAAAC;AAAAA,MACA,eAAAC;AAAAA,MACA,aAAAC;AAAAA,MACA,aAAAC;AAAAA,MACA,eAAAC;AAAAA,MACA,WAAAC;AAAAA,IAAA,IACAzB,GAEE0B,IAAuC,OAAO,SAAOC,IAAAf,EAAa,gBAAb,OAAA,SAAAe,EAA0B,QAAO,CAAA,CAAE,EAAE;AAAA,MAC5FC;AAAAA,IAAA,GAEEC,IAA0C,OAAO,QAAOP,KAAA,gBAAAA,EAAa,QAAO,EAAE,EAAE,OAAOM,CAAY,GACnGE,IAAuC,OAAO,SAAOC,IAAAnB,EAAa,gBAAb,OAAA,SAAAmB,EAA0B,QAAO,CAAA,CAAE,EAAE;AAAA,MAC5FH;AAAAA,IAAA,GAEEI,IAA0C,OAAO,QAAOT,KAAA,OAAA,SAAAA,EAAa,QAAO,CAAA,CAAE,EAAE,OAAOK,CAAY;AAEzG,aAASK,EAAoBC,GAAwBC,GAAwB;AACzE,aACID,EAAS,WAAWC,EAAS,UAC7BD,EAAS,KAAK,CAACE,GAAQC,MAAQD,EAAO,UAAUD,EAASE,CAAG,EAAE,KAAK;AAAA,IAE3E;AAEA,WACIzB,EAAa,QAAQ,UAAUC,EAAQ,SACvCD,EAAa,QAAQ,UAAUE,EAAQ,SACvCF,EAAa,YAAY,UAAUG,EAAY,SAC/CkB,EAAoBrB,EAAa,UAAUI,CAAQ,KACnDiB,EAAoBrB,EAAa,UAAUK,CAAQ,KACnDgB,EAAoBrB,EAAa,SAASM,CAAO,KACjDe;AAAAA,MACIrB,EAAa,YAAY,IAAI,CAAA0B,MAAKA,EAAE,WAAW;AAAA,MAC/CnB,EAAY,IAAI,CAAAmB,MAAKA,EAAE,WAAW;AAAA,IAAA,KAEtCL,EAAoBP,GAAwBG,CAAyB,KACrEI,EAAoBH,GAAwBE,CAAyB,MACnEhC,EAAS,eAAeY,EAAa,mBAClC2B,IAAA3B,EAAa,gBAAb,OAAA,SAAA2B,EAA0B,gBAAaC,IAAAxC,EAAS,gBAAT,OAAA,SAAAwC,EAAsB,eAC1DC,IAAA7B,EAAa,gBAAb,OAAA,SAAA6B,EAA0B,eAAYC,IAAA1C,EAAS,gBAAT,OAAA,SAAA0C,EAAsB,cAClE1C,EAAS,eAAeY,EAAa,mBAClC+B,IAAA/B,EAAa,gBAAb,OAAA,SAAA+B,EAA0B,gBAAaC,IAAA5C,EAAS,gBAAT,gBAAA4C,EAAsB,eAC1DC,IAAAjC,EAAa,gBAAb,gBAAAiC,EAA0B,eAAYC,IAAA9C,EAAS,gBAAT,OAAA,SAAA8C,EAAsB,aACpElC,EAAa,cAAc,cAAcQ,EAAc,aACvDR,EAAa,cAAc,YAAYS,EAAc,WACrDT,EAAa,cAAc,YAAYS,EAAc,aACrD0B,IAAAnC,EAAa,kBAAb,OAAA,SAAAmC,EAA4B,aAAWvB,KAAA,OAAA,SAAAA,EAAe,aACtDwB,IAAApC,EAAa,kBAAb,OAAA,SAAAoC,EAA4B,gBAAcxB,KAAA,OAAA,SAAAA,EAAe,cACrDZ,EAAa,cAAca;AAAAA,EAEvC;AAAA,EAEA,gCAAgCwB,GAAqBlD,GAAiB;AAClE,UAAMmD,IAAW,OAAO,KAAKD,EAAS,IAAI,GACpCE,IAAO,OAAO,KAAKpD,EAAK,IAAI;AAClC,WACIkD,EAAS,OAAOlD,EAAK,MACrBmD,EAAS,WAAWC,EAAK,UACzBD,EAAS,KAAK,CAAAE,MAAA;;AAAO,aAAAH,EAAS,KAAKI,CAAG,EAAE,aAAW1B,IAAA5B,EAAK,KAAKsD,CAAG,MAAb,OAAA,SAAA1B,EAAgB;AAAA,IAAA,CAAM;AAAA,EAEjF;AAAA,EAEA,cAAc;AACV,UAAM;AAAA,MACF,SAAAd;AAAAA,MACA,SAAAC;AAAAA,MACA,aAAAC;AAAAA,MACA,UAAAC;AAAAA,MACA,UAAAC;AAAAA,MACA,SAAAC;AAAAA,MACA,eAAAE;AAAAA,MACA,eAAAC;AAAAA,MACA,aAAAF;AAAAA,MACA,aAAAG;AAAAA,MACA,aAAAC;AAAAA,MACA,eAAAC;AAAAA,MACA,WAAAC;AAAAA,MACA,WAAA6B;AAAAA,IAAA,IACA,KAAK,UAEHC,IAAmBC;AAAAA,MACrB,KAAK;AAAA,MACL3C;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAG;AAAAA,MACAF;AAAAA,MACAC;AAAAA,MACAE;AAAAA,MACAG;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACA6B;AAAAA,MACAlC,EAAc;AAAA,MACdA,EAAc;AAAA,IAAA,GAEZqC,IAAkBC,EAAeH,GAAkBjC,GAAaC,GAAaF,CAAa,GAC1FsC,IACFvC,EAAc,cAAc,aAAa,KAAK,KAAK,oBAAoBL,EAAY,KAAK,IAAI,CAAA;AAEhG,SAAK,iBAAiB;AAAA,MAClB,kBAAAwC;AAAAA,MACA,iBAAAE;AAAAA,MACA,gBAAAE;AAAAA,IAAA;AAAA,EAER;AAAA,EAEA,mBAAmB;AAAA,EAEnB;AAAA,EAEA,eAAe;;AACX,QAAI,CAAC,KAAK;AACN;AAEJ,UAAM;AAAA,MACF,IAAAC;AAAAA,MACA,aAAA7C;AAAAA,MACA,eAAAK;AAAAA,MACA,eAAAC;AAAAA,MACA,KAAAwC;AAAAA,MACA,aAAA1C;AAAAA,MACA,aAAAG;AAAAA,MACA,aAAAC;AAAAA,MACA,wBAAAuC;AAAAA,MACA,eAAAtC;AAAAA,MACA,WAAA8B;AAAAA,MACA,SAAAzC;AAAAA,MACA,SAAAC;AAAAA,MACA,UAAAE;AAAAA,MACA,UAAAC;AAAAA,IAAA,IACA,KAAK,UACH8C,IAAc;AAAA,MAChB,KAAGpC,IAAA2B,EAAUzC,EAAQ,KAAK,MAAvB,OAAA,SAAAc,EAA0B,UAAS;AAAA,MACtC,KAAGI,IAAAuB,EAAUxC,EAAQ,KAAK,MAAvB,OAAA,SAAAiB,EAA0B,UAAS;AAAA,MACtC,QAAQf,EAAS,KAAK,CAACgD,MAAA;;AAAM,iBAAArC,IAAA2B,EAAUU,EAAE,KAAK,MAAjB,OAAA,SAAArC,EAAoB,UAAS;AAAA,MAAA,CAAC;AAAA,MAC3D,QAAQV,EAAS,KAAK,CAAC+C,MAAA;;AAAM,iBAAArC,IAAA2B,EAAUU,EAAE,KAAK,MAAjB,OAAA,SAAArC,EAAoB,UAAS;AAAA,MAAA,CAAC;AAAA,IAAA;AAE/D,SAAK,cAAc;AAAA,MACf,KAAK;AAAA,MACLiC;AAAAA,MACAxC;AAAAA,MACAC;AAAAA,MACAwC;AAAAA,MACA,KAAK,eAAe;AAAA,MACpB1C;AAAAA,MACAJ;AAAAA,MACAO;AAAAA,MACAC;AAAAA,MACA,KAAK,eAAe;AAAA,MACpBuC;AAAAA,MACA,KAAK,eAAe;AAAA,MACpBtC;AAAAA,MACA,KAAK;AAAA,MACLuC;AAAAA,IAAA;AAAA,EAER;AACJ;","x_google_ignoreList":[0]}
@@ -1,99 +1,99 @@
1
1
  import { MIN_STEP_FOR_VISIBLE_LABELS as I } from "../constants.js";
2
2
  const d = Math.cos(Math.PI / 4);
3
- function E(e, p, n, c, u, x, s, M, B, K) {
4
- const f = x[e], T = f > I;
5
- let l = 0;
6
- return p.forEach((i) => {
7
- const y = u(e, i);
8
- if (y.length === 0)
3
+ function E(e, M, x, c, p, i, s, B, K, T) {
4
+ const l = i[e], b = l > I;
5
+ let u = 0;
6
+ return M.forEach((y) => {
7
+ const a = p(e, y);
8
+ if (a.length === 0)
9
9
  return 0;
10
- const a = y.length * f / 2, o = M ? K.getTextWidth(n[i] ?? i) * d - a - s(y[0]) : 0, G = B && T ? p.reduce((L, h) => {
11
- const b = c[h];
12
- return Math.max(L, K.getTextWidth(b) * d - f / 2 - s(h));
10
+ const o = a.length * l / 2, r = B ? T.getTextWidth(x[y] ?? y) * d - o - s(a[0]) : 0, L = K && b ? a.reduce((f, h) => {
11
+ const G = c[h];
12
+ return Math.max(f, T.getTextWidth(G) * d - l / 2 - s(h));
13
13
  }, 0) : 0;
14
- l = Math.max(l, o, G);
15
- }), l;
14
+ u = Math.max(u, r, L);
15
+ }), u;
16
16
  }
17
- function g(e, p, n, c, u, x) {
18
- const { facetKeys: s, xGroupKeys: M, yGroupKeys: B, xKeysByGroups: K, yKeysByGroups: f, xLabels: T, yLabels: l, xGroupLabels: i, yGroupLabels: y } = u.meta;
19
- let a = 0, o = 0;
20
- const G = e.xGroupLabels === 45, L = e.xAxisLabels === 45;
21
- if (G || L)
22
- if (!p.sharedX)
17
+ function g(e, M, x, c, p, i) {
18
+ const { facetKeys: s, xGroupKeys: B, yGroupKeys: K, xKeysByGroups: T, yKeysByGroups: l, xLabels: b, yLabels: u, xGroupLabels: y, yGroupLabels: a } = p.meta;
19
+ let o = 0, r = 0;
20
+ const L = e.xGroupLabels === 45, f = e.xAxisLabels === 45;
21
+ if (L || f)
22
+ if (!M.sharedX)
23
23
  s.forEach((t) => {
24
- a = Math.max(
24
+ o = Math.max(
25
25
  E(
26
26
  t,
27
- M,
28
- i,
29
- T,
30
- (m, r) => u.facets[m].xKeysByGroups[r],
27
+ B,
28
+ y,
29
+ b,
30
+ (m, n) => p.facets[m].xKeysByGroups[n],
31
31
  c.x,
32
- n.x[t],
33
- G,
32
+ x.x[t],
34
33
  L,
35
- x
34
+ f,
35
+ i
36
36
  ),
37
- a
37
+ o
38
38
  );
39
39
  });
40
40
  else {
41
41
  const t = s[0];
42
- a = Math.max(
42
+ o = Math.max(
43
43
  E(
44
44
  t,
45
- M,
46
- i,
47
- T,
48
- (m, r) => K[r],
45
+ B,
46
+ y,
47
+ b,
48
+ (m, n) => T[n],
49
49
  c.x,
50
- n.x[t],
51
- G,
50
+ x.x[t],
52
51
  L,
53
- x
52
+ f,
53
+ i
54
54
  ),
55
- a
55
+ o
56
56
  );
57
57
  }
58
- const h = e.yGroupLabels === 45, b = e.yAxisLabels === 45;
59
- if (h || b)
60
- if (!p.sharedY)
58
+ const h = e.yGroupLabels === 45, G = e.yAxisLabels === 45;
59
+ if (h || G)
60
+ if (!M.sharedY)
61
61
  s.forEach((t) => {
62
- o = Math.max(
62
+ r = Math.max(
63
63
  E(
64
64
  t,
65
- B,
66
- y,
67
- l,
68
- (m, r) => u.facets[m].yKeysByGroups[r],
65
+ K,
66
+ a,
67
+ u,
68
+ (m, n) => p.facets[m].yKeysByGroups[n],
69
69
  c.y,
70
- n.y[t],
70
+ x.y[t],
71
71
  h,
72
- b,
73
- x
72
+ G,
73
+ i
74
74
  ),
75
- o
75
+ r
76
76
  );
77
77
  });
78
78
  else {
79
79
  const t = s[0];
80
- o = Math.max(
80
+ r = Math.max(
81
81
  E(
82
82
  t,
83
- B,
84
- y,
85
- l,
86
- (m, r) => f[r],
83
+ K,
84
+ a,
85
+ u,
86
+ (m, n) => l[n],
87
87
  c.y,
88
- n.y[t],
88
+ x.y[t],
89
89
  h,
90
- b,
91
- x
90
+ G,
91
+ i
92
92
  ),
93
- o
93
+ r
94
94
  );
95
95
  }
96
- return { xCaptionTail: a, yCaptionTail: o };
96
+ return { xCaptionTail: o, yCaptionTail: r };
97
97
  }
98
98
  export {
99
99
  g as calculateCaptionTails
@@ -1 +1 @@
1
- {"version":3,"file":"calculateCaptionTails.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/utils/calculateCaptionTails.ts"],"sourcesContent":["import type { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { ChartsScales, LabelAngles } from '../components/types';\nimport { MIN_STEP_FOR_VISIBLE_LABELS } from '../constants';\nimport type { GroupedCellsData } from '../getCells';\nimport type { HeatmapSettingsImpl } from '../HeatmapSettingsImpl';\n\nconst COS_PI_4 = Math.cos(Math.PI / 4);\nfunction getTailByFacetKey (\n facetKey: string,\n groupKeys: string[],\n groupLabels: Record<string, string>,\n valueLabels: Record<string, string>,\n getKeysInGroup: (facetKey:string, groupKey:string) => string[],\n steps: Record<string, number>,\n scale: (v:string) => number,\n groupTitleInclined: boolean,\n labelTitleInclined: boolean,\n textMeasurer: TextMeasurer\n): number {\n const step = steps[facetKey];\n const labelsVisible = step > MIN_STEP_FOR_VISIBLE_LABELS;\n\n let maxTail = 0;\n groupKeys.forEach((groupKey) => {\n const keysInGroup = getKeysInGroup(facetKey, groupKey);\n if (keysInGroup.length === 0) {\n return 0;\n }\n const groupHalfWidth = (keysInGroup.length * step) / 2;\n const groupTail = groupTitleInclined\n ? textMeasurer.getTextWidth(groupLabels[groupKey] ?? groupKey) * COS_PI_4 - groupHalfWidth - scale(keysInGroup[0])\n : 0;\n const labelTail = labelTitleInclined && labelsVisible\n ? groupKeys.reduce((res, key) => {\n const label = valueLabels[key];\n return Math.max(res, textMeasurer.getTextWidth(label) * COS_PI_4 - step / 2 - scale(key));\n }, 0)\n : 0;\n maxTail = Math.max(maxTail, groupTail, labelTail);\n });\n return maxTail;\n}\n\nexport function calculateCaptionTails(\n labelAngles: LabelAngles,\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n scales: ChartsScales,\n steps: {\n x: Record<string, number>;\n y: Record<string, number>;\n },\n groupedCells: GroupedCellsData,\n textMeasurer: TextMeasurer\n): {xCaptionTail: number; yCaptionTail: number} {\n const {facetKeys, xGroupKeys, yGroupKeys, xKeysByGroups, yKeysByGroups, xLabels, yLabels, xGroupLabels, yGroupLabels} = groupedCells.meta;\n let xCaptionTail = 0;\n let yCaptionTail = 0;\n // tails from 45deg inclined captions of groups titles/cells labels, that take place on adjacent padding\n const xGroupTitleInclined = labelAngles.xGroupLabels === 45;\n const xLabelsInclined = labelAngles.xAxisLabels === 45;\n if (xGroupTitleInclined || xLabelsInclined) {\n if (!facetSettings.sharedX) {\n facetKeys.forEach(facetKey => {\n xCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n xGroupKeys,\n xGroupLabels,\n xLabels,\n (facetKey:string, groupKey:string) => groupedCells.facets[facetKey].xKeysByGroups[groupKey],\n steps.x,\n scales.x[facetKey],\n xGroupTitleInclined,\n xLabelsInclined,\n textMeasurer\n ),\n xCaptionTail\n );\n });\n } else {\n const facetKey = facetKeys[0]; // there is no difference between facets in this case\n xCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n xGroupKeys,\n xGroupLabels,\n xLabels,\n (facetKey:string, groupKey:string) => xKeysByGroups[groupKey],\n steps.x,\n scales.x[facetKey],\n xGroupTitleInclined,\n xLabelsInclined,\n textMeasurer\n ),\n xCaptionTail\n );\n }\n }\n const yGroupTitleInclined = labelAngles.yGroupLabels === 45;\n const yLabelsInclined = labelAngles.yAxisLabels === 45;\n if (yGroupTitleInclined || yLabelsInclined) {\n if (!facetSettings.sharedY) {\n facetKeys.forEach(facetKey => {\n yCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n yGroupKeys,\n yGroupLabels,\n yLabels,\n (facetKey:string, groupKey:string) => groupedCells.facets[facetKey].yKeysByGroups[groupKey],\n steps.y,\n scales.y[facetKey],\n yGroupTitleInclined,\n yLabelsInclined,\n textMeasurer\n ),\n yCaptionTail\n );\n });\n } else {\n const facetKey = facetKeys[0]; // there is no difference between facets in this case\n yCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n yGroupKeys,\n yGroupLabels,\n yLabels,\n (facetKey:string, groupKey:string) => yKeysByGroups[groupKey],\n steps.y,\n scales.y[facetKey],\n yGroupTitleInclined,\n yLabelsInclined,\n textMeasurer\n ),\n yCaptionTail\n );\n }\n }\n return {xCaptionTail, yCaptionTail};\n}\n"],"names":["COS_PI_4","getTailByFacetKey","facetKey","groupKeys","groupLabels","valueLabels","getKeysInGroup","steps","scale","groupTitleInclined","labelTitleInclined","textMeasurer","step","labelsVisible","MIN_STEP_FOR_VISIBLE_LABELS","maxTail","groupKey","keysInGroup","groupHalfWidth","groupTail","labelTail","res","key","label","calculateCaptionTails","labelAngles","facetSettings","scales","groupedCells","facetKeys","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","xLabels","yLabels","xGroupLabels","yGroupLabels","xCaptionTail","yCaptionTail","xGroupTitleInclined","xLabelsInclined","yGroupTitleInclined","yLabelsInclined"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"calculateCaptionTails.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/utils/calculateCaptionTails.ts"],"sourcesContent":["import type { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { ChartsScales, LabelAngles } from '../components/types';\nimport { MIN_STEP_FOR_VISIBLE_LABELS } from '../constants';\nimport type { GroupedCellsData } from '../getCells';\nimport type { HeatmapSettingsImpl } from '../HeatmapSettingsImpl';\n\nconst COS_PI_4 = Math.cos(Math.PI / 4);\nfunction getTailByFacetKey (\n facetKey: string,\n groupKeys: string[],\n groupLabels: Record<string, string>,\n valueLabels: Record<string, string>,\n getKeysInGroup: (facetKey:string, groupKey:string) => string[],\n steps: Record<string, number>,\n scale: (v:string) => number,\n groupTitleInclined: boolean,\n labelTitleInclined: boolean,\n textMeasurer: TextMeasurer\n): number {\n const step = steps[facetKey];\n const labelsVisible = step > MIN_STEP_FOR_VISIBLE_LABELS;\n\n let maxTail = 0;\n groupKeys.forEach((groupKey) => {\n const keysInGroup = getKeysInGroup(facetKey, groupKey);\n if (keysInGroup.length === 0) {\n return 0;\n }\n const groupHalfWidth = (keysInGroup.length * step) / 2;\n const groupTail = groupTitleInclined\n ? textMeasurer.getTextWidth(groupLabels[groupKey] ?? groupKey) * COS_PI_4 - groupHalfWidth - scale(keysInGroup[0])\n : 0;\n const labelTail = labelTitleInclined && labelsVisible\n ? keysInGroup.reduce((res, key) => {\n const label = valueLabels[key];\n return Math.max(res, textMeasurer.getTextWidth(label) * COS_PI_4 - step / 2 - scale(key));\n }, 0)\n : 0;\n maxTail = Math.max(maxTail, groupTail, labelTail);\n });\n return maxTail;\n}\n\nexport function calculateCaptionTails(\n labelAngles: LabelAngles,\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n scales: ChartsScales,\n steps: {\n x: Record<string, number>;\n y: Record<string, number>;\n },\n groupedCells: GroupedCellsData,\n textMeasurer: TextMeasurer\n): {xCaptionTail: number; yCaptionTail: number} {\n const {facetKeys, xGroupKeys, yGroupKeys, xKeysByGroups, yKeysByGroups, xLabels, yLabels, xGroupLabels, yGroupLabels} = groupedCells.meta;\n let xCaptionTail = 0;\n let yCaptionTail = 0;\n // tails from 45deg inclined captions of groups titles/cells labels, that take place on adjacent padding\n const xGroupTitleInclined = labelAngles.xGroupLabels === 45;\n const xLabelsInclined = labelAngles.xAxisLabels === 45;\n if (xGroupTitleInclined || xLabelsInclined) {\n if (!facetSettings.sharedX) {\n facetKeys.forEach(facetKey => {\n xCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n xGroupKeys,\n xGroupLabels,\n xLabels,\n (facetKey:string, groupKey:string) => groupedCells.facets[facetKey].xKeysByGroups[groupKey],\n steps.x,\n scales.x[facetKey],\n xGroupTitleInclined,\n xLabelsInclined,\n textMeasurer\n ),\n xCaptionTail\n );\n });\n } else {\n const facetKey = facetKeys[0]; // there is no difference between facets in this case\n xCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n xGroupKeys,\n xGroupLabels,\n xLabels,\n (facetKey:string, groupKey:string) => xKeysByGroups[groupKey],\n steps.x,\n scales.x[facetKey],\n xGroupTitleInclined,\n xLabelsInclined,\n textMeasurer\n ),\n xCaptionTail\n );\n }\n }\n const yGroupTitleInclined = labelAngles.yGroupLabels === 45;\n const yLabelsInclined = labelAngles.yAxisLabels === 45;\n if (yGroupTitleInclined || yLabelsInclined) {\n if (!facetSettings.sharedY) {\n facetKeys.forEach(facetKey => {\n yCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n yGroupKeys,\n yGroupLabels,\n yLabels,\n (facetKey:string, groupKey:string) => groupedCells.facets[facetKey].yKeysByGroups[groupKey],\n steps.y,\n scales.y[facetKey],\n yGroupTitleInclined,\n yLabelsInclined,\n textMeasurer\n ),\n yCaptionTail\n );\n });\n } else {\n const facetKey = facetKeys[0]; // there is no difference between facets in this case\n yCaptionTail = Math.max(\n getTailByFacetKey(\n facetKey,\n yGroupKeys,\n yGroupLabels,\n yLabels,\n (facetKey:string, groupKey:string) => yKeysByGroups[groupKey],\n steps.y,\n scales.y[facetKey],\n yGroupTitleInclined,\n yLabelsInclined,\n textMeasurer\n ),\n yCaptionTail\n );\n }\n }\n return {xCaptionTail, yCaptionTail};\n}\n"],"names":["COS_PI_4","getTailByFacetKey","facetKey","groupKeys","groupLabels","valueLabels","getKeysInGroup","steps","scale","groupTitleInclined","labelTitleInclined","textMeasurer","step","labelsVisible","MIN_STEP_FOR_VISIBLE_LABELS","maxTail","groupKey","keysInGroup","groupHalfWidth","groupTail","labelTail","res","key","label","calculateCaptionTails","labelAngles","facetSettings","scales","groupedCells","facetKeys","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","xLabels","yLabels","xGroupLabels","yGroupLabels","xCaptionTail","yCaptionTail","xGroupTitleInclined","xLabelsInclined","yGroupTitleInclined","yLabelsInclined"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,5 +1,5 @@
1
- import e from "../node_modules/zod/lib/index.js";
2
- const h = e.union([e.string(), e.number(), e.null()]), t = [
1
+ import o from "../node_modules/zod/lib/index.js";
2
+ const h = o.union([o.string(), o.number(), o.null()]), t = [
3
3
  "0",
4
4
  "1",
5
5
  "2",
@@ -25,67 +25,68 @@ const h = e.union([e.string(), e.number(), e.null()]), t = [
25
25
  "23",
26
26
  "24",
27
27
  "25"
28
- ], i = e.enum(t), l = ["solid", "dashed", "dotted", "dotdash", "longdash", "twodash"], n = e.enum(l), s = ["left", "bottom", "left-bottom", "full", "empty"], d = e.enum(s), r = ["inside", "right", "top", "bottom"], S = e.enum(r), u = ["left", "center", "right"], f = e.enum(u), a = e.object({
29
- type: e.literal("column"),
30
- value: e.string(),
31
- format: e.optional(e.string()),
28
+ ], i = o.enum(t), l = ["solid", "dashed", "dotted", "dotdash", "longdash", "twodash"], n = o.enum(l), s = ["left", "bottom", "left-bottom", "full", "empty"], d = o.enum(s), r = ["inside", "right", "top", "bottom"], S = o.enum(r), u = ["left", "center", "right"], f = o.enum(u), a = o.object({
29
+ type: o.literal("column"),
30
+ value: o.string(),
31
+ format: o.optional(o.string()),
32
32
  // d3 format
33
- label: e.optional(e.string()),
34
- valueLabels: e.optional(e.string())
35
- }), c = e.object({
36
- fillColor: e.optional(e.string()),
37
- lineColor: e.optional(e.string()),
38
- lineWidth: e.optional(e.number()),
39
- lineShape: e.optional(n),
40
- dotShape: e.optional(i),
41
- dotSize: e.optional(e.number()),
42
- dotFill: e.optional(e.string())
43
- }), y = e.record(c);
44
- function A(o) {
45
- return e.object({
33
+ label: o.optional(o.string()),
34
+ valueLabels: o.optional(o.string())
35
+ }), c = o.object({
36
+ fillColor: o.optional(o.string()),
37
+ lineColor: o.optional(o.string()),
38
+ lineWidth: o.optional(o.number()),
39
+ lineShape: o.optional(n),
40
+ dotShape: o.optional(i),
41
+ dotSize: o.optional(o.number()),
42
+ dotFill: o.optional(o.string())
43
+ }), y = o.record(c);
44
+ function A(e) {
45
+ return o.object({
46
46
  columnName: a,
47
- valuesMap: e.record(o)
47
+ valuesMap: o.record(e)
48
48
  });
49
49
  }
50
- function L(o) {
51
- return e.object({
50
+ function L(e) {
51
+ return o.object({
52
52
  columnName: a,
53
- domain: e.array(e.number()),
54
- range: e.array(o),
55
- type: e.optional(e.union([e.literal("linear"), e.literal("log")]))
53
+ domain: o.array(o.number()),
54
+ range: o.array(e),
55
+ type: o.optional(o.union([o.literal("linear"), o.literal("log")]))
56
56
  });
57
57
  }
58
- function j(o) {
59
- return typeof o != "object" ? !1 : o !== null && "valuesMap" in o;
58
+ function j(e) {
59
+ return typeof e != "object" ? !1 : e !== null && "valuesMap" in e;
60
60
  }
61
- function P(o) {
62
- return typeof o != "object" ? !1 : o !== null && "domain" in o && "range" in o;
61
+ function P(e) {
62
+ return typeof e != "object" ? !1 : e !== null && "domain" in e && "range" in e;
63
63
  }
64
- const m = e.union([e.literal("center"), e.literal("45deg"), e.literal("90deg")]), p = e.object({
65
- title: e.optional(e.union([e.string(), a])),
66
- scale: e.optional(e.literal("discrete")),
67
- keys: e.optional(e.array(e.union([e.string(), e.number()]))),
68
- labels: e.optional(e.record(e.string())),
69
- showGrid: e.optional(e.boolean()),
70
- linesBetweenCategories: e.optional(e.boolean()),
71
- showTicks: e.optional(e.boolean()),
72
- labelsPosition: e.optional(m),
73
- hiddenLabels: e.optional(e.boolean())
74
- }), g = e.object({
75
- title: e.optional(e.union([e.string(), a])),
76
- scale: e.optional(e.union([e.literal("linear"), e.literal("log")])),
77
- showGrid: e.optional(e.boolean()),
78
- showTicks: e.optional(e.boolean()),
79
- significantLines: e.optional(e.array(e.number())),
80
- significantLinesStyle: e.optional(n),
81
- symmetricRange: e.optional(e.number()),
82
- upperValue: e.optional(e.number()),
83
- lowerValue: e.optional(e.number())
84
- }), T = e.union([p, g]);
64
+ const m = o.union([o.literal("center"), o.literal("45deg"), o.literal("90deg")]), p = o.object({
65
+ title: o.optional(o.union([o.string(), a])),
66
+ scale: o.optional(o.literal("discrete")),
67
+ keys: o.optional(o.array(o.union([o.string(), o.number()]))),
68
+ labels: o.optional(o.record(o.string())),
69
+ showGrid: o.optional(o.boolean()),
70
+ linesBetweenCategories: o.optional(o.boolean()),
71
+ showTicks: o.optional(o.boolean()),
72
+ labelsPosition: o.optional(m),
73
+ hiddenLabels: o.optional(o.boolean())
74
+ }), b = o.object({
75
+ title: o.optional(o.union([o.string(), a])),
76
+ scale: o.optional(o.union([o.literal("linear"), o.literal("log")])),
77
+ showGrid: o.optional(o.boolean()),
78
+ showTicks: o.optional(o.boolean()),
79
+ significantLines: o.optional(o.array(o.number())),
80
+ significantLinesStyle: o.optional(n),
81
+ symmetricRange: o.optional(o.number()),
82
+ upperValue: o.optional(o.number()),
83
+ lowerValue: o.optional(o.number()),
84
+ hiddenLabels: o.optional(o.boolean())
85
+ }), T = o.union([p, b]);
85
86
  export {
86
87
  c as AesItemSchema,
87
88
  y as AesRecordSchema,
88
- g as AxisSettingsContinuousSchema,
89
+ b as AxisSettingsContinuousSchema,
89
90
  p as AxisSettingsDiscreteSchema,
90
91
  T as AxisSettingsSchema,
91
92
  a as ColumnNameSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/types/common.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { LassoControlsState, Polygon } from '../scatterplot-umap/types';\nimport type { CategoricalAesFromColumn, ContinuousAesFromColumn } from './scatterplot';\n\nexport type DataValue = string | number | null;\nexport type Category = string;\nexport const DataValueSchema = z.union([z.string(), z.number(), z.null()]);\n\nexport type Row = Record<string, DataValue>\n\nexport type Color = string;\n\n// numbered according ggplot2 symbols, 19 (third size of black circle) is missed\nexport const POINT_SHAPE = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n '11',\n '12',\n '13',\n '14',\n '15',\n '16',\n '17',\n '18',\n '20',\n '21',\n '22',\n '23',\n '24',\n '25',\n] as const;\nexport const PointShapeSchema = z.enum(POINT_SHAPE);\nexport type PointShape = z.infer<typeof PointShapeSchema>;\n\nconst LINE_SHAPE = ['solid', 'dashed', 'dotted', 'dotdash', 'longdash', 'twodash'] as const;\nexport const LineShapeSchema = z.enum(LINE_SHAPE);\nexport type LineShape = z.infer<typeof LineShapeSchema>;\n\nconst FRAME_TYPE = ['left', 'bottom', 'left-bottom', 'full', 'empty'] as const;\nexport const FrameTypeSchema = z.enum(FRAME_TYPE);\nexport type FrameType = z.infer<typeof FrameTypeSchema>;\n\nconst LEGEND_POSITION = ['inside', 'right', 'top', 'bottom'] as const;\nexport const LegendPositionSchema = z.enum(LEGEND_POSITION);\nexport type LegendPosition = z.infer<typeof LegendPositionSchema>;\n\nexport const TITLE_POSITION = ['left', 'center', 'right'] as const;\nexport const TitlePositionSchema = z.enum(TITLE_POSITION);\nexport type TitlePosition = z.infer<typeof TitlePositionSchema>;\n\nexport const ColumnNameSchema = z.object({\n type: z.literal('column'),\n value: z.string(),\n format: z.optional(z.string()), // d3 format\n label: z.optional(z.string()),\n valueLabels: z.optional(z.string())\n});\nexport type ColumnName = z.infer<typeof ColumnNameSchema>\n\nexport type AesItem = {\n fillColor?: Color;\n lineColor?: Color;\n lineWidth?: number;\n lineShape?: LineShape;\n dotShape?: PointShape;\n dotSize?: number;\n dotFill?: Color;\n};\nexport const AesItemSchema = z.object({\n fillColor: z.optional(z.string()),\n lineColor: z.optional(z.string()),\n lineWidth: z.optional(z.number()),\n lineShape: z.optional(LineShapeSchema),\n dotShape: z.optional(PointShapeSchema),\n dotSize: z.optional(z.number()),\n dotFill: z.optional(z.string()),\n});\n\nexport const AesRecordSchema = z.record(AesItemSchema);\nexport type AesRecord = z.infer<typeof AesRecordSchema>;\n\nexport function categoricalAesMappingFromValueSchema<ValueType extends z.ZodTypeAny>(\n valueSchema: ValueType,\n) {\n return z.object({\n columnName: ColumnNameSchema,\n valuesMap: z.record(valueSchema),\n });\n}\nexport function continuousAesMappingFromValueSchema<ValueType extends z.ZodTypeAny>(\n valueSchema: ValueType,\n) {\n return z.object({\n columnName: ColumnNameSchema,\n domain: z.array(z.number()),\n range: z.array(valueSchema),\n type: z.optional(z.union([z.literal('linear'), z.literal('log')]))\n });\n}\n\nexport function isCategoricalAes<InputType extends string | number | PointShape | LineShape>(\n item: InputType | CategoricalAesFromColumn<InputType> | ContinuousAesFromColumn<InputType> | unknown\n): item is CategoricalAesFromColumn<InputType> {\n if (typeof item !== 'object') {\n return false;\n }\n return item !== null && 'valuesMap' in item;\n}\n\nexport function isContinuousAes<InputType extends string | number | PointShape | LineShape>(\n item: InputType | CategoricalAesFromColumn<InputType> | ContinuousAesFromColumn<InputType> | unknown\n): item is ContinuousAesFromColumn<InputType> {\n if (typeof item !== 'object') {\n return false;\n }\n return item !== null && 'domain' in item && 'range' in item;\n}\n\nexport const DiscreteLabelsPositionSchema = z.union([z.literal('center'), z.literal('45deg'), z.literal('90deg')]);\n\nexport const AxisSettingsDiscreteSchema = z.object({\n title: z.optional(z.union([z.string(), ColumnNameSchema])),\n scale: z.optional(z.literal('discrete')),\n keys: z.optional(z.array(z.union([z.string(), z.number()]))),\n labels: z.optional(z.record(z.string())),\n showGrid: z.optional(z.boolean()),\n linesBetweenCategories: z.optional(z.boolean()),\n showTicks: z.optional(z.boolean()),\n labelsPosition: z.optional(DiscreteLabelsPositionSchema),\n hiddenLabels: z.optional(z.boolean())\n});\nexport const AxisSettingsContinuousSchema = z.object({\n title: z.optional(z.union([z.string(), ColumnNameSchema])),\n scale: z.optional(z.union([z.literal('linear'), z.literal('log')])),\n showGrid: z.optional(z.boolean()),\n showTicks: z.optional(z.boolean()),\n significantLines: z.optional(z.array(z.number())),\n significantLinesStyle: z.optional(LineShapeSchema),\n symmetricRange: z.optional(z.number()),\n upperValue: z.optional(z.number()),\n lowerValue: z.optional(z.number()),\n});\n\nexport const AxisSettingsSchema = z.union([AxisSettingsDiscreteSchema, AxisSettingsContinuousSchema]);\n\nexport type AxisSettings = z.infer<typeof AxisSettingsSchema>\nexport type AxisSettingsDiscrete = z.infer<typeof AxisSettingsDiscreteSchema>;\nexport type AxisSettingsContinuous = z.infer<typeof AxisSettingsContinuousSchema>;\n\nexport type DiscreteLabelsPosition = z.infer<typeof DiscreteLabelsPositionSchema>;\n\nexport interface SettingsInterface {\n type: string;\n}\n\nexport type ClickEventData = {\n x: number;\n y: number;\n info: unknown;\n}\n\nexport type PolygonData = [number, number][];\n\nexport type ChartEventHandlers<T> = T;\nexport type DendroEventHandlers = ChartEventHandlers<[(d:ClickEventData) => void]>\nexport type ScatterplotEventHandlers = ChartEventHandlers<{\n onPolygonUpdate: (d:number[], p: Polygon[]) => void;\n onTooltipHintSwitch: (d:boolean) => void;\n onLassoStateChange: () => void;\n onLassoControlsStateUpdate: (v:LassoControlsState) => void;\n}>\nexport type BubbleEventHandlers = ChartEventHandlers<[(d:boolean) => void]>\nexport type DiscreteEventHandlers = ChartEventHandlers<[(d:boolean) => void]>\nexport type HeatmapEventHandlers = ChartEventHandlers<[(d:boolean) => void]>\nexport type HistogramEventHandlers = ChartEventHandlers<[(d:boolean) => void]>"],"names":["DataValueSchema","z","POINT_SHAPE","PointShapeSchema","LINE_SHAPE","LineShapeSchema","FRAME_TYPE","FrameTypeSchema","LEGEND_POSITION","LegendPositionSchema","TITLE_POSITION","TitlePositionSchema","ColumnNameSchema","AesItemSchema","AesRecordSchema","categoricalAesMappingFromValueSchema","valueSchema","continuousAesMappingFromValueSchema","isCategoricalAes","item","isContinuousAes","DiscreteLabelsPositionSchema","AxisSettingsDiscreteSchema","AxisSettingsContinuousSchema","AxisSettingsSchema"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"common.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/types/common.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { LassoControlsState, Polygon } from '../scatterplot-umap/types';\nimport type { CategoricalAesFromColumn, ContinuousAesFromColumn } from './scatterplot';\n\nexport type DataValue = string | number | null;\nexport type Category = string;\nexport const DataValueSchema = z.union([z.string(), z.number(), z.null()]);\n\nexport type Row = Record<string, DataValue>\n\nexport type Color = string;\n\n// numbered according ggplot2 symbols, 19 (third size of black circle) is missed\nexport const POINT_SHAPE = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n '11',\n '12',\n '13',\n '14',\n '15',\n '16',\n '17',\n '18',\n '20',\n '21',\n '22',\n '23',\n '24',\n '25',\n] as const;\nexport const PointShapeSchema = z.enum(POINT_SHAPE);\nexport type PointShape = z.infer<typeof PointShapeSchema>;\n\nconst LINE_SHAPE = ['solid', 'dashed', 'dotted', 'dotdash', 'longdash', 'twodash'] as const;\nexport const LineShapeSchema = z.enum(LINE_SHAPE);\nexport type LineShape = z.infer<typeof LineShapeSchema>;\n\nconst FRAME_TYPE = ['left', 'bottom', 'left-bottom', 'full', 'empty'] as const;\nexport const FrameTypeSchema = z.enum(FRAME_TYPE);\nexport type FrameType = z.infer<typeof FrameTypeSchema>;\n\nconst LEGEND_POSITION = ['inside', 'right', 'top', 'bottom'] as const;\nexport const LegendPositionSchema = z.enum(LEGEND_POSITION);\nexport type LegendPosition = z.infer<typeof LegendPositionSchema>;\n\nexport const TITLE_POSITION = ['left', 'center', 'right'] as const;\nexport const TitlePositionSchema = z.enum(TITLE_POSITION);\nexport type TitlePosition = z.infer<typeof TitlePositionSchema>;\n\nexport const ColumnNameSchema = z.object({\n type: z.literal('column'),\n value: z.string(),\n format: z.optional(z.string()), // d3 format\n label: z.optional(z.string()),\n valueLabels: z.optional(z.string())\n});\nexport type ColumnName = z.infer<typeof ColumnNameSchema>\n\nexport type AesItem = {\n fillColor?: Color;\n lineColor?: Color;\n lineWidth?: number;\n lineShape?: LineShape;\n dotShape?: PointShape;\n dotSize?: number;\n dotFill?: Color;\n};\nexport const AesItemSchema = z.object({\n fillColor: z.optional(z.string()),\n lineColor: z.optional(z.string()),\n lineWidth: z.optional(z.number()),\n lineShape: z.optional(LineShapeSchema),\n dotShape: z.optional(PointShapeSchema),\n dotSize: z.optional(z.number()),\n dotFill: z.optional(z.string()),\n});\n\nexport const AesRecordSchema = z.record(AesItemSchema);\nexport type AesRecord = z.infer<typeof AesRecordSchema>;\n\nexport function categoricalAesMappingFromValueSchema<ValueType extends z.ZodTypeAny>(\n valueSchema: ValueType,\n) {\n return z.object({\n columnName: ColumnNameSchema,\n valuesMap: z.record(valueSchema),\n });\n}\nexport function continuousAesMappingFromValueSchema<ValueType extends z.ZodTypeAny>(\n valueSchema: ValueType,\n) {\n return z.object({\n columnName: ColumnNameSchema,\n domain: z.array(z.number()),\n range: z.array(valueSchema),\n type: z.optional(z.union([z.literal('linear'), z.literal('log')]))\n });\n}\n\nexport function isCategoricalAes<InputType extends string | number | PointShape | LineShape>(\n item: InputType | CategoricalAesFromColumn<InputType> | ContinuousAesFromColumn<InputType> | unknown\n): item is CategoricalAesFromColumn<InputType> {\n if (typeof item !== 'object') {\n return false;\n }\n return item !== null && 'valuesMap' in item;\n}\n\nexport function isContinuousAes<InputType extends string | number | PointShape | LineShape>(\n item: InputType | CategoricalAesFromColumn<InputType> | ContinuousAesFromColumn<InputType> | unknown\n): item is ContinuousAesFromColumn<InputType> {\n if (typeof item !== 'object') {\n return false;\n }\n return item !== null && 'domain' in item && 'range' in item;\n}\n\nexport const DiscreteLabelsPositionSchema = z.union([z.literal('center'), z.literal('45deg'), z.literal('90deg')]);\n\nexport const AxisSettingsDiscreteSchema = z.object({\n title: z.optional(z.union([z.string(), ColumnNameSchema])),\n scale: z.optional(z.literal('discrete')),\n keys: z.optional(z.array(z.union([z.string(), z.number()]))),\n labels: z.optional(z.record(z.string())),\n showGrid: z.optional(z.boolean()),\n linesBetweenCategories: z.optional(z.boolean()),\n showTicks: z.optional(z.boolean()),\n labelsPosition: z.optional(DiscreteLabelsPositionSchema),\n hiddenLabels: z.optional(z.boolean())\n});\nexport const AxisSettingsContinuousSchema = z.object({\n title: z.optional(z.union([z.string(), ColumnNameSchema])),\n scale: z.optional(z.union([z.literal('linear'), z.literal('log')])),\n showGrid: z.optional(z.boolean()),\n showTicks: z.optional(z.boolean()),\n significantLines: z.optional(z.array(z.number())),\n significantLinesStyle: z.optional(LineShapeSchema),\n symmetricRange: z.optional(z.number()),\n upperValue: z.optional(z.number()),\n lowerValue: z.optional(z.number()),\n hiddenLabels: z.optional(z.boolean()),\n});\n\nexport const AxisSettingsSchema = z.union([AxisSettingsDiscreteSchema, AxisSettingsContinuousSchema]);\n\nexport type AxisSettings = z.infer<typeof AxisSettingsSchema>\nexport type AxisSettingsDiscrete = z.infer<typeof AxisSettingsDiscreteSchema>;\nexport type AxisSettingsContinuous = z.infer<typeof AxisSettingsContinuousSchema>;\n\nexport type DiscreteLabelsPosition = z.infer<typeof DiscreteLabelsPositionSchema>;\n\nexport interface SettingsInterface {\n type: string;\n}\n\nexport type ClickEventData = {\n x: number;\n y: number;\n info: unknown;\n}\n\nexport type PolygonData = [number, number][];\n\nexport type ChartEventHandlers<T> = T;\nexport type DendroEventHandlers = ChartEventHandlers<[(d:ClickEventData) => void]>\nexport type ScatterplotEventHandlers = ChartEventHandlers<{\n onPolygonUpdate: (d:number[], p: Polygon[]) => void;\n onTooltipHintSwitch: (d:boolean) => void;\n onLassoStateChange: () => void;\n onLassoControlsStateUpdate: (v:LassoControlsState) => void;\n}>\nexport type BubbleEventHandlers = ChartEventHandlers<[(d:boolean) => void]>\nexport type DiscreteEventHandlers = ChartEventHandlers<[(d:boolean) => void]>\nexport type HeatmapEventHandlers = ChartEventHandlers<[(d:boolean) => void]>\nexport type HistogramEventHandlers = ChartEventHandlers<[(d:boolean) => void]>"],"names":["DataValueSchema","z","POINT_SHAPE","PointShapeSchema","LINE_SHAPE","LineShapeSchema","FRAME_TYPE","FrameTypeSchema","LEGEND_POSITION","LegendPositionSchema","TITLE_POSITION","TitlePositionSchema","ColumnNameSchema","AesItemSchema","AesRecordSchema","categoricalAesMappingFromValueSchema","valueSchema","continuousAesMappingFromValueSchema","isCategoricalAes","item","isContinuousAes","DiscreteLabelsPositionSchema","AxisSettingsDiscreteSchema","AxisSettingsContinuousSchema","AxisSettingsSchema"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,11 +1,11 @@
1
1
  import o from "../node_modules/zod/lib/index.js";
2
- import { ColumnNameSchema as n, categoricalAesMappingFromValueSchema as e, continuousAesMappingFromValueSchema as a, LineShapeSchema as i, PointShapeSchema as t, LegendPositionSchema as l, TitlePositionSchema as p } from "./common.js";
3
- const r = o.enum(["discrete", "continuous", "stringSource"]), c = o.object({
2
+ import { ColumnNameSchema as n, categoricalAesMappingFromValueSchema as e, continuousAesMappingFromValueSchema as a, LineShapeSchema as t, PointShapeSchema as i, LegendPositionSchema as l, TitlePositionSchema as r } from "./common.js";
3
+ const p = o.enum(["discrete", "continuous", "stringSource"]), u = o.object({
4
4
  type: o.literal("dendro"),
5
5
  title: o.object({
6
6
  name: o.string(),
7
7
  show: o.optional(o.boolean()),
8
- position: o.optional(p)
8
+ position: o.optional(r)
9
9
  }),
10
10
  size: o.optional(
11
11
  o.object({
@@ -15,11 +15,16 @@ const r = o.enum(["discrete", "continuous", "stringSource"]), c = o.object({
15
15
  minCellWidth: o.optional(o.number()),
16
16
  minCellHeight: o.optional(o.number()),
17
17
  maxCellWidth: o.optional(o.number()),
18
- maxCellHeight: o.optional(o.number())
18
+ maxCellHeight: o.optional(o.number()),
19
+ marginTop: o.optional(o.number()),
20
+ marginBottom: o.optional(o.number()),
21
+ marginLeft: o.optional(o.number()),
22
+ marginRight: o.optional(o.number())
19
23
  })
20
24
  ),
21
25
  mode: o.optional(o.union([o.literal("normal"), o.literal("useAllNodesAsLeaves")])),
22
26
  leavesMode: o.optional(o.union([o.literal("normal"), o.literal("alignLeavesToLine")])),
27
+ leavesOrder: o.optional(o.union([o.literal("indexAsc"), o.literal("indexDesc")])),
23
28
  legend: o.optional(
24
29
  o.object({
25
30
  show: o.optional(o.boolean()),
@@ -42,7 +47,7 @@ const r = o.enum(["discrete", "continuous", "stringSource"]), c = o.object({
42
47
  heatmapAxis: o.optional(n),
43
48
  heatmapGroup: o.optional(o.array(n)),
44
49
  heatmapSettings: o.optional(o.object({
45
- valueType: o.optional(r),
50
+ valueType: o.optional(p),
46
51
  aes: o.optional(o.object({
47
52
  colorsList: o.optional(o.array(o.string())),
48
53
  colorsMap: o.optional(o.record(o.string()))
@@ -57,7 +62,7 @@ const r = o.enum(["discrete", "continuous", "stringSource"]), c = o.object({
57
62
  rootPosition: o.optional(o.union([o.literal("left"), o.literal("top")])),
58
63
  aes: o.optional(
59
64
  o.object({
60
- nodeShape: o.optional(o.union([t, e(t)])),
65
+ nodeShape: o.optional(o.union([i, e(i)])),
61
66
  nodeColor: o.optional(
62
67
  o.union([
63
68
  o.string(),
@@ -70,7 +75,7 @@ const r = o.enum(["discrete", "continuous", "stringSource"]), c = o.object({
70
75
  e(o.number()),
71
76
  a(o.number())
72
77
  ])),
73
- lineShape: o.optional(i),
78
+ lineShape: o.optional(t),
74
79
  lineColor: o.optional(o.union([
75
80
  o.string(),
76
81
  e(o.string()),
@@ -80,6 +85,6 @@ const r = o.enum(["discrete", "continuous", "stringSource"]), c = o.object({
80
85
  )
81
86
  });
82
87
  export {
83
- c as DendroSettingsSchema
88
+ u as DendroSettingsSchema
84
89
  };
85
90
  //# sourceMappingURL=dendro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dendro.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/types/dendro.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n type AesItem, type AesRecord,\n categoricalAesMappingFromValueSchema,\n ColumnNameSchema,\n continuousAesMappingFromValueSchema,\n LegendPositionSchema,\n LineShapeSchema,\n PointShapeSchema,\n TitlePositionSchema\n} from './common';\n\nconst ValueTypeSchema = z.enum(['discrete', 'continuous', 'stringSource']);\n\nexport const DendroSettingsSchema = z.object({\n type: z.literal('dendro'),\n title: z.object({\n name: z.string(),\n show: z.optional(z.boolean()),\n position: z.optional(TitlePositionSchema),\n }),\n size: z.optional(\n z.object({\n width: z.optional(z.number()),\n height: z.optional(z.number()),\n scale: z.optional(z.number()),\n minCellWidth: z.optional(z.number()),\n minCellHeight: z.optional(z.number()),\n maxCellWidth: z.optional(z.number()),\n maxCellHeight: z.optional(z.number()),\n })\n ),\n mode: z.optional(z.union([z.literal('normal'), z.literal('useAllNodesAsLeaves')])),\n leavesMode: z.optional(z.union([z.literal('normal'), z.literal('alignLeavesToLine')])),\n legend: z.optional(\n z.object({\n show: z.optional(z.boolean()),\n position: z.optional(LegendPositionSchema),\n })\n ),\n facetSettings: z.optional(\n z.object({\n nRows: z.optional(z.number()),\n nCols: z.optional(z.number()),\n })\n ),\n id: ColumnNameSchema,\n parentId: ColumnNameSchema,\n height: z.optional(ColumnNameSchema), // if height is not defined it is not considered in links length calculations\n labels: z.optional(ColumnNameSchema),\n facetBy: z.optional(z.array(ColumnNameSchema)),\n heatmapAnnotation: z.optional(ColumnNameSchema),\n heatmapAxis: z.optional(ColumnNameSchema),\n heatmapGroup: z.optional(z.array(ColumnNameSchema)),\n heatmapSettings: z.optional(z.object({\n valueType: z.optional(ValueTypeSchema),\n aes: z.optional(z.object({\n colorsList: z.optional(z.array(z.string())),\n colorsMap: z.optional(z.record(z.string()))\n }))\n })),\n\n connectionType: z.optional(z.union([z.literal('rectangle'), z.literal('line'), z.literal('curve')])),\n edgeInheritance: z.optional(z.union([z.literal('up'), z.literal('down')])),\n showNodes: z.optional(z.boolean()),\n showEdges: z.optional(z.boolean()),\n showLeavesLabels: z.optional(z.boolean()),\n showNodesLabels: z.optional(z.boolean()),\n rootPosition: z.optional(z.union([z.literal('left'), z.literal('top')])),\n\n aes: z.optional(\n z.object({\n nodeShape: z.optional(z.union([PointShapeSchema, categoricalAesMappingFromValueSchema(PointShapeSchema)])),\n nodeColor: z.optional(\n z.union([\n z.string(),\n categoricalAesMappingFromValueSchema(z.string()),\n continuousAesMappingFromValueSchema(z.string()),\n ])\n ),\n nodeSize: z.optional(z.union([\n z.number(),\n categoricalAesMappingFromValueSchema(z.number()),\n continuousAesMappingFromValueSchema(z.number()),\n ])),\n\n lineShape: z.optional(LineShapeSchema),\n lineColor: z.optional(z.union([\n z.string(),\n categoricalAesMappingFromValueSchema(z.string()),\n continuousAesMappingFromValueSchema(z.string()),\n ])),\n })\n ),\n});\n\nexport type DendroSettings = z.infer<typeof DendroSettingsSchema>;\n\nexport type DendroLegendInfo = Record<\n string,\n {\n values: string[];\n usedAes: (keyof AesItem)[];\n aesMap: AesRecord;\n labels: Record<string, string>;\n }\n>;\n"],"names":["ValueTypeSchema","z","DendroSettingsSchema","TitlePositionSchema","LegendPositionSchema","ColumnNameSchema","PointShapeSchema","categoricalAesMappingFromValueSchema","continuousAesMappingFromValueSchema","LineShapeSchema"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"dendro.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/types/dendro.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n type AesItem, type AesRecord,\n categoricalAesMappingFromValueSchema,\n ColumnNameSchema,\n continuousAesMappingFromValueSchema,\n LegendPositionSchema,\n LineShapeSchema,\n PointShapeSchema,\n TitlePositionSchema\n} from './common';\n\nconst ValueTypeSchema = z.enum(['discrete', 'continuous', 'stringSource']);\n\nexport const DendroSettingsSchema = z.object({\n type: z.literal('dendro'),\n title: z.object({\n name: z.string(),\n show: z.optional(z.boolean()),\n position: z.optional(TitlePositionSchema),\n }),\n size: z.optional(\n z.object({\n width: z.optional(z.number()),\n height: z.optional(z.number()),\n scale: z.optional(z.number()),\n minCellWidth: z.optional(z.number()),\n minCellHeight: z.optional(z.number()),\n maxCellWidth: z.optional(z.number()),\n maxCellHeight: z.optional(z.number()),\n marginTop: z.optional(z.number()),\n marginBottom: z.optional(z.number()),\n marginLeft: z.optional(z.number()),\n marginRight: z.optional(z.number()),\n })\n ),\n mode: z.optional(z.union([z.literal('normal'), z.literal('useAllNodesAsLeaves')])),\n leavesMode: z.optional(z.union([z.literal('normal'), z.literal('alignLeavesToLine')])),\n leavesOrder: z.optional(z.union([z.literal('indexAsc'), z.literal('indexDesc')])),\n legend: z.optional(\n z.object({\n show: z.optional(z.boolean()),\n position: z.optional(LegendPositionSchema),\n })\n ),\n facetSettings: z.optional(\n z.object({\n nRows: z.optional(z.number()),\n nCols: z.optional(z.number()),\n })\n ),\n id: ColumnNameSchema,\n parentId: ColumnNameSchema,\n height: z.optional(ColumnNameSchema), // if height is not defined it is not considered in links length calculations\n labels: z.optional(ColumnNameSchema),\n facetBy: z.optional(z.array(ColumnNameSchema)),\n heatmapAnnotation: z.optional(ColumnNameSchema),\n heatmapAxis: z.optional(ColumnNameSchema),\n heatmapGroup: z.optional(z.array(ColumnNameSchema)),\n heatmapSettings: z.optional(z.object({\n valueType: z.optional(ValueTypeSchema),\n aes: z.optional(z.object({\n colorsList: z.optional(z.array(z.string())),\n colorsMap: z.optional(z.record(z.string()))\n }))\n })),\n\n connectionType: z.optional(z.union([z.literal('rectangle'), z.literal('line'), z.literal('curve')])),\n edgeInheritance: z.optional(z.union([z.literal('up'), z.literal('down')])),\n showNodes: z.optional(z.boolean()),\n showEdges: z.optional(z.boolean()),\n showLeavesLabels: z.optional(z.boolean()),\n showNodesLabels: z.optional(z.boolean()),\n rootPosition: z.optional(z.union([z.literal('left'), z.literal('top')])),\n\n aes: z.optional(\n z.object({\n nodeShape: z.optional(z.union([PointShapeSchema, categoricalAesMappingFromValueSchema(PointShapeSchema)])),\n nodeColor: z.optional(\n z.union([\n z.string(),\n categoricalAesMappingFromValueSchema(z.string()),\n continuousAesMappingFromValueSchema(z.string()),\n ])\n ),\n nodeSize: z.optional(z.union([\n z.number(),\n categoricalAesMappingFromValueSchema(z.number()),\n continuousAesMappingFromValueSchema(z.number()),\n ])),\n\n lineShape: z.optional(LineShapeSchema),\n lineColor: z.optional(z.union([\n z.string(),\n categoricalAesMappingFromValueSchema(z.string()),\n continuousAesMappingFromValueSchema(z.string()),\n ])),\n })\n ),\n});\n\nexport type DendroSettings = z.infer<typeof DendroSettingsSchema>;\n\nexport type DendroLegendInfo = Record<\n string,\n {\n values: string[];\n usedAes: (keyof AesItem)[];\n aesMap: AesRecord;\n labels: Record<string, string>;\n }\n>;\n"],"names":["ValueTypeSchema","z","DendroSettingsSchema","TitlePositionSchema","LegendPositionSchema","ColumnNameSchema","PointShapeSchema","categoricalAesMappingFromValueSchema","continuousAesMappingFromValueSchema","LineShapeSchema"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,5 +1,5 @@
1
1
  import o from "../node_modules/zod/lib/index.js";
2
- import { LineShapeSchema as t, PointShapeSchema as e, ColumnNameSchema as i, DataValueSchema as a, AxisSettingsContinuousSchema as s, AxisSettingsDiscreteSchema as m, TitlePositionSchema as l, AesRecordSchema as p, FrameTypeSchema as b, LegendPositionSchema as u } from "./common.js";
2
+ import { LineShapeSchema as t, PointShapeSchema as e, ColumnNameSchema as i, DataValueSchema as a, AxisSettingsContinuousSchema as s, AxisSettingsDiscreteSchema as b, TitlePositionSchema as l, AesRecordSchema as p, FrameTypeSchema as m, LegendPositionSchema as u } from "./common.js";
3
3
  const n = o.object({ type: o.enum(["primaryGrouping", "secondaryGrouping"]) }), c = o.object({
4
4
  type: o.literal("box"),
5
5
  stat: o.optional(
@@ -211,7 +211,7 @@ const n = o.object({ type: o.enum(["primaryGrouping", "secondaryGrouping"]) }),
211
211
  k,
212
212
  O,
213
213
  L
214
- ]), $ = ["horizontal", "vertical"], N = o.enum($), V = o.object({
214
+ ]), N = ["horizontal", "vertical"], $ = o.enum(N), V = o.object({
215
215
  type: o.literal("discrete"),
216
216
  title: o.object({
217
217
  name: o.string(),
@@ -247,8 +247,8 @@ const n = o.object({ type: o.enum(["primaryGrouping", "secondaryGrouping"]) }),
247
247
  logo: o.optional(o.object({ show: o.boolean() }))
248
248
  })
249
249
  ),
250
- frame: o.optional(o.object({ type: o.optional(b) })),
251
- orientation: o.optional(N),
250
+ frame: o.optional(o.object({ type: o.optional(m) })),
251
+ orientation: o.optional($),
252
252
  keyColumn: o.optional(i),
253
253
  primaryGrouping: o.optional(
254
254
  o.object({
@@ -277,7 +277,7 @@ const n = o.object({ type: o.enum(["primaryGrouping", "secondaryGrouping"]) }),
277
277
  titlePosition: o.optional(l)
278
278
  })
279
279
  ),
280
- xAxis: o.optional(m),
280
+ xAxis: o.optional(b),
281
281
  yAxis: o.optional(s),
282
282
  layers: o.array(P)
283
283
  });