@platforma-sdk/ui-vue 1.42.15 → 1.42.18

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 (65) hide show
  1. package/.turbo/turbo-build.log +29 -28
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +8 -0
  4. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +5 -5
  5. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +21 -21
  6. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
  7. package/dist/components/PlAgDataTable/sources/table-source-v2.js +124 -125
  8. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  9. package/dist/components/PlAgDataTable/sources/table-state-v2.js +3 -3
  10. package/dist/components/PlAgDataTable/sources/value-rendering.d.ts.map +1 -1
  11. package/dist/components/PlAgDataTable/sources/value-rendering.js +24 -25
  12. package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
  13. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +12 -12
  14. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +2 -2
  15. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.d.ts.map +1 -1
  16. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +21 -20
  17. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
  18. package/dist/components/PlMultiSequenceAlignment/data.d.ts.map +1 -1
  19. package/dist/components/PlMultiSequenceAlignment/data.js +170 -185
  20. package/dist/components/PlMultiSequenceAlignment/data.js.map +1 -1
  21. package/dist/components/PlTableFilters/filters-state.js +8 -8
  22. package/dist/components/PlTableFilters/filters_logic.d.ts.map +1 -1
  23. package/dist/components/PlTableFilters/filters_logic.js +67 -77
  24. package/dist/components/PlTableFilters/filters_logic.js.map +1 -1
  25. package/dist/defineApp.js +20 -20
  26. package/dist/internal/UpdateSerializer.js +3 -3
  27. package/dist/lib/model/common/dist/index.js +523 -414
  28. package/dist/lib/model/common/dist/index.js.map +1 -1
  29. package/dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js +1 -1
  30. package/dist/lib/ui/uikit/dist/components/PlAccordion/{ExpandTransition.vue.js → ExpandTransition.vue2.js} +1 -1
  31. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -0
  32. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  33. package/dist/lib/ui/uikit/dist/components/PlAutocomplete/PlAutocomplete.vue.js +1 -1
  34. package/dist/lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js +1 -1
  35. package/dist/lib/ui/uikit/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js +1 -1
  36. package/dist/lib/ui/uikit/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js +1 -1
  37. package/dist/lib/ui/uikit/dist/components/PlFileDialog/Local.vue.js +6 -6
  38. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js +28 -28
  39. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
  40. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js +89 -63
  41. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  42. package/dist/lib/ui/uikit/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  43. package/dist/lib/ui/uikit/dist/components/PlTextArea/PlTextArea.vue.js +1 -1
  44. package/dist/lib/ui/uikit/dist/components/PlTextField/PlTextField.vue.js +1 -1
  45. package/dist/lib/ui/uikit/dist/generated/components/svg/images/{SvgRequired.vue.js → SvgRequired.vue2.js} +1 -1
  46. package/dist/lib/ui/uikit/dist/generated/components/svg/images/SvgRequired.vue2.js.map +1 -0
  47. package/dist/lib/ui/uikit/dist/helpers/dom.js.map +1 -1
  48. package/dist/lib/ui/uikit/dist/helpers/downloadContent.js +32 -0
  49. package/dist/lib/ui/uikit/dist/helpers/downloadContent.js.map +1 -0
  50. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +201 -159
  51. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js.map +1 -1
  52. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +521 -517
  53. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  54. package/dist/lib.js +52 -50
  55. package/dist/lib.js.map +1 -1
  56. package/dist/sdk/model/dist/index.js +410 -406
  57. package/dist/sdk/model/dist/index.js.map +1 -1
  58. package/package.json +4 -4
  59. package/src/components/PlAgDataTable/sources/table-source-v2.ts +20 -16
  60. package/src/components/PlAgDataTable/sources/value-rendering.ts +15 -7
  61. package/src/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue +1 -0
  62. package/src/components/PlMultiSequenceAlignment/data.ts +12 -12
  63. package/src/components/PlTableFilters/filters_logic.ts +18 -15
  64. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
  65. package/dist/lib/ui/uikit/dist/generated/components/svg/images/SvgRequired.vue.js.map +0 -1
@@ -1,279 +1,264 @@
1
1
  import { isJsonEqual as J } from "../../lib/util/helpers/dist/index.js";
