@milaboratories/graph-maker 1.2.7 → 1.2.9

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 (62) hide show
  1. package/dist/components/Chart.js.map +1 -1
  2. package/dist/components/Chart.vue.d.ts.map +1 -1
  3. package/dist/components/Chart.vue2.js +23 -3
  4. package/dist/components/Chart.vue2.js.map +1 -1
  5. package/dist/components/ChartTruncationWarningAlert.js.map +1 -1
  6. package/dist/components/ChartTruncationWarningAlert.style.js.map +1 -1
  7. package/dist/components/ChartTruncationWarningAlert.vue.d.ts.map +1 -1
  8. package/dist/components/ChartTruncationWarningAlert.vue2.js +30 -17
  9. package/dist/components/ChartTruncationWarningAlert.vue2.js.map +1 -1
  10. package/dist/constantsCommon.d.ts +6 -0
  11. package/dist/constantsCommon.d.ts.map +1 -1
  12. package/dist/constantsCommon.js +9 -3
  13. package/dist/constantsCommon.js.map +1 -1
  14. package/dist/forms/DataMappingForm/DendroForm.js.map +1 -1
  15. package/dist/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  16. package/dist/forms/DataMappingForm/DendroForm.vue2.js +22 -3
  17. package/dist/forms/DataMappingForm/DendroForm.vue2.js.map +1 -1
  18. package/dist/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  19. package/dist/forms/DataMappingForm/useBaskets.js +22 -3
  20. package/dist/forms/DataMappingForm/useBaskets.js.map +1 -1
  21. package/dist/forms/LayersForm/Layer/Bubble.js.map +1 -1
  22. package/dist/forms/LayersForm/Layer/Bubble.vue.d.ts.map +1 -1
  23. package/dist/forms/LayersForm/Layer/Bubble.vue2.js +53 -45
  24. package/dist/forms/LayersForm/Layer/Bubble.vue2.js.map +1 -1
  25. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.js.map +1 -1
  26. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue.d.ts.map +1 -1
  27. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue2.js +49 -41
  28. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue2.js.map +1 -1
  29. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.js.map +1 -1
  30. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue.d.ts.map +1 -1
  31. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue2.js +63 -55
  32. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue2.js.map +1 -1
  33. package/dist/store.js +7 -1
  34. package/dist/store.js.map +1 -1
  35. package/dist/ui.d.ts +0 -1
  36. package/dist/ui.d.ts.map +1 -1
  37. package/dist/ui.js +1 -2
  38. package/dist/ui.vue2.js +1 -1
  39. package/dist/ui.vue2.js.map +1 -1
  40. package/dist/ui2.js.map +1 -1
  41. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +2 -0
  42. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  43. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +1 -1
  44. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  45. package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts +5 -1
  46. package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts.map +1 -1
  47. package/dist/utils/createChartSettingsForRender/composeChartSettings.js +5 -1
  48. package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  49. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +2 -0
  50. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  51. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +1 -1
  52. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  53. package/dist/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  54. package/dist/utils/loadUniqueValuesToSave.js +16 -3
  55. package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
  56. package/package.json +3 -3
  57. package/dist/GraphMakerPlugin.js +0 -5
  58. package/dist/GraphMakerPlugin.js.map +0 -1
  59. package/dist/GraphMakerPlugin.vue.d.ts +0 -37
  60. package/dist/GraphMakerPlugin.vue.d.ts.map +0 -1
  61. package/dist/GraphMakerPlugin.vue2.js +0 -61
  62. package/dist/GraphMakerPlugin.vue2.js.map +0 -1
@@ -14,14 +14,14 @@ var C = { class: "input-item" }, w = { class: "button-group-item" }, T = { class
14
14
  display: "flex",
15
15
  alignItems: "end"
16
16
  }
