protvista-uniprot 3.0.0 → 3.0.7

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 (83) hide show
  1. package/dist/protvista-uniprot.mjs +368 -0
  2. package/dist/{protvista-uniprot.js.map → protvista-uniprot.mjs.map} +1 -1
  3. package/dist/types/index.d.ts +7 -0
  4. package/package.json +19 -11
  5. package/src/index.ts +6 -17
  6. package/dist/es/__spec__/filter-config.spec.js +0 -123
  7. package/dist/es/__spec__/filter-config.spec.js.map +0 -1
  8. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js +0 -75
  9. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js.map +0 -1
  10. package/dist/es/adapters/__tests__/structure-adapter.spec.js +0 -14
  11. package/dist/es/adapters/__tests__/structure-adapter.spec.js.map +0 -1
  12. package/dist/es/adapters/alphafold-confidence-adapter.js +0 -26
  13. package/dist/es/adapters/alphafold-confidence-adapter.js.map +0 -1
  14. package/dist/es/adapters/alphamissense-heatmap-adapter.js +0 -36
  15. package/dist/es/adapters/alphamissense-heatmap-adapter.js.map +0 -1
  16. package/dist/es/adapters/alphamissense-pathogenicity-adapter.js +0 -68
  17. package/dist/es/adapters/alphamissense-pathogenicity-adapter.js.map +0 -1
  18. package/dist/es/adapters/config/evidence.js +0 -101
  19. package/dist/es/adapters/config/evidence.js.map +0 -1
  20. package/dist/es/adapters/feature-adapter.js +0 -18
  21. package/dist/es/adapters/feature-adapter.js.map +0 -1
  22. package/dist/es/adapters/interpro-adapter.js +0 -60
  23. package/dist/es/adapters/interpro-adapter.js.map +0 -1
  24. package/dist/es/adapters/proteomics-adapter.js +0 -66
  25. package/dist/es/adapters/proteomics-adapter.js.map +0 -1
  26. package/dist/es/adapters/ptm-exchange-adapter.js +0 -101
  27. package/dist/es/adapters/ptm-exchange-adapter.js.map +0 -1
  28. package/dist/es/adapters/structure-adapter.js +0 -89
  29. package/dist/es/adapters/structure-adapter.js.map +0 -1
  30. package/dist/es/adapters/types/alphafold.js +0 -2
  31. package/dist/es/adapters/types/alphafold.js.map +0 -1
  32. package/dist/es/adapters/variation-adapter.js +0 -31
  33. package/dist/es/adapters/variation-adapter.js.map +0 -1
  34. package/dist/es/adapters/variation-graph-adapter.js +0 -53
  35. package/dist/es/adapters/variation-graph-adapter.js.map +0 -1
  36. package/dist/es/config.json +0 -811
  37. package/dist/es/filter-config.js +0 -157
  38. package/dist/es/filter-config.js.map +0 -1
  39. package/dist/es/index.d.ts +0 -7
  40. package/dist/es/index.js +0 -8
  41. package/dist/es/index.js.map +0 -1
  42. package/dist/es/protvista-uniprot-structure.js +0 -379
  43. package/dist/es/protvista-uniprot-structure.js.map +0 -1
  44. package/dist/es/protvista-uniprot.js +0 -594
  45. package/dist/es/protvista-uniprot.js.map +0 -1
  46. package/dist/es/styles/loader-styles.js +0 -20
  47. package/dist/es/styles/loader-styles.js.map +0 -1
  48. package/dist/es/styles/protvista-styles.js +0 -89
  49. package/dist/es/styles/protvista-styles.js.map +0 -1
  50. package/dist/es/tooltips/featureTooltip.js +0 -160
  51. package/dist/es/tooltips/featureTooltip.js.map +0 -1
  52. package/dist/es/tooltips/structureTooltip.js +0 -15
  53. package/dist/es/tooltips/structureTooltip.js.map +0 -1
  54. package/dist/es/tooltips/variationTooltip.js +0 -82
  55. package/dist/es/tooltips/variationTooltip.js.map +0 -1
  56. package/dist/es/utils.js +0 -28
  57. package/dist/es/utils.js.map +0 -1
  58. package/dist/protvista-uniprot.js +0 -368
  59. /package/dist/{protvista-uniprot.js.LICENSE.txt → protvista-uniprot.mjs.LICENSE.txt} +0 -0
  60. /package/dist/{es → types}/__spec__/filter-config.spec.d.ts +0 -0
  61. /package/dist/{es → types}/adapters/__tests__/__mocks__/uniprotkb-entry-data.d.ts +0 -0
  62. /package/dist/{es → types}/adapters/__tests__/structure-adapter.spec.d.ts +0 -0
  63. /package/dist/{es → types}/adapters/alphafold-confidence-adapter.d.ts +0 -0
  64. /package/dist/{es → types}/adapters/alphamissense-heatmap-adapter.d.ts +0 -0
  65. /package/dist/{es → types}/adapters/alphamissense-pathogenicity-adapter.d.ts +0 -0
  66. /package/dist/{es → types}/adapters/config/evidence.d.ts +0 -0
  67. /package/dist/{es → types}/adapters/feature-adapter.d.ts +0 -0
  68. /package/dist/{es → types}/adapters/interpro-adapter.d.ts +0 -0
  69. /package/dist/{es → types}/adapters/proteomics-adapter.d.ts +0 -0
  70. /package/dist/{es → types}/adapters/ptm-exchange-adapter.d.ts +0 -0
  71. /package/dist/{es → types}/adapters/structure-adapter.d.ts +0 -0
  72. /package/dist/{es → types}/adapters/types/alphafold.d.ts +0 -0
  73. /package/dist/{es → types}/adapters/variation-adapter.d.ts +0 -0
  74. /package/dist/{es → types}/adapters/variation-graph-adapter.d.ts +0 -0
  75. /package/dist/{es → types}/filter-config.d.ts +0 -0
  76. /package/dist/{es → types}/protvista-uniprot-structure.d.ts +0 -0
  77. /package/dist/{es → types}/protvista-uniprot.d.ts +0 -0
  78. /package/dist/{es → types}/styles/loader-styles.d.ts +0 -0
  79. /package/dist/{es → types}/styles/protvista-styles.d.ts +0 -0
  80. /package/dist/{es → types}/tooltips/featureTooltip.d.ts +0 -0
  81. /package/dist/{es → types}/tooltips/structureTooltip.d.ts +0 -0
  82. /package/dist/{es → types}/tooltips/variationTooltip.d.ts +0 -0
  83. /package/dist/{es → types}/utils.d.ts +0 -0
