@milaboratories/graph-maker 1.1.168 → 1.1.170

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 (69) hide show
  1. package/dist/GraphMaker/constantsCommon.d.ts +3 -0
  2. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  3. package/dist/GraphMaker/constantsCommon.js +9 -6
  4. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  5. package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.d.ts.map +1 -1
  6. package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.js +60 -56
  7. package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.js.map +1 -1
  8. package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.d.ts.map +1 -1
  9. package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.js +86 -58
  10. package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.js.map +1 -1
  11. package/dist/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue.js +109 -112
  12. package/dist/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue.js.map +1 -1
  13. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +20 -0
  14. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  15. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +19 -15
  16. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  17. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +3 -3
  18. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +8 -8
  19. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  20. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +23 -23
  21. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  22. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/BubbleSettingsImpl.js +19 -14
  23. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/BubbleSettingsImpl.js.map +1 -1
  24. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js +132 -132
  25. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js.map +1 -1
  26. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js +53 -53
  27. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js.map +1 -1
  28. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/ChartsGroup.js.map +1 -1
  29. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js +7 -7
  30. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js.map +1 -1
  31. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js +49 -83
  32. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js.map +1 -1
  33. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js +51 -34
  34. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js.map +1 -1
  35. package/dist/node_modules/@milaboratories/miplots4/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
  36. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js +2 -2
  37. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js.map +1 -1
  38. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  39. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js.map +1 -1
  40. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/AnnotationCellsSvg.js.map +1 -1
  41. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/index.js.map +1 -1
  42. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/CanvasCells.js +31 -31
  43. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/CanvasCells.js.map +1 -1
  44. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js +20 -20
  45. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js.map +1 -1
  46. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js +12 -12
  47. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js.map +1 -1
  48. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/SvgCells.js +14 -14
  49. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/SvgCells.js.map +1 -1
  50. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/tooltipUtils.js +14 -14
  51. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/tooltipUtils.js.map +1 -1
  52. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/fillCellsData.js +244 -0
  53. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/fillCellsData.js.map +1 -0
  54. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js +28 -214
  55. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js.map +1 -1
  56. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js +26 -26
  57. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js.map +1 -1
  58. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js +8 -8
  59. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js.map +1 -1
  60. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  61. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/Lasso.js +98 -103
  62. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/Lasso.js.map +1 -1
  63. package/dist/node_modules/@milaboratories/miplots4/dist/types/bubble.js +23 -12
  64. package/dist/node_modules/@milaboratories/miplots4/dist/types/bubble.js.map +1 -1
  65. package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetOrGroupKey.js +7 -0
  66. package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetOrGroupKey.js.map +1 -0
  67. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +165 -95
  68. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
  69. package/package.json +3 -3
