@teselagen/ove 0.8.18 → 0.8.20
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/index.cjs.js +238 -57
- package/index.es.js +238 -57
- package/index.umd.js +238 -57
- package/ove.css +6 -0
- package/package.json +2 -2
- package/selectors/translationsSelector.d.ts +6 -2
- package/src/AlignmentView/index.js +6 -0
- package/src/AlignmentView/style.css +6 -0
- package/src/LinearView/index.js +1 -0
- package/src/PropertySidePanel/index.js +3 -1
- package/src/StatusBar/MeltingTemp.js +16 -5
- package/src/helperComponents/AddOrEditPrimerDialog/index.js +23 -11
- package/src/selectors/translationsSelector.js +17 -8
package/index.es.js
CHANGED
|
@@ -8331,6 +8331,15 @@ function baseLt(value, other) {
|
|
|
8331
8331
|
return value < other;
|
|
8332
8332
|
}
|
|
8333
8333
|
__name(baseLt, "baseLt");
|
|
8334
|
+
function mapValues$1(object3, iteratee) {
|
|
8335
|
+
var result = {};
|
|
8336
|
+
iteratee = baseIteratee(iteratee);
|
|
8337
|
+
baseForOwn(object3, function(value, key, object4) {
|
|
8338
|
+
baseAssignValue(result, key, iteratee(value, key, object4));
|
|
8339
|
+
});
|
|
8340
|
+
return result;
|
|
8341
|
+
}
|
|
8342
|
+
__name(mapValues$1, "mapValues$1");
|
|
8334
8343
|
function baseExtremum(array2, iteratee, comparator) {
|
|
8335
8344
|
var index2 = -1, length = array2.length;
|
|
8336
8345
|
while (++index2 < length) {
|
|
@@ -13195,12 +13204,12 @@ var getComputedStyleX;
|
|
|
13195
13204
|
if (typeof window !== "undefined") {
|
|
13196
13205
|
getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
|
|
13197
13206
|
}
|
|
13198
|
-
function each
|
|
13207
|
+
function each(arr, fn4) {
|
|
13199
13208
|
for (var i = 0; i < arr.length; i++) {
|
|
13200
13209
|
fn4(arr[i]);
|
|
13201
13210
|
}
|
|
13202
13211
|
}
|
|
13203
|
-
__name(each
|
|
13212
|
+
__name(each, "each");
|
|
13204
13213
|
function isBorderBoxFn(elem) {
|
|
13205
13214
|
return getComputedStyleX(elem, "boxSizing") === "border-box";
|
|
13206
13215
|
}
|
|
@@ -13255,7 +13264,7 @@ function isWindow(obj) {
|
|
|
13255
13264
|
}
|
|
13256
13265
|
__name(isWindow, "isWindow");
|
|
13257
13266
|
var domUtils = {};
|
|
13258
|
-
each
|
|
13267
|
+
each(["Width", "Height"], function(name2) {
|
|
13259
13268
|
domUtils["doc".concat(name2)] = function(refWin) {
|
|
13260
13269
|
var d2 = refWin.document;
|
|
13261
13270
|
return Math.max(
|
|
@@ -13351,7 +13360,7 @@ function css(el, name2, v2) {
|
|
|
13351
13360
|
return getComputedStyleX(el, name2);
|
|
13352
13361
|
}
|
|
13353
13362
|
__name(css, "css");
|
|
13354
|
-
each
|
|
13363
|
+
each(["width", "height"], function(name2) {
|
|
13355
13364
|
var first = name2.charAt(0).toUpperCase() + name2.slice(1);
|
|
13356
13365
|
domUtils["outer".concat(first)] = function(el, includeMargin) {
|
|
13357
13366
|
return el && getWHIgnoreDisplay(el, name2, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
|
|
@@ -13402,7 +13411,7 @@ var util$2 = _objectSpread2$2({
|
|
|
13402
13411
|
}
|
|
13403
13412
|
}, "offset"),
|
|
13404
13413
|
isWindow,
|
|
13405
|
-
each
|
|
13414
|
+
each,
|
|
13406
13415
|
css,
|
|
13407
13416
|
clone: /* @__PURE__ */ __name(function clone(obj) {
|
|
13408
13417
|
var ret = {};
|
|
@@ -75191,17 +75200,25 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75191
75200
|
});
|
|
75192
75201
|
if (!noTranslationData) {
|
|
75193
75202
|
seqData.translations = flatMap(seqData.translations, (translation) => {
|
|
75203
|
+
var _a2, _b2;
|
|
75194
75204
|
if (noCdsTranslations && translation.translationType === "CDS Feature") {
|
|
75195
75205
|
return [];
|
|
75196
75206
|
}
|
|
75197
|
-
|
|
75198
|
-
|
|
75207
|
+
const codonStart = ((_b2 = (_a2 = translation == null ? void 0 : translation.notes) == null ? void 0 : _a2.codon_start) == null ? void 0 : _b2[0]) - 1 || 0;
|
|
75208
|
+
const expandedRange = expandOrContractRangeByLength(
|
|
75209
|
+
translation,
|
|
75210
|
+
-codonStart,
|
|
75211
|
+
true,
|
|
75212
|
+
seqData.sequence.length
|
|
75213
|
+
);
|
|
75214
|
+
if (!expandedRange.aminoAcids && !seqData.noSequence) {
|
|
75215
|
+
expandedRange.aminoAcids = getAminoAcidDataForEachBaseOfDna(
|
|
75199
75216
|
seqData.sequence,
|
|
75200
|
-
|
|
75201
|
-
|
|
75217
|
+
expandedRange.forward,
|
|
75218
|
+
expandedRange
|
|
75202
75219
|
);
|
|
75203
75220
|
}
|
|
75204
|
-
return
|
|
75221
|
+
return expandedRange;
|
|
75205
75222
|
});
|
|
75206
75223
|
}
|
|
75207
75224
|
if (annotationsAsObjects) {
|
|
@@ -84314,6 +84331,160 @@ function calculateNebTm(sequence2, { monovalentCationConc = 0.05, primerConc = 5
|
|
|
84314
84331
|
}
|
|
84315
84332
|
}
|
|
84316
84333
|
__name(calculateNebTm, "calculateNebTm");
|
|
84334
|
+
const PRIMER3_PARAMS = {
|
|
84335
|
+
saltMonovalent: 50,
|
|
84336
|
+
// mM
|
|
84337
|
+
saltDivalent: 1.5,
|
|
84338
|
+
// mM
|
|
84339
|
+
dntpConc: 0.6,
|
|
84340
|
+
// mM
|
|
84341
|
+
dnaConc: 50,
|
|
84342
|
+
// nM
|
|
84343
|
+
R: 1.987
|
|
84344
|
+
// Gas constant (cal/K·mol)
|
|
84345
|
+
};
|
|
84346
|
+
const SANTA_LUCIA_NN = {
|
|
84347
|
+
AA: { dH: -7.9, dS: -22.2 },
|
|
84348
|
+
TT: { dH: -7.9, dS: -22.2 },
|
|
84349
|
+
AT: { dH: -7.2, dS: -20.4 },
|
|
84350
|
+
TA: { dH: -7.2, dS: -21.3 },
|
|
84351
|
+
CA: { dH: -8.5, dS: -22.7 },
|
|
84352
|
+
TG: { dH: -8.5, dS: -22.7 },
|
|
84353
|
+
GT: { dH: -8.4, dS: -22.4 },
|
|
84354
|
+
AC: { dH: -8.4, dS: -22.4 },
|
|
84355
|
+
CT: { dH: -7.8, dS: -21 },
|
|
84356
|
+
AG: { dH: -7.8, dS: -21 },
|
|
84357
|
+
GA: { dH: -8.2, dS: -22.2 },
|
|
84358
|
+
TC: { dH: -8.2, dS: -22.2 },
|
|
84359
|
+
CG: { dH: -10.6, dS: -27.2 },
|
|
84360
|
+
GC: { dH: -9.8, dS: -24.4 },
|
|
84361
|
+
GG: { dH: -8, dS: -19.9 },
|
|
84362
|
+
CC: { dH: -8, dS: -19.9 }
|
|
84363
|
+
};
|
|
84364
|
+
const SANTA_LUCIA_INIT = {
|
|
84365
|
+
GC: { dH: 0.1, dS: -2.8 },
|
|
84366
|
+
// initiation with terminal GC
|
|
84367
|
+
AT: { dH: 2.3, dS: 4.1 }
|
|
84368
|
+
// initiation with terminal AT
|
|
84369
|
+
};
|
|
84370
|
+
function getEffectiveMonovalentConc() {
|
|
84371
|
+
let effectiveMono = PRIMER3_PARAMS.saltMonovalent;
|
|
84372
|
+
{
|
|
84373
|
+
const freeMg = Math.max(
|
|
84374
|
+
0,
|
|
84375
|
+
PRIMER3_PARAMS.saltDivalent - PRIMER3_PARAMS.dntpConc
|
|
84376
|
+
);
|
|
84377
|
+
effectiveMono += 120 * Math.sqrt(freeMg);
|
|
84378
|
+
}
|
|
84379
|
+
return effectiveMono;
|
|
84380
|
+
}
|
|
84381
|
+
__name(getEffectiveMonovalentConc, "getEffectiveMonovalentConc");
|
|
84382
|
+
function applySaltCorrection(deltaS, nnPairs) {
|
|
84383
|
+
const effectiveMono = getEffectiveMonovalentConc();
|
|
84384
|
+
return deltaS + 0.368 * nnPairs * Math.log(effectiveMono / 1e3);
|
|
84385
|
+
}
|
|
84386
|
+
__name(applySaltCorrection, "applySaltCorrection");
|
|
84387
|
+
function isValidSequence(sequence2) {
|
|
84388
|
+
return /^[ATGCN]+$/.test(sequence2);
|
|
84389
|
+
}
|
|
84390
|
+
__name(isValidSequence, "isValidSequence");
|
|
84391
|
+
function calculateSantaLuciaTm(sequence2) {
|
|
84392
|
+
try {
|
|
84393
|
+
sequence2 = sequence2 == null ? void 0 : sequence2.toUpperCase().trim();
|
|
84394
|
+
if (!isValidSequence(sequence2)) {
|
|
84395
|
+
throw new Error("Invalid sequence: contains non-DNA characters");
|
|
84396
|
+
}
|
|
84397
|
+
if (sequence2.length < 2) {
|
|
84398
|
+
throw new Error("Sequence too short: minimum length is 2 bases");
|
|
84399
|
+
}
|
|
84400
|
+
let deltaH = 0;
|
|
84401
|
+
let deltaS = 0;
|
|
84402
|
+
for (let i = 0; i < sequence2.length - 1; i++) {
|
|
84403
|
+
const dinucleotide = sequence2.substring(i, i + 2);
|
|
84404
|
+
if (dinucleotide.includes("N")) {
|
|
84405
|
+
continue;
|
|
84406
|
+
}
|
|
84407
|
+
const params = SANTA_LUCIA_NN[dinucleotide];
|
|
84408
|
+
if (params) {
|
|
84409
|
+
deltaH += params.dH;
|
|
84410
|
+
deltaS += params.dS;
|
|
84411
|
+
}
|
|
84412
|
+
}
|
|
84413
|
+
const firstBase = sequence2[0];
|
|
84414
|
+
const lastBase = sequence2[sequence2.length - 1];
|
|
84415
|
+
if (firstBase === "G" || firstBase === "C") {
|
|
84416
|
+
deltaH += SANTA_LUCIA_INIT.GC.dH;
|
|
84417
|
+
deltaS += SANTA_LUCIA_INIT.GC.dS;
|
|
84418
|
+
} else {
|
|
84419
|
+
deltaH += SANTA_LUCIA_INIT.AT.dH;
|
|
84420
|
+
deltaS += SANTA_LUCIA_INIT.AT.dS;
|
|
84421
|
+
}
|
|
84422
|
+
if (lastBase === "G" || lastBase === "C") {
|
|
84423
|
+
deltaH += SANTA_LUCIA_INIT.GC.dH;
|
|
84424
|
+
deltaS += SANTA_LUCIA_INIT.GC.dS;
|
|
84425
|
+
} else {
|
|
84426
|
+
deltaH += SANTA_LUCIA_INIT.AT.dH;
|
|
84427
|
+
deltaS += SANTA_LUCIA_INIT.AT.dS;
|
|
84428
|
+
}
|
|
84429
|
+
const nnPairs = sequence2.length - 1;
|
|
84430
|
+
deltaS = applySaltCorrection(deltaS, nnPairs);
|
|
84431
|
+
const C = PRIMER3_PARAMS.dnaConc * 1e-9;
|
|
84432
|
+
const Tm = deltaH * 1e3 / (deltaS + PRIMER3_PARAMS.R * Math.log(C / 4));
|
|
84433
|
+
return Tm - 273.15;
|
|
84434
|
+
} catch (e) {
|
|
84435
|
+
return `Error calculating Tm for sequence ${sequence2}. ${e}`;
|
|
84436
|
+
}
|
|
84437
|
+
}
|
|
84438
|
+
__name(calculateSantaLuciaTm, "calculateSantaLuciaTm");
|
|
84439
|
+
function calculateEndStability(sequence2) {
|
|
84440
|
+
try {
|
|
84441
|
+
sequence2 = sequence2 == null ? void 0 : sequence2.toUpperCase().trim();
|
|
84442
|
+
if (!isValidSequence(sequence2)) {
|
|
84443
|
+
throw new Error("Invalid sequence: contains non-DNA characters");
|
|
84444
|
+
}
|
|
84445
|
+
if (sequence2.length < 5) {
|
|
84446
|
+
throw new Error(
|
|
84447
|
+
"Sequence too short: minimum length is 5 bases for end stability calculation"
|
|
84448
|
+
);
|
|
84449
|
+
}
|
|
84450
|
+
const last5Bases = sequence2.substring(sequence2.length - 5);
|
|
84451
|
+
let deltaH = 0;
|
|
84452
|
+
let deltaS = 0;
|
|
84453
|
+
for (let i = 0; i < 4; i++) {
|
|
84454
|
+
const dinucleotide = last5Bases.substring(i, i + 2);
|
|
84455
|
+
if (dinucleotide.includes("N")) {
|
|
84456
|
+
continue;
|
|
84457
|
+
}
|
|
84458
|
+
const params = SANTA_LUCIA_NN[dinucleotide];
|
|
84459
|
+
if (params) {
|
|
84460
|
+
deltaH += params.dH;
|
|
84461
|
+
deltaS += params.dS;
|
|
84462
|
+
}
|
|
84463
|
+
}
|
|
84464
|
+
const firstBase = last5Bases[0];
|
|
84465
|
+
const lastBase = last5Bases[last5Bases.length - 1];
|
|
84466
|
+
if (firstBase === "G" || firstBase === "C") {
|
|
84467
|
+
deltaH += SANTA_LUCIA_INIT.GC.dH;
|
|
84468
|
+
deltaS += SANTA_LUCIA_INIT.GC.dS;
|
|
84469
|
+
} else {
|
|
84470
|
+
deltaH += SANTA_LUCIA_INIT.AT.dH;
|
|
84471
|
+
deltaS += SANTA_LUCIA_INIT.AT.dS;
|
|
84472
|
+
}
|
|
84473
|
+
if (lastBase === "G" || lastBase === "C") {
|
|
84474
|
+
deltaH += SANTA_LUCIA_INIT.GC.dH;
|
|
84475
|
+
deltaS += SANTA_LUCIA_INIT.GC.dS;
|
|
84476
|
+
} else {
|
|
84477
|
+
deltaH += SANTA_LUCIA_INIT.AT.dH;
|
|
84478
|
+
deltaS += SANTA_LUCIA_INIT.AT.dS;
|
|
84479
|
+
}
|
|
84480
|
+
const T2 = 310.15;
|
|
84481
|
+
const deltaG = deltaH - T2 * deltaS / 1e3;
|
|
84482
|
+
return Math.round(Math.abs(deltaG) * 100) / 100;
|
|
84483
|
+
} catch (e) {
|
|
84484
|
+
return `Error calculating end stability for sequence ${sequence2}. ${e}`;
|
|
84485
|
+
}
|
|
84486
|
+
}
|
|
84487
|
+
__name(calculateEndStability, "calculateEndStability");
|
|
84317
84488
|
function convertAACaretPositionOrRangeToDna(rangeOrCaret) {
|
|
84318
84489
|
if (typeof rangeOrCaret === "object" && rangeOrCaret !== null) {
|
|
84319
84490
|
return convertAARangeToDnaRange(__spreadProps(__spreadValues({}, rangeOrCaret), {
|
|
@@ -97792,32 +97963,6 @@ const orfsSelector = createSelector(
|
|
|
97792
97963
|
(state2) => state2.useAdditionalOrfStartCodons,
|
|
97793
97964
|
findOrfsInPlasmid
|
|
97794
97965
|
);
|
|
97795
|
-
var forEach_1;
|
|
97796
|
-
var hasRequiredForEach;
|
|
97797
|
-
function requireForEach() {
|
|
97798
|
-
if (hasRequiredForEach) return forEach_1;
|
|
97799
|
-
hasRequiredForEach = 1;
|
|
97800
|
-
var arrayEach2 = require_arrayEach(), baseEach2 = require_baseEach(), castFunction2 = require_castFunction(), isArray2 = requireIsArray();
|
|
97801
|
-
function forEach3(collection, iteratee) {
|
|
97802
|
-
var func = isArray2(collection) ? arrayEach2 : baseEach2;
|
|
97803
|
-
return func(collection, castFunction2(iteratee));
|
|
97804
|
-
}
|
|
97805
|
-
__name(forEach3, "forEach");
|
|
97806
|
-
forEach_1 = forEach3;
|
|
97807
|
-
return forEach_1;
|
|
97808
|
-
}
|
|
97809
|
-
__name(requireForEach, "requireForEach");
|
|
97810
|
-
var each$1;
|
|
97811
|
-
var hasRequiredEach;
|
|
97812
|
-
function requireEach() {
|
|
97813
|
-
if (hasRequiredEach) return each$1;
|
|
97814
|
-
hasRequiredEach = 1;
|
|
97815
|
-
each$1 = requireForEach();
|
|
97816
|
-
return each$1;
|
|
97817
|
-
}
|
|
97818
|
-
__name(requireEach, "requireEach");
|
|
97819
|
-
var eachExports = requireEach();
|
|
97820
|
-
const each = /* @__PURE__ */ getDefaultExportFromCjs(eachExports);
|
|
97821
97966
|
function translationsRawSelector(sequenceData2) {
|
|
97822
97967
|
return sequenceData2.translations;
|
|
97823
97968
|
}
|
|
@@ -97984,14 +98129,22 @@ function translationsSelector(isCircular, translationSearchMatches, sequence2, o
|
|
|
97984
98129
|
},
|
|
97985
98130
|
{}
|
|
97986
98131
|
));
|
|
97987
|
-
|
|
97988
|
-
|
|
98132
|
+
return mapValues$1(translationsToPass, (translation) => {
|
|
98133
|
+
var _a2, _b2;
|
|
98134
|
+
const codonStart = ((_b2 = (_a2 = translation == null ? void 0 : translation.notes) == null ? void 0 : _a2.codon_start) == null ? void 0 : _b2[0]) - 1 || 0;
|
|
98135
|
+
const expandedRange = expandOrContractRangeByLength(
|
|
98136
|
+
translation,
|
|
98137
|
+
-codonStart,
|
|
98138
|
+
true,
|
|
98139
|
+
sequence2.length
|
|
98140
|
+
);
|
|
98141
|
+
expandedRange.aminoAcids = getAminoAcidDataForEachBaseOfDna(
|
|
97989
98142
|
sequence2,
|
|
97990
|
-
|
|
97991
|
-
|
|
98143
|
+
expandedRange.forward,
|
|
98144
|
+
expandedRange
|
|
97992
98145
|
);
|
|
98146
|
+
return expandedRange;
|
|
97993
98147
|
});
|
|
97994
|
-
return translationsToPass;
|
|
97995
98148
|
}
|
|
97996
98149
|
__name(translationsSelector, "translationsSelector");
|
|
97997
98150
|
const translationsSelector$1 = createSelector(
|
|
@@ -109867,6 +110020,21 @@ function Orf(props) {
|
|
|
109867
110020
|
);
|
|
109868
110021
|
}
|
|
109869
110022
|
__name(Orf, "Orf");
|
|
110023
|
+
var forEach_1;
|
|
110024
|
+
var hasRequiredForEach;
|
|
110025
|
+
function requireForEach() {
|
|
110026
|
+
if (hasRequiredForEach) return forEach_1;
|
|
110027
|
+
hasRequiredForEach = 1;
|
|
110028
|
+
var arrayEach2 = require_arrayEach(), baseEach2 = require_baseEach(), castFunction2 = require_castFunction(), isArray2 = requireIsArray();
|
|
110029
|
+
function forEach3(collection, iteratee) {
|
|
110030
|
+
var func = isArray2(collection) ? arrayEach2 : baseEach2;
|
|
110031
|
+
return func(collection, castFunction2(iteratee));
|
|
110032
|
+
}
|
|
110033
|
+
__name(forEach3, "forEach");
|
|
110034
|
+
forEach_1 = forEach3;
|
|
110035
|
+
return forEach_1;
|
|
110036
|
+
}
|
|
110037
|
+
__name(requireForEach, "requireForEach");
|
|
109870
110038
|
var forEachExports = requireForEach();
|
|
109871
110039
|
const forEach2 = /* @__PURE__ */ getDefaultExportFromCjs(forEachExports);
|
|
109872
110040
|
var lib = {};
|
|
@@ -116622,7 +116790,7 @@ function showFileDialog({ multiple = false, onSelect }) {
|
|
|
116622
116790
|
input.click();
|
|
116623
116791
|
}
|
|
116624
116792
|
__name(showFileDialog, "showFileDialog");
|
|
116625
|
-
const version = "0.8.
|
|
116793
|
+
const version = "0.8.19";
|
|
116626
116794
|
const packageJson = {
|
|
116627
116795
|
version
|
|
116628
116796
|
};
|
|
@@ -124274,6 +124442,7 @@ const __LinearView = class __LinearView extends React__default.Component {
|
|
|
124274
124442
|
RowItem$1,
|
|
124275
124443
|
__spreadProps(__spreadValues({}, __spreadValues(__spreadProps(__spreadValues({}, rest), {
|
|
124276
124444
|
editorName,
|
|
124445
|
+
showAminoAcidUnitAsCodon,
|
|
124277
124446
|
onScroll: /* @__PURE__ */ __name(() => {
|
|
124278
124447
|
this.easyStore.viewportWidth = width;
|
|
124279
124448
|
const row = this.linearView.querySelector(".veRowItemWrapper");
|
|
@@ -137321,7 +137490,7 @@ function MeltingTemp({
|
|
|
137321
137490
|
/* , setMonovalentCationConc */
|
|
137322
137491
|
] = React__default.useState(0.05);
|
|
137323
137492
|
const [tmType, setTmType] = useTmType();
|
|
137324
|
-
let tm = (tmType === "neb_tm" ? calculateNebTm : calculateTm)(sequence2, {
|
|
137493
|
+
let tm = (tmType === "neb_tm" ? calculateNebTm : tmType === "default" ? calculateSantaLuciaTm : calculateTm)(sequence2, {
|
|
137325
137494
|
monovalentCationConc,
|
|
137326
137495
|
primerConc
|
|
137327
137496
|
});
|
|
@@ -137346,8 +137515,9 @@ function MeltingTemp({
|
|
|
137346
137515
|
{
|
|
137347
137516
|
label: "Choose Tm Type:",
|
|
137348
137517
|
options: [
|
|
137349
|
-
{ value: "default", label: "
|
|
137350
|
-
{ value: "
|
|
137518
|
+
{ value: "default", label: "Santa Lucia (Default)" },
|
|
137519
|
+
{ value: "breslauer", label: "Breslauer" },
|
|
137520
|
+
{ value: "neb_tm", label: "NEB Tm" }
|
|
137351
137521
|
],
|
|
137352
137522
|
onChange: /* @__PURE__ */ __name((e) => setTmType(e.target.value), "onChange"),
|
|
137353
137523
|
selectedValue: tmType
|
|
@@ -137361,7 +137531,7 @@ function MeltingTemp({
|
|
|
137361
137531
|
}
|
|
137362
137532
|
), hasWarning, /* @__PURE__ */ React__default.createElement("br", null), /* @__PURE__ */ React__default.createElement("br", null), "Try using the Default Tm"))
|
|
137363
137533
|
},
|
|
137364
|
-
/* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(InnerWrapper, null, "Melting Temp: ", Number(tm) || 0, "
|
|
137534
|
+
/* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(InnerWrapper, null, "Melting Temp: ", Number(tm) || 0, "°C"), hasWarning && /* @__PURE__ */ React__default.createElement(
|
|
137365
137535
|
Icon,
|
|
137366
137536
|
{
|
|
137367
137537
|
style: { marginLeft: 5, marginRight: 5 },
|
|
@@ -137625,12 +137795,24 @@ const RenderBases = /* @__PURE__ */ __name((props) => {
|
|
|
137625
137795
|
)), /* @__PURE__ */ React__default.createElement(
|
|
137626
137796
|
MeltingTemp,
|
|
137627
137797
|
{
|
|
137628
|
-
InnerWrapper:
|
|
137798
|
+
InnerWrapper: TextInnerWrapper,
|
|
137629
137799
|
sequence: bases
|
|
137630
137800
|
}
|
|
137631
|
-
))
|
|
137801
|
+
), /* @__PURE__ */ React__default.createElement(TextInnerWrapper, null, "GC content: ", bases && calculatePercentGC(bases).toFixed(1), "%"), /* @__PURE__ */ React__default.createElement(TextInnerWrapper, null, "3' Stability: ", bases && calculateEndStability(bases), " kcal/mol"))
|
|
137632
137802
|
);
|
|
137633
137803
|
}, "RenderBases");
|
|
137804
|
+
const TextInnerWrapper = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React__default.createElement(
|
|
137805
|
+
"div",
|
|
137806
|
+
{
|
|
137807
|
+
className: "bp3-text-muted bp3-text-small",
|
|
137808
|
+
style: {
|
|
137809
|
+
marginBottom: 15,
|
|
137810
|
+
marginTop: -5,
|
|
137811
|
+
fontStyle: "italic"
|
|
137812
|
+
}
|
|
137813
|
+
},
|
|
137814
|
+
p2.children
|
|
137815
|
+
), "TextInnerWrapper");
|
|
137634
137816
|
const AddOrEditPrimerDialog = AddOrEditAnnotationDialog$1({
|
|
137635
137817
|
formName: "AddOrEditPrimerDialog",
|
|
137636
137818
|
getProps: /* @__PURE__ */ __name((props) => ({
|
|
@@ -137639,14 +137821,6 @@ const AddOrEditPrimerDialog = AddOrEditAnnotationDialog$1({
|
|
|
137639
137821
|
RenderBases
|
|
137640
137822
|
}), "getProps")
|
|
137641
137823
|
});
|
|
137642
|
-
const InnerWrapperMeltingTemp = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React__default.createElement(
|
|
137643
|
-
"div",
|
|
137644
|
-
{
|
|
137645
|
-
className: "bp3-text-muted bp3-text-small",
|
|
137646
|
-
style: { marginBottom: 15, marginTop: -5, fontStyle: "italic" }
|
|
137647
|
-
},
|
|
137648
|
-
p2.children
|
|
137649
|
-
), "InnerWrapperMeltingTemp");
|
|
137650
137824
|
const Dialogs = {
|
|
137651
137825
|
RenameSequenceDialog,
|
|
137652
137826
|
PrintDialog: PrintDialog$1,
|
|
@@ -138078,7 +138252,7 @@ const PropertySidePanel = /* @__PURE__ */ __name(({ properties: properties2, set
|
|
|
138078
138252
|
item: selection && selection.start > -1 ? /* @__PURE__ */ React__default.createElement("span", null, selection.start + 1, " - ", selection.end + 1) : /* @__PURE__ */ React__default.createElement("span", null, "1 - ", isProtein2 ? proteinSize : size),
|
|
138079
138253
|
title: "Region"
|
|
138080
138254
|
}
|
|
138081
|
-
)), /* @__PURE__ */ React__default.createElement("h5", null, isProtein2 ? "Amino Acid" : "Base Pair", " Frequencies"), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-table" }, /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-row" }, /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, "Amino Acid"), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, "Count"), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, "Percentage")), frequencyEntries.map(([aa, data], idx) => {
|
|
138255
|
+
)), /* @__PURE__ */ React__default.createElement("h5", null, isProtein2 ? "Amino Acid" : "Base Pair", " Frequencies"), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-table" }, /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-row" }, /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, isProtein2 ? "Amino Acid" : "Base"), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, "Count"), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, "Percentage")), frequencyEntries.map(([aa, data], idx) => {
|
|
138082
138256
|
return /* @__PURE__ */ React__default.createElement("div", { className: `sidebar-row property-amino-acid-${idx}` }, /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, aa, " ", isProtein2 ? `(${aminoAcidShortNames[aa]})` : ""), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, data.count), /* @__PURE__ */ React__default.createElement("div", { className: "sidebar-cell" }, data.percentage.toFixed(1), "%"));
|
|
138083
138257
|
})));
|
|
138084
138258
|
} else {
|
|
@@ -138578,7 +138752,11 @@ ${seqDataToCopy}\r
|
|
|
138578
138752
|
}, [alignmentTracks, id2, store2]);
|
|
138579
138753
|
useEffect(() => {
|
|
138580
138754
|
const handleAlignmentCopy = /* @__PURE__ */ __name((event) => {
|
|
138755
|
+
var _a3, _b2, _c;
|
|
138581
138756
|
if (event.key === "c" && !event.shiftKey && (event.metaKey === true || event.ctrlKey === true)) {
|
|
138757
|
+
if (!((_a3 = document.activeElement) == null ? void 0 : _a3.classList.contains("alignmentView"))) {
|
|
138758
|
+
return;
|
|
138759
|
+
}
|
|
138582
138760
|
const input = document.createElement("textarea");
|
|
138583
138761
|
document.body.appendChild(input);
|
|
138584
138762
|
const seqDataToCopy = getAllAlignmentsFastaText();
|
|
@@ -138592,6 +138770,8 @@ ${seqDataToCopy}\r
|
|
|
138592
138770
|
}
|
|
138593
138771
|
document.body.removeChild(input);
|
|
138594
138772
|
event.preventDefault();
|
|
138773
|
+
(_b2 = document.activeElement) == null ? void 0 : _b2.blur();
|
|
138774
|
+
(_c = document.querySelector(".alignmentView")) == null ? void 0 : _c.focus();
|
|
138595
138775
|
}
|
|
138596
138776
|
}, "handleAlignmentCopy");
|
|
138597
138777
|
document.addEventListener("keydown", handleAlignmentCopy);
|
|
@@ -139750,6 +139930,7 @@ ${seqDataToCopy}\r
|
|
|
139750
139930
|
position: "relative",
|
|
139751
139931
|
overflowY: "auto"
|
|
139752
139932
|
}, style2),
|
|
139933
|
+
tabIndex: 0,
|
|
139753
139934
|
className: "alignmentView"
|
|
139754
139935
|
},
|
|
139755
139936
|
/* @__PURE__ */ React__default.createElement(
|