@platforma-sdk/ui-vue 1.42.53 → 1.43.0
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 +213 -207
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +14 -0
- package/dist/AgGridVue/useAgGridOptions.js +2 -3
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js +6 -0
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js.map +1 -0
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js +5 -0
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +2 -3
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +11 -12
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +8 -9
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.d.ts +1 -0
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js +48 -46
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js +5 -7
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js +14 -13
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js +9 -8
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts +16 -9
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js +117 -85
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js +25 -18
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.d.ts +8 -0
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js +10 -0
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js.map +1 -0
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js +77 -0
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js.map +1 -0
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js +9 -0
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js.map +1 -0
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts +26 -18
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js +119 -120
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js +7 -124
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js +124 -2
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js +9 -0
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js.map +1 -0
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js +90 -90
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js +9 -7
- package/dist/components/PlMultiSequenceAlignment/cell-size.d.ts +4 -0
- package/dist/components/PlMultiSequenceAlignment/cell-size.js +8 -0
- package/dist/components/PlMultiSequenceAlignment/cell-size.js.map +1 -0
- package/dist/components/PlMultiSequenceAlignment/data.d.ts +15 -10
- package/dist/components/PlMultiSequenceAlignment/data.js +309 -202
- package/dist/components/PlMultiSequenceAlignment/data.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/markup.js +9 -7
- package/dist/components/PlMultiSequenceAlignment/markup.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/migrations.js +15 -13
- package/dist/components/PlMultiSequenceAlignment/migrations.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.d.ts +6 -0
- package/dist/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.d.ts +7 -0
- package/dist/components/PlMultiSequenceAlignment/settings.js +3 -4
- package/dist/components/PlMultiSequenceAlignment/settings.js.map +1 -1
- package/dist/index.js +25 -27
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +1 -2
- package/package.json +6 -6
- package/src/components/PlMultiSequenceAlignment/Consensus.vue +38 -39
- package/src/components/PlMultiSequenceAlignment/Legend.vue +9 -9
- package/src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue +222 -126
- package/src/components/PlMultiSequenceAlignment/PhylogeneticTree.vue +110 -0
- package/src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue +28 -22
- package/src/components/PlMultiSequenceAlignment/SeqLogo.vue +77 -69
- package/src/components/PlMultiSequenceAlignment/Toolbar.vue +47 -39
- package/src/components/PlMultiSequenceAlignment/cell-size.ts +4 -0
- package/src/components/PlMultiSequenceAlignment/data.ts +361 -149
- package/src/components/PlMultiSequenceAlignment/markup.ts +10 -8
- package/src/components/PlMultiSequenceAlignment/migrations.ts +6 -1
- package/src/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.ts +54 -0
- package/src/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.ts +89 -0
- package/src/components/PlMultiSequenceAlignment/settings.ts +1 -2
- package/src/lib.ts +1 -3
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.d.ts +0 -7
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.js +0 -51
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.js.map +0 -1
- package/src/components/PlMultiSequenceAlignment/multi-sequence-alignment.ts +0 -101
|
@@ -1,5 +1,127 @@
|
|
|
1
|
-
import f from "
|
|
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
|
+
});
|
|
2
124
|
export {
|
|
3
|
-
|
|
125
|
+
R as default
|
|
4
126
|
};
|
|
5
127
|
//# sourceMappingURL=SeqLogo.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeqLogo.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
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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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeqLogo.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { isJsonEqual as
|
|
1
|
+
import { defineComponent as I, useCssModule as K, ref as S, watchEffect as L, computed as x, createElementBlock as w, openBlock as P, Fragment as M, createElementVNode as r, createVNode as o, normalizeClass as m, unref as t, withModifiers as k, withCtx as s, createTextVNode as a, createCommentVNode as U, createBlock as T, withKeys as C } from "vue";
|
|
2
|
+
import { isJsonEqual as q } from "../../lib/util/helpers/dist/objects.js";
|
|
3
3
|
import "../../lib/util/helpers/dist/test_timeouts.js";
|
|
4
|
-
import { PlDropdownMulti as
|
|
5
|
-
import {
|
|
6
|
-
const
|
|
4
|
+
import { PlDropdownMulti as $, PlDropdown as D, PlBtnGhost as V, PlCheckbox as g, PlSlideModal as G, PlNumberField as b, PlBtnPrimary as A, PlBtnSecondary as F } from "@milaboratories/uikit";
|
|
5
|
+
import { defaultSettings as R } from "./settings.js";
|
|
6
|
+
const Q = /* @__PURE__ */ I({
|
|
7
7
|
__name: "Toolbar",
|
|
8
8
|
props: {
|
|
9
9
|
settings: {},
|
|
@@ -12,74 +12,74 @@ const j = /* @__PURE__ */ E({
|
|
|
12
12
|
colorSchemeOptions: {}
|
|
13
13
|
},
|
|
14
14
|
emits: ["updateSettings", "export"],
|
|
15
|
-
setup(
|
|
16
|
-
const O =
|
|
17
|
-
function d(
|
|
18
|
-
|
|
15
|
+
setup(B, { emit: O }) {
|
|
16
|
+
const n = B, y = O, u = K(), f = S(!1);
|
|
17
|
+
function d(p, e) {
|
|
18
|
+
y("updateSettings", { [p]: e });
|
|
19
19
|
}
|
|
20
|
-
function v(
|
|
20
|
+
function v(p, e) {
|
|
21
21
|
d(
|
|
22
22
|
"widgets",
|
|
23
|
-
e ? [...
|
|
23
|
+
e ? [...n.settings.widgets, p] : n.settings.widgets.filter((l) => p !== l)
|
|
24
24
|
);
|
|
25
25
|
}
|
|
26
|
-
const i =
|
|
27
|
-
|
|
28
|
-
i.value = { ...
|
|
26
|
+
const i = S({ ...n.settings.alignmentParams });
|
|
27
|
+
L(() => {
|
|
28
|
+
i.value = { ...n.settings.alignmentParams };
|
|
29
29
|
});
|
|
30
|
-
const
|
|
31
|
-
() => !
|
|
32
|
-
),
|
|
33
|
-
() => !
|
|
30
|
+
const N = x(
|
|
31
|
+
() => !q(n.settings.alignmentParams, i.value)
|
|
32
|
+
), E = x(
|
|
33
|
+
() => !q(n.settings.alignmentParams, R.alignmentParams)
|
|
34
34
|
);
|
|
35
|
-
return (
|
|
35
|
+
return (p, e) => (P(), w(M, null, [
|
|
36
36
|
r("div", {
|
|
37
|
-
class:
|
|
37
|
+
class: m(t(u).container)
|
|
38
38
|
}, [
|
|
39
39
|
r("div", {
|
|
40
|
-
class:
|
|
40
|
+
class: m(t(u).line)
|
|
41
41
|
}, [
|
|
42
42
|
r("div", {
|
|
43
|
-
class:
|
|
43
|
+
class: m(t(u).section)
|
|
44
44
|
}, [
|
|
45
|
-
o(
|
|
45
|
+
o(t($), {
|
|
46
46
|
label: "Sequence Columns",
|
|
47
|
-
"model-value":
|
|
48
|
-
options:
|
|
47
|
+
"model-value": n.settings.sequenceColumnIds ?? [],
|
|
48
|
+
options: n.sequenceColumnOptions,
|
|
49
49
|
clearable: "",
|
|
50
50
|
"onUpdate:modelValue": e[0] || (e[0] = (l) => d("sequenceColumnIds", l))
|
|
51
51
|
}, null, 8, ["model-value", "options"]),
|
|
52
|
-
o(
|
|
53
|
-
"model-value":
|
|
52
|
+
o(t($), {
|
|
53
|
+
"model-value": n.settings.labelColumnIds ?? [],
|
|
54
54
|
label: "Label Columns",
|
|
55
|
-
options:
|
|
55
|
+
options: n.labelColumnOptions,
|
|
56
56
|
clearable: "",
|
|
57
57
|
"onUpdate:modelValue": e[1] || (e[1] = (l) => d("labelColumnIds", l))
|
|
58
58
|
}, null, 8, ["model-value", "options"]),
|
|
59
|
-
o(
|
|
60
|
-
"model-value":
|
|
59
|
+
o(t(D), {
|
|
60
|
+
"model-value": n.settings.colorScheme,
|
|
61
61
|
label: "Color Scheme",
|
|
62
|
-
options:
|
|
62
|
+
options: n.colorSchemeOptions,
|
|
63
63
|
"onUpdate:modelValue": e[2] || (e[2] = (l) => d("colorScheme", l))
|
|
64
64
|
}, null, 8, ["model-value", "options"])
|
|
65
65
|
], 2),
|
|
66
66
|
r("div", {
|
|
67
|
-
class:
|
|
67
|
+
class: m(t(u).buttons)
|
|
68
68
|
}, [
|
|
69
|
-
o(
|
|
69
|
+
o(t(V), {
|
|
70
70
|
icon: "settings",
|
|
71
|
-
onClick: e[3] || (e[3] =
|
|
71
|
+
onClick: e[3] || (e[3] = k((l) => f.value = !0, ["stop"]))
|
|
72
72
|
}, {
|
|
73
|
-
default: s(() => e[
|
|
73
|
+
default: s(() => e[19] || (e[19] = [
|
|
74
74
|
a(" Settings ")
|
|
75
75
|
])),
|
|
76
76
|
_: 1
|
|
77
77
|
}),
|
|
78
|
-
o(
|
|
78
|
+
o(t(V), {
|
|
79
79
|
icon: "export",
|
|
80
|
-
onClick: e[4] || (e[4] =
|
|
80
|
+
onClick: e[4] || (e[4] = k((l) => y("export"), ["stop"]))
|
|
81
81
|
}, {
|
|
82
|
-
default: s(() => e[
|
|
82
|
+
default: s(() => e[20] || (e[20] = [
|
|
83
83
|
a(" Export ")
|
|
84
84
|
])),
|
|
85
85
|
_: 1
|
|
@@ -87,53 +87,53 @@ const j = /* @__PURE__ */ E({
|
|
|
87
87
|
], 2)
|
|
88
88
|
], 2),
|
|
89
89
|
r("div", {
|
|
90
|
-
class:
|
|
90
|
+
class: m(t(u).line)
|
|
91
91
|
}, [
|
|
92
92
|
r("div", {
|
|
93
|
-
class:
|
|
93
|
+
class: m(t(u).section)
|
|
94
94
|
}, [
|
|
95
|
-
o(
|
|
96
|
-
"model-value":
|
|
95
|
+
o(t(g), {
|
|
96
|
+
"model-value": n.settings.widgets.includes("seqLogo"),
|
|
97
97
|
"onUpdate:modelValue": e[5] || (e[5] = (l) => v("seqLogo", l))
|
|
98
98
|
}, {
|
|
99
|
-
default: s(() => e[
|
|
99
|
+
default: s(() => e[21] || (e[21] = [
|
|
100
100
|
a(" Seq logo ")
|
|
101
101
|
])),
|
|
102
102
|
_: 1
|
|
103
103
|
}, 8, ["model-value"]),
|
|
104
|
-
o(
|
|
105
|
-
"model-value":
|
|
104
|
+
o(t(g), {
|
|
105
|
+
"model-value": n.settings.widgets.includes("consensus"),
|
|
106
106
|
"onUpdate:modelValue": e[6] || (e[6] = (l) => v("consensus", l))
|
|
107
107
|
}, {
|
|
108
|
-
default: s(() => e[
|
|
108
|
+
default: s(() => e[22] || (e[22] = [
|
|
109
109
|
a(" Consensus ")
|
|
110
110
|
])),
|
|
111
111
|
_: 1
|
|
112
112
|
}, 8, ["model-value"]),
|
|
113
|
-
o(
|
|
113
|
+
o(t(g), {
|
|
114
114
|
"model-value": !1,
|
|
115
115
|
disabled: ""
|
|
116
116
|
}, {
|
|
117
|
-
default: s(() => e[
|
|
117
|
+
default: s(() => e[23] || (e[23] = [
|
|
118
118
|
a("Navigator")
|
|
119
119
|
])),
|
|
120
120
|
_: 1
|
|
121
121
|
}),
|
|
122
|
-
o(
|
|
123
|
-
"model-value":
|
|
124
|
-
|
|
122
|
+
o(t(g), {
|
|
123
|
+
"model-value": n.settings.widgets.includes("tree"),
|
|
124
|
+
"onUpdate:modelValue": e[7] || (e[7] = (l) => v("tree", l))
|
|
125
125
|
}, {
|
|
126
|
-
default: s(() => e[
|
|
127
|
-
a("Tree")
|
|
126
|
+
default: s(() => e[24] || (e[24] = [
|
|
127
|
+
a(" Tree ")
|
|
128
128
|
])),
|
|
129
129
|
_: 1
|
|
130
|
-
}),
|
|
131
|
-
o(
|
|
132
|
-
"model-value":
|
|
133
|
-
disabled:
|
|
134
|
-
"onUpdate:modelValue": e[
|
|
130
|
+
}, 8, ["model-value"]),
|
|
131
|
+
o(t(g), {
|
|
132
|
+
"model-value": n.settings.widgets.includes("legend"),
|
|
133
|
+
disabled: n.settings.colorScheme.type === "no-color",
|
|
134
|
+
"onUpdate:modelValue": e[8] || (e[8] = (l) => v("legend", l))
|
|
135
135
|
}, {
|
|
136
|
-
default: s(() => e[
|
|
136
|
+
default: s(() => e[25] || (e[25] = [
|
|
137
137
|
a(" Legend ")
|
|
138
138
|
])),
|
|
139
139
|
_: 1
|
|
@@ -141,82 +141,82 @@ const j = /* @__PURE__ */ E({
|
|
|
141
141
|
], 2)
|
|
142
142
|
], 2)
|
|
143
143
|
], 2),
|
|
144
|
-
o(
|
|
145
|
-
modelValue:
|
|
146
|
-
"onUpdate:modelValue": e[
|
|
144
|
+
o(t(G), {
|
|
145
|
+
modelValue: f.value,
|
|
146
|
+
"onUpdate:modelValue": e[18] || (e[18] = (l) => f.value = l)
|
|
147
147
|
}, {
|
|
148
|
-
title: s(() => e[
|
|
148
|
+
title: s(() => e[26] || (e[26] = [
|
|
149
149
|
a("Settings")
|
|
150
150
|
])),
|
|
151
151
|
default: s(() => [
|
|
152
|
-
o(
|
|
152
|
+
o(t(b), {
|
|
153
153
|
modelValue: i.value.gpo,
|
|
154
|
-
"onUpdate:modelValue": e[
|
|
154
|
+
"onUpdate:modelValue": e[9] || (e[9] = (l) => i.value.gpo = l),
|
|
155
155
|
label: "Gap open penalty",
|
|
156
156
|
step: 0.1,
|
|
157
|
-
onKeyup: e[
|
|
157
|
+
onKeyup: e[10] || (e[10] = C((l) => d("alignmentParams", i.value), ["enter"]))
|
|
158
158
|
}, {
|
|
159
|
-
tooltip: s(() => e[
|
|
159
|
+
tooltip: s(() => e[27] || (e[27] = [
|
|
160
160
|
a(" Penalty score assigned to the introduction of a gap in the alignment ")
|
|
161
161
|
])),
|
|
162
162
|
_: 1
|
|
163
163
|
}, 8, ["modelValue"]),
|
|
164
|
-
o(
|
|
164
|
+
o(t(b), {
|
|
165
165
|
modelValue: i.value.gpe,
|
|
166
|
-
"onUpdate:modelValue": e[
|
|
166
|
+
"onUpdate:modelValue": e[11] || (e[11] = (l) => i.value.gpe = l),
|
|
167
167
|
label: "Gap extension penalty",
|
|
168
168
|
step: 0.1,
|
|
169
|
-
onKeyup: e[
|
|
169
|
+
onKeyup: e[12] || (e[12] = C((l) => d("alignmentParams", i.value), ["enter"]))
|
|
170
170
|
}, {
|
|
171
|
-
tooltip: s(() => e[
|
|
171
|
+
tooltip: s(() => e[28] || (e[28] = [
|
|
172
172
|
a(" Penalty score assigned to each additional residue added to an existing gap ")
|
|
173
173
|
])),
|
|
174
174
|
_: 1
|
|
175
175
|
}, 8, ["modelValue"]),
|
|
176
|
-
o(
|
|
176
|
+
o(t(b), {
|
|
177
177
|
modelValue: i.value.tgpe,
|
|
178
|
-
"onUpdate:modelValue": e[
|
|
178
|
+
"onUpdate:modelValue": e[13] || (e[13] = (l) => i.value.tgpe = l),
|
|
179
179
|
label: "Terminal gap extension penalty",
|
|
180
180
|
step: 0.1,
|
|
181
|
-
onKeyup: e[
|
|
181
|
+
onKeyup: e[14] || (e[14] = C((l) => d("alignmentParams", i.value), ["enter"]))
|
|
182
182
|
}, {
|
|
183
|
-
tooltip: s(() => e[
|
|
183
|
+
tooltip: s(() => e[29] || (e[29] = [
|
|
184
184
|
a(" Penalty score assigned to extending gaps at the ends of sequences ")
|
|
185
185
|
])),
|
|
186
186
|
_: 1
|
|
187
187
|
}, 8, ["modelValue"]),
|
|
188
|
-
|
|
188
|
+
N.value ? (P(), w("div", {
|
|
189
189
|
key: 0,
|
|
190
|
-
class:
|
|
190
|
+
class: m(t(u).pendingChanges)
|
|
191
191
|
}, [
|
|
192
|
-
o(
|
|
193
|
-
onClick: e[
|
|
192
|
+
o(t(A), {
|
|
193
|
+
onClick: e[15] || (e[15] = (l) => d("alignmentParams", i.value))
|
|
194
194
|
}, {
|
|
195
|
-
default: s(() => e[
|
|
195
|
+
default: s(() => e[30] || (e[30] = [
|
|
196
196
|
a(" Apply ")
|
|
197
197
|
])),
|
|
198
198
|
_: 1
|
|
199
199
|
}),
|
|
200
|
-
o(
|
|
201
|
-
onClick: e[
|
|
200
|
+
o(t(V), {
|
|
201
|
+
onClick: e[16] || (e[16] = (l) => i.value = n.settings.alignmentParams)
|
|
202
202
|
}, {
|
|
203
|
-
default: s(() => e[
|
|
203
|
+
default: s(() => e[31] || (e[31] = [
|
|
204
204
|
a(" Cancel ")
|
|
205
205
|
])),
|
|
206
206
|
_: 1
|
|
207
207
|
})
|
|
208
|
-
], 2)) :
|
|
209
|
-
|
|
208
|
+
], 2)) : U("", !0),
|
|
209
|
+
E.value ? (P(), T(t(F), {
|
|
210
210
|
key: 1,
|
|
211
|
-
class:
|
|
211
|
+
class: m(t(u).resetButton),
|
|
212
212
|
icon: "reverse",
|
|
213
|
-
onClick: e[
|
|
213
|
+
onClick: e[17] || (e[17] = (l) => d("alignmentParams", void 0))
|
|
214
214
|
}, {
|
|
215
|
-
default: s(() => e[
|
|
215
|
+
default: s(() => e[32] || (e[32] = [
|
|
216
216
|
a(" Reset to Default ")
|
|
217
217
|
])),
|
|
218
218
|
_: 1
|
|
219
|
-
}, 8, ["class"])) :
|
|
219
|
+
}, 8, ["class"])) : U("", !0)
|
|
220
220
|
]),
|
|
221
221
|
_: 1
|
|
222
222
|
}, 8, ["modelValue"])
|
|
@@ -224,6 +224,6 @@ const j = /* @__PURE__ */ E({
|
|
|
224
224
|
}
|
|
225
225
|
});
|
|
226
226
|
export {
|
|
227
|
-
|
|
227
|
+
Q as default
|
|
228
228
|
};
|
|
229
229
|
//# sourceMappingURL=Toolbar.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.vue2.js","sources":["../../../src/components/PlMultiSequenceAlignment/Toolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { isJsonEqual } from '@milaboratories/helpers';\nimport {\n type ListOptionNormalized,\n PlBtnGhost,\n PlBtnPrimary,\n PlBtnSecondary,\n PlCheckbox,\n PlDropdown,\n PlDropdownMulti,\n PlNumberField,\n PlSlideModal,\n} from '@milaboratories/uikit';\nimport type {\n PlMultiSequenceAlignmentColorSchemeOption as ColorSchemeOption,\n PlMultiSequenceAlignmentSettings as Settings,\n PObjectId,\n PTableColumnId,\n} from '@platforma-sdk/model';\nimport { computed, ref, watchEffect } from 'vue';\nimport {
|
|
1
|
+
{"version":3,"file":"Toolbar.vue2.js","sources":["../../../src/components/PlMultiSequenceAlignment/Toolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { isJsonEqual } from '@milaboratories/helpers';\nimport {\n type ListOptionNormalized,\n PlBtnGhost,\n PlBtnPrimary,\n PlBtnSecondary,\n PlCheckbox,\n PlDropdown,\n PlDropdownMulti,\n PlNumberField,\n PlSlideModal,\n} from '@milaboratories/uikit';\nimport type {\n PlMultiSequenceAlignmentColorSchemeOption as ColorSchemeOption,\n PlMultiSequenceAlignmentSettings as Settings,\n PlMultiSequenceAlignmentWidget,\n PObjectId,\n PTableColumnId,\n} from '@platforma-sdk/model';\nimport { computed, ref, useCssModule, watchEffect } from 'vue';\nimport { defaultSettings } from './settings';\n\nconst props = defineProps<{\n settings: Settings;\n sequenceColumnOptions: ListOptionNormalized<PObjectId>[] | undefined;\n labelColumnOptions: ListOptionNormalized<PTableColumnId>[] | undefined;\n colorSchemeOptions: ListOptionNormalized<ColorSchemeOption>[];\n}>();\n\nconst emit = defineEmits<{\n updateSettings: [Partial<Settings>];\n export: [];\n}>();\n\nconst classes = useCssModule();\n\nconst settingsOpen = ref(false);\n\nfunction updateSetting<K extends keyof Settings>(\n key: K,\n value: Settings[K] | undefined,\n) {\n emit('updateSettings', { [key]: value });\n}\n\nfunction toggleWidget(\n widget: PlMultiSequenceAlignmentWidget,\n checked: boolean,\n) {\n updateSetting(\n 'widgets',\n checked\n ? [...props.settings.widgets, widget]\n : props.settings.widgets.filter((w) => widget !== w),\n );\n}\n\nconst alignmentParams = ref({ ...props.settings.alignmentParams });\nwatchEffect(() => {\n alignmentParams.value = { ...props.settings.alignmentParams };\n});\n\nconst alignmentParamsChangesPending = computed(() =>\n !isJsonEqual(props.settings.alignmentParams, alignmentParams.value),\n);\n\nconst canResetAlignmentParams = computed(() =>\n !isJsonEqual(props.settings.alignmentParams, defaultSettings.alignmentParams),\n);\n</script>\n\n<template>\n <div :class=\"classes.container\">\n <div :class=\"classes.line\">\n <div :class=\"classes.section\">\n <PlDropdownMulti\n label=\"Sequence Columns\"\n :model-value=\"props.settings.sequenceColumnIds ?? []\"\n :options=\"props.sequenceColumnOptions\"\n clearable\n @update:model-value=\"event => updateSetting('sequenceColumnIds', event)\"\n />\n <PlDropdownMulti\n :model-value=\"props.settings.labelColumnIds ?? []\"\n label=\"Label Columns\"\n :options=\"props.labelColumnOptions\"\n clearable\n @update:model-value=\"event => updateSetting('labelColumnIds', event)\"\n />\n <PlDropdown\n :model-value=\"props.settings.colorScheme\"\n label=\"Color Scheme\"\n :options=\"props.colorSchemeOptions\"\n @update:model-value=\"event => updateSetting('colorScheme', event)\"\n />\n </div>\n <div :class=\"classes.buttons\">\n <PlBtnGhost icon=\"settings\" @click.stop=\"settingsOpen = true\">\n Settings\n </PlBtnGhost>\n <PlBtnGhost icon=\"export\" @click.stop=\"emit('export')\">\n Export\n </PlBtnGhost>\n </div>\n </div>\n <div :class=\"classes.line\">\n <div :class=\"classes.section\">\n <PlCheckbox\n :model-value=\"props.settings.widgets.includes('seqLogo')\"\n @update:model-value=\"event => toggleWidget('seqLogo', event)\"\n >\n Seq logo\n </PlCheckbox>\n <PlCheckbox\n :model-value=\"props.settings.widgets.includes('consensus')\"\n @update:model-value=\"event => toggleWidget('consensus', event)\"\n >\n Consensus\n </PlCheckbox>\n <PlCheckbox :model-value=\"false\" disabled>Navigator</PlCheckbox>\n <PlCheckbox\n :model-value=\"props.settings.widgets.includes('tree')\"\n @update:model-value=\"event => toggleWidget('tree', event)\"\n >\n Tree\n </PlCheckbox>\n <PlCheckbox\n :model-value=\"props.settings.widgets.includes('legend')\"\n :disabled=\"props.settings.colorScheme.type === 'no-color'\"\n @update:model-value=\"event => toggleWidget('legend', event)\"\n >\n Legend\n </PlCheckbox>\n </div>\n </div>\n </div>\n <PlSlideModal v-model=\"settingsOpen\">\n <template #title>Settings</template>\n <PlNumberField\n v-model=\"alignmentParams.gpo\"\n label=\"Gap open penalty\"\n :step=\"0.1\"\n @keyup.enter=\"updateSetting('alignmentParams', alignmentParams)\"\n >\n <template #tooltip>\n Penalty score assigned to the introduction of a gap in the alignment\n </template>\n </PlNumberField>\n <PlNumberField\n v-model=\"alignmentParams.gpe\"\n label=\"Gap extension penalty\"\n :step=\"0.1\"\n @keyup.enter=\"updateSetting('alignmentParams', alignmentParams)\"\n >\n <template #tooltip>\n Penalty score assigned to each additional residue added to an existing\n gap\n </template>\n </PlNumberField>\n <PlNumberField\n v-model=\"alignmentParams.tgpe\"\n label=\"Terminal gap extension penalty\"\n :step=\"0.1\"\n @keyup.enter=\"updateSetting('alignmentParams', alignmentParams)\"\n >\n <template #tooltip>\n Penalty score assigned to extending gaps at the ends of sequences\n </template>\n </PlNumberField>\n <div\n v-if=\"alignmentParamsChangesPending\"\n :class=\"classes.pendingChanges\"\n >\n <PlBtnPrimary @click=\"updateSetting('alignmentParams', alignmentParams)\">\n Apply\n </PlBtnPrimary>\n <PlBtnGhost @click=\"alignmentParams = props.settings.alignmentParams\">\n Cancel\n </PlBtnGhost>\n </div>\n <PlBtnSecondary\n v-if=\"canResetAlignmentParams\"\n :class=\"classes.resetButton\"\n icon=\"reverse\"\n @click=\"updateSetting('alignmentParams', undefined)\"\n >\n Reset to Default\n </PlBtnSecondary>\n </PlSlideModal>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.line {\n display: flex;\n justify-content: space-between;\n}\n\n.section {\n display: flex;\n flex-wrap: wrap;\n gap: 24px;\n}\n\n.buttons {\n display: flex;\n}\n\n.pendingChanges {\n display: flex;\n button {\n min-width: 160px;\n }\n}\n\n.resetButton {\n margin-block-start: auto;\n span {\n text-transform: none;\n }\n}\n</style>\n"],"names":["props","__props","emit","__emit","classes","useCssModule","settingsOpen","ref","updateSetting","key","value","toggleWidget","widget","checked","w","alignmentParams","watchEffect","alignmentParamsChangesPending","computed","isJsonEqual","canResetAlignmentParams","defaultSettings"],"mappings":";;;;;;;;;;;;;;;AAuBA,UAAMA,IAAQC,GAORC,IAAOC,GAKPC,IAAUC,EAAA,GAEVC,IAAeC,EAAI,EAAK;AAE9B,aAASC,EACPC,GACAC,GACA;AACA,MAAAR,EAAK,kBAAkB,EAAE,CAACO,CAAG,GAAGC,GAAO;AAAA,IACzC;AAEA,aAASC,EACPC,GACAC,GACA;AACA,MAAAL;AAAA,QACE;AAAA,QACAK,IACI,CAAC,GAAGb,EAAM,SAAS,SAASY,CAAM,IAClCZ,EAAM,SAAS,QAAQ,OAAO,CAACc,MAAMF,MAAWE,CAAC;AAAA,MAAA;AAAA,IAEzD;AAEA,UAAMC,IAAkBR,EAAI,EAAE,GAAGP,EAAM,SAAS,iBAAiB;AACjE,IAAAgB,EAAY,MAAM;AAChB,MAAAD,EAAgB,QAAQ,EAAE,GAAGf,EAAM,SAAS,gBAAA;AAAA,IAC9C,CAAC;AAED,UAAMiB,IAAgCC;AAAA,MAAS,MAC7C,CAACC,EAAYnB,EAAM,SAAS,iBAAiBe,EAAgB,KAAK;AAAA,IAAA,GAG9DK,IAA0BF;AAAA,MAAS,MACvC,CAACC,EAAYnB,EAAM,SAAS,iBAAiBqB,EAAgB,eAAe;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".
|
|
2
|
-
const n = "
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_ypn45_2{display:flex;flex-direction:column;gap:24px}._line_ypn45_8{display:flex;justify-content:space-between}._section_ypn45_13{display:flex;flex-wrap:wrap;gap:24px}._buttons_ypn45_19,._pendingChanges_ypn45_23{display:flex}._pendingChanges_ypn45_23 button{min-width:160px}._resetButton_ypn45_30{margin-block-start:auto}._resetButton_ypn45_30 span{text-transform:none}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
|
|
2
|
+
const n = "_container_ypn45_2", t = "_line_ypn45_8", e = "_section_ypn45_13", s = "_buttons_ypn45_19", o = "_pendingChanges_ypn45_23", _ = "_resetButton_ypn45_30", c = {
|
|
3
3
|
container: n,
|
|
4
4
|
line: t,
|
|
5
5
|
section: e,
|
|
6
|
-
buttons:
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
buttons: s,
|
|
7
|
+
pendingChanges: o,
|
|
8
|
+
resetButton: _
|
|
9
9
|
};
|
|
10
10
|
export {
|
|
11
|
-
|
|
11
|
+
s as buttons,
|
|
12
12
|
n as container,
|
|
13
|
-
|
|
13
|
+
c as default,
|
|
14
14
|
t as line,
|
|
15
|
+
o as pendingChanges,
|
|
16
|
+
_ as resetButton,
|
|
15
17
|
e as section
|
|
16
18
|
};
|
|
17
19
|
//# sourceMappingURL=Toolbar.vue3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-size.js","sources":["../../../src/components/PlMultiSequenceAlignment/cell-size.ts"],"sourcesContent":["export const cellSize = {\n inline: 20,\n block: 24,\n};\n"],"names":["cellSize"],"mappings":"AAAO,MAAMA,IAAW;AAAA,EACtB,QAAQ;AAAA,EACR,OAAO;AACT;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ListOptionNormalized } from '@milaboratories/uikit';
|
|
2
2
|
import { PColumnIdAndSpec, PFrameHandle, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentSettings, PlSelectionModel, PObjectId, PTableColumnId } from '@platforma-sdk/model';
|
|
3
3
|
import { HighlightLegend, ResidueCounts } from './types';
|
|
4
|
-
|
|
4
|
+
import type * as PhylogeneticTreeWorker from './phylogenetic-tree.worker';
|
|
5
|
+
export declare const SEQUENCE_LIMIT = 1000;
|
|
5
6
|
export declare const useSequenceColumnsOptions: (paramsGetter: () => {
|
|
6
7
|
pFrame: PFrameHandle | undefined;
|
|
7
8
|
sequenceColumnPredicate: (column: PColumnIdAndSpec) => boolean;
|
|
@@ -22,7 +23,7 @@ export declare const useMarkupColumnsOptions: (paramsGetter: () => {
|
|
|
22
23
|
pFrame: PFrameHandle | undefined;
|
|
23
24
|
sequenceColumnIds: PObjectId[] | undefined;
|
|
24
25
|
}) => {
|
|
25
|
-
data: import('vue').Ref<ListOptionNormalized<PObjectId>[] | undefined, ListOptionNormalized<PObjectId>[] | undefined>;
|
|
26
|
+
data: import('vue').Ref<ListOptionNormalized<PObjectId[]>[] | undefined, ListOptionNormalized<PObjectId[]>[] | undefined>;
|
|
26
27
|
isLoading: import('vue').Ref<boolean, boolean>;
|
|
27
28
|
error: import('vue').Ref<Error | undefined, Error | undefined>;
|
|
28
29
|
};
|
|
@@ -33,20 +34,24 @@ export declare const useMultipleAlignmentData: (paramsGetter: () => {
|
|
|
33
34
|
selection: PlSelectionModel | undefined;
|
|
34
35
|
colorScheme: PlMultiSequenceAlignmentColorSchemeOption;
|
|
35
36
|
alignmentParams: PlMultiSequenceAlignmentSettings["alignmentParams"];
|
|
37
|
+
shouldBuildPhylogeneticTree: boolean;
|
|
36
38
|
}) => {
|
|
37
39
|
data: import('vue').Ref<MultipleAlignmentData | undefined, MultipleAlignmentData | undefined>;
|
|
38
40
|
isLoading: import('vue').Ref<boolean, boolean>;
|
|
39
41
|
error: import('vue').Ref<Error | undefined, Error | undefined>;
|
|
40
42
|
};
|
|
41
43
|
type MultipleAlignmentData = {
|
|
42
|
-
sequences:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
sequences: {
|
|
45
|
+
name: string;
|
|
46
|
+
rows: string[];
|
|
47
|
+
residueCounts: ResidueCounts;
|
|
48
|
+
highlightImageUrl?: string;
|
|
49
|
+
}[];
|
|
50
|
+
labels: {
|
|
51
|
+
rows: string[];
|
|
52
|
+
}[];
|
|
53
|
+
highlightLegend?: HighlightLegend;
|
|
54
|
+
phylogeneticTree?: PhylogeneticTreeWorker.TreeNodeData[];
|
|
50
55
|
exceedsLimit: boolean;
|
|
51
56
|
};
|
|
52
57
|
type OptionsWithDefaults<T> = {
|