@@ -1,121 +1,149 @@
1
- import { defineComponent as k, computed as u, ref as v, createElementBlock as T, openBlock as b, Fragment as O, createVNode as a, createBlock as E, createCommentVNode as P, createElementVNode as d, unref as s, withCtx as B } from "vue";
2
- import { useStore as I } from "../../../store.js";
3
- import { DEFAULT_CONTINUOUS_PALETTE as L, DEFAULT_BLACK as U, PALETTE_MAP as y } from "../../../constantsAesthetic.js";
4
- import { createContinuousMappingFromPalette as x } from "../../../dataBindAes.js";
5
- import z from "../../../components/MultiselectButton.vue.js";
6
- import M from "../../../components/AesSettings/PalettesForm.vue.js";
7
- import D from "../../../components/AesSettings/FormWrapper.vue.js";
8
- import { PlBtnGroup as f, PlNumberField as F } from "@platforma-sdk/ui-vue";
9
- import $ from "../AesSelector.vue.js";
10
- const w = { class: "input-item" }, R = { class: "button-group-item" }, G = { class: "button-group-item" }, Z = {
1
+ import { defineComponent as B, computed as s, ref as v, createElementBlock as O, openBlock as A, Fragment as x, createVNode as a, createBlock as y, createCommentVNode as E, createElementVNode as u, unref as n, withCtx as U } from "vue";
2
+ import { useStore as P } from "../../../store.js";
3
+ import { DEFAULT_CONTINUOUS_PALETTE as _, DEFAULT_BLACK as I, PALETTE_MAP as L } from "../../../constantsAesthetic.js";
4
+ import { createContinuousMappingFromPalette as z } from "../../../dataBindAes.js";
5
+ import D from "../../../components/MultiselectButton.vue.js";
6
+ import F from "../../../components/AesSettings/PalettesForm.vue.js";
7
+ import $ from "../../../components/AesSettings/FormWrapper.vue.js";
8
+ import { PlBtnGroup as p, PlCheckbox as V, PlNumberField as G } from "@platforma-sdk/ui-vue";
9
+ import R from "../AesSelector.vue.js";
10
+ const w = { class: "input-item" }, X = { class: "button-group-item" }, Y = { class: "button-group-item" }, H = { class: "checkbox-item" }, Z = { class: "checkbox-item" }, K = { class: "button-group-item" }, j = {
11
11
  class: "button-group-item",
12
12
  style: { display: "flex", alignItems: "end" }
13
- }, ee = /* @__PURE__ */ k({
13
+ }, ue = /* @__PURE__ */ B({
14
14
  __name: "Bubble",
15
- setup(H) {
16
- const n = I(), t = u(() => n.value.reactive.layersSettings.bubble), N = u(() => n.value.reactive.optionsState);
17
- u(() => n.value.inputGuide.value);
18
- const i = u(() => {
15
+ setup(q) {
16
+ const i = P(), t = s(() => i.value.reactive.layersSettings.bubble), f = s(() => i.value.reactive.optionsState);
17
+ s(() => i.value.inputGuide.value);
18
+ const r = s(() => {
19
19
  var o;
20
- return (o = N.value.components.valueColor.selectorStates[0]) == null ? void 0 : o.selectedSource;
21
- }), V = u(() => {
20
+ return (o = f.value.components.valueColor.selectorStates[0]) == null ? void 0 : o.selectedSource;
21
+ }), N = s(() => {
22
22
  var o;
23
- return i.value ? (o = n.value.reactive.dataBindAes[i.value]) == null ? void 0 : o.palette : void 0;
24
- }), r = v(!1), m = v(V.value ?? L);
23
+ return r.value ? (o = i.value.reactive.dataBindAes[r.value]) == null ? void 0 : o.palette : void 0;
24
+ }), m = v(!1), d = v(N.value ?? _);
25
25
  function C(o) {
26
- m.value = o, r.value = !1, i.value && (n.value.reactive.dataBindAes[i.value] = x(o));
26
+ d.value = o, m.value = !1, r.value && (i.value.reactive.dataBindAes[r.value] = z(o));
27
27
  }
28
- const g = [
28
+ const k = [
29
29
  { label: "None", value: null },
30
30
  { label: "Columns", value: "column" },
31
31
  { label: "Rows", value: "row" }
32
- ], S = [
32
+ ], M = [
33
33
  { label: "z-score", value: "standardScaling" },
34
34
  { label: "Min-max", value: "meanNormalization" }
35
- ], A = u({
36
- get: () => t.value.strokeColor ?? U,
35
+ ], S = [
36
+ { label: "Mean", value: "mean" },
37
+ { label: "Min", value: "min" },
38
+ { label: "Max", value: "max" },
39
+ { label: "Median", value: "median" }
40
+ ], b = s({
41
+ get: () => t.value.strokeColor ?? I,
37
42
  set: (o) => {
38
43
  t.value.strokeColor = o;
39
44
  }
40
- }), _ = [
45
+ }), T = [
41
46
  { label: "empty", value: null },
42
47
  { label: "Special value", value: "custom" }
43
- ], p = v(t.value.NAValueAs !== null ? "custom" : t.value.NAValueAs), c = v(t.value.NAValueAs ?? 0);
44
- return (o, e) => (b(), T(O, null, [
45
- a(z, {
48
+ ], g = v(t.value.NAValueAs !== null ? "custom" : t.value.NAValueAs), c = v(t.value.NAValueAs ?? 0);
49
+ return (o, e) => (A(), O(x, null, [
50
+ a(D, {
46
51
  label: "Color Palette ",
47
- title: s(y)[m.value].title,
48
- palette: m.value,
52
+ title: n(L)[d.value].title,
53
+ palette: d.value,
49
54
  onButtonClick: e[0] || (e[0] = (l) => {
50
- r.value = !0;
55
+ m.value = !0;
51
56
  })
52
57
  }, null, 8, ["title", "palette"]),
53
- r.value ? (b(), E(D, {
58
+ m.value ? (A(), y($, {
54
59
  key: 0,
55
60
  title: "Color Palette",
56
61
  "back-title": "Color mapping",
57
- "onForm:close": e[1] || (e[1] = (l) => r.value = !1)
62
+ "onForm:close": e[1] || (e[1] = (l) => m.value = !1)
58
63
  }, {
59
- default: B(() => [
60
- a(M, {
61
- selected: m.value,
64
+ default: U(() => [
65
+ a(F, {
66
+ selected: d.value,
62
67
  categorical: !1,
63
68
  onSelect: C
64
69
  }, null, 8, ["selected"])
65
70
  ]),
66
71
  _: 1
67
- })) : P("", !0),
68
- d("div", w, [
69
- a($, {
72
+ })) : E("", !0),
73
+ u("div", w, [
74
+ a(R, {
70
75
  label: "Stroke color",
71
76
  "form-title": "Stroke Color Settings",
72
77
  "form-back-title": "Layers",
73
78
  type: "stroke",
74
79
  "possible-aes-source-inputs": [],
75
- selected: A.value,
76
- onAesUpdate: e[2] || (e[2] = (l) => A.value = l)
80
+ selected: b.value,
81
+ onAesUpdate: e[2] || (e[2] = (l) => b.value = l)
77
82
  }, null, 8, ["selected"])
78
83
  ]),
79
- d("div", R, [
80
- a(s(f), {
84
+ u("div", X, [
85
+ a(n(p), {
81
86
  label: "Normalize by",
82
- options: g,
87
+ options: k,
83
88
  compact: !0,
84
89
  modelValue: t.value.normalizationDirection,
85
90
  "onUpdate:modelValue": e[3] || (e[3] = (l) => t.value.normalizationDirection = l)
86
91
  }, null, 8, ["modelValue"])
87
92
  ]),
88
- d("div", G, [
89
- a(s(f), {
93
+ u("div", Y, [
94
+ a(n(p), {
90
95
  label: "Normalization method",
91
- options: S,
96
+ options: M,
92
97
  compact: !0,
93
98
  modelValue: t.value.normalizationMethod,
94
99
  "onUpdate:modelValue": e[4] || (e[4] = (l) => t.value.normalizationMethod = l)
95
100
  }, null, 8, ["modelValue"])
96
101
  ]),
97
- d("div", Z, [
98
- a(s(f), {
102
+ u("div", H, [
103
+ a(n(V), {
104
+ modelValue: t.value.aggregateByX,
105
+ "onUpdate:modelValue": e[5] || (e[5] = (l) => t.value.aggregateByX = l)
106
+ }, null, 8, ["modelValue"]),
107
+ e[12] || (e[12] = u("span", null, "Aggregate X groups", -1))
108
+ ]),
109
+ u("div", Z, [
110
+ a(n(V), {
111
+ modelValue: t.value.aggregateByY,
112
+ "onUpdate:modelValue": e[6] || (e[6] = (l) => t.value.aggregateByY = l)
113
+ }, null, 8, ["modelValue"]),
114
+ e[13] || (e[13] = u("span", null, "Aggregate Y groups", -1))
115
+ ]),
116
+ u("div", K, [
117
+ a(n(p), {
118
+ label: "Aggregation method",
119
+ options: S,
120
+ compact: !0,
121
+ modelValue: t.value.aggregationMethod,
122
+ "onUpdate:modelValue": e[7] || (e[7] = (l) => t.value.aggregationMethod = l)
123
+ }, null, 8, ["modelValue"])
124
+ ]),
125
+ u("div", j, [
126
+ a(n(p), {
99
127
  label: "Treat NA value as:",
100
- options: _,
128
+ options: T,
101
129
  compact: !0,
102
- modelValue: p.value,
130
+ modelValue: g.value,
103
131
  "onUpdate:modelValue": [
104
- e[5] || (e[5] = (l) => p.value = l),
105
- e[6] || (e[6] = (l) => {
132
+ e[8] || (e[8] = (l) => g.value = l),
133
+ e[9] || (e[9] = (l) => {
106
134
  l === "custom" ? t.value.NAValueAs = c.value : t.value.NAValueAs = l;
107
135
  })
108
136
  ]
109
137
  }, null, 8, ["modelValue"]),
110
- a(s(F), {
138
+ a(n(G), {
111
139
  style: { height: "33px", marginLeft: "16px", width: "75px" },
112
- disabled: p.value !== "custom",
140
+ disabled: g.value !== "custom",
113
141
  label: "NA value",
114
142
  useIncrementButtons: !1,
115
143
  modelValue: c.value,
116
144
  "onUpdate:modelValue": [
117
- e[7] || (e[7] = (l) => c.value = l),
118
- e[8] || (e[8] = (l) => {
145
+ e[10] || (e[10] = (l) => c.value = l),
146
+ e[11] || (e[11] = (l) => {
119
147
  l !== void 0 && (t.value.NAValueAs = l);
120
148
  })
121
149
  ]
@@ -125,6 +153,6 @@ const w = { class: "input-item" }, R = { class: "button-group-item" }, G = { cla
125
153
  }
126
154
  });
127
155
  export {
128
- ee as default
156
+ ue as default
129
157
  };
130
158
  //# sourceMappingURL=Bubble.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Bubble.vue.js","sources":["../../../../../src/GraphMaker/forms/LayersForm/Layer/Bubble.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../store';\nimport { BubbleLayer } from '../../../types';\nimport { computed, ref } from 'vue';\nimport {\n DEFAULT_BLACK,\n DEFAULT_CONTINUOUS_PALETTE,\n PALETTE_MAP\n} from '../../../constantsAesthetic';\nimport { 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 { BubbleUIState, InputGuide } from '@milaboratories/pf-plots';\nimport { PlBtnGroup, PlNumberField, SimpleOption } from '@platforma-sdk/ui-vue';\nimport AesSelector from '../AesSelector.vue';\n\nconst store = useStore();\nconst layer: BubbleLayer = 'bubble';\nconst settings = computed(() => store.value.reactive.layersSettings.bubble);\nconst optionsState = computed(() => store.value.reactive.optionsState as BubbleUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<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 ?? DEFAULT_CONTINUOUS_PALETTE);\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]\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 <multiselect-button\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\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 class=\"input-item\">\n <aes-selector\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 <pl-btn-group\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n v-model=\"settings.normalizationDirection\"\n />\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.normalizationMethod\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <pl-btn-group\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n v-model=\"NAValueOption\"\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 <pl-number-field\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n v-model=\"customNA\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"names":["store","useStore","settings","computed","optionsState","valueColor","_a","savedDataValuePalette","palettesOpen","ref","palette","DEFAULT_CONTINUOUS_PALETTE","onPaletteSelect","value","createContinuousMappingFromPalette","NORMALIZATION_DIRECTION","NORMALIZATION_METHOD","stroke","DEFAULT_BLACK","v","NA_VALUE_OPTIONS","NAValueOption","customNA"],"mappings":";;;;;;;;;;;;;;;AAkBA,UAAMA,IAAQC,EAAA,GAERC,IAAWC,EAAS,MAAMH,EAAM,MAAM,SAAS,eAAe,MAAM,GACpEI,IAAeD,EAAS,MAAMH,EAAM,MAAM,SAAS,YAA6B;AACnE,IAAAG,EAAS,MAAMH,EAAM,MAAM,WAAW,KAAkC;AAE3F,UAAMK,IAAaF,EAAS,MAAA;;AAAM,cAAAG,IAAAF,EAAa,MAAM,WAAW,WAAW,eAAe,CAAC,MAAzD,gBAAAE,EAA4D;AAAA,KAAc,GACtGC,IAAwBJ,EAAS,MAAA;;AAAM,aAAAE,EAAW,SAAQC,IAAAN,EAAM,MAAM,SAAS,YAAYK,EAAW,KAAK,MAAjD,gBAAAC,EAAoD,UAAU;AAAA,KAAS,GAEjIE,IAAeC,EAAI,EAAK,GACxBC,IAAUD,EAAuBF,EAAsB,SAA8BI,CAA0B;AAErH,aAASC,EAAgBC,GAA0B;AACjD,MAAAH,EAAQ,QAAQG,GAChBL,EAAa,QAAQ,IACjBH,EAAW,UACbL,EAAM,MAAM,SAAS,YAAYK,EAAW,KAAK,IAAIS,EAAmCD,CAAK;AAAA,IAEjG;AAEA,UAAME,IAAyC;AAAA,MAC7C,EAAC,OAAO,QAAQ,OAAO,KAAA;AAAA,MACvB,EAAC,OAAO,WAAW,OAAO,SAAA;AAAA,MAC1B,EAAC,OAAO,QAAQ,OAAO,MAAA;AAAA,IAAK,GAExBC,IAAsC;AAAA,MAC1C,EAAC,OAAO,WAAW,OAAO,kBAAA;AAAA,MAC1B,EAAC,OAAO,WAAW,OAAO,oBAAA;AAAA,IAAmB,GAGzCC,IAASd,EAAS;AAAA,MACtB,KAAK,MACID,EAAS,MAAM,eAAegB;AAAA,MAEvC,KAAK,CAACC,MAAa;AACjB,QAAAjB,EAAS,MAAM,cAAciB;AAAA,MAC/B;AAAA,IAAA,CACD,GAEKC,IAAmC;AAAA,MACvC,EAAE,OAAO,SAAS,OAAO,KAAA;AAAA,MACzB,EAAE,OAAO,iBAAiB,OAAO,SAAA;AAAA,IAAS,GAGtCC,IAAgBZ,EAAIP,EAAS,MAAM,cAAc,OAAO,WAAWA,EAAS,MAAM,SAAS,GAC3FoB,IAAWb,EAAIP,EAAS,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Bubble.vue.js","sources":["../../../../../src/GraphMaker/forms/LayersForm/Layer/Bubble.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../store';\nimport { BubbleLayer } from '../../../types';\nimport { computed, ref } from 'vue';\nimport {\n DEFAULT_BLACK,\n DEFAULT_CONTINUOUS_PALETTE,\n PALETTE_MAP\n} from '../../../constantsAesthetic';\nimport { 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 { BubbleUIState, InputGuide } from '@milaboratories/pf-plots';\nimport { PlBtnGroup, PlCheckbox, PlNumberField, SimpleOption } from '@platforma-sdk/ui-vue';\nimport AesSelector from '../AesSelector.vue';\n\nconst store = useStore();\nconst layer: BubbleLayer = 'bubble';\nconst settings = computed(() => store.value.reactive.layersSettings.bubble);\nconst optionsState = computed(() => store.value.reactive.optionsState as BubbleUIState);\nconst inputGuide = computed(() => store.value.inputGuide.value as InputGuide<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 ?? DEFAULT_CONTINUOUS_PALETTE);\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: SimpleOption[] = [\n {label: 'Mean', value: 'mean'},\n {label: 'Min', value: 'min'},\n {label: 'Max', value: 'max'},\n {label: 'Median', value: 'median'},\n];\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 <multiselect-button\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\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 class=\"input-item\">\n <aes-selector\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 <pl-btn-group\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n v-model=\"settings.normalizationDirection\"\n />\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.normalizationMethod\"\n />\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.aggregationMethod\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <pl-btn-group\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n v-model=\"NAValueOption\"\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 <pl-number-field\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n v-model=\"customNA\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"names":["store","useStore","settings","computed","optionsState","valueColor","_a","savedDataValuePalette","palettesOpen","ref","palette","DEFAULT_CONTINUOUS_PALETTE","onPaletteSelect","value","createContinuousMappingFromPalette","NORMALIZATION_DIRECTION","NORMALIZATION_METHOD","AGGREGATION_METHOD","stroke","DEFAULT_BLACK","v","NA_VALUE_OPTIONS","NAValueOption","customNA"],"mappings":";;;;;;;;;;;;;;;AAkBA,UAAMA,IAAQC,EAAA,GAERC,IAAWC,EAAS,MAAMH,EAAM,MAAM,SAAS,eAAe,MAAM,GACpEI,IAAeD,EAAS,MAAMH,EAAM,MAAM,SAAS,YAA6B;AACnE,IAAAG,EAAS,MAAMH,EAAM,MAAM,WAAW,KAAkC;AAE3F,UAAMK,IAAaF,EAAS,MAAA;;AAAM,cAAAG,IAAAF,EAAa,MAAM,WAAW,WAAW,eAAe,CAAC,MAAzD,gBAAAE,EAA4D;AAAA,KAAc,GACtGC,IAAwBJ,EAAS,MAAA;;AAAM,aAAAE,EAAW,SAAQC,IAAAN,EAAM,MAAM,SAAS,YAAYK,EAAW,KAAK,MAAjD,gBAAAC,EAAoD,UAAU;AAAA,KAAS,GAEjIE,IAAeC,EAAI,EAAK,GACxBC,IAAUD,EAAuBF,EAAsB,SAA8BI,CAA0B;AAErH,aAASC,EAAgBC,GAA0B;AACjD,MAAAH,EAAQ,QAAQG,GAChBL,EAAa,QAAQ,IACjBH,EAAW,UACbL,EAAM,MAAM,SAAS,YAAYK,EAAW,KAAK,IAAIS,EAAmCD,CAAK;AAAA,IAEjG;AAEA,UAAME,IAAyC;AAAA,MAC7C,EAAC,OAAO,QAAQ,OAAO,KAAA;AAAA,MACvB,EAAC,OAAO,WAAW,OAAO,SAAA;AAAA,MAC1B,EAAC,OAAO,QAAQ,OAAO,MAAA;AAAA,IAAK,GAExBC,IAAsC;AAAA,MAC1C,EAAC,OAAO,WAAW,OAAO,kBAAA;AAAA,MAC1B,EAAC,OAAO,WAAW,OAAO,oBAAA;AAAA,IAAmB,GAEzCC,IAAqC;AAAA,MACzC,EAAC,OAAO,QAAQ,OAAO,OAAA;AAAA,MACvB,EAAC,OAAO,OAAO,OAAO,MAAA;AAAA,MACtB,EAAC,OAAO,OAAO,OAAO,MAAA;AAAA,MACtB,EAAC,OAAO,UAAU,OAAO,SAAA;AAAA,IAAQ,GAG7BC,IAASf,EAAS;AAAA,MACtB,KAAK,MACID,EAAS,MAAM,eAAeiB;AAAA,MAEvC,KAAK,CAACC,MAAa;AACjB,QAAAlB,EAAS,MAAM,cAAckB;AAAA,MAC/B;AAAA,IAAA,CACD,GAEKC,IAAmC;AAAA,MACvC,EAAE,OAAO,SAAS,OAAO,KAAA;AAAA,MACzB,EAAE,OAAO,iBAAiB,OAAO,SAAA;AAAA,IAAS,GAGtCC,IAAgBb,EAAIP,EAAS,MAAM,cAAc,OAAO,WAAWA,EAAS,MAAM,SAAS,GAC3FqB,IAAWd,EAAIP,EAAS,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,142 +1,139 @@
1
- import { defineComponent as y, computed as m, ref as v, resolveComponent as B, createElementBlock as C, openBlock as A, Fragment as E, createVNode as o, createBlock as I, createCommentVNode as _, createElementVNode as u, unref as s, withCtx as P } from "vue";
1
+ import { defineComponent as y, computed as m, ref as v, createElementBlock as B, openBlock as V, Fragment as C, createVNode as o, createBlock as E, createCommentVNode as I, createElementVNode as u, unref as n, withCtx as P } from "vue";
2
2
  import { useStore as U } from "../../../../store.js";
3
- import { DEFAULT_CONTINUOUS_PALETTE as k, PALETTE_MAP as z } from "../../../../constantsAesthetic.js";
4
- import { createContinuousMappingFromPalette as D } from "../../../../dataBindAes.js";
5
- import L from "../../../../components/MultiselectButton.vue.js";
6
- import G from "../../../../components/AesSettings/PalettesForm.vue.js";
7
- import F from "../../../../components/AesSettings/FormWrapper.vue.js";
8
- import { PlBtnGroup as p, PlNumberField as R } from "@platforma-sdk/ui-vue";
9
- const $ = { class: "button-group-item" }, w = { class: "button-group-item" }, H = { class: "checkbox-item" }, X = { class: "checkbox-item" }, Y = { class: "button-group-item" }, Z = {
3
+ import { DEFAULT_CONTINUOUS_PALETTE as k, PALETTE_MAP as _ } from "../../../../constantsAesthetic.js";
4
+ import { createContinuousMappingFromPalette as z } from "../../../../dataBindAes.js";
5
+ import D from "../../../../components/MultiselectButton.vue.js";
6
+ import L from "../../../../components/AesSettings/PalettesForm.vue.js";
7
+ import G from "../../../../components/AesSettings/FormWrapper.vue.js";
8
+ import { PlBtnGroup as p, PlCheckbox as A, PlNumberField as F } from "@platforma-sdk/ui-vue";
9
+ const R = { class: "button-group-item" }, $ = { class: "button-group-item" }, w = { class: "checkbox-item" }, H = { class: "checkbox-item" }, X = { class: "button-group-item" }, Y = {
10
10
  class: "button-group-item",
11
11
  style: { display: "flex", alignItems: "end" }
12
- }, te = /* @__PURE__ */ y({
12
+ }, le = /* @__PURE__ */ y({
13
13
  __name: "Heatmap",
14
- setup(j) {
15
- const i = U(), t = m(() => i.value.reactive.layersSettings.heatmap), b = m(() => i.value.reactive.optionsState), f = m(() => i.value.inputGuide.value), n = m(() => {
14
+ setup(Z) {
15
+ const s = U(), t = m(() => s.value.reactive.layersSettings.heatmap), b = m(() => s.value.reactive.optionsState), f = m(() => s.value.inputGuide.value), i = m(() => {
16
16
  var a;
17
17
  return (a = b.value.components.value.selectorStates[0]) == null ? void 0 : a.selectedSource;
18
18
  }), N = m(() => {
19
19
  var a;
20
- return n.value ? (a = i.value.reactive.dataBindAes[n.value]) == null ? void 0 : a.palette : void 0;
20
+ return i.value ? (a = s.value.reactive.dataBindAes[i.value]) == null ? void 0 : a.palette : void 0;
21
21
  }), r = v(!1), d = v(N.value ?? k);
22
22
  function M(a) {
23
- d.value = a, r.value = !1, n.value && (i.value.reactive.dataBindAes[n.value] = D(a));
23
+ d.value = a, r.value = !1, i.value && (s.value.reactive.dataBindAes[i.value] = z(a));
24
24
  }
25
25
  const S = [
26
26
  { label: "None", value: null },
27
27
  { label: "Columns", value: "column" },
28
28
  { label: "Rows", value: "row" }
29
- ], x = [
29
+ ], O = [
30
30
  { label: "z-score", value: "standardScaling" },
31
31
  { label: "Min-max", value: "meanNormalization" }
32
- ], O = [
32
+ ], T = [
33
33
  { label: "empty", value: null },
34
34
  { label: "Special value", value: "custom" }
35
- ], T = [
35
+ ], x = [
36
36
  { label: "Mean", value: "mean" },
37
37
  { label: "Min", value: "min" },
38
38
  { label: "Max", value: "max" },
39
39
  { label: "Median", value: "median" }
40
40
  ], g = v(t.value.NAValueAs === null ? null : "custom"), c = v(t.value.NAValueAs ?? 0);
41
- return (a, e) => {
42
- const V = B("pl-checkbox");
43
- return A(), C(E, null, [
44
- o(L, {
45
- label: "Color Palette ",
46
- title: s(z)[d.value].title,
47
- palette: d.value,
48
- onButtonClick: e[0] || (e[0] = (l) => {
49
- r.value = !0;
50
- })
51
- }, null, 8, ["title", "palette"]),
52
- r.value ? (A(), I(F, {
53
- key: 0,
54
- title: "Color Palette",
55
- "back-title": "Color mapping",
56
- "onForm:close": e[1] || (e[1] = (l) => r.value = !1)
57
- }, {
58
- default: P(() => [
59
- o(G, {
60
- selected: d.value,
61
- categorical: n.value ? f.value.getSourceInfo(n.value).type === "String" : !1,
62
- onSelect: M
63
- }, null, 8, ["selected", "categorical"])
64
- ]),
65
- _: 1
66
- })) : _("", !0),
67
- u("div", $, [
68
- o(s(p), {
69
- label: "Normalize by",
70
- options: S,
71
- compact: !0,
72
- modelValue: t.value.normalizationDirection,
73
- "onUpdate:modelValue": e[2] || (e[2] = (l) => t.value.normalizationDirection = l)
74
- }, null, 8, ["modelValue"])
75
- ]),
76
- u("div", w, [
77
- o(s(p), {
78
- label: "Normalization method",
79
- options: x,
80
- compact: !0,
81
- modelValue: t.value.normalizationMethod,
82
- "onUpdate:modelValue": e[3] || (e[3] = (l) => t.value.normalizationMethod = l)
83
- }, null, 8, ["modelValue"])
84
- ]),
85
- u("div", H, [
86
- o(V, {
87
- modelValue: t.value.aggregateByX,
88
- "onUpdate:modelValue": e[4] || (e[4] = (l) => t.value.aggregateByX = l)
89
- }, null, 8, ["modelValue"]),
90
- e[11] || (e[11] = u("span", null, "Aggregate X groups", -1))
91
- ]),
92
- u("div", X, [
93
- o(V, {
94
- modelValue: t.value.aggregateByY,
95
- "onUpdate:modelValue": e[5] || (e[5] = (l) => t.value.aggregateByY = l)
96
- }, null, 8, ["modelValue"]),
97
- e[12] || (e[12] = u("span", null, "Aggregate Y groups", -1))
98
- ]),
99
- u("div", Y, [
100
- o(s(p), {
101
- label: "Aggregation method",
102
- options: T,
103
- compact: !0,
104
- modelValue: t.value.aggregationMethod,
105
- "onUpdate:modelValue": e[6] || (e[6] = (l) => t.value.aggregationMethod = l)
106
- }, null, 8, ["modelValue"])
41
+ return (a, e) => (V(), B(C, null, [
42
+ o(D, {
43
+ label: "Color Palette ",
44
+ title: n(_)[d.value].title,
45
+ palette: d.value,
46
+ onButtonClick: e[0] || (e[0] = (l) => {
47
+ r.value = !0;
48
+ })
49
+ }, null, 8, ["title", "palette"]),
50
+ r.value ? (V(), E(G, {
51
+ key: 0,
52
+ title: "Color Palette",
53
+ "back-title": "Color mapping",
54
+ "onForm:close": e[1] || (e[1] = (l) => r.value = !1)
55
+ }, {
56
+ default: P(() => [
57
+ o(L, {
58
+ selected: d.value,
59
+ categorical: i.value ? f.value.getSourceInfo(i.value).type === "String" : !1,
60
+ onSelect: M
61
+ }, null, 8, ["selected", "categorical"])
107
62
  ]),
108
- u("div", Z, [
109
- o(s(p), {
110
- label: "Treat NA value as:",
111
- options: O,
112
- compact: !0,
113
- modelValue: g.value,
114
- "onUpdate:modelValue": [
115
- e[7] || (e[7] = (l) => g.value = l),
116
- e[8] || (e[8] = (l) => {
117
- l === "custom" ? t.value.NAValueAs = c.value : t.value.NAValueAs = l;
118
- })
119
- ]
120
- }, null, 8, ["modelValue"]),
121
- o(s(R), {
122
- style: { height: "33px", marginLeft: "16px", width: "75px" },
123
- disabled: g.value !== "custom",
124
- label: "NA value",
125
- useIncrementButtons: !1,
126
- modelValue: c.value,
127
- "onUpdate:modelValue": [
128
- e[9] || (e[9] = (l) => c.value = l),
129
- e[10] || (e[10] = (l) => {
130
- l !== void 0 && (t.value.NAValueAs = l);
131
- })
132
- ]
133
- }, null, 8, ["disabled", "modelValue"])
134
- ])
135
- ], 64);
136
- };
63
+ _: 1
64
+ })) : I("", !0),
65
+ u("div", R, [
66
+ o(n(p), {
67
+ label: "Normalize by",
68
+ options: S,
69
+ compact: !0,
70
+ modelValue: t.value.normalizationDirection,
71
+ "onUpdate:modelValue": e[2] || (e[2] = (l) => t.value.normalizationDirection = l)
72
+ }, null, 8, ["modelValue"])
73
+ ]),
74
+ u("div", $, [
75
+ o(n(p), {
76
+ label: "Normalization method",
77
+ options: O,
78
+ compact: !0,
79
+ modelValue: t.value.normalizationMethod,
80
+ "onUpdate:modelValue": e[3] || (e[3] = (l) => t.value.normalizationMethod = l)
81
+ }, null, 8, ["modelValue"])
82
+ ]),
83
+ u("div", w, [
84
+ o(n(A), {
85
+ modelValue: t.value.aggregateByX,
86
+ "onUpdate:modelValue": e[4] || (e[4] = (l) => t.value.aggregateByX = l)
87
+ }, null, 8, ["modelValue"]),
88
+ e[11] || (e[11] = u("span", null, "Aggregate X groups", -1))
89
+ ]),
90
+ u("div", H, [
91
+ o(n(A), {
92
+ modelValue: t.value.aggregateByY,
93
+ "onUpdate:modelValue": e[5] || (e[5] = (l) => t.value.aggregateByY = l)
94
+ }, null, 8, ["modelValue"]),
95
+ e[12] || (e[12] = u("span", null, "Aggregate Y groups", -1))
96
+ ]),
97
+ u("div", X, [
98
+ o(n(p), {
99
+ label: "Aggregation method",
100
+ options: x,
101
+ compact: !0,
102
+ modelValue: t.value.aggregationMethod,
103
+ "onUpdate:modelValue": e[6] || (e[6] = (l) => t.value.aggregationMethod = l)
104
+ }, null, 8, ["modelValue"])
105
+ ]),
106
+ u("div", Y, [
107
+ o(n(p), {
108
+ label: "Treat NA value as:",
109
+ options: T,
110
+ compact: !0,
111
+ modelValue: g.value,
112
+ "onUpdate:modelValue": [
113
+ e[7] || (e[7] = (l) => g.value = l),
114
+ e[8] || (e[8] = (l) => {
115
+ l === "custom" ? t.value.NAValueAs = c.value : t.value.NAValueAs = l;
116
+ })
117
+ ]
118
+ }, null, 8, ["modelValue"]),
119
+ o(n(F), {
120
+ style: { height: "33px", marginLeft: "16px", width: "75px" },
121
+ disabled: g.value !== "custom",
122
+ label: "NA value",
123
+ useIncrementButtons: !1,
124
+ modelValue: c.value,
125
+ "onUpdate:modelValue": [
126
+ e[9] || (e[9] = (l) => c.value = l),
127
+ e[10] || (e[10] = (l) => {
128
+ l !== void 0 && (t.value.NAValueAs = l);
129
+ })
130
+ ]
131
+ }, null, 8, ["disabled", "modelValue"])
132
+ ])
133
+ ], 64));
137
134
  }
138
135
  });
139
136
  export {
140
- te as default
137
+ le as default
141
138
  };
142
139
  //# sourceMappingURL=Heatmap.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Heatmap.vue.js","sources":["../../../../../../src/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport { HeatmapLayer } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport {\n DEFAULT_CONTINUOUS_PALETTE,\n PALETTE_MAP\n} from '../../../../constantsAesthetic';\nimport { 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 { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport { PlBtnGroup, PlNumberField, SimpleOption } from '@platforma-sdk/ui-vue';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmap';\nconst settings = computed(() => store.value.reactive.layersSettings.heatmap);\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 ?? DEFAULT_CONTINUOUS_PALETTE);\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: SimpleOption[] = [\n {label: 'Mean', value: 'mean'},\n {label: 'Min', value: 'min'},\n {label: 'Max', value: 'max'},\n {label: 'Median', value: 'median'},\n];\n\nconst NAValueOption = ref(settings.value.NAValueAs === null ? null : 'custom');\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <multiselect-button\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\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\"\n :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\"\n @select=\"onPaletteSelect\" />\n </form-wrapper>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n v-model=\"settings.normalizationDirection\"\n />\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.normalizationMethod\"\n\n />\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.aggregationMethod\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <pl-btn-group\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n v-model=\"NAValueOption\"\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 <pl-number-field\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n v-model=\"customNA\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"names":["store","useStore","settings","computed","optionsState","inputGuide","dataSource","_a","savedDataValuePalette","palettesOpen","ref","palette","DEFAULT_CONTINUOUS_PALETTE","onPaletteSelect","value","createContinuousMappingFromPalette","NORMALIZATION_DIRECTION","NORMALIZATION_METHOD","NA_VALUE_OPTIONS","AGGREGATION_METHOD","NAValueOption","customNA"],"mappings":";;;;;;;;;;;;;;AAgBA,UAAMA,IAAQC,EAAA,GAERC,IAAWC,EAAS,MAAMH,EAAM,MAAM,SAAS,eAAe,OAAO,GACrEI,IAAeD,EAAS,MAAMH,EAAM,MAAM,SAAS,YAA8B,GACjFK,IAAaF,EAAS,MAAMH,EAAM,MAAM,WAAW,KAAmC,GAEtFM,IAAaH,EAAS,MAAA;;AAAM,cAAAI,IAAAH,EAAa,MAAM,WAAW,MAAM,eAAe,CAAC,MAApD,gBAAAG,EAAuD;AAAA,KAAc,GACjGC,IAAwBL,EAAS,MAAA;;AAAM,aAAAG,EAAW,SAAQC,IAAAP,EAAM,MAAM,SAAS,YAAYM,EAAW,KAAK,MAAjD,gBAAAC,EAAoD,UAAU;AAAA,KAAS,GAEjIE,IAAeC,EAAI,EAAK,GACxBC,IAAUD,EAAuBF,EAAsB,SAA8BI,CAA0B;AAErH,aAASC,EAAgBC,GAA0B;AACjD,MAAAH,EAAQ,QAAQG,GAChBL,EAAa,QAAQ,IACjBH,EAAW,UACbN,EAAM,MAAM,SAAS,YAAYM,EAAW,KAAK,IAAIS,EAAmCD,CAAK;AAAA,IAEjG;AAEA,UAAME,IAA0C;AAAA,MAC9C,EAAE,OAAO,QAAQ,OAAO,KAAA;AAAA,MACxB,EAAE,OAAO,WAAW,OAAO,SAAA;AAAA,MAC3B,EAAE,OAAO,QAAQ,OAAO,MAAA;AAAA,IAAM,GAE1BC,IAAuC;AAAA,MAC3C,EAAE,OAAO,WAAW,OAAO,kBAAA;AAAA,MAC3B,EAAE,OAAO,WAAW,OAAO,oBAAA;AAAA,IAAoB,GAE3CC,IAAmC;AAAA,MACvC,EAAE,OAAO,SAAS,OAAO,KAAA;AAAA,MACzB,EAAE,OAAO,iBAAiB,OAAO,SAAA;AAAA,IAAS,GAEtCC,IAAqC;AAAA,MACzC,EAAC,OAAO,QAAQ,OAAO,OAAA;AAAA,MACvB,EAAC,OAAO,OAAO,OAAO,MAAA;AAAA,MACtB,EAAC,OAAO,OAAO,OAAO,MAAA;AAAA,MACtB,EAAC,OAAO,UAAU,OAAO,SAAA;AAAA,IAAQ,GAG7BC,IAAgBV,EAAIR,EAAS,MAAM,cAAc,OAAO,OAAO,QAAQ,GACvEmB,IAAWX,EAAIR,EAAS,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Heatmap.vue.js","sources":["../../../../../../src/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport { HeatmapLayer } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport {\n DEFAULT_CONTINUOUS_PALETTE,\n PALETTE_MAP\n} from '../../../../constantsAesthetic';\nimport { 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 { HeatmapUIState, InputGuide } from '@milaboratories/pf-plots';\nimport { PlBtnGroup, PlCheckbox, PlNumberField, SimpleOption } from '@platforma-sdk/ui-vue';\n\nconst store = useStore();\nconst layer: HeatmapLayer = 'heatmap';\nconst settings = computed(() => store.value.reactive.layersSettings.heatmap);\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 ?? DEFAULT_CONTINUOUS_PALETTE);\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: SimpleOption[] = [\n {label: 'Mean', value: 'mean'},\n {label: 'Min', value: 'min'},\n {label: 'Max', value: 'max'},\n {label: 'Median', value: 'median'},\n];\n\nconst NAValueOption = ref(settings.value.NAValueAs === null ? null : 'custom');\nconst customNA = ref(settings.value.NAValueAs ?? 0);\n</script>\n\n<template>\n <multiselect-button\n label=\"Color Palette \"\n :title=\"PALETTE_MAP[palette].title\"\n :palette=\"palette\"\n @button-click=\"palettesOpen = true;\"\n />\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\"\n :categorical=\"dataSource ? inputGuide.getSourceInfo(dataSource).type === 'String' : false\"\n @select=\"onPaletteSelect\" />\n </form-wrapper>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Normalize by\"\n :options=\"NORMALIZATION_DIRECTION\"\n :compact=\"true\"\n v-model=\"settings.normalizationDirection\"\n />\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Normalization method\"\n :options=\"NORMALIZATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.normalizationMethod\"\n />\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.aggregateByX\"/>\n <span>Aggregate X groups</span>\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.aggregateByY\"/>\n <span>Aggregate Y groups</span>\n </div>\n <div class=\"button-group-item\">\n <pl-btn-group\n label=\"Aggregation method\"\n :options=\"AGGREGATION_METHOD\"\n :compact=\"true\"\n v-model=\"settings.aggregationMethod\"\n />\n </div>\n <div class=\"button-group-item\" :style=\"{display: 'flex', alignItems: 'end'}\">\n <pl-btn-group\n label=\"Treat NA value as:\"\n :options=\"NA_VALUE_OPTIONS\"\n :compact=\"true\"\n v-model=\"NAValueOption\"\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 <pl-number-field\n :style=\"{height: '33px', marginLeft: '16px', width: '75px'}\"\n :disabled=\"NAValueOption !== 'custom'\"\n label=\"NA value\"\n :useIncrementButtons=\"false\"\n v-model=\"customNA\"\n @update:modelValue=\"(value:unknown) => {\n if (value !== undefined) {\n settings.NAValueAs = value as number;\n }\n }\"\n />\n </div>\n</template>\n"],"names":["store","useStore","settings","computed","optionsState","inputGuide","dataSource","_a","savedDataValuePalette","palettesOpen","ref","palette","DEFAULT_CONTINUOUS_PALETTE","onPaletteSelect","value","createContinuousMappingFromPalette","NORMALIZATION_DIRECTION","NORMALIZATION_METHOD","NA_VALUE_OPTIONS","AGGREGATION_METHOD","NAValueOption","customNA"],"mappings":";;;;;;;;;;;;;;AAgBA,UAAMA,IAAQC,EAAA,GAERC,IAAWC,EAAS,MAAMH,EAAM,MAAM,SAAS,eAAe,OAAO,GACrEI,IAAeD,EAAS,MAAMH,EAAM,MAAM,SAAS,YAA8B,GACjFK,IAAaF,EAAS,MAAMH,EAAM,MAAM,WAAW,KAAmC,GAEtFM,IAAaH,EAAS,MAAA;;AAAM,cAAAI,IAAAH,EAAa,MAAM,WAAW,MAAM,eAAe,CAAC,MAApD,gBAAAG,EAAuD;AAAA,KAAc,GACjGC,IAAwBL,EAAS,MAAA;;AAAM,aAAAG,EAAW,SAAQC,IAAAP,EAAM,MAAM,SAAS,YAAYM,EAAW,KAAK,MAAjD,gBAAAC,EAAoD,UAAU;AAAA,KAAS,GAEjIE,IAAeC,EAAI,EAAK,GACxBC,IAAUD,EAAuBF,EAAsB,SAA8BI,CAA0B;AAErH,aAASC,EAAgBC,GAA0B;AACjD,MAAAH,EAAQ,QAAQG,GAChBL,EAAa,QAAQ,IACjBH,EAAW,UACbN,EAAM,MAAM,SAAS,YAAYM,EAAW,KAAK,IAAIS,EAAmCD,CAAK;AAAA,IAEjG;AAEA,UAAME,IAA0C;AAAA,MAC9C,EAAE,OAAO,QAAQ,OAAO,KAAA;AAAA,MACxB,EAAE,OAAO,WAAW,OAAO,SAAA;AAAA,MAC3B,EAAE,OAAO,QAAQ,OAAO,MAAA;AAAA,IAAM,GAE1BC,IAAuC;AAAA,MAC3C,EAAE,OAAO,WAAW,OAAO,kBAAA;AAAA,MAC3B,EAAE,OAAO,WAAW,OAAO,oBAAA;AAAA,IAAoB,GAE3CC,IAAmC;AAAA,MACvC,EAAE,OAAO,SAAS,OAAO,KAAA;AAAA,MACzB,EAAE,OAAO,iBAAiB,OAAO,SAAA;AAAA,IAAS,GAEtCC,IAAqC;AAAA,MACzC,EAAC,OAAO,QAAQ,OAAO,OAAA;AAAA,MACvB,EAAC,OAAO,OAAO,OAAO,MAAA;AAAA,MACtB,EAAC,OAAO,OAAO,OAAO,MAAA;AAAA,MACtB,EAAC,OAAO,UAAU,OAAO,SAAA;AAAA,IAAQ,GAG7BC,IAAgBV,EAAIR,EAAS,MAAM,cAAc,OAAO,OAAO,QAAQ,GACvEmB,IAAWX,EAAIR,EAAS,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -93,12 +93,32 @@ export declare function composeBubbleSettings(settings: BubbleSettings, reactive
93
93
  label?: string | undefined;
94
94
  valueLabels?: string | undefined;
95
95
  }[] | undefined;
96
+ xGroupBy?: {
97
+ type: "column";
98
+ value: string;
99
+ format?: string | undefined;
100
+ label?: string | undefined;
101
+ valueLabels?: string | undefined;
102
+ }[] | undefined;
103
+ yGroupBy?: {
104
+ type: "column";
105
+ value: string;
106
+ format?: string | undefined;
107
+ label?: string | undefined;
108
+ valueLabels?: string | undefined;
109
+ }[] | undefined;
110
+ keysOrder?: Record<string, string[]> | undefined;
96
111
  normalization?: {
97
112
  direction: "column" | "row";
98
113
  method: "standardScaling" | "meanNormalization";
99
114
  colorRange?: number[] | undefined;
100
115
  sizeRange?: number[] | undefined;
101
116
  } | undefined;
117
+ aggregation?: {
118
+ x?: boolean | undefined;
119
+ y?: boolean | undefined;
120
+ method?: "min" | "max" | "mean" | "median" | undefined;
121
+ } | undefined;
102
122
  NAValueAs?: number | null | undefined;
103
123
  };
104
124
  //# sourceMappingURL=composeBubbleSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composeBubbleSettings.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1D,OAAO,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,aAAa;;;;YA4Bi0R,CAAC;gBAAuC,CAAC;;;;;cAAgI,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAA4G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;aAAuD,CAAC;cAAoC,CAAC;gBAAsC,CAAC;;;kBAAuE,CAAC;iBAAyC,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;sBAA4C,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;YAAqG,CAAC;eAAsC,CAAC;;;kBAA6E,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;;;;YAA4F,CAAC;;;aAA0H,CAAC;aAAmC,CAAC;;;aAAoE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;aAAyE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;kBAAiL,CAAC;iBAAyC,CAAC;;;EAAnuX"}
1
+ {"version":3,"file":"composeBubbleSettings.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1D,OAAO,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,aAAa;;;;YAqCu0U,CAAC;gBAAuC,CAAC;;;;;cAAgI,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAA4G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;aAAuD,CAAC;cAAoC,CAAC;gBAAsC,CAAC;;;kBAAuE,CAAC;iBAAyC,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;sBAA4C,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;YAAqG,CAAC;eAAsC,CAAC;;;kBAA6E,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;;;;YAA4F,CAAC;;;aAA0H,CAAC;aAAmC,CAAC;;;aAAoE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;aAAyE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;;;;;;kBAAuO,CAAC;iBAAyC,CAAC;;;SAAwE,CAAC;SAAgC,CAAC;cAAqC,CAAC;;;EAA/zb"}