@platforma-sdk/ui-vue 1.41.19 → 1.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/.turbo/turbo-build.log +18 -18
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +18 -0
  4. package/dist/components/PlAgDataTable/sources/table-source-v2.js +11 -11
  5. package/dist/components/PlMultiSequenceAlignment/Legend.vue.d.ts +2 -2
  6. package/dist/components/PlMultiSequenceAlignment/Legend.vue.d.ts.map +1 -1
  7. package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js +11 -11
  8. package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js +8 -8
  9. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts +12 -6
  10. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts.map +1 -1
  11. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js +80 -65
  12. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js.map +1 -1
  13. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js +14 -12
  14. package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js.map +1 -1
  15. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts +36 -1
  16. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts.map +1 -1
  17. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js +146 -111
  18. package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js.map +1 -1
  19. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.d.ts +2 -0
  20. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.d.ts.map +1 -1
  21. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js +71 -68
  22. package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js.map +1 -1
  23. package/dist/components/PlMultiSequenceAlignment/chemical-properties.d.ts +42 -6
  24. package/dist/components/PlMultiSequenceAlignment/chemical-properties.d.ts.map +1 -1
  25. package/dist/components/PlMultiSequenceAlignment/chemical-properties.js +96 -130
  26. package/dist/components/PlMultiSequenceAlignment/chemical-properties.js.map +1 -1
  27. package/dist/components/PlMultiSequenceAlignment/data.d.ts +3 -9
  28. package/dist/components/PlMultiSequenceAlignment/data.d.ts.map +1 -1
  29. package/dist/components/PlMultiSequenceAlignment/data.js +197 -211
  30. package/dist/components/PlMultiSequenceAlignment/data.js.map +1 -1
  31. package/dist/components/PlMultiSequenceAlignment/markup.d.ts +7 -5
  32. package/dist/components/PlMultiSequenceAlignment/markup.d.ts.map +1 -1
  33. package/dist/components/PlMultiSequenceAlignment/markup.js +47 -26
  34. package/dist/components/PlMultiSequenceAlignment/markup.js.map +1 -1
  35. package/dist/components/PlMultiSequenceAlignment/types.d.ts +1 -1
  36. package/dist/components/PlMultiSequenceAlignment/types.d.ts.map +1 -1
  37. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +18 -18
  38. package/dist/defineApp.js +6 -6
  39. package/dist/internal/createAppV2.js +12 -12
  40. package/dist/lib/model/common/dist/index.js +24 -24
  41. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js +7 -7
  42. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +8 -8
  43. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js.map +1 -1
  44. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +1 -1
  45. package/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js +111 -165
  46. package/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js.map +1 -1
  47. package/dist/node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/shared/index.js +1 -1
  48. package/dist/sdk/model/dist/index.js +1 -1
  49. package/package.json +4 -4
  50. package/src/components/PlMultiSequenceAlignment/Legend.vue +4 -3
  51. package/src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue +66 -46
  52. package/src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue +85 -34
  53. package/src/components/PlMultiSequenceAlignment/README.md +10 -8
  54. package/src/components/PlMultiSequenceAlignment/Toolbar.vue +4 -1
  55. package/src/components/PlMultiSequenceAlignment/chemical-properties.ts +154 -161
  56. package/src/components/PlMultiSequenceAlignment/data.ts +65 -85
  57. package/src/components/PlMultiSequenceAlignment/markup.ts +47 -15
  58. package/src/components/PlMultiSequenceAlignment/types.ts +1 -1
