@milaboratories/graph-maker 1.1.146 → 1.1.147

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 (25) hide show
  1. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.d.ts +1 -0
  2. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
  3. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js +155 -121
  4. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js.map +1 -1
  5. package/dist/GraphMaker/dataBindAes.d.ts +1 -0
  6. package/dist/GraphMaker/dataBindAes.d.ts.map +1 -1
  7. package/dist/GraphMaker/dataBindAes.js +73 -66
  8. package/dist/GraphMaker/dataBindAes.js.map +1 -1
  9. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.d.ts.map +1 -1
  10. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +2 -0
  11. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  12. package/dist/GraphMaker/forms/LayersForm/AesSelector.vue.d.ts.map +1 -1
  13. package/dist/GraphMaker/forms/LayersForm/AesSelector.vue.js +37 -36
  14. package/dist/GraphMaker/forms/LayersForm/AesSelector.vue.js.map +1 -1
  15. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  16. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js +31 -29
  17. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
  18. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.d.ts.map +1 -1
  19. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.js +6 -6
  20. package/dist/GraphMaker/utils/createChartSettingsForRender/getAxesDataFromForms.js.map +1 -1
  21. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +102 -101
  22. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js.map +1 -1
  23. package/dist/node_modules/@milaboratories/miplots4/dist/utils/arraysAreDifferent.js +10 -2
  24. package/dist/node_modules/@milaboratories/miplots4/dist/utils/arraysAreDifferent.js.map +1 -1
  25. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { PALETTE_MAP as _, FIXES_DOT_SHAPES as g, FIXED_LINE_TYPES as d, isCategorical as F, DEFAULT_BLACK as S } from "./constantsAesthetic.js";
1
+ import { PALETTE_MAP as _, FIXES_DOT_SHAPES as u, FIXED_LINE_TYPES as g, isCategorical as F, DEFAULT_BLACK as S } from "./constantsAesthetic.js";
2
2
  import y from "../node_modules/d3-scale/src/linear.js";
