@teselagen/ove 0.3.30 → 0.3.43

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
@@ -27120,10 +27120,10 @@ var __async = (__this, __arguments, generator) => {
27120
27120
  /* istanbul ignore next */
27121
27121
  Object.getOwnPropertyNames
27122
27122
  );
27123
- function toPrimitive$3(value) {
27123
+ function toPrimitive$2(value) {
27124
27124
  return value === null ? null : typeof value === "object" ? "" + value : value;
27125
27125
  }
27126
- __name(toPrimitive$3, "toPrimitive$3");
27126
+ __name(toPrimitive$2, "toPrimitive$2");
27127
27127
  function hasProp(target, prop2) {
27128
27128
  return objectPrototype$2.hasOwnProperty.call(target, prop2);
27129
27129
  }
@@ -28020,7 +28020,7 @@ var __async = (__this, __arguments, generator) => {
28020
28020
  return this.name_ + "[" + this.value_ + "]";
28021
28021
  }, "toString");
28022
28022
  _proto.valueOf = /* @__PURE__ */ __name(function valueOf() {
28023
- return toPrimitive$3(this.get());
28023
+ return toPrimitive$2(this.get());
28024
28024
  }, "valueOf");
28025
28025
  _proto[_Symbol$toPrimitive] = function() {
28026
28026
  return this.valueOf();
@@ -28205,7 +28205,7 @@ var __async = (__this, __arguments, generator) => {
28205
28205
  return this.name_ + "[" + this.derivation.toString() + "]";
28206
28206
  }, "toString");
28207
28207
  _proto.valueOf = /* @__PURE__ */ __name(function valueOf() {
28208
- return toPrimitive$3(this.get());
28208
+ return toPrimitive$2(this.get());
28209
28209
  }, "valueOf");
28210
28210
  _proto[_Symbol$toPrimitive$1] = function() {
28211
28211
  return this.valueOf();
@@ -44864,11 +44864,20 @@ ${latestSubscriptionCallbackError.current.stack}
44864
44864
  return true;
44865
44865
  }
44866
44866
  }, "_fails");
44867
- var _descriptors = !_fails(function() {
44868
- return Object.defineProperty({}, "a", { get: function() {
44869
- return 7;
44870
- } }).a != 7;
44871
- });
44867
+ var _descriptors;
44868
+ var hasRequired_descriptors;
44869
+ function require_descriptors() {
44870
+ if (hasRequired_descriptors)
44871
+ return _descriptors;
44872
+ hasRequired_descriptors = 1;
44873
+ _descriptors = !_fails(function() {
44874
+ return Object.defineProperty({}, "a", { get: function() {
44875
+ return 7;
44876
+ } }).a != 7;
44877
+ });
44878
+ return _descriptors;
44879
+ }
44880
+ __name(require_descriptors, "require_descriptors");
44872
44881
  var _domCreate;
44873
44882
  var hasRequired_domCreate;
44874
44883
  function require_domCreate() {
@@ -44884,11 +44893,20 @@ ${latestSubscriptionCallbackError.current.stack}
44884
44893
  return _domCreate;
44885
44894
  }
44886
44895
  __name(require_domCreate, "require_domCreate");
44887
- var _ie8DomDefine = !_descriptors && !_fails(function() {
44888
- return Object.defineProperty(require_domCreate()("div"), "a", { get: function() {
44889
- return 7;
44890
- } }).a != 7;
44891
- });
44896
+ var _ie8DomDefine;
44897
+ var hasRequired_ie8DomDefine;
44898
+ function require_ie8DomDefine() {
44899
+ if (hasRequired_ie8DomDefine)
44900
+ return _ie8DomDefine;
44901
+ hasRequired_ie8DomDefine = 1;
44902
+ _ie8DomDefine = !require_descriptors() && !_fails(function() {
44903
+ return Object.defineProperty(require_domCreate()("div"), "a", { get: function() {
44904
+ return 7;
44905
+ } }).a != 7;
44906
+ });
44907
+ return _ie8DomDefine;
44908
+ }
44909
+ __name(require_ie8DomDefine, "require_ie8DomDefine");
44892
44910
  var isObject$6 = _isObject;
44893
44911
  var _toPrimitive$1 = /* @__PURE__ */ __name(function(it, S2) {
44894
44912
  if (!isObject$6(it))
@@ -44902,25 +44920,33 @@ ${latestSubscriptionCallbackError.current.stack}
44902
44920
  return val2;
44903
44921
  throw TypeError("Can't convert object to primitive value");
44904
44922
  }, "_toPrimitive$1");