@@ -1,89 +0,0 @@
1
- import { css } from 'lit';
2
- export default css `
3
- .track-content {
4
- width: 80vw;
5
- }
6
-
7
- .track-content__coloured-sequence {
8
- display: flex;
9
- align-items: center;
10
- }
11
-
12
- .nav-container,
13
- .category__track {
14
- display: flex;
15
- margin-bottom: 0.1rem;
16
- }
17
-
18
- .category {
19
- display: none;
20
- margin-bottom: 0.1rem;
21
- }
22
-
23
- .category-label,
24
- .track-label,
25
- .nav-track-label,
26
- .credits {
27
- min-width: 20vw;
28
- max-width: 20vw;
29
- padding: 0.5em;
30
- line-height: normal;
31
- }
32
-
33
- .category-label {
34
- background-color: #b2f5ff;
35
- cursor: pointer;
36
- }
37
-
38
- .category-label::before {
39
- content: ' ';
40
- display: inline-block;
41
- width: 0;
42
- height: 0;
43
- border-top: 5px solid transparent;
44
- border-bottom: 5px solid transparent;
45
- border-left: 5px solid #333;
46
- margin-right: 5px;
47
- -webkit-transition: all 0.1s;
48
- /* Safari */
49
- -o-transition: all 0.1s;
50
- transition: all 0.1s;
51
- }
52
-
53
- .category-label.open::before {
54
- content: ' ';
55
- display: inline-block;
56
- width: 0;
57
- height: 0;
58
- border-left: 5px solid transparent;
59
- border-right: 5px solid transparent;
60
- border-top: 5px solid #333;
61
- margin-right: 5px;
62
- }
63
-
64
- .track-label {
65
- background-color: #d9faff;
66
- }
67
-
68
- nightingale-track {
69
- border-top: 1px solid #d9faff;
70
- }
71
-
72
- nightingale-navigation {
73
- .handle {
74
- fill: darkgrey;
75
- stroke: black;
76
- stroke-width: 0.5px;
77
- height: 19px;
78
- }
79
- }
80
-
81
- nightingale-filter {
82
- font-size: 0.8rem;
83
- }
84
-
85
- .feature {
86
- cursor: pointer;
87
- }
88
- `;
89
- //# sourceMappingURL=protvista-styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protvista-styles.js","sourceRoot":"","sources":["../../../src/styles/protvista-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFjB,CAAC"}
@@ -1,160 +0,0 @@
1
- import ecoMap from '../adapters/config/evidence';
2
- const formatSource = (source) => {
3
- var _a;
4
- if (((_a = source.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'PubMed'.toLowerCase()) {
5
- return `${source.id}&nbsp;(<a href='${source.url}' style="color:#FFF" target='_blank'>${source.name}</a>&nbsp;<a href='${source.alternativeUrl}' style="color:#FFF" target='_blank'>EuropePMC</a>)`;
6
- }
7
- const sourceLink = `&nbsp;<a href='${source.url}' style="color:#FFF" target='_blank'>${source.id}</a>`;
8
- if (source.name) {
9
- // Temporary until we get the expected value as 'PeptideAtlas' instead of 'HppPeptideAtlas'
10
- if (source.name.startsWith('Hpp')) {
11
- return `${sourceLink}&nbsp;(${source.name.slice(3)})`;
12
- }
13
- return `${sourceLink}&nbsp;(${source.name})`;
14
- }
15
- return sourceLink;
16
- };
17
- export const getEvidenceFromCodes = (evidenceList) => {
18
- if (!evidenceList)
19
- return ``;
20
- return `
21
- <ul>${evidenceList
22
- .map((ev) => {
23
- const ecoMatch = ecoMap.find((eco) => eco.name === ev.code);
24
- if (!ecoMatch)
25
- return ``;
26
- return `<li title='${ecoMatch.description}' style="padding: .25rem 0">${ecoMatch.shortDescription}:&nbsp;${ev.source ? formatSource(ev.source) : ''}</li>`;
27
- })
28
- .join('')}</ul>
29
- `;
30
- };
31
- export const formatXrefs = (xrefs) => {
32
- return `<ul>${xrefs
33
- .map((xref) => `<li style="padding: .25rem 0">${xref.name} ${xref.url
34
- ? `<a href="${xref.url}" style="color:#FFF" target="_blank">${xref.id}</a>`
35
- : `${xref.name} ${xref.id}`}</li>`)
36
- .join('')}</ul>`;
37
- };
38
- const getPTMEvidence = (ptms) => {
39
- if (!ptms)
40
- return ``;
41
- const ids = ptms.flatMap(({ dbReferences }) => dbReferences.map((ref) => ref.id));
42
- const uniqueIds = [...new Set(ids.flat())];
43
- // Urls in the payload are not relevant. For 'Glue project' dataset, Dataset ID and publication reference is hardcoded. Need to be checked in 2024 if it still exists in the payload
44
- const proteomexchange = 'https://proteomecentral.proteomexchange.org/dataset/';
45
- return `
46
- <ul>${uniqueIds
47
- .map((id) => {
48
- const datasetID = id === 'Glue project' ? 'PXD012174' : id;
49
- return `<li title='${datasetID}' style="padding: .25rem 0">${datasetID}&nbsp;(<a href="${proteomexchange}${datasetID}" style="color:#FFF" target="_blank">ProteomeXchange</a>${id === 'Glue project'
50
- ? `)</li><li title="publication" style="padding: .25rem 0">Publication:&nbsp;31819260&nbsp;(<a href="https://pubmed.ncbi.nlm.nih.gov/31819260" style="color:#FFF" target="_blank">PubMed</a>)</li>`
51
- : `&nbsp;<a href="http://www.peptideatlas.org/builds/rice/phospho/" style="color:#FFF" target="_blank">PeptideAtlas</a>)</li>`}`;
52
- })
53
- .join('')}</ul>
54
- `;
55
- };
56
- const formatPTMPeptidoform = (peptide, ptms) => {
57
- if (!ptms)
58
- return ``;
59
- const modificationValues = ptms.map((ptm) => ({
60
- name: ptm.name,
61
- position: ptm.position,
62
- }));
63
- let peptidoform = '';
64
- let lastModPosition = 0;
65
- modificationValues.forEach((p) => {
66
- peptidoform = `${peptidoform}${peptide.slice(lastModPosition, p.position)}[${p.name}]`;
67
- lastModPosition = p.position;
68
- });
69
- // Add last remaining part of the peptide if any
70
- peptidoform = `${peptidoform}${peptide.slice(lastModPosition)}`;
71
- return `<p>${peptidoform}</p>`;
72
- };
73
- // At the moment, there is only phospho data. In future we may have more, the below AA sites have to be updated to accomodate more.
74
- const AAPhosphoSites = {
75
- A: 'alanine',
76
- S: 'serine',
77
- T: 'threonine',
78
- Y: 'tyrosine',
79
- };
80
- const findModifiedResidueName = (feature, ptm) => {
81
- const { peptide, begin: peptideStart } = feature;
82
- const proteinLocation = Number(peptideStart) + ptm.position - 1;
83
- const modifiedResidue = peptide.charAt(ptm.position - 1); // CharAt index starts from 0
84
- return `${proteinLocation} phospho${AAPhosphoSites[modifiedResidue]}`;
85
- };
86
- const formatTooltip = (feature) => {
87
- const evidenceHTML = feature.type === 'PROTEOMICS_PTM'
88
- ? getPTMEvidence(feature.ptms)
89
- : getEvidenceFromCodes(feature.evidences);
90
- const ptms = feature.type === 'PROTEOMICS_PTM' &&
91
- feature.ptms.map((ptm) => findModifiedResidueName(feature, ptm));
92
- const dataset = feature.type === 'PROTEOMICS_PTM' &&
93
- feature.ptms.flatMap(({ dbReferences }) => dbReferences.map((ref) => ref.id));
94
- let { description } = feature;
95
- if (feature.type === 'BINDING' || feature.type === 'Binding site') {
96
- let bindingDescription = '';
97
- if (feature.ligandPart) {
98
- bindingDescription += `${feature.ligandPart.name} of `;
99
- }
100
- if (feature.ligand) {
101
- bindingDescription += feature.ligand.name;
102
- }
103
- if (feature.description) {
104
- bindingDescription += `; ${feature.description}`;
105
- }
106
- description = bindingDescription;
107
- }
108
- try {
109
- return `
110
- ${description ? `<h5>Description</h5><p>${description}</p>` : ``}
111
- ${feature.matchScore
112
- ? `<h5>Match score</h5><p>${feature.matchScore}%</p>`
113
- : ``}
114
- ${feature.ftId ? `<h5>Feature ID</h5><p>${feature.ftId}</p>` : ``}
115
- ${feature.alternativeSequence
116
- ? `<h5>Alternative sequence</h5><p>${feature.alternativeSequence}</p>`
117
- : ``}
118
- ${ptms
119
- ? `<h5 data-article-id="ptm_processing_section">PTMs</h5><ul>${ptms
120
- .map((item) => `<li>${item}</li>`)
121
- .join('')}</ul>
122
- `
123
- : ''}
124
- ${feature.peptide && feature.type === 'PROTEOMICS_PTM'
125
- ? `<h5 data-article-id="mod_res_large_scale#what-is-the-goldsilverbronze-criterion">Peptidoform</h5><p>${formatPTMPeptidoform(feature.peptide, feature.ptms)}</p>`
126
- : ``}
127
- ${feature.peptide && feature.type !== 'PROTEOMICS_PTM'
128
- ? `<h5>Peptide</h5><p>${feature.peptide}</p>`
129
- : ``}
130
- ${feature.xrefs
131
- ? `<h5>Cross-references</h5>${formatXrefs(feature.xrefs)}`
132
- : ``}
133
- ${evidenceHTML ? `<h5>Evidence</h5>${evidenceHTML}` : ``}
134
- ${feature.ptms && dataset && !dataset.includes('Glue project')
135
- ? `<hr /><h5 data-article-id="mod_res_large_scale#what-is-the-goldsilverbronze-criterion">PTM statistical attributes</h5><ul>${feature.ptms
136
- .map((ptm) => ptm.dbReferences
137
- .map((ref) => `<li><b>${ref.id}</b></li>
138
- <li style="text-indent: 1em"><b>${findModifiedResidueName(feature, ptm)}</b></li>
139
- <li style="text-indent: 2em">PubMed ID: <a href="https://europepmc.org/article/MED/${ref.properties['Pubmed ID']}" style="color:#FFF" target="_blank">
140
- ${ref.properties['Pubmed ID']}</a>
141
- </li>
142
- <li style="text-indent: 2em"><span data-article-id="mod_res_large_scale#confidence-score">Confidence score</span>: ${ref.properties['Confidence score']}</li>
143
- <li style="text-indent: 2em">Universal Spectrum Id:
144
- <a href="http://proteomecentral.proteomexchange.org/usi/?usi=${ref.properties['Universal Spectrum Id']}" style="color:#FFF" target="_blank">View on ProteomeXchange</a>
145
- </li>
146
- <li style="text-indent: 2em">PSM Count (0.05 gFLR): ${ref.properties['PSM Count (0.05 gFLR)']}</li>
147
- <li style="text-indent: 2em">Final site probability: ${ref.properties['Final site probability']}</li>
148
- `)
149
- .join(''))
150
- .join('')}</ul>`
151
- : ''}
152
- `;
153
- }
154
- catch (error) {
155
- console.error(error);
156
- return '';
157
- }
158
- };
159
- export default formatTooltip;
160
- //# sourceMappingURL=featureTooltip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"featureTooltip.js","sourceRoot":"","sources":["../../../src/tooltips/featureTooltip.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- const getStructuresHTML = (structureList) => {
2
- return `<ul>
3
- ${structureList
4
- .map((structure) => `<li style="margin: 0.25rem 0"><a style="color:#FFF" href='${structure.source.url}' target='_blank'>
5
- ${structure.source.id}
6
- </a> (${structure.start}-${structure.end})</li>`)
7
- .join('')}
8
- </ul>`;
9
- };
10
- const formatTooltip = (feature) => {
11
- const structuresHTML = getStructuresHTML(feature.structures);
12
- return `${structuresHTML ? `<h5>Structures</h5>${structuresHTML}` : ``}`;
13
- };
14
- export default formatTooltip;
15
- //# sourceMappingURL=structureTooltip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"structureTooltip.js","sourceRoot":"","sources":["../../../src/tooltips/structureTooltip.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,EAAE;IAC1C,OAAO;gBACO,aAAa;SACZ,GAAG,CACF,CACE,SAAS,EACT,EAAE,CAAC,6DAA6D,SAAS,CAAC,MAAM,CAAC,GAAG;gBACxF,SAAS,CAAC,MAAM,CAAC,EAAE;kBACjB,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,GAAG,QAAQ,CACzC;SACA,IAAI,CAAC,EAAE,CAAC;gBACT,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,EAAE;IAChC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3E,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,82 +0,0 @@
1
- import groupBy from 'lodash-es/groupBy';
2
- import { formatXrefs, getEvidenceFromCodes } from './featureTooltip';
3
- const getDiseaseAssociations = (associations) => associations === null || associations === void 0 ? void 0 : associations.map((association) => `
4
- <h4>Disease association</h4><p>${association.name}</p>
5
- ${association.description
6
- ? `<>${association.description}</p>`
7
- : ''}
8
- ${association.dbReferences
9
- ? `<h5>Cross-references</h5>${formatXrefs(association.dbReferences)}`
10
- : ''}
11
- ${getEvidenceFromCodes(association.evidences)}
12
- `).join('');
13
- const getDescriptions = (descriptions) => `<hr/><h5>Description</h5>${descriptions
14
- .map((description) => `<p>${description.value}</p>`)
15
- .join('')}
16
- `;
17
- const getPopulationFrequencies = (popFrequencies) => `<hr/><h5>Population frequencies</h5>${popFrequencies
18
- .map((freq) => `<p>${freq.frequency} - ${freq.populationName} (${freq.source})</p>`)
19
- .join('')}`;
20
- const getEnsemblCovidLinks = (variant) => {
21
- const shouldGenerateLink = variant.locations.some((location) => location.source === 'EnsemblViruses');
22
- if (shouldGenerateLink) {
23
- const xref = variant.xrefs.find((xref) => xref.name === 'ENA');
24
- return xref.id
25
- ? `<h5>Ensembl COVID-19</h5>
26
- <p>
27
- <a href="https://covid-19.ensembl.org/Sars_cov_2/Variation/Explore?v=${xref.id}" target="_blank" rel="noopener noreferrer">${xref.id}</a>
28
- </p>`
29
- : '';
30
- }
31
- return '';
32
- };
33
- const getPredictions = (predictions) => {
34
- const groupedPredictions = groupBy(predictions, 'predAlgorithmNameType');
35
- const counts = Object.keys(groupedPredictions).map((key) => {
36
- const valueGroups = groupBy(groupedPredictions[key], 'predictionValType');
37
- return {
38
- algorithm: key,
39
- values: Object.keys(valueGroups).map((valKey) => ({
40
- name: valKey,
41
- count: valueGroups[valKey].length,
42
- })),
43
- };
44
- });
45
- return counts
46
- .map((countItem) => `<h6>${countItem.algorithm}</h6><ul class="no-bullet">${countItem.values
47
- .map((countValue) => `<li>${countValue.name}</li>`)
48
- .join('')}</ul>`)
49
- .join('');
50
- };
51
- const formatTooltip = (variant) => {
52
- var _a;
53
- return `
54
- <h5>Variant</h5><p>${variant.wildType} > ${variant.alternativeSequence || ''}</p>
55
- ${variant.populationFrequencies
56
- ? getPopulationFrequencies(variant.populationFrequencies)
57
- : ''}
58
- ${variant.consequenceType
59
- ? `<h5>Consequence</h5><p>${variant.consequenceType}</p>`
60
- : ``}
61
- ${variant.somaticStatus
62
- ? `<h5>Somatic</h5><p>${variant.somaticStatus === 0 ? 'No' : 'Yes'}</p>`
63
- : ``}
64
- ${((_a = variant.genomicLocation) === null || _a === void 0 ? void 0 : _a.length)
65
- ? `<h5>Location</h5><p>${variant.genomicLocation.join(', ')}</p>`
66
- : ``}
67
- ${variant.ftId
68
- ? `<h5>Feature ID</h5><p>${variant.ftId}</p>`
69
- : ``}
70
- ${variant.descriptions
71
- ? getDescriptions(variant.descriptions)
72
- : ''}
73
- ${variant.association
74
- ? getDiseaseAssociations(variant.association)
75
- : ''}
76
- ${variant.predictions ? getPredictions(variant.predictions) : ''}
77
- ${getEnsemblCovidLinks(variant)}
78
-
79
- `;
80
- };
81
- export default formatTooltip;
82
- //# sourceMappingURL=variationTooltip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"variationTooltip.js","sourceRoot":"","sources":["../../../src/tooltips/variationTooltip.ts"],"names":[],"mappings":"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"}
package/dist/es/utils.js DELETED
@@ -1,28 +0,0 @@
1
- export const renameProperties = (features) => features.map((ft) => ({
2
- ...ft,
3
- start: ft.begin || undefined,
4
- }));
5
- export const loadComponent = (name, elementConstructor) => {
6
- if (!customElements.get(name)) {
7
- customElements.define(name, elementConstructor);
8
- }
9
- };
10
- // Returns an object of the form url => payload json
11
- // getUrl optional function modifies url string
12
- export const fetchAll = async (urls, getUrl = null) => Object.fromEntries(await Promise.all(urls.map(async (url) => {
13
- try {
14
- const response = await fetch(getUrl ? getUrl(url) : url);
15
- if (!response.ok) {
16
- // TODO handle this better based on error code
17
- // Fail silently for now
18
- console.warn(`HTTP error status: ${response.status} at ${url}`);
19
- return [url, null];
20
- }
21
- return [url, await response.json()];
22
- }
23
- catch (error) {
24
- console.warn(`Failed to fetch or parse JSON from ${url}:`, error);
25
- return [url, null]; // or handle error data as needed
26
- }
27
- })));
28
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAC3C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,EAAE;IACL,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS;CAC7B,CAAC,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAY,EACZ,kBAA4C,EAC5C,EAAE;IACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;KACjD;AACH,CAAC,CAAC;AAEF,oDAAoD;AACpD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAc,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAChB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,8CAA8C;YAC9C,wBAAwB;YACxB,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACpB;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACrC;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC;KACtD;AACH,CAAC,CAAC,CACH,CACF,CAAC"}