@milaboratories/graph-maker 1.1.222 → 1.1.224

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 (40) hide show
  1. package/dist/components/Chart.vue.d.ts.map +1 -1
  2. package/dist/components/Chart.vue.js +32 -32
  3. package/dist/components/Chart.vue.js.map +1 -1
  4. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
  5. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  6. package/dist/forms/DataMappingForm/DiscreteForm.vue.js +3 -2
  7. package/dist/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
  8. package/dist/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +16 -15
  9. package/dist/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
  10. package/dist/index.vue.d.ts +0 -6
  11. package/dist/index.vue.d.ts.map +1 -1
  12. package/dist/index.vue.js +185 -210
  13. package/dist/index.vue.js.map +1 -1
  14. package/dist/store.d.ts.map +1 -1
  15. package/dist/store.js +110 -121
  16. package/dist/store.js.map +1 -1
  17. package/dist/types.d.ts +4 -4
  18. package/dist/types.d.ts.map +1 -1
  19. package/dist/utils/addFixedOptionsToState.d.ts.map +1 -1
  20. package/dist/utils/addFixedOptionsToState.js +9 -9
  21. package/dist/utils/addFixedOptionsToState.js.map +1 -1
  22. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +6 -5
  23. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  24. package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js +9 -8
  25. package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
  26. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +3 -2
  27. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  28. package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js +3 -2
  29. package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
  30. package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +18 -17
  31. package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  32. package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +9 -8
  33. package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
  34. package/dist/utils/getUsedAesInMapping.js +3 -2
  35. package/dist/utils/getUsedAesInMapping.js.map +1 -1
  36. package/dist/utils/loadDefaultSources.d.ts +5 -10
  37. package/dist/utils/loadDefaultSources.d.ts.map +1 -1
  38. package/dist/utils/loadDefaultSources.js +122 -47
  39. package/dist/utils/loadDefaultSources.js.map +1 -1
  40. package/package.json +2 -2
@@ -3,6 +3,7 @@ import { getDiscreteLayersSettings as C } from "./createChartSettingsForRender/g
3
3
  import "@milaboratories/pf-plots";
4
4
  import "@platforma-sdk/model";
5
5
  import "vue";
6
+ import "@milaboratories/helpers";
6
7
  import "d3-scale";
7
8
  import "../constantsAesthetic.js";
8
9
  function d(t, u, s) {
@@ -12,7 +13,7 @@ function d(t, u, s) {
12
13
  return f(l) && l.type === s;
13
14
  });
14
15
  }
