@milaboratories/graph-maker 1.1.170 → 1.1.172

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 (80) hide show
  1. package/dist/GraphMaker/components/AesSettings/AesDataMappingContinuous.vue.js +5 -5
  2. package/dist/GraphMaker/components/AesSettings/AesDataMappingContinuous.vue.js.map +1 -1
  3. package/dist/GraphMaker/components/Chart.vue.d.ts.map +1 -1
  4. package/dist/GraphMaker/components/Chart.vue.js +44 -34
  5. package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
  6. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts +0 -2
  7. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
  8. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js +26 -33
  9. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
  10. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
  11. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js +14 -17
  12. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
  13. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
  14. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js +49 -50
  15. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js.map +1 -1
  16. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts +5 -2
  17. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
  18. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js +46 -43
  19. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
  20. package/dist/GraphMaker/components/DragAndDrop/types.d.ts +6 -3
  21. package/dist/GraphMaker/components/DragAndDrop/types.d.ts.map +1 -1
  22. package/dist/GraphMaker/dataBindAes.d.ts.map +1 -1
  23. package/dist/GraphMaker/dataBindAes.js +90 -92
  24. package/dist/GraphMaker/dataBindAes.js.map +1 -1
  25. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
  26. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  27. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  28. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js +40 -43
  29. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
  30. package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js +9 -8
  31. package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
  32. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  33. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js +15 -18
  34. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js.map +1 -1
  35. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js +8 -7
  36. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js.map +1 -1
  37. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js +3 -2
  38. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js.map +1 -1
  39. package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +3 -2
  40. package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
  41. package/dist/GraphMaker/index.vue.d.ts.map +1 -1
  42. package/dist/GraphMaker/index.vue.js +49 -48
  43. package/dist/GraphMaker/index.vue.js.map +1 -1
  44. package/dist/GraphMaker/store.d.ts +3 -2
  45. package/dist/GraphMaker/store.d.ts.map +1 -1
  46. package/dist/GraphMaker/store.js +132 -116
  47. package/dist/GraphMaker/store.js.map +1 -1
  48. package/dist/GraphMaker/types.d.ts +8 -1
  49. package/dist/GraphMaker/types.d.ts.map +1 -1
  50. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +3 -2
  51. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  52. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js +3 -2
  53. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
  54. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +3 -2
  55. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  56. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js +3 -2
  57. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
  58. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +3 -2
  59. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  60. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +7 -6
  61. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
  62. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
  63. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +108 -101
  64. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
  65. package/dist/GraphMaker/utils/getUsedAesInMapping.js +15 -14
  66. package/dist/GraphMaker/utils/getUsedAesInMapping.js.map +1 -1
  67. package/dist/GraphMaker/utils/loadDefaultSources.js +16 -15
  68. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  69. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts +5 -3
  70. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  71. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +66 -72
  72. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
  73. package/dist/node_modules/@milaboratories/helpers/dist/utils.js.map +1 -1
  74. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js +2 -2
  75. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  76. package/dist/node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js +6 -0
  77. package/dist/node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js.map +1 -0
  78. package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +1 -0
  79. package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js.map +1 -1
  80. package/package.json +3 -3
@@ -5,7 +5,7 @@ import { createContinuousMappingFromPalette as S } from "../../dataBindAes.js";
5
5
  import U from "./FormWrapper.vue.js";
6
6
  import $ from "./PalettesForm.vue.js";
7
7
  import w from "../MultiselectButton.vue.js";
8
- const F = { class: "aes-mapping-block" }, G = { style: { margin: "0 24px" } }, D = { class: "section-title" }, R = { style: { margin: "24px 0" } }, j = { style: { margin: "24px 0" } }, q = { style: { margin: "24px 0" } }, z = { style: { display: "flex", marginTop: "16px", gap: "8px" } }, Z = /* @__PURE__ */ N({
8
+ const F = { class: "aes-mapping-block" }, G = { style: { margin: "0 24px" } }, D = { class: "section-title" }, R = { style: { margin: "24px 0" } }, W = { style: { margin: "24px 0" } }, j = { style: { margin: "24px 0" } }, q = { style: { display: "flex", marginTop: "16px", gap: "8px" } }, Z = /* @__PURE__ */ N({
9
9
  __name: "AesDataMappingContinuous",
10
10
  props: {
11
11
  dataColumnLabel: {},
@@ -65,14 +65,14 @@ const F = { class: "aes-mapping-block" }, G = { style: { margin: "0 24px" } }, D
65
65
  })
66
66
  }, null, 8, ["title", "palette"])
67
67
  ]),