2
- import { getRawPlatformaInstance as V, isLabelColumn as _, isLinkerColumn as W, createRowSelectionColumn as X } from "../../sdk/model/dist/index.js";
3
- import { ref as M, watch as G } from "vue";
4
- import { highlightByChemicalProperties as H } from "./chemical-properties.js";
5
- import { parseMarkup as K, markupAlignedSequence as Q, highlightByMarkup as Y } from "./markup.js";
6
- import { multiSequenceAlignment as Z } from "./multi-sequence-alignment.js";
7
- import { getResidueCounts as nn } from "./residue-counts.js";
8
- import { ensureError as tn, canonicalizeJson as A, getAxisId as E, parseJson as D, matchAxisId as en, pTableValue as O } from "../../lib/model/common/dist/index.js";
9
- const S = () => V().pFrameDriver, q = 1e3, gn = C(
10
- an
11
- ), hn = C(
2
+ import { getRawPlatformaInstance as Z, isLabelColumn as N, isLinkerColumn as G, createRowSelectionColumn as H } from "../../sdk/model/dist/index.js";
3
+ import { ref as M, watch as K } from "vue";
4
+ import { highlightByChemicalProperties as Q } from "./chemical-properties.js";
5
+ import { parseMarkup as X, markupAlignedSequence as Y, highlightByMarkup as nn } from "./markup.js";
6
+ import { multiSequenceAlignment as tn } from "./multi-sequence-alignment.js";
7
+ import { getResidueCounts as en } from "./residue-counts.js";
8
+ import { ensureError as rn, readAnnotation as b, canonicalizeJson as v, getAxisId as O, parseJson as S, matchAxisId as an, readAnnotationJson as j, pTableValue as q, Annotation as g } from "../../lib/model/common/dist/index.js";
9
+ const C = () => Z().pFrameDriver, E = 1e3, wn = L(
12
10
  on
13
- ), wn = C(
14
- rn
15
- ), bn = C(
11
+ ), An = L(
16
12
  sn
13
+ ), bn = L(
14
+ ln
15
+ ), vn = L(
16
+ cn
17
17
  );
18
- async function an({
19
- pFrame: c,
20
- sequenceColumnPredicate: e
18
+ async function on({
19
+ pFrame: l,
20
+ sequenceColumnPredicate: r
21
21
  }) {
22
- if (!c) return;
23
- const t = (await S().listColumns(c)).values().filter((o) => e(o)).map(({ spec: o, columnId: u }) => {
24
- var m;
25
- return {
26
- label: ((m = o.annotations) == null ? void 0 : m["pl7.app/label"]) ?? "Unlabeled column",
27
- value: u
28
- };
29
- }).toArray(), l = t.map(({ value: o }) => o);
30
- return { options: t, defaults: l };
22
+ if (!l) return;
23
+ const t = (await C().listColumns(l)).values().filter((o) => r(o)).map(({ spec: o, columnId: f }) => ({
24
+ label: b(o, g.Label) ?? "Unlabeled column",
25
+ value: f
26
+ })).toArray(), i = t.map(({ value: o }) => o);
27
+ return { options: t, defaults: i };
31
28
  }
32
- async function on({
33
- pFrame: c,
34
- sequenceColumnIds: e
29
+ async function sn({
30
+ pFrame: l,
31
+ sequenceColumnIds: r
35
32
  }) {
36
- var f, h, b;
37
- if (!c || !e) return;
38
- const y = S(), p = await y.listColumns(c), t = /* @__PURE__ */ new Map(), l = new Map(
39
- e.values().flatMap((i) => {
40
- const d = p.find(({ columnId: a }) => a === i);
41
- if (!d)
42
- throw new Error(`Couldn't find sequence column (ID: \`${i}\`).`);
43
- return d.spec.axesSpec.values().map((a) => [A(E(a)), a]);
33
+ if (!l || !r) return;
34
+ const m = C(), p = await m.listColumns(l), t = /* @__PURE__ */ new Map(), i = new Map(
35
+ r.values().flatMap((e) => {
36
+ const s = p.find(({ columnId: c }) => c === e);
37
+ if (!s)
38
+ throw new Error(`Couldn't find sequence column (ID: \`${e}\`).`);
39
+ return s.spec.axesSpec.values().map((c) => [v(O(c)), c]);
44
40
  })
45
41
  );
46
- for (const [i, d] of l.entries()) {
47
- const a = D(i), g = p.find(
48
- ({ spec: v }) => _(v) && en(a, E(v.axesSpec[0]))
42
+ for (const [e, s] of i.entries()) {
43
+ const c = S(e), h = p.find(
44
+ ({ spec: x }) => N(x) && an(c, O(x.axesSpec[0]))
49
45
  );
50
46
  t.set(
51
- g ? A({ type: "column", id: g.columnId }) : A({ type: "axis", id: a }),
52
- ((f = g == null ? void 0 : g.spec.annotations) == null ? void 0 : f["pl7.app/label"]) ?? ((h = d.annotations) == null ? void 0 : h["pl7.app/label"]) ?? "Unlabeled axis"
47
+ h ? v({ type: "column", id: h.columnId }) : v({ type: "axis", id: c }),
48
+ b(h == null ? void 0 : h.spec, g.Label) ?? b(s, g.Label) ?? "Unlabeled axis"
53
49
  );
54
50
  }
55
- const { hits: o } = await y.findColumns(c, {
51
+ const { hits: o } = await m.findColumns(l, {
56
52
  columnFilter: {},
57
- compatibleWith: l.keys().map((i) => D(i)).toArray(),
53
+ compatibleWith: i.keys().map((e) => S(e)).toArray(),
58
54
  strictlyCompatible: !1
59
55
  });
60
- for (const { columnId: i, spec: d } of o) {
61
- const a = A({ type: "column", id: i });
62
- t.has(a) || t.set(
63
- a,
64
- ((b = d.annotations) == null ? void 0 : b["pl7.app/label"]) ?? "Unlabeled column"
56
+ for (const { columnId: e, spec: s } of o) {
57
+ const c = v({ type: "column", id: e });
58
+ t.has(c) || t.set(
59
+ c,
60
+ b(s, g.Label) ?? "Unlabeled column"
65
61
  );
66
62
  }
67
- const u = t.entries().map(([i, d]) => ({ label: d, value: D(i) })).toArray(), m = u.values().filter(({ value: i }) => {
68
- if (i.type === "axis") return !0;
69
- const d = p.find(({ columnId: a }) => a === i.id);
70
- return d && _(d.spec);
71
- }).map(({ value: i }) => i).toArray();
72
- return { options: u, defaults: m };
63
+ const f = t.entries().map(([e, s]) => ({ label: s, value: S(e) })).toArray(), d = f.values().filter(({ value: e }) => {
64
+ if (e.type === "axis") return !0;
65
+ const s = p.find(({ columnId: c }) => c === e.id);
66
+ return s && N(s.spec);
67
+ }).map(({ value: e }) => e).toArray();
68
+ return { options: f, defaults: d };
73
69
  }
74
- async function rn({
75
- pFrame: c,
76
- sequenceColumnIds: e
70
+ async function ln({
71
+ pFrame: l,
72
+ sequenceColumnIds: r
77
73
  }) {
78
- if (!c || (e == null ? void 0 : e.length) !== 1) return;
79
- const p = await S().listColumns(c), t = p.find(
80
- (l) => l.columnId === e[0]
74
+ if (!l || (r == null ? void 0 : r.length) !== 1) return;
75
+ const p = await C().listColumns(l), t = p.find(
76
+ (i) => i.columnId === r[0]
81
77
  );
82
78
  if (!t)
83
79
  throw new Error(
84
- `Couldn't find sequence column (ID: \`${e[0]}\`).`
80
+ `Couldn't find sequence column (ID: \`${r[0]}\`).`
85
81
  );
86
82
  return p.values().filter(
87
- (l) => {
88
- var o;
89
- return ((o = l.spec.annotations) == null ? void 0 : o["pl7.app/sequence/isAnnotation"]) === "true" && J(t.spec.axesSpec, l.spec.axesSpec) && Object.entries(t.spec.domain ?? {}).every(([u, m]) => {
90
- var f;
91
- return ((f = l.spec.domain) == null ? void 0 : f[u]) === m;
92
- });
93
- }
94
- ).map(({ columnId: l, spec: o }) => {
95
- var u;
96
- return {
97
- value: l,
98
- label: ((u = o.annotations) == null ? void 0 : u["pl7.app/label"]) ?? "Unlabeled column"
99
- };
100
- }).toArray();
83
+ (i) => !!j(i.spec, g.Sequence.IsAnnotation) && J(t.spec.axesSpec, i.spec.axesSpec) && Object.entries(t.spec.domain ?? {}).every(([o, f]) => {
84
+ var d;
85
+ return ((d = i.spec.domain) == null ? void 0 : d[o]) === f;
86
+ })
87
+ ).map(({ columnId: i, spec: o }) => ({
88
+ value: i,
89
+ label: b(o, g.Label) ?? "Unlabeled column"
90
+ })).toArray();
101
91
  }
102
- async function sn({
103
- pFrame: c,
104
- sequenceColumnIds: e,
105
- labelColumnIds: y,
92
+ async function cn({
93
+ pFrame: l,
94
+ sequenceColumnIds: r,
95
+ labelColumnIds: m,
106
96
  selection: p,
107
97
  colorScheme: t,
108
- alignmentParams: l
98
+ alignmentParams: i
109
99
  }) {
110
- var I, P;
111
- if (!c || !(e != null && e.length) || !y) return;
112
- const o = S(), u = await o.listColumns(c), m = u.filter((n) => W(n.spec)), f = X({ selection: p });
113
- let h = {
100
+ var F;
101
+ if (!l || !(r != null && r.length) || !m) return;
102
+ const o = C(), f = await o.listColumns(l), d = f.filter((n) => G(n.spec)), e = H({ selection: p });
103
+ let s = {
114
104
  type: "inner",
115
- entries: e.map((n) => ({
105
+ entries: r.map((n) => ({
116
106
  type: "column",
117
107
  column: n
118
108
  }))
119
109
  };
120
- m.length > 0 && (h = {
110
+ d.length > 0 && (s = {
121
111
  type: "outer",
122
- primary: h,
123
- secondary: m.map(({ columnId: n }) => ({
112
+ primary: s,
113
+ secondary: d.map(({ columnId: n }) => ({
124
114
  type: "column",
125
115
  column: n
126
116
  }))
127
- }), f && (h = {
117
+ }), e && (s = {
128
118
  type: "inner",
129
119
  entries: [
130
- h,
120
+ s,
131
121
  {
132
122
  type: "inlineColumn",
133
- column: f
123
+ column: e
134
124
  }
135
125
  ]
136
126
  });
137
- const b = y.flatMap((n) => n.type !== "column" ? [] : { type: "column", column: n.id });
138
- t.type === "markup" && b.push({ type: "column", column: t.columnId });
139
- const i = Array.from(
127
+ const c = m.flatMap((n) => n.type !== "column" ? [] : { type: "column", column: n.id });
128
+ t.type === "markup" && c.push({ type: "column", column: t.columnId });
129
+ const h = Array.from(
140
130
  new Set(
141
- e.values().flatMap((n) => {
142
- const r = u.find(({ columnId: s }) => s === n);
143
- if (!r)
131
+ r.values().flatMap((n) => {
132
+ const u = f.find(({ columnId: a }) => a === n);
133
+ if (!u)
144
134
  throw new Error(`Couldn't find sequence column (ID: ${n})`);
145
- return r.spec.axesSpec.map((s) => A(E(s)));
135
+ return u.spec.axesSpec.map((a) => v(O(a)));
146
136
  })
147
137
  )
148
138
  ).sort().map((n) => ({
149
- column: { type: "axis", id: D(n) },
139
+ column: { type: "axis", id: S(n) },
150
140
  ascending: !0,
151
141
  naAndAbsentAreLeastValues: !0
152
- })), d = {
142
+ })), x = {
153
143
  src: {
154
144
  type: "outer",
155
- primary: h,
156
- secondary: b
145
+ primary: s,
146
+ secondary: c
157
147
  },
158
148
  filters: [],
159
- sorting: i
160
- }, a = await o.calculateTableData(
161
- c,
162
- JSON.parse(JSON.stringify(d)),
149
+ sorting: h
150
+ }, w = await o.calculateTableData(
151
+ l,
152
+ JSON.parse(JSON.stringify(x)),
163
153
  {
164
154
  offset: 0,
165
155
  // +1 is a hack to check whether the selection is over the limit
166
- length: q + 1
156
+ length: E + 1
167
157
  }
168
158
  );
169
- let g = (a == null ? void 0 : a[0].data.data.length) ?? 0, v = !1;
170
- g > q && (g = q, v = !0);
171
- const L = e.map((n) => {
172
- const r = a.find(({ spec: s }) => s.id === n);
173
- if (!r)
159
+ let A = (w == null ? void 0 : w[0].data.data.length) ?? 0, I = !1;
160
+ A > E && (A = E, I = !0);
161
+ const R = r.map((n) => {
162
+ const u = w.find(({ spec: a }) => a.id === n);
163
+ if (!u)
174
164
  throw new Error(`Couldn't find sequence column (ID: \`${n}\`).`);
175
- return r;
176
- }), F = y.map((n) => {
177
- const r = a.find(({ spec: s }) => {
178
- if (n.type === "axis" && s.type === "axis")
179
- return J(n.id, s.id);
180
- if (n.type === "column" && s.type === "column")
181
- return n.id === s.id;
165
+ return u;
166
+ }), z = m.map((n) => {
167
+ const u = w.find(({ spec: a }) => {
168
+ if (n.type === "axis" && a.type === "axis")
169
+ return J(n.id, a.id);
170
+ if (n.type === "column" && a.type === "column")
171
+ return n.id === a.id;
182
172
  });
183
- if (!r)
173
+ if (!u)
184
174
  throw new Error(`Couldn't find label column (ID: \`${n}\`).`);
185
- return r;
186
- }), j = await Promise.all(
187
- L.map(
188
- (n) => Z(
175
+ return u;
176
+ }), B = await Promise.all(
177
+ R.map(
178
+ (n) => tn(
189
179
  Array.from(
190
- { length: g },
191
- (r, s) => {
192
- var w;
193
- return ((w = O(n.data, s, { na: "", absent: "" })) == null ? void 0 : w.toString()) ?? "";
180
+ { length: A },
181
+ (u, a) => {
182
+ var y;
183
+ return ((y = q(n.data, a, { na: "", absent: "" })) == null ? void 0 : y.toString()) ?? "";
194
184
  }
195
185
  ),
196
- l
186
+ i
197
187
  )
198
188
  )
199
- ), R = Array.from(
200
- { length: g },
201
- (n, r) => j.map((s) => s[r])
202
- ), z = L.map(
203
- (n) => {
204
- var r;
205
- return ((r = n.spec.spec.annotations) == null ? void 0 : r["pl7.app/label"]) ?? "Unlabeled column";
206
- }
207
- ), B = Array.from(
208
- { length: g },
209
- (n, r) => F.map(
210
- (s) => {
211
- var w;
212
- return ((w = O(s.data, r, { na: "", absent: "" })) == null ? void 0 : w.toString()) ?? "";
189
+ ), $ = Array.from(
190
+ { length: A },
191
+ (n, u) => B.map((a) => a[u])
192
+ ), T = R.map(
193
+ (n) => b(n.spec.spec, g.Label) ?? "Unlabeled column"
194
+ ), V = Array.from(
195
+ { length: A },
196
+ (n, u) => z.map(
197
+ (a) => {
198
+ var y;
199
+ return ((y = q(a.data, u, { na: "", absent: "" })) == null ? void 0 : y.toString()) ?? "";
213
200
  }
214
201
  )
215
- ), x = R.map((n) => n.join(" ")), $ = nn(x), k = {
216
- sequences: x,
217
- sequenceNames: z,
218
- labelRows: B,
219
- exceedsLimit: v,
220
- residueCounts: $
202
+ ), D = $.map((n) => n.join(" ")), U = en(D), k = {
203
+ sequences: D,
204
+ sequenceNames: T,
205
+ labelRows: V,
206
+ exceedsLimit: I,
207
+ residueCounts: U
221
208
  };
222
209
  if (t.type === "chemical-properties")
223
- k.highlightImage = H({
224
- sequences: x,
225
- residueCounts: $
210
+ k.highlightImage = Q({
211
+ sequences: D,
212
+ residueCounts: U
226
213
  });
227
214
  else if (t.type === "markup") {
228
- const n = a.find(
229
- ({ spec: w }) => w.id === t.columnId
215
+ const n = w.find(
216
+ ({ spec: y }) => y.id === t.columnId
230
217
  );
231
218
  if (!n)
232
219
  throw new Error(
233
220
  `Couldn't find markup column (ID: \`${t.columnId}\`).`
234
221
  );
235
- const r = Array.from(
236
- { length: g },
237
- (w, U) => {
238
- var N;
239
- const T = K(
240
- ((N = O(n.data, U, { na: "", absent: "" })) == null ? void 0 : N.toString()) ?? ""
222
+ const u = Array.from(
223
+ { length: A },
224
+ (y, P) => {
225
+ var _;
226
+ const W = X(
227
+ ((_ = q(n.data, P, { na: "", absent: "" })) == null ? void 0 : _.toString()) ?? ""
241
228
  );
242
- return Q(R[U][0], T);
229
+ return Y($[P][0], W);
243
230
  }
244
- ), s = JSON.parse(
245
- ((I = n.spec.spec.annotations) == null ? void 0 : I["pl7.app/sequence/annotation/mapping"]) ?? "{}"
246
- );
247
- k.highlightImage = Y({
248
- markupRows: r,
249
- columnCount: ((P = x.at(0)) == null ? void 0 : P.length) ?? 0,
250
- labels: s
231
+ ), a = j(n.spec.spec, g.Sequence.Annotation.Mapping) ?? {};
232
+ k.highlightImage = nn({
233
+ markupRows: u,
234
+ columnCount: ((F = D.at(0)) == null ? void 0 : F.length) ?? 0,
235
+ labels: a
251
236
  });
252
237
  }
253
238
  return k;
254
239
  }
255
- function C(c) {
256
- const e = M(), y = M(!0), p = M();
240
+ function L(l) {
241
+ const r = M(), m = M(!0), p = M();
257
242
  let t;
258
- return (l) => (G(l, async (o, u) => {
259
- if (J(o, u)) return;
260
- const m = t = Symbol();
243
+ return (i) => (K(i, async (o, f) => {
244
+ if (J(o, f)) return;
245
+ const d = t = Symbol();
261
246
  try {
262
- p.value = void 0, y.value = !0;
263
- const f = await c(o);
264
- m === t && (e.value = f);
265
- } catch (f) {
266
- console.error(f), m === t && (p.value = tn(f));
247
+ p.value = void 0, m.value = !0;
248
+ const e = await l(o);
249
+ d === t && (r.value = e);
250
+ } catch (e) {
251
+ console.error(e), d === t && (p.value = rn(e));
267
252
  } finally {
268
- m === t && (y.value = !1);
253
+ d === t && (m.value = !1);
269
254
  }
270
- }, { immediate: !0 }), { data: e, isLoading: y, error: p });
255
+ }, { immediate: !0 }), { data: r, isLoading: m, error: p });
271
256
  }
272
257
  export {
273
- q as sequenceLimit,
274
- hn as useLabelColumnsOptions,
275
- wn as useMarkupColumnsOptions,
276
- bn as useMultipleAlignmentData,
277
- gn as useSequenceColumnsOptions
258
+ E as sequenceLimit,
259
+ An as useLabelColumnsOptions,
260
+ bn as useMarkupColumnsOptions,
261
+ vn as useMultipleAlignmentData,
262
+ wn as useSequenceColumnsOptions
278
263
  };
279
264
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sources":["../../../src/components/PlMultiSequenceAlignment/data.ts"],"sourcesContent":["import { isJsonEqual } from '@milaboratories/helpers';\nimport type { ListOptionNormalized } from '@milaboratories/uikit';\nimport {\n type CalculateTableDataRequest,\n type CanonicalizedJson,\n canonicalizeJson,\n createRowSelectionColumn,\n ensureError,\n getAxisId,\n getRawPlatformaInstance,\n isLabelColumn,\n isLinkerColumn,\n type JoinEntry,\n matchAxisId,\n parseJson,\n type PColumnIdAndSpec,\n type PFrameHandle,\n type PlMultiSequenceAlignmentColorSchemeOption,\n type PlMultiSequenceAlignmentSettings,\n type PlSelectionModel,\n type PObjectId,\n type PTableColumnId,\n type PTableSorting,\n pTableValue,\n} from '@platforma-sdk/model';\nimport { ref, watch } from 'vue';\nimport { highlightByChemicalProperties } from './chemical-properties';\nimport {\n highlightByMarkup,\n markupAlignedSequence,\n parseMarkup,\n} from './markup';\nimport { multiSequenceAlignment } from './multi-sequence-alignment';\nimport { getResidueCounts } from './residue-counts';\nimport type { HighlightLegend, ResidueCounts } from './types';\n\nconst getPFrameDriver = () => getRawPlatformaInstance().pFrameDriver;\n\nexport const sequenceLimit = 1000;\n\nexport const useSequenceColumnsOptions = refreshOnDeepChange(\n getSequenceColumnsOptions,\n);\n\nexport const useLabelColumnsOptions = refreshOnDeepChange(\n getLabelColumnsOptions,\n);\n\nexport const useMarkupColumnsOptions = refreshOnDeepChange(\n getMarkupColumnsOptions,\n);\n\nexport const useMultipleAlignmentData = refreshOnDeepChange(\n getMultipleAlignmentData,\n);\n\nasync function getSequenceColumnsOptions({\n pFrame,\n sequenceColumnPredicate,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnPredicate: (column: PColumnIdAndSpec) => boolean;\n}): Promise<OptionsWithDefaults<PObjectId> | undefined> {\n if (!pFrame) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const options = columns.values()\n .filter((column) => sequenceColumnPredicate(column))\n .map(({ spec, columnId }) => ({\n label: spec.annotations?.['pl7.app/label'] ?? 'Unlabeled column',\n value: columnId,\n }))\n .toArray();\n const defaults = options.map(({ value }) => value);\n return { options, defaults };\n}\n\nasync function getLabelColumnsOptions({\n pFrame,\n sequenceColumnIds,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnIds: PObjectId[] | undefined;\n}): Promise<OptionsWithDefaults<PTableColumnId> | undefined> {\n if (!pFrame || !sequenceColumnIds) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const optionMap = new Map<CanonicalizedJson<PTableColumnId>, string>();\n\n const sequenceColumnsAxes = new Map(\n sequenceColumnIds.values().flatMap((id) => {\n const column = columns.find(({ columnId }) => columnId === id);\n if (!column) {\n throw new Error(`Couldn't find sequence column (ID: \\`${id}\\`).`);\n }\n return column.spec.axesSpec.values()\n .map((spec) => [canonicalizeJson(getAxisId(spec)), spec]);\n }),\n );\n\n for (const [axisIdJson, axisSpec] of sequenceColumnsAxes.entries()) {\n const axisId = parseJson(axisIdJson);\n const labelColumn = columns.find(({ spec }) =>\n isLabelColumn(spec) && matchAxisId(axisId, getAxisId(spec.axesSpec[0])),\n );\n optionMap.set(\n labelColumn\n ? canonicalizeJson({ type: 'column', id: labelColumn.columnId })\n : canonicalizeJson({ type: 'axis', id: axisId }),\n labelColumn?.spec.annotations?.['pl7.app/label']\n ?? axisSpec.annotations?.['pl7.app/label']\n ?? 'Unlabeled axis',\n );\n }\n\n const { hits: compatibleColumns } = await pFrameDriver.findColumns(pFrame, {\n columnFilter: {},\n compatibleWith: sequenceColumnsAxes.keys()\n .map((axisIdJson) => parseJson(axisIdJson))\n .toArray(),\n strictlyCompatible: false,\n });\n\n for (const { columnId, spec } of compatibleColumns) {\n const columnIdJson = canonicalizeJson({ type: 'column', id: columnId });\n if (optionMap.has(columnIdJson)) continue;\n optionMap.set(\n columnIdJson,\n spec.annotations?.['pl7.app/label'] ?? 'Unlabeled column',\n );\n }\n\n const options = optionMap.entries()\n .map(([value, label]) => ({ label, value: parseJson(value) }))\n .toArray();\n\n const defaults = options.values()\n .filter(({ value }) => {\n if (value.type === 'axis') return true;\n const column = columns.find(({ columnId }) => columnId === value.id);\n return column && isLabelColumn(column.spec);\n })\n .map(({ value }) => value)\n .toArray();\n return { options, defaults };\n}\n\nasync function getMarkupColumnsOptions({\n pFrame,\n sequenceColumnIds,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnIds: PObjectId[] | undefined;\n}): Promise<ListOptionNormalized<PObjectId>[] | undefined> {\n if (!pFrame || sequenceColumnIds?.length !== 1) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const sequenceColumn = columns.find((column) =>\n column.columnId === sequenceColumnIds[0],\n );\n if (!sequenceColumn) {\n throw new Error(\n `Couldn't find sequence column (ID: \\`${sequenceColumnIds[0]}\\`).`,\n );\n }\n return columns.values()\n .filter((column) =>\n column.spec.annotations?.['pl7.app/sequence/isAnnotation'] === 'true'\n && isJsonEqual(sequenceColumn.spec.axesSpec, column.spec.axesSpec)\n && Object.entries(sequenceColumn.spec.domain ?? {}).every((\n [key, value],\n ) => column.spec.domain?.[key] === value),\n ).map(({ columnId, spec }) => ({\n value: columnId,\n label: spec.annotations?.['pl7.app/label'] ?? 'Unlabeled column',\n }))\n .toArray();\n}\n\nasync function getMultipleAlignmentData({\n pFrame,\n sequenceColumnIds,\n labelColumnIds,\n selection,\n colorScheme,\n alignmentParams,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnIds: PObjectId[] | undefined;\n labelColumnIds: PTableColumnId[] | undefined;\n selection: PlSelectionModel | undefined;\n colorScheme: PlMultiSequenceAlignmentColorSchemeOption;\n alignmentParams: PlMultiSequenceAlignmentSettings['alignmentParams'];\n}): Promise<MultipleAlignmentData | undefined> {\n if (!pFrame || !sequenceColumnIds?.length || !labelColumnIds) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const linkerColumns = columns.filter((column) => isLinkerColumn(column.spec));\n\n const filterColumn = createRowSelectionColumn({ selection });\n\n // inner join of sequence columns\n let primaryEntry: JoinEntry<PObjectId> = {\n type: 'inner',\n entries: sequenceColumnIds.map((column) => ({\n type: 'column',\n column,\n })),\n };\n\n // if we have linkers, left join them\n if (linkerColumns.length > 0) {\n primaryEntry = {\n type: 'outer',\n primary: primaryEntry,\n secondary: linkerColumns.map(({ columnId }) => ({\n type: 'column',\n column: columnId,\n })),\n };\n }\n\n // inner join with filters\n if (filterColumn) {\n primaryEntry = {\n type: 'inner',\n entries: [\n primaryEntry,\n {\n type: 'inlineColumn',\n column: filterColumn,\n },\n ],\n };\n }\n\n // left join with labels\n const secondaryEntry: JoinEntry<PObjectId>[] = labelColumnIds\n .flatMap((column) => {\n if (column.type !== 'column') return [];\n return { type: 'column', column: column.id };\n });\n\n // and markup\n if (colorScheme.type === 'markup') {\n secondaryEntry.push({ type: 'column', column: colorScheme.columnId });\n }\n\n const sorting: PTableSorting[] = Array.from(\n new Set(\n sequenceColumnIds.values().flatMap((id) => {\n const column = columns.find(({ columnId }) => columnId === id);\n if (!column) {\n throw new Error(`Couldn't find sequence column (ID: ${id})`);\n }\n return column.spec.axesSpec\n .map((spec) => canonicalizeJson(getAxisId(spec)));\n }),\n ),\n )\n .sort()\n .map((id) => ({\n column: { type: 'axis', id: parseJson(id) },\n ascending: true,\n naAndAbsentAreLeastValues: true,\n }));\n\n const request: CalculateTableDataRequest<PObjectId> = {\n src: {\n type: 'outer',\n primary: primaryEntry,\n secondary: secondaryEntry,\n },\n filters: [],\n sorting,\n };\n\n const table = await pFrameDriver.calculateTableData(\n pFrame,\n JSON.parse(JSON.stringify(request)),\n {\n offset: 0,\n // +1 is a hack to check whether the selection is over the limit\n length: sequenceLimit + 1,\n },\n );\n\n let rowCount = table?.[0].data.data.length ?? 0;\n let exceedsLimit = false;\n if (rowCount > sequenceLimit) {\n rowCount = sequenceLimit;\n exceedsLimit = true;\n }\n\n const sequenceColumns = sequenceColumnIds.map((columnId) => {\n const column = table.find(({ spec }) => spec.id === columnId);\n if (!column) {\n throw new Error(`Couldn't find sequence column (ID: \\`${columnId}\\`).`);\n }\n return column;\n });\n\n const labelColumns = labelColumnIds.map((labelColumn) => {\n const column = table.find(({ spec }) => {\n if (labelColumn.type === 'axis' && spec.type === 'axis') {\n return isJsonEqual(labelColumn.id, spec.id);\n }\n if (labelColumn.type === 'column' && spec.type === 'column') {\n return labelColumn.id === spec.id;\n }\n });\n if (!column) {\n throw new Error(`Couldn't find label column (ID: \\`${labelColumn}\\`).`);\n }\n return column;\n });\n\n const alignedSequences = await Promise.all(\n sequenceColumns.map((column) =>\n multiSequenceAlignment(\n Array.from(\n { length: rowCount },\n (_, row) =>\n pTableValue(column.data, row, { na: '', absent: '' })?.toString()\n ?? '',\n ),\n alignmentParams,\n ),\n ),\n );\n\n const sequences = Array.from(\n { length: rowCount },\n (_, row) => alignedSequences.map((column) => column[row]),\n );\n\n const sequenceNames = sequenceColumns.map((column) =>\n column.spec.spec.annotations?.['pl7.app/label'] ?? 'Unlabeled column',\n );\n\n const labels = Array.from(\n { length: rowCount },\n (_, row) =>\n labelColumns.map((column) =>\n pTableValue(column.data, row, { na: '', absent: '' })?.toString() ?? '',\n ),\n );\n\n const concatenatedSequences = sequences.map((row) => row.join(' '));\n const residueCounts = getResidueCounts(concatenatedSequences);\n\n const result: MultipleAlignmentData = {\n sequences: concatenatedSequences,\n sequenceNames,\n labelRows: labels,\n exceedsLimit,\n residueCounts,\n };\n\n if (colorScheme.type === 'chemical-properties') {\n result.highlightImage = highlightByChemicalProperties({\n sequences: concatenatedSequences,\n residueCounts,\n });\n } else if (colorScheme.type === 'markup') {\n const markupColumn = table.find(({ spec }) =>\n spec.id === colorScheme.columnId,\n );\n if (!markupColumn) {\n throw new Error(\n `Couldn't find markup column (ID: \\`${colorScheme.columnId}\\`).`,\n );\n }\n const markupRows = Array.from(\n { length: rowCount },\n (_, row) => {\n const markup = parseMarkup(\n pTableValue(markupColumn.data, row, { na: '', absent: '' })\n ?.toString()\n ?? '',\n );\n return markupAlignedSequence(sequences[row][0], markup);\n },\n );\n const labels: Record<string, string> = JSON.parse(\n markupColumn.spec.spec.annotations\n ?.['pl7.app/sequence/annotation/mapping'] ?? '{}',\n );\n result.highlightImage = highlightByMarkup({\n markupRows,\n columnCount: concatenatedSequences.at(0)?.length ?? 0,\n labels,\n });\n }\n\n return result;\n}\n\nfunction refreshOnDeepChange<T, P>(cb: (params: P) => Promise<T>) {\n const data = ref<T>();\n const isLoading = ref(true);\n const error = ref<Error>();\n let requestId: symbol;\n return (paramsGetter: () => P) => {\n watch(paramsGetter, async (params, prevParams) => {\n if (isJsonEqual(params, prevParams)) return;\n const currentRequestId = requestId = Symbol();\n try {\n error.value = undefined;\n isLoading.value = true;\n const result = await cb(params);\n if (currentRequestId === requestId) {\n data.value = result;\n }\n } catch (err) {\n console.error(err);\n if (currentRequestId === requestId) {\n error.value = ensureError(err);\n }\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n }, { immediate: true });\n return { data, isLoading, error };\n };\n}\n\ntype MultipleAlignmentData = {\n sequences: string[];\n sequenceNames: string[];\n labelRows: string[][];\n residueCounts: ResidueCounts;\n highlightImage?: {\n blob: Blob;\n legend: HighlightLegend;\n };\n exceedsLimit: boolean;\n};\n\ntype OptionsWithDefaults<T> = {\n options: ListOptionNormalized<T>[];\n defaults: T[];\n};\n"],"names":["getPFrameDriver","getRawPlatformaInstance","sequenceLimit","useSequenceColumnsOptions","refreshOnDeepChange","getSequenceColumnsOptions","useLabelColumnsOptions","getLabelColumnsOptions","useMarkupColumnsOptions","getMarkupColumnsOptions","useMultipleAlignmentData","getMultipleAlignmentData","pFrame","sequenceColumnPredicate","options","column","spec","columnId","_a","defaults","value","sequenceColumnIds","pFrameDriver","columns","optionMap","sequenceColumnsAxes","id","canonicalizeJson","getAxisId","axisIdJson","axisSpec","axisId","parseJson","labelColumn","isLabelColumn","matchAxisId","_b","compatibleColumns","columnIdJson","_c","label","sequenceColumn","isJsonEqual","key","labelColumnIds","selection","colorScheme","alignmentParams","linkerColumns","isLinkerColumn","filterColumn","createRowSelectionColumn","primaryEntry","secondaryEntry","sorting","request","table","rowCount","exceedsLimit","sequenceColumns","labelColumns","alignedSequences","multiSequenceAlignment","_","row","pTableValue","sequences","sequenceNames","labels","concatenatedSequences","residueCounts","getResidueCounts","result","highlightByChemicalProperties","markupColumn","markupRows","markup","parseMarkup","markupAlignedSequence","highlightByMarkup","cb","data","ref","isLoading","error","requestId","paramsGetter","watch","params","prevParams","currentRequestId","err","ensureError"],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sources":["../../../src/components/PlMultiSequenceAlignment/data.ts"],"sourcesContent":["import { isJsonEqual } from '@milaboratories/helpers';\nimport type { ListOptionNormalized } from '@milaboratories/uikit';\nimport {\n type CalculateTableDataRequest,\n type CanonicalizedJson,\n canonicalizeJson,\n createRowSelectionColumn,\n ensureError,\n getAxisId,\n getRawPlatformaInstance,\n isLabelColumn,\n isLinkerColumn,\n type JoinEntry,\n matchAxisId,\n parseJson,\n type PColumnIdAndSpec,\n type PFrameHandle,\n type PlMultiSequenceAlignmentColorSchemeOption,\n type PlMultiSequenceAlignmentSettings,\n type PlSelectionModel,\n type PObjectId,\n type PTableColumnId,\n type PTableSorting,\n pTableValue,\n readAnnotation,\n Annotation,\n readAnnotationJson,\n} from '@platforma-sdk/model';\nimport { ref, watch } from 'vue';\nimport { highlightByChemicalProperties } from './chemical-properties';\nimport {\n highlightByMarkup,\n markupAlignedSequence,\n parseMarkup,\n} from './markup';\nimport { multiSequenceAlignment } from './multi-sequence-alignment';\nimport { getResidueCounts } from './residue-counts';\nimport type { HighlightLegend, ResidueCounts } from './types';\n\nconst getPFrameDriver = () => getRawPlatformaInstance().pFrameDriver;\n\nexport const sequenceLimit = 1000;\n\nexport const useSequenceColumnsOptions = refreshOnDeepChange(\n getSequenceColumnsOptions,\n);\n\nexport const useLabelColumnsOptions = refreshOnDeepChange(\n getLabelColumnsOptions,\n);\n\nexport const useMarkupColumnsOptions = refreshOnDeepChange(\n getMarkupColumnsOptions,\n);\n\nexport const useMultipleAlignmentData = refreshOnDeepChange(\n getMultipleAlignmentData,\n);\n\nasync function getSequenceColumnsOptions({\n pFrame,\n sequenceColumnPredicate,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnPredicate: (column: PColumnIdAndSpec) => boolean;\n}): Promise<OptionsWithDefaults<PObjectId> | undefined> {\n if (!pFrame) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const options = columns.values()\n .filter((column) => sequenceColumnPredicate(column))\n .map(({ spec, columnId }) => ({\n label: readAnnotation(spec, Annotation.Label) ?? 'Unlabeled column',\n value: columnId,\n }))\n .toArray();\n const defaults = options.map(({ value }) => value);\n return { options, defaults };\n}\n\nasync function getLabelColumnsOptions({\n pFrame,\n sequenceColumnIds,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnIds: PObjectId[] | undefined;\n}): Promise<OptionsWithDefaults<PTableColumnId> | undefined> {\n if (!pFrame || !sequenceColumnIds) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const optionMap = new Map<CanonicalizedJson<PTableColumnId>, string>();\n\n const sequenceColumnsAxes = new Map(\n sequenceColumnIds.values().flatMap((id) => {\n const column = columns.find(({ columnId }) => columnId === id);\n if (!column) {\n throw new Error(`Couldn't find sequence column (ID: \\`${id}\\`).`);\n }\n return column.spec.axesSpec.values()\n .map((spec) => [canonicalizeJson(getAxisId(spec)), spec]);\n }),\n );\n\n for (const [axisIdJson, axisSpec] of sequenceColumnsAxes.entries()) {\n const axisId = parseJson(axisIdJson);\n const labelColumn = columns.find(({ spec }) =>\n isLabelColumn(spec) && matchAxisId(axisId, getAxisId(spec.axesSpec[0])),\n );\n optionMap.set(\n labelColumn\n ? canonicalizeJson({ type: 'column', id: labelColumn.columnId })\n : canonicalizeJson({ type: 'axis', id: axisId }),\n readAnnotation(labelColumn?.spec, Annotation.Label)\n ?? readAnnotation(axisSpec, Annotation.Label)\n ?? 'Unlabeled axis',\n );\n }\n\n const { hits: compatibleColumns } = await pFrameDriver.findColumns(pFrame, {\n columnFilter: {},\n compatibleWith: sequenceColumnsAxes.keys()\n .map((axisIdJson) => parseJson(axisIdJson))\n .toArray(),\n strictlyCompatible: false,\n });\n\n for (const { columnId, spec } of compatibleColumns) {\n const columnIdJson = canonicalizeJson({ type: 'column', id: columnId } satisfies PTableColumnId);\n if (optionMap.has(columnIdJson)) continue;\n optionMap.set(\n columnIdJson,\n readAnnotation(spec, Annotation.Label) ?? 'Unlabeled column',\n );\n }\n\n const options = optionMap.entries()\n .map(([value, label]) => ({ label, value: parseJson(value) }))\n .toArray();\n\n const defaults = options.values()\n .filter(({ value }) => {\n if (value.type === 'axis') return true;\n const column = columns.find(({ columnId }) => columnId === value.id);\n return column && isLabelColumn(column.spec);\n })\n .map(({ value }) => value)\n .toArray();\n return { options, defaults };\n}\n\nasync function getMarkupColumnsOptions({\n pFrame,\n sequenceColumnIds,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnIds: PObjectId[] | undefined;\n}): Promise<ListOptionNormalized<PObjectId>[] | undefined> {\n if (!pFrame || sequenceColumnIds?.length !== 1) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const sequenceColumn = columns.find((column) =>\n column.columnId === sequenceColumnIds[0],\n );\n if (!sequenceColumn) {\n throw new Error(\n `Couldn't find sequence column (ID: \\`${sequenceColumnIds[0]}\\`).`,\n );\n }\n return columns.values()\n .filter((column) =>\n !!readAnnotationJson(column.spec, Annotation.Sequence.IsAnnotation)\n && isJsonEqual(sequenceColumn.spec.axesSpec, column.spec.axesSpec)\n && Object.entries(sequenceColumn.spec.domain ?? {}).every((\n [key, value],\n ) => column.spec.domain?.[key] === value),\n ).map(({ columnId, spec }) => ({\n value: columnId,\n label: readAnnotation(spec, Annotation.Label) ?? 'Unlabeled column',\n }))\n .toArray();\n}\n\nasync function getMultipleAlignmentData({\n pFrame,\n sequenceColumnIds,\n labelColumnIds,\n selection,\n colorScheme,\n alignmentParams,\n}: {\n pFrame: PFrameHandle | undefined;\n sequenceColumnIds: PObjectId[] | undefined;\n labelColumnIds: PTableColumnId[] | undefined;\n selection: PlSelectionModel | undefined;\n colorScheme: PlMultiSequenceAlignmentColorSchemeOption;\n alignmentParams: PlMultiSequenceAlignmentSettings['alignmentParams'];\n}): Promise<MultipleAlignmentData | undefined> {\n if (!pFrame || !sequenceColumnIds?.length || !labelColumnIds) return;\n\n const pFrameDriver = getPFrameDriver();\n const columns = await pFrameDriver.listColumns(pFrame);\n const linkerColumns = columns.filter((column) => isLinkerColumn(column.spec));\n\n const filterColumn = createRowSelectionColumn({ selection });\n\n // inner join of sequence columns\n let primaryEntry: JoinEntry<PObjectId> = {\n type: 'inner',\n entries: sequenceColumnIds.map((column) => ({\n type: 'column',\n column,\n })),\n };\n\n // if we have linkers, left join them\n if (linkerColumns.length > 0) {\n primaryEntry = {\n type: 'outer',\n primary: primaryEntry,\n secondary: linkerColumns.map(({ columnId }) => ({\n type: 'column',\n column: columnId,\n })),\n };\n }\n\n // inner join with filters\n if (filterColumn) {\n primaryEntry = {\n type: 'inner',\n entries: [\n primaryEntry,\n {\n type: 'inlineColumn',\n column: filterColumn,\n },\n ],\n };\n }\n\n // left join with labels\n const secondaryEntry: JoinEntry<PObjectId>[] = labelColumnIds\n .flatMap((column) => {\n if (column.type !== 'column') return [];\n return { type: 'column', column: column.id };\n });\n\n // and markup\n if (colorScheme.type === 'markup') {\n secondaryEntry.push({ type: 'column', column: colorScheme.columnId });\n }\n\n const sorting: PTableSorting[] = Array.from(\n new Set(\n sequenceColumnIds.values().flatMap((id) => {\n const column = columns.find(({ columnId }) => columnId === id);\n if (!column) {\n throw new Error(`Couldn't find sequence column (ID: ${id})`);\n }\n return column.spec.axesSpec\n .map((spec) => canonicalizeJson(getAxisId(spec)));\n }),\n ),\n )\n .sort()\n .map((id) => ({\n column: { type: 'axis', id: parseJson(id) },\n ascending: true,\n naAndAbsentAreLeastValues: true,\n }));\n\n const request: CalculateTableDataRequest<PObjectId> = {\n src: {\n type: 'outer',\n primary: primaryEntry,\n secondary: secondaryEntry,\n },\n filters: [],\n sorting,\n };\n\n const table = await pFrameDriver.calculateTableData(\n pFrame,\n JSON.parse(JSON.stringify(request)),\n {\n offset: 0,\n // +1 is a hack to check whether the selection is over the limit\n length: sequenceLimit + 1,\n },\n );\n\n let rowCount = table?.[0].data.data.length ?? 0;\n let exceedsLimit = false;\n if (rowCount > sequenceLimit) {\n rowCount = sequenceLimit;\n exceedsLimit = true;\n }\n\n const sequenceColumns = sequenceColumnIds.map((columnId) => {\n const column = table.find(({ spec }) => spec.id === columnId);\n if (!column) {\n throw new Error(`Couldn't find sequence column (ID: \\`${columnId}\\`).`);\n }\n return column;\n });\n\n const labelColumns = labelColumnIds.map((labelColumn) => {\n const column = table.find(({ spec }) => {\n if (labelColumn.type === 'axis' && spec.type === 'axis') {\n return isJsonEqual(labelColumn.id, spec.id);\n }\n if (labelColumn.type === 'column' && spec.type === 'column') {\n return labelColumn.id === spec.id;\n }\n });\n if (!column) {\n throw new Error(`Couldn't find label column (ID: \\`${labelColumn}\\`).`);\n }\n return column;\n });\n\n const alignedSequences = await Promise.all(\n sequenceColumns.map((column) =>\n multiSequenceAlignment(\n Array.from(\n { length: rowCount },\n (_, row) =>\n pTableValue(column.data, row, { na: '', absent: '' })?.toString()\n ?? '',\n ),\n alignmentParams,\n ),\n ),\n );\n\n const sequences = Array.from(\n { length: rowCount },\n (_, row) => alignedSequences.map((column) => column[row]),\n );\n\n const sequenceNames = sequenceColumns.map((column) =>\n readAnnotation(column.spec.spec, Annotation.Label) ?? 'Unlabeled column',\n );\n\n const labels = Array.from(\n { length: rowCount },\n (_, row) =>\n labelColumns.map((column) =>\n pTableValue(column.data, row, { na: '', absent: '' })?.toString() ?? '',\n ),\n );\n\n const concatenatedSequences = sequences.map((row) => row.join(' '));\n const residueCounts = getResidueCounts(concatenatedSequences);\n\n const result: MultipleAlignmentData = {\n sequences: concatenatedSequences,\n sequenceNames,\n labelRows: labels,\n exceedsLimit,\n residueCounts,\n };\n\n if (colorScheme.type === 'chemical-properties') {\n result.highlightImage = highlightByChemicalProperties({\n sequences: concatenatedSequences,\n residueCounts,\n });\n } else if (colorScheme.type === 'markup') {\n const markupColumn = table.find(({ spec }) =>\n spec.id === colorScheme.columnId,\n );\n if (!markupColumn) {\n throw new Error(\n `Couldn't find markup column (ID: \\`${colorScheme.columnId}\\`).`,\n );\n }\n const markupRows = Array.from(\n { length: rowCount },\n (_, row) => {\n const markup = parseMarkup(\n pTableValue(markupColumn.data, row, { na: '', absent: '' })\n ?.toString()\n ?? '',\n );\n return markupAlignedSequence(sequences[row][0], markup);\n },\n );\n const labels = readAnnotationJson(markupColumn.spec.spec, Annotation.Sequence.Annotation.Mapping) ?? {};\n result.highlightImage = highlightByMarkup({\n markupRows,\n columnCount: concatenatedSequences.at(0)?.length ?? 0,\n labels,\n });\n }\n\n return result;\n}\n\nfunction refreshOnDeepChange<T, P>(cb: (params: P) => Promise<T>) {\n const data = ref<T>();\n const isLoading = ref(true);\n const error = ref<Error>();\n let requestId: symbol;\n return (paramsGetter: () => P) => {\n watch(paramsGetter, async (params, prevParams) => {\n if (isJsonEqual(params, prevParams)) return;\n const currentRequestId = requestId = Symbol();\n try {\n error.value = undefined;\n isLoading.value = true;\n const result = await cb(params);\n if (currentRequestId === requestId) {\n data.value = result;\n }\n } catch (err) {\n console.error(err);\n if (currentRequestId === requestId) {\n error.value = ensureError(err);\n }\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n }, { immediate: true });\n return { data, isLoading, error };\n };\n}\n\ntype MultipleAlignmentData = {\n sequences: string[];\n sequenceNames: string[];\n labelRows: string[][];\n residueCounts: ResidueCounts;\n highlightImage?: {\n blob: Blob;\n legend: HighlightLegend;\n };\n exceedsLimit: boolean;\n};\n\ntype OptionsWithDefaults<T> = {\n options: ListOptionNormalized<T>[];\n defaults: T[];\n};\n"],"names":["getPFrameDriver","getRawPlatformaInstance","sequenceLimit","useSequenceColumnsOptions","refreshOnDeepChange","getSequenceColumnsOptions","useLabelColumnsOptions","getLabelColumnsOptions","useMarkupColumnsOptions","getMarkupColumnsOptions","useMultipleAlignmentData","getMultipleAlignmentData","pFrame","sequenceColumnPredicate","options","column","spec","columnId","readAnnotation","Annotation","defaults","value","sequenceColumnIds","pFrameDriver","columns","optionMap","sequenceColumnsAxes","id","canonicalizeJson","getAxisId","axisIdJson","axisSpec","axisId","parseJson","labelColumn","isLabelColumn","matchAxisId","compatibleColumns","columnIdJson","label","sequenceColumn","readAnnotationJson","isJsonEqual","key","_a","labelColumnIds","selection","colorScheme","alignmentParams","linkerColumns","isLinkerColumn","filterColumn","createRowSelectionColumn","primaryEntry","secondaryEntry","sorting","request","table","rowCount","exceedsLimit","sequenceColumns","labelColumns","alignedSequences","multiSequenceAlignment","_","row","pTableValue","sequences","sequenceNames","labels","concatenatedSequences","residueCounts","getResidueCounts","result","highlightByChemicalProperties","markupColumn","markupRows","markup","parseMarkup","markupAlignedSequence","highlightByMarkup","cb","data","ref","isLoading","error","requestId","paramsGetter","watch","params","prevParams","currentRequestId","err","ensureError"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { ref as J, reactive as V, watch as h } from "vue";
2
2
  import "../../sdk/model/dist/index.js";
3
3
  import { isJsonEqual as b } from "../../lib/util/helpers/dist/index.js";
4
- import { getFilterOptions as g, makeDiscreteOptions as k, isFilterValid as F, isAlphabetic as q, getColumnName as x } from "./filters_logic.js";
5
- import { getPTableColumnId as z, canonicalizeJson as f } from "../../lib/model/common/dist/index.js";
6
- function N(M, m) {
4
+ import { getFilterOptions as g, makeDiscreteOptions as j, isFilterValid as F, isAlphabetic as k, getColumnName as q } from "./filters_logic.js";
5
+ import { getPTableColumnId as x, canonicalizeJson as f } from "../../lib/model/common/dist/index.js";
6
+ function K(M, m) {
7
7
  const w = J(/* @__PURE__ */ new Map()), o = V({
8
8
  value: []
9
9
  });
@@ -13,17 +13,17 @@ function N(M, m) {
13
13
  const p = w.value = new Map(
14
14
  d.map((e, t) => {
15
15
  try {
16
- const i = z(e), l = n(e), r = l.options ? g(e).filter((y) => l.options.includes(y.value)) : g(e);
16
+ const i = x(e), l = n(e), r = l.options ? g(e).filter((y) => l.options.includes(y.value)) : g(e);
17
17
  if (r.length === 0) return null;
18
- const u = k(e), c = l.default && F(l.default, r, u) ? l.default : null, S = c ? {
18
+ const u = j(e), c = l.default && F(l.default, r, u) ? l.default : null, S = c ? {
19
19
  value: c,
20
20
  disabled: !1,
21
21
  open: !1
22
22
  } : null, C = {
23
23
  id: i,
24
24
  spec: e,
25
- label: x(e, t),
26
- alphabetic: q(e),
25
+ label: q(e, t),
26
+ alphabetic: k(e),
27
27
  options: r,
28
28
  discreteOptions: u,
29
29
  defaultFilter: c,
@@ -73,6 +73,6 @@ function N(M, m) {
73
73
  ), o;
74
74
  }
75
75
  export {
76
- N as useFilters
76
+ K as useFilters
77
77
  };
78
78
  //# sourceMappingURL=filters-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters_logic.d.ts","sourceRoot":"","sources":["../../../src/components/PlTableFilters/filters_logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACtC,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,OAAO,CAUT;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAmC9D;AAED,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAU7C,CAAC;AAEX,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAU7C,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAM1F;AAED,MAAM,MAAM,qBAAqB,GAC7B,yBAAyB,GACzB,4BAA4B,GAC5B,yBAAyB,GACzB,4BAA4B,CAAC;AAEjC,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,yBAAyB,EAKjD,CAAC;AAEX,eAAO,MAAM,oBAAoB,WACvB,iBAAiB,KACxB,MAAM,IAAI,yBAEZ,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,aAAa,KAAG,MAAM,IAAI,qBAElE,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,UAE7E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CA0BrF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAsChH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,iBAAiB,EACvB,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,aAAa,CASf;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAwB3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,UAAU,CAAC,MAAM,CAAC,EAAE,CAqBtB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAc3F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAI9D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,sBAAsB,CA+GhG"}
1
+ {"version":3,"file":"filters_logic.d.ts","sourceRoot":"","sources":["../../../src/components/PlTableFilters/filters_logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAQtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACtC,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,OAAO,CAUT;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAmC9D;AAED,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAU7C,CAAC;AAEX,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAU7C,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAM1F;AAED,MAAM,MAAM,qBAAqB,GAC7B,yBAAyB,GACzB,4BAA4B,GAC5B,yBAAyB,GACzB,4BAA4B,CAAC;AAEjC,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,yBAAyB,EAKjD,CAAC;AAEX,eAAO,MAAM,oBAAoB,WACvB,iBAAiB,KACxB,MAAM,IAAI,yBAEZ,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,aAAa,KAAG,MAAM,IAAI,qBAElE,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,UAE7E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CA0BrF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAsChH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,iBAAiB,EACvB,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,aAAa,CASf;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,UAAU,CAAC,MAAM,CAAC,EAAE,CAoBtB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAc3F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAI9D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,sBAAsB,CA+GhG"}