@platforma-sdk/ui-vue 1.45.35 → 1.45.36

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 (117) hide show
  1. package/.turbo/turbo-build.log +203 -234
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +6 -0
  4. package/dist/AgGridVue/useAgGridOptions.js +2 -3
  5. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  6. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -8
  7. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
  8. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +9 -10
  9. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
  10. package/dist/components/PlAgRowNumHeader.vue.js +2 -3
  11. package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
  12. package/dist/index.js +48 -50
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib.d.ts +0 -1
  15. package/package.json +4 -5
  16. package/src/lib.ts +0 -2
  17. package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js +0 -6
  18. package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js.map +0 -1
  19. package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js +0 -5
  20. package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js.map +0 -1
  21. package/dist/components/PlMultiSequenceAlignment/Consensus.vue.d.ts +0 -9
  22. package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js +0 -10
  23. package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js.map +0 -1
  24. package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js +0 -122
  25. package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js.map +0 -1
  26. package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js +0 -9
  27. package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js.map +0 -1
  28. package/dist/components/PlMultiSequenceAlignment/Legend.vue.d.ts +0 -6
  29. package/dist/components/PlMultiSequenceAlignment/Legend.vue.js +0 -10
  30. package/dist/components/PlMultiSequenceAlignment/Legend.vue.js.map +0 -1
  31. package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js +0 -28
  32. package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js.map +0 -1
  33. package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js +0 -13
  34. package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js.map +0 -1
  35. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts +0 -25
  36. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js +0 -10
  37. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js.map +0 -1
  38. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js +0 -138
  39. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js.map +0 -1
  40. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js +0 -31
  41. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js.map +0 -1
  42. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.d.ts +0 -8
  43. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js +0 -10
  44. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js.map +0 -1
  45. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js +0 -77
  46. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js.map +0 -1
  47. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js +0 -9
  48. package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js.map +0 -1
  49. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts +0 -71
  50. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js +0 -10
  51. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js.map +0 -1
  52. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js +0 -224
  53. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js.map +0 -1
  54. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js +0 -9
  55. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js.map +0 -1
  56. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.d.ts +0 -8
  57. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js +0 -10
  58. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js.map +0 -1
  59. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js +0 -127
  60. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js.map +0 -1
  61. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js +0 -9
  62. package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js.map +0 -1
  63. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.d.ts +0 -16
  64. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js +0 -10
  65. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js.map +0 -1
  66. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js +0 -228
  67. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js.map +0 -1
  68. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js +0 -19
  69. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js.map +0 -1
  70. package/dist/components/PlMultiSequenceAlignment/cell-size.d.ts +0 -4
  71. package/dist/components/PlMultiSequenceAlignment/cell-size.js +0 -8
  72. package/dist/components/PlMultiSequenceAlignment/cell-size.js.map +0 -1
  73. package/dist/components/PlMultiSequenceAlignment/chemical-properties.d.ts +0 -44
  74. package/dist/components/PlMultiSequenceAlignment/chemical-properties.js +0 -132
  75. package/dist/components/PlMultiSequenceAlignment/chemical-properties.js.map +0 -1
  76. package/dist/components/PlMultiSequenceAlignment/data.d.ts +0 -61
  77. package/dist/components/PlMultiSequenceAlignment/data.js +0 -370
  78. package/dist/components/PlMultiSequenceAlignment/data.js.map +0 -1
  79. package/dist/components/PlMultiSequenceAlignment/index.d.ts +0 -1
  80. package/dist/components/PlMultiSequenceAlignment/markup.d.ts +0 -16
  81. package/dist/components/PlMultiSequenceAlignment/markup.js +0 -84
  82. package/dist/components/PlMultiSequenceAlignment/markup.js.map +0 -1
  83. package/dist/components/PlMultiSequenceAlignment/migrations.d.ts +0 -3
  84. package/dist/components/PlMultiSequenceAlignment/migrations.js +0 -24
  85. package/dist/components/PlMultiSequenceAlignment/migrations.js.map +0 -1
  86. package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.d.ts +0 -6
  87. package/dist/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.d.ts +0 -7
  88. package/dist/components/PlMultiSequenceAlignment/residue-counts.d.ts +0 -2
  89. package/dist/components/PlMultiSequenceAlignment/residue-counts.js +0 -13
  90. package/dist/components/PlMultiSequenceAlignment/residue-counts.js.map +0 -1
  91. package/dist/components/PlMultiSequenceAlignment/settings.d.ts +0 -2
  92. package/dist/components/PlMultiSequenceAlignment/settings.js +0 -9
  93. package/dist/components/PlMultiSequenceAlignment/settings.js.map +0 -1
  94. package/dist/components/PlMultiSequenceAlignment/types.d.ts +0 -5
  95. package/dist/components/PlMultiSequenceAlignment/useMiPlots.d.ts +0 -4
  96. package/dist/components/PlMultiSequenceAlignment/useMiPlots.js +0 -19
  97. package/dist/components/PlMultiSequenceAlignment/useMiPlots.js.map +0 -1
  98. package/src/components/PlMultiSequenceAlignment/Consensus.vue +0 -165
  99. package/src/components/PlMultiSequenceAlignment/Legend.vue +0 -44
  100. package/src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue +0 -299
  101. package/src/components/PlMultiSequenceAlignment/PhylogeneticTree.vue +0 -110
  102. package/src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue +0 -314
  103. package/src/components/PlMultiSequenceAlignment/README.md +0 -216
  104. package/src/components/PlMultiSequenceAlignment/SeqLogo.vue +0 -166
  105. package/src/components/PlMultiSequenceAlignment/Toolbar.vue +0 -228
  106. package/src/components/PlMultiSequenceAlignment/cell-size.ts +0 -4
  107. package/src/components/PlMultiSequenceAlignment/chemical-properties.ts +0 -199
  108. package/src/components/PlMultiSequenceAlignment/data.ts +0 -661
  109. package/src/components/PlMultiSequenceAlignment/index.ts +0 -1
  110. package/src/components/PlMultiSequenceAlignment/markup.ts +0 -141
  111. package/src/components/PlMultiSequenceAlignment/migrations.ts +0 -46
  112. package/src/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.ts +0 -54
  113. package/src/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.ts +0 -89
  114. package/src/components/PlMultiSequenceAlignment/residue-counts.ts +0 -124
  115. package/src/components/PlMultiSequenceAlignment/settings.ts +0 -7
  116. package/src/components/PlMultiSequenceAlignment/types.ts +0 -3
  117. package/src/components/PlMultiSequenceAlignment/useMiPlots.ts +0 -23
