@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.
- package/.turbo/turbo-build.log +203 -234
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +6 -0
- package/dist/AgGridVue/useAgGridOptions.js +2 -3
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -8
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +9 -10
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +2 -3
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/index.js +48 -50
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +0 -1
- package/package.json +4 -5
- package/src/lib.ts +0 -2
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js +0 -6
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js.map +0 -1
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js +0 -5
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.d.ts +0 -9
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js +0 -122
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.d.ts +0 -6
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js +0 -28
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js +0 -13
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts +0 -25
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js +0 -138
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js +0 -31
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.d.ts +0 -8
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js +0 -77
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts +0 -71
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js +0 -224
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.d.ts +0 -8
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js +0 -127
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.d.ts +0 -16
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js +0 -228
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js +0 -19
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/cell-size.d.ts +0 -4
- package/dist/components/PlMultiSequenceAlignment/cell-size.js +0 -8
- package/dist/components/PlMultiSequenceAlignment/cell-size.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.d.ts +0 -44
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.js +0 -132
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/data.d.ts +0 -61
- package/dist/components/PlMultiSequenceAlignment/data.js +0 -370
- package/dist/components/PlMultiSequenceAlignment/data.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/index.d.ts +0 -1
- package/dist/components/PlMultiSequenceAlignment/markup.d.ts +0 -16
- package/dist/components/PlMultiSequenceAlignment/markup.js +0 -84
- package/dist/components/PlMultiSequenceAlignment/markup.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/migrations.d.ts +0 -3
- package/dist/components/PlMultiSequenceAlignment/migrations.js +0 -24
- package/dist/components/PlMultiSequenceAlignment/migrations.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.d.ts +0 -6
- package/dist/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.d.ts +0 -7
- package/dist/components/PlMultiSequenceAlignment/residue-counts.d.ts +0 -2
- package/dist/components/PlMultiSequenceAlignment/residue-counts.js +0 -13
- package/dist/components/PlMultiSequenceAlignment/residue-counts.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/settings.d.ts +0 -2
- package/dist/components/PlMultiSequenceAlignment/settings.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/settings.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/types.d.ts +0 -5
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.d.ts +0 -4
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.js +0 -19
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.js.map +0 -1
- package/src/components/PlMultiSequenceAlignment/Consensus.vue +0 -165
- package/src/components/PlMultiSequenceAlignment/Legend.vue +0 -44
- package/src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue +0 -299
- package/src/components/PlMultiSequenceAlignment/PhylogeneticTree.vue +0 -110
- package/src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue +0 -314
- package/src/components/PlMultiSequenceAlignment/README.md +0 -216
- package/src/components/PlMultiSequenceAlignment/SeqLogo.vue +0 -166
- package/src/components/PlMultiSequenceAlignment/Toolbar.vue +0 -228
- package/src/components/PlMultiSequenceAlignment/cell-size.ts +0 -4
- package/src/components/PlMultiSequenceAlignment/chemical-properties.ts +0 -199
- package/src/components/PlMultiSequenceAlignment/data.ts +0 -661
- package/src/components/PlMultiSequenceAlignment/index.ts +0 -1
- package/src/components/PlMultiSequenceAlignment/markup.ts +0 -141
- package/src/components/PlMultiSequenceAlignment/migrations.ts +0 -46
- package/src/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.ts +0 -54
- package/src/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.ts +0 -89
- package/src/components/PlMultiSequenceAlignment/residue-counts.ts +0 -124
- package/src/components/PlMultiSequenceAlignment/settings.ts +0 -7
- package/src/components/PlMultiSequenceAlignment/types.ts +0 -3
- 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":";;;;;;"}
|