44905
- var anObject$5 = _anObject;
44906
- var IE8_DOM_DEFINE$1 = _ie8DomDefine;
44907
- var toPrimitive$2 = _toPrimitive$1;
44908
- var dP$3 = Object.defineProperty;
44909
- _objectDp.f = _descriptors ? Object.defineProperty : /* @__PURE__ */ __name(function defineProperty2(O2, P2, Attributes) {
44910
- anObject$5(O2);
44911
- P2 = toPrimitive$2(P2, true);
44912
- anObject$5(Attributes);
44913
- if (IE8_DOM_DEFINE$1)
44914
- try {
44915
- return dP$3(O2, P2, Attributes);
44916
- } catch (e2) {
44917
- }
44918
- if ("get" in Attributes || "set" in Attributes)
44919
- throw TypeError("Accessors not supported!");
44920
- if ("value" in Attributes)
44921
- O2[P2] = Attributes.value;
44922
- return O2;
44923
- }, "defineProperty");
44923
+ var hasRequired_objectDp;
44924
+ function require_objectDp() {
44925
+ if (hasRequired_objectDp)
44926
+ return _objectDp;
44927
+ hasRequired_objectDp = 1;
44928
+ var anObject2 = _anObject;
44929
+ var IE8_DOM_DEFINE2 = require_ie8DomDefine();
44930
+ var toPrimitive2 = _toPrimitive$1;
44931
+ var dP2 = Object.defineProperty;
44932
+ _objectDp.f = require_descriptors() ? Object.defineProperty : /* @__PURE__ */ __name(function defineProperty2(O2, P2, Attributes) {
44933
+ anObject2(O2);
44934
+ P2 = toPrimitive2(P2, true);
44935
+ anObject2(Attributes);
44936
+ if (IE8_DOM_DEFINE2)
44937
+ try {
44938
+ return dP2(O2, P2, Attributes);
44939
+ } catch (e2) {
44940
+ }
44941
+ if ("get" in Attributes || "set" in Attributes)
44942
+ throw TypeError("Accessors not supported!");
44943
+ if ("value" in Attributes)
44944
+ O2[P2] = Attributes.value;
44945
+ return O2;
44946
+ }, "defineProperty");
44947
+ return _objectDp;
44948
+ }
44949
+ __name(require_objectDp, "require_objectDp");
44924
44950
  var _propertyDesc = /* @__PURE__ */ __name(function(bitmap, value) {
44925
44951
  return {
44926
44952
  enumerable: !(bitmap & 1),
@@ -44929,9 +44955,9 @@ ${latestSubscriptionCallbackError.current.stack}
44929
44955
  value
44930
44956
  };
44931
44957
  }, "_propertyDesc");
44932
- var dP$2 = _objectDp;
44958
+ var dP$2 = require_objectDp();
44933
44959
  var createDesc$3 = _propertyDesc;