15
- function F(t, u, s, n, l, i) {
16
+ function L(t, u, s, n, l, i) {
16
17
  var a, S, h;
17
18
  const p = {};
18
19
  let c = [];
@@ -84,6 +85,6 @@ function F(t, u, s, n, l, i) {
84
85
  return p;
85
86
  }
86
87
  export {
87
- F as getUsedAesInMapping
88
+ L as getUsedAesInMapping
88
89
  };
89
90
  //# sourceMappingURL=getUsedAesInMapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUsedAesInMapping.js","sources":["../../src/utils/getUsedAesInMapping.ts"],"sourcesContent":["import type { ChartType, DiscreteUIState, InputGuide, InputState } from '@milaboratories/pf-plots';\nimport type {\n AesType, DiscreteStatisticsState,\n getDefaultLayersSettings,\n getInitialStatisticsState } from '../constantsCommon';\nimport { DISCRETE_TEMPLATES_MAP,\n isMappedAes,\n} from '../constantsCommon';\nimport type { DiscreteLayersTemplate, LayersTemplate } from '../types';\nimport type {\n ChartLayerSettings } from './index';\nimport {\n getDiscreteLayersSettings,\n} from './index';\n\nfunction checkLayersByType(layers: ChartLayerSettings[], field: 'fillColor' | 'dotFill' | 'lineColor' | 'dotShape' | 'lineShape', name: string) {\n return layers.some((item) => {\n const value = item?.aes?.[field];\n return isMappedAes(value) && value.type === name;\n });\n}\n\nexport function getUsedAesInMapping(\n chartType: ChartType,\n template: LayersTemplate,\n layersSettings: ReturnType<typeof getDefaultLayersSettings>,\n statisticsSettings: ReturnType<typeof getInitialStatisticsState>,\n optionsState: InputState,\n inputGuide: InputGuide<InputState>,\n) {\n const res: Record<string, Record<AesType, boolean>> = {};\n let groupingSources: string[] = [];\n if (chartType === 'discrete') {\n groupingSources = ['primaryGrouping', 'secondaryGrouping'];\n const layers = getDiscreteLayersSettings(\n DISCRETE_TEMPLATES_MAP[template as DiscreteLayersTemplate],\n layersSettings,\n statisticsSettings as DiscreteStatisticsState,\n optionsState as DiscreteUIState,\n inputGuide,\n );\n groupingSources.forEach((name) => {\n const source = optionsState.components[name]?.selectorStates[0]?.selectedSource;\n if (source) {\n res[source] = {\n fill: checkLayersByType(layers, 'fillColor', name) || checkLayersByType(layers, 'dotFill', name),\n stroke: checkLayersByType(layers, 'lineColor', name),\n dotShape: checkLayersByType(layers, 'dotShape', name),\n lineType: checkLayersByType(layers, 'lineShape', name),\n size: false,\n };\n }\n });\n }\n if (chartType === 'scatterplot') {\n const grouping = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n const shape = optionsState.components.shape.selectorStates.map((state) => state.selectedSource);\n groupingSources = [...grouping, ...shape];\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === grouping[0],\n stroke: false,\n dotShape: name === shape[0],\n lineType: false,\n size: false,\n };\n });\n }\n if (chartType === 'scatterplot-umap') {\n groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n };\n });\n }\n if (chartType === 'dendro') {\n const columns: (string | null)[] = [\n optionsState.components.nodeColor.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.nodeShape.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.lineColor.selectorStates[0]?.selectedSource ?? null,\n ];\n groupingSources = columns.filter((value) => value !== null) as string[];\n groupingSources.forEach((name) => {\n res[name] = {\n fill: isMappedAes(layersSettings.dendro.dotFill) && layersSettings.dendro.dotFill.value === name,\n stroke: isMappedAes(layersSettings.dendro.lineColor) && layersSettings.dendro.lineColor.value === name,\n dotShape: isMappedAes(layersSettings.dendro.dotShape) && layersSettings.dendro.dotShape.value === name,\n lineType: false,\n size: false,\n };\n });\n }\n\n if (chartType === 'histogram') {\n const groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n };\n });\n }\n\n return res;\n}\n"],"names":["checkLayersByType","layers","field","name","item","value","_a","isMappedAes","getUsedAesInMapping","chartType","template","layersSettings","statisticsSettings","optionsState","inputGuide","res","groupingSources","getDiscreteLayersSettings","DISCRETE_TEMPLATES_MAP","source","_b","grouping","state","shape","_c"],"mappings":"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"}
1
+ {"version":3,"file":"getUsedAesInMapping.js","sources":["../../src/utils/getUsedAesInMapping.ts"],"sourcesContent":["import type { ChartType, DiscreteUIState, InputGuide, InputState } from '@milaboratories/pf-plots';\nimport type {\n AesType, DiscreteStatisticsState,\n getDefaultLayersSettings,\n getInitialStatisticsState } from '../constantsCommon';\nimport { DISCRETE_TEMPLATES_MAP,\n isMappedAes,\n} from '../constantsCommon';\nimport type { DiscreteLayersTemplate, LayersTemplate } from '../types';\nimport type {\n ChartLayerSettings } from './index';\nimport {\n getDiscreteLayersSettings,\n} from './index';\n\nfunction checkLayersByType(layers: ChartLayerSettings[], field: 'fillColor' | 'dotFill' | 'lineColor' | 'dotShape' | 'lineShape', name: string) {\n return layers.some((item) => {\n const value = item?.aes?.[field];\n return isMappedAes(value) && value.type === name;\n });\n}\n\nexport function getUsedAesInMapping(\n chartType: ChartType,\n template: LayersTemplate,\n layersSettings: ReturnType<typeof getDefaultLayersSettings>,\n statisticsSettings: ReturnType<typeof getInitialStatisticsState>,\n optionsState: InputState,\n inputGuide: InputGuide<InputState>,\n) {\n const res: Record<string, Record<AesType, boolean>> = {};\n let groupingSources: string[] = [];\n if (chartType === 'discrete') {\n groupingSources = ['primaryGrouping', 'secondaryGrouping'];\n const layers = getDiscreteLayersSettings(\n DISCRETE_TEMPLATES_MAP[template as DiscreteLayersTemplate],\n layersSettings,\n statisticsSettings as DiscreteStatisticsState,\n optionsState as DiscreteUIState,\n inputGuide,\n );\n groupingSources.forEach((name) => {\n const source = optionsState.components[name]?.selectorStates[0]?.selectedSource;\n if (source) {\n res[source] = {\n fill: checkLayersByType(layers, 'fillColor', name) || checkLayersByType(layers, 'dotFill', name),\n stroke: checkLayersByType(layers, 'lineColor', name),\n dotShape: checkLayersByType(layers, 'dotShape', name),\n lineType: checkLayersByType(layers, 'lineShape', name),\n size: false,\n };\n }\n });\n }\n if (chartType === 'scatterplot') {\n const grouping = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n const shape = optionsState.components.shape.selectorStates.map((state) => state.selectedSource);\n groupingSources = [...grouping, ...shape];\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === grouping[0],\n stroke: false,\n dotShape: name === shape[0],\n lineType: false,\n size: false,\n };\n });\n }\n if (chartType === 'scatterplot-umap') {\n groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n };\n });\n }\n if (chartType === 'dendro') {\n const columns: (string | null)[] = [\n optionsState.components.nodeColor.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.nodeShape.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.lineColor.selectorStates[0]?.selectedSource ?? null,\n ];\n groupingSources = columns.filter((value) => value !== null) as string[];\n groupingSources.forEach((name) => {\n res[name] = {\n fill: isMappedAes(layersSettings.dendro.dotFill) && layersSettings.dendro.dotFill.value === name,\n stroke: isMappedAes(layersSettings.dendro.lineColor) && layersSettings.dendro.lineColor.value === name,\n dotShape: isMappedAes(layersSettings.dendro.dotShape) && layersSettings.dendro.dotShape.value === name,\n lineType: false,\n size: false,\n };\n });\n }\n\n if (chartType === 'histogram') {\n const groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n };\n });\n }\n\n return res;\n}\n"],"names":["checkLayersByType","layers","field","name","item","value","_a","isMappedAes","getUsedAesInMapping","chartType","template","layersSettings","statisticsSettings","optionsState","inputGuide","res","groupingSources","getDiscreteLayersSettings","DISCRETE_TEMPLATES_MAP","source","_b","grouping","state","shape","_c"],"mappings":"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"}
@@ -1,12 +1,7 @@
1
- import { ChartType, DemoDataStore, InputNamesByChartType, SelectorStateFilter } from '@milaboratories/pf-plots';
1
+ import { ChartType, DemoDataStore, InputNamesByChartType, InputState, SelectorStateFilter, SelectorStateSimple } from '@milaboratories/pf-plots';
2
2
  import { PredefinedGraphOption } from '../types';
3
- type LoadedDefaultOptions<T extends ChartType> = {
4
- inputName: InputNamesByChartType[T];
5
- selectedSource: string;
6
- filterType?: SelectorStateFilter['type'];
7
- selectedFilterRange?: SelectorStateFilter['selectedFilterRange'];
8
- selectedFilterValues?: SelectorStateFilter['selectedFilterValues'];
9
- };
10
- export declare function loadDefaultSources(dataStore: DemoDataStore, defaultOptions: PredefinedGraphOption<ChartType>[], considerAxisDomains?: boolean): Promise<LoadedDefaultOptions<ChartType>[]>;
11
- export {};
3
+ export type LoadedDefaultOptionsMap<T extends ChartType> = Record<InputNamesByChartType[T], (SelectorStateFilter | SelectorStateSimple)[]>;
4
+ export declare function loadDefaultSources(dataStore: DemoDataStore, defaultOptions: PredefinedGraphOption<ChartType>[], usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null, considerAxisDomains?: boolean): Promise<LoadedDefaultOptionsMap<ChartType>>;
5
+ export declare function isOptionsStateNeedsToBeUpdated(state: InputState, usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null, newDefaultOptions: LoadedDefaultOptionsMap<ChartType>): boolean;
6
+ export declare function createUpdatedWithNewDefaultsOptionsState(state: InputState, usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null, newDefaultOptions: LoadedDefaultOptionsMap<ChartType>): InputState['components'];
12
7
  //# sourceMappingURL=loadDefaultSources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadDefaultSources.d.ts","sourceRoot":"","sources":["../../src/utils/loadDefaultSources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAKtD,KAAK,oBAAoB,CAAC,CAAC,SAAS,SAAS,IAAI;IAC/C,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACzC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACjE,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;CACpE,CAAC;AAiCF,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAClD,mBAAmB,UAAO,GACzB,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC,CAoF5C"}
1
+ {"version":3,"file":"loadDefaultSources.d.ts","sourceRoot":"","sources":["../../src/utils/loadDefaultSources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAetD,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,SAAS,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAiG3I,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAClD,kBAAkB,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,IAAI,EAC7D,mBAAmB,UAAO,GACzB,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAqG7C;AA4BD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,UAAU,EACjB,kBAAkB,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,IAAI,EAC7D,iBAAiB,EAAE,uBAAuB,CAAC,SAAS,CAAC,GACpD,OAAO,CAsBT;AAED,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,UAAU,EACjB,kBAAkB,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,IAAI,EAC7D,iBAAiB,EAAE,uBAAuB,CAAC,SAAS,CAAC,GACpD,UAAU,CAAC,YAAY,CAAC,CAY1B"}
@@ -1,70 +1,145 @@
1
- import { AxisId as S } from "@milaboratories/pf-plots";
2
- import { readAnnotation as A, Annotation as R } from "@platforma-sdk/model";
3
- import { toRaw as V } from "vue";
4
- function T(n, r) {
5
- if (typeof n > "u")
1
+ import { AxisId as w } from "@milaboratories/pf-plots";
2
+ import { readAnnotation as b, Annotation as B } from "@platforma-sdk/model";
3
+ import { toRaw as A } from "vue";
4
+ import { copyJSON as I } from "./copyJSON.js";
5
+ import { isJsonEqual as P } from "@milaboratories/helpers";
6
+ function k(t, n) {
7
+ if (typeof t > "u")
6
8
  return !0;
7
- const c = Object.keys(n);
8
- return typeof r > "u" ? c.length === 0 : c.every((i) => r[i]);
9
+ const r = Object.keys(t);
10
+ return typeof n > "u" ? r.length === 0 : r.every((i) => n[i]);
9
11
  }
10
- function x(n, r, c, i) {
11
- return r && A(r, R.IsSubset) ? "subset" : i !== void 0 ? "range" : c !== void 0 || n === "Int" || n === "String" ? "equals" : "range";
12
+ function U(t, n, r, i) {
13
+ return n && b(n, B.IsSubset) ? "subset" : i !== void 0 ? "range" : r !== void 0 || t === "Int" || t === "String" ? "equals" : "range";
12
14
  }
13
- async function P(n, r, c = !0) {
14
- const i = [], h = r.filter(({ selectedSource: e }) => "kind" in e && e.kind === "PColumn"), w = r.filter(({ selectedSource: e }) => !("kind" in e && e.kind === "PColumn")), C = [];
15
- for (const { inputName: e, filterType: d, selectedSource: m, selectedFilterValues: o, selectedFilterRange: y } of h) {
16
- const { name: s, valueType: f, annotations: F, domain: p } = m, t = await n.pFrameProvider.findColumnBy(s, f, V(F), V(p)), g = e === "filters" || e === "tabBy" || e === "highlight";
17
- if (t) {
18
- const a = await n.pFrameProvider.getColumnSpecById(t);
19
- if (!g)
20
- i.push({ inputName: e, selectedSource: t.toCanonicalString() });
15
+ async function N(t, n, r, i) {
16
+ var o;
17
+ const l = (o = r == null ? void 0 : r[n]) == null ? void 0 : o.find((s) => s.selectedSource === i.toCanonicalString());
18
+ if (l && h(l) && l.type === "equals") {
19
+ const s = l.selectedFilterValues ?? [], a = await Promise.all(s.map(async (u) => (await t.pFrameProvider.getColumnUniqueValues(i, 1, [{
20
+ type: "bySingleColumnV2",
21
+ column: {
22
+ type: "column",
23
+ id: i.name
24
+ },
25
+ predicate: {
26
+ operator: "StringIContains",
27
+ substring: u
28
+ }
29
+ }])).values[0] === u));
30
+ if (s.length > 0 && a.every((u) => u))
31
+ return s;
32
+ }
33
+ return [(await t.pFrameProvider.getColumnUniqueValues(i, 1)).values[0]];
34
+ }
35
+ async function T(t, n, r, i, l) {
36
+ var s;
37
+ const o = (s = r == null ? void 0 : r[n]) == null ? void 0 : s.find((a) => a.selectedSource === i.toCanonicalString());
38
+ if (o && h(o) && o.type === "equals") {
39
+ const a = o.selectedFilterValues ?? [], u = await Promise.all(a.map(async (e) => (await t.pFrameProvider.getAxisUniqueValues(i, [l], 1, [{
40
+ type: "bySingleColumnV2",
41
+ column: {
42
+ type: "axis",
43
+ id: i.toPFrameId()
44
+ },
45
+ predicate: {
46
+ operator: "StringIContains",
47
+ substring: e
48
+ }
49
+ }])).values[0] === e));
50
+ if (a.length > 0 && u.every((e) => e))
51
+ return a;
52
+ }
53
+ return [(await t.pFrameProvider.getAxisUniqueValues(i, [l], 1)).values[0]];
54
+ }
55
+ async function H(t, n, r, i = !0) {
56
+ const l = [], o = n.filter(({ selectedSource: e }) => "kind" in e && e.kind === "PColumn"), s = n.filter(({ selectedSource: e }) => !("kind" in e && e.kind === "PColumn")), a = [];
57
+ for (const { inputName: e, filterType: d, selectedSource: S, selectedFilterValues: f, selectedFilterRange: g } of o) {
58
+ const { name: p, valueType: V, annotations: v, domain: C } = S, c = await t.pFrameProvider.findColumnBy(p, V, A(v), A(C)), q = e === "filters" || e === "tabBy" || e === "highlight";
59
+ if (c) {
60
+ const y = await t.pFrameProvider.getColumnSpecById(c);
61
+ if (!q)
62
+ l.push({ inputName: e, selectedSource: c.toCanonicalString() });
21
63
  else {
22
- const l = d ?? x(f, a, o, y), v = l === "equals" && typeof o > "u" ? [(await n.pFrameProvider.getColumnUniqueValues(t, 1)).values[0]] : o, u = { min: void 0, max: void 0, ...y };
23
- i.push({
64
+ const m = d ?? U(V, y, f, g), R = m === "equals" && typeof f > "u" ? await N(t, e, r, c) : f, F = { min: void 0, max: void 0, ...g };
65
+ l.push({
24
66
  inputName: e,
25
- filterType: l,
26
- selectedSource: t.toCanonicalString(),
27
- selectedFilterValues: v,
28
- selectedFilterRange: u
67
+ filterType: m,
68
+ selectedSource: c.toCanonicalString(),
69
+ selectedFilterValues: R,
70
+ selectedFilterRange: F
29
71
  });
30
72
  }
31
- C.push(...(a == null ? void 0 : a.axesSpec.map((l) => ({ spec: l, parentColumn: t }))) ?? []);
73
+ a.push(...(y == null ? void 0 : y.axesSpec.map((m) => ({ spec: m, parentColumn: c }))) ?? []);
32
74
  } else
33
- console.warn(`Not found column for default option: ${JSON.stringify({ inputName: e, selectedSource: m })}`);
75
+ console.warn(`Not found column for default option: ${JSON.stringify({ inputName: e, selectedSource: S })}`);
34
76
  }
35
- for (const { inputName: e, selectedSource: d, filterType: m, selectedFilterValues: o, selectedFilterRange: y } of w) {
36
- const s = S.fromAxisSpec(d), f = s.toCanonicalString(), F = e === "filters" || e === "tabBy" || e === "highlight", p = F ? m ?? x(s.type, { annotations: d == null ? void 0 : d.annotations }) : void 0, t = C.find((l) => S.fromAxisSpec(l.spec).toCanonicalString() === f), g = F && p === "equals" && typeof o > "u" && (t != null && t.parentColumn) ? [(await n.pFrameProvider.getAxisUniqueValues(s, [t == null ? void 0 : t.parentColumn], 1)).values[0]] : o, a = { min: void 0, max: void 0, ...y };
37
- if (c || i.push({
77
+ for (const { inputName: e, selectedSource: d, filterType: S, selectedFilterValues: f, selectedFilterRange: g } of s) {
78
+ const p = w.fromAxisSpec(d), V = p.toCanonicalString(), v = e === "filters" || e === "tabBy" || e === "highlight", C = v ? S ?? U(p.type, { annotations: d == null ? void 0 : d.annotations }) : void 0, c = a.find((m) => w.fromAxisSpec(m.spec).toCanonicalString() === V), q = v && C === "equals" && typeof f > "u" && (c != null && c.parentColumn) ? await T(t, e, r, p, c == null ? void 0 : c.parentColumn) : f, y = { min: void 0, max: void 0, ...g };
79
+ if (i || l.push({
38
80
  inputName: e,
39
- filterType: p,
40
- selectedSource: f,
41
- selectedFilterValues: g,
42
- selectedFilterRange: a
43
- }), t)
44
- i.push({
81
+ filterType: C,
82
+ selectedSource: V,
83
+ selectedFilterValues: q,
84
+ selectedFilterRange: y
85
+ }), c)
86
+ l.push({
45
87
  inputName: e,
46
- filterType: p,
47
- selectedSource: f,
48
- selectedFilterValues: g,
49
- selectedFilterRange: a
88
+ filterType: C,
89
+ selectedSource: V,
90
+ selectedFilterValues: q,
91
+ selectedFilterRange: y
50
92
  });
51
93
  else {
52
- const { spec: l, parentColumn: v } = C.find((u) => s.name === u.spec.name && s.type === u.spec.type && T(s.domain, u.spec.domain)) ?? {};
53
- if (l) {
54
- const u = (e === "filters" || e === "tabBy") && typeof o > "u" ? [(await n.pFrameProvider.getAxisUniqueValues(S.fromAxisSpec(l), [v], 1)).values[0]] : o;
55
- i.push({
94
+ const { spec: m, parentColumn: R } = a.find((F) => p.name === F.spec.name && p.type === F.spec.type && k(p.domain, F.spec.domain)) ?? {};
95
+ if (m) {
96
+ const F = (e === "filters" || e === "tabBy") && typeof f > "u" ? await T(t, e, r, w.fromAxisSpec(m), R) : f;
97
+ l.push({
56
98
  inputName: e,
57
- filterType: p,
58
- selectedSource: S.fromAxisSpec(l).toCanonicalString(),
59
- selectedFilterValues: u,
60
- selectedFilterRange: a
99
+ filterType: C,
100
+ selectedSource: w.fromAxisSpec(m).toCanonicalString(),
101
+ selectedFilterValues: F,
102
+ selectedFilterRange: y
61
103
  });
62
104
  }
63
105
  }
64
106
  }
107
+ return l.reduce((e, { inputName: d, selectedSource: S, filterType: f, selectedFilterValues: g, selectedFilterRange: p }) => (e[d] || (e[d] = []), f ? e[d].push({
108
+ selectedSource: S,
109
+ type: f,
110
+ selectedFilterValues: g,
111
+ selectedFilterRange: p
112
+ }) : e[d].push({ selectedSource: S }), e), {});
113
+ }
114
+ function h(t) {
115
+ return typeof t == "object" && t !== null && "type" in t;
116
+ }
117
+ function x(t, n) {
118
+ return h(t) && h(n) ? t.type !== n.type || t.type === "equals" && n.type === "equals" && !P(t.selectedFilterValues, n.selectedFilterValues) || t.selectedFilterRange !== void 0 && n.selectedFilterRange !== void 0 && (t.selectedFilterRange.min !== n.selectedFilterRange.min || t.selectedFilterRange.max !== n.selectedFilterRange.max) ? !1 : t.selectedSource === n.selectedSource : P(t, n);
119
+ }
120
+ function K(t, n, r) {
121
+ if (!n)
122
+ return Object.keys(r).length > 0;
123
+ for (const [i, l] of Object.entries(r)) {
124
+ const o = n[i], s = l, a = t.components[i].selectorStates;
125
+ for (const u of s)
126
+ if (!a.some((e) => x(e, u)) && !(o != null && o.some((e) => x(e, u))))
127
+ return !0;
128
+ }
129
+ return !1;
130
+ }
131
+ function L(t, n, r) {
132
+ var l;
133
+ const i = I(t.components);
134
+ for (const [o, s] of Object.entries(r))
135
+ (l = n == null ? void 0 : n[o]) != null && l.every(
136
+ (a) => s.some((u) => x(a, u))
137
+ ) || (i[o].selectorStates = s);
65
138
  return i;
66
139
  }
67
140
  export {
68
- P as loadDefaultSources
141
+ L as createUpdatedWithNewDefaultsOptionsState,
142
+ K as isOptionsStateNeedsToBeUpdated,
143
+ H as loadDefaultSources
69
144
  };
70
145
  //# sourceMappingURL=loadDefaultSources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadDefaultSources.js","sources":["../../src/utils/loadDefaultSources.ts"],"sourcesContent":["import type {\n ChartType,\n ColumnId,\n DemoDataStore,\n InputNamesByChartType,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport {\n AxisId,\n} from '@milaboratories/pf-plots';\nimport type { PredefinedGraphOption } from '../types';\nimport type { AxisSpec, PColumnSpec, ValueType } from '@platforma-sdk/model';\nimport { Annotation, readAnnotation } from '@platforma-sdk/model';\nimport { toRaw } from 'vue';\n\ntype LoadedDefaultOptions<T extends ChartType> = {\n inputName: InputNamesByChartType[T];\n selectedSource: string;\n filterType?: SelectorStateFilter['type'];\n selectedFilterRange?: SelectorStateFilter['selectedFilterRange'];\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues'];\n};\n\nfunction domainIsCompatible(domain?: Record<string, string>, otherDomain?: Record<string, string>): boolean {\n if (typeof domain === 'undefined') {\n return true;\n }\n const keys = Object.keys(domain);\n if (typeof otherDomain === 'undefined') {\n return keys.length === 0;\n }\n return keys.every((key) => otherDomain[key]);\n}\n\nfunction getDefaultFilterType(\n valueType: ValueType,\n spec: PColumnSpec | null,\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues'],\n selectedFilterRange?: Partial<SelectorStateFilter['selectedFilterRange']>,\n): SelectorStateFilter['type'] {\n if (spec && readAnnotation(spec, Annotation.IsSubset)) {\n return 'subset';\n }\n if (selectedFilterRange !== undefined) {\n return 'range';\n }\n if (selectedFilterValues !== undefined) {\n return 'equals';\n }\n if (valueType === 'Int' || valueType === 'String') {\n return 'equals';\n }\n return 'range';\n}\nexport async function loadDefaultSources(\n dataStore: DemoDataStore,\n defaultOptions: PredefinedGraphOption<ChartType>[],\n considerAxisDomains = true,\n): Promise<LoadedDefaultOptions<ChartType>[]> {\n const result: LoadedDefaultOptions<ChartType>[] = [];\n const defaultColumnStates = defaultOptions.filter(({ selectedSource }) => 'kind' in selectedSource && selectedSource.kind === 'PColumn');\n const defaultAxisStates = defaultOptions.filter(({ selectedSource }) => !('kind' in selectedSource && selectedSource.kind === 'PColumn'));\n\n const allowedAxisSpecs = [] as { spec: AxisSpec; parentColumn: ColumnId }[]; // if default options contain axes - they should be in other default columns\n\n for (const { inputName, filterType, selectedSource, selectedFilterValues, selectedFilterRange } of defaultColumnStates) {\n const { name, valueType, annotations, domain } = selectedSource as PColumnSpec;\n const columnId = await dataStore.pFrameProvider.findColumnBy(name, valueType, toRaw(annotations), toRaw(domain));\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n if (columnId) {\n const spec = await dataStore.pFrameProvider.getColumnSpecById(columnId);\n if (!isFilter) {\n result.push({ inputName, selectedSource: columnId.toCanonicalString() });\n } else {\n const defaultFilterType = filterType ?? getDefaultFilterType(valueType, spec, selectedFilterValues, selectedFilterRange);\n const defaultSelectedFilterValue = defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined'\n ? [(await dataStore.pFrameProvider.getColumnUniqueValues(columnId, 1)).values[0]]\n : selectedFilterValues;\n const defaultFilterRange = { min: undefined, max: undefined, ...selectedFilterRange };\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: columnId.toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n\n allowedAxisSpecs.push(...spec?.axesSpec.map((spec) => ({ spec, parentColumn: columnId })) ?? []);\n } else {\n console.warn(`Not found column for default option: ${JSON.stringify({ inputName, selectedSource })}`);\n }\n }\n for (const { inputName, selectedSource, filterType, selectedFilterValues, selectedFilterRange } of defaultAxisStates) {\n const axisId = AxisId.fromAxisSpec(selectedSource as AxisSpec);\n const axisSourceStr = axisId.toCanonicalString();\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n const defaultFilterType = isFilter ? filterType ?? getDefaultFilterType(axisId.type, { annotations: selectedSource?.annotations } as PColumnSpec) : undefined;\n\n const columnWithExistingAxis = allowedAxisSpecs.find((el) => AxisId.fromAxisSpec(el.spec).toCanonicalString() === axisSourceStr);\n const defaultSelectedFilterValues = isFilter && defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined' && columnWithExistingAxis?.parentColumn\n ? [(await dataStore.pFrameProvider.getAxisUniqueValues(axisId, [columnWithExistingAxis?.parentColumn], 1)).values[0]]\n : selectedFilterValues;\n const defaultFilterRange = { min: undefined, max: undefined, ...selectedFilterRange };\n\n if (!considerAxisDomains) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n if (columnWithExistingAxis) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n } else {\n const { spec: allowedCompatibleAxisSpec, parentColumn } = allowedAxisSpecs.find((el) => {\n return axisId.name === el.spec.name && axisId.type === el.spec.type && domainIsCompatible(axisId.domain, el.spec.domain);\n }) ?? {};\n if (allowedCompatibleAxisSpec) {\n const defaultSelectedFilterValue = (inputName === 'filters' || inputName === 'tabBy') && typeof selectedFilterValues === 'undefined'\n ? [(await dataStore.pFrameProvider.getAxisUniqueValues(AxisId.fromAxisSpec(allowedCompatibleAxisSpec), [parentColumn as ColumnId], 1)).values[0]]\n : selectedFilterValues;\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: AxisId.fromAxisSpec(allowedCompatibleAxisSpec).toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n }\n }\n\n return result;\n}\n"],"names":["domainIsCompatible","domain","otherDomain","keys","key","getDefaultFilterType","valueType","spec","selectedFilterValues","selectedFilterRange","readAnnotation","Annotation","loadDefaultSources","dataStore","defaultOptions","considerAxisDomains","result","defaultColumnStates","selectedSource","defaultAxisStates","allowedAxisSpecs","inputName","filterType","name","annotations","columnId","toRaw","isFilter","defaultFilterType","defaultSelectedFilterValue","defaultFilterRange","axisId","AxisId","axisSourceStr","columnWithExistingAxis","el","defaultSelectedFilterValues","allowedCompatibleAxisSpec","parentColumn"],"mappings":"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"}
1
+ {"version":3,"file":"loadDefaultSources.js","sources":["../../src/utils/loadDefaultSources.ts"],"sourcesContent":["import type {\n ChartType,\n ColumnId,\n DemoDataStore,\n InputNamesByChartType,\n InputState,\n SelectorStateFilter,\n SelectorStateSimple,\n} from '@milaboratories/pf-plots';\nimport { AxisId } from '@milaboratories/pf-plots';\nimport type { PredefinedGraphOption } from '../types';\nimport type { AxisSpec, PColumnSpec, PObjectId, ValueType } from '@platforma-sdk/model';\nimport { Annotation, readAnnotation } from '@platforma-sdk/model';\nimport { toRaw } from 'vue';\nimport { copyJSON } from './copyJSON';\nimport { isJsonEqual } from '@milaboratories/helpers';\n\ntype LoadedDefaultOptions<T extends ChartType> = {\n inputName: InputNamesByChartType[T];\n selectedSource: string;\n filterType?: SelectorStateFilter['type'];\n selectedFilterRange?: SelectorStateFilter['selectedFilterRange'];\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues'];\n};\n\nexport type LoadedDefaultOptionsMap<T extends ChartType> = Record<InputNamesByChartType[T], (SelectorStateFilter | SelectorStateSimple)[]>;\n\nfunction domainIsCompatible(domain?: Record<string, string>, otherDomain?: Record<string, string>): boolean {\n if (typeof domain === 'undefined') {\n return true;\n }\n const keys = Object.keys(domain);\n if (typeof otherDomain === 'undefined') {\n return keys.length === 0;\n }\n return keys.every((key) => otherDomain[key]);\n}\n\nfunction getDefaultFilterType(\n valueType: ValueType,\n spec: PColumnSpec | null,\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues'],\n selectedFilterRange?: Partial<SelectorStateFilter['selectedFilterRange']>,\n): SelectorStateFilter['type'] {\n if (spec && readAnnotation(spec, Annotation.IsSubset)) {\n return 'subset';\n }\n if (selectedFilterRange !== undefined) {\n return 'range';\n }\n if (selectedFilterValues !== undefined) {\n return 'equals';\n }\n if (valueType === 'Int' || valueType === 'String') {\n return 'equals';\n }\n return 'range';\n}\n\nasync function loadInitialFilterValuesColumn(\n dataStore: DemoDataStore,\n inputName: InputNamesByChartType[ChartType],\n usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null,\n columnId: ColumnId,\n): Promise<string[]> {\n const sameStateInUsedOptions = usedDefaultOptions?.[inputName]?.find((s) => s.selectedSource === columnId.toCanonicalString());\n\n if (sameStateInUsedOptions && isSelectorStateFilter(sameStateInUsedOptions) && sameStateInUsedOptions.type === 'equals') {\n const previousSelectedFilterValues = sameStateInUsedOptions.selectedFilterValues ?? [];\n const canBeUsedValues = await Promise.all(previousSelectedFilterValues.map(async (v) => {\n const loadedV = await dataStore.pFrameProvider.getColumnUniqueValues(columnId, 1, [{\n type: 'bySingleColumnV2',\n column: {\n type: 'column' as const,\n id: columnId.name as PObjectId,\n },\n predicate: {\n operator: 'StringIContains',\n substring: v,\n },\n }]);\n return loadedV.values[0] === v;\n }));\n if (previousSelectedFilterValues.length > 0 && canBeUsedValues.every((v) => v)) {\n return previousSelectedFilterValues;\n }\n }\n return [(await dataStore.pFrameProvider.getColumnUniqueValues(columnId, 1)).values[0]];\n}\n\nasync function loadInitialFilterValuesAxis(\n dataStore: DemoDataStore,\n inputName: InputNamesByChartType[ChartType],\n usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null,\n axisId: AxisId,\n parentColumn: ColumnId,\n): Promise<string[]> {\n const sameStateInUsedOptions = usedDefaultOptions?.[inputName]?.find((s) => s.selectedSource === axisId.toCanonicalString());\n\n if (sameStateInUsedOptions && isSelectorStateFilter(sameStateInUsedOptions) && sameStateInUsedOptions.type === 'equals') {\n const previousSelectedFilterValues = sameStateInUsedOptions.selectedFilterValues ?? [];\n const canBeUsedValues = await Promise.all(previousSelectedFilterValues.map(async (v) => {\n const loadedV = await dataStore.pFrameProvider.getAxisUniqueValues(axisId, [parentColumn], 1, [{\n type: 'bySingleColumnV2',\n column: {\n type: 'axis' as const,\n id: axisId.toPFrameId(),\n },\n predicate: {\n operator: 'StringIContains',\n substring: v,\n },\n }]);\n return loadedV.values[0] === v;\n }));\n if (previousSelectedFilterValues.length > 0 && canBeUsedValues.every((v) => v)) {\n return previousSelectedFilterValues;\n }\n }\n return [(await dataStore.pFrameProvider.getAxisUniqueValues(axisId, [parentColumn as ColumnId], 1)).values[0]];\n}\n\nexport async function loadDefaultSources(\n dataStore: DemoDataStore,\n defaultOptions: PredefinedGraphOption<ChartType>[],\n usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null,\n considerAxisDomains = true,\n): Promise<LoadedDefaultOptionsMap<ChartType>> {\n const result: LoadedDefaultOptions<ChartType>[] = [];\n const defaultColumnStates = defaultOptions.filter(({ selectedSource }) => 'kind' in selectedSource && selectedSource.kind === 'PColumn');\n const defaultAxisStates = defaultOptions.filter(({ selectedSource }) => !('kind' in selectedSource && selectedSource.kind === 'PColumn'));\n\n const allowedAxisSpecs = [] as { spec: AxisSpec; parentColumn: ColumnId }[]; // if default options contain axes - they should be in other default columns\n\n for (const { inputName, filterType, selectedSource, selectedFilterValues, selectedFilterRange } of defaultColumnStates) {\n const { name, valueType, annotations, domain } = selectedSource as PColumnSpec;\n const columnId = await dataStore.pFrameProvider.findColumnBy(name, valueType, toRaw(annotations), toRaw(domain));\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n if (columnId) {\n const spec = await dataStore.pFrameProvider.getColumnSpecById(columnId);\n if (!isFilter) {\n result.push({ inputName, selectedSource: columnId.toCanonicalString() });\n } else {\n const defaultFilterType = filterType ?? getDefaultFilterType(valueType, spec, selectedFilterValues, selectedFilterRange);\n const defaultSelectedFilterValue = defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined'\n ? (await loadInitialFilterValuesColumn(dataStore, inputName, usedDefaultOptions, columnId))\n : selectedFilterValues;\n const defaultFilterRange = { min: undefined, max: undefined, ...selectedFilterRange };\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: columnId.toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n\n allowedAxisSpecs.push(...spec?.axesSpec.map((spec) => ({ spec, parentColumn: columnId })) ?? []);\n } else {\n console.warn(`Not found column for default option: ${JSON.stringify({ inputName, selectedSource })}`);\n }\n }\n for (const { inputName, selectedSource, filterType, selectedFilterValues, selectedFilterRange } of defaultAxisStates) {\n const axisId = AxisId.fromAxisSpec(selectedSource as AxisSpec);\n const axisSourceStr = axisId.toCanonicalString();\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n const defaultFilterType = isFilter ? filterType ?? getDefaultFilterType(axisId.type, { annotations: selectedSource?.annotations } as PColumnSpec) : undefined;\n\n const columnWithExistingAxis = allowedAxisSpecs.find((el) => AxisId.fromAxisSpec(el.spec).toCanonicalString() === axisSourceStr);\n const defaultSelectedFilterValues = isFilter && defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined' && columnWithExistingAxis?.parentColumn\n ? (await loadInitialFilterValuesAxis(dataStore, inputName, usedDefaultOptions, axisId, columnWithExistingAxis?.parentColumn as ColumnId))\n : selectedFilterValues;\n const defaultFilterRange = { min: undefined, max: undefined, ...selectedFilterRange };\n\n if (!considerAxisDomains) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n if (columnWithExistingAxis) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n } else {\n const { spec: allowedCompatibleAxisSpec, parentColumn } = allowedAxisSpecs.find((el) => {\n return axisId.name === el.spec.name && axisId.type === el.spec.type && domainIsCompatible(axisId.domain, el.spec.domain);\n }) ?? {};\n if (allowedCompatibleAxisSpec) {\n const defaultSelectedFilterValues = (inputName === 'filters' || inputName === 'tabBy') && typeof selectedFilterValues === 'undefined'\n ? (await loadInitialFilterValuesAxis(dataStore, inputName, usedDefaultOptions, AxisId.fromAxisSpec(allowedCompatibleAxisSpec), parentColumn as ColumnId))\n : selectedFilterValues;\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: AxisId.fromAxisSpec(allowedCompatibleAxisSpec).toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n }\n }\n\n const loadedDefaultOptionsGrouped = result.reduce((acc, { inputName, selectedSource, filterType, selectedFilterValues, selectedFilterRange }) => {\n if (!acc[inputName]) {\n acc[inputName] = [];\n }\n if (filterType) {\n acc[inputName].push({\n selectedSource,\n type: filterType,\n selectedFilterValues,\n selectedFilterRange,\n });\n } else {\n acc[inputName].push({ selectedSource });\n }\n return acc;\n }, {} as LoadedDefaultOptionsMap<ChartType>);\n\n return loadedDefaultOptionsGrouped;\n}\n\nfunction isSelectorStateFilter(a: SelectorStateFilter | SelectorStateSimple): a is SelectorStateFilter {\n return typeof a === 'object' && a !== null && 'type' in a;\n}\nfunction selectorStatesAreEqual(\n a: (SelectorStateFilter | SelectorStateSimple),\n b: (SelectorStateFilter | SelectorStateSimple),\n): boolean {\n if (isSelectorStateFilter(a) && isSelectorStateFilter(b)) {\n if (a.type !== b.type) {\n return false;\n }\n if (a.type === 'equals' && b.type === 'equals') {\n const equals = isJsonEqual(a.selectedFilterValues, b.selectedFilterValues);\n if (!equals) {\n return false;\n }\n }\n if (a.selectedFilterRange !== undefined && b.selectedFilterRange !== undefined\n && (a.selectedFilterRange.min !== b.selectedFilterRange.min || a.selectedFilterRange.max !== b.selectedFilterRange.max)\n ) {\n return false;\n }\n return a.selectedSource === b.selectedSource;\n }\n return isJsonEqual(a, b);\n}\nexport function isOptionsStateNeedsToBeUpdated(\n state: InputState,\n usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null,\n newDefaultOptions: LoadedDefaultOptionsMap<ChartType>,\n): boolean {\n if (!usedDefaultOptions) {\n return Object.keys(newDefaultOptions).length > 0;\n }\n for (const [inputName, selectedStates] of Object.entries(newDefaultOptions) as [InputNamesByChartType[ChartType], (SelectorStateFilter | SelectorStateSimple)[]][]) {\n const usedDefaults = usedDefaultOptions[inputName];\n const newDefaults = selectedStates;\n const currentOptions = state.components[inputName].selectorStates;\n\n for (const selectorState of newDefaults) {\n // this option is already in current options (set by user or wasn't changed from previous default options)\n if (currentOptions.some((s) => selectorStatesAreEqual(s, selectorState))) {\n continue;\n }\n // this option is not changed from previous default options (but was changed by user)\n if (usedDefaults?.some((s) => selectorStatesAreEqual(s, selectorState))) {\n continue;\n }\n return true;\n }\n }\n return false;\n};\n\nexport function createUpdatedWithNewDefaultsOptionsState(\n state: InputState,\n usedDefaultOptions: LoadedDefaultOptionsMap<ChartType> | null,\n newDefaultOptions: LoadedDefaultOptionsMap<ChartType>,\n): InputState['components'] {\n const updatedOptionsState: InputState['components'] = copyJSON(state.components);\n for (const [inputName, selectorStates] of Object.entries(newDefaultOptions) as [InputNamesByChartType[ChartType], (SelectorStateFilter | SelectorStateSimple)[]][]) {\n if (usedDefaultOptions?.[inputName as keyof LoadedDefaultOptionsMap<ChartType>]?.every(\n (s) => selectorStates.some((ss) => selectorStatesAreEqual(s, ss)),\n )) {\n // nothing changed for this input, skip; even if user has changed something, we don't want to reset it\n continue;\n }\n updatedOptionsState[inputName].selectorStates = selectorStates;\n }\n return updatedOptionsState;\n}\n"],"names":["domainIsCompatible","domain","otherDomain","keys","key","getDefaultFilterType","valueType","spec","selectedFilterValues","selectedFilterRange","readAnnotation","Annotation","loadInitialFilterValuesColumn","dataStore","inputName","usedDefaultOptions","columnId","sameStateInUsedOptions","_a","isSelectorStateFilter","previousSelectedFilterValues","canBeUsedValues","v","loadInitialFilterValuesAxis","axisId","parentColumn","s","loadDefaultSources","defaultOptions","considerAxisDomains","result","defaultColumnStates","selectedSource","defaultAxisStates","allowedAxisSpecs","filterType","name","annotations","toRaw","isFilter","defaultFilterType","defaultSelectedFilterValue","defaultFilterRange","AxisId","axisSourceStr","columnWithExistingAxis","el","defaultSelectedFilterValues","allowedCompatibleAxisSpec","acc","a","selectorStatesAreEqual","b","isJsonEqual","isOptionsStateNeedsToBeUpdated","state","newDefaultOptions","selectedStates","usedDefaults","newDefaults","currentOptions","selectorState","createUpdatedWithNewDefaultsOptionsState","updatedOptionsState","copyJSON","selectorStates","ss"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/graph-maker",
3
- "version": "1.1.222",
3
+ "version": "1.1.224",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -37,7 +37,7 @@
37
37
  "d3-scale": "^4.0.2",
38
38
  "vue": "^3.5.24",
39
39
  "@milaboratories/miplots4": "1.0.172",
40
- "@milaboratories/pf-plots": "1.1.61"
40
+ "@milaboratories/pf-plots": "1.1.62"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@milaboratories/build-configs": "^1.0.5",