68
- n("div", j, [
68
+ n("div", W, [
69
69
  s(m(P), {
70
70
  options: L,
71
71
  modelValue: g.value,
72
72
  "onUpdate:modelValue": a[1] || (a[1] = (t) => g.value = t)
73
73
  }, null, 8, ["modelValue"])
74
74
  ]),
75
- n("div", q, [
75
+ n("div", j, [
76
76
  s(m(P), {
77
77
  label: "Gradient range",
78
78
  options: B,
@@ -80,7 +80,7 @@ const F = { class: "aes-mapping-block" }, G = { style: { margin: "0 24px" } }, D
80
80
  "onUpdate:modelValue": a[2] || (a[2] = (t) => d.value = t)
81
81
  }, null, 8, ["modelValue"])
82
82
  ]),
83
- n("div", z, [
83
+ n("div", q, [
84
84
  d.value === "custom" ? (c(), O(m(C), {
85
85
  key: 0,
86
86
  label: "From",
@@ -93,7 +93,7 @@ const F = { class: "aes-mapping-block" }, G = { style: { margin: "0 24px" } }, D
93
93
  label: "Mid point",
94
94
  updateOnEnterOrClickOutside: !0,
95
95
  useIncrementButtons: !1,
96
- style: { flexGrow: 1 },
96
+ style: { flexGrow: 1, maxWidth: "50%" },
97
97
  modelValue: f.value,
98
98
  "onUpdate:modelValue": a[4] || (a[4] = (t) => f.value = t)
99
99
  }, null, 8, ["modelValue"]),
@@ -1 +1 @@
1
- {"version":3,"file":"AesDataMappingContinuous.vue.js","sources":["../../../../src/GraphMaker/components/AesSettings/AesDataMappingContinuous.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnGroup, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { ref, watch } from 'vue';\nimport { ContinuousPalette, Palette } from './types';\nimport { PALETTE_MAP } from '../../constantsAesthetic';\nimport { AestheticMappingContinuous, createContinuousMappingFromPalette } from '../../dataBindAes';\nimport FormWrapper from './FormWrapper.vue';\nimport PalettesForm from './PalettesForm.vue';\nimport MultiselectButton from '../MultiselectButton.vue';\n\nconst props = defineProps<{\n dataColumnLabel: string;\n modelValue: AestheticMappingContinuous;\n}>();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst palettesOpen = ref(false);\nconst palette = ref<Palette>(props.modelValue.palette);\n\nfunction onPaletteSelect(value: Palette) {\n palette.value = value;\n palettesOpen.value = false;\n emit(\n 'update:modelValue',\n createContinuousMappingFromPalette(value as ContinuousPalette)\n );\n}\n\nconst MODE_OPTIONS = [{ value: 'auto', label: 'Auto' }, { value: 'custom', label: 'Custom' }];\nconst mode = ref<'auto' | 'custom'>(props.modelValue.range ? 'custom' : 'auto');\n\nconst LOG_LINEAR_OPTIONS = [{ value: 'linear', label: 'Linear' }, { value: 'log', label: 'Log' }];\nconst logOrLinear = ref<'linear' | 'log'>(props.modelValue.log ? 'log' : 'linear');\n\nconst lowerValue = ref<number | undefined>(props.modelValue.range?.minValue ?? undefined);\nconst upperValue = ref<number | undefined>(props.modelValue.range?.maxValue ?? undefined);\n\nconst midPoint = ref<number | undefined>(props.modelValue.midPoint ?? undefined);\n\nwatch(() => mode.value, (v) => {\n if (v === 'custom') {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: { minValue: lowerValue.value ?? null, maxValue: upperValue.value ?? null } }\n );\n }\n if (v === 'auto') {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: null }\n );\n }\n});\nwatch(() => lowerValue.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: { ...props.modelValue.range, minValue: v } }\n );\n});\nwatch(() => upperValue.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: { ...props.modelValue.range, maxValue: v } }\n );\n});\nwatch(() => midPoint.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, midPoint: v ?? null }\n );\n});\nwatch(() => logOrLinear.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, log: v === 'log' }\n );\n});\n\n</script>\n\n<template>\n <div class=\"aes-mapping-block\">\n <div style=\"margin: 0 24px\">\n <div class=\"section-title\">\n <span>{{ dataColumnLabel }}</span>\n </div>\n <div style=\"margin: 24px 0\">\n <multiselect-button\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n </div>\n <div style=\"margin: 24px 0\">\n <pl-btn-group\n :options=\"LOG_LINEAR_OPTIONS\"\n v-model=\"logOrLinear\"\n />\n </div>\n <div style=\"margin: 24px 0\">\n <pl-btn-group\n label=\"Gradient range\"\n :options=\"MODE_OPTIONS\"\n v-model=\"mode\"\n />\n </div>\n <div :style=\"{display: 'flex', marginTop: '16px', gap: '8px'}\">\n <pl-number-field\n v-if=\"mode === 'custom'\"\n label=\"From\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n v-model=\"lowerValue\"\n />\n <pl-number-field\n label=\"Mid point\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n :style=\"{flexGrow: 1}\"\n v-model=\"midPoint\"\n />\n <pl-number-field\n v-if=\"mode === 'custom'\"\n label=\"To\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n v-model=\"upperValue\"\n />\n </div>\n <form-wrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <palettes-form :selected=\"palette\" :categorical=\"false\" @select=\"onPaletteSelect\" />\n </form-wrapper>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","palettesOpen","ref","palette","onPaletteSelect","value","createContinuousMappingFromPalette","MODE_OPTIONS","mode","LOG_LINEAR_OPTIONS","logOrLinear","lowerValue","_a","upperValue","_b","midPoint","watch","v"],"mappings":";;;;;;;;;;;;;;;;AAUA,UAAMA,IAAQC,GAKRC,IAAOC,GAEPC,IAAeC,EAAI,EAAK,GACxBC,IAAUD,EAAaL,EAAM,WAAW,OAAO;AAErD,aAASO,EAAgBC,GAAgB;AACvC,MAAAF,EAAQ,QAAQE,GAChBJ,EAAa,QAAQ,IACrBF;AAAA,QACE;AAAA,QACAO,EAAmCD,CAA0B;AAAA,MAAA;AAAA,IAEjE;AAEA,UAAME,IAAe,CAAC,EAAE,OAAO,QAAQ,OAAO,OAAA,GAAU,EAAE,OAAO,UAAU,OAAO,UAAU,GACtFC,IAAON,EAAuBL,EAAM,WAAW,QAAQ,WAAW,MAAM,GAExEY,IAAqB,CAAC,EAAE,OAAO,UAAU,OAAO,SAAA,GAAY,EAAE,OAAO,OAAO,OAAO,OAAO,GAC1FC,IAAcR,EAAsBL,EAAM,WAAW,MAAM,QAAQ,QAAQ,GAE3Ec,IAAaT,IAAwBU,IAAAf,EAAM,WAAW,UAAjB,gBAAAe,EAAwB,aAAY,MAAS,GAClFC,IAAaX,IAAwBY,IAAAjB,EAAM,WAAW,UAAjB,gBAAAiB,EAAwB,aAAY,MAAS,GAElFC,IAAWb,EAAwBL,EAAM,WAAW,YAAY,MAAS;AAE/E,WAAAmB,EAAM,MAAMR,EAAK,OAAO,CAACS,MAAM;AAC7B,MAAIA,MAAM,YACRlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,EAAE,UAAUc,EAAW,SAAS,MAAM,UAAUE,EAAW,SAAS,OAAK;AAAA,MAAE,GAGzGI,MAAM,UACRlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,KAAA;AAAA,MAAK;AAAA,IAGzC,CAAC,GACDmB,EAAM,MAAML,EAAW,OAAO,CAACM,MAAM;AACnC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,EAAE,GAAGA,EAAM,WAAW,OAAO,UAAUoB,EAAA,EAAE;AAAA,MAAE;AAAA,IAE7E,CAAC,GACDD,EAAM,MAAMH,EAAW,OAAO,CAACI,MAAM;AACnC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,EAAE,GAAGA,EAAM,WAAW,OAAO,UAAUoB,EAAA,EAAE;AAAA,MAAE;AAAA,IAE7E,CAAC,GACDD,EAAM,MAAMD,EAAS,OAAO,CAACE,MAAM;AACjC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,UAAUoB,KAAK,KAAA;AAAA,MAAK;AAAA,IAE/C,CAAC,GACDD,EAAM,MAAMN,EAAY,OAAO,CAACO,MAAM;AACpC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,KAAKoB,MAAM,MAAA;AAAA,MAAM;AAAA,IAE5C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"AesDataMappingContinuous.vue.js","sources":["../../../../src/GraphMaker/components/AesSettings/AesDataMappingContinuous.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnGroup, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { ref, watch } from 'vue';\nimport { ContinuousPalette, Palette } from './types';\nimport { PALETTE_MAP } from '../../constantsAesthetic';\nimport { AestheticMappingContinuous, createContinuousMappingFromPalette } from '../../dataBindAes';\nimport FormWrapper from './FormWrapper.vue';\nimport PalettesForm from './PalettesForm.vue';\nimport MultiselectButton from '../MultiselectButton.vue';\n\nconst props = defineProps<{\n dataColumnLabel: string;\n modelValue: AestheticMappingContinuous;\n}>();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst palettesOpen = ref(false);\nconst palette = ref<Palette>(props.modelValue.palette);\n\nfunction onPaletteSelect(value: Palette) {\n palette.value = value;\n palettesOpen.value = false;\n emit(\n 'update:modelValue',\n createContinuousMappingFromPalette(value as ContinuousPalette)\n );\n}\n\nconst MODE_OPTIONS = [{ value: 'auto', label: 'Auto' }, { value: 'custom', label: 'Custom' }];\nconst mode = ref<'auto' | 'custom'>(props.modelValue.range ? 'custom' : 'auto');\n\nconst LOG_LINEAR_OPTIONS = [{ value: 'linear', label: 'Linear' }, { value: 'log', label: 'Log' }];\nconst logOrLinear = ref<'linear' | 'log'>(props.modelValue.log ? 'log' : 'linear');\n\nconst lowerValue = ref<number | undefined>(props.modelValue.range?.minValue ?? undefined);\nconst upperValue = ref<number | undefined>(props.modelValue.range?.maxValue ?? undefined);\n\nconst midPoint = ref<number | undefined>(props.modelValue.midPoint ?? undefined);\n\nwatch(() => mode.value, (v) => {\n if (v === 'custom') {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: { minValue: lowerValue.value ?? null, maxValue: upperValue.value ?? null } }\n );\n }\n if (v === 'auto') {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: null }\n );\n }\n});\nwatch(() => lowerValue.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: { ...props.modelValue.range, minValue: v } }\n );\n});\nwatch(() => upperValue.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, range: { ...props.modelValue.range, maxValue: v } }\n );\n});\nwatch(() => midPoint.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, midPoint: v ?? null }\n );\n});\nwatch(() => logOrLinear.value, (v) => {\n emit(\n 'update:modelValue',\n { ...props.modelValue, log: v === 'log' }\n );\n});\n\n</script>\n\n<template>\n <div class=\"aes-mapping-block\">\n <div style=\"margin: 0 24px\">\n <div class=\"section-title\">\n <span>{{ dataColumnLabel }}</span>\n </div>\n <div style=\"margin: 24px 0\">\n <multiselect-button\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n </div>\n <div style=\"margin: 24px 0\">\n <pl-btn-group\n :options=\"LOG_LINEAR_OPTIONS\"\n v-model=\"logOrLinear\"\n />\n </div>\n <div style=\"margin: 24px 0\">\n <pl-btn-group\n label=\"Gradient range\"\n :options=\"MODE_OPTIONS\"\n v-model=\"mode\"\n />\n </div>\n <div :style=\"{display: 'flex', marginTop: '16px', gap: '8px'}\">\n <pl-number-field\n v-if=\"mode === 'custom'\"\n label=\"From\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n v-model=\"lowerValue\"\n />\n <pl-number-field\n label=\"Mid point\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n :style=\"{flexGrow: 1, maxWidth: '50%'}\"\n v-model=\"midPoint\"\n />\n <pl-number-field\n v-if=\"mode === 'custom'\"\n label=\"To\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n v-model=\"upperValue\"\n />\n </div>\n <form-wrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <palettes-form :selected=\"palette\" :categorical=\"false\" @select=\"onPaletteSelect\" />\n </form-wrapper>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","palettesOpen","ref","palette","onPaletteSelect","value","createContinuousMappingFromPalette","MODE_OPTIONS","mode","LOG_LINEAR_OPTIONS","logOrLinear","lowerValue","_a","upperValue","_b","midPoint","watch","v"],"mappings":";;;;;;;;;;;;;;;;AAUA,UAAMA,IAAQC,GAKRC,IAAOC,GAEPC,IAAeC,EAAI,EAAK,GACxBC,IAAUD,EAAaL,EAAM,WAAW,OAAO;AAErD,aAASO,EAAgBC,GAAgB;AACvC,MAAAF,EAAQ,QAAQE,GAChBJ,EAAa,QAAQ,IACrBF;AAAA,QACE;AAAA,QACAO,EAAmCD,CAA0B;AAAA,MAAA;AAAA,IAEjE;AAEA,UAAME,IAAe,CAAC,EAAE,OAAO,QAAQ,OAAO,OAAA,GAAU,EAAE,OAAO,UAAU,OAAO,UAAU,GACtFC,IAAON,EAAuBL,EAAM,WAAW,QAAQ,WAAW,MAAM,GAExEY,IAAqB,CAAC,EAAE,OAAO,UAAU,OAAO,SAAA,GAAY,EAAE,OAAO,OAAO,OAAO,OAAO,GAC1FC,IAAcR,EAAsBL,EAAM,WAAW,MAAM,QAAQ,QAAQ,GAE3Ec,IAAaT,IAAwBU,IAAAf,EAAM,WAAW,UAAjB,gBAAAe,EAAwB,aAAY,MAAS,GAClFC,IAAaX,IAAwBY,IAAAjB,EAAM,WAAW,UAAjB,gBAAAiB,EAAwB,aAAY,MAAS,GAElFC,IAAWb,EAAwBL,EAAM,WAAW,YAAY,MAAS;AAE/E,WAAAmB,EAAM,MAAMR,EAAK,OAAO,CAACS,MAAM;AAC7B,MAAIA,MAAM,YACRlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,EAAE,UAAUc,EAAW,SAAS,MAAM,UAAUE,EAAW,SAAS,OAAK;AAAA,MAAE,GAGzGI,MAAM,UACRlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,KAAA;AAAA,MAAK;AAAA,IAGzC,CAAC,GACDmB,EAAM,MAAML,EAAW,OAAO,CAACM,MAAM;AACnC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,EAAE,GAAGA,EAAM,WAAW,OAAO,UAAUoB,EAAA,EAAE;AAAA,MAAE;AAAA,IAE7E,CAAC,GACDD,EAAM,MAAMH,EAAW,OAAO,CAACI,MAAM;AACnC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,OAAO,EAAE,GAAGA,EAAM,WAAW,OAAO,UAAUoB,EAAA,EAAE;AAAA,MAAE;AAAA,IAE7E,CAAC,GACDD,EAAM,MAAMD,EAAS,OAAO,CAACE,MAAM;AACjC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,UAAUoB,KAAK,KAAA;AAAA,MAAK;AAAA,IAE/C,CAAC,GACDD,EAAM,MAAMN,EAAY,OAAO,CAACO,MAAM;AACpC,MAAAlB;AAAA,QACE;AAAA,QACA,EAAE,GAAGF,EAAM,YAAY,KAAKoB,MAAM,MAAA;AAAA,MAAM;AAAA,IAE5C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../../src/GraphMaker/components/Chart.vue"],"names":[],"mappings":"AA+OA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAY1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,CAAC;AAuIF,iBAAS,cAAc;WAiQT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAkCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;kBASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../../src/GraphMaker/components/Chart.vue"],"names":[],"mappings":"AAkPA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAY1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,CAAC;AA0IF,iBAAS,cAAc;WAmQT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAkCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;kBASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { defineComponent as W, ref as h, watch as S, computed as p, createElementBlock as b, openBlock as n, createElementVNode as m, createVNode as P, createCommentVNode as s, createBlock as i, withKeys as j, resolveDynamicComponent as K, renderSlot as z, unref as r, withCtx as T, createTextVNode as k, normalizeClass as G, withModifiers as H } from "vue";
1
+ import { defineComponent as W, ref as h, watch as S, computed as m, createElementBlock as b, openBlock as n, createElementVNode as f, createVNode as G, createCommentVNode as s, createBlock as i, withKeys as j, resolveDynamicComponent as K, renderSlot as z, unref as r, withCtx as T, createTextVNode as k, normalizeClass as P, withModifiers as H } from "vue";
2
2
  import { PlNotificationAlert as X, PlDropdown as J, PlAutocomplete as Q, PlBtnGhost as R } from "@platforma-sdk/ui-vue";
