@milaboratories/graph-maker 1.1.140 → 1.1.142

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 (115) hide show
  1. package/dist/GraphMaker/components/LassoControls/index.vue.js +1 -1
  2. package/dist/GraphMaker/constantsCommon.d.ts +8 -0
  3. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  4. package/dist/GraphMaker/constantsCommon.js +94 -83
  5. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  6. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts +3 -0
  7. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -0
  8. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +90 -0
  9. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -0
  10. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js +5 -0
  11. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js.map +1 -0
  12. package/dist/GraphMaker/forms/LayersForm/index.vue.d.ts.map +1 -1
  13. package/dist/GraphMaker/forms/LayersForm/index.vue.js +45 -43
  14. package/dist/GraphMaker/forms/LayersForm/index.vue.js.map +1 -1
  15. package/dist/GraphMaker/index.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/index.vue.js +24 -24
  17. package/dist/GraphMaker/index.vue.js.map +1 -1
  18. package/dist/GraphMaker/store.js +9 -9
  19. package/dist/GraphMaker/types.d.ts +1 -1
  20. package/dist/GraphMaker/types.d.ts.map +1 -1
  21. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +16 -0
  22. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  23. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
  24. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +54 -52
  25. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  26. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
  27. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +84 -70
  28. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
  29. package/dist/GraphMaker/utils/loadDefaultSources.js +4 -3
  30. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  31. package/dist/_virtual/_commonjsHelpers.js +3 -5
  32. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  33. package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +1 -1
  34. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +185 -164
  35. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  36. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js +120 -103
  37. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js.map +1 -1
  38. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/ChartsGroup.js +4 -4
  39. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js +105 -0
  40. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js.map +1 -0
  41. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js +66 -59
  42. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
  43. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +57 -54
  44. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js.map +1 -1
  45. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js +17 -0
  46. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js.map +1 -0
  47. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +24 -9
  48. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
  49. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js +9 -0
  50. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js.map +1 -0
  51. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js +8 -0
  52. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js.map +1 -0
  53. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash.js +8 -0
  54. package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/lodash.js.map +1 -1
  55. package/dist/{_virtual/lodash.js → node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js} +1 -1
  56. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js.map +1 -0
  57. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify.js +3 -0
  58. package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/stringify.js.map +1 -1
  59. package/dist/{_virtual/stringify.js → node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js} +1 -1
  60. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js.map +1 -0
  61. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +15 -0
  62. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -0
  63. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +198 -0
  64. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -0
  65. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +342 -0
  66. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -0
  67. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +278 -0
  68. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -0
  69. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +453 -0
  70. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -0
  71. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +203 -0
  72. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -0
  73. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +432 -0
  74. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -0
  75. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +170 -0
  76. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -0
  77. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +315 -0
  78. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -0
  79. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +323 -0
  80. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -0
  81. package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js +11 -0
  82. package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js.map +1 -0
  83. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +36 -3426
  84. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
  85. package/dist/node_modules/@milaboratories/{pl-error-like → pf-plots/dist/node_modules/@milaboratories/pl-error-like}/dist/index.js +1 -1
  86. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +1 -0
  87. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +979 -0
  88. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +1 -0
  89. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js +1599 -0
  90. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js.map +1 -0
  91. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js +19 -0
  92. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js.map +1 -0
  93. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js +26 -0
  94. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
  95. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js +3678 -0
  96. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js.map +1 -0
  97. package/dist/node_modules/{zod → @milaboratories/pf-plots/dist/node_modules/zod}/lib/index.js +1141 -1141
  98. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/zod/lib/index.js.map +1 -0
  99. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +247 -0
  100. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -0
  101. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +62 -0
  102. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -0
  103. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +286 -0
  104. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -0
  105. package/package.json +3 -3
  106. package/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +0 -1
  107. package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +0 -584
  108. package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +0 -1
  109. package/dist/node_modules/@platforma-sdk/model/dist/index.js +0 -1559
  110. package/dist/node_modules/@platforma-sdk/model/dist/index.js.map +0 -1
  111. package/dist/node_modules/json-stringify-safe/stringify.js +0 -20
  112. package/dist/node_modules/json-stringify-safe/stringify.js.map +0 -1
  113. package/dist/node_modules/lodash/lodash.js +0 -3678
  114. package/dist/node_modules/lodash/lodash.js.map +0 -1
  115. package/dist/node_modules/zod/lib/index.js.map +0 -1
