@milaboratories/multi-sequence-alignment 1.45.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 +52 -0
- package/.turbo/turbo-lint.log +12 -0
- package/.turbo/turbo-test.log +13 -0
- package/.turbo/turbo-type-check.log +6 -0
- package/dist/Consensus.vue.d.ts +9 -0
- package/dist/Consensus.vue.js +10 -0
- package/dist/Consensus.vue.js.map +1 -0
- package/dist/Consensus.vue2.js +122 -0
- package/dist/Consensus.vue2.js.map +1 -0
- package/dist/Consensus.vue3.js +9 -0
- package/dist/Consensus.vue3.js.map +1 -0
- package/dist/Legend.vue.d.ts +6 -0
- package/dist/Legend.vue.js +10 -0
- package/dist/Legend.vue.js.map +1 -0
- package/dist/Legend.vue2.js +28 -0
- package/dist/Legend.vue2.js.map +1 -0
- package/dist/Legend.vue3.js +13 -0
- package/dist/Legend.vue3.js.map +1 -0
- package/dist/MultiSequenceAlignmentView.vue.d.ts +25 -0
- package/dist/MultiSequenceAlignmentView.vue.js +10 -0
- package/dist/MultiSequenceAlignmentView.vue.js.map +1 -0
- package/dist/MultiSequenceAlignmentView.vue2.js +138 -0
- package/dist/MultiSequenceAlignmentView.vue2.js.map +1 -0
- package/dist/MultiSequenceAlignmentView.vue3.js +31 -0
- package/dist/MultiSequenceAlignmentView.vue3.js.map +1 -0
- package/dist/PhylogeneticTree.vue.d.ts +8 -0
- package/dist/PhylogeneticTree.vue.js +10 -0
- package/dist/PhylogeneticTree.vue.js.map +1 -0
- package/dist/PhylogeneticTree.vue2.js +77 -0
- package/dist/PhylogeneticTree.vue2.js.map +1 -0
- package/dist/PhylogeneticTree.vue3.js +9 -0
- package/dist/PhylogeneticTree.vue3.js.map +1 -0
- package/dist/PlMultiSequenceAlignment.vue.d.ts +71 -0
- package/dist/PlMultiSequenceAlignment.vue.js +10 -0
- package/dist/PlMultiSequenceAlignment.vue.js.map +1 -0
- package/dist/PlMultiSequenceAlignment.vue2.js +224 -0
- package/dist/PlMultiSequenceAlignment.vue2.js.map +1 -0
- package/dist/PlMultiSequenceAlignment.vue3.js +9 -0
- package/dist/PlMultiSequenceAlignment.vue3.js.map +1 -0
- package/dist/SeqLogo.vue.d.ts +8 -0
- package/dist/SeqLogo.vue.js +10 -0
- package/dist/SeqLogo.vue.js.map +1 -0
- package/dist/SeqLogo.vue2.js +127 -0
- package/dist/SeqLogo.vue2.js.map +1 -0
- package/dist/SeqLogo.vue3.js +9 -0
- package/dist/SeqLogo.vue3.js.map +1 -0
- package/dist/Toolbar.vue.d.ts +16 -0
- package/dist/Toolbar.vue.js +10 -0
- package/dist/Toolbar.vue.js.map +1 -0
- package/dist/Toolbar.vue2.js +228 -0
- package/dist/Toolbar.vue2.js.map +1 -0
- package/dist/Toolbar.vue3.js +19 -0
- package/dist/Toolbar.vue3.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
- package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
- 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/cell-size.d.ts +4 -0
- package/dist/cell-size.js +8 -0
- package/dist/cell-size.js.map +1 -0
- package/dist/chemical-properties.d.ts +44 -0
- package/dist/chemical-properties.js +132 -0
- package/dist/chemical-properties.js.map +1 -0
- package/dist/data.d.ts +61 -0
- package/dist/data.js +370 -0
- package/dist/data.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/markup.d.ts +16 -0
- package/dist/markup.js +84 -0
- package/dist/markup.js.map +1 -0
- package/dist/migrations.d.ts +3 -0
- package/dist/migrations.js +24 -0
- package/dist/migrations.js.map +1 -0
- package/dist/multi-sequence-alignment.worker.d.ts +6 -0
- package/dist/node_modules/.pnpm/@milaboratories_helpers@1.12.0/node_modules/@milaboratories/helpers/dist/objects.js +33 -0
- package/dist/node_modules/.pnpm/@milaboratories_helpers@1.12.0/node_modules/@milaboratories/helpers/dist/objects.js.map +1 -0
- package/dist/phylogenetic-tree.worker.d.ts +7 -0
- package/dist/residue-counts.d.ts +2 -0
- package/dist/residue-counts.js +13 -0
- package/dist/residue-counts.js.map +1 -0
- package/dist/settings.d.ts +2 -0
- package/dist/settings.js +9 -0
- package/dist/settings.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/useMiPlots.d.ts +4 -0
- package/dist/useMiPlots.js +19 -0
- package/dist/useMiPlots.js.map +1 -0
- package/eslint.config.js +66 -0
- package/package.json +45 -0
- package/src/Consensus.vue +165 -0
- package/src/Legend.vue +44 -0
- package/src/MultiSequenceAlignmentView.vue +299 -0
- package/src/PhylogeneticTree.vue +110 -0
- package/src/PlMultiSequenceAlignment.vue +314 -0
- package/src/README.md +216 -0
- package/src/SeqLogo.vue +166 -0
- package/src/Toolbar.vue +228 -0
- package/src/cell-size.ts +4 -0
- package/src/chemical-properties.ts +199 -0
- package/src/data.ts +661 -0
- package/src/index.ts +2 -0
- package/src/markup.ts +141 -0
- package/src/migrations.ts +46 -0
- package/src/multi-sequence-alignment.worker.ts +54 -0
- package/src/phylogenetic-tree.worker.ts +89 -0
- package/src/residue-counts.ts +124 -0
- package/src/settings.ts +7 -0
- package/src/types.ts +3 -0
- package/src/useMiPlots.ts +23 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
WARN Issue while reading "/home/runner/work/visualizations/visualizations/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
|
+
|
|
3
|
+
> @milaboratories/multi-sequence-alignment@1.45.0 build /home/runner/work/visualizations/visualizations/packages/multi-sequence-alignment
|
|
4
|
+
> ts-builder build --target browser-lib
|
|
5
|
+
|
|
6
|
+
Building browser-lib project...
|
|
7
|
+
↳ vite.js build --config /home/runner/work/visualizations/visualizations/node_modules/.pnpm/@milaboratories+ts-builder@1.0.4_@microsoft+api-extractor@7.53.2_@types+node@24.10.0__@types+_7v5fqgpngdjq5mb7hb7rn2befm/node_modules/@milaboratories/ts-builder/dist/configs/vite.browser-lib.config.js --mode production
|
|
8
|
+
[36mvite v6.4.1 [32mbuilding for production...[36m[39m
|
|
9
|
+
transforming...
|
|
10
|
+
[32m✓[39m 45 modules transformed.
|
|
11
|
+
rendering chunks...
|
|
12
|
+
|
|
13
|
+
[vite:dts] Start generate declaration files...
|
|
14
|
+
computing gzip size...
|
|
15
|
+
[2mdist/[22m[32massets/multi-sequence-alignment.worker-Cm0gZp19.js [39m[1m[2m222.50 kB[22m[1m[22m
|
|
16
|
+
[2mdist/[22m[32massets/phylogenetic-tree.worker-4CrExYEo.js [39m[1m[2m465.75 kB[22m[1m[22m
|
|
17
|
+
[2mdist/[22m[36mcell-size.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.24 kB[22m
|
|
18
|
+
[2mdist/[22m[36mindex.js [39m[1m[2m 0.18 kB[22m[1m[22m[2m │ gzip: 0.16 kB[22m[2m │ map: 0.26 kB[22m
|
|
19
|
+
[2mdist/[22m[36m_virtual/_plugin-vue_export-helper.js [39m[1m[2m 0.19 kB[22m[1m[22m[2m │ gzip: 0.17 kB[22m[2m │ map: 0.12 kB[22m
|
|
20
|
+
[2mdist/[22m[36msettings.js [39m[1m[2m 0.23 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m[2m │ map: 0.58 kB[22m
|
|
21
|
+
[2mdist/[22m[36mLegend.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
22
|
+
[2mdist/[22m[36mresidue-counts.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m[2m │ map: 4.40 kB[22m
|
|
23
|
+
[2mdist/[22m[36mToolbar.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
24
|
+
[2mdist/[22m[36mSeqLogo.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
25
|
+
[2mdist/[22m[36mConsensus.vue.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
26
|
+
[2mdist/[22m[36mPhylogeneticTree.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
27
|
+
[2mdist/[22m[36mPlMultiSequenceAlignment.vue.js [39m[1m[2m 0.32 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.12 kB[22m
|
|
28
|
+
[2mdist/[22m[36mMultiSequenceAlignmentView.vue.js [39m[1m[2m 0.33 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.12 kB[22m
|
|
29
|
+
[2mdist/[22m[36mSeqLogo.vue3.js [39m[1m[2m 0.41 kB[22m[1m[22m[2m │ gzip: 0.29 kB[22m[2m │ map: 0.10 kB[22m
|
|
30
|
+
[2mdist/[22m[36mPhylogeneticTree.vue3.js [39m[1m[2m 0.42 kB[22m[1m[22m[2m │ gzip: 0.30 kB[22m[2m │ map: 0.11 kB[22m
|
|
31
|
+
[2mdist/[22m[36mPlMultiSequenceAlignment.vue3.js [39m[1m[2m 0.46 kB[22m[1m[22m[2m │ gzip: 0.33 kB[22m[2m │ map: 0.12 kB[22m
|
|
32
|
+
[2mdist/[22m[36museMiPlots.js [39m[1m[2m 0.47 kB[22m[1m[22m[2m │ gzip: 0.30 kB[22m[2m │ map: 1.09 kB[22m
|
|
33
|
+
[2mdist/[22m[36mConsensus.vue3.js [39m[1m[2m 0.47 kB[22m[1m[22m[2m │ gzip: 0.32 kB[22m[2m │ map: 0.10 kB[22m
|
|
34
|
+
[2mdist/[22m[36mmigrations.js [39m[1m[2m 0.62 kB[22m[1m[22m[2m │ gzip: 0.37 kB[22m[2m │ map: 2.15 kB[22m
|
|
35
|
+
[2mdist/[22m[36mLegend.vue3.js [39m[1m[2m 0.70 kB[22m[1m[22m[2m │ gzip: 0.42 kB[22m[2m │ map: 0.10 kB[22m
|
|
36
|
+
[2mdist/[22m[36mLegend.vue2.js [39m[1m[2m 0.85 kB[22m[1m[22m[2m │ gzip: 0.49 kB[22m[2m │ map: 1.53 kB[22m
|
|
37
|
+
[2mdist/[22m[36mnode_modules/.pnpm/@milaboratories_helpers@1.12.0/node_modules/@milaboratories/helpers/dist/objects.js [39m[1m[2m 0.89 kB[22m[1m[22m[2m │ gzip: 0.44 kB[22m[2m │ map: 9.12 kB[22m
|
|
38
|
+
[2mdist/[22m[36mToolbar.vue3.js [39m[1m[2m 1.05 kB[22m[1m[22m[2m │ gzip: 0.53 kB[22m[2m │ map: 0.10 kB[22m
|
|
39
|
+
[2mdist/[22m[36mmarkup.js [39m[1m[2m 2.02 kB[22m[1m[22m[2m │ gzip: 1.03 kB[22m[2m │ map: 6.53 kB[22m
|
|
40
|
+
[2mdist/[22m[36mPhylogeneticTree.vue2.js [39m[1m[2m 2.31 kB[22m[1m[22m[2m │ gzip: 1.06 kB[22m[2m │ map: 4.45 kB[22m
|
|
41
|
+
[2mdist/[22m[36mSeqLogo.vue2.js [39m[1m[2m 3.21 kB[22m[1m[22m[2m │ gzip: 1.32 kB[22m[2m │ map: 6.46 kB[22m
|
|
42
|
+
[2mdist/[22m[36mMultiSequenceAlignmentView.vue3.js [39m[1m[2m 3.52 kB[22m[1m[22m[2m │ gzip: 1.28 kB[22m[2m │ map: 0.13 kB[22m
|
|
43
|
+
[2mdist/[22m[36mConsensus.vue2.js [39m[1m[2m 3.60 kB[22m[1m[22m[2m │ gzip: 1.43 kB[22m[2m │ map: 7.13 kB[22m
|
|
44
|
+
[2mdist/[22m[36mMultiSequenceAlignmentView.vue2.js [39m[1m[2m 4.70 kB[22m[1m[22m[2m │ gzip: 1.66 kB[22m[2m │ map: 11.73 kB[22m
|
|
45
|
+
[2mdist/[22m[36mchemical-properties.js [39m[1m[2m 4.76 kB[22m[1m[22m[2m │ gzip: 1.67 kB[22m[2m │ map: 11.74 kB[22m
|
|
46
|
+
[2mdist/[22m[36mPlMultiSequenceAlignment.vue2.js [39m[1m[2m 7.76 kB[22m[1m[22m[2m │ gzip: 2.69 kB[22m[2m │ map: 14.84 kB[22m
|
|
47
|
+
[2mdist/[22m[36mToolbar.vue2.js [39m[1m[2m 8.32 kB[22m[1m[22m[2m │ gzip: 1.97 kB[22m[2m │ map: 12.54 kB[22m
|
|
48
|
+
[2mdist/[22m[36mdata.js [39m[1m[2m 11.32 kB[22m[1m[22m[2m │ gzip: 3.65 kB[22m[2m │ map: 33.73 kB[22m
|
|
49
|
+
[vite:dts] Declaration files built in 5065ms.
|
|
50
|
+
|
|
51
|
+
[32m✓ built in 7.01s[39m
|
|
52
|
+
Build completed successfully
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
WARN Issue while reading "/home/runner/work/visualizations/visualizations/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
|
+
|
|
3
|
+
> @milaboratories/multi-sequence-alignment@1.45.0 lint /home/runner/work/visualizations/visualizations/packages/multi-sequence-alignment
|
|
4
|
+
> eslint .
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/home/runner/work/visualizations/visualizations/packages/multi-sequence-alignment/src/index.ts
|
|
8
|
+
1:36 warning Missing semicolon semi
|
|
9
|
+
|
|
10
|
+
✖ 1 problem (0 errors, 1 warning)
|
|
11
|
+
0 errors and 1 warning potentially fixable with the `--fix` option.
|
|
12
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
WARN Issue while reading "/home/runner/work/visualizations/visualizations/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
|
+
|
|
3
|
+
> @milaboratories/multi-sequence-alignment@1.45.0 test /home/runner/work/visualizations/visualizations/packages/multi-sequence-alignment
|
|
4
|
+
> vitest run --passWithNoTests
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
[1m[46m RUN [49m[22m [36mv4.0.8 [39m[90m/home/runner/work/visualizations/visualizations/packages/multi-sequence-alignment[39m
|
|
8
|
+
|
|
9
|
+
No test files found, exiting with code 0
|
|
10
|
+
|
|
11
|
+
[2minclude: [22m[33m**/*.{test,spec}.?(c|m)[jt]s?(x)[39m
|
|
12
|
+
[2mexclude: [22m[33m**/node_modules/**[2m, [22m**/.git/**[39m
|
|
13
|
+
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
WARN Issue while reading "/home/runner/work/visualizations/visualizations/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
|
+
|
|
3
|
+
> @milaboratories/multi-sequence-alignment@1.45.0 type-check /home/runner/work/visualizations/visualizations/packages/multi-sequence-alignment
|
|
4
|
+
> ts-builder types --target browser-lib
|
|
5
|
+
|
|
6
|
+
↳ vue-tsc.js --noEmit --project ./tsconfig.json
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ResidueCounts } from './types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
residueCounts: ResidueCounts;
|
|
4
|
+
labelsClass: string;
|
|
5
|
+
};
|
|
6
|
+
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, {
|
|
7
|
+
plotEl: HTMLDivElement;
|
|
8
|
+
}, any>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import s from "./Consensus.vue2.js";
|
|
2
|
+
import o from "./Consensus.vue3.js";
|
|
3
|
+
import t from "./_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const e = {
|
|
5
|
+
$style: o
|
|
6
|
+
}, f = /* @__PURE__ */ t(s, [["__cssModules", e]]);
|
|
7
|
+
export {
|
|
8
|
+
f as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=Consensus.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Consensus.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { defineComponent as x, useCssModule as k, useTemplateRef as E, computed as c, shallowRef as _, watchEffect as A, onBeforeUnmount as O, createBlock as S, createElementBlock as j, unref as u, openBlock as y, withCtx as B, createTextVNode as D, toDisplayString as C, normalizeClass as v, createElementVNode as b } from "vue";
|
|
2
|
+
import { PlAlert as G } from "@milaboratories/uikit";
|
|
3
|
+
import { cellSize as K } from "./cell-size.js";
|
|
4
|
+
import { useMiPlots as T } from "./useMiPlots.js";
|
|
5
|
+
const U = /* @__PURE__ */ x({
|
|
6
|
+
__name: "Consensus",
|
|
7
|
+
props: {
|
|
8
|
+
residueCounts: {},
|
|
9
|
+
labelsClass: {}
|
|
10
|
+
},
|
|
11
|
+
setup(g) {
|
|
12
|
+
const s = g, w = k(), a = E("plotEl"), f = c(
|
|
13
|
+
() => s.residueCounts.map((e) => {
|
|
14
|
+
let o = 0, t = { label: "", count: 0 };
|
|
15
|
+
for (const [r, n] of Object.entries(e))
|
|
16
|
+
o += n, r !== "-" && n > t.count && (t = { label: r, count: n });
|
|
17
|
+
const i = CSS.percent(t.count / o * 100);
|
|
18
|
+
return {
|
|
19
|
+
label: t.label,
|
|
20
|
+
color: `color-mix(in oklab, ${i} #3056AE, #C1CDE9)`
|
|
21
|
+
};
|
|
22
|
+
})
|
|
23
|
+
), m = c(() => {
|
|
24
|
+
const e = s.residueCounts.length * K.inline;
|
|
25
|
+
return {
|
|
26
|
+
type: "discrete",
|
|
27
|
+
y: {
|
|
28
|
+
type: "column",
|
|
29
|
+
value: "countKey"
|
|
30
|
+
},
|
|
31
|
+
legend: { show: !1 },
|
|
32
|
+
primaryGrouping: {
|
|
33
|
+
columnName: {
|
|
34
|
+
type: "column",
|
|
35
|
+
value: "columnKey"
|
|
36
|
+
},
|
|
37
|
+
order: s.residueCounts.map((o, t) => t),
|
|
38
|
+
inheritedAes: Object.fromEntries(
|
|
39
|
+
f.value.map(({ color: o }) => ({ fillColor: o })).entries()
|
|
40
|
+
)
|
|
41
|
+
},
|
|
42
|
+
layers: [{
|
|
43
|
+
type: "bar",
|
|
44
|
+
height: "max",
|
|
45
|
+
aes: {
|
|
46
|
+
...s.residueCounts.length && {
|
|
47
|
+
width: (e - s.residueCounts.length + 1) / s.residueCounts.length
|
|
48
|
+
},
|
|
49
|
+
fillColor: {
|
|
50
|
+
type: "primaryGrouping"
|
|
51
|
+
},
|
|
52
|
+
lineColor: "#ffffff"
|
|
53
|
+
}
|
|
54
|
+
}],
|
|
55
|
+
title: {
|
|
56
|
+
name: "",
|
|
57
|
+
show: !1
|
|
58
|
+
},
|
|
59
|
+
size: {
|
|
60
|
+
width: e,
|
|
61
|
+
height: 60,
|
|
62
|
+
outerOffset: 0,
|
|
63
|
+
innerOffset: 0
|
|
64
|
+
},
|
|
65
|
+
xAxis: {
|
|
66
|
+
title: "",
|
|
67
|
+
showGrid: !1,
|
|
68
|
+
showTicks: !1,
|
|
69
|
+
hiddenLabels: !0
|
|
70
|
+
},
|
|
71
|
+
yAxis: {
|
|
72
|
+
title: "",
|
|
73
|
+
showGrid: !1,
|
|
74
|
+
showTicks: !1,
|
|
75
|
+
hiddenLabels: !0
|
|
76
|
+
},
|
|
77
|
+
frame: {
|
|
78
|
+
type: "empty"
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}), p = c(() => {
|
|
82
|
+
const e = [], o = [];
|
|
83
|
+
for (const [t, i] of s.residueCounts.entries())
|
|
84
|
+
for (const [r, n] of Object.entries(i))
|
|
85
|
+
r !== "-" && (e.push(n), o.push(t));
|
|
86
|
+
return {
|
|
87
|
+
type: "columns",
|
|
88
|
+
id: `consensus-${crypto.randomUUID()}`,
|
|
89
|
+
values: { countKey: e, columnKey: o }
|
|
90
|
+
};
|
|
91
|
+
}), l = _(), { miplots: d, error: h } = T();
|
|
92
|
+
return A(async () => {
|
|
93
|
+
!a.value || !d.value || (l.value ? l.value.updateSettingsAndData(p.value, m.value) : (l.value = d.value.newPlot(p.value, m.value), l.value.mount(a.value)));
|
|
94
|
+
}), O(() => {
|
|
95
|
+
var e;
|
|
96
|
+
(e = l.value) == null || e.unmount();
|
|
97
|
+
}), (e, o) => u(h) ? (y(), S(u(G), {
|
|
98
|
+
key: 0,
|
|
99
|
+
type: "error"
|
|
100
|
+
}, {
|
|
101
|
+
default: B(() => [
|
|
102
|
+
D(C(u(h).message), 1)
|
|
103
|
+
]),
|
|
104
|
+
_: 1
|
|
105
|
+
})) : (y(), j("div", {
|
|
106
|
+
key: 1,
|
|
107
|
+
class: v(u(w).container)
|
|
108
|
+
}, [
|
|
109
|
+
b("div", {
|
|
110
|
+
class: v(s.labelsClass)
|
|
111
|
+
}, C(f.value.map((t) => t.label).join("")), 3),
|
|
112
|
+
b("div", {
|
|
113
|
+
ref_key: "plotEl",
|
|
114
|
+
ref: a
|
|
115
|
+
}, null, 512)
|
|
116
|
+
], 2));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
export {
|
|
120
|
+
U as default
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=Consensus.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Consensus.vue2.js","sources":["../src/Consensus.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 labelsClass: string;\n}>();\n\nconst classes = useCssModule();\n\nconst plotEl = useTemplateRef('plotEl');\n\nconst columns = computed(() =>\n props.residueCounts.map((column) => {\n let totalCount = 0;\n let topResidue = { label: '', count: 0 };\n for (const [residue, count] of Object.entries(column)) {\n totalCount += count;\n if (residue === '-') continue;\n if (count > topResidue.count) topResidue = { label: residue, count };\n }\n const confidence = CSS.percent(topResidue.count / totalCount * 100);\n return {\n label: topResidue.label,\n color: `color-mix(in oklab, ${confidence} #3056AE, #C1CDE9)`,\n };\n }),\n);\n\nconst settings = computed(() => {\n const width = props.residueCounts.length * cellSize.inline;\n return ({\n type: 'discrete',\n y: {\n type: 'column',\n value: 'countKey',\n },\n legend: { show: false },\n primaryGrouping: {\n columnName: {\n type: 'column',\n value: 'columnKey',\n },\n order: props.residueCounts.map((_, i) => i),\n inheritedAes: Object.fromEntries(\n columns.value.map(({ color }) => ({ fillColor: color })).entries(),\n ),\n },\n layers: [{\n type: 'bar',\n height: 'max',\n aes: {\n ...props.residueCounts.length && {\n width: (width - props.residueCounts.length + 1)\n / props.residueCounts.length,\n },\n fillColor: {\n type: 'primaryGrouping',\n },\n lineColor: '#ffffff',\n },\n }],\n title: {\n name: '',\n show: false,\n },\n size: {\n width,\n height: 60,\n outerOffset: 0,\n innerOffset: 0,\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 frame: {\n type: 'empty',\n },\n } satisfies Settings);\n});\n\nconst data = computed<DataByColumns>(() => {\n const countKey: number[] = [];\n const columnKey: number[] = [];\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 }\n }\n return ({\n type: 'columns',\n id: `consensus-${crypto.randomUUID()}`,\n values: { countKey, columnKey },\n });\n});\n\nconst plot = shallowRef<ChartInterface>();\n\nconst { miplots, error } = useMiPlots();\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 :class=\"classes.container\">\n <div :class=\"props.labelsClass\">\n {{ columns.map(column => column.label).join('') }}\n </div>\n <div ref=\"plotEl\" />\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n svg {\n display: block;\n }\n}\n</style>\n"],"names":["props","__props","classes","useCssModule","plotEl","useTemplateRef","columns","computed","column","totalCount","topResidue","residue","count","confidence","settings","width","cellSize","_","i","color","data","countKey","columnKey","columnIndex","plot","shallowRef","miplots","error","useMiPlots","watchEffect","onBeforeUnmount","_a","_unref","_createBlock","PlAlert","_createTextVNode","_toDisplayString","_createElementBlock","_normalizeClass","_createElementVNode"],"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_1vnon_2{display:flex;flex-direction:column;gap:4px}._container_1vnon_2 svg{display:block}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
|
|
2
|
+
const n = "_container_1vnon_2", t = {
|
|
3
|
+
container: n
|
|
4
|
+
};
|
|
5
|
+
export {
|
|
6
|
+
n as container,
|
|
7
|
+
t as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=Consensus.vue3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Consensus.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HighlightLegend } from './types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
legend: HighlightLegend;
|
|
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, {}, HTMLDivElement>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import s from "./Legend.vue2.js";
|
|
2
|
+
import o from "./Legend.vue3.js";
|
|
3
|
+
import t from "./_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const e = {
|
|
5
|
+
$style: o
|
|
6
|
+
}, f = /* @__PURE__ */ t(s, [["__cssModules", e]]);
|
|
7
|
+
export {
|
|
8
|
+
f as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=Legend.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Legend.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { defineComponent as i, useCssModule as m, createElementBlock as n, openBlock as t, normalizeClass as r, unref as l, Fragment as u, renderList as p, createElementVNode as g, createTextVNode as _, normalizeStyle as f, toDisplayString as C } from "vue";
|
|
2
|
+
const y = /* @__PURE__ */ i({
|
|
3
|
+
__name: "Legend",
|
|
4
|
+
props: {
|
|
5
|
+
legend: {}
|
|
6
|
+
},
|
|
7
|
+
setup(o) {
|
|
8
|
+
const s = o, e = m();
|
|
9
|
+
return (k, v) => (t(), n("div", {
|
|
10
|
+
class: r(l(e).container)
|
|
11
|
+
}, [
|
|
12
|
+
(t(!0), n(u, null, p(s.legend, ({ label: a, color: c }, d) => (t(), n("div", {
|
|
13
|
+
key: d,
|
|
14
|
+
class: r(l(e).item)
|
|
15
|
+
}, [
|
|
16
|
+
g("div", {
|
|
17
|
+
class: r(l(e).colorSample),
|
|
18
|
+
style: f({ backgroundColor: c })
|
|
19
|
+
}, null, 6),
|
|
20
|
+
_(" " + C(a), 1)
|
|
21
|
+
], 2))), 128))
|
|
22
|
+
], 2));
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
export {
|
|
26
|
+
y as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=Legend.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Legend.vue2.js","sources":["../src/Legend.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useCssModule } from 'vue';\nimport type { HighlightLegend } from './types';\n\nconst props = defineProps<{\n legend: HighlightLegend;\n}>();\n\nconst classes = useCssModule();\n</script>\n\n<template>\n <div :class=\"classes.container\">\n <div\n v-for=\"({ label, color }, key) of props.legend\"\n :key=\"key\"\n :class=\"classes.item\"\n >\n <div :class=\"classes.colorSample\" :style=\"{ backgroundColor: color }\" />\n {{ label }}\n </div>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n max-inline-size: fit-content;\n}\n\n.item {\n display: flex;\n gap: 4px;\n}\n\n.colorSample {\n display: inline-block;\n block-size: 18px;\n inline-size: 18px;\n border-radius: 3px;\n}\n</style>\n"],"names":["props","__props","classes","useCssModule","_createElementBlock","_normalizeClass","_unref","_Fragment","_renderList","label","color","key","_createElementVNode","_createTextVNode"],"mappings":";;;;;;;AAIA,UAAMA,IAAQC,GAIRC,IAAUC,EAAA;2BAIdC,EASM,OAAA;AAAA,MATA,OAAKC,EAAEC,EAAAJ,CAAA,EAAQ,SAAS;AAAA,IAAA;cAC5BE,EAOMG,GAAA,MAAAC,EAN8BR,EAAM,WAA9B,OAAAS,GAAO,OAAAC,EAAA,GAASC,YAD5BP,EAOM,OAAA;AAAA,QALH,KAAAO;AAAA,QACA,OAAKN,EAAEC,EAAAJ,CAAA,EAAQ,IAAI;AAAA,MAAA;QAEpBU,EAAwE,OAAA;AAAA,UAAlE,OAAKP,EAAEC,EAAAJ,CAAA,EAAQ,WAAW;AAAA,UAAG,4BAA0BQ,GAAK;AAAA,QAAA;QAAMG,EAAA,QACrEJ,CAAK,GAAA,CAAA;AAAA,MAAA;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_5klj5_2{display:flex;flex-wrap:wrap;gap:12px;max-inline-size:fit-content}._item_5klj5_9{display:flex;gap:4px}._colorSample_5klj5_14{display:inline-block;block-size:18px;inline-size:18px;border-radius:3px}")),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();
|
|
2
|
+
const o = "_container_5klj5_2", t = "_item_5klj5_9", e = "_colorSample_5klj5_14", l = {
|
|
3
|
+
container: o,
|
|
4
|
+
item: t,
|
|
5
|
+
colorSample: e
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
e as colorSample,
|
|
9
|
+
o as container,
|
|
10
|
+
l as default,
|
|
11
|
+
t as item
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=Legend.vue3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Legend.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PlMultiSequenceAlignmentWidget } from '@platforma-sdk/model';
|
|
2
|
+
import { TreeNodeData } from './phylogenetic-tree.worker';
|
|
3
|
+
import { HighlightLegend, ResidueCounts } from './types';
|
|
4
|
+
type __VLS_Props = {
|
|
5
|
+
sequences: {
|
|
6
|
+
name: string;
|
|
7
|
+
rows: string[];
|
|
8
|
+
residueCounts: ResidueCounts;
|
|
9
|
+
highlightImageUrl?: string;
|
|
10
|
+
}[];
|
|
11
|
+
labels: {
|
|
12
|
+
rows: string[];
|
|
13
|
+
}[];
|
|
14
|
+
highlightLegend: HighlightLegend | undefined;
|
|
15
|
+
phylogeneticTree: TreeNodeData[] | undefined;
|
|
16
|
+
widgets: PlMultiSequenceAlignmentWidget[];
|
|
17
|
+
};
|
|
18
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
19
|
+
rootEl: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
|
|
20
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
21
|
+
rootRef: HTMLDivElement;
|
|
22
|
+
referenceCell: HTMLDivElement;
|
|
23
|
+
corner: HTMLDivElement;
|
|
24
|
+
}, HTMLDivElement>;
|
|
25
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import s from "./MultiSequenceAlignmentView.vue2.js";
|
|
2
|
+
import e from "./MultiSequenceAlignmentView.vue3.js";
|
|
3
|
+
import o from "./_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const t = {
|
|
5
|
+
$style: e
|
|
6
|
+
}, i = /* @__PURE__ */ o(s, [["__cssModules", t]]);
|
|
7
|
+
export {
|
|
8
|
+
i as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=MultiSequenceAlignmentView.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSequenceAlignmentView.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { defineComponent as M, useCssVars as U, unref as n, computed as C, useCssModule as D, useTemplateRef as b, ref as I, onBeforeMount as E, onBeforeUnmount as A, watch as F, onWatcherCleanup as H, createElementBlock as i, openBlock as t, normalizeClass as l, createElementVNode as c, createBlock as f, createCommentVNode as u, Fragment as d, renderList as v, toDisplayString as y, withDirectives as O, vShow as P, normalizeStyle as W } from "vue";
|
|
2
|
+
import { cellSize as k } from "./cell-size.js";
|
|
3
|
+
import $ from "./Consensus.vue.js";
|
|
4
|
+
import j from "./Legend.vue.js";
|
|
5
|
+
import G from "./PhylogeneticTree.vue.js";
|
|
6
|
+
import J from "./SeqLogo.vue.js";
|
|
7
|
+
const ne = /* @__PURE__ */ M({
|
|
8
|
+
__name: "MultiSequenceAlignmentView",
|
|
9
|
+
props: {
|
|
10
|
+
sequences: {},
|
|
11
|
+
labels: {},
|
|
12
|
+
highlightLegend: {},
|
|
13
|
+
phylogeneticTree: {},
|
|
14
|
+
widgets: {}
|
|
15
|
+
},
|
|
16
|
+
setup(R, { expose: B }) {
|
|
17
|
+
U((o) => ({
|
|
18
|
+
v16792884: n(N),
|
|
19
|
+
v5f937812: s.sequences.length,
|
|
20
|
+
v832f3168: _.value,
|
|
21
|
+
v71429b60: s.labels.length,
|
|
22
|
+
v49944722: V.value,
|
|
23
|
+
v622f88b4: x.value,
|
|
24
|
+
c9eaa2b8: n(T)
|
|
25
|
+
}));
|
|
26
|
+
const s = R, r = D(), L = b("rootRef");
|
|
27
|
+
B({ rootEl: L });
|
|
28
|
+
const _ = C(() => {
|
|
29
|
+
var o;
|
|
30
|
+
return ((o = s.sequences.at(0)) == null ? void 0 : o.rows.length) ?? 0;
|
|
31
|
+
}), T = CSS.px(k.inline).toString(), N = CSS.px(k.block).toString(), w = b("referenceCell"), h = I(), q = b("corner"), z = I(), x = C(
|
|
32
|
+
() => h.value ? CSS.px(k.inline - h.value).toString() : void 0
|
|
33
|
+
), V = C(
|
|
34
|
+
() => CSS.px(z.value ?? 0).toString()
|
|
35
|
+
);
|
|
36
|
+
let g;
|
|
37
|
+
E(() => {
|
|
38
|
+
const o = (a) => {
|
|
39
|
+
var e;
|
|
40
|
+
return (e = a.borderBoxSize.find(Boolean)) == null ? void 0 : e.inlineSize;
|
|
41
|
+
};
|
|
42
|
+
g = new ResizeObserver((a) => {
|
|
43
|
+
for (const e of a)
|
|
44
|
+
switch (e.target) {
|
|
45
|
+
case w.value:
|
|
46
|
+
h.value = o(e);
|
|
47
|
+
break;
|
|
48
|
+
case q.value:
|
|
49
|
+
z.value = o(e);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}), A(() => {
|
|
54
|
+
g.disconnect();
|
|
55
|
+
});
|
|
56
|
+
for (const o of [w, q])
|
|
57
|
+
F(o, (a, e) => {
|
|
58
|
+
a && g.observe(a), H(() => {
|
|
59
|
+
e && g.unobserve(e);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
return (o, a) => (t(), i("div", {
|
|
63
|
+
ref: "rootRef",
|
|
64
|
+
class: l(n(r).root)
|
|
65
|
+
}, [
|
|
66
|
+
c("div", {
|
|
67
|
+
ref: "referenceCell",
|
|
68
|
+
class: l(n(r).referenceCell)
|
|
69
|
+
}, "x", 2),
|
|
70
|
+
c("div", {
|
|
71
|
+
class: l(["pl-scrollable", n(r).table])
|
|
72
|
+
}, [
|
|
73
|
+
c("div", {
|
|
74
|
+
class: l(n(r).sidebar)
|
|
75
|
+
}, [
|
|
76
|
+
s.widgets.includes("tree") && s.phylogeneticTree ? (t(), f(G, {
|
|
77
|
+
key: 0,
|
|
78
|
+
tree: s.phylogeneticTree,
|
|
79
|
+
class: l(n(r).phylogeneticTree)
|
|
80
|
+
}, null, 8, ["tree", "class"])) : u("", !0),
|
|
81
|
+
c("div", {
|
|
82
|
+
class: l(n(r).labels)
|
|
83
|
+
}, [
|
|
84
|
+
(t(!0), i(d, null, v(s.labels, ({ rows: e }, m) => (t(), i(d, { key: m }, [
|
|
85
|
+
(t(!0), i(d, null, v(e, (p, S) => (t(), i("div", { key: S }, y(p), 1))), 128))
|
|
86
|
+
], 64))), 128))
|
|
87
|
+
], 2)
|
|
88
|
+
], 2),
|
|
89
|
+
x.value !== void 0 ? (t(!0), i(d, { key: 0 }, v(s.sequences, (e, m) => (t(), i("div", {
|
|
90
|
+
key: m,
|
|
91
|
+
class: l(n(r).sequenceColumn)
|
|
92
|
+
}, [
|
|
93
|
+
c("div", {
|
|
94
|
+
class: l(n(r).sequenceHeader)
|
|
95
|
+
}, [
|
|
96
|
+
O(c("div", {
|
|
97
|
+
class: l(n(r).sequenceName)
|
|
98
|
+
}, y(e.name), 3), [
|
|
99
|
+
[P, s.sequences.length > 1]
|
|
100
|
+
]),
|
|
101
|
+
s.widgets.includes("consensus") ? (t(), f($, {
|
|
102
|
+
key: 0,
|
|
103
|
+
"residue-counts": e.residueCounts,
|
|
104
|
+
"labels-class": n(r).sequenceRow
|
|
105
|
+
}, null, 8, ["residue-counts", "labels-class"])) : u("", !0),
|
|
106
|
+
s.widgets.includes("seqLogo") ? (t(), f(J, {
|
|
107
|
+
key: 1,
|
|
108
|
+
"residue-counts": e.residueCounts
|
|
109
|
+
}, null, 8, ["residue-counts"])) : u("", !0)
|
|
110
|
+
], 2),
|
|
111
|
+
c("div", {
|
|
112
|
+
class: l(n(r).sequenceRowsContainer),
|
|
113
|
+
style: W({
|
|
114
|
+
backgroundImage: e.highlightImageUrl ? `url(${e.highlightImageUrl})` : void 0
|
|
115
|
+
})
|
|
116
|
+
}, [
|
|
117
|
+
(t(!0), i(d, null, v(e.rows, (p, S) => (t(), i("div", {
|
|
118
|
+
key: S,
|
|
119
|
+
class: l(n(r).sequenceRow)
|
|
120
|
+
}, y(p), 3))), 128))
|
|
121
|
+
], 6)
|
|
122
|
+
], 2))), 128)) : u("", !0),
|
|
123
|
+
c("div", {
|
|
124
|
+
ref: "corner",
|
|
125
|
+
class: l(n(r).corner)
|
|
126
|
+
}, null, 2)
|
|
127
|
+
], 2),
|
|
128
|
+
s.widgets.includes("legend") && s.highlightLegend ? (t(), f(j, {
|
|
129
|
+
key: 0,
|
|
130
|
+
legend: s.highlightLegend
|
|
131
|
+
}, null, 8, ["legend"])) : u("", !0)
|
|
132
|
+
], 2));
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
export {
|
|
136
|
+
ne as default
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=MultiSequenceAlignmentView.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSequenceAlignmentView.vue2.js","sources":["../src/MultiSequenceAlignmentView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PlMultiSequenceAlignmentWidget } from '@platforma-sdk/model';\nimport {\n computed,\n onBeforeMount,\n onBeforeUnmount,\n onWatcherCleanup,\n ref,\n useCssModule,\n useTemplateRef,\n watch,\n} from 'vue';\nimport { cellSize } from './cell-size';\nimport Consensus from './Consensus.vue';\nimport Legend from './Legend.vue';\nimport type { TreeNodeData } from './phylogenetic-tree.worker';\nimport PhylogeneticTree from './PhylogeneticTree.vue';\nimport SeqLogo from './SeqLogo.vue';\nimport type { HighlightLegend, ResidueCounts } from './types';\n\nconst props = defineProps<{\n sequences: {\n name: string;\n rows: string[];\n residueCounts: ResidueCounts;\n highlightImageUrl?: string;\n }[];\n labels: {\n rows: string[];\n }[];\n highlightLegend: HighlightLegend | undefined;\n phylogeneticTree: TreeNodeData[] | undefined;\n widgets: PlMultiSequenceAlignmentWidget[];\n}>();\n\nconst classes = useCssModule();\n\nconst rootEl = useTemplateRef('rootRef');\ndefineExpose({ rootEl });\n\nconst rowCount = computed(() => props.sequences.at(0)?.rows.length ?? 0);\n\nconst targetCellInlineSize = CSS.px(cellSize.inline).toString();\nconst targetCellBlockSize = CSS.px(cellSize.block).toString();\n\nconst referenceCellRef = useTemplateRef('referenceCell');\nconst referenceCellInlineSize = ref<number>();\n\nconst cornerRef = useTemplateRef('corner');\nconst cornerInlineSize = ref<number>();\n\nconst letterSpacing = computed(() =>\n referenceCellInlineSize.value\n ? CSS.px(cellSize.inline - referenceCellInlineSize.value).toString()\n : undefined,\n);\n\nconst sequenceNameInsetInlineStart = computed(() =>\n CSS.px(cornerInlineSize.value ?? 0).toString(),\n);\n\nlet observer: ResizeObserver;\n\nonBeforeMount(() => {\n const getInlineSize = (entry: ResizeObserverEntry) =>\n entry.borderBoxSize.find(Boolean)?.inlineSize;\n\n observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n switch (entry.target) {\n case referenceCellRef.value:\n referenceCellInlineSize.value = getInlineSize(entry);\n break;\n case cornerRef.value:\n cornerInlineSize.value = getInlineSize(entry);\n break;\n }\n }\n });\n});\n\nonBeforeUnmount(() => {\n observer.disconnect();\n});\n\nfor (const ref of [referenceCellRef, cornerRef]) {\n watch(ref, (el, prevEl) => {\n if (el) observer.observe(el);\n onWatcherCleanup(() => {\n if (prevEl) observer.unobserve(prevEl);\n });\n });\n}\n</script>\n\n<template>\n <div ref=\"rootRef\" :class=\"classes.root\">\n <div ref=\"referenceCell\" :class=\"classes.referenceCell\">x</div>\n <div :class=\"['pl-scrollable', classes.table]\">\n <div :class=\"classes.sidebar\">\n <PhylogeneticTree\n v-if=\"props.widgets.includes('tree') && props.phylogeneticTree\"\n :tree=\"props.phylogeneticTree\"\n :class=\"classes.phylogeneticTree\"\n />\n <div :class=\"classes.labels\">\n <template\n v-for=\"({ rows }, columnIndex) of props.labels\"\n :key=\"columnIndex\"\n >\n <div v-for=\"(row, rowIndex) of rows\" :key=\"rowIndex\">\n {{ row }}\n </div>\n </template>\n </div>\n </div>\n <template v-if=\"letterSpacing !== undefined\">\n <div\n v-for=\"(column, columnIndex) of props.sequences\"\n :key=\"columnIndex\"\n :class=\"classes.sequenceColumn\"\n >\n <div :class=\"classes.sequenceHeader\">\n <div\n v-show=\"props.sequences.length > 1\"\n :class=\"classes.sequenceName\"\n >\n {{ column.name }}\n </div>\n <Consensus\n v-if=\"props.widgets.includes('consensus')\"\n :residue-counts=\"column.residueCounts\"\n :labels-class=\"classes.sequenceRow\"\n />\n <SeqLogo\n v-if=\"props.widgets.includes('seqLogo')\"\n :residue-counts=\"column.residueCounts\"\n />\n </div>\n <div\n :class=\"classes.sequenceRowsContainer\"\n :style=\"{\n backgroundImage: column.highlightImageUrl\n ? `url(${column.highlightImageUrl})`\n : undefined,\n }\"\n >\n <div\n v-for=\"(row, rowIndex) of column.rows\"\n :key=\"rowIndex\"\n :class=\"classes.sequenceRow\"\n >\n {{ row }}\n </div>\n </div>\n </div>\n </template>\n <div ref=\"corner\" :class=\"classes.corner\" />\n </div>\n <Legend\n v-if=\"props.widgets.includes('legend') && props.highlightLegend\"\n :legend=\"props.highlightLegend\"\n />\n </div>\n</template>\n\n<style module>\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-block-size: 0;\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n container-type: inline-size;\n\n &[data-pre-print] {\n container-type: unset;\n\n .sidebar {\n max-inline-size: unset;\n }\n }\n}\n\n.referenceCell {\n position: fixed;\n visibility: hidden;\n font-family: Spline Sans Mono;\n font-weight: 600;\n line-height: v-bind('targetCellBlockSize');\n}\n\n.table {\n display: grid;\n grid-template-columns:\n [sidebar-start] auto [sidebar-end] repeat(\n v-bind('props.sequences.length'),\n [column-start] auto [column-end]\n );\n grid-template-rows:\n [header-start] auto [header-end]\n repeat(v-bind('rowCount'), [row-start] auto [row-end]);\n justify-content: start;\n position: relative;\n @media print {\n overflow: visible;\n }\n}\n\n.sidebar {\n grid-column: sidebar;\n grid-row: 1 row-start / -1 row-end;\n display: grid;\n grid-template-rows: subgrid;\n position: sticky;\n inset-inline-start: 0;\n background-color: #fff;\n inline-size: min-content;\n max-inline-size: 30cqi;\n overflow: scroll;\n overscroll-behavior-inline: none;\n scrollbar-width: none;\n}\n\n.phylogeneticTree {\n grid-row: 1 row-start / -1 row-end;\n}\n\n.labels {\n grid-row: 1 row-start / -1 row-end;\n display: grid;\n grid-template-columns: repeat(v-bind('props.labels.length'), auto);\n grid-template-rows: subgrid;\n grid-auto-flow: column;\n column-gap: 12px;\n padding-inline-end: 12px;\n font-family: Spline Sans Mono;\n line-height: v-bind('targetCellBlockSize');\n white-space: nowrap;\n}\n\n.sequenceColumn {\n grid-row: header-start / -1 row-end;\n display: grid;\n grid-template-rows: subgrid;\n & + & {\n margin-inline-start: 24px;\n }\n}\n\n.sequenceHeader {\n grid-row: header;\n display: flex;\n flex-direction: column;\n justify-content: end;\n min-inline-size: 0;\n position: sticky;\n inset-block-start: 0;\n background-color: #fff;\n}\n\n.sequenceName {\n margin-block-end: 4px;\n font-weight: 700;\n line-height: 20px;\n inline-size: fit-content;\n position: sticky;\n inset-inline-start: v-bind('sequenceNameInsetInlineStart');\n}\n\n.sequenceRowsContainer {\n grid-row: 1 row-start / -1 row-end;\n display: grid;\n grid-template-rows: subgrid;\n}\n\n.sequenceRow {\n font-family: Spline Sans Mono;\n font-weight: 600;\n line-height: v-bind('targetCellBlockSize');\n letter-spacing: v-bind('letterSpacing');\n text-indent: calc(v-bind('letterSpacing') / 2);\n inline-size: calc-size(\n min-content,\n round(down, size, v-bind('targetCellInlineSize'))\n );\n white-space: nowrap;\n}\n\n.corner {\n grid-column: sidebar;\n grid-row: header;\n position: sticky;\n inset-inline-start: 0;\n inset-block-start: 0;\n background-color: #fff;\n}\n</style>\n"],"names":["props","__props","classes","useCssModule","rootEl","useTemplateRef","__expose","rowCount","computed","_a","targetCellInlineSize","cellSize","targetCellBlockSize","referenceCellRef","referenceCellInlineSize","ref","cornerRef","cornerInlineSize","letterSpacing","sequenceNameInsetInlineStart","observer","onBeforeMount","getInlineSize","entry","entries","onBeforeUnmount","watch","el","prevEl","onWatcherCleanup","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createBlock","PhylogeneticTree","_openBlock","_Fragment","rows","columnIndex","_renderList","row","rowIndex","column","_toDisplayString","Consensus","SeqLogo","_normalizeStyle","Legend"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._root_34869_2{display:flex;flex-direction:column;gap:12px;min-block-size:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;container-type:inline-size}._root_34869_2[data-pre-print]{container-type:unset}._root_34869_2[data-pre-print] ._sidebar_34869_14{max-inline-size:unset}._referenceCell_34869_20{position:fixed;visibility:hidden;font-family:Spline Sans Mono;font-weight:600;line-height:var(--v16792884)}._table_34869_28{display:grid;grid-template-columns:[sidebar-start] auto [sidebar-end] repeat(var(--v5f937812),[column-start] auto [column-end]);grid-template-rows:[header-start] auto [header-end] repeat(var(--v832f3168),[row-start] auto [row-end]);justify-content:start;position:relative}@media print{._table_34869_28{overflow:visible}}._sidebar_34869_14{grid-column:sidebar;grid-row:1 row-start / -1 row-end;display:grid;grid-template-rows:subgrid;position:sticky;inset-inline-start:0;background-color:#fff;inline-size:min-content;max-inline-size:30cqi;overflow:scroll;overscroll-behavior-inline:none;scrollbar-width:none}._phylogeneticTree_34869_60{grid-row:1 row-start / -1 row-end}._labels_34869_64{grid-row:1 row-start / -1 row-end;display:grid;grid-template-columns:repeat(var(--v71429b60),auto);grid-template-rows:subgrid;grid-auto-flow:column;column-gap:12px;padding-inline-end:12px;font-family:Spline Sans Mono;line-height:var(--v16792884);white-space:nowrap}._sequenceColumn_34869_77{grid-row:header-start / -1 row-end;display:grid;grid-template-rows:subgrid}._sequenceColumn_34869_77+._sequenceColumn_34869_77{margin-inline-start:24px}._sequenceHeader_34869_86{grid-row:header;display:flex;flex-direction:column;justify-content:end;min-inline-size:0;position:sticky;inset-block-start:0;background-color:#fff}._sequenceName_34869_97{margin-block-end:4px;font-weight:700;line-height:20px;inline-size:fit-content;position:sticky;inset-inline-start:var(--v49944722)}._sequenceRowsContainer_34869_106{grid-row:1 row-start / -1 row-end;display:grid;grid-template-rows:subgrid}._sequenceRow_34869_106{font-family:Spline Sans Mono;font-weight:600;line-height:var(--v16792884);letter-spacing:var(--v622f88b4);text-indent:calc(var(--v622f88b4) / 2);inline-size:calc-size(min-content,round(down,size,var(--c9eaa2b8)));white-space:nowrap}._corner_34869_125{grid-column:sidebar;grid-row:header;position:sticky;inset-inline-start:0;inset-block-start:0;background-color:#fff}")),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();
|
|
2
|
+
const e = "_root_34869_2", n = "_sidebar_34869_14", s = "_referenceCell_34869_20", o = "_table_34869_28", c = "_phylogeneticTree_34869_60", _ = "_labels_34869_64", r = "_sequenceColumn_34869_77", t = "_sequenceHeader_34869_86", l = "_sequenceName_34869_97", a = "_sequenceRowsContainer_34869_106", u = "_sequenceRow_34869_106", q = "_corner_34869_125", b = {
|
|
3
|
+
root: e,
|
|
4
|
+
sidebar: n,
|
|
5
|
+
referenceCell: s,
|
|
6
|
+
table: o,
|
|
7
|
+
phylogeneticTree: c,
|
|
8
|
+
labels: _,
|
|
9
|
+
sequenceColumn: r,
|
|
10
|
+
sequenceHeader: t,
|
|
11
|
+
sequenceName: l,
|
|
12
|
+
sequenceRowsContainer: a,
|
|
13
|
+
sequenceRow: u,
|
|
14
|
+
corner: q
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
q as corner,
|
|
18
|
+
b as default,
|
|
19
|
+
_ as labels,
|
|
20
|
+
c as phylogeneticTree,
|
|
21
|
+
s as referenceCell,
|
|
22
|
+
e as root,
|
|
23
|
+
r as sequenceColumn,
|
|
24
|
+
t as sequenceHeader,
|
|
25
|
+
l as sequenceName,
|
|
26
|
+
u as sequenceRow,
|
|
27
|
+
a as sequenceRowsContainer,
|
|
28
|
+
n as sidebar,
|
|
29
|
+
o as table
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=MultiSequenceAlignmentView.vue3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSequenceAlignmentView.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TreeNodeData } from './phylogenetic-tree.worker';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
tree: TreeNodeData[];
|
|
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;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import o from "./PhylogeneticTree.vue2.js";
|
|
2
|
+
import s from "./PhylogeneticTree.vue3.js";
|
|
3
|
+
import e from "./_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const t = {
|
|
5
|
+
$style: s
|
|
6
|
+
}, f = /* @__PURE__ */ e(o, [["__cssModules", t]]);
|
|
7
|
+
export {
|
|
8
|
+
f as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=PhylogeneticTree.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhylogeneticTree.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|