17
- }, A = "bubble", j = /* @__PURE__ */ h({
17
+ }, A = { class: "checkbox-item" }, j = { class: "checkbox-item" }, M = "bubble", N = /* @__PURE__ */ h({
18
18
  __name: "Bubble",
19
19
  setup(h) {
20
- let j = s(), M = l(() => j.value.reactive.layersSettings[A]), N = l(() => j.value.reactive.optionsState), P = l(() => N.value.components.valueColor.selectorStates[0]?.selectedSource), F = l(() => P.value ? j.value.reactive.dataBindAes[P.value]?.palette : void 0), I = _(!1), L = _(F.value ?? j.value.defaultPalette.continuous);
21
- function R(e) {
22
- L.value = e, I.value = !1, P.value && (j.value.reactive.dataBindAes[P.value] = t(e));
20
+ let N = s(), P = l(() => N.value.reactive.layersSettings[M]), F = l(() => N.value.reactive.optionsState), I = l(() => F.value.components.valueColor.selectorStates[0]?.selectedSource), L = l(() => I.value ? N.value.reactive.dataBindAes[I.value]?.palette : void 0), R = _(!1), z = _(L.value ?? N.value.defaultPalette.continuous);
21
+ function B(e) {
22
+ z.value = e, R.value = !1, I.value && (N.value.reactive.dataBindAes[I.value] = t(e));
23
23
  }
24
- let z = [
24
+ let V = [
25
25
  {
26
26
  label: "None",
27
27
  value: null
@@ -34,43 +34,43 @@ var C = { class: "input-item" }, w = { class: "button-group-item" }, T = { class
34
34
  label: "Rows",
35
35
  value: "row"
36
36
  }
37
- ], B = [{
37
+ ], H = [{
38
38
  label: "z-score",
39
39
  value: "standardScaling"
40
40
  }, {
41
41
  label: "Min-max",
42
42
  value: "meanNormalization"
43
- }], V = n, H = l({
44
- get: () => M.value.strokeColor ?? "#110529",
43
+ }], U = n, W = l({
44
+ get: () => P.value.strokeColor ?? "#110529",
45
45
  set: (e) => {
46
- M.value.strokeColor = e;
46
+ P.value.strokeColor = e;
47
47
  }
48
- }), U = [{
48
+ }), G = [{
49
49
  label: "empty",
50
50
  value: null
51
51
  }, {
52
52
  label: "Special value",
53
53
  value: "custom"
54
- }], W = _(M.value.NAValueAs === null ? M.value.NAValueAs : "custom"), G = _(M.value.NAValueAs ?? 0);
54
+ }], K = _(P.value.NAValueAs === null ? P.value.NAValueAs : "custom"), q = _(P.value.NAValueAs ?? 0);
55
55
  return (t, n) => (g(), f(c, null, [
56
56
  m(a, {
57
57
  label: "Color Palette ",
58
- title: v(e)[L.value].title,
59
- palette: L.value,
58
+ title: v(e)[z.value].title,
59
+ palette: z.value,
60
60
  onButtonClick: n[0] ||= (e) => {
61
- I.value = !0;
61
+ R.value = !0;
62
62
  }
63
63
  }, null, 8, ["title", "palette"]),
64
- I.value ? (g(), u(r, {
64
+ R.value ? (g(), u(r, {
65
65
  key: 0,
66
66
  title: "Color Palette",
67
67
  "back-title": "Color mapping",
68
- "onForm:close": n[1] ||= (e) => I.value = !1
68
+ "onForm:close": n[1] ||= (e) => R.value = !1
69
69
  }, {
70
70
  default: y(() => [m(i, {
71
- selected: L.value,
71
+ selected: z.value,
72
72
  categorical: !1,
73
- onSelect: R
73
+ onSelect: B
74
74
  }, null, 8, ["selected"])]),
75
75
  _: 1
76
76
  })) : d("", !0),
@@ -80,63 +80,71 @@ var C = { class: "input-item" }, w = { class: "button-group-item" }, T = { class
80
80
  "form-back-title": "Layers",
81
81
  type: "stroke",
82
82
  "possible-aes-source-inputs": [],
83
- selected: H.value,
84
- onAesUpdate: n[2] ||= (e) => H.value = e
83
+ selected: W.value,
84
+ onAesUpdate: n[2] ||= (e) => W.value = e
85
85
  }, null, 8, ["selected"])]),
86
86
  p("div", w, [m(v(b), {
87
- modelValue: M.value.normalizationDirection,
88
- "onUpdate:modelValue": n[3] ||= (e) => M.value.normalizationDirection = e,
87
+ modelValue: P.value.normalizationDirection,
88
+ "onUpdate:modelValue": n[3] ||= (e) => P.value.normalizationDirection = e,
89
89
  label: "Normalize by",
90
- options: z,
90
+ options: V,
91
91
  compact: !0
92
92
  }, null, 8, ["modelValue"])]),
93
93
  p("div", T, [m(v(b), {
94
- modelValue: M.value.normalizationMethod,
95
- "onUpdate:modelValue": n[4] ||= (e) => M.value.normalizationMethod = e,
94
+ modelValue: P.value.normalizationMethod,
95
+ "onUpdate:modelValue": n[4] ||= (e) => P.value.normalizationMethod = e,
96
96
  label: "Normalization method",
97
- options: B,
97
+ options: H,
98
98
  compact: !0
99
99
  }, null, 8, ["modelValue"])]),
100
100
  p("div", E, [m(v(x), {
101
- modelValue: M.value.aggregateByX,
102
- "onUpdate:modelValue": n[5] ||= (e) => M.value.aggregateByX = e
103
- }, null, 8, ["modelValue"]), n[12] ||= p("span", null, "Aggregate X groups", -1)]),
101
+ modelValue: P.value.aggregateByX,
102
+ "onUpdate:modelValue": n[5] ||= (e) => P.value.aggregateByX = e
103
+ }, null, 8, ["modelValue"]), n[14] ||= p("span", null, "Aggregate X groups", -1)]),
104
104
  p("div", D, [m(v(x), {
105
- modelValue: M.value.aggregateByY,
106
- "onUpdate:modelValue": n[6] ||= (e) => M.value.aggregateByY = e
107
- }, null, 8, ["modelValue"]), n[13] ||= p("span", null, "Aggregate Y groups", -1)]),
105
+ modelValue: P.value.aggregateByY,
106
+ "onUpdate:modelValue": n[6] ||= (e) => P.value.aggregateByY = e
107
+ }, null, 8, ["modelValue"]), n[15] ||= p("span", null, "Aggregate Y groups", -1)]),
108
108
  p("div", O, [m(v(b), {
109
- modelValue: M.value.aggregationMethod,
110
- "onUpdate:modelValue": n[7] ||= (e) => M.value.aggregationMethod = e,
109
+ modelValue: P.value.aggregationMethod,
110
+ "onUpdate:modelValue": n[7] ||= (e) => P.value.aggregationMethod = e,
111
111
  label: "Aggregation method",
112
- options: v(V),
112
+ options: v(U),
113
113
  compact: !0
114
114
  }, null, 8, ["modelValue", "options"])]),
115
115
  p("div", k, [m(v(b), {
116
- modelValue: W.value,
117
- "onUpdate:modelValue": [n[8] ||= (e) => W.value = e, n[9] ||= (e) => {
118
- e === "custom" ? M.value.NAValueAs = G.value : M.value.NAValueAs = e;
116
+ modelValue: K.value,
117
+ "onUpdate:modelValue": [n[8] ||= (e) => K.value = e, n[9] ||= (e) => {
118
+ e === "custom" ? P.value.NAValueAs = q.value : P.value.NAValueAs = e;
119
119
  }],
120
120
  label: "Treat NA value as:",
121
- options: U,
121
+ options: G,
122
122
  compact: !0
123
123
  }, null, 8, ["modelValue"]), m(v(S), {
124
- modelValue: G.value,
125
- "onUpdate:modelValue": [n[10] ||= (e) => G.value = e, n[11] ||= (e) => {
126
- e !== void 0 && (M.value.NAValueAs = e);
124
+ modelValue: q.value,
125
+ "onUpdate:modelValue": [n[10] ||= (e) => q.value = e, n[11] ||= (e) => {
126
+ e !== void 0 && (P.value.NAValueAs = e);
127
127
  }],
128
128
  style: {
129
129
  height: "33px",
130
130
  marginLeft: "16px",
131
131
  width: "75px"
132
132
  },
133
- disabled: W.value !== "custom",
133
+ disabled: K.value !== "custom",
134
134
  label: "NA value",
135
135
  useIncrementButtons: !1
136
- }, null, 8, ["modelValue", "disabled"])])
136
+ }, null, 8, ["modelValue", "disabled"])]),
137
+ p("div", A, [m(v(x), {
138
+ modelValue: P.value.showEmptyRows,
139
+ "onUpdate:modelValue": n[12] ||= (e) => P.value.showEmptyRows = e
140
+ }, null, 8, ["modelValue"]), n[16] ||= p("span", null, "Show empty rows", -1)]),
141
+ p("div", j, [m(v(x), {
142
+ modelValue: P.value.showEmptyColumns,
143
+ "onUpdate:modelValue": n[13] ||= (e) => P.value.showEmptyColumns = e
144
+ }, null, 8, ["modelValue"]), n[17] ||= p("span", null, "Show empty columns", -1)])
137
145
  ], 64));