3
3
  import Y from "./DendroTable.vue.js";
4
4
  import Z from "./DendroTooltip.vue.js";
@@ -25,22 +25,22 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
25
25
  },
26
26
  emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
27
27
  setup(O, { emit: $ }) {
28
- const C = $, a = oe(), w = O, y = h(w.graphTitle);
28
+ const V = $, a = oe(), w = O, y = h(w.graphTitle);
29
29
  S(() => w.graphTitle, (t) => {
30
30
  y.value = t;
31
31
  });
32
- const V = p(() => {
32
+ const B = m(() => {
33
33
  var t;
34
34
  return (t = a.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
35
- }), u = p(() => {
35
+ }), u = m(() => {
36
36
  var t;
37
- return (t = V.value) == null ? void 0 : t.selectedSource;
38
- }), B = p(() => {
37
+ return (t = B.value) == null ? void 0 : t.selectedSource;
38
+ }), C = m(() => {
39
39
  var t, e;
40
- return (e = (t = V.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
41
- }), c = h(B.value);
40
+ return (e = (t = B.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
41
+ }), c = h(C.value);
42
42
  S(() => u.value, (t, e) => {
43
- t !== e && (c.value = B.value);
43
+ t !== e && (c.value = C.value);
44
44
  }, { immediate: !0 });
45
45
  async function L(t) {
46
46
  if (!a.value.columnsDataStore)
@@ -48,13 +48,13 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
48
48
  const e = await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, N);
49
49
  return e.overflow ? null : e.values;
50
50
  }
51
- const f = h();
51
+ const v = h();
52
52
  S([
53
53
  () => u.value,
54
54
  () => a.value.loading.inputGuide
55
55
  ], async ([t, e]) => {
56
- t === void 0 || e || (f.value = await L(t));
57
- }, { immediate: !0 }), S(() => f.value, async (t) => {
56
+ t === void 0 || e || !a.value.columnsDataStore || (v.value = await L(t));
57
+ }, { immediate: !0 }), S(() => v.value, async (t) => {
58
58
  if (u.value === void 0 || // no tabBy selected
59
59
  c.value !== void 0 || // tabBy selected and has selected value
60
60
  t === void 0)
@@ -75,18 +75,25 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
75
75
  }
76
76
  function F(t) {
77
77
  const e = t.currentTarget;
78
- y.value = e.value, C("graph-title-update", e.value);
78
+ y.value = e.value, V("graph-title-update", e.value);
79
79
  }
80
80
  function U(t) {
81
- C("dendro-node-select", t);
81
+ V("dendro-node-select", t);
82
82
  }
83
83
  async function D(t, e) {
84
84
  return a.value.columnsDataStore ? (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, N, e || void 0)).values : Promise.resolve([]);
85
85
  }
86
86
  async function A(t, e) {
87
- return a.value.columnsDataStore ? (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, 1, void 0, e)).values[0] : Promise.resolve({ value: e, label: e });
87
+ return a.value.columnsDataStore ? await a.value.controller.getUniqueSourceValuesWithLabels(
88
+ a.value.columnsDataStore,
89
+ a.value.inputGuide.value,
90
+ t,
91
+ 1,
92
+ void 0,
93
+ e
94
+ ).then((o) => o.values[0]) : Promise.resolve({ value: e, label: " " });
88
95
  }
89
- const _ = h(), E = p(() => {
96
+ const _ = h(), E = m(() => {
90
97
  var e;
91
98
  if (a.value.reactive.chartType !== "discrete")
92
99
  return !1;
@@ -95,12 +102,12 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
95
102
  const l = t.primaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[l];
96
103
  if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
97
104
  return Object.values(o.hidden).length > 0 && o.order.some((d) => {
98
- var v;
99
- return (v = o.hidden) == null ? void 0 : v[d];
105
+ var p;
106
+ return (p = o.hidden) == null ? void 0 : p[d];
100
107
  });
101
108
  }
102
109
  return !1;
103
- }), I = p(() => {
110
+ }), I = m(() => {
104
111
  var e;
105
112
  if (a.value.reactive.chartType !== "discrete")
106
113
  return !1;
@@ -109,8 +116,8 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
109
116
  const l = t.secondaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[l];
110
117
  if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
111
118
  return Object.values(o.hidden).length > 0 && o.order.some((d) => {
112
- var v;
113
- return (v = o.hidden) == null ? void 0 : v[d];
119
+ var p;
120
+ return (p = o.hidden) == null ? void 0 : p[d];
114
121
  });
115
122
  }
116
123
  return !1;
@@ -124,8 +131,8 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
124
131
  return (t, e) => {
125
132
  var l;
126
133
  return n(), b("div", re, [
127
- m("div", ne, [
128
- m("input", {
134
+ f("div", ne, [
135
+ f("input", {
129
136
  class: "chart_title",
130
137
  value: y.value,
131
138
  onChange: F,
@@ -135,11 +142,11 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
135
142
  }, ["enter"]))
136
143
  }, null, 40, le),
137
144
  (n(), i(K(ae), { class: "chart_titleEdit" })),
138
- m("div", ie, [
145
+ f("div", ie, [
139
146
  z(t.$slots, "default")
140
147
  ])
141
148
  ]),
142
- P(r(X), {
149
+ G(r(X), {
143
150
  type: "success",
144
151
  modelValue: r(a).reactive.showTooltipHint,
145
152
  "onUpdate:modelValue": e[1] || (e[1] = (o) => r(a).reactive.showTooltipHint = o),
@@ -152,7 +159,7 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
152
159
  _: 1
153
160
  }, 8, ["modelValue"]),
154
161
  u.value ? (n(), b("div", se, [
155
- f.value ? (n(), i(r(J), {
162
+ v.value || v.value === void 0 && r(a).loading.inputGuide ? (n(), i(r(J), {
156
163
  key: 0,
157
164
  label: "Show for",
158
165
  modelValue: c.value,
@@ -160,7 +167,7 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
160
167
  e[2] || (e[2] = (o) => c.value = o),
161
168
  e[3] || (e[3] = (o) => g(o))
162
169
  ],
163
- options: f.value
170
+ options: v.value
164
171
  }, null, 8, ["modelValue", "options"])) : (n(), i(r(Q), {
165
172
  key: 1,
166
173
  label: "Show for",
@@ -173,15 +180,15 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
173
180
  "model-search": (o) => A(u.value, o)
174
181
  }, null, 8, ["modelValue", "options-search", "model-search"]))
175
182
  ])) : s("", !0),
176
- m("div", {
177
- class: G(["chart_main-content", [{ "chart_main-content__dendro": r(a).reactive.chartType === "dendro" }, "pl-scrollable"]]),
183
+ f("div", {
184
+ class: P(["chart_main-content", [{ "chart_main-content__dendro": r(a).reactive.chartType === "dendro" }, "pl-scrollable"]]),
178
185
  ref_key: "chartContainerRef",
179
186
  ref: _
180
187
  }, [
181
- m("div", {
188
+ f("div", {
182
189
  id: "chartSvgContainer",
183
- class: G({
184
- chart_loading: r(a).loading.initialCharts && t.graphStatus === "ready",
190
+ class: P({
191
+ chart_loading: t.graphStatus === "loading",
185
192
  chart_noDataMapping: t.graphStatus === "notReady",
186
193
  chart_emptyData: t.graphStatus === "empty",
187
194
  chart_inconsistent: t.graphStatus === "inconsistent",
@@ -189,7 +196,10 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
189
196
  chart_activeLassoSelection: ((l = r(a).reactive.lassoControlsState) == null ? void 0 : l.mode) === "selection"
190
197
  })
191
198
  }, [
192
- r(a).loading.initialCharts && t.graphStatus === "ready" ? (n(), i(ee, { key: 0 })) : s("", !0)
199
+ t.graphStatus === "loading" ? (n(), i(ee, {
200
+ key: 0,
201
+ top: 10
202
+ })) : s("", !0)
193
203
  ], 2),
194
204
  r(a).reactive.chartType === "dendro" && t.chartData && r(a).reactive.layersSettings.dendro.showTable ? (n(), i(Y, {
195
205
  key: 0,
@@ -208,7 +218,7 @@ const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["
208
218
  }, null, 8, ["info", "containerRef", "tooltipBtn"])) : s("", !0)
209
219
  ], 2),
210
220
  t.graphStatus !== "empty" ? (n(), b("div", ue, [
211
- P(te),
221
+ G(te),
212
222
  r(a).reactive.chartType === "scatterplot-umap" ? (n(), i(x, {
213
223
  key: 0,
214
224
  "chart-ref": t.chartRef
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.vue.js","sources":["../../../src/GraphMaker/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ChartInterface } from '@milaboratories/miplots4';\nimport { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport { ListOption, PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../../GraphMaker/components/DendroTable.vue';\nimport DendroTooltip from '../../GraphMaker/components/DendroTooltip.vue';\nimport LassoControls from '../../GraphMaker/components/LassoControls/index.vue';\nimport Loading from '../../GraphMaker/components/Loading.vue';\nimport Zoom from '../../GraphMaker/components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../../GraphMaker/constantsCommon.ts';\nimport EditIcon from '../../GraphMaker/icons/EditIcon.vue';\nimport { useStore } from '../../GraphMaker/store.ts';\nimport { GraphStatus } from '../../GraphMaker/types.ts';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus,\n graphTitle: string,\n dendroTooltipButton?: string,\n chartData: Record<string, unknown> | null,\n chartRef: ChartInterface | null,\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\nasync function loadOptions(sourceId:string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[]|null|undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide\n], async ([v, loading]) => {\n if (v === undefined || loading) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, {immediate: true});\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined || // no tabBy selected\n tabByLocalValue.value !== undefined || // tabBy selected and has selected value\n opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\n\nfunction onFilterValueUpdate(value:string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value]\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\nasync function searchFilterOptions(sourceId:string, searchStr:string):Promise<ListOption[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId:string, selectedValue:string):Promise<ListOption> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: selectedValue });\n }\n const r = (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, 1, undefined, selectedValue)).values;\n return r[0];\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some(v => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some(v => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => {(e.target as HTMLInputElement)?.blur()}\" />\n <component class=\"chart_titleEdit\" :is=\"EditIcon\" />\n <div class=\"chart_titleLineSlot\">\n <slot></slot>\n </div>\n </div>\n <PlNotificationAlert\n type=\"success\"\n v-model=\"store.reactive.showTooltipHint\"\n class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div class=\"chart_tabBy\" v-if=\"tabBySource\">\n <pl-dropdown\n v-if=\"preloadedOptions\"\n label=\"Show for\"\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options=\"preloadedOptions\"\n />\n <pl-autocomplete\n v-else\n label=\"Show for\"\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options-search=\"(str) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\n />\n </div>\n <div class=\"chart_main-content\" ref=\"chartContainerRef\"\n :class=\"[{'chart_main-content__dendro': store.reactive.chartType === 'dendro'}, 'pl-scrollable']\">\n <div\n id=\"chartSvgContainer\"\n :class=\"{\n 'chart_loading': store.loading.initialCharts && graphStatus === 'ready',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_error': graphStatus === 'error',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <loading v-if=\"store.loading.initialCharts && graphStatus === 'ready'\" />\n </div>\n <dendro-table\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\"\n @row-select=\"onTableRowSelect\"\n />\n <dendro-tooltip\n v-if=\"store.reactive.dendroInfoByClick\"\n :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\"\n :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id:string) => $emit('dendro-tooltip-btn-click', id)\"\n @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div class=\"chart_controls\" v-if=\"graphStatus !== 'empty'\">\n <zoom />\n <lasso-controls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\"/>\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","tabByLocalValue","value","prevValue","loadOptions","sourceId","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","searchSelectedFilterValueOptions","selectedValue","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary"],"mappings":"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"}
1
+ {"version":3,"file":"Chart.vue.js","sources":["../../../src/GraphMaker/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ChartInterface } from '@milaboratories/miplots4';\nimport { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport { ListOption, PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../../GraphMaker/components/DendroTable.vue';\nimport DendroTooltip from '../../GraphMaker/components/DendroTooltip.vue';\nimport LassoControls from '../../GraphMaker/components/LassoControls/index.vue';\nimport Loading from '../../GraphMaker/components/Loading.vue';\nimport Zoom from '../../GraphMaker/components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../../GraphMaker/constantsCommon.ts';\nimport EditIcon from '../../GraphMaker/icons/EditIcon.vue';\nimport { useStore } from '../../GraphMaker/store.ts';\nimport { GraphStatus } from '../../GraphMaker/types.ts';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus,\n graphTitle: string,\n dendroTooltipButton?: string,\n chartData: Record<string, unknown> | null,\n chartRef: ChartInterface | null,\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\nasync function loadOptions(sourceId:string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[]|null|undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, {immediate: true});\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined || // no tabBy selected\n tabByLocalValue.value !== undefined || // tabBy selected and has selected value\n opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\n\nfunction onFilterValueUpdate(value:string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value]\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\nasync function searchFilterOptions(sourceId:string, searchStr:string):Promise<ListOption[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId:string, selectedValue:string):Promise<ListOption> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({value: selectedValue, label: ' '}); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then(v => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some(v => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some(v => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => {(e.target as HTMLInputElement)?.blur()}\" />\n <component class=\"chart_titleEdit\" :is=\"EditIcon\" />\n <div class=\"chart_titleLineSlot\">\n <slot></slot>\n </div>\n </div>\n <PlNotificationAlert\n type=\"success\"\n v-model=\"store.reactive.showTooltipHint\"\n class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div class=\"chart_tabBy\" v-if=\"tabBySource\">\n <pl-dropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n label=\"Show for\"\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options=\"preloadedOptions\"\n />\n <pl-autocomplete\n v-else\n label=\"Show for\"\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options-search=\"(str) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\n />\n </div>\n <div class=\"chart_main-content\" ref=\"chartContainerRef\"\n :class=\"[{'chart_main-content__dendro': store.reactive.chartType === 'dendro'}, 'pl-scrollable']\">\n <div\n id=\"chartSvgContainer\"\n :class=\"{\n 'chart_loading': graphStatus === 'loading',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_error': graphStatus === 'error',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <loading v-if=\"graphStatus === 'loading'\" :top=\"10\"/>\n </div>\n <dendro-table\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\"\n @row-select=\"onTableRowSelect\"\n />\n <dendro-tooltip\n v-if=\"store.reactive.dendroInfoByClick\"\n :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\"\n :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id:string) => $emit('dendro-tooltip-btn-click', id)\"\n @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div class=\"chart_controls\" v-if=\"graphStatus !== 'empty'\">\n <zoom />\n <lasso-controls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\"/>\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","tabByLocalValue","value","prevValue","loadOptions","sourceId","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","searchSelectedFilterValueOptions","selectedValue","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- import { ListOption } from '@platforma-sdk/ui-vue';
2
1
  import { ChipInfo } from './types.ts';
3
2
  type __VLS_Props = {
4
3
  error: boolean;
5
4
  info: ChipInfo;
6
5
  sortable?: boolean;
7
- loadOptions: (sourceId: string) => Promise<ListOption<string>[] | null>;
8
6
  };
9
7
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
10
8
  "close-chip": (item: string) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"DnDBasketChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDBasketChip.vue"],"names":[],"mappings":"AAoEA,OAAO,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,CAAC,QAAQ,EAAC,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;CACxE,CAAC;;;;;;;;AA4IF,wBASG"}
1
+ {"version":3,"file":"DnDBasketChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDBasketChip.vue"],"names":[],"mappings":"AA4DA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;;;AAoIF,wBASG"}
@@ -1,74 +1,67 @@
1
- import { defineComponent as y, ref as c, computed as v, onMounted as C, createElementBlock as s, openBlock as o, createElementVNode as t, normalizeClass as r, createCommentVNode as d, createVNode as g, createBlock as p, unref as i, toDisplayString as m } from "vue";
2
- import { PlIcon16 as l } from "@platforma-sdk/ui-vue";
3
- import { useStore as B } from "../../store.js";
4
- import S from "../../assets/drag-and-drop/img/chip-close.svg.js";
5
- const V = {
1
+ import { defineComponent as k, ref as b, computed as y, createElementBlock as s, openBlock as o, createElementVNode as t, normalizeClass as i, createCommentVNode as c, createVNode as v, createBlock as d, unref as n, toDisplayString as p } from "vue";
2
+ import { PlIcon16 as r } from "@platforma-sdk/ui-vue";
3
+ import C from "../../assets/drag-and-drop/img/chip-close.svg.js";
4
+ const g = {
6
5
  key: 0,
7
6
  class: "dnd-basket-chip__handler"
8
- }, w = { class: "dnd-basket-chip__title-wrapper" }, D = ["title"], H = ["title"], M = ["innerHTML"], I = /* @__PURE__ */ y({
7
+ }, B = { class: "dnd-basket-chip__title-wrapper" }, V = ["title"], D = ["title"], H = ["innerHTML"], E = /* @__PURE__ */ k({
9
8
  __name: "DnDBasketChip",
10
9
  props: {
11
10
  error: { type: Boolean },
12
11
  info: {},
13
- sortable: { type: Boolean },
14
- loadOptions: { type: Function }
12
+ sortable: { type: Boolean }
15
13
  },
16
14
  emits: ["close-chip"],
17
- setup(u, { emit: f }) {
18
- const n = u;
19
- B();
20
- const h = f, _ = c(), a = v(
21
- () => n.info.uniqueValues.join("/")
15
+ setup(m, { emit: u }) {
16
+ const l = m, h = u, _ = b(), a = y(
17
+ () => l.info.uniqueValues.join("/")
22
18
  );
23
- function k() {
24
- h("close-chip", n.info.id);
19
+ function f() {
20
+ h("close-chip", l.info.id);
25
21
  }
26
- const b = c();
27
- return C(async () => {
28
- b.value = await n.loadOptions(n.info.id);
29
- }), (e, N) => (o(), s("div", {
22
+ return (e, N) => (o(), s("div", {
30
23
  ref_key: "chipRoot",
31
24
  ref: _,
32
25
  class: "dnd-basket-chip__group"
33
26
  }, [
34
27
  t("div", {
35
- class: r([{ error: e.error, sortable: e.sortable }, "dnd-basket-chip"])
28
+ class: i([{ error: e.error, sortable: e.sortable }, "dnd-basket-chip"])
36
29
  }, [
37
30
  t("div", {
38
- class: r(["dnd-basket-chip__icon", { error: e.error }])
31
+ class: i(["dnd-basket-chip__icon", { error: e.error }])
39
32
  }, [
40
- e.error ? (o(), p(i(l), {
33
+ e.error ? (o(), d(n(r), {
41
34
  key: 0,
42
35
  name: "warning",
43
- class: r({ error: e.error })
44
- }, null, 8, ["class"])) : (o(), p(i(l), {
36
+ class: i({ error: e.error })
37
+ }, null, 8, ["class"])) : (o(), d(n(r), {
45
38
  key: 1,
46
39
  name: e.info.isSubsetFilter ? "cell-type-subset" : e.info.type === "String" ? "cell-type-txt" : "cell-type-num"
47
40
  }, null, 8, ["name"]))
48
41
  ], 2),
49
- e.sortable ? (o(), s("div", V)) : d("", !0),
50
- g(i(l), { name: "drag-dots" }),
51
- t("div", w, [
42
+ e.sortable ? (o(), s("div", g)) : c("", !0),
43
+ v(n(r), { name: "drag-dots" }),
44
+ t("div", B, [
52
45
  t("div", {
53
46
  class: "dnd-basket-chip__title",
54
47
  title: e.info.title
55
- }, m(e.info.title), 9, D),
48
+ }, p(e.info.title), 9, V),
56
49
  e.info.nonHomogenous ? (o(), s("div", {
57
50
  key: 0,
58
51
  class: "dnd-basket-chip__sub-title",
59
52
  title: a.value
60
- }, m(a.value), 9, H)) : d("", !0)
53
+ }, p(a.value), 9, D)) : c("", !0)
61
54
  ]),
62
55
  t("div", {
63
- innerHTML: i(S),
56
+ innerHTML: n(C),
64
57
  class: "dnd-basket-chip__icon-close",
65
- onClick: k
66
- }, null, 8, M)
58
+ onClick: f
59
+ }, null, 8, H)
67
60
  ], 2)
68
61
  ], 512));
69
62
  }
70
63
  });
71
64
  export {
72
- I as default
65
+ E as default
73
66
  };
74
67
  //# sourceMappingURL=DnDBasketChip.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DnDBasketChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDBasketChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ListOption, PlIcon16 } from '@platforma-sdk/ui-vue';\nimport { computed, onMounted, ref } from 'vue';\nimport { ChipInfo } from './types.ts';\nimport { useStore } from '../../store';\nimport CloseChipIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\n\nconst props = defineProps<{\n error: boolean;\n info: ChipInfo;\n sortable?: boolean;\n loadOptions: (sourceId:string) => Promise<ListOption<string>[] | null>;\n}>();\n\nconst store = useStore();\n\n\nconst emit = defineEmits<{\n (e: 'close-chip', item: ChipInfo['id']): void;\n}>();\n\nconst chipRoot = ref<HTMLElement>();\n\nconst dimensionsTitle = computed(() =>\n props.info.uniqueValues.join('/')\n);\n\nfunction closeChip() {\n emit('close-chip', props.info['id']);\n}\n\nconst preloadedOptions = ref<ListOption[]|null|undefined>();\nonMounted(async () => {\n preloadedOptions.value = await props.loadOptions(props.info.id);\n});\n\n</script>\n<template>\n <div ref=\"chipRoot\" class=\"dnd-basket-chip__group\">\n <div :class=\"{ error, sortable }\" class=\"dnd-basket-chip\">\n <div class=\"dnd-basket-chip__icon\" :class=\"{error}\">\n <PlIcon16 v-if=\"error\" name=\"warning\" :class=\"{error}\" />\n <PlIcon16 v-else :name=\"info.isSubsetFilter ? 'cell-type-subset' : info.type === 'String' ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div v-if=\"sortable\" class=\"dnd-basket-chip__handler\"></div>\n <PlIcon16 name=\"drag-dots\" />\n <div class=\"dnd-basket-chip__title-wrapper\">\n <div class=\"dnd-basket-chip__title\" :title=\"info.title\">\n {{ info.title }}\n </div>\n <div\n v-if=\"info.nonHomogenous\"\n class=\"dnd-basket-chip__sub-title\"\n :title=\"dimensionsTitle\"\n >\n {{ dimensionsTitle }}\n </div>\n </div>\n <div\n v-html=\"CloseChipIcon\"\n class=\"dnd-basket-chip__icon-close\"\n @click=\"closeChip\"\n />\n </div>\n </div>\n</template>\n"],"names":["props","__props","useStore","emit","__emit","chipRoot","ref","dimensionsTitle","computed","closeChip","preloadedOptions","onMounted"],"mappings":";;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC;AAOA,IAAAC,EAAA;AAGd,UAAMC,IAAOC,GAIPC,IAAWC,EAAA,GAEXC,IAAkBC;AAAA,MAAS,MAC/BR,EAAM,KAAK,aAAa,KAAK,GAAG;AAAA,IAAA;AAGlC,aAASS,IAAY;AACnB,MAAAN,EAAK,cAAcH,EAAM,KAAK,EAAK;AAAA,IACrC;AAEA,UAAMU,IAAmBJ,EAAA;AACzB,WAAAK,EAAU,YAAY;AACpB,MAAAD,EAAiB,QAAQ,MAAMV,EAAM,YAAYA,EAAM,KAAK,EAAE;AAAA,IAChE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DnDBasketChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDBasketChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlIcon16 } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport { ChipInfo } from './types.ts';\nimport CloseChipIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\n\nconst props = defineProps<{\n error: boolean;\n info: ChipInfo;\n sortable?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'close-chip', item: ChipInfo['id']): void;\n}>();\n\nconst chipRoot = ref<HTMLElement>();\n\nconst dimensionsTitle = computed(() =>\n props.info.uniqueValues.join('/')\n);\n\nfunction closeChip() {\n emit('close-chip', props.info['id']);\n}\n\n</script>\n<template>\n <div ref=\"chipRoot\" class=\"dnd-basket-chip__group\">\n <div :class=\"{ error, sortable }\" class=\"dnd-basket-chip\">\n <div class=\"dnd-basket-chip__icon\" :class=\"{error}\">\n <PlIcon16 v-if=\"error\" name=\"warning\" :class=\"{error}\" />\n <PlIcon16 v-else :name=\"info.isSubsetFilter ? 'cell-type-subset' : info.type === 'String' ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div v-if=\"sortable\" class=\"dnd-basket-chip__handler\"></div>\n <PlIcon16 name=\"drag-dots\" />\n <div class=\"dnd-basket-chip__title-wrapper\">\n <div class=\"dnd-basket-chip__title\" :title=\"info.title\">\n {{ info.title }}\n </div>\n <div\n v-if=\"info.nonHomogenous\"\n class=\"dnd-basket-chip__sub-title\"\n :title=\"dimensionsTitle\"\n >\n {{ dimensionsTitle }}\n </div>\n </div>\n <div\n v-html=\"CloseChipIcon\"\n class=\"dnd-basket-chip__icon-close\"\n @click=\"closeChip\"\n />\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","chipRoot","ref","dimensionsTitle","computed","closeChip"],"mappings":";;;;;;;;;;;;;;;AAMA,UAAMA,IAAQC,GAMRC,IAAOC,GAIPC,IAAWC,EAAA,GAEXC,IAAkBC;AAAA,MAAS,MAC/BP,EAAM,KAAK,aAAa,KAAK,GAAG;AAAA,IAAA;AAGlC,aAASQ,IAAY;AACnB,MAAAN,EAAK,cAAcF,EAAM,KAAK,EAAK;AAAA,IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DnDRangeChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDRangeChip.vue"],"names":[],"mappings":"AAyEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AA0BF,KAAK,iBAAiB,GAAG;IACzB,QAAQ,EAAE,GAAG,CAAC;CACb,GAAG,WAAW,CAAC;;;;;;;;;;;AA0HhB,wBASG"}
1
+ {"version":3,"file":"DnDRangeChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDRangeChip.vue"],"names":[],"mappings":"AAsEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKtC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAwBF,KAAK,iBAAiB,GAAG;IACzB,QAAQ,EAAE,GAAG,CAAC;CACb,GAAG,WAAW,CAAC;;;;;;;;;;;AA0HhB,wBASG"}
@@ -1,11 +1,10 @@
1
1
  import { defineComponent as _, mergeModels as c, useModel as f, reactive as h, watch as b, createElementBlock as v, openBlock as g, createElementVNode as e, normalizeClass as M, createVNode as s, unref as n, toDisplayString as V } from "vue";
2
2
  import C from "../../assets/drag-and-drop/img/chip-close.svg.js";
3
3
  import { PlIcon16 as O, PlNumberField as m } from "@platforma-sdk/ui-vue";
4
- import { useStore as k } from "../../store.js";
5
- const B = {
4
+ const k = {
6
5
  ref: "chipRoot",
7
6
  class: "dnd-double-chip__group"
8
- }, w = { class: "dnd-double-chip__top" }, E = { class: "dnd-double-chip__icon" }, I = ["title"], y = { class: "dnd-double-chip__title" }, D = ["innerHTML"], N = { class: "dnd-double-chip__bottom-range" }, x = { class: "dnd-double-chip__bottom-range-row" }, H = { class: "dnd-double-chip__bottom-range-row" }, U = /* @__PURE__ */ _({
7
+ }, B = { class: "dnd-double-chip__top" }, w = { class: "dnd-double-chip__icon" }, E = ["title"], I = { class: "dnd-double-chip__title" }, y = ["innerHTML"], D = { class: "dnd-double-chip__bottom-range" }, N = { class: "dnd-double-chip__bottom-range-row" }, x = { class: "dnd-double-chip__bottom-range-row" }, T = /* @__PURE__ */ _({
9
8
  __name: "DnDRangeChip",
10
9
  props: /* @__PURE__ */ c({
11
10
  info: {},
@@ -15,11 +14,9 @@ const B = {
15
14
  filterModifiers: {}
16
15
  }),
17
16
  emits: /* @__PURE__ */ c(["close-chip"], ["update:filter"]),
18
- setup(r, { emit: L }) {
17
+ setup(r, { emit: H }) {
19
18
  var a, u;
20
- const p = r;
21
- k();
22
- const d = f(r, "filter"), l = h({
19
+ const p = r, d = f(r, "filter"), l = h({
23
20
  min: (a = d.value) == null ? void 0 : a[0],
24
21
  max: (u = d.value) == null ? void 0 : u[1]
25
22
  });
@@ -29,28 +26,28 @@ const B = {
29
26
  d.value = o;
30
27
  },
31
28
  { deep: !0 }
32
- ), (o, t) => (g(), v("div", B, [
29
+ ), (o, t) => (g(), v("div", k, [
33
30
  e("div", {
34
31
  class: M([{ error: o.error }, "dnd-double-chip"])
35
32
  }, [
36
- e("div", w, [
37
- e("div", E, [
33
+ e("div", B, [
34
+ e("div", w, [
38
35
  s(n(O), { name: "cell-type-num" })
39
36
  ]),
40
37
  e("div", {
41
38
  class: "dnd-double-chip__title-wrapper",
42
39
  title: o.info.title
43
40
  }, [
44
- e("div", y, V(o.info.title), 1)
45
- ], 8, I),
41
+ e("div", I, V(o.info.title), 1)
42
+ ], 8, E),
46
43
  e("div", {
47
44
  innerHTML: n(C),
48
45
  class: "dnd-double-chip__icon-close",
49
46
  onClick: t[0] || (t[0] = (i) => o.$emit("close-chip", p.info.id))
50
- }, null, 8, D)
47
+ }, null, 8, y)
51
48
  ]),
52
- e("div", N, [
53
- e("div", x, [
49
+ e("div", D, [
50
+ e("div", N, [
54
51
  s(n(m), {
55
52
  label: "Min",
56
53
  modelValue: l.min,
@@ -59,7 +56,7 @@ const B = {
59
56
  useIncrementButtons: !1
60
57
  }, null, 8, ["modelValue"])
61
58
  ]),
62
- e("div", H, [
59
+ e("div", x, [
63
60
  s(n(m), {
64
61
  label: "Max",
65
62
  modelValue: l.max,
@@ -74,6 +71,6 @@ const B = {
74
71
  }
75
72
  });
76
73
  export {
77
- U as default
74
+ T as default
78
75
  };
79
76
  //# sourceMappingURL=DnDRangeChip.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DnDRangeChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDRangeChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ChipInfo } from './types.ts';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { reactive, watch, ref } from 'vue';\nimport { PlIcon16, ListOption, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n}>();\n\nconst store = useStore();\n\nconst emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n}>();\n\nconst filterModel = defineModel('filter', { required: true });\n\nconst range = reactive({\n min: (filterModel.value as number[])?.[0] as number | undefined,\n max: (filterModel.value as number[])?.[1] as number | undefined\n});\n\nwatch(() => range, (rangeValue) => {\n filterModel.value = rangeValue;\n }, { deep: true }\n);\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\">\n <PlIcon16 name=\"cell-type-num\" />\n </div>\n <div class=\"dnd-double-chip__title-wrapper\" :title=\"info.title\">\n <div class=\"dnd-double-chip__title\">\n {{ info.title }}\n </div>\n </div>\n <div\n v-html=\"CloseIcon\"\n class=\"dnd-double-chip__icon-close\"\n @click=\"$emit('close-chip', props.info.id)\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range\">\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Min\"\n v-model=\"range.min\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Max\"\n v-model=\"range.max\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","useStore","filterModel","_useModel","range","reactive","_a","_b","watch","rangeValue"],"mappings":";;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC;AAKA,IAAAC,EAAA;AAMd,UAAMC,IAAcC,EAAWH,GAAC,QAA4B,GAEtDI,IAAQC,EAAS;AAAA,MACrB,MAAMC,IAAAJ,EAAY,UAAZ,gBAAAI,EAAiC;AAAA,MACvC,MAAMC,IAAAL,EAAY,UAAZ,gBAAAK,EAAiC;AAAA,IAAC,CACzC;AAED,WAAAC;AAAA,MAAM,MAAMJ;AAAA,MAAO,CAACK,MAAe;AAC/B,QAAAP,EAAY,QAAQO;AAAA,MACtB;AAAA,MAAG,EAAE,MAAM,GAAA;AAAA,IAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DnDRangeChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDRangeChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ChipInfo } from './types.ts';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { reactive, watch } from 'vue';\nimport { PlIcon16, PlNumberField } from '@platforma-sdk/ui-vue';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n}>();\n\nconst filterModel = defineModel('filter', { required: true });\n\nconst range = reactive({\n min: (filterModel.value as number[])?.[0] as number | undefined,\n max: (filterModel.value as number[])?.[1] as number | undefined\n});\n\nwatch(() => range, (rangeValue) => {\n filterModel.value = rangeValue;\n }, { deep: true }\n);\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\">\n <PlIcon16 name=\"cell-type-num\" />\n </div>\n <div class=\"dnd-double-chip__title-wrapper\" :title=\"info.title\">\n <div class=\"dnd-double-chip__title\">\n {{ info.title }}\n </div>\n </div>\n <div\n v-html=\"CloseIcon\"\n class=\"dnd-double-chip__icon-close\"\n @click=\"$emit('close-chip', props.info.id)\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range\">\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Min\"\n v-model=\"range.min\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Max\"\n v-model=\"range.max\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","filterModel","_useModel","range","reactive","_a","_b","watch","rangeValue"],"mappings":";;;;;;;;;;;;;;;;;;AAMA,UAAMA,IAAQC,GASRC,IAAcC,EAAWF,GAAC,QAA4B,GAEtDG,IAAQC,EAAS;AAAA,MACrB,MAAMC,IAAAJ,EAAY,UAAZ,gBAAAI,EAAiC;AAAA,MACvC,MAAMC,IAAAL,EAAY,UAAZ,gBAAAK,EAAiC;AAAA,IAAC,CACzC;AAED,WAAAC;AAAA,MAAM,MAAMJ;AAAA,MAAO,CAACK,MAAe;AAC/B,QAAAP,EAAY,QAAQO;AAAA,MACtB;AAAA,MAAG,EAAE,MAAM,GAAA;AAAA,IAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DndBasket.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndBasket.vue"],"names":[],"mappings":"AA0LA,OAAO,EAEL,cAAc,EACd,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;AA8SlC,wBASG"}
1
+ {"version":3,"file":"DndBasket.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndBasket.vue"],"names":[],"mappings":"AA6LA,OAAO,EAEL,cAAc,EACd,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;AAkTlC,wBASG"}