@@ -1,83 +1,98 @@
1
- import { defineComponent as B, useCssVars as $, computed as p, createElementBlock as l, openBlock as s, normalizeClass as u, createElementVNode as a, createCommentVNode as c, createBlock as h, Fragment as o, renderList as i, normalizeStyle as q, toDisplayString as m } from "vue";
2
- import { useBase64 as f } from "../../node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js";
3
- import C from "./Consensus.vue.js";
4
- import N from "./SeqLogo.vue.js";
5
- const V = /* @__PURE__ */ B({
1
+ import { defineComponent as I, useCssVars as R, computed as v, useTemplateRef as N, createElementBlock as l, openBlock as s, normalizeClass as n, createElementVNode as r, createBlock as g, createCommentVNode as a, Fragment as o, renderList as d, normalizeStyle as q, toDisplayString as m } from "vue";
2
+ import { useObjectUrl as L } from "../../node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js";
3
+ import S from "./Consensus.vue.js";
4
+ import V from "./Legend.vue.js";
5
+ import z from "./SeqLogo.vue.js";
6
+ const A = /* @__PURE__ */ I({
6
7
  __name: "MultiSequenceAlignmentView",
7
8
  props: {
8
- sequenceNames: {},
9
9
  sequences: {},
10
+ sequenceNames: {},
10
11
  labelRows: {},
11
12
  residueCounts: {},
12
- highlightImageBlob: {},
13
- consensus: { type: Boolean },
14
- seqLogo: { type: Boolean }
13
+ highlightImage: {},
14
+ widgets: {}
15
15
  },
16
- setup(d) {
17
- $((e) => ({
18
- "10a70bbb": v.value
16
+ setup(c, { expose: k }) {
17
+ R((e) => ({
18
+ "3cff4522": C.value
19
19
  }));
20
- const { base64: g } = f(() => d.highlightImageBlob), v = p(
21
- () => g.value ? `url('${g.value}')` : "none"
22
- ), b = p(
20
+ const b = N("rootRef");
21
+ k({ rootEl: b });
22
+ const h = L(() => {
23
+ var e;
24
+ return (e = c.highlightImage) == null ? void 0 : e.blob;
25
+ }), C = v(
26
+ () => h.value ? `url('${h.value}')` : "none"
27
+ ), $ = v(
23
28
  () => {
24
29
  var e;
25
- return (e = d.sequences.at(0)) == null ? void 0 : e.split(" ").map(({ length: y }) => y);
30
+ return (e = c.sequences.at(0)) == null ? void 0 : e.split(" ").map(({ length: p }) => p);
26
31
  }
27
32
  );
28
- return (e, y) => (s(), l("div", {
29
- class: u(["pl-scrollable", e.$style.root])
30
- }, [
31
- a("div", {
32
- class: u(e.$style.corner)
33
- }, null, 2),
34
- a("div", {
35
- class: u(e.$style.header)
33
+ return (e, p) => {
34
+ var y, f;
35
+ return s(), l("div", {
36
+ ref: "rootRef",
37
+ class: n(e.$style.root)
36
38
  }, [
37
- e.sequenceNames.length > 1 ? (s(), l("div", {
38
- key: 0,
39
- class: u(e.$style["sequence-names"])
39
+ r("div", {
40
+ class: n(["pl-scrollable", e.$style.table])
40
41
  }, [
41
- (s(!0), l(o, null, i(e.sequenceNames, (t, n) => {
42
- var r;
43
- return s(), l("span", {
44
- key: n,
45
- style: q(
46
- {
47
- inlineSize: `calc(${((r = b.value) == null ? void 0 : r.at(n)) ?? 0} * 20px)`
48
- }
49
- )
50
- }, m(t), 5);
51
- }), 128))
52
- ], 2)) : c("", !0),
53
- e.consensus ? (s(), h(C, {
54
- key: 1,
55
- "residue-counts": e.residueCounts
56
- }, null, 8, ["residue-counts"])) : c("", !0),
57
- e.seqLogo ? (s(), h(N, {
58
- key: 2,
59
- "residue-counts": e.residueCounts
60
- }, null, 8, ["residue-counts"])) : c("", !0)
61
- ], 2),
62
- a("div", {
63
- class: u(e.$style.labels)
64
- }, [
65
- (s(!0), l(o, null, i(e.labelRows, (t, n) => (s(), l(o, null, [
66
- (s(!0), l(o, null, i(t, (r, k) => (s(), l("div", {
67
- key: k,
68
- style: q({ gridRow: n + 1 })
69
- }, m(r), 5))), 128))
70
- ], 64))), 256))
71
- ], 2),
72
- a("div", {
73
- class: u(e.$style.sequences)
74
- }, [
75
- (s(!0), l(o, null, i(e.sequences, (t, n) => (s(), l("div", { key: n }, m(t), 1))), 128))
76
- ], 2)
77
- ], 2));
42
+ r("div", {
43
+ class: n(e.$style.corner)
44
+ }, null, 2),
45
+ r("div", {
46
+ class: n(e.$style.header)
47
+ }, [
48
+ e.sequenceNames.length > 1 ? (s(), l("div", {
49
+ key: 0,
50
+ class: n(e.$style["sequence-names"])
51
+ }, [
52
+ (s(!0), l(o, null, d(e.sequenceNames, (u, t) => {
53
+ var i;
54
+ return s(), l("span", {
55
+ key: t,
56
+ style: q({
57
+ inlineSize: (((i = $.value) == null ? void 0 : i.at(t)) ?? 0) * 20 + "px"
58
+ })
59
+ }, m(u), 5);
60
+ }), 128))
61
+ ], 2)) : a("", !0),
62
+ e.widgets.includes("consensus") ? (s(), g(S, {
63
+ key: 1,
64
+ "residue-counts": e.residueCounts
65
+ }, null, 8, ["residue-counts"])) : a("", !0),
66
+ e.widgets.includes("seqLogo") ? (s(), g(z, {
67
+ key: 2,
68
+ "residue-counts": e.residueCounts
69
+ }, null, 8, ["residue-counts"])) : a("", !0)
70
+ ], 2),
71
+ r("div", {
72
+ class: n(e.$style.labels)
73
+ }, [
74
+ (s(!0), l(o, null, d(e.labelRows, (u, t) => (s(), l(o, null, [
75
+ (s(!0), l(o, null, d(u, (i, w) => (s(), l("div", {
76
+ key: w,
77
+ style: q({ gridRow: t + 1 })
78
+ }, m(i), 5))), 128))
79
+ ], 64))), 256))
80
+ ], 2),
81
+ r("div", {
82
+ class: n(e.$style.sequences)
83
+ }, [
84
+ (s(!0), l(o, null, d(e.sequences, (u, t) => (s(), l("div", { key: t }, m(u), 1))), 128))
85
+ ], 2)
86
+ ], 2),
87
+ (y = e.widgets) != null && y.includes("legend") && ((f = e.highlightImage) != null && f.legend) ? (s(), g(V, {
88
+ key: 0,
89
+ legend: e.highlightImage.legend
90
+ }, null, 8, ["legend"])) : a("", !0)
91
+ ], 2);
92
+ };
78
93
  }
79
94
  });
80
95
  export {
81
- V as default
96
+ A as default
82
97
  };
83
98
  //# sourceMappingURL=MultiSequenceAlignmentView.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSequenceAlignmentView.vue2.js","sources":["../../../src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useBase64 } from '@vueuse/core';\nimport { computed } from 'vue';\nimport Consensus from './Consensus.vue';\nimport SeqLogo from './SeqLogo.vue';\nimport type { ResidueCounts } from './types';\n\nconst { sequences, highlightImageBlob } = defineProps<{\n sequenceNames: string[];\n sequences: string[];\n labelRows: string[][];\n residueCounts: ResidueCounts;\n highlightImageBlob: Blob | undefined;\n consensus: boolean;\n seqLogo: boolean;\n}>();\n\nconst { base64: highlightImageBase64 } = useBase64(() => highlightImageBlob);\n\nconst highlightImageUrl = computed(() =>\n highlightImageBase64.value\n ? `url('${highlightImageBase64.value}')`\n : 'none',\n);\n\nconst sequenceLengths = computed(() =>\n sequences.at(0)?.split(' ').map(({ length }) => length),\n);\n</script>\n\n<template>\n <div :class=\"['pl-scrollable', $style.root]\">\n <div :class=\"$style.corner\" />\n <div :class=\"$style.header\">\n <div v-if=\"sequenceNames.length > 1\" :class=\"$style['sequence-names']\">\n <span\n v-for=\"(name, index) of sequenceNames\"\n :key=\"index\"\n :style=\"\n {\n inlineSize: `calc(${\n sequenceLengths?.at(index) ?? 0\n } * 20px)`,\n }\n \"\n >{{ name }}</span>\n </div>\n <Consensus v-if=\"consensus\" :residue-counts />\n <SeqLogo v-if=\"seqLogo\" :residue-counts />\n </div>\n <div :class=\"$style.labels\">\n <template v-for=\"(labelRow, rowIndex) of labelRows\">\n <div\n v-for=\"(label, labelIndex) of labelRow\"\n :key=\"labelIndex\"\n :style=\"{ gridRow: rowIndex + 1 }\"\n >\n {{ label }}\n </div>\n </template>\n </div>\n <div :class=\"$style.sequences\">\n <div\n v-for=\"(sequence, index) of sequences\"\n :key=\"index\"\n >\n {{ sequence }}\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.root {\n display: grid;\n grid-template-areas:\n \"corner header\"\n \"labels sequences\";\n text-wrap: nowrap;\n justify-content: start;\n}\n\n.corner {\n grid-area: corner;\n background-color: white;\n position: sticky;\n inset-inline-start: 0;\n inset-block-start: 0;\n z-index: 2;\n}\n\n.header {\n grid-area: header;\n background-color: white;\n position: sticky;\n inset-block-start: 0;\n z-index: 1;\n}\n\n.sequence-names {\n display: flex;\n font-weight: 700;\n line-height: 20px;\n margin-block-end: 4px;\n gap: 20px;\n}\n\n.labels {\n grid-area: labels;\n display: grid;\n grid-auto-flow: dense;\n column-gap: 12px;\n background-color: white;\n position: sticky;\n inset-inline-start: 0;\n z-index: 1;\n padding-inline-end: 12px;\n font-family: Spline Sans Mono;\n line-height: 24px;\n}\n\n.sequences {\n grid-area: sequences;\n display: flex;\n flex-direction: column;\n font-family: Spline Sans Mono;\n font-weight: 600;\n line-height: 24px;\n letter-spacing: 11.6px;\n text-indent: 5.8px;\n background-image: v-bind(highlightImageUrl);\n background-repeat: no-repeat;\n background-size: calc(100% - 5.8px) 100%;\n image-rendering: pixelated;\n}\n</style>\n"],"names":["highlightImageBase64","useBase64","__props","highlightImageUrl","computed","sequenceLengths","_a","length"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,UAAM,EAAE,QAAQA,EAAA,IAAyBC,EAAU,MAAMC,EAAA,kBAAkB,GAErEC,IAAoBC;AAAA,MAAS,MACjCJ,EAAqB,QACjB,QAAQA,EAAqB,KAAK,OAClC;AAAA,IACN,GAEMK,IAAkBD;AAAA,MAAS,MAAA;;AAC/B,gBAAAE,IAAAJ,YAAU,GAAG,CAAC,MAAd,gBAAAI,EAAiB,MAAM,KAAK,IAAI,CAAC,EAAE,QAAAC,QAAaA;AAAA;AAAA,IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MultiSequenceAlignmentView.vue2.js","sources":["../../../src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useObjectUrl } from '@vueuse/core';\nimport { computed, useTemplateRef } from 'vue';\nimport Consensus from './Consensus.vue';\nimport Legend from './Legend.vue';\nimport SeqLogo from './SeqLogo.vue';\nimport type { HighlightLegend, ResidueCounts } from './types';\n\nconst { sequences, highlightImage } = defineProps<{\n sequences: string[];\n sequenceNames: string[];\n labelRows: string[][];\n residueCounts: ResidueCounts;\n highlightImage: {\n blob: Blob;\n legend: HighlightLegend;\n } | undefined;\n widgets: ('consensus' | 'seqLogo' | 'legend')[];\n}>();\n\nconst rootEl = useTemplateRef('rootRef');\ndefineExpose({ rootEl });\n\nconst highlightImageObjectUrl = useObjectUrl(() => highlightImage?.blob);\nconst highlightImageCssUrl = computed(() =>\n highlightImageObjectUrl.value\n ? `url('${highlightImageObjectUrl.value}')`\n : 'none',\n);\n\nconst sequenceLengths = computed(() =>\n sequences.at(0)?.split(' ').map(({ length }) => length),\n);\n</script>\n\n<template>\n <div ref=\"rootRef\" :class=\"$style.root\">\n <div :class=\"['pl-scrollable', $style.table]\">\n <div :class=\"$style.corner\" />\n <div :class=\"$style.header\">\n <div v-if=\"sequenceNames.length > 1\" :class=\"$style['sequence-names']\">\n <span\n v-for=\"(name, index) of sequenceNames\"\n :key=\"index\"\n :style=\"{\n inlineSize: ((sequenceLengths?.at(index) ?? 0) * 20)\n + 'px',\n }\"\n >{{ name }}</span>\n </div>\n <Consensus v-if=\"widgets.includes('consensus')\" :residue-counts />\n <SeqLogo v-if=\"widgets.includes('seqLogo')\" :residue-counts />\n </div>\n <div :class=\"$style.labels\">\n <template v-for=\"(labelRow, rowIndex) of labelRows\">\n <div\n v-for=\"(label, labelIndex) of labelRow\"\n :key=\"labelIndex\"\n :style=\"{ gridRow: rowIndex + 1 }\"\n >\n {{ label }}\n </div>\n </template>\n </div>\n <div :class=\"$style.sequences\">\n <div\n v-for=\"(sequence, index) of sequences\"\n :key=\"index\"\n >\n {{ sequence }}\n </div>\n </div>\n </div>\n <Legend\n v-if=\"widgets?.includes('legend') && highlightImage?.legend\"\n :legend=\"highlightImage.legend\"\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}\n\n.table {\n display: grid;\n grid-template-areas:\n \"corner header\"\n \"labels sequences\";\n text-wrap: nowrap;\n justify-content: start;\n @media print {\n overflow: visible;\n }\n}\n\n.corner {\n grid-area: corner;\n background-color: white;\n position: sticky;\n inset-inline-start: 0;\n inset-block-start: 0;\n z-index: 2;\n}\n\n.header {\n grid-area: header;\n background-color: white;\n position: sticky;\n inset-block-start: 0;\n z-index: 1;\n}\n\n.sequence-names {\n display: flex;\n font-weight: 700;\n line-height: 20px;\n margin-block-end: 4px;\n gap: 20px;\n}\n\n.labels {\n grid-area: labels;\n display: grid;\n grid-auto-flow: dense;\n column-gap: 12px;\n background-color: white;\n position: sticky;\n inset-inline-start: 0;\n z-index: 1;\n padding-inline-end: 12px;\n font-family: Spline Sans Mono;\n line-height: 24px;\n}\n\n.sequences {\n grid-area: sequences;\n display: flex;\n flex-direction: column;\n font-family: Spline Sans Mono;\n font-weight: 600;\n line-height: 24px;\n letter-spacing: 11.6px;\n text-indent: 5.8px;\n margin-inline-end: -5.8px;\n background-image: v-bind(highlightImageCssUrl);\n background-repeat: no-repeat;\n background-size: calc(100% - 5.8px) 100%;\n}\n</style>\n"],"names":["rootEl","useTemplateRef","__expose","highlightImageObjectUrl","useObjectUrl","_a","__props","highlightImageCssUrl","computed","sequenceLengths","length"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBM,UAAAA,IAASC,EAAe,SAAS;AAC1B,IAAAC,EAAA,EAAE,QAAAF,GAAQ;AAEvB,UAAMG,IAA0BC,EAAa,MAAM;;AAAA,cAAAC,IAAAC,EAAA,mBAAA,gBAAAD,EAAgB;AAAA,KAAI,GACjEE,IAAuBC;AAAA,MAAS,MACpCL,EAAwB,QACpB,QAAQA,EAAwB,KAAK,OACrC;AAAA,IACN,GAEMM,IAAkBD;AAAA,MAAS,MAAA;;AAC/B,gBAAAH,IAAAC,YAAU,GAAG,CAAC,MAAd,gBAAAD,EAAiB,MAAM,KAAK,IAAI,CAAC,EAAE,QAAAK,QAAaA;AAAA;AAAA,IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,18 +1,20 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._root_1uteo_2{display:grid;grid-template-areas:"corner header" "labels sequences";text-wrap:nowrap;justify-content:start}._corner_1uteo_11{grid-area:corner;background-color:#fff;position:sticky;inset-inline-start:0;inset-block-start:0;z-index:2}._header_1uteo_20{grid-area:header;background-color:#fff;position:sticky;inset-block-start:0;z-index:1}._sequence-names_1uteo_28{display:flex;font-weight:700;line-height:20px;margin-block-end:4px;gap:20px}._labels_1uteo_36{grid-area:labels;display:grid;grid-auto-flow:dense;column-gap:12px;background-color:#fff;position:sticky;inset-inline-start:0;z-index:1;padding-inline-end:12px;font-family:Spline Sans Mono;line-height:24px}._sequences_1uteo_50{grid-area:sequences;display:flex;flex-direction:column;font-family:Spline Sans Mono;font-weight:600;line-height:24px;letter-spacing:11.6px;text-indent:5.8px;background-image:var(--10a70bbb);background-repeat:no-repeat;background-size:calc(100% - 5.8px) 100%;image-rendering:pixelated}')),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
2
- const e = "_root_1uteo_2", o = "_corner_1uteo_11", s = "_header_1uteo_20", t = "_labels_1uteo_36", _ = "_sequences_1uteo_50", n = {
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._root_cgj1q_2{display:flex;flex-direction:column;gap:12px;min-block-size:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}._table_cgj1q_11{display:grid;grid-template-areas:"corner header" "labels sequences";text-wrap:nowrap;justify-content:start}@media print{._table_cgj1q_11{overflow:visible}}._corner_cgj1q_23{grid-area:corner;background-color:#fff;position:sticky;inset-inline-start:0;inset-block-start:0;z-index:2}._header_cgj1q_32{grid-area:header;background-color:#fff;position:sticky;inset-block-start:0;z-index:1}._sequence-names_cgj1q_40{display:flex;font-weight:700;line-height:20px;margin-block-end:4px;gap:20px}._labels_cgj1q_48{grid-area:labels;display:grid;grid-auto-flow:dense;column-gap:12px;background-color:#fff;position:sticky;inset-inline-start:0;z-index:1;padding-inline-end:12px;font-family:Spline Sans Mono;line-height:24px}._sequences_cgj1q_62{grid-area:sequences;display:flex;flex-direction:column;font-family:Spline Sans Mono;font-weight:600;line-height:24px;letter-spacing:11.6px;text-indent:5.8px;margin-inline-end:-5.8px;background-image:var(--3cff4522);background-repeat:no-repeat;background-size:calc(100% - 5.8px) 100%}')),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
2
+ const e = "_root_cgj1q_2", c = "_table_cgj1q_11", s = "_corner_cgj1q_23", _ = "_header_cgj1q_32", n = "_labels_cgj1q_48", o = "_sequences_cgj1q_62", t = {
3
3
  root: e,
4
- corner: o,
5
- header: s,
6
- "sequence-names": "_sequence-names_1uteo_28",
7
- labels: t,
8
- sequences: _
4
+ table: c,
5
+ corner: s,
6
+ header: _,
7
+ "sequence-names": "_sequence-names_cgj1q_40",
8
+ labels: n,
9
+ sequences: o
9
10
  };
10
11
  export {
11
- o as corner,
12
- n as default,
13
- s as header,
14
- t as labels,
12
+ s as corner,
13
+ t as default,
14
+ _ as header,
15
+ n as labels,
15
16
  e as root,
16
- _ as sequences
17
+ o as sequences,
18
+ c as table
17
19
  };
18
20
  //# sourceMappingURL=MultiSequenceAlignmentView.vue3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSequenceAlignmentView.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"MultiSequenceAlignmentView.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -24,6 +24,41 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
24
24
  "update:modelValue": (value: PlMultiSequenceAlignmentModel) => any;
25
25
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
26
26
  "onUpdate:modelValue"?: ((value: PlMultiSequenceAlignmentModel) => any) | undefined;
27
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
27
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
28
+ msa: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
29
+ sequences: string[];
30
+ sequenceNames: string[];
31
+ labelRows: string[][];
32
+ residueCounts: import('./types').ResidueCounts;
33
+ highlightImage: {
34
+ blob: Blob;
35
+ legend: import('./types').HighlightLegend;
36
+ } | undefined;
37
+ widgets: ("consensus" | "seqLogo" | "legend")[];
38
+ }> & Readonly<{}>, {
39
+ rootEl: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
40
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
41
+ rootRef: HTMLDivElement;
42
+ }, HTMLDivElement, import('vue').ComponentProvideOptions, {
43
+ P: {};
44
+ B: {};
45
+ D: {};
46
+ C: {};
47
+ M: {};
48
+ Defaults: {};
49
+ }, Readonly<{
50
+ sequences: string[];
51
+ sequenceNames: string[];
52
+ labelRows: string[][];
53
+ residueCounts: import('./types').ResidueCounts;
54
+ highlightImage: {
55
+ blob: Blob;
56
+ legend: import('./types').HighlightLegend;
57
+ } | undefined;
58
+ widgets: ("consensus" | "seqLogo" | "legend")[];
59
+ }> & Readonly<{}>, {
60
+ rootEl: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
61
+ }, {}, {}, {}, {}> | null;
62
+ }, any>;
28
63
  export default _default;
29
64
  //# sourceMappingURL=PlMultiSequenceAlignment.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlMultiSequenceAlignment.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue"],"names":[],"mappings":"AAoQA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEZ,6BAA6B,EAE7B,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAyB9B,KAAK,WAAW,GAAG;IACjB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACvC,CAAC;AAmIF,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC1C,GAAG,WAAW,CAAC;;;;;;AAyLhB,wBAOG"}
1
+ {"version":3,"file":"PlMultiSequenceAlignment.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue"],"names":[],"mappings":"AAuTA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAEjB,KAAK,6BAA6B,EAElC,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AA8B9B,KAAK,WAAW,GAAG;IACjB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACvC,CAAC;AAwLF,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC1C,GAAG,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkLhB,wBAQG"}
@@ -1,17 +1,17 @@
1
- import { defineComponent as R, mergeModels as J, useModel as U, onBeforeMount as $, reactive as d, computed as v, watchEffect as x, createElementBlock as w, openBlock as m, Fragment as S, createVNode as M, createBlock as h, unref as a, withCtx as q, createTextVNode as F, toDisplayString as C, createCommentVNode as O, normalizeClass as G } from "vue";
2
- import { isJsonEqual as b } from "../../lib/util/helpers/dist/index.js";
1
+ import { defineComponent as L, mergeModels as U, useModel as J, onBeforeMount as G, reactive as g, computed as R, watchEffect as N, useTemplateRef as H, createElementBlock as T, openBlock as f, Fragment as V, createVNode as j, createBlock as S, unref as i, withCtx as b, createTextVNode as k, toDisplayString as q, createCommentVNode as A, normalizeClass as K } from "vue";
2
+ import { isJsonEqual as I } from "../../lib/util/helpers/dist/index.js";
3
3
  import "../../lib/ui/uikit/dist/index.js";
4
- import { useSequenceColumnsOptions as H, useLabelColumnsOptions as K, useMarkupColumnsOptions as Q, useMultipleAlignmentData as W, sequenceLimit as z } from "./data.js";
5
- import X from "./Legend.vue.js";
6
- import { runMigrations as Y } from "./migrations.js";
7
- import Z from "./MultiSequenceAlignmentView.vue.js";
4
+ import { getRawPlatformaInstance as Q } from "../../sdk/model/dist/index.js";
5
+ import { useSequenceColumnsOptions as W, useLabelColumnsOptions as X, useMarkupColumnsOptions as Y, useMultipleAlignmentData as Z, sequenceLimit as B } from "./data.js";
6
+ import { runMigrations as ee } from "./migrations.js";
7
+ import te from "./MultiSequenceAlignmentView.vue.js";
8
8
  import { defaultSettings as D } from "./settings.js";
9
- import ee from "./Toolbar.vue.js";
9
+ import oe from "./Toolbar.vue.js";
10
10
  import P from "../../lib/ui/uikit/dist/components/PlAlert/PlAlert.vue.js";
11
- import oe from "../../lib/ui/uikit/dist/components/PlSplash/PlSplash.vue.js";
12
- const pe = /* @__PURE__ */ R({
11
+ import ne from "../../lib/ui/uikit/dist/components/PlSplash/PlSplash.vue.js";
12
+ const ge = /* @__PURE__ */ L({
13
13
  __name: "PlMultiSequenceAlignment",
14
- props: /* @__PURE__ */ J({
14
+ props: /* @__PURE__ */ U({
15
15
  pFrame: {},
16
16
  sequenceColumnPredicate: { type: Function },
17
17
  selection: {}
@@ -20,36 +20,30 @@ const pe = /* @__PURE__ */ R({
20
20
  modelModifiers: {}
21
21
  }),
22
22
  emits: ["update:modelValue"],
23
- setup(V) {
24
- const p = U(V, "modelValue");
25
- $(() => {
26
- Y(p);
23
+ setup(x) {
24
+ const h = J(x, "modelValue");
25
+ G(() => {
26
+ ee(h);
27
27
  });
28
- const e = d({
28
+ const o = g({
29
29
  ...D
30
- }), i = V, g = d(H(() => ({
31
- pFrame: i.pFrame,
32
- sequenceColumnPredicate: i.sequenceColumnPredicate
33
- }))), f = d(K(() => ({
34
- pFrame: i.pFrame,
35
- sequenceColumnIds: e.sequenceColumnIds
36
- }))), I = d(Q(() => ({
37
- pFrame: i.pFrame,
38
- sequenceColumnIds: e.sequenceColumnIds
39
- }))), y = v(
40
- () => {
41
- var o;
42
- return ((o = e.colorScheme) == null ? void 0 : o.type) === "markup" ? e.colorScheme.columnId : void 0;
43
- }
44
- ), s = d(W(() => ({
45
- pframe: i.pFrame,
46
- sequenceColumnIds: e.sequenceColumnIds,
47
- labelColumnIds: e.labelColumnIds,
48
- markupColumnId: y.value,
49
- selection: i.selection,
50
- colorScheme: e.colorScheme,
51
- alignmentParams: e.alignmentParams
52
- }))), k = new Intl.NumberFormat("en").format, T = v(
30
+ }), c = x, C = g(W(() => ({
31
+ pFrame: c.pFrame,
32
+ sequenceColumnPredicate: c.sequenceColumnPredicate
33
+ }))), y = g(X(() => ({
34
+ pFrame: c.pFrame,
35
+ sequenceColumnIds: o.sequenceColumnIds
36
+ }))), v = g(Y(() => ({
37
+ pFrame: c.pFrame,
38
+ sequenceColumnIds: o.sequenceColumnIds
39
+ }))), l = g(Z(() => ({
40
+ pframe: c.pFrame,
41
+ sequenceColumnIds: o.sequenceColumnIds,
42
+ labelColumnIds: o.labelColumnIds,
43
+ selection: c.selection,
44
+ colorScheme: o.colorScheme,
45
+ alignmentParams: o.alignmentParams
46
+ }))), w = new Intl.NumberFormat("en").format, _ = R(
53
47
  () => [
54
48
  {
55
49
  label: "Chemical Properties",
@@ -59,122 +53,163 @@ const pe = /* @__PURE__ */ R({
59
53
  label: "No Color",
60
54
  value: { type: "no-color" }
61
55
  },
62
- ...(I.data ?? []).map(({ label: o, value: n }) => ({
63
- label: o,
56
+ ...(v.data ?? []).map(({ label: t, value: n }) => ({
57
+ label: t,
64
58
  value: {
65
59
  type: "markup",
66
60
  columnId: n
67
61
  }
68
62
  }))
69
63
  ]
70
- ), L = v(
71
- () => g.error ?? f.error ?? I.error ?? s.error
64
+ ), O = R(
65
+ () => C.error ?? y.error ?? v.error ?? l.error
72
66
  );
73
- function N(o) {
74
- p.value = Object.fromEntries(
75
- Object.entries({ ...p.value, ...o }).filter(([n, l]) => l !== void 0)
67
+ function E(t) {
68
+ h.value = Object.fromEntries(
69
+ Object.entries({ ...h.value, ...t }).filter(([n, e]) => e !== void 0)
76
70
  );
77
71
  }
78
- return x(() => {
79
- var n, l;
80
- const o = Object.fromEntries(
72
+ N(() => {
73
+ var n, e;
74
+ const t = Object.fromEntries(
81
75
  Object.entries({
82
76
  ...D,
83
- sequenceColumnIds: (n = g.data) == null ? void 0 : n.defaults,
84
- labelColumnIds: (l = f.data) == null ? void 0 : l.defaults,
85
- ...p.value
77
+ sequenceColumnIds: (n = C.data) == null ? void 0 : n.defaults,
78
+ labelColumnIds: (e = y.data) == null ? void 0 : e.defaults,
79
+ ...h.value
86
80
  }).filter(
87
- ([r, t]) => !b(
88
- e[r],
89
- t
81
+ ([a, r]) => !I(
82
+ o[a],
83
+ r
90
84
  )
91
85
  )
92
86
  );
93
- Object.assign(e, o);
94
- }), x(() => {
95
- var n, l, r;
96
- const o = [];
97
- (n = e.sequenceColumnIds) != null && n.some(
98
- (t) => {
87
+ Object.assign(o, t);
88
+ }), N(() => {
89
+ var e, a, r, m;
90
+ const t = [];
91
+ (e = o.sequenceColumnIds) != null && e.some(
92
+ (s) => {
99
93
  var u;
100
- return !((u = g.data) != null && u.options.some(
101
- ({ value: c }) => b(c, t)
94
+ return !((u = C.data) != null && u.options.some(
95
+ ({ value: d }) => I(d, s)
102
96
  ));
103
97
  }
104
- ) && o.push("sequenceColumnIds"), (l = e.labelColumnIds) != null && l.some(
105
- (t) => {
98
+ ) && t.push("sequenceColumnIds"), (a = o.labelColumnIds) != null && a.some(
99
+ (s) => {
106
100
  var u;
107
- return !((u = f.data) != null && u.options.some(
108
- ({ value: c }) => b(c, t)
101
+ return !((u = y.data) != null && u.options.some(
102
+ ({ value: d }) => I(d, s)
109
103
  ));
110
104
  }
111
- ) && o.push("labelColumnIds"), y.value && !((r = I.data) != null && r.some(
112
- ({ value: t }) => b(t, y.value)
113
- )) && o.push("colorScheme"), o.length && N(Object.fromEntries(
114
- o.map((t) => [t, void 0])
105
+ ) && t.push("labelColumnIds");
106
+ const n = ((r = o.colorScheme) == null ? void 0 : r.type) === "markup" ? o.colorScheme.columnId : void 0;
107
+ n && !((m = v.data) != null && m.some(
108
+ ({ value: s }) => I(s, n)
109
+ )) && t.push("colorScheme"), t.length && E(Object.fromEntries(
110
+ t.map((s) => [s, void 0])
115
111
  ));
116
- }), (o, n) => {
117
- var l, r, t, u;
118
- return m(), w(S, null, [
119
- M(ee, {
120
- settings: e,
121
- "sequence-column-options": (l = g.data) == null ? void 0 : l.options,
122
- "label-column-options": (r = f.data) == null ? void 0 : r.options,
123
- "color-scheme-options": T.value,
124
- onUpdateSettings: N
112
+ });
113
+ const $ = H("msa");
114
+ async function z() {
115
+ var d, F, M;
116
+ const t = (F = (d = Q()) == null ? void 0 : d.lsDriver) == null ? void 0 : F.exportToPdf;
117
+ if (!t)
118
+ return console.error(
119
+ "API getPlatformaRawInstance().lsDriver.exportToPdf is not available"
120
+ );
121
+ const n = (M = $.value) == null ? void 0 : M.rootEl;
122
+ if (!n)
123
+ throw new Error("MSA element is not available.");
124
+ const e = document.createElement("div");
125
+ e.id = `print-target-${crypto.randomUUID()}`;
126
+ const a = new CSSStyleSheet();
127
+ document.adoptedStyleSheets.push(a), a.insertRule(`
128
+ @media screen {
129
+ #${e.id} {
130
+ visibility: hidden;
131
+ position: fixed;
132
+ }
133
+ }`), e.replaceChildren(n.cloneNode(!0)), document.body.appendChild(e);
134
+ const { height: r, width: m } = e.getBoundingClientRect(), s = CSS.cm(1), u = [m, r].map((p) => CSS.px(p).add(s.mul(2))).join(" ");
135
+ a.insertRule(`
136
+ @media print {
137
+ @page {
138
+ size: ${u};
139
+ margin: ${s};
140
+ }
141
+ body > :not(#${e.id}) {
142
+ display: none;
143
+ }
144
+ }`);
145
+ try {
146
+ await t();
147
+ } catch (p) {
148
+ console.error(p);
149
+ } finally {
150
+ document.body.removeChild(e);
151
+ const p = document.adoptedStyleSheets.indexOf(a);
152
+ p >= 0 && document.adoptedStyleSheets.splice(p, 1);
153
+ }
154
+ }
155
+ return (t, n) => {
156
+ var e, a, r, m;
157
+ return f(), T(V, null, [
158
+ j(oe, {
159
+ settings: o,
160
+ "sequence-column-options": (e = C.data) == null ? void 0 : e.options,
161
+ "label-column-options": (a = y.data) == null ? void 0 : a.options,
162
+ "color-scheme-options": _.value,
163
+ onUpdateSettings: E,
164
+ onExport: z
125
165
  }, null, 8, ["settings", "sequence-column-options", "label-column-options", "color-scheme-options"]),
126
- L.value ? (m(), h(a(P), {
166
+ O.value ? (f(), S(i(P), {
127
167
  key: 0,
128
168
  type: "error"
129
169
  }, {
130
- default: q(() => [
131
- F(C(L.value), 1)
170
+ default: b(() => [
171
+ k(q(O.value), 1)
132
172
  ]),
133
173
  _: 1
134
- })) : !s.isLoading && (((t = s.data) == null ? void 0 : t.sequences) ?? []).length < 2 ? (m(), h(a(P), {
174
+ })) : !l.isLoading && (((r = l.data) == null ? void 0 : r.sequences) ?? []).length < 2 ? (f(), S(i(P), {
135
175
  key: 1,
136
176
  type: "warn",
137
177
  icon: ""
138
178
  }, {
139
- default: q(() => n[0] || (n[0] = [
140
- F(" Please select at least one sequence column and two or more rows to run alignment ")
179
+ default: b(() => n[0] || (n[0] = [
180
+ k(" Please select at least one sequence column and two or more rows to run alignment ")
141
181
  ])),
142
182
  _: 1
143
- })) : (m(), w(S, { key: 2 }, [
144
- (u = s.data) != null && u.exceedsLimit ? (m(), h(a(P), {
183
+ })) : (f(), T(V, { key: 2 }, [
184
+ (m = l.data) != null && m.exceedsLimit ? (f(), S(i(P), {
145
185
  key: 0,
146
186
  type: "warn",
147
187
  icon: "",
148
188
  label: "Visualization is limited"
149
189
  }, {
150
- default: q(() => [
151
- F(" MSA visualization supports " + C(a(k)(2)) + " to " + C(a(k)(a(z))) + " sequences. Only the first " + C(a(k)(a(z))) + " will be displayed. ", 1)
190
+ default: b(() => [
191
+ k(" MSA visualization supports " + q(i(w)(2)) + " to " + q(i(w)(i(B))) + " sequences. Only the first " + q(i(w)(i(B))) + " will be displayed. ", 1)
152
192
  ]),
153
193
  _: 1
154
- })) : O("", !0),
155
- M(a(oe), {
194
+ })) : A("", !0),
195
+ j(i(ne), {
156
196
  type: "transparent",
157
- class: G(o.$style.splash),
158
- loading: s.isLoading
197
+ class: K(t.$style.splash),
198
+ loading: l.isLoading
159
199
  }, {
160
- default: q(() => {
161
- var c, j, E, _, A, B;
200
+ default: b(() => {
201
+ var s;
162
202
  return [
163
- (c = s.data) != null && c.sequences.length ? (m(), w(S, { key: 0 }, [
164
- M(Z, {
165
- "sequence-names": s.data.sequenceNames,
166
- sequences: s.data.sequences,
167
- "label-rows": s.data.labelsRows,
168
- "residue-counts": s.data.residueCounts,
169
- "highlight-image-blob": (j = s.data.highlightImage) == null ? void 0 : j.blob,
170
- consensus: ((E = e.widgets) == null ? void 0 : E.includes("consensus")) ?? !1,
171
- "seq-logo": ((_ = e.widgets) == null ? void 0 : _.includes("seqLogo")) ?? !1
172
- }, null, 8, ["sequence-names", "sequences", "label-rows", "residue-counts", "highlight-image-blob", "consensus", "seq-logo"]),
173
- (A = e.widgets) != null && A.includes("legend") && ((B = s.data.highlightImage) != null && B.colorMap) ? (m(), h(X, {
174
- key: 0,
175
- colors: s.data.highlightImage.colorMap
176
- }, null, 8, ["colors"])) : O("", !0)
177
- ], 64)) : O("", !0)
203
+ (s = l.data) != null && s.sequences.length ? (f(), S(te, {
204
+ key: 0,
205
+ ref: "msa",
206
+ sequences: l.data.sequences,
207
+ "sequence-names": l.data.sequenceNames,
208
+ "label-rows": l.data.labelRows,
209
+ "residue-counts": l.data.residueCounts,
210
+ "highlight-image": l.data.highlightImage,
211
+ widgets: o.widgets
212
+ }, null, 8, ["sequences", "sequence-names", "label-rows", "residue-counts", "highlight-image", "widgets"])) : A("", !0)
178
213
  ];
179
214
  }),
180
215
  _: 1
@@ -185,6 +220,6 @@ const pe = /* @__PURE__ */ R({
185
220
  }
186
221
  });
187
222
  export {
188
- pe as default
223
+ ge as default
189
224
  };
190
225
  //# sourceMappingURL=PlMultiSequenceAlignment.vue2.js.map