@teselagen/ove 0.5.13 → 0.5.15

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.umd.js CHANGED
@@ -10047,7 +10047,7 @@ var __async = (__this, __arguments, generator) => {
10047
10047
  }, _typeof$7(o2);
10048
10048
  }
10049
10049
  __name(_typeof$7, "_typeof$7");
10050
- function toPrimitive$3(t2, r2) {
10050
+ function toPrimitive$4(t2, r2) {
10051
10051
  if ("object" != _typeof$7(t2) || !t2)
10052
10052
  return t2;
10053
10053
  var e2 = t2[Symbol.toPrimitive];
@@ -10059,9 +10059,9 @@ var __async = (__this, __arguments, generator) => {
10059
10059
  }
10060
10060
  return ("string" === r2 ? String : Number)(t2);
10061
10061
  }
10062
- __name(toPrimitive$3, "toPrimitive$3");
10062
+ __name(toPrimitive$4, "toPrimitive$4");
10063
10063
  function toPropertyKey(t2) {
10064
- var i2 = toPrimitive$3(t2, "string");
10064
+ var i2 = toPrimitive$4(t2, "string");
10065
10065
  return "symbol" == _typeof$7(i2) ? i2 : String(i2);
10066
10066
  }
10067
10067
  __name(toPropertyKey, "toPropertyKey");
@@ -25997,10 +25997,10 @@ var __async = (__this, __arguments, generator) => {
25997
25997
  /* istanbul ignore next */
25998
25998
  Object.getOwnPropertyNames
25999
25999
  );
26000
- function toPrimitive$2(value) {
26000
+ function toPrimitive$3(value) {
26001
26001
  return value === null ? null : typeof value === "object" ? "" + value : value;
26002
26002
  }
26003
- __name(toPrimitive$2, "toPrimitive$2");
26003
+ __name(toPrimitive$3, "toPrimitive$3");
26004
26004
  function hasProp(target, prop2) {
26005
26005
  return objectPrototype$2.hasOwnProperty.call(target, prop2);
26006
26006
  }
@@ -27019,7 +27019,7 @@ var __async = (__this, __arguments, generator) => {
27019
27019
  return this.name_ + "[" + this.value_ + "]";
27020
27020
  }, "toString2");
27021
27021
  _proto.valueOf = /* @__PURE__ */ __name(function valueOf() {
27022
- return toPrimitive$2(this.get());
27022
+ return toPrimitive$3(this.get());
27023
27023
  }, "valueOf");
27024
27024
  _proto[_Symbol$toPrimitive] = function() {
27025
27025
  return this.valueOf();
@@ -27204,7 +27204,7 @@ var __async = (__this, __arguments, generator) => {
27204
27204
  return this.name_ + "[" + this.derivation.toString() + "]";
27205
27205
  }, "toString2");
27206
27206
  _proto.valueOf = /* @__PURE__ */ __name(function valueOf() {
27207
- return toPrimitive$2(this.get());
27207
+ return toPrimitive$3(this.get());
27208
27208
  }, "valueOf");
27209
27209
  _proto[_Symbol$toPrimitive$1] = function() {
27210
27210
  return this.valueOf();
@@ -40904,20 +40904,11 @@ ${latestSubscriptionCallbackError.current.stack}
40904
40904
  return true;
40905
40905
  }
40906
40906
  }, "_fails");
40907
- var _descriptors;
40908
- var hasRequired_descriptors;
40909
- function require_descriptors() {
40910
- if (hasRequired_descriptors)
40911
- return _descriptors;
40912
- hasRequired_descriptors = 1;
40913
- _descriptors = !_fails(function() {
40914
- return Object.defineProperty({}, "a", { get: function() {
40915
- return 7;
40916
- } }).a != 7;
40917
- });
40918
- return _descriptors;
40919
- }
40920
- __name(require_descriptors, "require_descriptors");
40907
+ var _descriptors = !_fails(function() {
40908
+ return Object.defineProperty({}, "a", { get: function() {
40909
+ return 7;
40910
+ } }).a != 7;
40911
+ });
40921
40912
  var _domCreate;
40922
40913
  var hasRequired_domCreate;
40923
40914
  function require_domCreate() {
@@ -40933,20 +40924,11 @@ ${latestSubscriptionCallbackError.current.stack}
40933
40924
  return _domCreate;
40934
40925
  }
40935
40926
  __name(require_domCreate, "require_domCreate");
40936
- var _ie8DomDefine;
40937
- var hasRequired_ie8DomDefine;
40938
- function require_ie8DomDefine() {
40939
- if (hasRequired_ie8DomDefine)
40940
- return _ie8DomDefine;
40941
- hasRequired_ie8DomDefine = 1;
40942
- _ie8DomDefine = !require_descriptors() && !_fails(function() {
40943
- return Object.defineProperty(require_domCreate()("div"), "a", { get: function() {
40944
- return 7;
40945
- } }).a != 7;
40946
- });
40947
- return _ie8DomDefine;
40948
- }
40949
- __name(require_ie8DomDefine, "require_ie8DomDefine");
40927
+ var _ie8DomDefine = !_descriptors && !_fails(function() {
40928
+ return Object.defineProperty(require_domCreate()("div"), "a", { get: function() {
40929
+ return 7;
40930
+ } }).a != 7;
40931
+ });
40950
40932
  var isObject$5 = _isObject;
40951
40933
  var _toPrimitive$1 = /* @__PURE__ */ __name(function(it, S2) {
40952
40934
  if (!isObject$5(it))
@@ -40960,33 +40942,25 @@ ${latestSubscriptionCallbackError.current.stack}
40960
40942
  return val2;
40961
40943
  throw TypeError("Can't convert object to primitive value");
40962
40944
  }, "_toPrimitive$1");