@@ -1,71 +0,0 @@
1
- import { PColumnPredicate, PFrameHandle, PlMultiSequenceAlignmentModel, PlSelectionModel } from '@platforma-sdk/model';
2
- type __VLS_Props = {
3
- /**
4
- * Handle to PFrame created using `createPFrameForGraphs`.
5
- * Should contain all desired sequence and label columns.
6
- */
7
- readonly pFrame: PFrameHandle | undefined;
8
- /**
9
- * Return true if column should be shown in sequence columns dropdown.
10
- * By default, all sequence columns are selected.
11
- */
12
- readonly sequenceColumnPredicate: PColumnPredicate;
13
- /**
14
- * Row selection model (from `PlAgDataTableV2` or `GraphMaker`).
15
- * If not provided or empty, all rows will be considered selected.
16
- * Warning: should be forwarded as a field of `reactive` object
17
- */
18
- readonly selection?: PlSelectionModel;
19
- };
20
- type __VLS_PublicProps = {
21
- modelValue?: PlMultiSequenceAlignmentModel;
22
- } & __VLS_Props;
23
- declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
24
- "update:modelValue": (value: PlMultiSequenceAlignmentModel) => any;
25
- }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
26
- "onUpdate:modelValue"?: ((value: PlMultiSequenceAlignmentModel) => any) | undefined;
27
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
28
- msa: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
29
- sequences: {
30
- name: string;
31
- rows: string[];
32
- residueCounts: import('./types').ResidueCounts;
33
- highlightImageUrl?: string;
34
- }[];
35
- labels: {
36
- rows: string[];
37
- }[];
38
- highlightLegend: import('./types').HighlightLegend | undefined;
39
- phylogeneticTree: import('./phylogenetic-tree.worker').TreeNodeData[] | undefined;
40
- widgets: import('@platforma-sdk/model').PlMultiSequenceAlignmentWidget[];
41
- }> & Readonly<{}>, {
42
- rootEl: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
43
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
44
- rootRef: HTMLDivElement;
45
- referenceCell: HTMLDivElement;
46
- corner: HTMLDivElement;
47
- }, HTMLDivElement, import('vue').ComponentProvideOptions, {
48
- P: {};
49
- B: {};
50
- D: {};
51
- C: {};
52
- M: {};
53
- Defaults: {};
54
- }, Readonly<{
55
- sequences: {
56
- name: string;
57
- rows: string[];
58
- residueCounts: import('./types').ResidueCounts;
59
- highlightImageUrl?: string;
60
- }[];
61
- labels: {
62
- rows: string[];
63
- }[];
64
- highlightLegend: import('./types').HighlightLegend | undefined;
65
- phylogeneticTree: import('./phylogenetic-tree.worker').TreeNodeData[] | undefined;
66
- widgets: import('@platforma-sdk/model').PlMultiSequenceAlignmentWidget[];
67
- }> & Readonly<{}>, {
68
- rootEl: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
69
- }, {}, {}, {}, {}> | null;
70
- }, any>;
71
- export default _default;
@@ -1,10 +0,0 @@
1
- import s from "./PlMultiSequenceAlignment.vue2.js";
2
- import o from "./PlMultiSequenceAlignment.vue3.js";
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const e = {
5
- $style: o
6
- }, c = /* @__PURE__ */ t(s, [["__cssModules", e]]);
7
- export {
8
- c as default
9
- };
10
- //# sourceMappingURL=PlMultiSequenceAlignment.vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlMultiSequenceAlignment.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,224 +0,0 @@
1
- import { defineComponent as J, mergeModels as Q, useModel as G, onBeforeMount as H, reactive as h, useCssModule as K, computed as T, watchEffect as L, useTemplateRef as W, onUnmounted as X, createElementBlock as A, openBlock as p, Fragment as N, createVNode as R, createBlock as S, unref as r, withCtx as b, createTextVNode as w, toDisplayString as v, createCommentVNode as V, normalizeClass as Y } from "vue";
2
- import { isJsonEqual as q } from "../../lib/util/helpers/dist/objects.js";
3
- import { PlAlert as P, PlSplash as Z } from "@milaboratories/uikit";
4
- import { getRawPlatformaInstance as ee } from "@platforma-sdk/model";
5
- import { useSequenceColumnsOptions as te, useLabelColumnsOptions as oe, useMarkupColumnsOptions as ne, useMultipleAlignmentData as le, SEQUENCE_LIMIT as _ } from "./data.js";
6
- import { runMigrations as se } from "./migrations.js";
7
- import ae from "./MultiSequenceAlignmentView.vue.js";
8
- import { defaultSettings as j } from "./settings.js";
9
- import re from "./Toolbar.vue.js";
10
- const ye = /* @__PURE__ */ J({
11
- __name: "PlMultiSequenceAlignment",
12
- props: /* @__PURE__ */ Q({
13
- pFrame: {},
14
- sequenceColumnPredicate: { type: Function },
15
- selection: {}
16
- }, {
17
- modelValue: { default: {} },
18
- modelModifiers: {}
19
- }),
20
- emits: ["update:modelValue"],
21
- setup(k) {
22
- const y = G(k, "modelValue");
23
- H(() => {
24
- se(y);
25
- });
26
- const t = h({
27
- ...j
28
- }), c = k, B = K(), g = h(te(() => ({
29
- pFrame: c.pFrame,
30
- sequenceColumnPredicate: c.sequenceColumnPredicate
31
- }))), f = h(oe(() => ({
32
- pFrame: c.pFrame,
33
- sequenceColumnIds: t.sequenceColumnIds
34
- }))), C = h(ne(() => ({
35
- pFrame: c.pFrame,
36
- sequenceColumnIds: t.sequenceColumnIds
37
- }))), s = h(le(() => ({
38
- pFrame: c.pFrame,
39
- sequenceColumnIds: t.sequenceColumnIds,
40
- labelColumnIds: t.labelColumnIds,
41
- selection: c.selection,
42
- colorScheme: t.colorScheme,
43
- alignmentParams: t.alignmentParams,
44
- shouldBuildPhylogeneticTree: t.widgets.includes("tree")
45
- }))), I = new Intl.NumberFormat("en").format, D = T(
46
- () => [
47
- {
48
- label: "Chemical Properties",
49
- value: { type: "chemical-properties" }
50
- },
51
- {
52
- label: "No Color",
53
- value: { type: "no-color" }
54
- },
55
- ...(C.data ?? []).map(({ label: o, value: n }) => ({
56
- label: o,
57
- value: {
58
- type: "markup",
59
- columnIds: n
60
- }
61
- }))
62
- ]
63
- ), x = T(
64
- () => g.error ?? f.error ?? C.error ?? s.error
65
- );
66
- function E(o) {
67
- y.value = Object.fromEntries(
68
- Object.entries({ ...y.value, ...o }).filter(([n, e]) => e !== void 0)
69
- );
70
- }
71
- L(() => {
72
- var n, e;
73
- const o = Object.fromEntries(
74
- Object.entries({
75
- ...j,
76
- sequenceColumnIds: (n = g.data) == null ? void 0 : n.defaults,
77
- labelColumnIds: (e = f.data) == null ? void 0 : e.defaults,
78
- ...y.value
79
- }).filter(
80
- ([l, a]) => !q(
81
- t[l],
82
- a
83
- )
84
- )
85
- );
86
- Object.assign(t, o);
87
- }), L(() => {
88
- var e, l, a;
89
- const o = [];
90
- !g.isLoading && ((e = t.sequenceColumnIds) != null && e.some(
91
- (i) => {
92
- var m;
93
- return (((m = g.data) == null ? void 0 : m.options) ?? []).every(
94
- ({ value: u }) => !q(u, i)
95
- );
96
- }
97
- )) && o.push("sequenceColumnIds"), !f.isLoading && ((l = t.labelColumnIds) != null && l.some(
98
- (i) => {
99
- var m;
100
- return (((m = f.data) == null ? void 0 : m.options) ?? []).every(
101
- ({ value: u }) => !q(u, i)
102
- );
103
- }
104
- )) && o.push("labelColumnIds");
105
- const n = ((a = t.colorScheme) == null ? void 0 : a.type) === "markup" ? t.colorScheme.columnIds : void 0;
106
- !C.isLoading && n && (C.data ?? []).every(
107
- ({ value: i }) => !q(i, n)
108
- ) && o.push("colorScheme"), o.length && E(Object.fromEntries(
109
- o.map((i) => [i, void 0])
110
- ));
111
- });
112
- const z = W("msa");
113
- async function U() {
114
- var M, F, O;
115
- const o = (F = (M = ee()) == null ? void 0 : M.lsDriver) == null ? void 0 : F.exportToPdf;
116
- if (!o)
117
- return console.error(
118
- "API getPlatformaRawInstance().lsDriver.exportToPdf is not available"
119
- );
120
- const n = (O = z.value) == null ? void 0 : O.rootEl;
121
- if (!n)
122
- throw new Error("MSA element is not available.");
123
- const e = document.createElement("div");
124
- e.id = `print-target-${crypto.randomUUID()}`;
125
- const l = new CSSStyleSheet();
126
- document.adoptedStyleSheets.push(l), l.insertRule(`
127
- @media screen {
128
- #${e.id} {
129
- visibility: hidden;
130
- position: fixed;
131
- }
132
- }`);
133
- const a = n.cloneNode(!0);
134
- a.dataset.prePrint = "", e.replaceChildren(a), document.body.appendChild(e);
135
- const { height: i, width: m } = e.getBoundingClientRect(), u = CSS.cm(1), $ = [m, i].map((d) => CSS.px(d).add(u.mul(2))).join(" ");
136
- l.insertRule(`
137
- @media print {
138
- @page {
139
- size: ${$};
140
- margin: ${u};
141
- }
142
- body > :not(#${e.id}) {
143
- display: none;
144
- }
145
- }`);
146
- try {
147
- await o();
148
- } catch (d) {
149
- console.error(d);
150
- } finally {
151
- document.body.removeChild(e);
152
- const d = document.adoptedStyleSheets.indexOf(l);
153
- d >= 0 && document.adoptedStyleSheets.splice(d, 1);
154
- }
155
- }
156
- return X(() => {
157
- s.data = void 0;
158
- }), (o, n) => {
159
- var e, l, a;
160
- return p(), A(N, null, [
161
- R(re, {
162
- settings: t,
163
- "sequence-column-options": (e = g.data) == null ? void 0 : e.options,
164
- "label-column-options": (l = f.data) == null ? void 0 : l.options,
165
- "color-scheme-options": D.value,
166
- onUpdateSettings: E,
167
- onExport: U
168
- }, null, 8, ["settings", "sequence-column-options", "label-column-options", "color-scheme-options"]),
169
- x.value ? (p(), S(r(P), {
170
- key: 0,
171
- type: "error"
172
- }, {
173
- default: b(() => [
174
- w(v(x.value), 1)
175
- ]),
176
- _: 1
177
- })) : !s.isLoading && !s.data ? (p(), S(r(P), {
178
- key: 1,
179
- type: "warn",
180
- icon: ""
181
- }, {
182
- default: b(() => n[0] || (n[0] = [
183
- w(" Please select at least one sequence column and two or more rows to run alignment ")
184
- ])),
185
- _: 1
186
- })) : (p(), A(N, { key: 2 }, [
187
- (a = s.data) != null && a.exceedsLimit ? (p(), S(r(P), {
188
- key: 0,
189
- type: "warn",
190
- icon: "",
191
- label: "Visualization is limited"
192
- }, {
193
- default: b(() => [
194
- w(" MSA visualization supports " + v(r(I)(2)) + " to " + v(r(I)(r(_))) + " sequences. Only the first " + v(r(I)(r(_))) + " will be displayed. ", 1)
195
- ]),
196
- _: 1
197
- })) : V("", !0),
198
- R(r(Z), {
199
- type: "transparent",
200
- class: Y(r(B).splash),
201
- loading: s.isLoading
202
- }, {
203
- default: b(() => [
204
- s.data ? (p(), S(ae, {
205
- key: 0,
206
- ref: "msa",
207
- sequences: s.data.sequences,
208
- labels: s.data.labels,
209
- "highlight-legend": s.data.highlightLegend,
210
- "phylogenetic-tree": s.data.phylogeneticTree,
211
- widgets: t.widgets
212
- }, null, 8, ["sequences", "labels", "highlight-legend", "phylogenetic-tree", "widgets"])) : V("", !0)
213
- ]),
214
- _: 1
215
- }, 8, ["class", "loading"])
216
- ], 64))
217
- ], 64);
218
- };
219
- }
220
- });
221
- export {
222
- ye as default
223
- };
224
- //# sourceMappingURL=PlMultiSequenceAlignment.vue2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlMultiSequenceAlignment.vue2.js","sources":["../../../src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { isJsonEqual } from '@milaboratories/helpers';\nimport {\n type ListOptionNormalized,\n PlAlert,\n PlSplash,\n} from '@milaboratories/uikit';\nimport {\n getRawPlatformaInstance,\n type PColumnPredicate,\n type PFrameHandle,\n type PlMultiSequenceAlignmentColorSchemeOption,\n type PlMultiSequenceAlignmentModel,\n type PlMultiSequenceAlignmentSettings,\n type PlSelectionModel,\n} from '@platforma-sdk/model';\nimport {\n computed,\n onBeforeMount,\n onUnmounted,\n reactive,\n useCssModule,\n useTemplateRef,\n watchEffect,\n} from 'vue';\nimport {\n SEQUENCE_LIMIT,\n useLabelColumnsOptions,\n useMarkupColumnsOptions,\n useMultipleAlignmentData,\n useSequenceColumnsOptions,\n} from './data';\nimport { runMigrations } from './migrations';\nimport MultiSequenceAlignmentView from './MultiSequenceAlignmentView.vue';\nimport { defaultSettings } from './settings';\nimport Toolbar from './Toolbar.vue';\n\nconst model = defineModel<PlMultiSequenceAlignmentModel>({ default: {} });\n\nonBeforeMount(() => {\n runMigrations(model);\n});\n\nconst settings = reactive<PlMultiSequenceAlignmentSettings>({\n ...defaultSettings,\n});\n\nconst props = defineProps<{\n /**\n * Handle to PFrame created using `createPFrameForGraphs`.\n * Should contain all desired sequence and label columns.\n */\n readonly pFrame: PFrameHandle | undefined;\n /**\n * Return true if column should be shown in sequence columns dropdown.\n * By default, all sequence columns are selected.\n */\n readonly sequenceColumnPredicate: PColumnPredicate;\n /**\n * Row selection model (from `PlAgDataTableV2` or `GraphMaker`).\n * If not provided or empty, all rows will be considered selected.\n * Warning: should be forwarded as a field of `reactive` object\n */\n readonly selection?: PlSelectionModel;\n}>();\n\nconst classes = useCssModule();\n\nconst sequenceColumns = reactive(useSequenceColumnsOptions(() => ({\n pFrame: props.pFrame,\n sequenceColumnPredicate: props.sequenceColumnPredicate,\n})));\n\nconst labelColumns = reactive(useLabelColumnsOptions(() => ({\n pFrame: props.pFrame,\n sequenceColumnIds: settings.sequenceColumnIds,\n})));\n\nconst markupColumns = reactive(useMarkupColumnsOptions(() => ({\n pFrame: props.pFrame,\n sequenceColumnIds: settings.sequenceColumnIds,\n})));\n\nconst multipleAlignmentData = reactive(useMultipleAlignmentData(() => ({\n pFrame: props.pFrame,\n sequenceColumnIds: settings.sequenceColumnIds,\n labelColumnIds: settings.labelColumnIds,\n selection: props.selection,\n colorScheme: settings.colorScheme,\n alignmentParams: settings.alignmentParams,\n shouldBuildPhylogeneticTree: settings.widgets.includes('tree'),\n})));\n\nconst formatNumber = new Intl.NumberFormat('en').format;\n\nconst colorSchemeOptions = computed<\n ListOptionNormalized<PlMultiSequenceAlignmentColorSchemeOption>[]\n>(\n () => [\n {\n label: 'Chemical Properties',\n value: { type: 'chemical-properties' },\n },\n {\n label: 'No Color',\n value: { type: 'no-color' },\n },\n ...(markupColumns.data ?? []).map(({ label, value }) => ({\n label,\n value: {\n type: 'markup' as const,\n columnIds: value,\n },\n })),\n ],\n);\n\nconst error = computed(() =>\n sequenceColumns.error\n ?? labelColumns.error\n ?? markupColumns.error\n ?? multipleAlignmentData.error,\n);\n\nfunction applySettings(\n settingsPatch: Partial<PlMultiSequenceAlignmentSettings>,\n) {\n model.value = Object.fromEntries(\n Object.entries({ ...model.value, ...settingsPatch })\n .filter(([_key, value]) => value !== undefined),\n );\n}\n\nwatchEffect(() => {\n const patch: Partial<PlMultiSequenceAlignmentSettings> = Object.fromEntries(\n Object.entries({\n ...defaultSettings,\n sequenceColumnIds: sequenceColumns.data?.defaults,\n labelColumnIds: labelColumns.data?.defaults,\n ...model.value,\n }).filter(([key, value]) =>\n !isJsonEqual(\n settings[key as keyof PlMultiSequenceAlignmentSettings],\n value,\n ),\n ),\n );\n Object.assign(settings, patch);\n});\n\n// Reset stale settings\nwatchEffect(() => {\n const settingsToReset: (keyof PlMultiSequenceAlignmentSettings)[] = [];\n if (\n !sequenceColumns.isLoading\n && settings.sequenceColumnIds?.some((id) =>\n (sequenceColumns.data?.options ?? []).every(\n ({ value }) => !isJsonEqual(value, id),\n ),\n )\n ) {\n settingsToReset.push('sequenceColumnIds');\n }\n if (\n !labelColumns.isLoading\n && settings.labelColumnIds?.some((id) =>\n (labelColumns.data?.options ?? []).every(\n ({ value }) => !isJsonEqual(value, id),\n ),\n )\n ) {\n settingsToReset.push('labelColumnIds');\n }\n\n const markupColumnIds = settings.colorScheme?.type === 'markup'\n ? settings.colorScheme.columnIds\n : undefined;\n\n if (\n !markupColumns.isLoading\n && markupColumnIds\n && (markupColumns.data ?? []).every(\n ({ value }) => !isJsonEqual(value, markupColumnIds),\n )\n ) {\n settingsToReset.push('colorScheme');\n }\n if (settingsToReset.length) {\n applySettings(Object.fromEntries(\n settingsToReset.map((key) => [key, undefined]),\n ));\n }\n});\n\nconst msaEl = useTemplateRef('msa');\n\nasync function exportPdf() {\n const exportToPdf = getRawPlatformaInstance()?.lsDriver\n ?.exportToPdf;\n if (!exportToPdf) {\n return console.error(\n 'API getPlatformaRawInstance().lsDriver.exportToPdf is not available',\n );\n }\n const msaRoot = msaEl.value?.rootEl;\n if (!msaRoot) {\n throw new Error('MSA element is not available.');\n }\n const printTarget = document.createElement('div');\n printTarget.id = `print-target-${crypto.randomUUID()}`;\n const printStyleSheet = new CSSStyleSheet();\n document.adoptedStyleSheets.push(printStyleSheet);\n printStyleSheet.insertRule(`\n@media screen {\n #${printTarget.id} {\n visibility: hidden;\n position: fixed;\n }\n}`);\n const msaClone = msaRoot.cloneNode(true) as HTMLElement;\n msaClone.dataset.prePrint = '';\n printTarget.replaceChildren(msaClone);\n document.body.appendChild(printTarget);\n const { height, width } = printTarget.getBoundingClientRect();\n const margin = CSS.cm(1);\n const pageSize = [width, height]\n .map((value) => CSS.px(value).add(margin.mul(2)))\n .join(' ');\n printStyleSheet.insertRule(`\n@media print {\n @page {\n size: ${pageSize};\n margin: ${margin};\n }\n body > :not(#${printTarget.id}) {\n display: none;\n }\n}`);\n try {\n await exportToPdf();\n } catch (error) {\n console.error(error);\n } finally {\n document.body.removeChild(printTarget);\n const index = document.adoptedStyleSheets.indexOf(printStyleSheet);\n if (index >= 0) {\n document.adoptedStyleSheets.splice(index, 1);\n }\n }\n}\n\nonUnmounted(() => {\n multipleAlignmentData.data = undefined;\n});\n</script>\n\n<template>\n <Toolbar\n :settings=\"settings\"\n :sequence-column-options=\"sequenceColumns.data?.options\"\n :label-column-options=\"labelColumns.data?.options\"\n :color-scheme-options=\"colorSchemeOptions\"\n @update-settings=\"applySettings\"\n @export=\"exportPdf\"\n />\n <PlAlert v-if=\"error\" type=\"error\">\n {{ error }}\n </PlAlert>\n <PlAlert\n v-else-if=\"!multipleAlignmentData.isLoading && !multipleAlignmentData.data\"\n type=\"warn\"\n icon\n >\n Please select at least one sequence column and two or more rows to run\n alignment\n </PlAlert>\n <template v-else>\n <PlAlert\n v-if=\"multipleAlignmentData.data?.exceedsLimit\"\n type=\"warn\"\n icon\n label=\"Visualization is limited\"\n >\n MSA visualization supports {{ formatNumber(2) }} to\n {{ formatNumber(SEQUENCE_LIMIT) }} sequences. Only the first\n {{ formatNumber(SEQUENCE_LIMIT) }} will be displayed.\n </PlAlert>\n <PlSplash\n type=\"transparent\"\n :class=\"classes.splash\"\n :loading=\"multipleAlignmentData.isLoading\"\n >\n <MultiSequenceAlignmentView\n v-if=\"multipleAlignmentData.data\"\n ref=\"msa\"\n :sequences=\"multipleAlignmentData.data.sequences\"\n :labels=\"multipleAlignmentData.data.labels\"\n :highlight-legend=\"multipleAlignmentData.data.highlightLegend\"\n :phylogenetic-tree=\"multipleAlignmentData.data.phylogeneticTree\"\n :widgets=\"settings.widgets\"\n />\n </PlSplash>\n </template>\n</template>\n\n<style module>\n.splash {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n overflow: hidden;\n}\n</style>\n"],"names":["model","_useModel","__props","onBeforeMount","runMigrations","settings","reactive","defaultSettings","props","classes","useCssModule","sequenceColumns","useSequenceColumnsOptions","labelColumns","useLabelColumnsOptions","markupColumns","useMarkupColumnsOptions","multipleAlignmentData","useMultipleAlignmentData","formatNumber","colorSchemeOptions","computed","label","value","error","applySettings","settingsPatch","_key","watchEffect","patch","_a","_b","key","isJsonEqual","settingsToReset","id","markupColumnIds","_c","msaEl","useTemplateRef","exportPdf","exportToPdf","getRawPlatformaInstance","msaRoot","printTarget","printStyleSheet","msaClone","height","width","margin","pageSize","index","onUnmounted"],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._splash_dk8xp_2{flex:1;display:flex;flex-direction:column;gap:12px;overflow:hidden}")),document.head.appendChild(e)}}catch(d){console.error("vite-plugin-css-injected-by-js",d)}})();
2
- const s = "_splash_dk8xp_2", a = {
3
- splash: s
4
- };
5
- export {
6
- a as default,
7
- s as splash
8
- };
9
- //# sourceMappingURL=PlMultiSequenceAlignment.vue3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlMultiSequenceAlignment.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,8 +0,0 @@
1
- import { ResidueCounts } from './types';
2
- type __VLS_Props = {
3
- residueCounts: ResidueCounts;
4
- };
5
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
6
- plotEl: HTMLDivElement;
7
- }, any>;
8
- export default _default;
@@ -1,10 +0,0 @@
1
- import o from "./SeqLogo.vue2.js";
2
- import s from "./SeqLogo.vue3.js";
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const e = {
5
- $style: s
6
- }, f = /* @__PURE__ */ t(o, [["__cssModules", e]]);
7
- export {
8
- f as default
9
- };
10
- //# sourceMappingURL=SeqLogo.vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SeqLogo.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,127 +0,0 @@
1
- import { defineComponent as C, useCssModule as w, useTemplateRef as E, computed as f, shallowRef as x, watchEffect as D, onBeforeUnmount as _, createBlock as K, createElementBlock as B, unref as l, openBlock as d, withCtx as A, createTextVNode as G, toDisplayString as S, normalizeClass as T } from "vue";
2
- import { PlAlert as L } from "@milaboratories/uikit";
3
- import { cellSize as N } from "./cell-size.js";
4
- import { useMiPlots as P } from "./useMiPlots.js";
5
- const R = /* @__PURE__ */ C({
6
- __name: "SeqLogo",
7
- props: {
8
- residueCounts: {}
9
- },
10
- setup(y) {
11
- const u = y, g = w(), n = E("plotEl"), e = {
12
- blue: "#549EE7",
13
- red: "#E85456",
14
- green: "#65BF65",
15
- magenta: "#9178E1",
16
- pink: "#D568D5",
17
- orange: "#C59445",
18
- cyan: "#62C7CC",
19
- yellow: "#D5D549",
20
- black: "#000000"
21
- }, h = {
22
- A: e.blue,
23
- R: e.red,
24
- N: e.green,
25
- D: e.magenta,
26
- C: e.pink,
27
- Q: e.green,
28
- E: e.magenta,
29
- G: e.orange,
30
- H: e.cyan,
31
- I: e.blue,
32
- L: e.blue,
33
- K: e.red,
34
- M: e.blue,
35
- F: e.blue,
36
- P: e.yellow,
37
- S: e.green,
38
- T: e.green,
39
- W: e.blue,
40
- Y: e.cyan,
41
- V: e.blue,
42
- B: e.black,
43
- X: e.black,
44
- Z: e.black
45
- }, r = f(() => ({
46
- type: "discrete",
47
- title: {
48
- name: "",
49
- show: !1
50
- },
51
- size: {
52
- width: u.residueCounts.length * N.inline,
53
- height: 80,
54
- innerOffset: 0,
55
- outerOffset: 0
56
- },
57
- frame: {
58
- type: "empty"
59
- },
60
- xAxis: {
61
- title: "",
62
- showGrid: !1,
63
- showTicks: !1,
64
- hiddenLabels: !0
65
- },
66
- yAxis: {
67
- title: "",
68
- showGrid: !1,
69
- showTicks: !1,
70
- hiddenLabels: !0
71
- },
72
- y: {
73
- type: "column",
74
- value: "countKey"
75
- },
76
- primaryGrouping: {
77
- columnName: {
78
- type: "column",
79
- value: "columnKey"
80
- }
81
- },
82
- secondaryGrouping: {
83
- columnName: {
84
- type: "column",
85
- value: "residueKey"
86
- }
87
- },
88
- layers: [{
89
- type: "logo",
90
- aes: { fillColor: h }
91
- }]
92
- })), a = f(() => {
93
- const t = [], s = [], m = [];
94
- for (const [v, b] of u.residueCounts.entries())
95
- for (const [p, k] of Object.entries(b))
96
- p !== "-" && (t.push(k), s.push(v), m.push(p));
97
- return {
98
- type: "columns",
99
- id: `seq-logo-${crypto.randomUUID()}`,
100
- values: { countKey: t, columnKey: s, residueKey: m }
101
- };
102
- }), { miplots: c, error: i } = P(), o = x();
103
- return D(async () => {
104
- !n.value || !c.value || (o.value ? o.value.updateSettingsAndData(a.value, r.value) : (o.value = c.value.newPlot(a.value, r.value), o.value.mount(n.value)));
105
- }), _(() => {
106
- var t;
107
- (t = o.value) == null || t.unmount();
108
- }), (t, s) => l(i) ? (d(), K(l(L), {
109
- key: 0,
110
- type: "error"
111
- }, {
112
- default: A(() => [
113
- G(S(l(i).message), 1)
114
- ]),
115
- _: 1
116
- })) : (d(), B("div", {
117
- key: 1,
118
- ref_key: "plotEl",
119
- ref: n,
120
- class: T(l(g).container)
121
- }, null, 2));
122
- }
123
- });
124
- export {
125
- R as default
126
- };
127
- //# sourceMappingURL=SeqLogo.vue2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SeqLogo.vue2.js","sources":["../../../src/components/PlMultiSequenceAlignment/SeqLogo.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type {\n ChartInterface,\n DataByColumns,\n Settings,\n} from '@milaboratories/miplots4';\nimport { PlAlert } from '@milaboratories/uikit';\nimport {\n computed,\n onBeforeUnmount,\n shallowRef,\n useCssModule,\n useTemplateRef,\n watchEffect,\n} from 'vue';\nimport { cellSize } from './cell-size';\nimport type { ResidueCounts } from './types';\nimport { useMiPlots } from './useMiPlots';\n\nconst props = defineProps<{\n residueCounts: ResidueCounts;\n}>();\n\nconst classes = useCssModule();\n\nconst plotEl = useTemplateRef('plotEl');\n\nconst palette = {\n blue: '#549EE7',\n red: '#E85456',\n green: '#65BF65',\n magenta: '#9178E1',\n pink: '#D568D5',\n orange: '#C59445',\n cyan: '#62C7CC',\n yellow: '#D5D549',\n black: '#000000',\n};\n\nconst residueColors = {\n A: palette.blue,\n R: palette.red,\n N: palette.green,\n D: palette.magenta,\n C: palette.pink,\n Q: palette.green,\n E: palette.magenta,\n G: palette.orange,\n H: palette.cyan,\n I: palette.blue,\n L: palette.blue,\n K: palette.red,\n M: palette.blue,\n F: palette.blue,\n P: palette.yellow,\n S: palette.green,\n T: palette.green,\n W: palette.blue,\n Y: palette.cyan,\n V: palette.blue,\n B: palette.black,\n X: palette.black,\n Z: palette.black,\n};\n\nconst settings = computed(() => ({\n type: 'discrete',\n title: {\n name: '',\n show: false,\n },\n size: {\n width: props.residueCounts.length * cellSize.inline,\n height: 80,\n innerOffset: 0,\n outerOffset: 0,\n },\n frame: {\n type: 'empty',\n },\n xAxis: {\n title: '',\n showGrid: false,\n showTicks: false,\n hiddenLabels: true,\n },\n yAxis: {\n title: '',\n showGrid: false,\n showTicks: false,\n hiddenLabels: true,\n },\n y: {\n type: 'column',\n value: 'countKey',\n },\n primaryGrouping: {\n columnName: {\n type: 'column',\n value: 'columnKey',\n },\n },\n secondaryGrouping: {\n columnName: {\n type: 'column',\n value: 'residueKey',\n },\n },\n layers: [{\n type: 'logo',\n aes: { fillColor: residueColors },\n }],\n} satisfies Settings));\n\nconst data = computed<DataByColumns>(() => {\n const countKey: number[] = [];\n const columnKey: number[] = [];\n const residueKey: string[] = [];\n for (const [columnIndex, column] of props.residueCounts.entries()) {\n for (const [residue, count] of Object.entries(column)) {\n if (residue === '-') continue;\n countKey.push(count);\n columnKey.push(columnIndex);\n residueKey.push(residue);\n }\n }\n return ({\n type: 'columns',\n id: `seq-logo-${crypto.randomUUID()}`,\n values: { countKey, columnKey, residueKey },\n });\n});\n\nconst { miplots, error } = useMiPlots();\n\nconst plot = shallowRef<ChartInterface>();\n\nwatchEffect(async () => {\n if (!plotEl.value || !miplots.value) return;\n if (!plot.value) {\n plot.value = miplots.value.newPlot(data.value, settings.value);\n plot.value.mount(plotEl.value);\n } else {\n plot.value.updateSettingsAndData(data.value, settings.value);\n }\n});\n\nonBeforeUnmount(() => {\n plot.value?.unmount();\n});\n</script>\n\n<template>\n <PlAlert v-if=\"error\" type=\"error\">\n {{ error.message }}\n </PlAlert>\n <div v-else ref=\"plotEl\" :class=\"classes.container\" />\n</template>\n\n<style module>\n.container {\n svg {\n display: block;\n }\n}\n</style>\n"],"names":["props","__props","classes","useCssModule","plotEl","useTemplateRef","palette","residueColors","settings","computed","cellSize","data","countKey","columnKey","residueKey","columnIndex","column","residue","count","miplots","error","useMiPlots","plot","shallowRef","watchEffect","onBeforeUnmount","_a"],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_1uo2b_2 svg{display:block}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- const n = "_container_1uo2b_2", t = {
3
- container: n
4
- };
5
- export {
6
- n as container,
7
- t as default
8
- };
9
- //# sourceMappingURL=SeqLogo.vue3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SeqLogo.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,16 +0,0 @@
1
- import { ListOptionNormalized } from '@milaboratories/uikit';
2
- import { PlMultiSequenceAlignmentColorSchemeOption as ColorSchemeOption, PlMultiSequenceAlignmentSettings as Settings, PObjectId, PTableColumnId } from '@platforma-sdk/model';
3
- type __VLS_Props = {
4
- settings: Settings;
5
- sequenceColumnOptions: ListOptionNormalized<PObjectId>[] | undefined;
6
- labelColumnOptions: ListOptionNormalized<PTableColumnId>[] | undefined;
7
- colorSchemeOptions: ListOptionNormalized<ColorSchemeOption>[];
8
- };
9
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
10
- export: () => any;
11
- updateSettings: (args_0: Partial<Settings>) => any;
12
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
13
- onExport?: (() => any) | undefined;
14
- onUpdateSettings?: ((args_0: Partial<Settings>) => any) | undefined;
15
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
16
- export default _default;
@@ -1,10 +0,0 @@
1
- import o from "./Toolbar.vue2.js";
2
- import s from "./Toolbar.vue3.js";
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const r = {
5
- $style: s
6
- }, f = /* @__PURE__ */ t(o, [["__cssModules", r]]);
7
- export {
8
- f as default
9
- };
10
- //# sourceMappingURL=Toolbar.vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Toolbar.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}