138
146
  }
139
147
  });
140
- export { j as default };
148
+ export { N as default };
141
149
 
142
150
  //# sourceMappingURL=Bubble.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Bubble.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../src/forms/LayersForm/Layer/Bubble.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../store';\nimport type { BubbleLayer } from '../../../types';\nimport { computed, ref } from 'vue';\nimport {\n DEFAULT_BLACK,\n PALETTE_MAP,\n} from '../../../constantsAesthetic';\nimport type { ContinuousPalette } from '../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../dataBindAes';\nimport MultiselectButton from '../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../components/AesSettings/FormWrapper.vue';\nimport type { BubbleUIState } from '@milaboratories/pf-plots';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlNumberField } from '@platforma-sdk/ui-vue';\nimport AesSelector from '../AesSelector.vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../constantsCommon';\n\nconst store = useStore();\nconst layer: BubbleLayer = 'bubble';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(() => store.value.reactive.optionsState as BubbleUIState);\n\nconst valueColor = computed(() => optionsState.value.components.valueColor.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => valueColor.value ? store.value.reactive.dataBindAes[valueColor.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (valueColor.value) {\n store.value.reactive.dataBindAes[valueColor.value] = createContinuousMappingFromPalette(value);\n }\n}\n\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst stroke = computed({\n get: () => {\n return settings.value.strokeColor ?? DEFAULT_BLACK;\n },\n set: (v: string) => {\n settings.value.strokeColor = v;\n },\n});\n\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\n\nconst NAValueOption = ref(settings.value.NAValueAs !== null ? 'custom' : settings.value.NAValueAs);\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm :selected=\"palette\" :categorical=\"false\" @select=\"onPaletteSelect\" />\n </FormWrapper>\n <div class=\"input-item\">\n <AesSelector\n label=\"Stroke color\"\n form-title=\"Stroke Color Settings\"\n form-back-title=\"Layers\"\n type=\"stroke\"\n :possible-aes-source-inputs=\"[]\"\n :selected=\"stroke\"\n @aes-update=\"(v:string) => stroke = v\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Bubble.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../src/forms/LayersForm/Layer/Bubble.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../store';\nimport type { BubbleLayer } from '../../../types';\nimport { computed, ref } from 'vue';\nimport {\n DEFAULT_BLACK,\n PALETTE_MAP,\n} from '../../../constantsAesthetic';\nimport type { ContinuousPalette } from '../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../dataBindAes';\nimport MultiselectButton from '../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../components/AesSettings/FormWrapper.vue';\nimport type { BubbleUIState } from '@milaboratories/pf-plots';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlNumberField } from '@platforma-sdk/ui-vue';\nimport AesSelector from '../AesSelector.vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../constantsCommon';\n\nconst store = useStore();\nconst layer: BubbleLayer = 'bubble';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(() => store.value.reactive.optionsState as BubbleUIState);\n\nconst valueColor = computed(() => optionsState.value.components.valueColor.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => valueColor.value ? store.value.reactive.dataBindAes[valueColor.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (valueColor.value) {\n store.value.reactive.dataBindAes[valueColor.value] = createContinuousMappingFromPalette(value);\n }\n}\n\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst stroke = computed({\n get: () => {\n return settings.value.strokeColor ?? DEFAULT_BLACK;\n },\n set: (v: string) => {\n settings.value.strokeColor = v;\n },\n});\n\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\n\nconst NAValueOption = ref(settings.value.NAValueAs !== null ? 'custom' : settings.value.NAValueAs);\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm :selected=\"palette\" :categorical=\"false\" @select=\"onPaletteSelect\" />\n </FormWrapper>\n <div class=\"input-item\">\n <AesSelector\n label=\"Stroke color\"\n form-title=\"Stroke Color Settings\"\n form-back-title=\"Layers\"\n type=\"stroke\"\n :possible-aes-source-inputs=\"[]\"\n :selected=\"stroke\"\n @aes-update=\"(v:string) => stroke = v\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyRows\"/>\n <span>Show empty rows</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyColumns\"/>\n <span>Show empty columns</span>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Heatmap.js","names":[],"sources":["../../../../../src/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport type { HeatmapLayer } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport {\n PALETTE_MAP,\n} from '../../../../constantsAesthetic';\nimport type { ContinuousPalette } from '../../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../../dataBindAes';\nimport MultiselectButton from '../../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../../components/AesSettings/FormWrapper.vue';\nimport type { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlDropdown, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../../constantsCommon';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmap';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(() => store.value.reactive.optionsState as HeatmapUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<HeatmapUIState>);\n\nconst dataSource = computed(() => optionsState.value.components.value.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => dataSource.value ? store.value.reactive.dataBindAes[dataSource.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (dataSource.value) {\n store.value.reactive.dataBindAes[dataSource.value] = createContinuousMappingFromPalette(value);\n }\n}\n\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst NAValueOption = ref(settings.value.NAValueAs === null ? null : 'custom');\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm\n :selected=\"palette\"\n :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\"\n @select=\"onPaletteSelect\"\n />\n </FormWrapper>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Heatmap.js","names":[],"sources":["../../../../../src/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport type { HeatmapLayer } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport {\n PALETTE_MAP,\n} from '../../../../constantsAesthetic';\nimport type { ContinuousPalette } from '../../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../../dataBindAes';\nimport MultiselectButton from '../../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../../components/AesSettings/FormWrapper.vue';\nimport type { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../../constantsCommon';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmap';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(() => store.value.reactive.optionsState as HeatmapUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<HeatmapUIState>);\n\nconst dataSource = computed(() => optionsState.value.components.value.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => dataSource.value ? store.value.reactive.dataBindAes[dataSource.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (dataSource.value) {\n store.value.reactive.dataBindAes[dataSource.value] = createContinuousMappingFromPalette(value);\n }\n}\n\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst NAValueOption = ref(settings.value.NAValueAs === null ? null : 'custom');\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm\n :selected=\"palette\"\n :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\"\n @select=\"onPaletteSelect\"\n />\n </FormWrapper>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyRows\"/>\n <span>Show empty rows</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyColumns\"/>\n <span>Show empty columns</span>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"Heatmap.vue.d.ts","sourceRoot":"","sources":["../../../../../src/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"names":[],"mappings":";AAscA,wBAKG"}