3
3
  function P(t) {
4
4
  return t !== null && typeof t == "object" && "palette" in t && "type" in t && t.type === "continuous";
@@ -15,23 +15,24 @@ const j = "#110529", I = "solid", m = 1, T = "21", D = 3, q = 2, k = { min: 3, m
15
15
  dotShape: T
16
16
  }, N = "light";
17
17
  function O(t) {
18
- const n = 1 / (t.length - 1);
19
- return y().domain(t.map((a, o) => o * n)).range(t);
18
+ const r = 1 / (t.length - 1);
19
+ return y().domain(t.map((a, e) => e * r)).range(t);
20
20
  }
21
- function U(t, n) {
22
- const a = _[t].colors, o = n.length > 1 ? 1 / (n.length - 1) : 0, s = O(a), i = F(t), l = n.reduce((e, c, r) => (e[c] = {
23
- colorIdx: i ? r : r * o,
21
+ function U(t, r) {
22
+ const a = _[t].colors, e = r.length > 1 ? 1 / (r.length - 1) : 0, s = O(a), i = F(t), l = r.reduce((o, n, c) => (o[n] = {
23
+ colorIdx: i ? c : c * e,
24
24
  aes: {
25
- color: i ? a[r % a.length] : s(r * o),
26
- lineShape: d[r % d.length],
27
- dotShape: g[r % g.length]
25
+ color: i ? a[c % a.length] : s(c * e),
26
+ lineShape: g[c % g.length],
27
+ dotShape: u[c % u.length]
28
28
  }
29
- }, e), {});
29
+ }, o), {});
30
30
  return {
31
31
  type: "categorical",
32
32
  palette: t,
33
33
  naAes: C,
34
- order: n,
34
+ order: r,
35
+ hidden: {},
35
36
  mapping: l
36
37
  };
37
38
  }
@@ -48,38 +49,38 @@ const V = [
48
49
  "heatmapAnnotation"
49
50
  // dendro
50
51
  ];
51
- function w(t, n, a) {
52
- V.forEach((o) => {
52
+ function w(t, r, a) {
53
+ V.forEach((e) => {
53
54
  var i;
54
- const s = (i = t.components[o]) == null ? void 0 : i.selectorStates;
55
+ const s = (i = t.components[e]) == null ? void 0 : i.selectorStates;
55
56
  s == null || s.forEach(({ selectedSource: l }) => {
56
- var r;
57
- const e = n[l], c = (r = a[l]) == null ? void 0 : r.list;
58
- e && c && f(e) && (n[l] = H(c, e));
57
+ var c;
58
+ const o = r[l], n = (c = a[l]) == null ? void 0 : c.list;
59
+ o && n && f(o) && (r[l] = H(n, o));
59
60
  });
60
- }), Object.keys(n).forEach((o) => {
61
- a[o] || delete n[o];
61
+ }), Object.keys(r).forEach((e) => {
62
+ a[e] || delete r[e];
62
63
  });
63
64
  }
64
- function H(t, n) {
65
- const { palette: a, order: o, mapping: s } = n, i = new Set(t), l = new Set(o), e = t.filter((p) => !l.has(p)), c = o.filter((p) => !i.has(p));
66
- if (!e.length && !c.length)
67
- return n;
68
- let r = [...t];
65
+ function H(t, r) {
66
+ const { palette: a, order: e, mapping: s } = r, i = new Set(t), l = new Set(e), o = t.filter((p) => !l.has(p)), n = e.filter((p) => !i.has(p));
67
+ if (!o.length && !n.length)
68
+ return r;
69
+ let c = [...t];
69
70
  const h = { ...s }, E = _[a].colors;
70
- return e.forEach((p, L) => {
71
- const u = L + s[o[o.length - 1]].colorIdx + 1;
71
+ return o.forEach((p, L) => {
72
+ const d = L + s[e[e.length - 1]].colorIdx + 1;
72
73
  h[p] = {
73
- colorIdx: u,
74
+ colorIdx: d,
74
75
  aes: {
75
- color: E[u % E.length],
76
- lineShape: d[u % d.length],
77
- dotShape: g[u % g.length]
76
+ color: E[d % E.length],
77
+ lineShape: g[d % g.length],
78
+ dotShape: u[d % u.length]
78
79
  }
79
80
  };
80
- }), c.forEach((p) => {
81
+ }), n.forEach((p) => {
81
82
  h[p] && delete h[p];
82
- }), { ...n, order: r, mapping: h };
83
+ }), { ...r, order: c, mapping: h };
83
84
  }
84
85
  function z(t) {
85
86
  return {
@@ -94,68 +95,74 @@ function z(t) {
94
95
  function A(t) {
95
96
  return U(N, t);
96
97
  }
97
- function M(t, n, a, o) {
98
+ function M(t, r, a, e) {
98
99
  var l;
99
- if ((n == null ? void 0 : n.type) === "continuous")
100
+ if ((r == null ? void 0 : r.type) === "continuous")
100
101
  return { inheritedAes: {} };
101
- const s = a ? ((l = t[a]) == null ? void 0 : l.list) ?? [] : [], i = n ?? A(s);
102
+ const s = a ? ((l = t[a]) == null ? void 0 : l.list) ?? [] : [], i = r ?? A(s);
102
103
  return i.order.length ? {
103
- order: i.order,
104
- inheritedAes: i.order.reduce((e, c) => {
105
- const r = i.mapping[c].aes;
106
- return e[c] = {}, o.fill && (e[c].fillColor = r.color, e[c].dotFill = r.color), o.stroke && (e[c].lineColor = r.color), o.dotShape && (e[c].dotShape = r.dotShape), o.lineType && (e[c].lineShape = r.lineShape), e;
104
+ order: i.order.filter((o) => {
105
+ var n;
106
+ return !((n = i.hidden) != null && n[o]);
107
+ }),
108
+ inheritedAes: i.order.reduce((o, n) => {
109
+ const c = i.mapping[n].aes;
110
+ return o[n] = {}, e.fill && (o[n].fillColor = c.color, o[n].dotFill = c.color), e.stroke && (o[n].lineColor = c.color), e.dotShape && (o[n].dotShape = c.dotShape), e.lineType && (o[n].lineShape = c.lineShape), o;
107
111
  }, {})
108
112
  } : { inheritedAes: {} };
109
113
  }
110
- function R(t, n, a) {
114
+ function R(t, r, a) {
111
115
  var l;
112
- const o = a[t];
113
- if (o && !f(o))
116
+ const e = a[t];
117
+ if (e && !f(e))
114
118
  return { order: [], inheritedAes: {} };
115
- const s = ((l = n[t]) == null ? void 0 : l.list) ?? [], i = o ?? A(s);
119
+ const s = ((l = r[t]) == null ? void 0 : l.list) ?? [], i = e ?? A(s);
116
120
  return {
117
121
  order: i.order,
118
- inheritedAes: i.order.reduce((e, c) => {
119
- const r = i.mapping[c].aes;
120
- return e[c] = {
121
- fillColor: r.color,
122
- lineColor: r.color,
123
- dotFill: r.color,
124
- dotShape: r.dotShape,
122
+ inheritedAes: i.order.reduce((o, n) => {
123
+ const c = i.mapping[n].aes;
124
+ return o[n] = {
125
+ fillColor: c.color,
126
+ lineColor: c.color,
127
+ dotFill: c.color,
128
+ dotShape: c.dotShape,
125
129
  dotSize: D,
126
130
  lineWidth: m
127
- }, e;
131
+ }, o;
128
132
  }, {})
129
133
  };
130
134
  }
131
- function X(t, n, a) {
135
+ function X(t, r, a) {
132
136
  var l;
133
- const o = a[t];
134
- if (o && !f(o))
137
+ const e = a[t];
138
+ if (e && !f(e))
135
139
  return {};
136
- const s = ((l = n[t]) == null ? void 0 : l.list) ?? [], i = o ?? A(s);
140
+ const s = ((l = r[t]) == null ? void 0 : l.list) ?? [], i = e ?? A(s);
137
141
  return i.order.length ? {
138
- order: i.order,
139
- inheritedAes: i.order.reduce((e, c) => {
140
- const r = i.mapping[c].aes;
141
- return e[c] = {
142
- fillColor: r.color,
142
+ order: i.order.filter((o) => {
143
+ var n;
144
+ return !((n = i.hidden) != null && n[o]);
145
+ }),
146
+ inheritedAes: i.order.reduce((o, n) => {
147
+ const c = i.mapping[n].aes;
148
+ return o[n] = {
149
+ fillColor: c.color,
143
150
  lineColor: S,
144
151
  dotFill: S,
145
152
  dotShape: T,
146
153
  dotSize: D,
147
154
  lineWidth: m
148
- }, e;
155
+ }, o;
149
156
  }, {})
150
157
  } : { order: [], inheritedAes: {} };
151
158
  }
152
- function Z(t, n, a, o) {
159
+ function Z(t, r, a, e) {
153
160
  var l;
154
- const s = ((l = n[t]) == null ? void 0 : l.list) ?? [], i = a[t] ?? A(s);
161
+ const s = ((l = r[t]) == null ? void 0 : l.list) ?? [], i = a[t] ?? A(s);
155
162
  return i.order.reduce(
156
- (e, c) => {
157
- const r = i.mapping[c].aes;
158
- return e[c] = r[o], e;
163
+ (o, n) => {
164
+ const c = i.mapping[n].aes;
165
+ return o[n] = c[e], o;
159
166
  },
160
167
  {}
161
168
  );
@@ -1 +1 @@
1
- {"version":3,"file":"dataBindAes.js","sources":["../../src/GraphMaker/dataBindAes.ts"],"sourcesContent":["import { InputState } from '@milaboratories/pf-plots';\nimport { scaleLinear } from 'd3-scale';\nimport {\n ContinuousPalette,\n DotShape,\n LineType,\n Palette,\n} from './components/AesSettings/types';\nimport {\n DEFAULT_BLACK,\n FIXED_LINE_TYPES,\n FIXES_DOT_SHAPES,\n isCategorical,\n PALETTE_MAP\n} from './constantsAesthetic';\nimport { AesType, ContinuousDataMappingSize, NumberRange } from './constantsCommon';\nimport { UniqueValuesBySourceMap } from './types';\n\nexport type AestheticMappingState = Record<string, AestheticMapping>;\nexport type AestheticMapping =\n | AestheticMappingContinuous\n | AestheticMappingCategorical;\n\ninterface MappingRange {\n maxValue: number | null;\n minValue: number | null;\n}\n\n/** Mapping for continuous axes (numerical axes) */\nexport interface AestheticMappingContinuous {\n type: 'continuous';\n palette: ContinuousPalette;\n range: MappingRange | null;\n midPoint: number | null;\n log: boolean;\n naAes: AestheticValues;\n}\n\nexport function isAestheticMappingContinuous(v:unknown | AestheticMappingContinuous): v is AestheticMappingContinuous {\n return v !== null && typeof v === 'object' && 'palette' in v && 'type' in v && v.type === 'continuous';\n}\n\n/** Mapping for categorical axes (string axes) */\nexport interface AestheticMappingCategorical {\n type: 'categorical';\n palette: Palette;\n naAes: AestheticValues;\n order: string[];\n mapping: AestheticMappingRecord;\n}\n\nexport function isAestheticMappingCategorical(v:unknown | AestheticMappingCategorical): v is AestheticMappingCategorical {\n return v !== null && typeof v === 'object' && 'palette' in v && 'type' in v && v.type === 'categorical';\n}\n\nexport function isAestheticMapping(v:unknown | AestheticMappingContinuous | AestheticMappingCategorical):v is AestheticMapping {\n return isAestheticMappingCategorical(v) || isAestheticMappingContinuous(v);\n}\n\n// key - column value, colorIdx - idx of color (if palette is categorical) of percent value of colors gradient (if palette is continuous)\ntype AestheticMappingRecord = Record<\n string | number,\n {\n aes: Partial<AestheticValues>;\n colorIdx: number;\n }\n>;\n\ninterface AestheticValues {\n /** Number to retrieve the color from pallet, string to represent specific color as hex */\n color: string;\n lineShape: LineType;\n dotShape: DotShape;\n}\n\nexport const DEFAULT_LINE_COLOR = '#110529';\nexport const DEFAULT_LINE_SHAPE:LineType = 'solid';\nexport const DEFAULT_LINE_WIDTH = 1;\nexport const DEFAULT_DOT_SHAPE:DotShape = '21'; // colored circle, shape number as in R\nexport const DEFAULT_DOT_SIZE = 3; // radius;\nexport const DEFAULT_DOT_SIZE_CANVAS = 2;\nexport const DEFAULT_DOT_RANGE:NumberRange = { min: 3, max: 10 }; // radius;\n\nexport const DEFAULT_NA_AES = {\n color: '#ccc',\n lineShape: DEFAULT_LINE_SHAPE as LineType,\n dotShape: DEFAULT_DOT_SHAPE as DotShape,\n};\nconst DEFAULT_PALETTE: Palette = 'light';\n\nfunction getColorScale(colors: string[]) {\n const colorStep = 1 / (colors.length - 1);\n return scaleLinear<string, string>()\n .domain(colors.map((_c, idx) => idx * colorStep))\n .range(colors);\n}\n\nexport function createCategoricalMappingFromPalette(\n palette: Palette,\n values: string[],\n): AestheticMappingCategorical {\n const colors = PALETTE_MAP[palette].colors;\n const step = values.length > 1 ? 1 / (values.length - 1) : 0;\n const colorScale = getColorScale(colors);\n\n const categorical = isCategorical(palette);\n const mapping = values.reduce((res: AestheticMappingRecord, value, idx) => {\n res[value] = {\n colorIdx: categorical ? idx : idx * step,\n aes: {\n color: categorical\n ? colors[idx % colors.length]\n : colorScale(idx * step),\n lineShape: FIXED_LINE_TYPES[idx % FIXED_LINE_TYPES.length],\n dotShape: FIXES_DOT_SHAPES[idx % FIXES_DOT_SHAPES.length],\n },\n };\n return res;\n }, {});\n return {\n type: 'categorical',\n palette: palette,\n naAes: DEFAULT_NA_AES,\n order: values,\n mapping,\n };\n}\n\nconst INPUTS_WITH_AES_MAPPINGS = [\n 'primaryGrouping', 'secondaryGrouping', // discrete charts\n 'grouping', 'shape', // scatterplot\n 'nodeColor', 'nodeShape', 'lineColor', 'heatmapAnnotation', // dendro\n];\nexport function updateDataBindAes(\n optionsState: InputState,\n dataBindAes: Record<string, AestheticMapping>,\n uniqueValuesMap: UniqueValuesBySourceMap\n) {\n INPUTS_WITH_AES_MAPPINGS.forEach((inputName) => {\n const selectorStates = optionsState.components[inputName as keyof InputState]?.selectorStates;\n selectorStates?.forEach(({selectedSource}) => {\n const savedMapping = dataBindAes[selectedSource];\n const uniqueValues = uniqueValuesMap[selectedSource]?.list;\n if (savedMapping && uniqueValues && isAestheticMappingCategorical(savedMapping)) {\n dataBindAes[selectedSource] = updateCategoricalMapping(uniqueValues, savedMapping);\n }\n })\n });\n Object.keys(dataBindAes).forEach((selectedSource) => {\n if (!uniqueValuesMap[selectedSource]) {\n delete dataBindAes[selectedSource];\n }\n })\n}\n\nexport function updateCategoricalMapping(\n newUniqueValues: string[],\n currentMapping: AestheticMappingCategorical,\n): AestheticMappingCategorical {\n const {palette, order, mapping} = currentMapping;\n const uniqueValuesSet = new Set(newUniqueValues);\n const orderValuesSet = new Set(order);\n const addedValues:string[] = newUniqueValues.filter(v => !orderValuesSet.has(v));\n const removedValues:string[] = order.filter(v => !uniqueValuesSet.has(v as string));\n if (!addedValues.length && !removedValues.length) {\n return currentMapping;\n }\n let newOrder = [...newUniqueValues];\n const newMapping = {...mapping};\n const colors = PALETTE_MAP[palette].colors;\n addedValues.forEach((v, idx) => {\n const index = idx + mapping[order[order.length - 1]].colorIdx + 1;\n newMapping[v] = {\n colorIdx: index,\n aes: {\n color: colors[index % colors.length],\n lineShape: FIXED_LINE_TYPES[index % FIXED_LINE_TYPES.length],\n dotShape: FIXES_DOT_SHAPES[index % FIXES_DOT_SHAPES.length],\n }\n }\n });\n removedValues.forEach((v) => {\n if (newMapping[v]) {\n delete newMapping[v];\n }\n });\n\n return {...currentMapping, order: newOrder, mapping: newMapping} as AestheticMappingCategorical;\n}\nexport function createContinuousMappingFromPalette(palette: ContinuousPalette):AestheticMappingContinuous {\n return {\n type: 'continuous',\n palette: palette,\n naAes: DEFAULT_NA_AES,\n range: null,\n midPoint: null,\n log: false\n }\n}\n\nexport function createDefaultMapping(\n values: string[],\n): AestheticMappingCategorical {\n return createCategoricalMappingFromPalette(DEFAULT_PALETTE, values);\n}\n\nexport function createDefaultContinuousMapping(columnId: string):ContinuousDataMappingSize {\n return {\n column: columnId,\n range: DEFAULT_DOT_RANGE\n }\n}\n\nexport function getChartSettingsInheritedAes(\n uniqueValuesData: UniqueValuesBySourceMap,\n savedMapping: AestheticMapping | undefined,\n sourceId: string | null,\n usedAesInMapping: Record<AesType, boolean>,\n) {\n if (savedMapping?.type === 'continuous') {\n return { inheritedAes: {} };\n }\n const uniqueValues = sourceId ? uniqueValuesData[sourceId]?.list ?? [] : [];\n const mapping = savedMapping ?? createDefaultMapping(uniqueValues);\n if (!mapping.order.length) {\n return {inheritedAes: {}};\n }\n return {\n order: mapping.order,\n inheritedAes: mapping.order.reduce((res: Record<string, any>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = {};\n if (usedAesInMapping.fill) {\n res[value].fillColor = aes.color;\n res[value].dotFill = aes.color;\n }\n if (usedAesInMapping.stroke) {\n res[value].lineColor = aes.color;\n }\n if (usedAesInMapping.dotShape) {\n res[value].dotShape = aes.dotShape;\n }\n if (usedAesInMapping.lineType) {\n res[value].lineShape = aes.lineShape;\n }\n return res;\n }, {}),\n };\n}\n\nexport function getScatterplotAes(\n selectedSource: string,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n) {\n const savedMapping = dataBindAes[selectedSource];\n if (savedMapping && !isAestheticMappingCategorical(savedMapping)) {\n return {order: [], inheritedAes: {}};\n }\n const uniqueValues = uniqueValuesData[selectedSource]?.list ?? [];\n const mapping = savedMapping ?? createDefaultMapping(uniqueValues);\n return {\n order: mapping.order,\n inheritedAes: mapping.order.reduce((res: Record<string, any>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = {\n fillColor: aes.color,\n lineColor: aes.color,\n dotFill: aes.color,\n dotShape: aes.dotShape,\n dotSize: DEFAULT_DOT_SIZE,\n lineWidth: DEFAULT_LINE_WIDTH,\n };\n return res;\n }, {})\n }\n}\n\nexport function getHistogramAes(\n selectedSource: string,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n) {\n const savedMapping = dataBindAes[selectedSource];\n if (savedMapping && !isAestheticMappingCategorical(savedMapping)) {\n return {};\n }\n const uniqueValues = uniqueValuesData[selectedSource]?.list ?? [];\n const mapping = savedMapping ?? createDefaultMapping(uniqueValues);\n if (!mapping.order.length) {\n return {order: [], inheritedAes: {}};\n }\n return {\n order: mapping.order,\n inheritedAes: mapping.order.reduce((res: Record<string, any>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = {\n fillColor: aes.color,\n lineColor: DEFAULT_BLACK,\n dotFill: DEFAULT_BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n lineWidth: DEFAULT_LINE_WIDTH,\n };\n return res;\n }, {})\n };\n}\n\nexport function getDendroAes(\n selectedSource: string,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n field: keyof AestheticValues,\n): Record<string, AestheticValues[keyof AestheticValues]> {\n const uniqueValues = uniqueValuesData[selectedSource]?.list ?? [];\n const mapping =\n dataBindAes[selectedSource] as AestheticMappingCategorical ??\n createDefaultMapping(uniqueValues);\n return mapping.order.reduce(\n (res: Record<string, AestheticValues[keyof AestheticValues]>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = aes[field] as string;\n return res;\n },\n {},\n );\n}\n"],"names":["isAestheticMappingContinuous","v","isAestheticMappingCategorical","isAestheticMapping","DEFAULT_LINE_COLOR","DEFAULT_LINE_SHAPE","DEFAULT_LINE_WIDTH","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","DEFAULT_DOT_SIZE_CANVAS","DEFAULT_DOT_RANGE","DEFAULT_NA_AES","DEFAULT_PALETTE","getColorScale","colors","colorStep","scaleLinear","_c","idx","createCategoricalMappingFromPalette","palette","values","PALETTE_MAP","step","colorScale","categorical","isCategorical","mapping","res","value","FIXED_LINE_TYPES","FIXES_DOT_SHAPES","INPUTS_WITH_AES_MAPPINGS","updateDataBindAes","optionsState","dataBindAes","uniqueValuesMap","inputName","selectorStates","_a","selectedSource","savedMapping","uniqueValues","updateCategoricalMapping","newUniqueValues","currentMapping","order","uniqueValuesSet","orderValuesSet","addedValues","removedValues","newOrder","newMapping","index","createContinuousMappingFromPalette","createDefaultMapping","getChartSettingsInheritedAes","uniqueValuesData","sourceId","usedAesInMapping","aes","getScatterplotAes","getHistogramAes","DEFAULT_BLACK","getDendroAes","field"],"mappings":"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"}
1
+ {"version":3,"file":"dataBindAes.js","sources":["../../src/GraphMaker/dataBindAes.ts"],"sourcesContent":["import { InputState } from '@milaboratories/pf-plots';\nimport { scaleLinear } from 'd3-scale';\nimport {\n ContinuousPalette,\n DotShape,\n LineType,\n Palette,\n} from './components/AesSettings/types';\nimport {\n DEFAULT_BLACK,\n FIXED_LINE_TYPES,\n FIXES_DOT_SHAPES,\n isCategorical,\n PALETTE_MAP\n} from './constantsAesthetic';\nimport { AesType, ContinuousDataMappingSize, NumberRange } from './constantsCommon';\nimport { UniqueValuesBySourceMap } from './types';\n\nexport type AestheticMappingState = Record<string, AestheticMapping>;\nexport type AestheticMapping =\n | AestheticMappingContinuous\n | AestheticMappingCategorical;\n\ninterface MappingRange {\n maxValue: number | null;\n minValue: number | null;\n}\n\n/** Mapping for continuous axes (numerical axes) */\nexport interface AestheticMappingContinuous {\n type: 'continuous';\n palette: ContinuousPalette;\n range: MappingRange | null;\n midPoint: number | null;\n log: boolean;\n naAes: AestheticValues;\n}\n\nexport function isAestheticMappingContinuous(v:unknown | AestheticMappingContinuous): v is AestheticMappingContinuous {\n return v !== null && typeof v === 'object' && 'palette' in v && 'type' in v && v.type === 'continuous';\n}\n\n/** Mapping for categorical axes (string axes) */\nexport interface AestheticMappingCategorical {\n type: 'categorical';\n palette: Palette;\n naAes: AestheticValues;\n order: string[];\n hidden?: Record<string, boolean>;\n mapping: AestheticMappingRecord;\n}\n\nexport function isAestheticMappingCategorical(v:unknown | AestheticMappingCategorical): v is AestheticMappingCategorical {\n return v !== null && typeof v === 'object' && 'palette' in v && 'type' in v && v.type === 'categorical';\n}\n\nexport function isAestheticMapping(v:unknown | AestheticMappingContinuous | AestheticMappingCategorical):v is AestheticMapping {\n return isAestheticMappingCategorical(v) || isAestheticMappingContinuous(v);\n}\n\n// key - column value, colorIdx - idx of color (if palette is categorical) of percent value of colors gradient (if palette is continuous)\ntype AestheticMappingRecord = Record<\n string | number,\n {\n aes: Partial<AestheticValues>;\n colorIdx: number;\n }\n>;\n\ninterface AestheticValues {\n /** Number to retrieve the color from pallet, string to represent specific color as hex */\n color: string;\n lineShape: LineType;\n dotShape: DotShape;\n}\n\nexport const DEFAULT_LINE_COLOR = '#110529';\nexport const DEFAULT_LINE_SHAPE:LineType = 'solid';\nexport const DEFAULT_LINE_WIDTH = 1;\nexport const DEFAULT_DOT_SHAPE:DotShape = '21'; // colored circle, shape number as in R\nexport const DEFAULT_DOT_SIZE = 3; // radius;\nexport const DEFAULT_DOT_SIZE_CANVAS = 2;\nexport const DEFAULT_DOT_RANGE:NumberRange = { min: 3, max: 10 }; // radius;\n\nexport const DEFAULT_NA_AES = {\n color: '#ccc',\n lineShape: DEFAULT_LINE_SHAPE as LineType,\n dotShape: DEFAULT_DOT_SHAPE as DotShape,\n};\nconst DEFAULT_PALETTE: Palette = 'light';\n\nfunction getColorScale(colors: string[]) {\n const colorStep = 1 / (colors.length - 1);\n return scaleLinear<string, string>()\n .domain(colors.map((_c, idx) => idx * colorStep))\n .range(colors);\n}\n\nexport function createCategoricalMappingFromPalette(\n palette: Palette,\n values: string[],\n): AestheticMappingCategorical {\n const colors = PALETTE_MAP[palette].colors;\n const step = values.length > 1 ? 1 / (values.length - 1) : 0;\n const colorScale = getColorScale(colors);\n\n const categorical = isCategorical(palette);\n const mapping = values.reduce((res: AestheticMappingRecord, value, idx) => {\n res[value] = {\n colorIdx: categorical ? idx : idx * step,\n aes: {\n color: categorical\n ? colors[idx % colors.length]\n : colorScale(idx * step),\n lineShape: FIXED_LINE_TYPES[idx % FIXED_LINE_TYPES.length],\n dotShape: FIXES_DOT_SHAPES[idx % FIXES_DOT_SHAPES.length],\n },\n };\n return res;\n }, {});\n return {\n type: 'categorical',\n palette: palette,\n naAes: DEFAULT_NA_AES,\n order: values,\n hidden: {},\n mapping,\n };\n}\n\nconst INPUTS_WITH_AES_MAPPINGS = [\n 'primaryGrouping', 'secondaryGrouping', // discrete charts\n 'grouping', 'shape', // scatterplot\n 'nodeColor', 'nodeShape', 'lineColor', 'heatmapAnnotation', // dendro\n];\nexport function updateDataBindAes(\n optionsState: InputState,\n dataBindAes: Record<string, AestheticMapping>,\n uniqueValuesMap: UniqueValuesBySourceMap\n) {\n INPUTS_WITH_AES_MAPPINGS.forEach((inputName) => {\n const selectorStates = optionsState.components[inputName as keyof InputState]?.selectorStates;\n selectorStates?.forEach(({selectedSource}) => {\n const savedMapping = dataBindAes[selectedSource];\n const uniqueValues = uniqueValuesMap[selectedSource]?.list;\n if (savedMapping && uniqueValues && isAestheticMappingCategorical(savedMapping)) {\n dataBindAes[selectedSource] = updateCategoricalMapping(uniqueValues, savedMapping);\n }\n })\n });\n Object.keys(dataBindAes).forEach((selectedSource) => {\n if (!uniqueValuesMap[selectedSource]) {\n delete dataBindAes[selectedSource];\n }\n })\n}\n\nexport function updateCategoricalMapping(\n newUniqueValues: string[],\n currentMapping: AestheticMappingCategorical,\n): AestheticMappingCategorical {\n const {palette, order, mapping} = currentMapping;\n const uniqueValuesSet = new Set(newUniqueValues);\n const orderValuesSet = new Set(order);\n const addedValues:string[] = newUniqueValues.filter(v => !orderValuesSet.has(v));\n const removedValues:string[] = order.filter(v => !uniqueValuesSet.has(v as string));\n if (!addedValues.length && !removedValues.length) {\n return currentMapping;\n }\n let newOrder = [...newUniqueValues];\n const newMapping = {...mapping};\n const colors = PALETTE_MAP[palette].colors;\n addedValues.forEach((v, idx) => {\n const index = idx + mapping[order[order.length - 1]].colorIdx + 1;\n newMapping[v] = {\n colorIdx: index,\n aes: {\n color: colors[index % colors.length],\n lineShape: FIXED_LINE_TYPES[index % FIXED_LINE_TYPES.length],\n dotShape: FIXES_DOT_SHAPES[index % FIXES_DOT_SHAPES.length],\n }\n }\n });\n removedValues.forEach((v) => {\n if (newMapping[v]) {\n delete newMapping[v];\n }\n });\n\n return {...currentMapping, order: newOrder, mapping: newMapping} as AestheticMappingCategorical;\n}\nexport function createContinuousMappingFromPalette(palette: ContinuousPalette):AestheticMappingContinuous {\n return {\n type: 'continuous',\n palette: palette,\n naAes: DEFAULT_NA_AES,\n range: null,\n midPoint: null,\n log: false\n }\n}\n\nexport function createDefaultMapping(\n values: string[],\n): AestheticMappingCategorical {\n return createCategoricalMappingFromPalette(DEFAULT_PALETTE, values);\n}\n\nexport function createDefaultContinuousMapping(columnId: string):ContinuousDataMappingSize {\n return {\n column: columnId,\n range: DEFAULT_DOT_RANGE\n }\n}\n\nexport function getChartSettingsInheritedAes(\n uniqueValuesData: UniqueValuesBySourceMap,\n savedMapping: AestheticMapping | undefined,\n sourceId: string | null,\n usedAesInMapping: Record<AesType, boolean>,\n) {\n if (savedMapping?.type === 'continuous') {\n return { inheritedAes: {} };\n }\n const uniqueValues = sourceId ? uniqueValuesData[sourceId]?.list ?? [] : [];\n const mapping = savedMapping ?? createDefaultMapping(uniqueValues);\n if (!mapping.order.length) {\n return {inheritedAes: {}};\n }\n return {\n order: mapping.order.filter((v) => !mapping.hidden?.[v]),\n inheritedAes: mapping.order.reduce((res: Record<string, any>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = {};\n if (usedAesInMapping.fill) {\n res[value].fillColor = aes.color;\n res[value].dotFill = aes.color;\n }\n if (usedAesInMapping.stroke) {\n res[value].lineColor = aes.color;\n }\n if (usedAesInMapping.dotShape) {\n res[value].dotShape = aes.dotShape;\n }\n if (usedAesInMapping.lineType) {\n res[value].lineShape = aes.lineShape;\n }\n return res;\n }, {}),\n };\n}\n\nexport function getScatterplotAes(\n selectedSource: string,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n) {\n const savedMapping = dataBindAes[selectedSource];\n if (savedMapping && !isAestheticMappingCategorical(savedMapping)) {\n return {order: [], inheritedAes: {}};\n }\n const uniqueValues = uniqueValuesData[selectedSource]?.list ?? [];\n const mapping = savedMapping ?? createDefaultMapping(uniqueValues);\n return {\n order: mapping.order,\n inheritedAes: mapping.order.reduce((res: Record<string, any>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = {\n fillColor: aes.color,\n lineColor: aes.color,\n dotFill: aes.color,\n dotShape: aes.dotShape,\n dotSize: DEFAULT_DOT_SIZE,\n lineWidth: DEFAULT_LINE_WIDTH,\n };\n return res;\n }, {})\n }\n}\n\nexport function getHistogramAes(\n selectedSource: string,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n) {\n const savedMapping = dataBindAes[selectedSource];\n if (savedMapping && !isAestheticMappingCategorical(savedMapping)) {\n return {};\n }\n const uniqueValues = uniqueValuesData[selectedSource]?.list ?? [];\n const mapping = savedMapping ?? createDefaultMapping(uniqueValues);\n if (!mapping.order.length) {\n return {order: [], inheritedAes: {}};\n }\n return {\n order: mapping.order.filter((v) => !mapping.hidden?.[v]),\n inheritedAes: mapping.order.reduce((res: Record<string, any>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = {\n fillColor: aes.color,\n lineColor: DEFAULT_BLACK,\n dotFill: DEFAULT_BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n lineWidth: DEFAULT_LINE_WIDTH,\n };\n return res;\n }, {})\n };\n}\n\nexport function getDendroAes(\n selectedSource: string,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n field: keyof AestheticValues,\n): Record<string, AestheticValues[keyof AestheticValues]> {\n const uniqueValues = uniqueValuesData[selectedSource]?.list ?? [];\n const mapping =\n dataBindAes[selectedSource] as AestheticMappingCategorical ??\n createDefaultMapping(uniqueValues);\n return mapping.order.reduce(\n (res: Record<string, AestheticValues[keyof AestheticValues]>, value) => {\n const aes = mapping.mapping[value].aes;\n res[value] = aes[field] as string;\n return res;\n },\n {},\n );\n}\n"],"names":["isAestheticMappingContinuous","v","isAestheticMappingCategorical","isAestheticMapping","DEFAULT_LINE_COLOR","DEFAULT_LINE_SHAPE","DEFAULT_LINE_WIDTH","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","DEFAULT_DOT_SIZE_CANVAS","DEFAULT_DOT_RANGE","DEFAULT_NA_AES","DEFAULT_PALETTE","getColorScale","colors","colorStep","scaleLinear","_c","idx","createCategoricalMappingFromPalette","palette","values","PALETTE_MAP","step","colorScale","categorical","isCategorical","mapping","res","value","FIXED_LINE_TYPES","FIXES_DOT_SHAPES","INPUTS_WITH_AES_MAPPINGS","updateDataBindAes","optionsState","dataBindAes","uniqueValuesMap","inputName","selectorStates","_a","selectedSource","savedMapping","uniqueValues","updateCategoricalMapping","newUniqueValues","currentMapping","order","uniqueValuesSet","orderValuesSet","addedValues","removedValues","newOrder","newMapping","index","createContinuousMappingFromPalette","createDefaultMapping","getChartSettingsInheritedAes","uniqueValuesData","sourceId","usedAesInMapping","aes","getScatterplotAes","getHistogramAes","DEFAULT_BLACK","getDendroAes","field"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DiscreteAxesSettingsForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"names":[],"mappings":";AA2hCA,wBAMG"}
1
+ {"version":3,"file":"DiscreteAxesSettingsForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"names":[],"mappings":";AAiiCA,wBAMG"}
@@ -180,6 +180,7 @@ const pe = { class: "axes-settings-list" }, ve = { class: "axes-settings-options
180
180
  "data-column-label": ((l = I.value.selectedSourceInfo) == null ? void 0 : l.label) ?? "",
181
181
  "used-aes-in-mapping": B.value[g.value],
182
182
  "allow-reordering": "",
183
+ "allow-hiding": "",
183
184
  modelValue: F.value,
184
185
  "onUpdate:modelValue": [
185
186
  e[4] || (e[4] = (i) => F.value = i),
@@ -220,6 +221,7 @@ const pe = { class: "axes-settings-list" }, ve = { class: "axes-settings-options
220
221
  "data-column-label": ((l = X.value.selectedSourceInfo) == null ? void 0 : l.label) ?? "",
221
222
  "used-aes-in-mapping": B.value[f.value],
222
223
  "allow-reordering": "",
224
+ "allow-hiding": "",
223
225
  modelValue: L.value,
224
226
  "onUpdate:modelValue": [
225
227
  e[9] || (e[9] = (i) => L.value = i),
@@ -1 +1 @@
1
- {"version":3,"file":"DiscreteAxesSettingsForm.vue.js","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Slider, PlToggleSwitch } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Right from '../../icons/Right.vue';\nimport Down from '../../icons/Down.vue';\nimport { PlTextField, PlBtnGroup } from '@platforma-sdk/ui-vue';\nimport BtnIconGroup from '../../components/BtnIconGroup.vue';\nimport AlignLeft from '../../icons/AlignLeft.vue';\nimport AlignCenter from '../../icons/AlignCenter.vue';\nimport AlignRight from '../../icons/AlignRight.vue';\nimport FrameFull from '../../icons/FrameFull.vue';\nimport FrameEmpty from '../../icons/FrameEmpty.vue';\nimport Rotation0 from '../../icons/Rotation0.vue';\nimport Rotation45 from '../../icons/Rotation45.vue';\nimport Rotation90 from '../../icons/Rotation90.vue';\nimport FrameLeft from '../../icons/FrameLeft.vue';\nimport FrameBottom from '../../icons/FrameBottom.vue';\nimport FrameLeftBottom from '../../icons/FrameLeftBottom.vue';\nimport AesButton from '../../components/AesButton.vue';\nimport FormWrapper from '../../components/AesSettings/FormWrapper.vue';\nimport { computed, ref } from 'vue';\nimport AesDataMapping from '../../components/AesSettings/AesDataMappingDiscrete.vue';\nimport { AestheticMappingCategorical, createDefaultMapping } from '../../dataBindAes';\nimport { LabelsRotation } from '../../types';\nimport { getDiscreteLabelsRotation } from '../../utils';\n\nconst store = useStore();\nconst settings = store.value.reactive.axesSettings;\nconst blockSettings = {\n height: 40,\n horizontalPadding: 12,\n defaultState: 'open' as 'open' | 'close'\n};\n\nconst OPTIONS_TITLE_ALIGN = [\n {value: 'left', icon: AlignLeft},\n {value: 'center', icon: AlignCenter},\n {value: 'right', icon: AlignRight},\n]\n// const OPTIONS_FACET_FRAME = [\n// {value: 'empty', icon: FrameEmpty},\n// {value: 'full', icon: FrameFull},\n// ]\nconst OPTIONS_LABELS_ROTATION = [\n { value: 'center', icon: Rotation0 },\n { value: '45deg', icon: Rotation45 },\n { value: '90deg', icon: Rotation90 }\n];\nconst OPTIONS_AXIS_LABEL_MODE = [\n { value: 'auto', text: 'Auto' },\n { value: 'custom', text: 'Custom' },\n { value: 'hidden', text: 'Hide' }\n];\nconst OPTIONS_SCALE = [\n { value: 'linear', text: 'Linear' },\n { value: 'log', text: 'Log' }\n];\nconst OPTIONS_CHART_FRAME = [\n { value: 'empty', icon: FrameEmpty },\n { value: 'left', icon: FrameLeft },\n { value: 'bottom', icon: FrameBottom },\n { value: 'left-bottom', icon: FrameLeftBottom },\n { value: 'full', icon: FrameFull }\n];\n\nconst inputGuide = computed(() => store.value.inputGuide.value)\nconst labelsInfo = computed(() => store.value.uniqueValuesData.value)\n\nconst reorderPrimaryOpen = ref(false);\nconst reorderSecondaryOpen = ref(false);\n\nconst primaryGrouping = computed(() => store.value.reactive.optionsState.components.primaryGrouping?.selectorStates[0]?.selectedSource);\nconst secondaryGrouping = computed(() => store.value.reactive.optionsState.components.secondaryGrouping?.selectorStates[0]?.selectedSource);\n\nconst primaryGroups = computed(() => store.value.commonHelpersData.primaryGroups.value)\nconst secondaryGroups = computed(() => store.value.commonHelpersData.secondaryGroups.value)\n\nconst usedAesInMapping = computed(() => store.value.commonHelpersData.usedAesInMapping.value);\n\nconst mappingPrimary = ref(store.value.reactive.dataBindAes[primaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(primaryGroups.value));\nconst mappingSecondary = ref(store.value.reactive.dataBindAes[secondaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(secondaryGroups.value));\n\nconst primaryInfo = computed(() => {\n if (primaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(primaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[primaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: primaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\nconst secondaryInfo = computed(() => {\n if (secondaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(secondaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[secondaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: secondaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\n\nfunction updateOrder(value: AestheticMappingCategorical, sourceId: string) {\n store.value.reactive.dataBindAes[sourceId] = value;\n}\n\nconst OPTIONS_FACET_SHARED = [\n { text: 'X', value: 'x' },\n { text: 'Y', value: 'y' },\n { text: 'XY', value: 'xy' },\n { text: 'None', value: 'none' }\n];\n\nconst primaryOptions = computed(() => labelsInfo.value[primaryGrouping.value])\nconst xLabelsRotation = computed({\n get(){\n return getDiscreteLabelsRotation(settings.axisX.labelsRotation, primaryOptions.value?.options)\n },\n set(value:LabelsRotation) {\n settings.axisX.labelsRotation = value;\n }\n})\n</script>\n\n<template>\n <div class=\"axes-form\" @click=\"(e) => e.stopPropagation()\">\n <h3 class=\"axes-title\">\n Axes\n </h3>\n <div class=\"axes-settings-list\">\n <!-- Chart title -->\n <collapsable-block title=\"Title\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.title.mode\"\n />\n </div>\n <div class=\"axes-settings-input\" v-if=\"settings.title.mode === 'custom'\">\n <pl-text-field\n label=\"Chart title\"\n placeholder=\"Chart title\"\n v-model=\"settings.title.value\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Alignment</span>\n <btn-icon-group :options=\"OPTIONS_TITLE_ALIGN\" v-model=\"settings.title.position\"/>\n </div>\n<!-- <div class=\"axes-settings-options-row\">-->\n<!-- <span>Facet frame style</span>-->\n<!-- <btn-icon-group :options=\"OPTIONS_FACET_FRAME\" v-model=\"settings.title.facetTitleFrame\"/>-->\n<!-- </div>-->\n </collapsable-block>\n <!-- X axis settings-->\n <collapsable-block title=\"X-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Primary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderPrimaryOpen = true;\" />\n <template v-if=\"reorderPrimaryOpen && primaryInfo\">\n <form-wrapper\n title=\"Reorder primary groups\"\n back-title=\"Axes Settings\"\n @form:close=\"reorderPrimaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"primaryInfo.labels\"\n :data-column-label=\"primaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[primaryGrouping]\"\n allow-reordering\n v-model=\"mappingPrimary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, primaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Allow null primary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullPrimaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Secondary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderSecondaryOpen = true;\" />\n <template v-if=\"reorderSecondaryOpen && secondaryInfo\">\n <form-wrapper\n title=\"Reorder secondary groups\"\n back-title=\"Axes Settings\"\n @form:close=\"reorderSecondaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"secondaryInfo.labels\"\n :data-column-label=\"secondaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[secondaryGrouping]\"\n allow-reordering\n v-model=\"mappingSecondary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, secondaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Allow null secondary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullSecondaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"store.reactive.chartType === 'discrete'\">\n <span>Labels rotation</span>\n <btn-icon-group :options=\"OPTIONS_LABELS_ROTATION\" v-model=\"xLabelsRotation\" />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisX.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisX.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisX.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisX.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Lines between categories</span>\n <pl-toggle-switch v-model=\"settings.axisX.linesBetweenCategories\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisX.ticks\" />\n </div>\n </collapsable-block>\n <!-- Y axis settings-->\n <collapsable-block title=\"Y-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisY.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisY.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisY.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Scale\"\n :options=\"OPTIONS_SCALE\"\n v-model=\"settings.axisY.scale\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisY.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisY.ticks\" />\n </div>\n </collapsable-block>\n <!-- Facet settings-->\n <div class=\"other\">\n <div class=\"axes-settings-options-row\">\n <span>Frame</span>\n <btn-icon-group :options=\"OPTIONS_CHART_FRAME\" v-model=\"settings.other.frame\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Reverse axes</span>\n <pl-toggle-switch v-model=\"settings.other.reverse\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <Slider\n :style=\"{width: '100%'}\"\n label=\"Facet column count\"\n :min=\"1\"\n :max=\"6\"\n :step=\"1\"\n :breakpoints=\"true\"\n mode=\"input\"\n v-model=\"settings.other.facetColumns\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Facet shared by\"\n :options=\"OPTIONS_FACET_SHARED\"\n v-model=\"settings.other.facetSharedBy\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","settings","blockSettings","OPTIONS_TITLE_ALIGN","AlignLeft","AlignCenter","AlignRight","OPTIONS_LABELS_ROTATION","Rotation0","Rotation45","Rotation90","OPTIONS_AXIS_LABEL_MODE","OPTIONS_SCALE","OPTIONS_CHART_FRAME","FrameEmpty","FrameLeft","FrameBottom","FrameLeftBottom","FrameFull","inputGuide","computed","labelsInfo","reorderPrimaryOpen","ref","reorderSecondaryOpen","primaryGrouping","_b","_a","secondaryGrouping","primaryGroups","secondaryGroups","usedAesInMapping","mappingPrimary","createDefaultMapping","mappingSecondary","primaryInfo","selectedSourceInfo","valueLabels","res","v","secondaryInfo","updateOrder","value","sourceId","OPTIONS_FACET_SHARED","primaryOptions","xLabelsRotation","getDiscreteLabelsRotation"],"mappings":"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"}
1
+ {"version":3,"file":"DiscreteAxesSettingsForm.vue.js","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Slider, PlToggleSwitch } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Right from '../../icons/Right.vue';\nimport Down from '../../icons/Down.vue';\nimport { PlTextField, PlBtnGroup } from '@platforma-sdk/ui-vue';\nimport BtnIconGroup from '../../components/BtnIconGroup.vue';\nimport AlignLeft from '../../icons/AlignLeft.vue';\nimport AlignCenter from '../../icons/AlignCenter.vue';\nimport AlignRight from '../../icons/AlignRight.vue';\nimport FrameFull from '../../icons/FrameFull.vue';\nimport FrameEmpty from '../../icons/FrameEmpty.vue';\nimport Rotation0 from '../../icons/Rotation0.vue';\nimport Rotation45 from '../../icons/Rotation45.vue';\nimport Rotation90 from '../../icons/Rotation90.vue';\nimport FrameLeft from '../../icons/FrameLeft.vue';\nimport FrameBottom from '../../icons/FrameBottom.vue';\nimport FrameLeftBottom from '../../icons/FrameLeftBottom.vue';\nimport AesButton from '../../components/AesButton.vue';\nimport FormWrapper from '../../components/AesSettings/FormWrapper.vue';\nimport { computed, ref } from 'vue';\nimport AesDataMapping from '../../components/AesSettings/AesDataMappingDiscrete.vue';\nimport { AestheticMappingCategorical, createDefaultMapping } from '../../dataBindAes';\nimport { LabelsRotation } from '../../types';\nimport { getDiscreteLabelsRotation } from '../../utils';\n\nconst store = useStore();\nconst settings = store.value.reactive.axesSettings;\nconst blockSettings = {\n height: 40,\n horizontalPadding: 12,\n defaultState: 'open' as 'open' | 'close'\n};\n\nconst OPTIONS_TITLE_ALIGN = [\n {value: 'left', icon: AlignLeft},\n {value: 'center', icon: AlignCenter},\n {value: 'right', icon: AlignRight},\n]\n// const OPTIONS_FACET_FRAME = [\n// {value: 'empty', icon: FrameEmpty},\n// {value: 'full', icon: FrameFull},\n// ]\nconst OPTIONS_LABELS_ROTATION = [\n { value: 'center', icon: Rotation0 },\n { value: '45deg', icon: Rotation45 },\n { value: '90deg', icon: Rotation90 }\n];\nconst OPTIONS_AXIS_LABEL_MODE = [\n { value: 'auto', text: 'Auto' },\n { value: 'custom', text: 'Custom' },\n { value: 'hidden', text: 'Hide' }\n];\nconst OPTIONS_SCALE = [\n { value: 'linear', text: 'Linear' },\n { value: 'log', text: 'Log' }\n];\nconst OPTIONS_CHART_FRAME = [\n { value: 'empty', icon: FrameEmpty },\n { value: 'left', icon: FrameLeft },\n { value: 'bottom', icon: FrameBottom },\n { value: 'left-bottom', icon: FrameLeftBottom },\n { value: 'full', icon: FrameFull }\n];\n\nconst inputGuide = computed(() => store.value.inputGuide.value)\nconst labelsInfo = computed(() => store.value.uniqueValuesData.value)\n\nconst reorderPrimaryOpen = ref(false);\nconst reorderSecondaryOpen = ref(false);\n\nconst primaryGrouping = computed(() => store.value.reactive.optionsState.components.primaryGrouping?.selectorStates[0]?.selectedSource);\nconst secondaryGrouping = computed(() => store.value.reactive.optionsState.components.secondaryGrouping?.selectorStates[0]?.selectedSource);\n\nconst primaryGroups = computed(() => store.value.commonHelpersData.primaryGroups.value)\nconst secondaryGroups = computed(() => store.value.commonHelpersData.secondaryGroups.value)\n\nconst usedAesInMapping = computed(() => store.value.commonHelpersData.usedAesInMapping.value);\n\nconst mappingPrimary = ref(store.value.reactive.dataBindAes[primaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(primaryGroups.value));\nconst mappingSecondary = ref(store.value.reactive.dataBindAes[secondaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(secondaryGroups.value));\n\nconst primaryInfo = computed(() => {\n if (primaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(primaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[primaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: primaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\nconst secondaryInfo = computed(() => {\n if (secondaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(secondaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[secondaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: secondaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\n\nfunction updateOrder(value: AestheticMappingCategorical, sourceId: string) {\n store.value.reactive.dataBindAes[sourceId] = value;\n}\n\nconst OPTIONS_FACET_SHARED = [\n { text: 'X', value: 'x' },\n { text: 'Y', value: 'y' },\n { text: 'XY', value: 'xy' },\n { text: 'None', value: 'none' }\n];\n\nconst primaryOptions = computed(() => labelsInfo.value[primaryGrouping.value])\nconst xLabelsRotation = computed({\n get(){\n return getDiscreteLabelsRotation(settings.axisX.labelsRotation, primaryOptions.value?.options)\n },\n set(value:LabelsRotation) {\n settings.axisX.labelsRotation = value;\n }\n})\n</script>\n\n<template>\n <div class=\"axes-form\" @click=\"(e) => e.stopPropagation()\">\n <h3 class=\"axes-title\">\n Axes\n </h3>\n <div class=\"axes-settings-list\">\n <!-- Chart title -->\n <collapsable-block title=\"Title\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.title.mode\"\n />\n </div>\n <div class=\"axes-settings-input\" v-if=\"settings.title.mode === 'custom'\">\n <pl-text-field\n label=\"Chart title\"\n placeholder=\"Chart title\"\n v-model=\"settings.title.value\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Alignment</span>\n <btn-icon-group :options=\"OPTIONS_TITLE_ALIGN\" v-model=\"settings.title.position\"/>\n </div>\n<!-- <div class=\"axes-settings-options-row\">-->\n<!-- <span>Facet frame style</span>-->\n<!-- <btn-icon-group :options=\"OPTIONS_FACET_FRAME\" v-model=\"settings.title.facetTitleFrame\"/>-->\n<!-- </div>-->\n </collapsable-block>\n <!-- X axis settings-->\n <collapsable-block title=\"X-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Primary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderPrimaryOpen = true;\" />\n <template v-if=\"reorderPrimaryOpen && primaryInfo\">\n <form-wrapper\n title=\"Reorder primary groups\"\n back-title=\"Axes Settings\"\n @form:close=\"reorderPrimaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"primaryInfo.labels\"\n :data-column-label=\"primaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[primaryGrouping]\"\n allow-reordering\n allow-hiding\n v-model=\"mappingPrimary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, primaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Allow null primary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullPrimaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Secondary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderSecondaryOpen = true;\" />\n <template v-if=\"reorderSecondaryOpen && secondaryInfo\">\n <form-wrapper\n title=\"Reorder secondary groups\"\n back-title=\"Axes Settings\"\n @form:close=\"reorderSecondaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"secondaryInfo.labels\"\n :data-column-label=\"secondaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[secondaryGrouping]\"\n allow-reordering\n allow-hiding\n v-model=\"mappingSecondary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, secondaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Allow null secondary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullSecondaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"store.reactive.chartType === 'discrete'\">\n <span>Labels rotation</span>\n <btn-icon-group :options=\"OPTIONS_LABELS_ROTATION\" v-model=\"xLabelsRotation\" />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisX.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisX.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisX.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisX.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Lines between categories</span>\n <pl-toggle-switch v-model=\"settings.axisX.linesBetweenCategories\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisX.ticks\" />\n </div>\n </collapsable-block>\n <!-- Y axis settings-->\n <collapsable-block title=\"Y-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisY.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisY.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisY.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Scale\"\n :options=\"OPTIONS_SCALE\"\n v-model=\"settings.axisY.scale\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisY.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisY.ticks\" />\n </div>\n </collapsable-block>\n <!-- Facet settings-->\n <div class=\"other\">\n <div class=\"axes-settings-options-row\">\n <span>Frame</span>\n <btn-icon-group :options=\"OPTIONS_CHART_FRAME\" v-model=\"settings.other.frame\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Reverse axes</span>\n <pl-toggle-switch v-model=\"settings.other.reverse\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <Slider\n :style=\"{width: '100%'}\"\n label=\"Facet column count\"\n :min=\"1\"\n :max=\"6\"\n :step=\"1\"\n :breakpoints=\"true\"\n mode=\"input\"\n v-model=\"settings.other.facetColumns\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Facet shared by\"\n :options=\"OPTIONS_FACET_SHARED\"\n v-model=\"settings.other.facetSharedBy\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","settings","blockSettings","OPTIONS_TITLE_ALIGN","AlignLeft","AlignCenter","AlignRight","OPTIONS_LABELS_ROTATION","Rotation0","Rotation45","Rotation90","OPTIONS_AXIS_LABEL_MODE","OPTIONS_SCALE","OPTIONS_CHART_FRAME","FrameEmpty","FrameLeft","FrameBottom","FrameLeftBottom","FrameFull","inputGuide","computed","labelsInfo","reorderPrimaryOpen","ref","reorderSecondaryOpen","primaryGrouping","_b","_a","secondaryGrouping","primaryGroups","secondaryGroups","usedAesInMapping","mappingPrimary","createDefaultMapping","mappingSecondary","primaryInfo","selectedSourceInfo","valueLabels","res","v","secondaryInfo","updateOrder","value","sourceId","OPTIONS_FACET_SHARED","primaryOptions","xLabelsRotation","getDiscreteLabelsRotation"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,UAAMA,IAAQC,EAAA,GACRC,IAAWF,EAAM,MAAM,SAAS,cAChCG,IAAgB;AAAA,MACpB,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,cAAc;AAAA,IAAA,GAGVC,IAAsB;AAAA,MAC1B,EAAC,OAAO,QAAQ,MAAMC,GAAA;AAAA,MACtB,EAAC,OAAO,UAAU,MAAMC,GAAA;AAAA,MACxB,EAAC,OAAO,SAAS,MAAMC,GAAA;AAAA,IAAU,GAM7BC,IAA0B;AAAA,MAC9B,EAAE,OAAO,UAAU,MAAMC,GAAA;AAAA,MACzB,EAAE,OAAO,SAAS,MAAMC,GAAA;AAAA,MACxB,EAAE,OAAO,SAAS,MAAMC,GAAA;AAAA,IAAW,GAE/BC,IAA0B;AAAA,MAC9B,EAAE,OAAO,QAAQ,MAAM,OAAA;AAAA,MACvB,EAAE,OAAO,UAAU,MAAM,SAAA;AAAA,MACzB,EAAE,OAAO,UAAU,MAAM,OAAA;AAAA,IAAO,GAE5BC,IAAgB;AAAA,MACpB,EAAE,OAAO,UAAU,MAAM,SAAA;AAAA,MACzB,EAAE,OAAO,OAAO,MAAM,MAAA;AAAA,IAAM,GAExBC,IAAsB;AAAA,MAC1B,EAAE,OAAO,SAAS,MAAMC,GAAA;AAAA,MACxB,EAAE,OAAO,QAAQ,MAAMC,GAAA;AAAA,MACvB,EAAE,OAAO,UAAU,MAAMC,GAAA;AAAA,MACzB,EAAE,OAAO,eAAe,MAAMC,GAAA;AAAA,MAC9B,EAAE,OAAO,QAAQ,MAAMC,GAAA;AAAA,IAAU,GAG7BC,IAAaC,EAAS,MAAMrB,EAAM,MAAM,WAAW,KAAK,GACxDsB,IAAaD,EAAS,MAAMrB,EAAM,MAAM,iBAAiB,KAAK,GAE9DuB,IAAqBC,EAAI,EAAK,GAC9BC,IAAuBD,EAAI,EAAK,GAEhCE,IAAkBL,EAAS;;AAAM,cAAAM,KAAAC,IAAA5B,EAAM,MAAM,SAAS,aAAa,WAAW,oBAA7C,gBAAA4B,EAA8D,eAAe,OAA7E,gBAAAD,EAAiF;AAAA,KAAc,GAChIE,IAAoBR,EAAS;;AAAM,cAAAM,KAAAC,IAAA5B,EAAM,MAAM,SAAS,aAAa,WAAW,sBAA7C,gBAAA4B,EAAgE,eAAe,OAA/E,gBAAAD,EAAmF;AAAA,KAAc,GAEpIG,IAAgBT,EAAS,MAAMrB,EAAM,MAAM,kBAAkB,cAAc,KAAK,GAChF+B,IAAkBV,EAAS,MAAMrB,EAAM,MAAM,kBAAkB,gBAAgB,KAAK,GAEpFgC,IAAmBX,EAAS,MAAMrB,EAAM,MAAM,kBAAkB,iBAAiB,KAAK,GAEtFiC,IAAiBT,EAAIxB,EAAM,MAAM,SAAS,YAAY0B,EAAgB,KAAK,KAAoCQ,EAAqBJ,EAAc,KAAK,CAAC,GACxJK,IAAmBX,EAAIxB,EAAM,MAAM,SAAS,YAAY6B,EAAkB,KAAK,KAAoCK,EAAqBH,EAAgB,KAAK,CAAC,GAE9JK,IAAcf,EAAS,MAAM;;AACjC,UAAIK,EAAgB,OAAO;AACzB,cAAMW,IAAqBjB,EAAW,MAAM,cAAcM,EAAgB,KAAK,KAAK,MAC9EY,MAAcV,IAAAN,EAAW,MAAMI,EAAgB,KAAK,MAAtC,gBAAAE,EAAyC,WAAU;AACvE,eAAO;AAAA,UACL,oBAAAS;AAAA,UACA,QAAQP,EAAc,MAAM,OAAO,CAACS,GAA6BC,OAC/DD,EAAIC,CAAC,KAAIF,KAAA,gBAAAA,EAAcE,OAAM,OAAOA,CAAC,GAC9BD,IACN,CAAA,CAAE;AAAA,QAAA;AAAA,MAET;AAAA,IACF,CAAC,GACKE,IAAgBpB,EAAS,MAAM;;AACnC,UAAIQ,EAAkB,OAAO;AAC3B,cAAMQ,IAAqBjB,EAAW,MAAM,cAAcS,EAAkB,KAAK,KAAK,MAChFS,MAAcV,IAAAN,EAAW,MAAMO,EAAkB,KAAK,MAAxC,gBAAAD,EAA2C,WAAU;AACzE,eAAO;AAAA,UACL,oBAAAS;AAAA,UACA,QAAQN,EAAgB,MAAM,OAAO,CAACQ,GAA6BC,OACjED,EAAIC,CAAC,KAAIF,KAAA,gBAAAA,EAAcE,OAAM,OAAOA,CAAC,GAC9BD,IACN,CAAA,CAAE;AAAA,QAAA;AAAA,MAET;AAAA,IACF,CAAC;AAED,aAASG,EAAYC,GAAoCC,GAAkB;AACzE,MAAA5C,EAAM,MAAM,SAAS,YAAY4C,CAAQ,IAAID;AAAA,IAC/C;AAEA,UAAME,IAAuB;AAAA,MAC3B,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,MACpB,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,MACpB,EAAE,MAAM,MAAM,OAAO,KAAA;AAAA,MACrB,EAAE,MAAM,QAAQ,OAAO,OAAA;AAAA,IAAO,GAG1BC,IAAiBzB,EAAS,MAAMC,EAAW,MAAMI,EAAgB,KAAK,CAAC,GACvEqB,IAAkB1B,EAAS;AAAA,MAC/B,MAAK;;AACH,eAAO2B,GAA0B9C,EAAS,MAAM,iBAAgB0B,IAAAkB,EAAe,UAAf,gBAAAlB,EAAsB,OAAO;AAAA,MAC/F;AAAA,MACA,IAAIe,GAAsB;AACxB,QAAAzC,EAAS,MAAM,iBAAiByC;AAAA,MAClC;AAAA,IAAA,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AesSelector.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/LayersForm/AesSelector.vue"],"names":[],"mappings":"AA4XA,OAAO,EAAE,OAAO,EAAe,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAU1E,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;;;AAmgBF,wBAOG"}
1
+ {"version":3,"file":"AesSelector.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/LayersForm/AesSelector.vue"],"names":[],"mappings":"AA6XA,OAAO,EAAE,OAAO,EAAe,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAU1E,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;;;AAqgBF,wBAOG"}