@@ -0,0 +1,90 @@
1
+ import { defineComponent as C, computed as o, createElementBlock as g, openBlock as A, Fragment as U, createVNode as r, createElementVNode as i, unref as n } from "vue";
2
+ import { useStore as x } from "../../../../store.js";
3
+ import { useDefaultAes as c } from "./utils.js";
4
+ import { DEFAULT_WHITE as B, DEFAULT_BLACK as E } from "../../../../constantsAesthetic.js";
5
+ import y from "../../AesSelector.vue.js";
6
+ import { Slider as b, PlCheckbox as k } from "@platforma-sdk/ui-vue";
7
+ const F = { class: "checkbox-item" }, L = { class: "checkbox-item" }, m = "stackedArea", I = /* @__PURE__ */ C({
8
+ __name: "StackedArea",
9
+ setup(O) {
10
+ const s = x(), t = o(() => s.value.reactive.layersSettings[m]), p = o(
11
+ () => s.value.reactive.optionsState
12
+ ), S = o(
13
+ () => c(t.value.fillColor, p.value, B)
14
+ ), V = o(
15
+ () => c(t.value.lineColor, p.value, E)
16
+ );
17
+ function d(a, e, l) {
18
+ e.type === "dataCategorical" ? s.value.reactive.layersSettings[m][l] = {
19
+ type: e.inputName
20
+ } : s.value.reactive.layersSettings[m][l] = a, e.type === "dataCategorical" && typeof a != "string" && (s.value.reactive.dataBindAes[e.selectedSource] = a);
21
+ }
22
+ const v = o({
23
+ get: () => t.value.barsOpacity * 100,
24
+ set: (a) => {
25
+ t.value.barsOpacity = a / 100;
26
+ }
27
+ }), f = o({
28
+ get: () => t.value.areaOpacity * 100,
29
+ set: (a) => {
30
+ t.value.areaOpacity = a / 100;
31
+ }
32
+ });
33
+ return (a, e) => (A(), g(U, null, [
34
+ r(y, {
35
+ label: "Fill color",
36
+ "form-title": "Fill Color Settings",
37
+ "form-back-title": "Layers",
38
+ type: "fill",
39
+ selected: S.value,
40
+ onAesUpdate: e[0] || (e[0] = (l, u) => d(l, u, "fillColor"))
41
+ }, null, 8, ["selected"]),
42
+ r(y, {
43
+ label: "Stroke color",
44
+ "form-title": "Stroke Color Settings",
45
+ "form-back-title": "Layers",
46
+ type: "stroke",
47
+ selected: V.value,
48
+ onAesUpdate: e[1] || (e[1] = (l, u) => d(l, u, "lineColor"))
49
+ }, null, 8, ["selected"]),
50
+ r(n(b), {
51
+ label: "Opacity of bars",
52
+ min: 0,
53
+ max: 100,
54
+ step: 1,
55
+ breakpoints: !1,
56
+ measure: "%",
57
+ modelValue: v.value,
58
+ "onUpdate:modelValue": e[2] || (e[2] = (l) => v.value = l)
59
+ }, null, 8, ["modelValue"]),
60
+ r(n(b), {
61
+ label: "Opacity of areas",
62
+ min: 0,
63
+ max: 100,
64
+ step: 1,
65
+ breakpoints: !1,
66
+ measure: "%",
67
+ modelValue: f.value,
68
+ "onUpdate:modelValue": e[3] || (e[3] = (l) => f.value = l)
69
+ }, null, 8, ["modelValue"]),
70
+ i("div", F, [
71
+ r(n(k), {
72
+ modelValue: t.value.normalize,
73
+ "onUpdate:modelValue": e[4] || (e[4] = (l) => t.value.normalize = l)
74
+ }, null, 8, ["modelValue"]),
75
+ e[6] || (e[6] = i("span", null, "Normalize", -1))
76
+ ]),
77
+ i("div", L, [
78
+ r(n(k), {
79
+ modelValue: t.value.showBars,
80
+ "onUpdate:modelValue": e[5] || (e[5] = (l) => t.value.showBars = l)
81
+ }, null, 8, ["modelValue"]),
82
+ e[7] || (e[7] = i("span", null, "Show bars", -1))
83
+ ])
84
+ ], 64));
85
+ }
86
+ });
87
+ export {
88
+ I as default
89
+ };
90
+ //# sourceMappingURL=StackedArea.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackedArea.vue.js","sources":["../../../../../../src/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../../../store';\nimport { computed } from \"vue\";\nimport type { AesOption } from '../../../../components/AesSettings/types';\nimport type { AestheticMappingCategorical } from '../../../../dataBindAes';\nimport { useDefaultAes } from './utils';\nimport { DiscreteUIState } from \"@milaboratories/pf-plots\";\nimport {\n DEFAULT_BLACK,\n DEFAULT_WHITE,\n} from '../../../../constantsAesthetic';\nimport AesSelector from '../../AesSelector.vue';\nimport { PlCheckbox, Slider } from '@platforma-sdk/ui-vue';\n\nconst store = useStore();\nconst layer = \"stackedArea\";\nconst settings = computed(() => store.value.reactive.layersSettings[layer]);\nconst optionsState = computed(\n () => store.value.reactive.optionsState as DiscreteUIState,\n);\n\nconst fillColor = computed(() =>\n useDefaultAes(settings.value.fillColor, optionsState.value, DEFAULT_WHITE),\n);\nconst lineColor = computed(() =>\n useDefaultAes(settings.value.lineColor, optionsState.value, DEFAULT_BLACK),\n);\n\nfunction onUpdate(\n value: string | AestheticMappingCategorical,\n colorOption: AesOption,\n field: \"fillColor\" | \"lineColor\",\n) {\n if (colorOption.type === \"dataCategorical\") {\n store.value.reactive.layersSettings[layer][field] = {\n type: colorOption.inputName,\n };\n } else {\n store.value.reactive.layersSettings[layer][field] = value;\n }\n if (colorOption.type === \"dataCategorical\" && typeof value !== \"string\") {\n store.value.reactive.dataBindAes[colorOption.selectedSource] = value;\n }\n}\n\nconst barOpacity = computed({\n get: () => settings.value.barsOpacity * 100,\n set: (newValue: number) => {\n settings.value.barsOpacity = newValue / 100;\n }\n});\nconst areaOpacity = computed({\n get: () => settings.value.areaOpacity * 100,\n set: (newValue: number) => {\n settings.value.areaOpacity = newValue / 100;\n }\n});\n</script>\n\n<template>\n <aes-selector\n label=\"Fill color\"\n form-title=\"Fill Color Settings\"\n form-back-title=\"Layers\"\n type=\"fill\"\n :selected=\"fillColor\"\n @aes-update=\"(v, c) => onUpdate(v, c, 'fillColor')\"\n />\n <aes-selector\n label=\"Stroke color\"\n form-title=\"Stroke Color Settings\"\n form-back-title=\"Layers\"\n type=\"stroke\"\n :selected=\"lineColor\"\n @aes-update=\"(v, c) => onUpdate(v, c, 'lineColor')\"\n />\n <Slider\n label=\"Opacity of bars\"\n :min=\"0\"\n :max=\"100\"\n :step=\"1\"\n :breakpoints=\"false\"\n measure=\"%\"\n v-model=\"barOpacity\"\n />\n <Slider\n label=\"Opacity of areas\"\n :min=\"0\"\n :max=\"100\"\n :step=\"1\"\n :breakpoints=\"false\"\n measure=\"%\"\n v-model=\"areaOpacity\"\n />\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.normalize\" />\n <span>Normalize</span>\n </div>\n <div class=\"checkbox-item\">\n <pl-checkbox v-model=\"settings.showBars\" />\n <span>Show bars</span>\n </div>\n</template>\n"],"names":["layer","store","useStore","settings","computed","optionsState","fillColor","useDefaultAes","DEFAULT_WHITE","lineColor","DEFAULT_BLACK","onUpdate","value","colorOption","field","barOpacity","newValue","areaOpacity"],"mappings":";;;;;;sEAeMA,IAAQ;;;AADd,UAAMC,IAAQC,EAAA,GAERC,IAAWC,EAAS,MAAMH,EAAM,MAAM,SAAS,eAAeD,CAAK,CAAC,GACpEK,IAAeD;AAAA,MACnB,MAAMH,EAAM,MAAM,SAAS;AAAA,IAAA,GAGvBK,IAAYF;AAAA,MAAS,MACzBG,EAAcJ,EAAS,MAAM,WAAWE,EAAa,OAAOG,CAAa;AAAA,IAAA,GAErEC,IAAYL;AAAA,MAAS,MACzBG,EAAcJ,EAAS,MAAM,WAAWE,EAAa,OAAOK,CAAa;AAAA,IAAA;AAG3E,aAASC,EACPC,GACAC,GACAC,GACA;AACA,MAAID,EAAY,SAAS,oBACvBZ,EAAM,MAAM,SAAS,eAAeD,CAAK,EAAEc,CAAK,IAAI;AAAA,QAClD,MAAMD,EAAY;AAAA,MAAA,IAGpBZ,EAAM,MAAM,SAAS,eAAeD,CAAK,EAAEc,CAAK,IAAIF,GAElDC,EAAY,SAAS,qBAAqB,OAAOD,KAAU,aAC7DX,EAAM,MAAM,SAAS,YAAYY,EAAY,cAAc,IAAID;AAAA,IAEnE;AAEA,UAAMG,IAAaX,EAAS;AAAA,MAC1B,KAAK,MAAMD,EAAS,MAAM,cAAc;AAAA,MACxC,KAAK,CAACa,MAAqB;AACzB,QAAAb,EAAS,MAAM,cAAca,IAAW;AAAA,MAC1C;AAAA,IAAA,CACD,GACKC,IAAcb,EAAS;AAAA,MAC3B,KAAK,MAAMD,EAAS,MAAM,cAAc;AAAA,MACxC,KAAK,CAACa,MAAqB;AACzB,QAAAb,EAAS,MAAM,cAAca,IAAW;AAAA,MAC1C;AAAA,IAAA,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import f from "./StackedArea.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=StackedArea.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackedArea.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/LayersForm/index.vue"],"names":[],"mappings":";AAucA,wBAMG"}
1
+ {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/LayersForm/index.vue"],"names":[],"mappings":";AA2cA,wBAMG"}
@@ -1,63 +1,65 @@
1
1
  import { defineComponent as L, createElementBlock as _, openBlock as e, createElementVNode as u, createCommentVNode as a, createBlock as o, unref as t, Fragment as l, renderList as p, withCtx as n, resolveDynamicComponent as f, createVNode as d } from "vue";
2
2
  import { useStore as b } from "../../store.js";
3
- import { DISCRETE_TEMPLATES_MAP as A, LAYER_TITLES as c, LAYER_ICONS as s, SCATTERPLOT_TEMPLATES_MAP as T, SCATTERPLOT_UMAP_TEMPLATES_MAP as M, HEATMAP_TEMPLATES_MAP as P } from "../../constantsCommon.js";
3
+ import { DISCRETE_TEMPLATES_MAP as E, LAYER_TITLES as c, LAYER_ICONS as s, SCATTERPLOT_TEMPLATES_MAP as T, SCATTERPLOT_UMAP_TEMPLATES_MAP as M, HEATMAP_TEMPLATES_MAP as P } from "../../constantsCommon.js";
4
4
  import m from "../../components/CollapsableBlock.vue.js";
5
5
  import R from "./Layer/discrete/Boxplot.vue.js";
6
- import y from "./Layer/discrete/BinnedDots.vue.js";
7
- import k from "./Layer/discrete/JitteredDots.vue.js";
6
+ import k from "./Layer/discrete/BinnedDots.vue.js";
7
+ import y from "./Layer/discrete/JitteredDots.vue.js";
8
8
  import C from "./Layer/discrete/Violin.vue.js";
9
9
  import O from "./Layer/discrete/Bar.vue.js";
10
10
  import Y from "./Layer/discrete/StackedBar.vue.js";
11
- import x from "./Layer/discrete/Line.vue.js";
12
- import D from "./Layer/discrete/Errorbar.vue.js";
13
- import F from "./Layer/discrete/Sina.vue.js";
14
- import I from "./Layer/discrete/Logo.vue.js";
15
- import B from "./Layer/heatmap/Heatmap.vue.js";
16
- import N from "./Layer/Dendro.vue.js";
17
- import H from "./Layer/scatterplot/Scatter.vue.js";
18
- import V from "./Layer/scatterplot-umap/Scatter.vue.js";
11
+ import x from "./Layer/discrete/StackedArea.vue.js";
12
+ import D from "./Layer/discrete/Line.vue.js";
13
+ import F from "./Layer/discrete/Errorbar.vue.js";
14
+ import I from "./Layer/discrete/Sina.vue.js";
15
+ import B from "./Layer/discrete/Logo.vue.js";
16
+ import N from "./Layer/heatmap/Heatmap.vue.js";
17
+ import H from "./Layer/Dendro.vue.js";
18
+ import V from "./Layer/scatterplot/Scatter.vue.js";
19
+ import j from "./Layer/scatterplot-umap/Scatter.vue.js";
19
20
  import S from "./Layer/scatterplot/Curve.vue.js";
20
- import j from "./Layer/heatmap/HeatmapClustered.vue.js";
21
- import U from "./Layer/heatmap/HeatmapAnnotations.vue.js";
22
- import w from "../../icons/HeatmapAnnotation.vue.js";
23
- import q from "./Layer/histogram/Bins.vue.js";
24
- import z from "./Layer/Bubble.vue.js";
25
- const G = {
21
+ import U from "./Layer/heatmap/HeatmapClustered.vue.js";
22
+ import w from "./Layer/heatmap/HeatmapAnnotations.vue.js";
23
+ import q from "../../icons/HeatmapAnnotation.vue.js";
24
+ import z from "./Layer/histogram/Bins.vue.js";
25
+ import G from "./Layer/Bubble.vue.js";
26
+ const J = {
26
27
  class: "layers-form",
27
28
  id: "layers-form"
28
- }, J = { class: "layers-list" }, ht = /* @__PURE__ */ L({
29
+ }, K = { class: "layers-list" }, gt = /* @__PURE__ */ L({
29
30
  __name: "index",
30
- setup(K) {
31
+ setup(Q) {
31
32
  const i = b(), v = {
32
33
  box: R,
33
- binnedDots: y,
34
- jitteredDots: k,
34
+ binnedDots: k,
35
+ jitteredDots: y,
35
36
  violin: C,
36
37
  bar: O,
37
38
  stackedBar: Y,
38
- line: x,
39
- errorbar: D,
40
- sina: F,
41
- logo: I
42
- }, h = {
43
- dots: H,
44
- curve: S
39
+ stackedArea: x,
40
+ line: D,
41
+ errorbar: F,
42
+ sina: I,
43
+ logo: B
45
44
  }, $ = {
46
45
  dots: V,
47
46
  curve: S
47
+ }, h = {
48
+ dots: j,
49
+ curve: S
48
50
  }, g = {
49
- heatmap: B,
50
- heatmapClustered: j
51
+ heatmap: N,
52
+ heatmapClustered: U
51
53
  };
52
- return (Q, E) => (e(), _("div", G, [
53
- E[0] || (E[0] = u("div", { class: "layers-title" }, [
54
+ return (W, A) => (e(), _("div", J, [
55
+ A[0] || (A[0] = u("div", { class: "layers-title" }, [
54
56
  u("h3", null, " Layers ")
55
57
  ], -1)),
56
- u("div", J, [
57
- t(i).reactive.chartType === "discrete" ? (e(!0), _(l, { key: 0 }, p(t(A)[t(i).reactive.template], (r) => (e(), o(m, {
58
+ u("div", K, [
59
+ t(i).reactive.chartType === "discrete" ? (e(!0), _(l, { key: 0 }, p(t(E)[t(i).reactive.template], (r) => (e(), o(m, {
58
60
  icon: t(s)[r],
59
61
  title: t(c)[r],
60
- settings: { defaultState: t(A)[t(i).reactive.template].length > 1 ? "close" : "open" }
62
+ settings: { defaultState: t(E)[t(i).reactive.template].length > 1 ? "close" : "open" }
61
63
  }, {
62
64
  default: n(() => [
63
65
  (e(), o(f(v[r])))
@@ -70,7 +72,7 @@ const G = {
70
72
  settings: { defaultState: t(T)[t(i).reactive.template].length > 1 ? "close" : "open" }
71
73
  }, {
72
74
  default: n(() => [
73
- (e(), o(f(h[r])))
75
+ (e(), o(f($[r])))
74
76
  ]),
75
77
  _: 2
76
78
  }, 1032, ["icon", "title", "settings"]))), 256)) : a("", !0),
@@ -80,7 +82,7 @@ const G = {
80
82
  settings: { defaultState: t(T)[t(i).reactive.template].length > 1 ? "close" : "open" }
81
83
  }, {
82
84
  default: n(() => [
83
- (e(), o(f($[r])))
85
+ (e(), o(f(h[r])))
84
86
  ]),
85
87
  _: 2
86
88
  }, 1032, ["icon", "title", "settings"]))), 256)) : a("", !0),
@@ -96,12 +98,12 @@ const G = {
96
98
  }, 1032, ["icon", "title"]))), 256)) : a("", !0),
97
99
  t(i).reactive.chartType === "heatmap" ? (e(), o(m, {
98
100
  key: 4,
99
- icon: w,
101
+ icon: q,
100
102
  title: "Annotations",
101
103
  settings: { defaultState: "open" }
102
104
  }, {
103
105
  default: n(() => [
104
- (e(), o(f(U)))
106
+ (e(), o(f(w)))
105
107
  ]),
106
108
  _: 1
107
109
  })) : a("", !0),
@@ -112,7 +114,7 @@ const G = {
112
114
  settings: { defaultState: "open" }
113
115
  }, {
114
116
  default: n(() => [
115
- d(N)
117
+ d(H)
116
118
  ]),
117
119
  _: 1
118
120
  }, 8, ["icon", "title"])) : a("", !0),
@@ -123,7 +125,7 @@ const G = {
123
125
  settings: { defaultState: "open" }
124
126
  }, {
125
127
  default: n(() => [
126
- d(q)
128
+ d(z)
127
129
  ]),
128
130
  _: 1
129
131
  }, 8, ["icon", "title"])) : a("", !0),
@@ -134,7 +136,7 @@ const G = {
134
136
  settings: { defaultState: "open" }
135
137
  }, {
136
138
  default: n(() => [
137
- d(z)
139
+ d(G)
138
140
  ]),
139
141
  _: 1
140
142
  }, 8, ["icon", "title"])) : a("", !0)
@@ -143,6 +145,6 @@ const G = {
143
145
  }
144
146
  });
145
147
  export {
146
- ht as default
148
+ gt as default
147
149
  };
148
150
  //# sourceMappingURL=index.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../src/GraphMaker/forms/LayersForm/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../store';\nimport {\n DISCRETE_TEMPLATES_MAP,\n HEATMAP_TEMPLATES_MAP,\n LAYER_ICONS,\n LAYER_TITLES,\n SCATTERPLOT_TEMPLATES_MAP, SCATTERPLOT_UMAP_TEMPLATES_MAP\n} from '../../constantsCommon';\nimport type { Component } from 'vue';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Boxplot from './Layer/discrete/Boxplot.vue';\nimport BinnedDots from './Layer/discrete/BinnedDots.vue';\nimport JitteredDots from './Layer/discrete/JitteredDots.vue';\nimport Violin from './Layer/discrete/Violin.vue';\nimport Bar from './Layer/discrete/Bar.vue';\nimport StackedBar from './Layer/discrete/StackedBar.vue';\nimport Line from './Layer/discrete/Line.vue';\nimport Errorbar from './Layer/discrete/Errorbar.vue';\nimport Sina from './Layer/discrete/Sina.vue';\nimport Logo from './Layer/discrete/Logo.vue';\nimport Heatmap from './Layer/heatmap/Heatmap.vue';\nimport Dendro from './Layer/Dendro.vue';\nimport Scatterplot from './Layer/scatterplot/Scatter.vue';\nimport ScatterplotUmap from './Layer/scatterplot-umap/Scatter.vue';\nimport Curve from './Layer/scatterplot/Curve.vue';\nimport {\n DiscreteLayer,\n DiscreteLayersTemplate,\n HeatmapLayer, HeatmapLayerTemplate,\n ScatterplotLayer,\n ScatterplotLayersTemplate\n} from '../../types';\nimport HeatmapClustered from './Layer/heatmap/HeatmapClustered.vue';\nimport HeatmapAnnotations from './Layer/heatmap/HeatmapAnnotations.vue';\nimport HeatmapAnnotationIcon from '../../icons/HeatmapAnnotation.vue';\nimport Bins from './Layer/histogram/Bins.vue';\nimport Bubble from './Layer/Bubble.vue';\n\nconst store = useStore();\nconst DISCRETE_LAYERS_FORMS: Record<DiscreteLayer, Component> = {\n box: Boxplot,\n binnedDots: BinnedDots,\n jitteredDots: JitteredDots,\n violin: Violin,\n bar: Bar,\n stackedBar: StackedBar,\n line: Line,\n errorbar: Errorbar,\n sina: Sina,\n logo: Logo\n};\nconst SCATTERPLOT_LAYER_FORMS: Record<ScatterplotLayer, Component> = {\n dots: Scatterplot,\n curve: Curve\n};\nconst SCATTERPLOT_UMAP_LAYER_FORMS: Record<ScatterplotLayer, Component> = {\n dots: ScatterplotUmap,\n curve: Curve\n};\nconst HEATMAP_LAYER_FORMS: Record<HeatmapLayer, Component> = {\n heatmap: Heatmap,\n heatmapClustered: HeatmapClustered\n};\n\n</script>\n\n<template>\n <div class=\"layers-form\" id=\"layers-form\">\n <div class=\"layers-title\">\n <h3>\n Layers\n </h3>\n </div>\n <div class=\"layers-list\">\n <template v-if=\"store.reactive.chartType === 'discrete'\"\n v-for=\"layer of DISCRETE_TEMPLATES_MAP[store.reactive.template as DiscreteLayersTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\"\n :settings=\"{defaultState: DISCRETE_TEMPLATES_MAP[store.reactive.template as DiscreteLayersTemplate].length > 1 ? 'close' : 'open'}\">\n <component :is=\"DISCRETE_LAYERS_FORMS[layer]\" />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'scatterplot'\"\n v-for=\"layer of SCATTERPLOT_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\"\n :settings=\"{defaultState: SCATTERPLOT_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate].length > 1 ? 'close' : 'open'}\">\n <component :is=\"SCATTERPLOT_LAYER_FORMS[layer]\" />\n </collapsable-block>\n </template>\n <template v-if=\"store.reactive.chartType === 'scatterplot-umap'\"\n v-for=\"layer of SCATTERPLOT_UMAP_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\"\n :settings=\"{defaultState: SCATTERPLOT_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate].length > 1 ? 'close' : 'open'}\">\n <component :is=\"SCATTERPLOT_UMAP_LAYER_FORMS[layer]\" />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'heatmap'\"\n v-for=\"layer of HEATMAP_TEMPLATES_MAP[store.reactive.template as HeatmapLayerTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\" :settings=\"{defaultState: 'open'}\">\n <component :is=\"HEATMAP_LAYER_FORMS[layer]\" />\n </collapsable-block>\n </template>\n <!-- Not a layer - part of aesthetic mapping for heatmap annotations -->\n <template v-if=\"store.reactive.chartType === 'heatmap'\">\n <collapsable-block :icon=\"HeatmapAnnotationIcon\" title=\"Annotations\" :settings=\"{defaultState: 'open'}\">\n <component :is=\"HeatmapAnnotations\" />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'dendro'\">\n <collapsable-block :icon=\"LAYER_ICONS.dendro\" :title=\"LAYER_TITLES.dendro\" :settings=\"{defaultState: 'open'}\">\n <Dendro />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'histogram'\">\n <collapsable-block :icon=\"LAYER_ICONS.bins\" :title=\"LAYER_TITLES.bins\" :settings=\"{defaultState: 'open'}\">\n <Bins />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'bubble'\">\n <collapsable-block :icon=\"LAYER_ICONS.bubble\" :title=\"LAYER_TITLES.bubble\" :settings=\"{defaultState: 'open'}\">\n <Bubble />\n </collapsable-block>\n </template>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","DISCRETE_LAYERS_FORMS","Boxplot","BinnedDots","JitteredDots","Violin","Bar","StackedBar","Line","Errorbar","Sina","Logo","SCATTERPLOT_LAYER_FORMS","Scatterplot","Curve","SCATTERPLOT_UMAP_LAYER_FORMS","ScatterplotUmap","HEATMAP_LAYER_FORMS","Heatmap","HeatmapClustered"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAMA,IAAQC,EAAA,GACRC,IAA0D;AAAA,MAC9D,KAAKC;AAAAA,MACL,YAAYC;AAAAA,MACZ,cAAcC;AAAAA,MACd,QAAQC;AAAAA,MACR,KAAKC;AAAAA,MACL,YAAYC;AAAAA,MACZ,MAAMC;AAAAA,MACN,UAAUC;AAAAA,MACV,MAAMC;AAAAA,MACN,MAAMC;AAAAA,IAAA,GAEFC,IAA+D;AAAA,MACnE,MAAMC;AAAAA,MACN,OAAOC;AAAAA,IAAA,GAEHC,IAAoE;AAAA,MACxE,MAAMC;AAAAA,MACN,OAAOF;AAAAA,IAAA,GAEHG,IAAuD;AAAA,MAC3D,SAASC;AAAAA,MACT,kBAAkBC;AAAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../../../src/GraphMaker/forms/LayersForm/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useStore } from '../../store';\nimport {\n DISCRETE_TEMPLATES_MAP,\n HEATMAP_TEMPLATES_MAP,\n LAYER_ICONS,\n LAYER_TITLES,\n SCATTERPLOT_TEMPLATES_MAP, SCATTERPLOT_UMAP_TEMPLATES_MAP\n} from '../../constantsCommon';\nimport type { Component } from 'vue';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Boxplot from './Layer/discrete/Boxplot.vue';\nimport BinnedDots from './Layer/discrete/BinnedDots.vue';\nimport JitteredDots from './Layer/discrete/JitteredDots.vue';\nimport Violin from './Layer/discrete/Violin.vue';\nimport Bar from './Layer/discrete/Bar.vue';\nimport StackedBar from './Layer/discrete/StackedBar.vue';\nimport StackedArea from './Layer/discrete/StackedArea.vue';\nimport Line from './Layer/discrete/Line.vue';\nimport Errorbar from './Layer/discrete/Errorbar.vue';\nimport Sina from './Layer/discrete/Sina.vue';\nimport Logo from './Layer/discrete/Logo.vue';\nimport Heatmap from './Layer/heatmap/Heatmap.vue';\nimport Dendro from './Layer/Dendro.vue';\nimport Scatterplot from './Layer/scatterplot/Scatter.vue';\nimport ScatterplotUmap from './Layer/scatterplot-umap/Scatter.vue';\nimport Curve from './Layer/scatterplot/Curve.vue';\nimport {\n DiscreteLayer,\n DiscreteLayersTemplate,\n HeatmapLayer, HeatmapLayerTemplate,\n ScatterplotLayer,\n ScatterplotLayersTemplate\n} from '../../types';\nimport HeatmapClustered from './Layer/heatmap/HeatmapClustered.vue';\nimport HeatmapAnnotations from './Layer/heatmap/HeatmapAnnotations.vue';\nimport HeatmapAnnotationIcon from '../../icons/HeatmapAnnotation.vue';\nimport Bins from './Layer/histogram/Bins.vue';\nimport Bubble from './Layer/Bubble.vue';\n\nconst store = useStore();\nconst DISCRETE_LAYERS_FORMS: Record<DiscreteLayer, Component> = {\n box: Boxplot,\n binnedDots: BinnedDots,\n jitteredDots: JitteredDots,\n violin: Violin,\n bar: Bar,\n stackedBar: StackedBar,\n stackedArea: StackedArea,\n line: Line,\n errorbar: Errorbar,\n sina: Sina,\n logo: Logo\n};\nconst SCATTERPLOT_LAYER_FORMS: Record<ScatterplotLayer, Component> = {\n dots: Scatterplot,\n curve: Curve\n};\nconst SCATTERPLOT_UMAP_LAYER_FORMS: Record<ScatterplotLayer, Component> = {\n dots: ScatterplotUmap,\n curve: Curve\n};\nconst HEATMAP_LAYER_FORMS: Record<HeatmapLayer, Component> = {\n heatmap: Heatmap,\n heatmapClustered: HeatmapClustered\n};\n\n</script>\n\n<template>\n <div class=\"layers-form\" id=\"layers-form\">\n <div class=\"layers-title\">\n <h3>\n Layers\n </h3>\n </div>\n <div class=\"layers-list\">\n <template v-if=\"store.reactive.chartType === 'discrete'\"\n v-for=\"layer of DISCRETE_TEMPLATES_MAP[store.reactive.template as DiscreteLayersTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\"\n :settings=\"{defaultState: DISCRETE_TEMPLATES_MAP[store.reactive.template as DiscreteLayersTemplate].length > 1 ? 'close' : 'open'}\">\n <component :is=\"DISCRETE_LAYERS_FORMS[layer]\" />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'scatterplot'\"\n v-for=\"layer of SCATTERPLOT_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\"\n :settings=\"{defaultState: SCATTERPLOT_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate].length > 1 ? 'close' : 'open'}\">\n <component :is=\"SCATTERPLOT_LAYER_FORMS[layer]\" />\n </collapsable-block>\n </template>\n <template v-if=\"store.reactive.chartType === 'scatterplot-umap'\"\n v-for=\"layer of SCATTERPLOT_UMAP_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\"\n :settings=\"{defaultState: SCATTERPLOT_TEMPLATES_MAP[store.reactive.template as ScatterplotLayersTemplate].length > 1 ? 'close' : 'open'}\">\n <component :is=\"SCATTERPLOT_UMAP_LAYER_FORMS[layer]\" />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'heatmap'\"\n v-for=\"layer of HEATMAP_TEMPLATES_MAP[store.reactive.template as HeatmapLayerTemplate]\">\n <collapsable-block :icon=\"LAYER_ICONS[layer]\" :title=\"LAYER_TITLES[layer]\" :settings=\"{defaultState: 'open'}\">\n <component :is=\"HEATMAP_LAYER_FORMS[layer]\" />\n </collapsable-block>\n </template>\n <!-- Not a layer - part of aesthetic mapping for heatmap annotations -->\n <template v-if=\"store.reactive.chartType === 'heatmap'\">\n <collapsable-block :icon=\"HeatmapAnnotationIcon\" title=\"Annotations\" :settings=\"{defaultState: 'open'}\">\n <component :is=\"HeatmapAnnotations\" />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'dendro'\">\n <collapsable-block :icon=\"LAYER_ICONS.dendro\" :title=\"LAYER_TITLES.dendro\" :settings=\"{defaultState: 'open'}\">\n <Dendro />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'histogram'\">\n <collapsable-block :icon=\"LAYER_ICONS.bins\" :title=\"LAYER_TITLES.bins\" :settings=\"{defaultState: 'open'}\">\n <Bins />\n </collapsable-block>\n </template>\n\n <template v-if=\"store.reactive.chartType === 'bubble'\">\n <collapsable-block :icon=\"LAYER_ICONS.bubble\" :title=\"LAYER_TITLES.bubble\" :settings=\"{defaultState: 'open'}\">\n <Bubble />\n </collapsable-block>\n </template>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","DISCRETE_LAYERS_FORMS","Boxplot","BinnedDots","JitteredDots","Violin","Bar","StackedBar","StackedArea","Line","Errorbar","Sina","Logo","SCATTERPLOT_LAYER_FORMS","Scatterplot","Curve","SCATTERPLOT_UMAP_LAYER_FORMS","ScatterplotUmap","HEATMAP_LAYER_FORMS","Heatmap","HeatmapClustered"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,UAAMA,IAAQC,EAAA,GACRC,IAA0D;AAAA,MAC9D,KAAKC;AAAAA,MACL,YAAYC;AAAAA,MACZ,cAAcC;AAAAA,MACd,QAAQC;AAAAA,MACR,KAAKC;AAAAA,MACL,YAAYC;AAAAA,MACZ,aAAaC;AAAAA,MACb,MAAMC;AAAAA,MACN,UAAUC;AAAAA,MACV,MAAMC;AAAAA,MACN,MAAMC;AAAAA,IAAA,GAEFC,IAA+D;AAAA,MACnE,MAAMC;AAAAA,MACN,OAAOC;AAAAA,IAAA,GAEHC,IAAoE;AAAA,MACxE,MAAMC;AAAAA,MACN,OAAOF;AAAAA,IAAA,GAEHG,IAAuD;AAAA,MAC3D,SAASC;AAAAA,MACT,kBAAkBC;AAAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../src/GraphMaker/index.vue"],"names":[],"mappings":"AA8ZA,OAAO,KAAK,EAAqC,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIhG,OAAO,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,SAAS,CAAC;AAgF5D,iBAAS,KAAK,SAcb;AAED,iBAAS,aAAa,SASrB;AAgQD,iBAAS,cAAc;WAsKT,OAAO,IAA6B;;+BAZf,GAAG;8BACH,GAAG;yBACR,GAAG;;;;EAehC;AA4BD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;gBAhNT,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;IAnV5B;;;;OAIG;;IAEH;;OAEG;;;;;;;;gBA0UO,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;;;;;6FA2N5B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../src/GraphMaker/index.vue"],"names":[],"mappings":"AA6ZA,OAAO,KAAK,EAAqC,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIhG,OAAO,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,SAAS,CAAC;AA+E5D,iBAAS,KAAK,SAcb;AAED,iBAAS,aAAa,SASrB;AAgQD,iBAAS,cAAc;WAsKT,OAAO,IAA6B;;+BAZf,GAAG;8BACH,GAAG;yBACR,GAAG;;;;EAehC;AA4BD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;gBAhNT,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;IAnV5B;;;;OAIG;;IAEH;;OAEG;;;;;;;;gBA0UO,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;;;;;6FA2N5B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -2,23 +2,24 @@
2
2
  .slide-panel-enter-active{transition:transform .3s ease-out}.slide-panel-leave-active{transition:transform .3s ease-in-out}.slide-panel-enter-from{transform:translate(200%);opacity:0}.slide-panel-leave-to{transform:translate(200%);opacity:1}`)),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
3
3
  import { defineComponent as le, mergeModels as _, useModel as j, ref as f, watch as s, toRaw as n, computed as g, shallowRef as E, onMounted as ie, onUnmounted as oe, useSlots as ne, createElementBlock as re, openBlock as h, createElementVNode as ue, createVNode as U, createBlock as D, createCommentVNode as S, withCtx as T, renderSlot as B, unref as u, resolveDynamicComponent as se } from "vue";
4
4
  import { MiPlots as ce } from "../node_modules/@milaboratories/miplots4/dist/MiPlots.js";
5
- import { DemoDataStore as de, getInitialStateByType as ve } from "../node_modules/@milaboratories/pf-plots/dist/index.js";
6
- import pe from "../node_modules/canonicalize/lib/canonicalize.js";
5
+ import { getInitialStateByType as de } from "../node_modules/@milaboratories/pf-plots/dist/index.js";
6
+ import ve from "../node_modules/canonicalize/lib/canonicalize.js";
7
7
 
8
- import me from "./components/Chart.vue.js";
9
- import fe from "./components/Loading.vue.js";
10
- import ge from "./components/PanelModal.vue.js";
11
- import he from "./components/SettingsTabs/index.vue.js";
12
- import Se from "./components/TransitionSlidePanel.vue.js";
8
+ import pe from "./components/Chart.vue.js";
9
+ import me from "./components/Loading.vue.js";
10
+ import fe from "./components/PanelModal.vue.js";
11
+ import ge from "./components/SettingsTabs/index.vue.js";
12
+ import he from "./components/TransitionSlidePanel.vue.js";
13
13
 
14
- import { useSettingsForm as ye } from "./forms/index.js";
15
- import { provideStore as be, createReactiveState as V } from "./store.js";
14
+ import { useSettingsForm as Se } from "./forms/index.js";
15
+ import { provideStore as ye, createReactiveState as V } from "./store.js";
16
16
  import "./constantsAesthetic.js";
17
17
  import { composeChartSettings as A } from "./utils/createChartSettingsForRender/composeChartSettings.js";
18
- import { saveToFile as De } from "./utils/saveToFile.js";
18
+ import { saveToFile as be } from "./utils/saveToFile.js";
19
19
  import { copyJSON as d } from "./utils/copyJSON.js";
20
+ import { DemoDataStore as De } from "../node_modules/@milaboratories/pf-plots/dist/demoStore.js";
20
21
  import { debouncedWatch as v } from "../node_modules/@vueuse/shared/index.js";
21
- const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, Ve = /* @__PURE__ */ le({
22
+ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, Ae = /* @__PURE__ */ le({
22
23
  __name: "index",
23
24
  props: /* @__PURE__ */ _({
24
25
  pFrame: {},
@@ -40,7 +41,6 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
40
41
  }),
41
42
  emits: /* @__PURE__ */ _(["delete-this-graph", "tooltip-btn-click"], ["update:modelValue", "update:selection"]),
42
43
  setup(C, { expose: q, emit: Oe }) {
43
- console.log("error!!!");
44
44
  const l = j(C, "modelValue"), G = j(C, "selection"), o = C;
45
45
  q({
46
46
  /**
@@ -62,7 +62,7 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
62
62
  const a = "platforma" in window ? (i = window.platforma) == null ? void 0 : i.pFrameDriver : o.driver;
63
63
  if (!a)
64
64
  throw new Error("PFrame driver is missing");
65
- k.value = new de(
65
+ k.value = new De(
66
66
  e,
67
67
  a,
68
68
  o.labelsModifier
@@ -72,7 +72,7 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
72
72
  s(() => o.fixedOptions, (e, a) => {
73
73
  (e && a && JSON.stringify(e) !== JSON.stringify(a) || e && !a || a && !e) && (I.value = e);
74
74
  }, { deep: !0 });
75
- const y = f(o.defaultOptions), t = be(
75
+ const y = f(o.defaultOptions), t = ye(
76
76
  n(l.value),
77
77
  k,
78
78
  o.chartType,
@@ -104,9 +104,9 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
104
104
  }), y.value = o.defaultOptions ? [...o.defaultOptions] : [];
105
105
  }
106
106
  const x = g(() => t.value.reactive.dataStateKey);
107
- s(() => pe(o.dataStateKey), (e) => {
107
+ s(() => ve(o.dataStateKey), (e) => {
108
108
  if ((e !== void 0 || x.value !== void 0) && x.value !== e) {
109
- l.value.optionsState = d(ve(o.chartType));
109
+ l.value.optionsState = d(de(o.chartType));
110
110
  const a = V(n(l.value), o.chartType);
111
111
  Object.assign(t.value.reactive, a), Object.assign(t.value.loading, {
112
112
  initialInputGuide: !0,
@@ -118,7 +118,7 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
118
118
  }
119
119
  t.value.reactive.dataStateKey = e;
120
120
  }, { deep: !0, immediate: !0 });
121
- const z = g(() => ye(t.value.reactive.currentTab)), r = E(null), N = f(null), L = f(!1), $ = g(() => {
121
+ const z = g(() => Se(t.value.reactive.currentTab)), r = E(null), N = f(null), L = f(!1), $ = g(() => {
122
122
  var i;
123
123
  const e = t.value.inputGuide.value, a = t.value.chartData.value;
124
124
  return e.consistent ? e.ready ? a && ((i = Object.values(a.data.byColumns.values)[0]) == null ? void 0 : i.length) === 0 ? "empty" : L.value ? "error" : "ready" : "notReady" : "inconsistent";
@@ -264,7 +264,7 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
264
264
  });
265
265
  function X() {
266
266
  var e;
267
- De(
267
+ be(
268
268
  new Blob([
269
269
  ((e = r.value) == null ? void 0 : e.export()) ?? ""
270
270
  ]),
@@ -284,7 +284,7 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
284
284
  const K = ne(), ee = g(() => !!K.settingsSlot), te = g(() => !!K.logSlot);
285
285
  return (e, a) => (h(), re("div", Te, [
286
286
  ue("div", Ce, [
287
- U(me, {
287
+ U(pe, {
288
288
  "graph-status": $.value,
289
289
  graphTitle: l.value.title,
290
290
  chartData: N.value,
@@ -299,19 +299,19 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
299
299
  ]),
300
300
  _: 3
301
301
  }, 8, ["graph-status", "graphTitle", "chartData", "chart-ref", "dendroTooltipButton"]),
302
- u(t).loading.initialInputGuide ? (h(), D(fe, {
302
+ u(t).loading.initialInputGuide ? (h(), D(me, {
303
303
  key: 0,
304
304
  top: 67,
305
305
  left: 12,
306
306
  right: 12,
307
307
  bottom: 12
308
308
  })) : S("", !0),
309
- u(t).loading.initialInputGuide ? S("", !0) : (h(), D(Se, {
309
+ u(t).loading.initialInputGuide ? S("", !0) : (h(), D(he, {
310
310
  key: 1,
311
311
  id: "graph-settings-modal"
312
312
  }, {
313
313
  default: T(() => [
314
- u(t).reactive.currentTab ? (h(), D(ge, {
314
+ u(t).reactive.currentTab ? (h(), D(fe, {
315
315
  key: 0,
316
316
  onClose: a[1] || (a[1] = (i) => u(t).reactive.currentTab = null)
317
317
  }, {
@@ -330,7 +330,7 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
330
330
  _: 3
331
331
  }))
332
332
  ]),
333
- U(he, {
333
+ U(ge, {
334
334
  "chart-type": u(t).reactive.chartType,
335
335
  "graph-status": $.value,
336
336
  allowDeleting: e.allowChartDeleting,
@@ -346,6 +346,6 @@ const Te = { class: "graph-maker" }, Ce = { class: "graph-maker__main-pane" }, V
346
346
  }
347
347
  });
348
348
  export {
349
- Ve as default
349
+ Ae as default
350
350
  };
351
351
  //# sourceMappingURL=index.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../src/GraphMaker/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n ChartInterface,\n DataByColumns,\n LassoControlsState,\n MiPlots,\n Settings\n} from '@milaboratories/miplots4';\nimport {\n ChartType,\n DemoDataStore, getInitialStateByType,\n PlotDataAndSettings\n} from '@milaboratories/pf-plots';\nimport type { AxisSpec, AxisValue, PFrameDriver, PlSelectionModel } from '@platforma-sdk/model';\nimport { watchDebounced } from '@vueuse/core';\nimport canonicalize from 'canonicalize';\nimport { computed, onMounted, onUnmounted, ref, shallowRef, toRaw, useSlots, watch } from 'vue';\nimport './assets/ui.scss';\nimport Chart from './components/Chart.vue';\nimport Loading from './components/Loading.vue';\nimport PanelModal from './components/PanelModal.vue';\nimport VTabs from './components/SettingsTabs/index.vue';\nimport TransitionSlidePanel from './components/TransitionSlidePanel.vue';\nimport { useSettingsForm } from './forms';\nimport { createReactiveState, provideStore } from './store';\nimport type { GraphMakerState, GraphStatus } from './types';\nimport { DendroNodeInfo, GraphMakerProps } from './types';\nimport { composeChartSettings, saveToFile } from './utils';\nimport { copyJSON } from './utils/copyJSON';\n\nconsole.log('error!!!')\nconst emit = defineEmits(['delete-this-graph', 'tooltip-btn-click']);\n\nconst graphMakerState = defineModel<GraphMakerState>({ required: true });\nconst selectionState = defineModel<PlSelectionModel>('selection');\n\nconst props = defineProps<GraphMakerProps>();\n\ndefineExpose({\n /**\n reset() will update data-mapping, axis-settings, layers-settings with the state that is in v-model at the moment.\n In other cases editing of v-model fields doesn't make any impact to graphs and interface.\n Besides, after reset default-options will be applied again. You can use reset to apply new default-options.\n */\n reset,\n /**\n Apply new defaults without resetting all the state\n */\n resetDefaults\n});\n\nconst dataStore = ref<DemoDataStore | null>(null);\n\nwatch(() => props.pFrame, (pframeValue) => {\n if (!pframeValue) {\n return;\n }\n const driver = ('platforma' in window) ? window.platforma?.pFrameDriver as PFrameDriver : props.driver;\n if (!driver) {\n throw new Error('PFrame driver is missing');\n }\n dataStore.value = new DemoDataStore(\n pframeValue,\n driver,\n props.labelsModifier\n );\n}, { immediate: true });\n\n\n//fixed options can be updated outside, other settings only inside from chart settings interface, so we don't watching other settings\nconst fixedOptions = ref<typeof props.fixedOptions>(props.fixedOptions ?? []);\nwatch(() => props.fixedOptions, (value, oldValue) => {\n if (\n value && oldValue && JSON.stringify(value) !== JSON.stringify(oldValue) ||\n value && !oldValue ||\n oldValue && !value\n ) {\n fixedOptions.value = value;\n }\n}, { deep: true });\nconst defaultOptions = ref<typeof props.defaultOptions>(props.defaultOptions);\n\nconst state = provideStore(\n toRaw(graphMakerState.value),\n dataStore,\n props.chartType,\n defaultOptions,\n fixedOptions,\n props.dataColumnPredicate,\n props.readonlyInputs\n);\n\nfunction reset() {\n const nextReactiveState = createReactiveState(\n toRaw(graphMakerState.value),\n props.chartType\n );\n Object.assign(state.value.reactive, nextReactiveState);\n Object.assign(state.value.loading, {\n initialInputGuide: true,\n initialCharts: true,\n initialDefaults: true,\n inputGuide: false,\n chartData: false,\n });\n defaultOptions.value = props.defaultOptions;\n}\n\nfunction resetDefaults() {\n Object.assign(state.value.loading, {\n initialInputGuide: true,\n initialCharts: true,\n initialDefaults: true,\n inputGuide: false,\n chartData: false,\n });\n defaultOptions.value = props.defaultOptions ? [...props.defaultOptions] as typeof props.defaultOptions : [];\n}\n\nconst prevDataKey = computed(() => state.value.reactive.dataStateKey);\nwatch(() => canonicalize(props.dataStateKey), (keyValue) => {\n if ((keyValue !== undefined || prevDataKey.value !== undefined) && prevDataKey.value !== keyValue) {\n graphMakerState.value.optionsState = copyJSON(getInitialStateByType(props.chartType));\n const nextReactiveState = createReactiveState(toRaw(graphMakerState.value), props.chartType);\n Object.assign(state.value.reactive, nextReactiveState);\n Object.assign(state.value.loading, {\n initialInputGuide: true,\n initialCharts: true,\n initialDefaults: true,\n inputGuide: false,\n chartData: false,\n });\n defaultOptions.value = props.defaultOptions ? [...props.defaultOptions] as typeof props.defaultOptions : []; // to trigger watch on defaults\n }\n state.value.reactive.dataStateKey = keyValue;\n}, {deep: true, immediate: true});\n\nconst currentForm = computed(() => useSettingsForm(state.value.reactive.currentTab));\n\nconst chartRef = shallowRef<ChartInterface | null>(null);\nconst chartCalculatedDataRef = ref<Record<string, unknown> | null>(null);\nconst chartError = ref(false);\n\nconst graphStatus = computed<GraphStatus>(() => {\n const inputGuide = state.value.inputGuide.value;\n const chartData = state.value.chartData.value;\n if (!inputGuide.consistent) {\n return 'inconsistent';\n }\n if (!inputGuide.ready) {\n return 'notReady';\n }\n if (chartData && Object.values(chartData.data.byColumns.values)[0]?.length === 0) {\n return 'empty';\n }\n if (chartError.value) {\n return 'error';\n }\n return 'ready';\n});\nfunction onTreeNodeClick(d: DendroNodeInfo) {\n state.value.reactive.dendroSelectedNodeId = d?.info[0]?.id as number;\n state.value.reactive.dendroInfoByClick = d;\n}\n\nfunction onTooltipHintSwitch(v:boolean) {\n state.value.reactive.showTooltipHint = v;\n}\n\nfunction onLassoPolygonUpdate(dotIndexes:number[], polygons:{points:[number, number][], closed: boolean}[]) {\n graphMakerState.value = {\n ...graphMakerState.value,\n selectedPolygons: polygons\n };\n\n const axesData = state.value.chartData.value?.data?.axesData;\n if (dotIndexes.length === 0 || !axesData) {\n selectionState.value = {axesSpec: [], selectedKeys: []};\n return;\n }\n\n const axisKeys = Object.keys(axesData);\n const inputGuide = state.value.inputGuide.value;\n selectionState.value = {\n axesSpec: axisKeys.map(axisKey => inputGuide.getSourceInfo(axisKey).spec as AxisSpec),\n selectedKeys: dotIndexes.map((idx) => axisKeys.map((axisKey) => axesData[axisKey][idx] as AxisValue))\n };\n}\n\nfunction onLassoStateChange (v:LassoControlsState) {\n state.value.reactive.lassoControlsState = v;\n}\nconst graphEventHandlers:Record<ChartType, unknown> = {\n dendro: [onTreeNodeClick],\n 'scatterplot-umap': {\n onPolygonUpdate: onLassoPolygonUpdate,\n onTooltipHintSwitch,\n onLassoControlsStateUpdate: onLassoStateChange\n },\n discrete: [onTooltipHintSwitch],\n scatterplot: {\n onPolygonUpdate: onLassoPolygonUpdate,\n onTooltipHintSwitch,\n onLassoControlsStateUpdate: onLassoStateChange\n },\n histogram: [onTooltipHintSwitch],\n heatmap: [onTooltipHintSwitch],\n bubble: [onTooltipHintSwitch]\n}\nfunction updateChart(value: {data: PlotDataAndSettings['data']['byColumns'], settings: PlotDataAndSettings['settings']} | null) {\n // if dataByColumns exists but columns has no data - show empty chart\n if (value && Object.values(value.data.values)[0]?.length > 0) {\n // console.log('value.dataByColumns', toRaw(value.data));\n // console.log('value.settings', toRaw(value.settings));\n if (chartRef.value) {\n chartRef.value.updateSettingsAndData(toRaw(value.data), toRaw(value.settings) as Settings);\n } else {\n const htmlNode = document.getElementById('chartSvgContainer');\n if (htmlNode) {\n chartRef.value = MiPlots.newPlot(toRaw(value.data), toRaw(value.settings) as Settings, graphEventHandlers[value.settings.type as ChartType]);\n if (value.settings.type === 'scatterplot-umap') {\n // set default polygons (from props)\n chartRef.value.updateChartState('polygon', graphMakerState.value.selectedPolygons ?? []);\n }\n chartRef.value.mount(htmlNode);\n }\n }\n // calculated by chart renderer data, tree hierarchy for example\n chartCalculatedDataRef.value = chartRef.value?.calculatedData ? { ...chartRef.value.calculatedData } : null;\n chartError.value = chartRef.value?.hasError ?? false;\n } else {\n chartRef.value?.unmount();\n chartRef.value = null;\n }\n}\n\nconst chartDataForRender = shallowRef<{settings:Settings, data:DataByColumns} | null>(null);\nwatch([\n () => state.value.chartData.value\n], ([chartData]) => {\n chartDataForRender.value = composeChartSettings(\n toRaw(chartData),\n toRaw(state.value.inputGuide.value),\n toRaw(state.value.uniqueValuesData.value),\n toRaw(state.value.filterLabelsInfo.value),\n toRaw(state.value.reactive)\n );\n});\nwatch([\n () => state.value.reactive.template,\n () => state.value.reactive.layersSettings,\n () => state.value.reactive.axesSettings,\n () => state.value.reactive.statisticsSettings,\n () => state.value.reactive.dataBindAes,\n () => state.value.reactive.chartScale,\n], () => {\n chartDataForRender.value = composeChartSettings(\n toRaw(state.value.chartData.value),\n toRaw(state.value.inputGuide.value),\n toRaw(state.value.uniqueValuesData.value),\n toRaw(state.value.filterLabelsInfo.value),\n toRaw(state.value.reactive),\n );\n}, {deep: true});\n\nwatch(() => chartDataForRender.value, (chartData) => {\n updateChart(chartData);\n});\nonMounted(() => {\n updateChart(null);\n});\nonUnmounted(() => {\n chartRef.value?.unmount();\n});\n\nwatchDebounced(() => state.value.reactive.optionsState, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n optionsState: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.statisticsSettings, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n statisticsSettings: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.axesSettings, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n axesSettings: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.layersSettings, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n layersSettings: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.dataBindAes, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n dataBindAes: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\n\nwatchDebounced([\n () => state.value.reactive.chartScale,\n () => state.value.reactive.template,\n () => state.value.reactive.currentTab\n], ([zoomState, template, currentTab]) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n zoomState,\n template,\n currentTab\n }\n}, { debounce: 1000});\n\nwatch(() => state.value.reactive.dataStateKey, (dataStateKey) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n dataStateKey\n }\n}, {immediate: true});\n\nwatch(() => graphMakerState.value.currentTab, (v) => {\n state.value.reactive.currentTab = v === undefined ? 'dataMapping' : v;\n});\n\nwatch(() => graphMakerState.value?.layersSettings?.dendro?.showTable, (v) => {\n state.value.reactive.layersSettings.dendro.showTable = v ?? false;\n});\n\nfunction onExport() {\n saveToFile(\n new Blob([\n chartRef.value?.export() ?? ''\n ]),\n 'chart.svg'\n );\n}\n\nfunction updateGraphTitle(nextTitle: string) {\n graphMakerState.value = {\n ...graphMakerState.value,\n title: nextTitle\n };\n}\n\nfunction selectTreeNode(id: number | null) {\n state.value.reactive.dendroSelectedNodeId = id;\n chartRef.value?.updateChartState('selectedNode', id);\n}\n\nconst slots = useSlots();\n\nconst hasSettingsSlot = computed(() => Boolean(slots.settingsSlot));\nconst hasLogSlot = computed(() => Boolean(slots.logSlot));\n\n</script>\n\n<template>\n <div class=\"graph-maker\">\n <div class=\"graph-maker__main-pane\">\n <chart\n :graph-status=\"graphStatus\"\n :graphTitle=\"graphMakerState.title\"\n :chartData=\"chartCalculatedDataRef\"\n :chart-ref=\"chartRef\"\n :dendroTooltipButton=\"tooltipButton\"\n @graph-title-update=\"updateGraphTitle\"\n @dendro-node-select=\"selectTreeNode\"\n @dendro-tooltip-btn-click=\"(id:string) => $emit('tooltip-btn-click', id)\"\n >\n <slot name=\"titleLineSlot\"></slot>\n </chart>\n <loading v-if=\"state.loading.initialInputGuide\" :top=\"67\" :left=\"12\" :right=\"12\" :bottom=\"12\" />\n <TransitionSlidePanel id=\"graph-settings-modal\" v-if=\"!state.loading.initialInputGuide\">\n <panel-modal v-if=\"state.reactive.currentTab\" @close=\"state.reactive.currentTab = null\">\n <component :is=\"currentForm.value\">\n <slot v-if=\"state.reactive.currentTab === 'settings'\" name=\"settingsSlot\"></slot> \n <slot v-if=\"state.reactive.currentTab === 'log'\" name=\"logSlot\"></slot> \n </component>\n </panel-modal>\n </TransitionSlidePanel>\n </div>\n <v-tabs\n :chart-type=\"state.reactive.chartType\"\n :graph-status=\"graphStatus\"\n :allowDeleting=\"allowChartDeleting\"\n :hasSettingsSlot=\"hasSettingsSlot\"\n :hasLogSlot=\"hasLogSlot\"\n :initialLoading=\"state.loading.initialInputGuide\"\n v-model=\"state.reactive.currentTab\"\n @export=\"onExport\"\n @delete=\"$emit('delete-this-graph')\"\n />\n </div>\n</template>\n"],"names":["graphMakerState","_useModel","selectionState","__props","props","__expose","reset","resetDefaults","dataStore","ref","watch","pframeValue","driver","_a","DemoDataStore","fixedOptions","value","oldValue","defaultOptions","state","provideStore","toRaw","nextReactiveState","createReactiveState","prevDataKey","computed","canonicalize","keyValue","copyJSON","getInitialStateByType","currentForm","useSettingsForm","chartRef","shallowRef","chartCalculatedDataRef","chartError","graphStatus","inputGuide","chartData","onTreeNodeClick","d","onTooltipHintSwitch","v","onLassoPolygonUpdate","dotIndexes","polygons","axesData","_b","axisKeys","axisKey","idx","onLassoStateChange","graphEventHandlers","updateChart","htmlNode","MiPlots","_c","_d","chartDataForRender","composeChartSettings","onMounted","onUnmounted","watchDebounced","zoomState","template","currentTab","dataStateKey","onExport","saveToFile","updateGraphTitle","nextTitle","selectTreeNode","id","slots","useSlots","hasSettingsSlot","hasLogSlot"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../src/GraphMaker/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n ChartInterface,\n DataByColumns,\n LassoControlsState,\n MiPlots,\n Settings\n} from '@milaboratories/miplots4';\nimport {\n ChartType,\n DemoDataStore, getInitialStateByType,\n PlotDataAndSettings\n} from '@milaboratories/pf-plots';\nimport type { AxisSpec, AxisValue, PFrameDriver, PlSelectionModel } from '@platforma-sdk/model';\nimport { watchDebounced } from '@vueuse/core';\nimport canonicalize from 'canonicalize';\nimport { computed, onMounted, onUnmounted, ref, shallowRef, toRaw, useSlots, watch } from 'vue';\nimport './assets/ui.scss';\nimport Chart from './components/Chart.vue';\nimport Loading from './components/Loading.vue';\nimport PanelModal from './components/PanelModal.vue';\nimport VTabs from './components/SettingsTabs/index.vue';\nimport TransitionSlidePanel from './components/TransitionSlidePanel.vue';\nimport { useSettingsForm } from './forms';\nimport { createReactiveState, provideStore } from './store';\nimport type { GraphMakerState, GraphStatus } from './types';\nimport { DendroNodeInfo, GraphMakerProps } from './types';\nimport { composeChartSettings, saveToFile } from './utils';\nimport { copyJSON } from './utils/copyJSON';\n\nconst emit = defineEmits(['delete-this-graph', 'tooltip-btn-click']);\n\nconst graphMakerState = defineModel<GraphMakerState>({ required: true });\nconst selectionState = defineModel<PlSelectionModel>('selection');\n\nconst props = defineProps<GraphMakerProps>();\n\ndefineExpose({\n /**\n reset() will update data-mapping, axis-settings, layers-settings with the state that is in v-model at the moment.\n In other cases editing of v-model fields doesn't make any impact to graphs and interface.\n Besides, after reset default-options will be applied again. You can use reset to apply new default-options.\n */\n reset,\n /**\n Apply new defaults without resetting all the state\n */\n resetDefaults\n});\n\nconst dataStore = ref<DemoDataStore | null>(null);\n\nwatch(() => props.pFrame, (pframeValue) => {\n if (!pframeValue) {\n return;\n }\n const driver = ('platforma' in window) ? window.platforma?.pFrameDriver as PFrameDriver : props.driver;\n if (!driver) {\n throw new Error('PFrame driver is missing');\n }\n dataStore.value = new DemoDataStore(\n pframeValue,\n driver,\n props.labelsModifier\n );\n}, { immediate: true });\n\n\n//fixed options can be updated outside, other settings only inside from chart settings interface, so we don't watching other settings\nconst fixedOptions = ref<typeof props.fixedOptions>(props.fixedOptions ?? []);\nwatch(() => props.fixedOptions, (value, oldValue) => {\n if (\n value && oldValue && JSON.stringify(value) !== JSON.stringify(oldValue) ||\n value && !oldValue ||\n oldValue && !value\n ) {\n fixedOptions.value = value;\n }\n}, { deep: true });\nconst defaultOptions = ref<typeof props.defaultOptions>(props.defaultOptions);\n\nconst state = provideStore(\n toRaw(graphMakerState.value),\n dataStore,\n props.chartType,\n defaultOptions,\n fixedOptions,\n props.dataColumnPredicate,\n props.readonlyInputs\n);\n\nfunction reset() {\n const nextReactiveState = createReactiveState(\n toRaw(graphMakerState.value),\n props.chartType\n );\n Object.assign(state.value.reactive, nextReactiveState);\n Object.assign(state.value.loading, {\n initialInputGuide: true,\n initialCharts: true,\n initialDefaults: true,\n inputGuide: false,\n chartData: false,\n });\n defaultOptions.value = props.defaultOptions;\n}\n\nfunction resetDefaults() {\n Object.assign(state.value.loading, {\n initialInputGuide: true,\n initialCharts: true,\n initialDefaults: true,\n inputGuide: false,\n chartData: false,\n });\n defaultOptions.value = props.defaultOptions ? [...props.defaultOptions] as typeof props.defaultOptions : [];\n}\n\nconst prevDataKey = computed(() => state.value.reactive.dataStateKey);\nwatch(() => canonicalize(props.dataStateKey), (keyValue) => {\n if ((keyValue !== undefined || prevDataKey.value !== undefined) && prevDataKey.value !== keyValue) {\n graphMakerState.value.optionsState = copyJSON(getInitialStateByType(props.chartType));\n const nextReactiveState = createReactiveState(toRaw(graphMakerState.value), props.chartType);\n Object.assign(state.value.reactive, nextReactiveState);\n Object.assign(state.value.loading, {\n initialInputGuide: true,\n initialCharts: true,\n initialDefaults: true,\n inputGuide: false,\n chartData: false,\n });\n defaultOptions.value = props.defaultOptions ? [...props.defaultOptions] as typeof props.defaultOptions : []; // to trigger watch on defaults\n }\n state.value.reactive.dataStateKey = keyValue;\n}, {deep: true, immediate: true});\n\nconst currentForm = computed(() => useSettingsForm(state.value.reactive.currentTab));\n\nconst chartRef = shallowRef<ChartInterface | null>(null);\nconst chartCalculatedDataRef = ref<Record<string, unknown> | null>(null);\nconst chartError = ref(false);\n\nconst graphStatus = computed<GraphStatus>(() => {\n const inputGuide = state.value.inputGuide.value;\n const chartData = state.value.chartData.value;\n if (!inputGuide.consistent) {\n return 'inconsistent';\n }\n if (!inputGuide.ready) {\n return 'notReady';\n }\n if (chartData && Object.values(chartData.data.byColumns.values)[0]?.length === 0) {\n return 'empty';\n }\n if (chartError.value) {\n return 'error';\n }\n return 'ready';\n});\nfunction onTreeNodeClick(d: DendroNodeInfo) {\n state.value.reactive.dendroSelectedNodeId = d?.info[0]?.id as number;\n state.value.reactive.dendroInfoByClick = d;\n}\n\nfunction onTooltipHintSwitch(v:boolean) {\n state.value.reactive.showTooltipHint = v;\n}\n\nfunction onLassoPolygonUpdate(dotIndexes:number[], polygons:{points:[number, number][], closed: boolean}[]) {\n graphMakerState.value = {\n ...graphMakerState.value,\n selectedPolygons: polygons\n };\n\n const axesData = state.value.chartData.value?.data?.axesData;\n if (dotIndexes.length === 0 || !axesData) {\n selectionState.value = {axesSpec: [], selectedKeys: []};\n return;\n }\n\n const axisKeys = Object.keys(axesData);\n const inputGuide = state.value.inputGuide.value;\n selectionState.value = {\n axesSpec: axisKeys.map(axisKey => inputGuide.getSourceInfo(axisKey).spec as AxisSpec),\n selectedKeys: dotIndexes.map((idx) => axisKeys.map((axisKey) => axesData[axisKey][idx] as AxisValue))\n };\n}\n\nfunction onLassoStateChange (v:LassoControlsState) {\n state.value.reactive.lassoControlsState = v;\n}\nconst graphEventHandlers:Record<ChartType, unknown> = {\n dendro: [onTreeNodeClick],\n 'scatterplot-umap': {\n onPolygonUpdate: onLassoPolygonUpdate,\n onTooltipHintSwitch,\n onLassoControlsStateUpdate: onLassoStateChange\n },\n discrete: [onTooltipHintSwitch],\n scatterplot: {\n onPolygonUpdate: onLassoPolygonUpdate,\n onTooltipHintSwitch,\n onLassoControlsStateUpdate: onLassoStateChange\n },\n histogram: [onTooltipHintSwitch],\n heatmap: [onTooltipHintSwitch],\n bubble: [onTooltipHintSwitch]\n}\nfunction updateChart(value: {data: PlotDataAndSettings['data']['byColumns'], settings: PlotDataAndSettings['settings']} | null) {\n // if dataByColumns exists but columns has no data - show empty chart\n if (value && Object.values(value.data.values)[0]?.length > 0) {\n // console.log('value.dataByColumns', toRaw(value.data));\n // console.log('value.settings', toRaw(value.settings));\n if (chartRef.value) {\n chartRef.value.updateSettingsAndData(toRaw(value.data), toRaw(value.settings) as Settings);\n } else {\n const htmlNode = document.getElementById('chartSvgContainer');\n if (htmlNode) {\n chartRef.value = MiPlots.newPlot(toRaw(value.data), toRaw(value.settings) as Settings, graphEventHandlers[value.settings.type as ChartType]);\n if (value.settings.type === 'scatterplot-umap') {\n // set default polygons (from props)\n chartRef.value.updateChartState('polygon', graphMakerState.value.selectedPolygons ?? []);\n }\n chartRef.value.mount(htmlNode);\n }\n }\n // calculated by chart renderer data, tree hierarchy for example\n chartCalculatedDataRef.value = chartRef.value?.calculatedData ? { ...chartRef.value.calculatedData } : null;\n chartError.value = chartRef.value?.hasError ?? false;\n } else {\n chartRef.value?.unmount();\n chartRef.value = null;\n }\n}\n\nconst chartDataForRender = shallowRef<{settings:Settings, data:DataByColumns} | null>(null);\nwatch([\n () => state.value.chartData.value\n], ([chartData]) => {\n chartDataForRender.value = composeChartSettings(\n toRaw(chartData),\n toRaw(state.value.inputGuide.value),\n toRaw(state.value.uniqueValuesData.value),\n toRaw(state.value.filterLabelsInfo.value),\n toRaw(state.value.reactive)\n );\n});\nwatch([\n () => state.value.reactive.template,\n () => state.value.reactive.layersSettings,\n () => state.value.reactive.axesSettings,\n () => state.value.reactive.statisticsSettings,\n () => state.value.reactive.dataBindAes,\n () => state.value.reactive.chartScale,\n], () => {\n chartDataForRender.value = composeChartSettings(\n toRaw(state.value.chartData.value),\n toRaw(state.value.inputGuide.value),\n toRaw(state.value.uniqueValuesData.value),\n toRaw(state.value.filterLabelsInfo.value),\n toRaw(state.value.reactive),\n );\n}, {deep: true});\n\nwatch(() => chartDataForRender.value, (chartData) => {\n updateChart(chartData);\n});\nonMounted(() => {\n updateChart(null);\n});\nonUnmounted(() => {\n chartRef.value?.unmount();\n});\n\nwatchDebounced(() => state.value.reactive.optionsState, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n optionsState: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.statisticsSettings, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n statisticsSettings: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.axesSettings, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n axesSettings: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.layersSettings, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n layersSettings: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\nwatchDebounced(() => state.value.reactive.dataBindAes, (v) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n dataBindAes: copyJSON(v)\n }\n}, {deep: true, debounce: 1000});\n\nwatchDebounced([\n () => state.value.reactive.chartScale,\n () => state.value.reactive.template,\n () => state.value.reactive.currentTab\n], ([zoomState, template, currentTab]) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n zoomState,\n template,\n currentTab\n }\n}, { debounce: 1000});\n\nwatch(() => state.value.reactive.dataStateKey, (dataStateKey) => {\n graphMakerState.value = {\n ...graphMakerState.value,\n dataStateKey\n }\n}, {immediate: true});\n\nwatch(() => graphMakerState.value.currentTab, (v) => {\n state.value.reactive.currentTab = v === undefined ? 'dataMapping' : v;\n});\n\nwatch(() => graphMakerState.value?.layersSettings?.dendro?.showTable, (v) => {\n state.value.reactive.layersSettings.dendro.showTable = v ?? false;\n});\n\nfunction onExport() {\n saveToFile(\n new Blob([\n chartRef.value?.export() ?? ''\n ]),\n 'chart.svg'\n );\n}\n\nfunction updateGraphTitle(nextTitle: string) {\n graphMakerState.value = {\n ...graphMakerState.value,\n title: nextTitle\n };\n}\n\nfunction selectTreeNode(id: number | null) {\n state.value.reactive.dendroSelectedNodeId = id;\n chartRef.value?.updateChartState('selectedNode', id);\n}\n\nconst slots = useSlots();\n\nconst hasSettingsSlot = computed(() => Boolean(slots.settingsSlot));\nconst hasLogSlot = computed(() => Boolean(slots.logSlot));\n\n</script>\n\n<template>\n <div class=\"graph-maker\">\n <div class=\"graph-maker__main-pane\">\n <chart\n :graph-status=\"graphStatus\"\n :graphTitle=\"graphMakerState.title\"\n :chartData=\"chartCalculatedDataRef\"\n :chart-ref=\"chartRef\"\n :dendroTooltipButton=\"tooltipButton\"\n @graph-title-update=\"updateGraphTitle\"\n @dendro-node-select=\"selectTreeNode\"\n @dendro-tooltip-btn-click=\"(id:string) => $emit('tooltip-btn-click', id)\"\n >\n <slot name=\"titleLineSlot\"></slot>\n </chart>\n <loading v-if=\"state.loading.initialInputGuide\" :top=\"67\" :left=\"12\" :right=\"12\" :bottom=\"12\" />\n <TransitionSlidePanel id=\"graph-settings-modal\" v-if=\"!state.loading.initialInputGuide\">\n <panel-modal v-if=\"state.reactive.currentTab\" @close=\"state.reactive.currentTab = null\">\n <component :is=\"currentForm.value\">\n <slot v-if=\"state.reactive.currentTab === 'settings'\" name=\"settingsSlot\"></slot> \n <slot v-if=\"state.reactive.currentTab === 'log'\" name=\"logSlot\"></slot> \n </component>\n </panel-modal>\n </TransitionSlidePanel>\n </div>\n <v-tabs\n :chart-type=\"state.reactive.chartType\"\n :graph-status=\"graphStatus\"\n :allowDeleting=\"allowChartDeleting\"\n :hasSettingsSlot=\"hasSettingsSlot\"\n :hasLogSlot=\"hasLogSlot\"\n :initialLoading=\"state.loading.initialInputGuide\"\n v-model=\"state.reactive.currentTab\"\n @export=\"onExport\"\n @delete=\"$emit('delete-this-graph')\"\n />\n </div>\n</template>\n"],"names":["graphMakerState","_useModel","selectionState","__props","props","__expose","reset","resetDefaults","dataStore","ref","watch","pframeValue","driver","_a","DemoDataStore","fixedOptions","value","oldValue","defaultOptions","state","provideStore","toRaw","nextReactiveState","createReactiveState","prevDataKey","computed","canonicalize","keyValue","copyJSON","getInitialStateByType","currentForm","useSettingsForm","chartRef","shallowRef","chartCalculatedDataRef","chartError","graphStatus","inputGuide","chartData","onTreeNodeClick","d","onTooltipHintSwitch","v","onLassoPolygonUpdate","dotIndexes","polygons","axesData","_b","axisKeys","axisKey","idx","onLassoStateChange","graphEventHandlers","updateChart","htmlNode","MiPlots","_c","_d","chartDataForRender","composeChartSettings","onMounted","onUnmounted","watchDebounced","zoomState","template","currentTab","dataStateKey","onExport","saveToFile","updateGraphTitle","nextTitle","selectTreeNode","id","slots","useSlots","hasSettingsSlot","hasLogSlot"],"mappings":"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"}