44934
- var _hide = _descriptors ? function(object2, key2, value) {
44960
+ var _hide = require_descriptors() ? function(object2, key2, value) {
44935
44961
  return dP$2.f(object2, key2, createDesc$3(1, value));
44936
44962
  } : function(object2, key2, value) {
44937
44963
  object2[key2] = value;
@@ -45109,15 +45135,7 @@ ${latestSubscriptionCallbackError.current.stack}
45109
45135
  var _objectGops = {};
45110
45136
  _objectGops.f = Object.getOwnPropertySymbols;
45111
45137
  var _objectPie = {};
45112
- var hasRequired_objectPie;
45113
- function require_objectPie() {
45114
- if (hasRequired_objectPie)
45115
- return _objectPie;
45116
- hasRequired_objectPie = 1;
45117
- _objectPie.f = {}.propertyIsEnumerable;
45118
- return _objectPie;
45119
- }
45120
- __name(require_objectPie, "require_objectPie");
45138
+ _objectPie.f = {}.propertyIsEnumerable;
45121
45139
  var defined$1 = _defined;
45122
45140
  var _toObject = /* @__PURE__ */ __name(function(it) {
45123
45141
  return Object(defined$1(it));
@@ -45128,10 +45146,10 @@ ${latestSubscriptionCallbackError.current.stack}
45128
45146
  if (hasRequired_objectAssign)
45129
45147
  return _objectAssign;
45130
45148
  hasRequired_objectAssign = 1;
45131
- var DESCRIPTORS2 = _descriptors;
45149
+ var DESCRIPTORS2 = require_descriptors();
45132
45150
  var getKeys2 = _objectKeys;
45133
45151
  var gOPS2 = _objectGops;
45134
- var pIE2 = require_objectPie();
45152
+ var pIE2 = _objectPie;
45135
45153
  var toObject2 = _toObject;
45136
45154
  var IObject2 = _iobject;
45137
45155
  var $assign = Object.assign;
@@ -45194,10 +45212,10 @@ ${latestSubscriptionCallbackError.current.stack}
45194
45212
  }, "_iterStep");
45195
45213
  var _iterators = {};
45196
45214
  var _redefine = _hide;
45197
- var dP$1 = _objectDp;
45215
+ var dP$1 = require_objectDp();
45198
45216
  var anObject$4 = _anObject;
45199
45217
  var getKeys$1 = _objectKeys;
45200
- var _objectDps = _descriptors ? Object.defineProperties : /* @__PURE__ */ __name(function defineProperties2(O2, Properties2) {
45218
+ var _objectDps = require_descriptors() ? Object.defineProperties : /* @__PURE__ */ __name(function defineProperties2(O2, Properties2) {
45201
45219
  anObject$4(O2);
45202
45220
  var keys2 = getKeys$1(Properties2);
45203
45221
  var length = keys2.length;
@@ -45264,7 +45282,7 @@ ${latestSubscriptionCallbackError.current.stack}
45264
45282
  };
45265
45283
  $exports.store = store$2;
45266
45284
  var _wksExports = _wks.exports;
45267
- var def = _objectDp.f;
45285
+ var def = require_objectDp().f;
45268
45286
  var has$b = _has;
45269
45287
  var TAG$1 = _wksExports("toStringTag");
45270
45288
  var _setToStringTag = /* @__PURE__ */ __name(function(it, tag, stat) {
@@ -45537,7 +45555,7 @@ ${latestSubscriptionCallbackError.current.stack}
45537
45555
  var _isArrayIter = /* @__PURE__ */ __name(function(it) {
45538
45556
  return it !== void 0 && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
45539
45557
  }, "_isArrayIter");
45540
- var $defineProperty$1 = _objectDp;
45558
+ var $defineProperty$1 = require_objectDp();
45541
45559
  var createDesc$2 = _propertyDesc;
45542
45560
  var _createProperty = /* @__PURE__ */ __name(function(object2, index2, value) {
45543
45561
  if (index2 in object2)
@@ -45666,7 +45684,7 @@ ${latestSubscriptionCallbackError.current.stack}
45666
45684
  }
45667
45685
  }, "_default$8");
45668
45686
  var $export$3 = _export;
45669
- $export$3($export$3.S + $export$3.F * !_descriptors, "Object", { defineProperty: _objectDp.f });
45687
+ $export$3($export$3.S + $export$3.F * !require_descriptors(), "Object", { defineProperty: require_objectDp().f });
45670
45688
  var $Object$1 = _coreExports.Object;
45671
45689
  var defineProperty$6 = /* @__PURE__ */ __name(function defineProperty2(it, key2, desc) {
45672
45690
  return $Object$1.defineProperty(it, key2, desc);
@@ -45707,7 +45725,7 @@ ${latestSubscriptionCallbackError.current.stack}
45707
45725
  var META$1 = _uid("meta");
45708
45726
  var isObject$5 = _isObject;
45709
45727
  var has$9 = _has;
45710
- var setDesc = _objectDp.f;
45728
+ var setDesc = require_objectDp().f;
45711
45729
  var id$1 = 0;
45712
45730
  var isExtensible = Object.isExtensible || function() {
45713
45731
  return true;
@@ -45760,7 +45778,7 @@ ${latestSubscriptionCallbackError.current.stack}
45760
45778
  var _metaExports = _meta.exports;
45761
45779
  var core = _coreExports;
45762
45780
  var wksExt$1 = _wksExt;
45763
- var defineProperty$4 = _objectDp.f;
45781
+ var defineProperty$4 = require_objectDp().f;
45764
45782
  var _wksDefine = /* @__PURE__ */ __name(function(name2) {
45765
45783
  var $Symbol2 = core.Symbol || (core.Symbol = {});
45766
45784
  if (name2.charAt(0) != "_" && !(name2 in $Symbol2))
@@ -45768,7 +45786,7 @@ ${latestSubscriptionCallbackError.current.stack}
45768
45786
  }, "_wksDefine");
45769
45787
  var getKeys = _objectKeys;
45770
45788
  var gOPS$1 = _objectGops;
45771
- var pIE$1 = require_objectPie();
45789
+ var pIE$1 = _objectPie;
45772
45790
  var _enumKeys = /* @__PURE__ */ __name(function(it) {
45773
45791
  var result = getKeys(it);
45774
45792
  var getSymbols2 = gOPS$1.f;
@@ -45809,14 +45827,14 @@ ${latestSubscriptionCallbackError.current.stack}
45809
45827
  return windowNames && toString$3.call(it) == "[object Window]" ? getWindowNames(it) : gOPN$1(toIObject$2(it));
45810
45828
  }, "getOwnPropertyNames");
45811
45829
  var _objectGopd = {};
45812
- var pIE = require_objectPie();
45830
+ var pIE = _objectPie;
45813
45831
  var createDesc$1 = _propertyDesc;
45814
45832
  var toIObject$1 = _toIobject;
45815
45833
  var toPrimitive$1 = _toPrimitive$1;
45816
45834
  var has$8 = _has;
45817
- var IE8_DOM_DEFINE = _ie8DomDefine;
45835
+ var IE8_DOM_DEFINE = require_ie8DomDefine();
45818
45836
  var gOPD$2 = Object.getOwnPropertyDescriptor;
45819
- _objectGopd.f = _descriptors ? gOPD$2 : /* @__PURE__ */ __name(function getOwnPropertyDescriptor2(O2, P2) {
45837
+ _objectGopd.f = require_descriptors() ? gOPD$2 : /* @__PURE__ */ __name(function getOwnPropertyDescriptor2(O2, P2) {
45820
45838
  O2 = toIObject$1(O2);
45821
45839
  P2 = toPrimitive$1(P2, true);
45822
45840
  if (IE8_DOM_DEFINE)
@@ -45829,7 +45847,7 @@ ${latestSubscriptionCallbackError.current.stack}
45829
45847
  }, "getOwnPropertyDescriptor");
45830
45848
  var global$1 = _globalExports;
45831
45849
  var has$7 = _has;
45832
- var DESCRIPTORS = _descriptors;
45850
+ var DESCRIPTORS = require_descriptors();
45833
45851
  var $export$2 = _export;
45834
45852
  var redefine = _redefine;
45835
45853
  var META = _metaExports.KEY;
@@ -45852,7 +45870,7 @@ ${latestSubscriptionCallbackError.current.stack}
45852
45870
  var gOPNExt = _objectGopnExt;
45853
45871
  var $GOPD = _objectGopd;
45854
45872
  var $GOPS = _objectGops;
45855
- var $DP = _objectDp;
45873
+ var $DP = require_objectDp();
45856
45874
  var $keys$1 = _objectKeys;
45857
45875
  var gOPD$1 = $GOPD.f;
45858
45876
  var dP = $DP.f;
@@ -45989,7 +46007,7 @@ ${latestSubscriptionCallbackError.current.stack}
45989
46007
  $GOPD.f = $getOwnPropertyDescriptor;
45990
46008
  $DP.f = $defineProperty;
45991
46009
  _objectGopn.f = gOPNExt.f = $getOwnPropertyNames;
45992
- require_objectPie().f = $propertyIsEnumerable;
46010
+ _objectPie.f = $propertyIsEnumerable;
45993
46011
  $GOPS.f = $getOwnPropertySymbols;
45994
46012
  if (DESCRIPTORS && !_library) {
45995
46013
  redefine(ObjectProto, "propertyIsEnumerable", $propertyIsEnumerable);
@@ -86978,7 +86996,7 @@ ${latestSubscriptionCallbackError.current.stack}
86978
86996
  isEntityDisabled,
86979
86997
  entity
86980
86998
  });
86981
- const _isClean = entity._isClean && doNotValidateUntouchedRows;
86999
+ const _isClean = entity._isClean && doNotValidateUntouchedRows || isEntityClean(entity);
86982
87000
  const err2 = !_isClean && reduxFormCellValidation[cellId];
86983
87001
  let selectedTopBorder, selectedRightBorder, selectedBottomBorder, selectedLeftBorder;
86984
87002
  if (reduxFormSelectedCells[cellId]) {
@@ -89174,6 +89192,21 @@ ${latestSubscriptionCallbackError.current.stack}
89174
89192
  return str.replace(getNumberStrAtEnd(str), "");
89175
89193
  }
89176
89194
  __name(stripNumberAtEnd, "stripNumberAtEnd");
89195
+ function isEntityClean(e2) {
89196
+ let isClean = true;
89197
+ lodashExports.some(e2, (val2, key2) => {
89198
+ if (key2 === "id")
89199
+ return;
89200
+ if (key2 === "_isClean")
89201
+ return;
89202
+ if (val2) {
89203
+ isClean = false;
89204
+ return true;
89205
+ }
89206
+ });
89207
+ return isClean;
89208
+ }
89209
+ __name(isEntityClean, "isEntityClean");
89177
89210
  const wrapDialog = /* @__PURE__ */ __name((topLevelDialogProps = {}) => (Component) => (props) => {
89178
89211
  const r2 = reactExports.useRef();
89179
89212
  const memoedHotkeys = reactExports.useMemo(
@@ -91688,7 +91721,7 @@ ${latestSubscriptionCallbackError.current.stack}
91688
91721
  function removeCleanRows(reduxFormEntities, reduxFormCellValidation) {
91689
91722
  const toFilterOut = {};
91690
91723
  const entsToUse = (reduxFormEntities || []).filter((e2) => {
91691
- if (!e2._isClean)
91724
+ if (!(e2._isClean || isEntityClean(e2)))
91692
91725
  return true;
91693
91726
  else {
91694
91727
  toFilterOut[getIdOrCodeOrIndex(e2)] = true;
@@ -106643,7 +106676,9 @@ ${latestSubscriptionCallbackError.current.stack}
106643
106676
  ))),
106644
106677
  400
106645
106678
  );
106646
- const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
106679
+ const isSafari = /^((?!chrome|android).)*safari/i.test(
106680
+ navigator.userAgent
106681
+ );
106647
106682
  function genericCommandFactory(config) {
106648
106683
  const out = {};
106649
106684
  for (const cmdId in config.commandDefs) {
@@ -107696,6 +107731,7 @@ ${latestSubscriptionCallbackError.current.stack}
107696
107731
  minimumOrfSizeUpdate
107697
107732
  }, Symbol.toStringTag, { value: "Module" }));
107698
107733
  const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
107734
+ const protein_letters_withUandX = "ACDEFGHIKLMNPQRSTVWYUX";
107699
107735
  const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO.*-";
107700
107736
  const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
107701
107737
  const unambiguous_dna_letters = "GATC";
@@ -107764,6 +107800,7 @@ ${latestSubscriptionCallbackError.current.stack}
107764
107800
  extended_protein_letters,
107765
107801
  extended_protein_values,
107766
107802
  protein_letters,
107803
+ protein_letters_withUandX,
107767
107804
  unambiguous_dna_letters,
107768
107805
  unambiguous_rna_letters
107769
107806
  }, Symbol.toStringTag, { value: "Module" }));
@@ -113782,20 +113819,91 @@ ${latestSubscriptionCallbackError.current.stack}
113782
113819
  "primers",
113783
113820
  "guides"
113784
113821
  ];
113785
- function filterSequenceString(sequenceString, additionalValidChars = "", charOverrides) {
113786
- if (sequenceString) {
113787
- return sequenceString.replace(
113788
- new RegExp(
113789
- `[^${charOverrides || `atgcyrswkmbvdhnu${additionalValidChars.split("").join("\\")}`}]`,
113790
- "gi"
113791
- ),
113792
- ""
113822
+ function filterSequenceString(sequenceString, {
113823
+ additionalValidChars = "",
113824
+ isOligo: isOligo2,
113825
+ name: name2,
113826
+ isProtein: isProtein2,
113827
+ isRna: isRna2,
113828
+ isMixedRnaAndDna,
113829
+ includeStopCodon
113830
+ } = {}) {
113831
+ const acceptedChars = getAcceptedChars({
113832
+ isOligo: isOligo2,
113833
+ isProtein: isProtein2,
113834
+ isRna: isRna2,
113835
+ isMixedRnaAndDna,
113836
+ includeStopCodon
113837
+ });
113838
+ const replaceChars = getReplaceChars({
113839
+ isOligo: isOligo2,
113840
+ isProtein: isProtein2,
113841
+ isRna: isRna2,
113842
+ isMixedRnaAndDna
113843
+ });
113844
+ let sanitizedVal = "";
113845
+ const invalidChars = [];
113846
+ const chars2 = `${acceptedChars}${additionalValidChars.split("").join("\\")}`;
113847
+ const warnings = [];
113848
+ const replaceCount = {};
113849
+ sequenceString.split("").forEach((letter) => {
113850
+ const lowerLetter = letter.toLowerCase();
113851
+ if (replaceChars && replaceChars[lowerLetter]) {
113852
+ if (!replaceCount[lowerLetter]) {
113853
+ replaceCount[lowerLetter] = 0;
113854
+ }
113855
+ replaceCount[lowerLetter]++;
113856
+ const isUpper = lowerLetter !== letter;
113857
+ sanitizedVal += isUpper ? replaceChars[lowerLetter].toUpperCase() : replaceChars[lowerLetter];
113858
+ } else if (chars2.includes(lowerLetter)) {
113859
+ sanitizedVal += letter;
113860
+ } else {
113861
+ invalidChars.push(letter);
113862
+ }
113863
+ });
113864
+ Object.keys(replaceCount).forEach((letter) => {
113865
+ warnings.push(
113866
+ `Replaced "${letter}" with "${replaceChars[letter]}"${replaceCount[letter] > 1 ? ` ${replaceCount[letter]} times` : ""}`
113867
+ );
113868
+ });
113869
+ if (sequenceString.length !== sanitizedVal.length) {
113870
+ warnings.push(
113871
+ `${name2 ? `Sequence ${name2}: ` : ""}Invalid character(s) detected and removed: ${invalidChars.slice(0, 100).join(", ")} `
113793
113872
  );
113794
- } else {
113795
- return sequenceString;
113796
113873
  }
113874
+ if (typeof window !== "undefined" && window.toastr && warnings.length) {
113875
+ warnings.forEach((warning2) => {
113876
+ window.toastr.warning(warning2);
113877
+ });
113878
+ }
113879
+ return [sanitizedVal, warnings];
113797
113880
  }
113798
113881
  __name(filterSequenceString, "filterSequenceString");
113882
+ function getAcceptedChars({
113883
+ isOligo: isOligo2,
113884
+ isProtein: isProtein2,
113885
+ isRna: isRna2,
113886
+ isMixedRnaAndDna,
113887
+ includeStopCodon
113888
+ } = {}) {
113889
+ return isProtein2 ? `${protein_letters_withUandX.toLowerCase()}${includeStopCodon ? "*." : ""}}` : isOligo2 ? ambiguous_rna_letters.toLowerCase() + "t" : isRna2 ? ambiguous_rna_letters.toLowerCase() + "t" : isMixedRnaAndDna ? ambiguous_rna_letters.toLowerCase() + ambiguous_dna_letters.toLowerCase() : (
113890
+ //just plain old dna
113891
+ ambiguous_rna_letters.toLowerCase() + ambiguous_dna_letters.toLowerCase()
113892
+ );
113893
+ }
113894
+ __name(getAcceptedChars, "getAcceptedChars");
113895
+ function getReplaceChars({
113896
+ isOligo: isOligo2,
113897
+ isProtein: isProtein2,
113898
+ isRna: isRna2,
113899
+ isMixedRnaAndDna
113900
+ } = {}) {
113901
+ return isProtein2 ? {} : isOligo2 ? {} : isRna2 ? { t: "u" } : isMixedRnaAndDna ? {} : (
113902
+ //just plain old dna
113903
+ {}
113904
+ );
113905
+ }
113906
+ __name(getReplaceChars, "getReplaceChars");
113799
113907
  function tidyUpAnnotation(_annotation, {
113800
113908
  sequenceData: sequenceData2 = {},
113801
113909
  convertAnnotationsFromAAIndices,
@@ -113924,14 +114032,6 @@ ${latestSubscriptionCallbackError.current.stack}
113924
114032
  }
113925
114033
  }
113926
114034
  __name(coerceLocation, "coerceLocation");
113927
- function filterAminoAcidSequenceString(sequenceString, options) {
113928
- options = options || {};
113929
- if (options.includeStopCodon) {
113930
- return sequenceString == null ? void 0 : sequenceString.replace(/[^xtgalmfwkqespvicyhrndu.*]/gi, "");
113931
- }
113932
- return sequenceString == null ? void 0 : sequenceString.replace(/[^xtgalmfwkqespvicyhrndu]/gi, "");
113933
- }
113934
- __name(filterAminoAcidSequenceString, "filterAminoAcidSequenceString");
113935
114035
  function getDegenerateDnaStringFromAAString(aaString) {
113936
114036
  return aaString.split("").map((char2) => aminoAcidToDegenerateDnaMap[char2.toLowerCase()] || "nnn").join("");
113937
114037
  }
@@ -113943,11 +114043,10 @@ ${latestSubscriptionCallbackError.current.stack}
113943
114043
  removeUnwantedChars,
113944
114044
  additionalValidChars,
113945
114045
  noTranslationData,
113946
- charOverrides,
113947
114046
  doNotProvideIdsForAnnotations,
113948
- proteinFilterOptions,
113949
114047
  noCdsTranslations,
113950
- convertAnnotationsFromAAIndices
114048
+ convertAnnotationsFromAAIndices,
114049
+ topLevelSeqData
113951
114050
  } = options;
113952
114051
  let seqData = lodashExports.cloneDeep(pSeqData);
113953
114052
  const response = {
@@ -113977,16 +114076,15 @@ ${latestSubscriptionCallbackError.current.stack}
113977
114076
  }
113978
114077
  if (removeUnwantedChars) {
113979
114078
  if (seqData.isProtein) {
113980
- seqData.proteinSequence = filterAminoAcidSequenceString(
113981
- seqData.proteinSequence,
113982
- __spreadValues({ includeStopCodon: true }, proteinFilterOptions)
113983
- );
114079
+ const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadValues({
114080
+ includeStopCodon: true
114081
+ }, topLevelSeqData || seqData));
114082
+ seqData.proteinSequence = newSeq;
113984
114083
  } else {
113985
- seqData.sequence = filterSequenceString(
113986
- seqData.sequence,
113987
- `${additionalValidChars || ""}${seqData.isRna || seqData.isMixedRnaAndDna ? "u" : ""}`,
113988
- charOverrides
113989
- );
114084
+ const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
114085
+ additionalValidChars
114086
+ }, topLevelSeqData || seqData));
114087
+ seqData.sequence = newSeq;
113990
114088
  }
113991
114089
  }
113992
114090
  if (seqData.isProtein) {
@@ -123333,7 +123431,8 @@ ${latestSubscriptionCallbackError.current.stack}
123333
123431
  inclusive1BasedEnd,
123334
123432
  additionalValidChars,
123335
123433
  allowOverflowAnnotations,
123336
- coerceFeatureTypes
123434
+ coerceFeatureTypes,
123435
+ includeStopCodon
123337
123436
  } = options;
123338
123437
  [
123339
123438
  "isDNA",
@@ -123383,7 +123482,6 @@ ${latestSubscriptionCallbackError.current.stack}
123383
123482
  response.messages.push("No sequence detected");
123384
123483
  sequence2.sequence = "";
123385
123484
  }
123386
- let validChars;
123387
123485
  if (sequence2.isProtein === void 0 && guessIfProtein) {
123388
123486
  sequence2.isProtein = !guessIfSequenceIsDnaAndNotProtein(
123389
123487
  sequence2.sequence,
@@ -123391,12 +123489,15 @@ ${latestSubscriptionCallbackError.current.stack}
123391
123489
  );
123392
123490
  }
123393
123491
  if (sequence2.isProtein) {
123394
- validChars = filterAminoAcidSequenceString(sequence2.sequence);
123492
+ const [validChars, warnings] = filterSequenceString(sequence2.sequence, {
123493
+ name: sequence2.name,
123494
+ isProtein: true,
123495
+ additionalValidChars,
123496
+ includeStopCodon
123497
+ });
123395
123498
  if (validChars !== sequence2.sequence) {
123396
123499
  sequence2.sequence = validChars;
123397
- response.messages.push(
123398
- "Import Error: Illegal character(s) detected and removed from amino acid sequence. Allowed characters are: xtgalmfwkqespvicyhrndu"
123399
- );
123500
+ response.messages.push(...warnings);
123400
123501
  }
123401
123502
  sequence2.type = "PROTEIN";
123402
123503
  sequence2.isProtein = true;
@@ -123418,12 +123519,12 @@ ${latestSubscriptionCallbackError.current.stack}
123418
123519
  } else {
123419
123520
  sequence2.type = "DNA";
123420
123521
  }
123421
- validChars = filterSequenceString(sequence2.sequence, additionalValidChars);
123522
+ const [validChars, warnings] = filterSequenceString(sequence2.sequence, __spreadValues({
123523
+ additionalValidChars
123524
+ }, sequence2));
123422
123525
  if (validChars !== sequence2.sequence) {
123423
123526
  sequence2.sequence = validChars;
123424
- response.messages.push(
123425
- "Import Error: Illegal character(s) detected and removed from sequence. Allowed characters are: atgcyrswkmbvdhn"
123426
- );
123527
+ response.messages.push(...warnings);
123427
123528
  }
123428
123529
  }
123429
123530
  if (!sequence2.size) {
@@ -138311,18 +138412,6 @@ ${seq.sequence}
138311
138412
  return selToUse;
138312
138413
  }
138313
138414
  __name(getSelFromWrappedAddon, "getSelFromWrappedAddon");
138314
- function getAcceptedChars({
138315
- isOligo: isOligo2,
138316
- isProtein: isProtein2,
138317
- isRna: isRna2,
138318
- isMixedRnaAndDna
138319
- } = {}) {
138320
- return isProtein2 ? extended_protein_letters.toLowerCase() : isOligo2 ? ambiguous_rna_letters.toLowerCase() + "t" : isRna2 ? ambiguous_rna_letters.toLowerCase() : isMixedRnaAndDna ? ambiguous_rna_letters.toLowerCase() + ambiguous_dna_letters.toLowerCase() : (
138321
- //just plain old dna
138322
- ambiguous_dna_letters.toLowerCase()
138323
- );
138324
- }
138325
- __name(getAcceptedChars, "getAcceptedChars");
138326
138415
  function getStripedPattern({ color: color2 }) {
138327
138416
  return /* @__PURE__ */ React$2.createElement(
138328
138417
  "pattern",
@@ -154908,7 +154997,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
154908
154997
  }
154909
154998
  __name(showFileDialog, "showFileDialog");
154910
154999
  const name = "@teselagen/ove";
154911
- const version = "0.3.29";
155000
+ const version = "0.3.42";
154912
155001
  const main = "./src/index.js";
154913
155002
  const exports$1 = {
154914
155003
  ".": {
@@ -157055,9 +157144,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
157055
157144
  selectionLayer: selectionLayer2,
157056
157145
  sequenceLength,
157057
157146
  isProtein: isProtein2,
157058
- replaceChars,
157059
157147
  caretPosition: caretPosition2,
157060
- acceptedChars,
157148
+ sequenceData: sequenceData2,
157061
157149
  maxInsertSize
157062
157150
  } = this.props;
157063
157151
  const { charsToInsert, hasTempError } = this.state;
@@ -157090,17 +157178,13 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
157090
157178
  autoFocus: true,
157091
157179
  style: hasTempError ? { borderColor: "red" } : {},
157092
157180
  onChange: (e2) => {
157093
- let sanitizedVal = "";
157094
- e2.target.value.split("").forEach((letter) => {
157095
- const lowerLetter = letter.toLowerCase();
157096
- if (replaceChars && replaceChars[lowerLetter]) {
157097
- const isUpper = lowerLetter !== letter;
157098
- sanitizedVal += isUpper ? replaceChars[lowerLetter].toUpperCase() : replaceChars[lowerLetter];
157099
- } else if (acceptedChars.includes(lowerLetter)) {
157100
- sanitizedVal += letter;
157101
- }
157102
- });
157103
- if (e2.target.value.length !== sanitizedVal.length) {
157181
+ const [sanitizedVal, warnings] = filterSequenceString(
157182
+ e2.target.value,
157183
+ __spreadProps(__spreadValues({}, sequenceData2), {
157184
+ name: void 0
157185
+ })
157186
+ );
157187
+ if (warnings.length) {
157104
157188
  this.setState({
157105
157189
  hasTempError: true
157106
157190
  });
@@ -157975,7 +158059,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
157975
158059
  selectionLayer: selectionLayer2 = { start: -1, end: -1 },
157976
158060
  readOnly: readOnly2,
157977
158061
  onPaste,
157978
- disableBpEditing
158062
+ disableBpEditing,
158063
+ sequenceData: sequenceData2
157979
158064
  } = this.props;
157980
158065
  if (disableBpEditing) {
157981
158066
  return window.toastr.warning("Sorry the underlying sequence is locked");
@@ -158000,6 +158085,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
158000
158085
  };
158001
158086
  }
158002
158087
  seqDataToInsert = tidyUpSequenceData(seqDataToInsert, {
158088
+ topLevelSeqData: sequenceData2,
158003
158089
  provideNewIdsForAnnotations: true,
158004
158090
  annotationsAsObjects: true,
158005
158091
  removeUnwantedChars: true,
@@ -158095,8 +158181,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
158095
158181
  createSequenceInputPopup({
158096
158182
  useEventPositioning,
158097
158183
  isReplace,
158098
- replaceChars: sequenceData2.isRna ? { t: "u" } : void 0,
158099
- acceptedChars: getAcceptedChars(sequenceData2),
158184
+ sequenceData: sequenceData2,
158100
158185
  isProtein: sequenceData2.isProtein,
158101
158186
  selectionLayer: selectionLayer2,
158102
158187
  sequenceLength,
@@ -169589,14 +169674,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
169589
169674
  const newVal2 = e2.target.innerText;
169590
169675
  const savedCaretPosition = EditCaretPositioning.saveSelection(e2.currentTarget);
169591
169676
  setCaretPosition(savedCaretPosition);
169592
- const acceptedChars = getAcceptedChars(sequenceData2);
169593
- let newBases = "";
169594
- newVal2.split("").forEach((letter) => {
169595
- if (acceptedChars.includes(letter.toLowerCase())) {
169596
- newBases += letter;
169597
- }
169598
- });
169599
- if (newVal2.length !== newBases.length) {
169677
+ const [newBases, warnings] = filterSequenceString(newVal2, sequenceData2);
169678
+ if (warnings.length) {
169600
169679
  setTempError(true);
169601
169680
  setTimeout(() => {
169602
169681
  setTempError(false);