40963
- var hasRequired_objectDp;
40964
- function require_objectDp() {
40965
- if (hasRequired_objectDp)
40966
- return _objectDp;
40967
- hasRequired_objectDp = 1;
40968
- var anObject2 = _anObject;
40969
- var IE8_DOM_DEFINE2 = require_ie8DomDefine();
40970
- var toPrimitive2 = _toPrimitive$1;
40971
- var dP2 = Object.defineProperty;
40972
- _objectDp.f = require_descriptors() ? Object.defineProperty : /* @__PURE__ */ __name(function defineProperty2(O2, P2, Attributes) {
40973
- anObject2(O2);
40974
- P2 = toPrimitive2(P2, true);
40975
- anObject2(Attributes);
40976
- if (IE8_DOM_DEFINE2)
40977
- try {
40978
- return dP2(O2, P2, Attributes);
40979
- } catch (e2) {
40980
- }
40981
- if ("get" in Attributes || "set" in Attributes)
40982
- throw TypeError("Accessors not supported!");
40983
- if ("value" in Attributes)
40984
- O2[P2] = Attributes.value;
40985
- return O2;
40986
- }, "defineProperty");
40987
- return _objectDp;
40988
- }
40989
- __name(require_objectDp, "require_objectDp");
40945
+ var anObject$5 = _anObject;
40946
+ var IE8_DOM_DEFINE$1 = _ie8DomDefine;
40947
+ var toPrimitive$2 = _toPrimitive$1;
40948
+ var dP$3 = Object.defineProperty;
40949
+ _objectDp.f = _descriptors ? Object.defineProperty : /* @__PURE__ */ __name(function defineProperty2(O2, P2, Attributes) {
40950
+ anObject$5(O2);
40951
+ P2 = toPrimitive$2(P2, true);
40952
+ anObject$5(Attributes);
40953
+ if (IE8_DOM_DEFINE$1)
40954
+ try {
40955
+ return dP$3(O2, P2, Attributes);
40956
+ } catch (e2) {
40957
+ }
40958
+ if ("get" in Attributes || "set" in Attributes)
40959
+ throw TypeError("Accessors not supported!");
40960
+ if ("value" in Attributes)
40961
+ O2[P2] = Attributes.value;
40962
+ return O2;
40963
+ }, "defineProperty");
40990
40964
  var _propertyDesc = /* @__PURE__ */ __name(function(bitmap, value) {
40991
40965
  return {
40992
40966
  enumerable: !(bitmap & 1),
@@ -40995,9 +40969,9 @@ ${latestSubscriptionCallbackError.current.stack}
40995
40969
  value
40996
40970
  };
40997
40971
  }, "_propertyDesc");
40998
- var dP$2 = require_objectDp();
40972
+ var dP$2 = _objectDp;
40999
40973
  var createDesc$3 = _propertyDesc;
41000
- var _hide = require_descriptors() ? function(object2, key2, value) {
40974
+ var _hide = _descriptors ? function(object2, key2, value) {
41001
40975
  return dP$2.f(object2, key2, createDesc$3(1, value));
41002
40976
  } : function(object2, key2, value) {
41003
40977
  object2[key2] = value;
@@ -41203,7 +41177,7 @@ ${latestSubscriptionCallbackError.current.stack}
41203
41177
  if (hasRequired_objectAssign)
41204
41178
  return _objectAssign;
41205
41179
  hasRequired_objectAssign = 1;
41206
- var DESCRIPTORS2 = require_descriptors();
41180
+ var DESCRIPTORS2 = _descriptors;
41207
41181
  var getKeys2 = _objectKeys;
41208
41182
  var gOPS2 = _objectGops;
41209
41183
  var pIE2 = require_objectPie();
@@ -41269,10 +41243,10 @@ ${latestSubscriptionCallbackError.current.stack}
41269
41243
  }, "_iterStep");
41270
41244
  var _iterators = {};
41271
41245
  var _redefine = _hide;
41272
- var dP$1 = require_objectDp();
41246
+ var dP$1 = _objectDp;
41273
41247
  var anObject$4 = _anObject;
41274
41248
  var getKeys$1 = _objectKeys;