1
+ {"version":3,"file":"Heatmap.vue.d.ts","sourceRoot":"","sources":["../../../../../src/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"names":[],"mappings":";AA0eA,wBAKG"}
@@ -13,14 +13,14 @@ var S = { class: "button-group-item" }, C = { class: "button-group-item" }, w =
13
13
  display: "flex",
14
14
  alignItems: "end"
15
15
  }
16
- }, O = "heatmap", k = /* @__PURE__ */ m({
16
+ }, O = { class: "checkbox-item" }, k = { class: "checkbox-item" }, A = "heatmap", j = /* @__PURE__ */ m({
17
17
  __name: "Heatmap",
18
18
  setup(m) {
19
- let k = o(), A = c(() => k.value.reactive.layersSettings[O]), j = c(() => k.value.reactive.optionsState), M = c(() => k.value.inputGuide.value), N = c(() => j.value.components.value.selectorStates[0]?.selectedSource), P = c(() => N.value ? k.value.reactive.dataBindAes[N.value]?.palette : void 0), F = g(!1), I = g(P.value ?? k.value.defaultPalette.continuous);
20
- function L(e) {
21
- I.value = e, F.value = !1, N.value && (k.value.reactive.dataBindAes[N.value] = t(e));
19
+ let j = o(), M = c(() => j.value.reactive.layersSettings[A]), N = c(() => j.value.reactive.optionsState), P = c(() => j.value.inputGuide.value), F = c(() => N.value.components.value.selectorStates[0]?.selectedSource), I = c(() => F.value ? j.value.reactive.dataBindAes[F.value]?.palette : void 0), L = g(!1), R = g(I.value ?? j.value.defaultPalette.continuous);
20
+ function z(e) {
21
+ R.value = e, L.value = !1, F.value && (j.value.reactive.dataBindAes[F.value] = t(e));
22
22
  }
23
- let R = [
23
+ let B = [
24
24
  {
25
25
  label: "None",
26
26
  value: null
@@ -33,95 +33,103 @@ var S = { class: "button-group-item" }, C = { class: "button-group-item" }, w =
33
33
  label: "Rows",
34
34
  value: "row"
35
35
  }
36
- ], z = [{
36
+ ], V = [{
37
37
  label: "z-score",
38
38
  value: "standardScaling"
39
39
  }, {
40
40
  label: "Min-max",
41
41
  value: "meanNormalization"
42
- }], B = [{
42
+ }], H = [{
43
43
  label: "empty",
44
44
  value: null
45
45
  }, {
46
46
  label: "Special value",
47
47
  value: "custom"
48
- }], V = n, H = g(A.value.NAValueAs === null ? null : "custom"), U = g(A.value.NAValueAs ?? 0);
48
+ }], U = n, W = g(M.value.NAValueAs === null ? null : "custom"), G = g(M.value.NAValueAs ?? 0);
49
49
  return (t, n) => (h(), d(s, null, [
50
50
  p(a, {
51
51
  label: "Color Palette ",
52
- title: _(e)[I.value].title,
53
- palette: I.value,
52
+ title: _(e)[R.value].title,
53
+ palette: R.value,
54
54
  onButtonClick: n[0] ||= (e) => {
55
- F.value = !0;
55
+ L.value = !0;
56
56
  }
57
57
  }, null, 8, ["title", "palette"]),
58
- F.value ? (h(), l(r, {
58
+ L.value ? (h(), l(r, {
59
59
  key: 0,
60
60
  title: "Color Palette",
61
61
  "back-title": "Color mapping",
62
- "onForm:close": n[1] ||= (e) => F.value = !1
62
+ "onForm:close": n[1] ||= (e) => L.value = !1
63
63
  }, {
64
64
  default: v(() => [p(i, {
65
- selected: I.value,
66
- categorical: N.value ? M.value.getSourceInfo(N.value).type === "String" : !1,
67
- onSelect: L
65
+ selected: R.value,
66
+ categorical: F.value ? P.value.getSourceInfo(F.value).type === "String" : !1,
67
+ onSelect: z
68
68
  }, null, 8, ["selected", "categorical"])]),
69
69
  _: 1
70
70
  })) : u("", !0),
71
71
  f("div", S, [p(_(y), {
72
- modelValue: A.value.normalizationDirection,
73
- "onUpdate:modelValue": n[2] ||= (e) => A.value.normalizationDirection = e,
72
+ modelValue: M.value.normalizationDirection,
73
+ "onUpdate:modelValue": n[2] ||= (e) => M.value.normalizationDirection = e,
74
74
  label: "Normalize by",
75
- options: R,
75
+ options: B,
76
76
  compact: !0
77
77
  }, null, 8, ["modelValue"])]),
78
78
  f("div", C, [p(_(y), {
79
- modelValue: A.value.normalizationMethod,
80
- "onUpdate:modelValue": n[3] ||= (e) => A.value.normalizationMethod = e,
79
+ modelValue: M.value.normalizationMethod,
80
+ "onUpdate:modelValue": n[3] ||= (e) => M.value.normalizationMethod = e,
81
81
  label: "Normalization method",
82
- options: z,
82
+ options: V,
83
83
  compact: !0
84
84
  }, null, 8, ["modelValue"])]),
85
85
  f("div", w, [p(_(b), {
86
- modelValue: A.value.aggregateByX,
87
- "onUpdate:modelValue": n[4] ||= (e) => A.value.aggregateByX = e
88
- }, null, 8, ["modelValue"]), n[11] ||= f("span", null, "Aggregate X groups", -1)]),
86
+ modelValue: M.value.aggregateByX,
87
+ "onUpdate:modelValue": n[4] ||= (e) => M.value.aggregateByX = e
88
+ }, null, 8, ["modelValue"]), n[13] ||= f("span", null, "Aggregate X groups", -1)]),
89
89
  f("div", T, [p(_(b), {
90
- modelValue: A.value.aggregateByY,
91
- "onUpdate:modelValue": n[5] ||= (e) => A.value.aggregateByY = e
92
- }, null, 8, ["modelValue"]), n[12] ||= f("span", null, "Aggregate Y groups", -1)]),
90
+ modelValue: M.value.aggregateByY,
91
+ "onUpdate:modelValue": n[5] ||= (e) => M.value.aggregateByY = e
92
+ }, null, 8, ["modelValue"]), n[14] ||= f("span", null, "Aggregate Y groups", -1)]),
93
93
  f("div", E, [p(_(y), {
94
- modelValue: A.value.aggregationMethod,
95
- "onUpdate:modelValue": n[6] ||= (e) => A.value.aggregationMethod = e,
94
+ modelValue: M.value.aggregationMethod,
95
+ "onUpdate:modelValue": n[6] ||= (e) => M.value.aggregationMethod = e,
96
96
  label: "Aggregation method",
97
- options: _(V),
97
+ options: _(U),
98
98
  compact: !0
99
99
  }, null, 8, ["modelValue", "options"])]),
100
100
  f("div", D, [p(_(y), {
101
- modelValue: H.value,
102
- "onUpdate:modelValue": [n[7] ||= (e) => H.value = e, n[8] ||= (e) => {
103
- e === "custom" ? A.value.NAValueAs = U.value : A.value.NAValueAs = e;
101
+ modelValue: W.value,
102
+ "onUpdate:modelValue": [n[7] ||= (e) => W.value = e, n[8] ||= (e) => {
103
+ e === "custom" ? M.value.NAValueAs = G.value : M.value.NAValueAs = e;
104
104
  }],
105
105
  label: "Treat NA value as:",
106
- options: B,
106
+ options: H,
107
107
  compact: !0
108
108
  }, null, 8, ["modelValue"]), p(_(x), {
109
- modelValue: U.value,
110
- "onUpdate:modelValue": [n[9] ||= (e) => U.value = e, n[10] ||= (e) => {
111
- e !== void 0 && (A.value.NAValueAs = e);
109
+ modelValue: G.value,
110
+ "onUpdate:modelValue": [n[9] ||= (e) => G.value = e, n[10] ||= (e) => {
111
+ e !== void 0 && (M.value.NAValueAs = e);
112
112
  }],
113
113
  style: {
114
114
  height: "33px",
115
115
  marginLeft: "16px",
116
116
  width: "75px"
117
117
  },
118
- disabled: H.value !== "custom",
118
+ disabled: W.value !== "custom",
119
119
  label: "NA value",
120
120
  useIncrementButtons: !1
121
- }, null, 8, ["modelValue", "disabled"])])
121
+ }, null, 8, ["modelValue", "disabled"])]),
122
+ f("div", O, [p(_(b), {
123
+ modelValue: M.value.showEmptyRows,
124
+ "onUpdate:modelValue": n[11] ||= (e) => M.value.showEmptyRows = e
125
+ }, null, 8, ["modelValue"]), n[15] ||= f("span", null, "Show empty rows", -1)]),
126
+ f("div", k, [p(_(b), {
127
+ modelValue: M.value.showEmptyColumns,
128
+ "onUpdate:modelValue": n[12] ||= (e) => M.value.showEmptyColumns = e
129
+ }, null, 8, ["modelValue"]), n[16] ||= f("span", null, "Show empty columns", -1)])
122
130
  ], 64));