41275
- var _objectDps = require_descriptors() ? Object.defineProperties : /* @__PURE__ */ __name(function defineProperties2(O2, Properties2) {
41249
+ var _objectDps = _descriptors ? Object.defineProperties : /* @__PURE__ */ __name(function defineProperties2(O2, Properties2) {
41276
41250
  anObject$4(O2);
41277
41251
  var keys2 = getKeys$1(Properties2);
41278
41252
  var length = keys2.length;
@@ -41339,7 +41313,7 @@ ${latestSubscriptionCallbackError.current.stack}
41339
41313
  };
41340
41314
  $exports.store = store$2;
41341
41315
  var _wksExports = _wks.exports;
41342
- var def = require_objectDp().f;
41316
+ var def = _objectDp.f;
41343
41317
  var has$b = _has;
41344
41318
  var TAG$1 = _wksExports("toStringTag");
41345
41319
  var _setToStringTag = /* @__PURE__ */ __name(function(it, tag, stat) {
@@ -41612,7 +41586,7 @@ ${latestSubscriptionCallbackError.current.stack}
41612
41586
  var _isArrayIter = /* @__PURE__ */ __name(function(it) {
41613
41587
  return it !== void 0 && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
41614
41588
  }, "_isArrayIter");
41615
- var $defineProperty$1 = require_objectDp();
41589
+ var $defineProperty$1 = _objectDp;
41616
41590
  var createDesc$2 = _propertyDesc;
41617
41591
  var _createProperty = /* @__PURE__ */ __name(function(object2, index2, value) {
41618
41592
  if (index2 in object2)
@@ -41741,7 +41715,7 @@ ${latestSubscriptionCallbackError.current.stack}
41741
41715
  }
41742
41716
  }, "_default$8");
41743
41717
  var $export$3 = _export;
41744
- $export$3($export$3.S + $export$3.F * !require_descriptors(), "Object", { defineProperty: require_objectDp().f });
41718
+ $export$3($export$3.S + $export$3.F * !_descriptors, "Object", { defineProperty: _objectDp.f });
41745
41719
  var $Object$1 = _coreExports.Object;
41746
41720
  var defineProperty$4 = /* @__PURE__ */ __name(function defineProperty2(it, key2, desc) {
41747
41721
  return $Object$1.defineProperty(it, key2, desc);
@@ -41782,7 +41756,7 @@ ${latestSubscriptionCallbackError.current.stack}
41782
41756
  var META$1 = _uid("meta");
41783
41757
  var isObject$4 = _isObject;
41784
41758
  var has$9 = _has;
41785
- var setDesc = require_objectDp().f;
41759
+ var setDesc = _objectDp.f;
41786
41760
  var id$1 = 0;
41787
41761
  var isExtensible = Object.isExtensible || function() {
41788
41762
  return true;
@@ -41835,7 +41809,7 @@ ${latestSubscriptionCallbackError.current.stack}
41835
41809
  var _metaExports = _meta.exports;
41836
41810
  var core = _coreExports;
41837
41811
  var wksExt$1 = _wksExt;
41838
- var defineProperty$2 = require_objectDp().f;
41812
+ var defineProperty$2 = _objectDp.f;
41839
41813
  var _wksDefine = /* @__PURE__ */ __name(function(name2) {
41840
41814
  var $Symbol2 = core.Symbol || (core.Symbol = {});
41841
41815
  if (name2.charAt(0) != "_" && !(name2 in $Symbol2))
@@ -41889,9 +41863,9 @@ ${latestSubscriptionCallbackError.current.stack}
41889
41863
  var toIObject$1 = _toIobject;
41890
41864
  var toPrimitive$1 = _toPrimitive$1;
41891
41865
  var has$8 = _has;
41892
- var IE8_DOM_DEFINE = require_ie8DomDefine();
41866
+ var IE8_DOM_DEFINE = _ie8DomDefine;
41893
41867
  var gOPD$2 = Object.getOwnPropertyDescriptor;
41894
- _objectGopd.f = require_descriptors() ? gOPD$2 : /* @__PURE__ */ __name(function getOwnPropertyDescriptor2(O2, P2) {
41868
+ _objectGopd.f = _descriptors ? gOPD$2 : /* @__PURE__ */ __name(function getOwnPropertyDescriptor2(O2, P2) {
41895
41869
  O2 = toIObject$1(O2);
41896
41870
  P2 = toPrimitive$1(P2, true);
41897
41871
  if (IE8_DOM_DEFINE)
@@ -41904,7 +41878,7 @@ ${latestSubscriptionCallbackError.current.stack}
41904
41878
  }, "getOwnPropertyDescriptor");
41905
41879
  var global$1 = _globalExports;
41906
41880
  var has$7 = _has;
41907
- var DESCRIPTORS = require_descriptors();
41881
+ var DESCRIPTORS = _descriptors;
41908
41882
  var $export$2 = _export;
41909
41883
  var redefine = _redefine;
41910
41884
  var META = _metaExports.KEY;
@@ -41927,7 +41901,7 @@ ${latestSubscriptionCallbackError.current.stack}
41927
41901
  var gOPNExt = _objectGopnExt;
41928
41902
  var $GOPD = _objectGopd;
41929
41903
  var $GOPS = _objectGops;
41930
- var $DP = require_objectDp();
41904
+ var $DP = _objectDp;
41931
41905
  var $keys$1 = _objectKeys;
41932
41906
  var gOPD$1 = $GOPD.f;
41933
41907
  var dP = $DP.f;
@@ -62119,6 +62093,7 @@ ${latestSubscriptionCallbackError.current.stack}
62119
62093
  }
62120
62094
  __name(getKeyedTagsAndTagOptions, "getKeyedTagsAndTagOptions");
62121
62095
  function getTagColorStyle(color2) {
62096
+ console.log(`color:`, color2);
62122
62097
  return color2 ? {
62123
62098
  style: {
62124
62099
  backgroundColor: color2,
@@ -62484,22 +62459,6 @@ ${latestSubscriptionCallbackError.current.stack}
62484
62459
  })
62485
62460
  }), rest)
62486
62461
  );
62487
- if (backgroundColor2) {
62488
- return /* @__PURE__ */ React$2.createElement(
62489
- "div",
62490
- {
62491
- style: {
62492
- backgroundColor: backgroundColor2,
62493
- borderRadius: "4px 4px 4px 4px",
62494
- overflow: "hidden",
62495
- width: "fit-content",
62496
- color: "white",
62497
- border: "2px solid white"
62498
- }
62499
- },
62500
- toRet
62501
- );
62502
- }
62503
62462
  return toRet;
62504
62463
  }
62505
62464
  };
@@ -108790,123 +108749,167 @@ ${latestSubscriptionCallbackError.current.stack}
108790
108749
  return proteinAlphabet[letter.toUpperCase()];
108791
108750
  }
108792
108751
  __name(getAminoAcidFromSequenceTriplet, "getAminoAcidFromSequenceTriplet");
108793
- function getAminoAcidDataForEachBaseOfDna(originalSequenceString, forward, optionalSubrangeRange, isProteinSequence) {
108752
+ function getNextTriplet(index2, sequenceString, exonRange) {
108753
+ let triplet = "";
108754
+ let internalIndex;
108755
+ const codonPositions = [];
108756
+ const isBaseInExon = /* @__PURE__ */ __name((baseIndex) => exonRange.some(
108757
+ (r2) => isPositionWithinRange(baseIndex, r2, sequenceString.length, true, false)
108758
+ ), "isBaseInExon");
108759
+ for (internalIndex = index2; internalIndex < sequenceString.length; internalIndex++) {
108760
+ if (triplet.length === 3) {
108761
+ break;
108762
+ }
108763
+ if (isBaseInExon(internalIndex)) {
108764
+ triplet += sequenceString[internalIndex];
108765
+ codonPositions.push(internalIndex);
108766
+ }
108767
+ }
108768
+ return { triplet, basesRead: internalIndex - index2, codonPositions };
108769
+ }
108770
+ __name(getNextTriplet, "getNextTriplet");
108771
+ function getTranslatedSequenceProperties(originalSequenceString, forward, optionalSubrangeRange, isProteinSequence) {
108794
108772
  const originalSequenceStringLength = isProteinSequence ? originalSequenceString.length * 3 : originalSequenceString.length;
108795
108773
  let sequenceString = originalSequenceString;
108796
- let startOffset = 0;
108774
+ const translationRange = { start: 0, end: originalSequenceStringLength - 1 };
108797
108775
  if (optionalSubrangeRange) {
108798
108776
  sequenceString = getSequenceWithinRange(
108799
108777
  optionalSubrangeRange,
108800
108778
  originalSequenceString
108801
108779
  );
108802
- startOffset = optionalSubrangeRange.start;
108780
+ translationRange.start = optionalSubrangeRange.start;
108781
+ translationRange.end = optionalSubrangeRange.end;
108803
108782
  }
108804
108783
  const sequenceStringLength = isProteinSequence ? sequenceString.length * 3 : sequenceString.length;
108805
- const aminoAcidDataForEachBaseOfDNA = [];
108806
- let codonRange;
108807
- let revCompGapLength = 0;
108808
- let aminoAcidIndex = 0;
108809
- if (!forward) {
108810
- aminoAcidIndex = Math.floor((sequenceStringLength - 1) / 3);
108811
- revCompGapLength = sequenceStringLength % 3;
108812
- codonRange = translateRange(
108813
- {
108814
- start: 0,
108815
- end: revCompGapLength - 1
108816
- },
108817
- startOffset,
108784
+ if (!isProteinSequence && !forward) {
108785
+ sequenceString = getReverseComplementSequenceString(sequenceString);
108786
+ }
108787
+ const absoluteExonRange = !isProteinSequence && optionalSubrangeRange && optionalSubrangeRange.locations ? optionalSubrangeRange.locations : [translationRange];
108788
+ const exonRange = absoluteExonRange.map((range2) => {
108789
+ let outputRange = translateRange(
108790
+ range2,
108791
+ -translationRange.start,
108818
108792
  originalSequenceStringLength
108819
108793
  );
108820
- if (revCompGapLength > 0) {
108821
- for (let i2 = 0; i2 < revCompGapLength; i2++) {
108822
- aminoAcidDataForEachBaseOfDNA.push({
108823
- aminoAcid: getAminoAcidFromSequenceTriplet("xxx"),
108824
- //fake xxx triplet returns the ambiguous X amino acid
108825
- positionInCodon: revCompGapLength - i2 - 1,
108826
- aminoAcidIndex,
108827
- sequenceIndex: codonRange.start + i2,
108828
- codonRange,
108829
- fullCodon: false
108830
- });
108831
- }
108832
- aminoAcidIndex--;
108794
+ if (!forward) {
108795
+ outputRange = flipRelativeRange(
108796
+ outputRange,
108797
+ { start: 0, end: sequenceStringLength - 1 },
108798
+ sequenceStringLength
108799
+ );
108833
108800
  }
108801
+ return outputRange;
108802
+ });
108803
+ return {
108804
+ sequenceString,
108805
+ translationRange,
108806
+ sequenceStringLength,
108807
+ originalSequenceStringLength,
108808
+ exonRange
108809
+ };
108810
+ }
108811
+ __name(getTranslatedSequenceProperties, "getTranslatedSequenceProperties");
108812
+ function positionInCdsToPositionInMainSequence(index2, forward, translationRange, mainSequenceLength) {
108813
+ let outputRange = translateRange(
108814
+ { start: index2, end: index2 },
108815
+ translationRange.start,
108816
+ mainSequenceLength
108817
+ );
108818
+ if (!forward) {
108819
+ outputRange = flipRelativeRange(
108820
+ outputRange,
108821
+ translationRange,
108822
+ mainSequenceLength
108823
+ );
108834
108824
  }
108835
- for (let index2 = 2 + revCompGapLength; index2 < sequenceStringLength; index2 += 3) {
108825
+ return outputRange.start;
108826
+ }
108827
+ __name(positionInCdsToPositionInMainSequence, "positionInCdsToPositionInMainSequence");
108828
+ function getAminoAcidDataForEachBaseOfDna(originalSequenceString, forward, optionalSubrangeRange, isProteinSequence) {
108829
+ const {
108830
+ sequenceString,
108831
+ translationRange,
108832
+ sequenceStringLength,
108833
+ originalSequenceStringLength,
108834
+ exonRange
108835
+ } = getTranslatedSequenceProperties(
108836
+ originalSequenceString,
108837
+ forward,
108838
+ optionalSubrangeRange,
108839
+ isProteinSequence
108840
+ );
108841
+ const aminoAcidDataForEachBaseOfDNA = [];
108842
+ for (let index2 = 0; index2 < sequenceStringLength; index2 += 3) {
108836
108843
  let aminoAcid;
108844
+ const aminoAcidIndex = index2 / 3;
108845
+ let codonPositionsInCDS;
108846
+ let basesRead;
108837
108847
  if (isProteinSequence) {
108838
- aminoAcid = proteinAlphabet[sequenceString[(index2 - 2) / 3].toUpperCase()];
108848
+ codonPositionsInCDS = [0, 1, 2].map((i2) => index2 + i2);
108849
+ basesRead = 3;
108850
+ aminoAcid = proteinAlphabet[sequenceString[index2 / 3].toUpperCase()];
108839
108851
  } else {
108840
- let triplet = sequenceString.slice(index2 - 2, index2 + 1);
108841
- if (!forward) {
108842
- triplet = getReverseComplementSequenceString(triplet);
108843
- }
108844
- aminoAcid = getAminoAcidFromSequenceTriplet(triplet);
108845
- }
108846
- codonRange = translateRange(
108847
- {
108848
- start: index2 - 2,
108849
- end: index2
108850
- },
108851
- startOffset,
108852
- originalSequenceStringLength
108852
+ const {
108853
+ triplet,
108854
+ basesRead: _basesRead,
108855
+ codonPositions
108856
+ } = getNextTriplet(index2, sequenceString, exonRange);
108857
+ basesRead = _basesRead;
108858
+ codonPositionsInCDS = codonPositions;
108859
+ aminoAcid = triplet.length === 3 ? getAminoAcidFromSequenceTriplet(triplet) : getAminoAcidFromSequenceTriplet("xxx");
108860
+ }
108861
+ const absoluteCodonPositions = codonPositionsInCDS.map(
108862
+ (i2) => positionInCdsToPositionInMainSequence(
108863
+ i2,
108864
+ forward,
108865
+ translationRange,
108866
+ originalSequenceStringLength
108867
+ )
108853
108868
  );
108854
- aminoAcidDataForEachBaseOfDNA.push({
108855
- aminoAcid,
108856
- //gap amino acid
108857
- positionInCodon: forward ? 0 : 2,
108858
- aminoAcidIndex,
108859
- sequenceIndex: codonRange.start,
108860
- codonRange,
108861
- fullCodon: true
108862
- });
108863
- aminoAcidDataForEachBaseOfDNA.push({
108864
- aminoAcid,
108865
- //gap amino acid
108866
- positionInCodon: 1,
108867
- aminoAcidIndex,
108868
- sequenceIndex: codonRange.start + 1,
108869
- codonRange,
108870
- fullCodon: true
108871
- });
108872
- aminoAcidDataForEachBaseOfDNA.push({
108873
- aminoAcid,
108874
- //gap amino acid
108875
- positionInCodon: forward ? 2 : 0,
108876
- aminoAcidIndex,
108877
- sequenceIndex: codonRange.start + 2,
108878
- codonRange,
108879
- fullCodon: true
108880
- });
108881
- if (forward) {
108882
- aminoAcidIndex++;
108883
- } else {
108884
- aminoAcidIndex--;
108869
+ const codonRange = forward ? {
108870
+ start: absoluteCodonPositions[0],
108871
+ end: absoluteCodonPositions[codonPositionsInCDS.length - 1]
108872
+ } : {
108873
+ start: absoluteCodonPositions[codonPositionsInCDS.length - 1],
108874
+ end: absoluteCodonPositions[0]
108875
+ };
108876
+ let positionInCodon = 0;
108877
+ for (let i2 = 0; i2 < basesRead; i2++) {
108878
+ const posInCds = i2 + index2;
108879
+ if (codonPositionsInCDS.includes(posInCds)) {
108880
+ aminoAcidDataForEachBaseOfDNA.push({
108881
+ aminoAcid,
108882
+ positionInCodon,
108883
+ aminoAcidIndex,
108884
+ sequenceIndex: absoluteCodonPositions[i2],
108885
+ codonRange,
108886
+ fullCodon: codonPositionsInCDS.length === 3
108887
+ });
108888
+ positionInCodon++;
108889
+ } else {
108890
+ aminoAcidDataForEachBaseOfDNA.push({
108891
+ aminoAcid: null,
108892
+ positionInCodon: null,
108893
+ aminoAcidIndex: null,
108894
+ sequenceIndex: positionInCdsToPositionInMainSequence(
108895
+ posInCds,
108896
+ forward,
108897
+ translationRange,
108898
+ originalSequenceStringLength
108899
+ ),
108900
+ codonRange: null,
108901
+ fullCodon: null
108902
+ });
108903
+ }
108885
108904
  }
108886
- }
108887
- const lengthOfEndBpsNotCoveredByAminoAcids = sequenceStringLength - aminoAcidDataForEachBaseOfDNA.length;
108888
- codonRange = translateRange(
108889
- {
108890
- start: sequenceStringLength - lengthOfEndBpsNotCoveredByAminoAcids,
108891
- end: sequenceStringLength - 1
108892
- },
108893
- startOffset,
108894
- originalSequenceStringLength
108895
- );
108896
- for (let j2 = 0; j2 < lengthOfEndBpsNotCoveredByAminoAcids; j2++) {
108897
- aminoAcidDataForEachBaseOfDNA.push({
108898
- aminoAcid: getAminoAcidFromSequenceTriplet("xxx"),
108899
- //fake xxx triplet returns the gap amino acid
108900
- positionInCodon: j2,
108901
- aminoAcidIndex,
108902
- sequenceIndex: codonRange.start + j2,
108903
- fullCodon: false,
108904
- codonRange
108905
- });
108905
+ index2 += basesRead - codonPositionsInCDS.length;
108906
108906
  }
108907
108907
  if (sequenceStringLength !== aminoAcidDataForEachBaseOfDNA.length) {
108908
108908
  throw new Error("something went wrong!");
108909
108909
  }
108910
+ if (!forward) {
108911
+ aminoAcidDataForEachBaseOfDNA.reverse();
108912
+ }
108910
108913
  return aminoAcidDataForEachBaseOfDNA;
108911
108914
  }
108912
108915
  __name(getAminoAcidDataForEachBaseOfDna, "getAminoAcidDataForEachBaseOfDna");
@@ -134881,7 +134884,7 @@ ${seq.sequence}
134881
134884
  (_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
134882
134885
  if (!c2.trim())
134883
134886
  return;
134884
- if (!c2.trim().includes("veEditor")) {
134887
+ if (!c2.trim().includes("veEditor") && !c2.trim().includes("previewModeFullscreen")) {
134885
134888
  editorName = c2;
134886
134889
  }
134887
134890
  });
@@ -135360,18 +135363,19 @@ ${seq.sequence}
135360
135363
  ),
135361
135364
  withHandlers({
135362
135365
  wrappedInsertSequenceDataAtPositionOrRange: (props) => {
135363
- return (_sequenceDataToInsert, _existingSequenceData, _caretPositionOrRange, _options) => {
135366
+ return (_sequenceDataToInsert, _existingSequenceData, _caretPositionOrRange, _options) => __async(this, null, function* () {
135364
135367
  const {
135365
135368
  sequenceDataToInsert,
135366
135369
  existingSequenceData,
135367
135370
  caretPositionOrRange,
135368
135371
  options
135369
- } = props.beforeSequenceInsertOrDelete ? props.beforeSequenceInsertOrDelete(
135372
+ } = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
135370
135373
  tidyUpSequenceData(_sequenceDataToInsert),
135371
135374
  tidyUpSequenceData(_existingSequenceData),
135372
135375
  _caretPositionOrRange,
135373
135376
  _options
135374
- ) || {} : {};
135377
+ )) || {} : {};
135378
+ console.log(`zoink2`);
135375
135379
  return [
135376
135380
  insertSequenceDataAtPositionOrRange(
135377
135381
  sequenceDataToInsert || _sequenceDataToInsert,
@@ -135381,7 +135385,7 @@ ${seq.sequence}
135381
135385
  ),
135382
135386
  options || _options || {}
135383
135387
  ];
135384
- };
135388
+ });
135385
135389
  },
135386
135390
  upsertTranslation: (props) => {
135387
135391
  return (translationToUpsert) => __async(this, null, function* () {
@@ -135466,7 +135470,7 @@ ${seq.sequence}
135466
135470
  );
135467
135471
  caretPositionUpdate2(0);
135468
135472
  },
135469
- handleReverseComplementSelection: (props) => () => {
135473
+ handleReverseComplementSelection: (props) => () => __async(this, null, function* () {
135470
135474
  const {
135471
135475
  sequenceData: sequenceData2,
135472
135476
  updateSequenceData: updateSequenceData2,
@@ -135482,7 +135486,7 @@ ${seq.sequence}
135482
135486
  range: selectionLayer2
135483
135487
  }
135484
135488
  );
135485
- const [newSeqData] = wrappedInsertSequenceDataAtPositionOrRange(
135489
+ const [newSeqData] = yield wrappedInsertSequenceDataAtPositionOrRange(
135486
135490
  reversedSeqData,
135487
135491
  sequenceData2,
135488
135492
  selectionLayer2,
@@ -135491,8 +135495,8 @@ ${seq.sequence}
135491
135495
  }
135492
135496
  );
135493
135497
  updateSequenceData2(newSeqData);
135494
- },
135495
- handleComplementSelection: (props) => () => {
135498
+ }),
135499
+ handleComplementSelection: (props) => () => __async(this, null, function* () {
135496
135500
  const {
135497
135501
  sequenceData: sequenceData2,
135498
135502
  updateSequenceData: updateSequenceData2,
@@ -135505,7 +135509,7 @@ ${seq.sequence}
135505
135509
  const comp = getComplementSequenceAndAnnotations(sequenceData2, {
135506
135510
  range: selectionLayer2
135507
135511
  });
135508
- const [newSeqData] = wrappedInsertSequenceDataAtPositionOrRange(
135512
+ const [newSeqData] = yield wrappedInsertSequenceDataAtPositionOrRange(
135509
135513
  comp,
135510
135514
  sequenceData2,
135511
135515
  selectionLayer2,
@@ -135514,7 +135518,7 @@ ${seq.sequence}
135514
135518
  }
135515
135519
  );
135516
135520
  updateSequenceData2(newSeqData);
135517
- },
135521
+ }),
135518
135522
  handleReverseComplementSequence: (props) => () => {
135519
135523
  const { sequenceData: sequenceData2, updateSequenceData: updateSequenceData2 } = props;
135520
135524
  updateSequenceData2(
@@ -147931,7 +147935,7 @@ double click --> edit`}`;
147931
147935
  fill: color2 || "gray"
147932
147936
  }
147933
147937
  )),
147934
- !isFiller && /* @__PURE__ */ React$2.createElement(
147938
+ (!isFiller || isTruncatedEnd && isTruncatedStart) && /* @__PURE__ */ React$2.createElement(
147935
147939
  "text",
147936
147940
  {
147937
147941
  fontSize: 25,
@@ -148008,18 +148012,39 @@ double click --> edit`}`;
148008
148012
  subrangeStartRelativeToAnnotationStart,
148009
148013
  aminoAcids
148010
148014
  );
148015
+ let prevAaSliver;
148016
+ let nextAaSliver = aminoAcidsForSubrange[1];
148017
+ const lastIndex = aminoAcidsForSubrange.length - 1;
148011
148018
  const translationSVG = aminoAcidsForSubrange.map(
148012
148019
  function(aminoAcidSliver, index2) {
148013
- const isEndFiller = index2 === 0 && aminoAcidSliver.positionInCodon === (annotation.forward ? 2 : 0);
148014
- let isTruncatedEnd = index2 === 0 && aminoAcidSliver.positionInCodon === 1;
148015
- let isTruncatedStart = index2 === aminoAcidsForSubrange.length - 1 && aminoAcidSliver.positionInCodon === 1;
148020
+ if (aminoAcidSliver.positionInCodon === null) {
148021
+ prevAaSliver = aminoAcidSliver;
148022
+ nextAaSliver = aminoAcidsForSubrange[index2 + 2];
148023
+ return /* @__PURE__ */ React$2.createElement(
148024
+ "rect",
148025
+ {
148026
+ x: index2 * charWidth2,
148027
+ y: height2 / 2 - height2 / 16,
148028
+ width: charWidth2,
148029
+ height: height2 / 8,
148030
+ fill: "grey",
148031
+ stroke: "black",
148032
+ strokeWidth: 1
148033
+ }
148034
+ );
148035
+ }
148036
+ const isEndFiller = (index2 === 0 || (prevAaSliver == null ? void 0 : prevAaSliver.positionInCodon) === null) && aminoAcidSliver.positionInCodon === (annotation.forward ? 2 : 0);
148037
+ const isStartFiller = (index2 === lastIndex || (nextAaSliver == null ? void 0 : nextAaSliver.positionInCodon) === null) && aminoAcidSliver.positionInCodon === (annotation.forward ? 0 : 2);
148038
+ let isTruncatedEnd = (index2 === 0 || (prevAaSliver == null ? void 0 : prevAaSliver.positionInCodon) === null) && aminoAcidSliver.positionInCodon === 1;
148039
+ let isTruncatedStart = (index2 === lastIndex || (nextAaSliver == null ? void 0 : nextAaSliver.positionInCodon) === null) && aminoAcidSliver.positionInCodon === 1;
148016
148040
  if (!annotation.forward) {
148017
148041
  const holder = isTruncatedEnd;
148018
148042
  isTruncatedEnd = isTruncatedStart;
148019
148043
  isTruncatedStart = holder;
148020
148044
  }
148021
- const isStartFiller = index2 === aminoAcidsForSubrange.length - 1 && aminoAcidSliver.positionInCodon === (annotation.forward ? 0 : 2);
148022
148045
  if (aminoAcidSliver.positionInCodon !== 1 && !isStartFiller && !isEndFiller) {
148046
+ prevAaSliver = aminoAcidSliver;
148047
+ nextAaSliver = aminoAcidsForSubrange[index2 + 2];
148023
148048
  return null;
148024
148049
  }
148025
148050
  const { gapsInside, gapsBefore } = getGaps(aminoAcidSliver.codonRange);
@@ -148036,10 +148061,12 @@ double click --> edit`}`;
148036
148061
  } else {
148037
148062
  color2 = aminoAcid.color;
148038
148063
  }
148064
+ prevAaSliver = aminoAcidSliver;
148065
+ nextAaSliver = aminoAcidsForSubrange[index2 + 2];
148039
148066
  return /* @__PURE__ */ React$2.createElement(
148040
148067
  AASliver$1,
148041
148068
  {
148042
- isFiller: isEndFiller || isStartFiller,
148069
+ isFiller: isEndFiller || isStartFiller || isTruncatedEnd && isTruncatedStart,
148043
148070
  isTruncatedEnd,
148044
148071
  isTruncatedStart,
148045
148072
  onClick: function(event) {
@@ -150251,7 +150278,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
150251
150278
  }
150252
150279
  __name(showFileDialog, "showFileDialog");
150253
150280
  const name = "@teselagen/ove";
150254
- const version = "0.5.12";
150281
+ const version = "0.5.14";
150255
150282
  const main = "./src/index.js";
150256
150283
  const type = "module";
150257
150284
  const exports$1 = {
@@ -153318,7 +153345,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153318
153345
  caretPositionUpdate: this.caretPositionUpdate
153319
153346
  });
153320
153347
  }, "updateSelectionOrCaret"));
153321
- __publicField(this, "handlePaste", /* @__PURE__ */ __name((e2) => {
153348
+ __publicField(this, "handlePaste", /* @__PURE__ */ __name((e2) => __async(this, null, function* () {
153322
153349
  const {
153323
153350
  caretPosition: caretPosition2 = -1,
153324
153351
  selectionLayer: selectionLayer2 = { start: -1, end: -1 },
@@ -153360,13 +153387,13 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153360
153387
  });
153361
153388
  if (!seqDataToInsert.sequence.length)
153362
153389
  return window.toastr.warning("Sorry no valid base pairs to paste");
153363
- insertAndSelectHelper({
153390
+ yield insertAndSelectHelper({
153364
153391
  seqDataToInsert,
153365
153392
  props: this.props
153366
153393
  });
153367
153394
  window.toastr.success("Sequence Pasted Successfully");
153368
153395
  e2.preventDefault();
153369
- }, "handlePaste"));
153396
+ }), "handlePaste"));
153370
153397
  __publicField(this, "handleCutOrCopy", /* @__PURE__ */ __name((isCut) => (e2) => {
153371
153398
  const {
153372
153399
  onCopy = noop$5,
@@ -153433,7 +153460,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153433
153460
  }, "handleCutOrCopy"));
153434
153461
  __publicField(this, "handleCut", this.handleCutOrCopy(true));
153435
153462
  __publicField(this, "handleCopy", this.handleCutOrCopy());
153436
- __publicField(this, "handleDnaInsert", /* @__PURE__ */ __name(({ useEventPositioning }) => {
153463
+ __publicField(this, "handleDnaInsert", /* @__PURE__ */ __name((_0) => __async(this, [_0], function* ({ useEventPositioning }) {
153437
153464
  const {
153438
153465
  caretPosition: caretPosition2 = -1,
153439
153466
  selectionLayer: selectionLayer2 = { start: -1, end: -1 },
@@ -153460,17 +153487,17 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153460
153487
  selectionLayer: selectionLayer2,
153461
153488
  sequenceLength,
153462
153489
  caretPosition: caretPosition2,
153463
- handleInsert: (seqDataToInsert) => {
153464
- insertAndSelectHelper({
153490
+ handleInsert: (seqDataToInsert) => __async(this, null, function* () {
153491
+ yield insertAndSelectHelper({
153465
153492
  props: this.props,
153466
153493
  seqDataToInsert
153467
153494
  });
153468
153495
  window.toastr.success("Sequence Inserted Successfully");
153469
- }
153496
+ })
153470
153497
  });
153471
153498
  }
153472
- }, "handleDnaInsert"));
153473
- __publicField(this, "handleDnaDelete", /* @__PURE__ */ __name((showToast = true) => {
153499
+ }), "handleDnaInsert"));
153500
+ __publicField(this, "handleDnaDelete", /* @__PURE__ */ __name((showToast = true) => __async(this, null, function* () {
153474
153501
  const {
153475
153502
  caretPosition: caretPosition2 = -1,
153476
153503
  selectionLayer: selectionLayer2 = { start: -1, end: -1 },
@@ -153511,11 +153538,14 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153511
153538
  isCaretAtEndOfSeq = true;
153512
153539
  }
153513
153540
  }
153514
- const [newSeqData] = wrappedInsertSequenceDataAtPositionOrRange(
153541
+ const [newSeqData, { abortSeqChange }] = yield wrappedInsertSequenceDataAtPositionOrRange(
153515
153542
  {},
153516
153543
  sequenceData2,
153517
153544
  rangeToDelete
153518
153545
  );
153546
+ console.log(`z3`);
153547
+ if (abortSeqChange)
153548
+ return;
153519
153549
  updateSequenceData2(newSeqData);
153520
153550
  caretPositionUpdate2(
153521
153551
  isCaretAtEndOfSeq ? newSeqData.sequence.length : rangeToDelete.start > newSeqData.sequence.length ? (
@@ -153529,7 +153559,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153529
153559
  if (showToast)
153530
153560
  window.toastr.success("Sequence Deleted Successfully");
153531
153561
  }
153532
- }, "handleDnaDelete"));
153562
+ }), "handleDnaDelete"));
153533
153563
  __publicField(this, "caretPositionUpdate", /* @__PURE__ */ __name((position2) => {
153534
153564
  const { caretPosition: caretPosition2 = -1 } = this.props;
153535
153565
  if (caretPosition2 === position2) {
@@ -154288,7 +154318,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
154288
154318
  });
154289
154319
  }
154290
154320
  __name(getGenbankFromSelection, "getGenbankFromSelection");
154291
- const insertAndSelectHelper = /* @__PURE__ */ __name(({ seqDataToInsert, props }) => {
154321
+ const insertAndSelectHelper = /* @__PURE__ */ __name((_0) => __async(this, [_0], function* ({ seqDataToInsert, props }) {
154292
154322
  const {
154293
154323
  updateSequenceData: updateSequenceData2,
154294
154324
  wrappedInsertSequenceDataAtPositionOrRange,
@@ -154298,11 +154328,15 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
154298
154328
  selectionLayer: selectionLayer2,
154299
154329
  bpLimit
154300
154330
  } = props;
154301
- const [newSeqData, { maintainOriginSplit }] = wrappedInsertSequenceDataAtPositionOrRange(
154331
+ const [newSeqData, { maintainOriginSplit, abortSeqChange }] = yield wrappedInsertSequenceDataAtPositionOrRange(
154302
154332
  seqDataToInsert,
154303
154333
  sequenceData2,
154304
154334
  caretPosition2 > -1 ? caretPosition2 : selectionLayer2
154305
154335
  );
154336
+ console.log(`z4`);
154337
+ if (abortSeqChange) {
154338
+ throw new Error("abortSeqChange");
154339
+ }
154306
154340
  if (bpLimit) {
154307
154341
  if (newSeqData.sequence.length > bpLimit) {
154308
154342
  window.toastr.error(
@@ -154320,7 +154354,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
154320
154354
  start: newSelectionLayerStart,
154321
154355
  end: newSelectionLayerEnd % newSeqData.sequence.length
154322
154356
  });
154323
- }, "insertAndSelectHelper");
154357
+ }), "insertAndSelectHelper");
154324
154358
  function getEditDeleteHandlers(type2, annotation) {
154325
154359
  return [
154326
154360
  ...annotation.isEditLocked ? [