123
131
  }
124
132
  });
125
- export { k as default };
133
+ export { j as default };
126
134
 
127
135
  //# sourceMappingURL=Heatmap.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Heatmap.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../src/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport type { HeatmapLayer } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport {\n PALETTE_MAP,\n} from '../../../../constantsAesthetic';\nimport type { ContinuousPalette } from '../../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../../dataBindAes';\nimport MultiselectButton from '../../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../../components/AesSettings/FormWrapper.vue';\nimport type { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlDropdown, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../../constantsCommon';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmap';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(() => store.value.reactive.optionsState as HeatmapUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<HeatmapUIState>);\n\nconst dataSource = computed(() => optionsState.value.components.value.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => dataSource.value ? store.value.reactive.dataBindAes[dataSource.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (dataSource.value) {\n store.value.reactive.dataBindAes[dataSource.value] = createContinuousMappingFromPalette(value);\n }\n}\n\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst NAValueOption = ref(settings.value.NAValueAs === null ? null : 'custom');\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm\n :selected=\"palette\"\n :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\"\n @select=\"onPaletteSelect\"\n />\n </FormWrapper>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Heatmap.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../src/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport type { HeatmapLayer } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport {\n PALETTE_MAP,\n} from '../../../../constantsAesthetic';\nimport type { ContinuousPalette } from '../../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../../dataBindAes';\nimport MultiselectButton from '../../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../../components/AesSettings/FormWrapper.vue';\nimport type { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../../constantsCommon';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmap';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(() => store.value.reactive.optionsState as HeatmapUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<HeatmapUIState>);\n\nconst dataSource = computed(() => optionsState.value.components.value.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => dataSource.value ? store.value.reactive.dataBindAes[dataSource.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (dataSource.value) {\n store.value.reactive.dataBindAes[dataSource.value] = createContinuousMappingFromPalette(value);\n }\n}\n\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst NAValueOption = ref(settings.value.NAValueAs === null ? null : 'custom');\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm\n :selected=\"palette\"\n :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\"\n @select=\"onPaletteSelect\"\n />\n </FormWrapper>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyRows\"/>\n <span>Show empty rows</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyColumns\"/>\n <span>Show empty columns</span>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapClustered.js","names":[],"sources":["../../../../../src/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport type { HeatmapLayer } from '../../../../types';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport { PALETTE_MAP } from '../../../../constantsAesthetic';\nimport type { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport type { ContinuousPalette } from '../../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../../dataBindAes';\nimport MultiselectButton from '../../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../../components/AesSettings/FormWrapper.vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../../constantsCommon';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmapClustered';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\n\nconst optionsState = computed(() => store.value.reactive.optionsState as HeatmapUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<HeatmapUIState>);\n\nconst dataSource = computed(() => optionsState.value.components.value.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => dataSource.value ? store.value.reactive.dataBindAes[dataSource.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (dataSource.value) {\n store.value.reactive.dataBindAes[dataSource.value] = createContinuousMappingFromPalette(value);\n }\n}\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst NAValueOption = ref(settings.value.NAValueAs !== null ? 'custom' : settings.value.NAValueAs);\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm :selected=\"palette\" :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\" @select=\"onPaletteSelect\" />\n </FormWrapper>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.disableClusteringX\"/>\n <span>Disable clustering for X axis</span>\n </div>\n <div v-if=\"!settings.disableClusteringX\" class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.dendrogramX\" />\n <span>Show dendrogram for X axis</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.disableClusteringY\"/>\n <span>Disable clustering for Y axis</span>\n </div>\n <div v-if=\"!settings.disableClusteringY\" class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.dendrogramY\"/>\n <span>Show dendrogram for Y axis</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"HeatmapClustered.js","names":[],"sources":["../../../../../src/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport type { HeatmapLayer } from '../../../../types';\nimport type { SimpleOption } from '@platforma-sdk/ui-vue';\nimport { PlBtnGroup, PlCheckbox, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport { PALETTE_MAP } from '../../../../constantsAesthetic';\nimport type { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport type { ContinuousPalette } from '../../../../components/AesSettings/types';\nimport { createContinuousMappingFromPalette } from '../../../../dataBindAes';\nimport MultiselectButton from '../../../../components/MultiselectButton.vue';\nimport PalettesForm from '../../../../components/AesSettings/PalettesForm.vue';\nimport FormWrapper from '../../../../components/AesSettings/FormWrapper.vue';\nimport { AGGREGATION_METHOD_OPTIONS } from '../../../../constantsCommon';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmapClustered';\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\n\nconst optionsState = computed(() => store.value.reactive.optionsState as HeatmapUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<HeatmapUIState>);\n\nconst dataSource = computed(() => optionsState.value.components.value.selectorStates[0]?.selectedSource);\nconst savedDataValuePalette = computed(() => dataSource.value ? store.value.reactive.dataBindAes[dataSource.value]?.palette : undefined);\n\nconst palettesOpen = ref(false);\nconst palette = ref<ContinuousPalette>(savedDataValuePalette.value as ContinuousPalette ?? store.value.defaultPalette.continuous);\n\nfunction onPaletteSelect(value: ContinuousPalette) {\n palette.value = value;\n palettesOpen.value = false;\n if (dataSource.value) {\n store.value.reactive.dataBindAes[dataSource.value] = createContinuousMappingFromPalette(value);\n }\n}\nconst NORMALIZATION_DIRECTION: SimpleOption[] = [\n { label: 'None', value: null },\n { label: 'Columns', value: 'column' },\n { label: 'Rows', value: 'row' },\n];\nconst NORMALIZATION_METHOD: SimpleOption[] = [\n { label: 'z-score', value: 'standardScaling' },\n { label: 'Min-max', value: 'meanNormalization' },\n];\nconst NA_VALUE_OPTIONS: SimpleOption[] = [\n { label: 'empty', value: null },\n { label: 'Special value', value: 'custom' },\n];\nconst AGGREGATION_METHOD = AGGREGATION_METHOD_OPTIONS;\n\nconst NAValueOption = ref(settings.value.NAValueAs !== null ? 'custom' : settings.value.NAValueAs);\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <MultiselectButton\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\n <FormWrapper\n v-if=\"palettesOpen\"\n title=\"Color Palette\"\n back-title=\"Color mapping\"\n @form:close=\"palettesOpen = false\"\n >\n <PalettesForm :selected=\"palette\" :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\" @select=\"onPaletteSelect\" />\n </FormWrapper>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.disableClusteringX\"/>\n <span>Disable clustering for X axis</span>\n </div>\n <div v-if=\"!settings.disableClusteringX\" class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.dendrogramX\" />\n <span>Show dendrogram for X axis</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.disableClusteringY\"/>\n <span>Disable clustering for Y axis</span>\n </div>\n <div v-if=\"!settings.disableClusteringY\" class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.dendrogramY\"/>\n <span>Show dendrogram for Y axis</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationDirection\"\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.normalizationMethod\"\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <PlBtnGroup\n v-model=\"settings.aggregationMethod\"\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <PlBtnGroup\n v-model=\"NAValueOption\"\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n @update:modelValue=\"(value:unknown) => {\n if (value === 'custom') {\n settings.NAValueAs = customNA;\n } else {\n settings.NAValueAs = value as number|null;\n }\n }\"\n />\n <PlNumberField\n v-model=\"customNA\"\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyRows\"/>\n <span>Show empty rows</span>\n </div>\n <div class=\"checkbox-item\">\n <PlCheckbox v-model=\"settings.showEmptyColumns\"/>\n <span>Show empty columns</span>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapClustered.vue.d.ts","sourceRoot":"","sources":["../../../../../src/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue"],"names":[],"mappings":";AA0gBA,wBAKG"}
1
+ {"version":3,"file":"HeatmapClustered.vue.d.ts","sourceRoot":"","sources":["../../../../../src/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue"],"names":[],"mappings":";AA8iBA,wBAKG"}