@teselagen/ove 0.8.28 → 0.8.30

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
@@ -36296,6 +36296,195 @@ ${latestSubscriptionCallbackError.current.stack}
36296
36296
  );
36297
36297
  }
36298
36298
  __name(DialogFooter, "DialogFooter");
36299
+ var NOT_FOUND = "NOT_FOUND";
36300
+ function createSingletonCache(equals) {
36301
+ var entry;
36302
+ return {
36303
+ get: /* @__PURE__ */ __name(function get2(key) {
36304
+ if (entry && equals(entry.key, key)) {
36305
+ return entry.value;
36306
+ }
36307
+ return NOT_FOUND;
36308
+ }, "get"),
36309
+ put: /* @__PURE__ */ __name(function put(key, value) {
36310
+ entry = {
36311
+ key,
36312
+ value
36313
+ };
36314
+ }, "put"),
36315
+ getEntries: /* @__PURE__ */ __name(function getEntries() {
36316
+ return entry ? [entry] : [];
36317
+ }, "getEntries"),
36318
+ clear: /* @__PURE__ */ __name(function clear() {
36319
+ entry = void 0;
36320
+ }, "clear")
36321
+ };
36322
+ }
36323
+ __name(createSingletonCache, "createSingletonCache");
36324
+ function createLruCache(maxSize, equals) {
36325
+ var entries = [];
36326
+ function get2(key) {
36327
+ var cacheIndex = entries.findIndex(function(entry2) {
36328
+ return equals(key, entry2.key);
36329
+ });
36330
+ if (cacheIndex > -1) {
36331
+ var entry = entries[cacheIndex];
36332
+ if (cacheIndex > 0) {
36333
+ entries.splice(cacheIndex, 1);
36334
+ entries.unshift(entry);
36335
+ }
36336
+ return entry.value;
36337
+ }
36338
+ return NOT_FOUND;
36339
+ }
36340
+ __name(get2, "get");
36341
+ function put(key, value) {
36342
+ if (get2(key) === NOT_FOUND) {
36343
+ entries.unshift({
36344
+ key,
36345
+ value
36346
+ });
36347
+ if (entries.length > maxSize) {
36348
+ entries.pop();
36349
+ }
36350
+ }
36351
+ }
36352
+ __name(put, "put");
36353
+ function getEntries() {
36354
+ return entries;
36355
+ }
36356
+ __name(getEntries, "getEntries");
36357
+ function clear() {
36358
+ entries = [];
36359
+ }
36360
+ __name(clear, "clear");
36361
+ return {
36362
+ get: get2,
36363
+ put,
36364
+ getEntries,
36365
+ clear
36366
+ };
36367
+ }
36368
+ __name(createLruCache, "createLruCache");
36369
+ var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
36370
+ return a2 === b3;
36371
+ }, "defaultEqualityCheck");
36372
+ function createCacheKeyComparator(equalityCheck) {
36373
+ return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
36374
+ if (prev === null || next === null || prev.length !== next.length) {
36375
+ return false;
36376
+ }
36377
+ var length = prev.length;
36378
+ for (var i2 = 0; i2 < length; i2++) {
36379
+ if (!equalityCheck(prev[i2], next[i2])) {
36380
+ return false;
36381
+ }
36382
+ }
36383
+ return true;
36384
+ }, "areArgumentsShallowlyEqual");
36385
+ }
36386
+ __name(createCacheKeyComparator, "createCacheKeyComparator");
36387
+ function defaultMemoize(func, equalityCheckOrOptions) {
36388
+ var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
36389
+ equalityCheck: equalityCheckOrOptions
36390
+ };
36391
+ var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck;
36392
+ var comparator = createCacheKeyComparator(equalityCheck);
36393
+ var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
36394
+ function memoized() {
36395
+ var value = cache2.get(arguments);
36396
+ if (value === NOT_FOUND) {
36397
+ value = func.apply(null, arguments);
36398
+ if (resultEqualityCheck) {
36399
+ var entries = cache2.getEntries();
36400
+ var matchingEntry = entries.find(function(entry) {
36401
+ return resultEqualityCheck(entry.value, value);
36402
+ });
36403
+ if (matchingEntry) {
36404
+ value = matchingEntry.value;
36405
+ }
36406
+ }
36407
+ cache2.put(arguments, value);
36408
+ }
36409
+ return value;
36410
+ }
36411
+ __name(memoized, "memoized");
36412
+ memoized.clearCache = function() {
36413
+ return cache2.clear();
36414
+ };
36415
+ return memoized;
36416
+ }
36417
+ __name(defaultMemoize, "defaultMemoize");
36418
+ function getDependencies(funcs) {
36419
+ var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
36420
+ if (!dependencies.every(function(dep) {
36421
+ return typeof dep === "function";
36422
+ })) {
36423
+ var dependencyTypes = dependencies.map(function(dep) {
36424
+ return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
36425
+ }).join(", ");
36426
+ throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
36427
+ }
36428
+ return dependencies;
36429
+ }
36430
+ __name(getDependencies, "getDependencies");
36431
+ function createSelectorCreator(memoize2) {
36432
+ for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
36433
+ memoizeOptionsFromArgs[_key - 1] = arguments[_key];
36434
+ }
36435
+ var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
36436
+ for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
36437
+ funcs[_key2] = arguments[_key2];
36438
+ }
36439
+ var _recomputations = 0;
36440
+ var _lastResult;
36441
+ var directlyPassedOptions = {
36442
+ memoizeOptions: void 0
36443
+ };
36444
+ var resultFunc = funcs.pop();
36445
+ if (typeof resultFunc === "object") {
36446
+ directlyPassedOptions = resultFunc;
36447
+ resultFunc = funcs.pop();
36448
+ }
36449
+ if (typeof resultFunc !== "function") {
36450
+ throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
36451
+ }
36452
+ var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
36453
+ var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
36454
+ var dependencies = getDependencies(funcs);
36455
+ var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
36456
+ _recomputations++;
36457
+ return resultFunc.apply(null, arguments);
36458
+ }, "recomputationWrapper")].concat(finalMemoizeOptions));
36459
+ var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
36460
+ var params = [];
36461
+ var length = dependencies.length;
36462
+ for (var i2 = 0; i2 < length; i2++) {
36463
+ params.push(dependencies[i2].apply(null, arguments));
36464
+ }
36465
+ _lastResult = memoizedResultFunc.apply(null, params);
36466
+ return _lastResult;
36467
+ }, "dependenciesChecker"));
36468
+ Object.assign(selector, {
36469
+ resultFunc,
36470
+ memoizedResultFunc,
36471
+ dependencies,
36472
+ lastResult: /* @__PURE__ */ __name(function lastResult() {
36473
+ return _lastResult;
36474
+ }, "lastResult"),
36475
+ recomputations: /* @__PURE__ */ __name(function recomputations() {
36476
+ return _recomputations;
36477
+ }, "recomputations"),
36478
+ resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
36479
+ return _recomputations = 0;
36480
+ }, "resetRecomputations")
36481
+ });
36482
+ return selector;
36483
+ }, "createSelector");
36484
+ return createSelector2;
36485
+ }
36486
+ __name(createSelectorCreator, "createSelectorCreator");
36487
+ var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
36299
36488
  function useCombinedRefs() {
36300
36489
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
36301
36490
  refs[_key] = arguments[_key];
@@ -85682,21 +85871,27 @@ ${latestSubscriptionCallbackError.current.stack}
85682
85871
  }
85683
85872
  return false;
85684
85873
  });
85874
+ const dtFormParamsSelector = reactExports.useMemo(
85875
+ () => createSelector(
85876
+ (state2) => formValueSelector(formName)(
85877
+ state2,
85878
+ "reduxFormCellValidation",
85879
+ "reduxFormEntities",
85880
+ "reduxFormQueryParams",
85881
+ "reduxFormSelectedEntityIdMap"
85882
+ ),
85883
+ (result) => result
85884
+ // identity, but memoized
85885
+ ),
85886
+ [formName]
85887
+ );
85685
85888
  const {
85686
85889
  reduxFormCellValidation: _reduxFormCellValidation,
85687
85890
  reduxFormEditingCell,
85688
85891
  reduxFormEntities,
85689
85892
  reduxFormQueryParams: _reduxFormQueryParams = {},
85690
85893
  reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
85691
- } = useSelector(/* @__PURE__ */ __name(function dtFormParamsSelector(state2) {
85692
- return formValueSelector(formName)(
85693
- state2,
85694
- "reduxFormCellValidation",
85695
- "reduxFormEntities",
85696
- "reduxFormQueryParams",
85697
- "reduxFormSelectedEntityIdMap"
85698
- );
85699
- }, "dtFormParamsSelector"));
85894
+ } = useSelector(dtFormParamsSelector);
85700
85895
  const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
85701
85896
  _reduxFormCellValidation
85702
85897
  );
@@ -86003,11 +86198,9 @@ ${latestSubscriptionCallbackError.current.stack}
86003
86198
  newTableConfig = {
86004
86199
  fieldOptions: []
86005
86200
  };
86006
- if (isEqual$3(prev, newTableConfig)) {
86007
- return prev;
86008
- } else {
86009
- return newTableConfig;
86010
- }
86201
+ }
86202
+ if (isEqual$3(prev, newTableConfig)) {
86203
+ return prev;
86011
86204
  } else {
86012
86205
  return newTableConfig;
86013
86206
  }
@@ -103876,14 +104069,16 @@ ${latestSubscriptionCallbackError.current.stack}
103876
104069
  name: name2,
103877
104070
  isProtein: isProtein2,
103878
104071
  isRna: isRna2,
103879
- isMixedRnaAndDna
104072
+ isMixedRnaAndDna,
104073
+ getAcceptedInsertChars
103880
104074
  } = {}) {
103881
- const acceptedChars = getAcceptedChars({
104075
+ const sequenceTypeInfo = {
103882
104076
  isOligo: isOligo2,
103883
104077
  isProtein: isProtein2,
103884
104078
  isRna: isRna2,
103885
104079
  isMixedRnaAndDna
103886
- });
104080
+ };
104081
+ const acceptedChars = isFunction$1(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
103887
104082
  const replaceChars = getReplaceChars({
103888
104083
  isOligo: isOligo2,
103889
104084
  isProtein: isProtein2,
@@ -104119,6 +104314,7 @@ ${latestSubscriptionCallbackError.current.stack}
104119
104314
  doNotProvideIdsForAnnotations,
104120
104315
  noCdsTranslations,
104121
104316
  convertAnnotationsFromAAIndices,
104317
+ getAcceptedInsertChars,
104122
104318
  topLevelSeqData
104123
104319
  } = options;
104124
104320
  let seqData = cloneDeep(pSeqData);
@@ -104150,13 +104346,16 @@ ${latestSubscriptionCallbackError.current.stack}
104150
104346
  if (!doNotRemoveInvalidChars) {
104151
104347
  if (seqData.isProtein) {
104152
104348
  const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
104153
- isProtein: true
104349
+ isProtein: true,
104350
+ getAcceptedInsertChars
104154
104351
  }));
104155
104352
  seqData.proteinSequence = newSeq;
104156
104353
  } else {
104157
- const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
104354
+ const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
104158
104355
  additionalValidChars
104159
- }, topLevelSeqData || seqData));
104356
+ }, topLevelSeqData || seqData), {
104357
+ getAcceptedInsertChars
104358
+ }));
104160
104359
  seqData.sequence = newSeq;
104161
104360
  }
104162
104361
  }
@@ -125757,195 +125956,6 @@ ${seq.sequence}
125757
125956
  return sequenceDataSelector(state2).sequence;
125758
125957
  }
125759
125958
  __name(sequenceSelector, "sequenceSelector");
125760
- var NOT_FOUND = "NOT_FOUND";
125761
- function createSingletonCache(equals) {
125762
- var entry;
125763
- return {
125764
- get: /* @__PURE__ */ __name(function get2(key) {
125765
- if (entry && equals(entry.key, key)) {
125766
- return entry.value;
125767
- }
125768
- return NOT_FOUND;
125769
- }, "get"),
125770
- put: /* @__PURE__ */ __name(function put(key, value) {
125771
- entry = {
125772
- key,
125773
- value
125774
- };
125775
- }, "put"),
125776
- getEntries: /* @__PURE__ */ __name(function getEntries() {
125777
- return entry ? [entry] : [];
125778
- }, "getEntries"),
125779
- clear: /* @__PURE__ */ __name(function clear() {
125780
- entry = void 0;
125781
- }, "clear")
125782
- };
125783
- }
125784
- __name(createSingletonCache, "createSingletonCache");
125785
- function createLruCache(maxSize, equals) {
125786
- var entries = [];
125787
- function get2(key) {
125788
- var cacheIndex = entries.findIndex(function(entry2) {
125789
- return equals(key, entry2.key);
125790
- });
125791
- if (cacheIndex > -1) {
125792
- var entry = entries[cacheIndex];
125793
- if (cacheIndex > 0) {
125794
- entries.splice(cacheIndex, 1);
125795
- entries.unshift(entry);
125796
- }
125797
- return entry.value;
125798
- }
125799
- return NOT_FOUND;
125800
- }
125801
- __name(get2, "get");
125802
- function put(key, value) {
125803
- if (get2(key) === NOT_FOUND) {
125804
- entries.unshift({
125805
- key,
125806
- value
125807
- });
125808
- if (entries.length > maxSize) {
125809
- entries.pop();
125810
- }
125811
- }
125812
- }
125813
- __name(put, "put");
125814
- function getEntries() {
125815
- return entries;
125816
- }
125817
- __name(getEntries, "getEntries");
125818
- function clear() {
125819
- entries = [];
125820
- }
125821
- __name(clear, "clear");
125822
- return {
125823
- get: get2,
125824
- put,
125825
- getEntries,
125826
- clear
125827
- };
125828
- }
125829
- __name(createLruCache, "createLruCache");
125830
- var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
125831
- return a2 === b3;
125832
- }, "defaultEqualityCheck");
125833
- function createCacheKeyComparator(equalityCheck) {
125834
- return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
125835
- if (prev === null || next === null || prev.length !== next.length) {
125836
- return false;
125837
- }
125838
- var length = prev.length;
125839
- for (var i2 = 0; i2 < length; i2++) {
125840
- if (!equalityCheck(prev[i2], next[i2])) {
125841
- return false;
125842
- }
125843
- }
125844
- return true;
125845
- }, "areArgumentsShallowlyEqual");
125846
- }
125847
- __name(createCacheKeyComparator, "createCacheKeyComparator");
125848
- function defaultMemoize(func, equalityCheckOrOptions) {
125849
- var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
125850
- equalityCheck: equalityCheckOrOptions
125851
- };
125852
- var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck;
125853
- var comparator = createCacheKeyComparator(equalityCheck);
125854
- var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
125855
- function memoized() {
125856
- var value = cache2.get(arguments);
125857
- if (value === NOT_FOUND) {
125858
- value = func.apply(null, arguments);
125859
- if (resultEqualityCheck) {
125860
- var entries = cache2.getEntries();
125861
- var matchingEntry = entries.find(function(entry) {
125862
- return resultEqualityCheck(entry.value, value);
125863
- });
125864
- if (matchingEntry) {
125865
- value = matchingEntry.value;
125866
- }
125867
- }
125868
- cache2.put(arguments, value);
125869
- }
125870
- return value;
125871
- }
125872
- __name(memoized, "memoized");
125873
- memoized.clearCache = function() {
125874
- return cache2.clear();
125875
- };
125876
- return memoized;
125877
- }
125878
- __name(defaultMemoize, "defaultMemoize");
125879
- function getDependencies(funcs) {
125880
- var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
125881
- if (!dependencies.every(function(dep) {
125882
- return typeof dep === "function";
125883
- })) {
125884
- var dependencyTypes = dependencies.map(function(dep) {
125885
- return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
125886
- }).join(", ");
125887
- throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
125888
- }
125889
- return dependencies;
125890
- }
125891
- __name(getDependencies, "getDependencies");
125892
- function createSelectorCreator(memoize2) {
125893
- for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
125894
- memoizeOptionsFromArgs[_key - 1] = arguments[_key];
125895
- }
125896
- var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
125897
- for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
125898
- funcs[_key2] = arguments[_key2];
125899
- }
125900
- var _recomputations = 0;
125901
- var _lastResult;
125902
- var directlyPassedOptions = {
125903
- memoizeOptions: void 0
125904
- };
125905
- var resultFunc = funcs.pop();
125906
- if (typeof resultFunc === "object") {
125907
- directlyPassedOptions = resultFunc;
125908
- resultFunc = funcs.pop();
125909
- }
125910
- if (typeof resultFunc !== "function") {
125911
- throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
125912
- }
125913
- var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
125914
- var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
125915
- var dependencies = getDependencies(funcs);
125916
- var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
125917
- _recomputations++;
125918
- return resultFunc.apply(null, arguments);
125919
- }, "recomputationWrapper")].concat(finalMemoizeOptions));
125920
- var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
125921
- var params = [];
125922
- var length = dependencies.length;
125923
- for (var i2 = 0; i2 < length; i2++) {
125924
- params.push(dependencies[i2].apply(null, arguments));
125925
- }
125926
- _lastResult = memoizedResultFunc.apply(null, params);
125927
- return _lastResult;
125928
- }, "dependenciesChecker"));
125929
- Object.assign(selector, {
125930
- resultFunc,
125931
- memoizedResultFunc,
125932
- dependencies,
125933
- lastResult: /* @__PURE__ */ __name(function lastResult() {
125934
- return _lastResult;
125935
- }, "lastResult"),
125936
- recomputations: /* @__PURE__ */ __name(function recomputations() {
125937
- return _recomputations;
125938
- }, "recomputations"),
125939
- resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
125940
- return _recomputations = 0;
125941
- }, "resetRecomputations")
125942
- });
125943
- return selector;
125944
- }, "createSelector");
125945
- return createSelector2;
125946
- }
125947
- __name(createSelectorCreator, "createSelectorCreator");
125948
- var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
125949
125959
  const restrictionEnzymesSelector = createSelector(
125950
125960
  () => defaultEnzymesByName,
125951
125961
  (state2, additionalEnzymes) => {
@@ -125971,7 +125981,34 @@ ${seq.sequence}
125971
125981
  const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
125972
125982
  return sequenceData2.cutsiteLabelColors;
125973
125983
  });
125974
- function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors) {
125984
+ const cutsitesCache = [];
125985
+ function getCachedResult(argsObj) {
125986
+ const idx = cutsitesCache.findIndex(
125987
+ (entry) => entry && isEqual$3(entry.args, argsObj)
125988
+ );
125989
+ if (idx === -1) return;
125990
+ const hit = cutsitesCache[idx];
125991
+ return hit.result;
125992
+ }
125993
+ __name(getCachedResult, "getCachedResult");
125994
+ function setCachedResult(argsObj, result, cacheSize = 1) {
125995
+ cutsitesCache.push({
125996
+ args: argsObj,
125997
+ result
125998
+ });
125999
+ if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
126000
+ }
126001
+ __name(setCachedResult, "setCachedResult");
126002
+ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
126003
+ const cachedResult = getCachedResult({
126004
+ sequence: sequence2,
126005
+ circular: circular2,
126006
+ enzymeList,
126007
+ cutsiteLabelColors
126008
+ });
126009
+ if (cachedResult) {
126010
+ return cachedResult;
126011
+ }
125975
126012
  const cutsitesByName = getLowerCaseObj(
125976
126013
  getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
125977
126014
  );
@@ -126004,11 +126041,22 @@ ${seq.sequence}
126004
126041
  const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
126005
126042
  return cutsitesForEnzyme;
126006
126043
  });
126007
- return {
126044
+ const result = {
126008
126045
  cutsitesByName,
126009
126046
  cutsitesById,
126010
126047
  cutsitesArray
126011
126048
  };
126049
+ setCachedResult(
126050
+ {
126051
+ sequence: sequence2,
126052
+ circular: circular2,
126053
+ enzymeList,
126054
+ cutsiteLabelColors
126055
+ },
126056
+ result,
126057
+ editorSize
126058
+ );
126059
+ return result;
126012
126060
  }
126013
126061
  __name(cutsitesSelector, "cutsitesSelector");
126014
126062
  const cutsitesSelector$1 = createSelector(
@@ -126016,6 +126064,7 @@ ${seq.sequence}
126016
126064
  circularSelector,
126017
126065
  restrictionEnzymesSelector,
126018
126066
  cutsiteLabelColorSelector,
126067
+ (editorState) => editorState.editorSize,
126019
126068
  cutsitesSelector
126020
126069
  );
126021
126070
  function divideBy3(num, shouldDivideBy3) {
@@ -127431,11 +127480,12 @@ ${seq.sequence}
127431
127480
  props,
127432
127481
  overrideName
127433
127482
  }) {
127434
- var _a2;
127483
+ var _a2, _b2, _c2, _d2;
127435
127484
  dialogHolder.dialogType = dialogType;
127436
127485
  if (!dialogHolder.dialogType && ModalComponent) {
127437
127486
  dialogHolder.dialogType = "TGCustomModal";
127438
127487
  }
127488
+ dialogHolder.editorName = props == null ? void 0 : props.editorName;
127439
127489
  if (document.activeElement && document.activeElement.closest(".veEditor")) {
127440
127490
  let editorName;
127441
127491
  (_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
@@ -127449,16 +127499,28 @@ ${seq.sequence}
127449
127499
  dialogHolder.CustomModalComponent = ModalComponent;
127450
127500
  dialogHolder.props = props;
127451
127501
  dialogHolder.overrideName = overrideName;
127452
- dialogHolder.setUniqKeyToForceRerender(uuid());
127502
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
127503
+ (_c2 = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c2.call(
127504
+ _b2,
127505
+ uuid()
127506
+ );
127507
+ } else {
127508
+ (_d2 = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d2.call(dialogHolder, uuid());
127509
+ }
127453
127510
  }
127454
127511
  __name(showDialog, "showDialog");
127455
127512
  function hideDialog() {
127513
+ var _a2, _b2, _c2;
127456
127514
  delete dialogHolder.dialogType;
127457
127515
  delete dialogHolder.CustomModalComponent;
127458
127516
  delete dialogHolder.props;
127459
127517
  delete dialogHolder.overrideName;
127518
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
127519
+ (_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
127520
+ } else {
127521
+ (_c2 = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c2.call(dialogHolder);
127522
+ }
127460
127523
  delete dialogHolder.editorName;
127461
- dialogHolder.setUniqKeyToForceRerender();
127462
127524
  }
127463
127525
  __name(hideDialog, "hideDialog");
127464
127526
  const typeToDialogType = {
@@ -127733,7 +127795,8 @@ ${seq.sequence}
127733
127795
  readOnly: readOnly2,
127734
127796
  alwaysAllowSave,
127735
127797
  sequenceData: sequenceData2,
127736
- lastSavedIdUpdate: lastSavedIdUpdate2
127798
+ lastSavedIdUpdate: lastSavedIdUpdate2,
127799
+ getAcceptedInsertChars
127737
127800
  } = props;
127738
127801
  const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
127739
127802
  const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
@@ -127746,7 +127809,8 @@ ${seq.sequence}
127746
127809
  opts2,
127747
127810
  tidyUpSequenceData(sequenceData2, {
127748
127811
  doNotRemoveInvalidChars: true,
127749
- annotationsAsObjects: true
127812
+ annotationsAsObjects: true,
127813
+ getAcceptedInsertChars
127750
127814
  }),
127751
127815
  props,
127752
127816
  updateLastSavedIdToCurrent
@@ -127928,8 +127992,8 @@ ${seq.sequence}
127928
127992
  caretPositionOrRange,
127929
127993
  options
127930
127994
  } = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
127931
- tidyUpSequenceData(_sequenceDataToInsert),
127932
- tidyUpSequenceData(_existingSequenceData),
127995
+ tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
127996
+ tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
127933
127997
  _caretPositionOrRange,
127934
127998
  _options
127935
127999
  )) || {} : {};
@@ -128092,7 +128156,11 @@ ${seq.sequence}
128092
128156
  (state2) => state2.VectorEditor,
128093
128157
  (state2, editorName) => editorName,
128094
128158
  (VectorEditor, editorName) => {
128095
- return VectorEditor[editorName];
128159
+ const editorState = VectorEditor[editorName];
128160
+ editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
128161
+ (editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
128162
+ ).length);
128163
+ return editorState;
128096
128164
  }
128097
128165
  );
128098
128166
  function mapStateToProps(state2, ownProps) {
@@ -128129,6 +128197,9 @@ ${seq.sequence}
128129
128197
  annotationTypePlural,
128130
128198
  sequenceLength
128131
128199
  );
128200
+ if (dialogHolder.editorName) {
128201
+ annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
128202
+ }
128132
128203
  }
128133
128204
  });
128134
128205
  const toReturn = __spreadProps(__spreadValues({}, editorState), {
@@ -128356,13 +128427,15 @@ ${seq.sequence}
128356
128427
  return toRet;
128357
128428
  }
128358
128429
  __name(getShowGCContent, "getShowGCContent");
128359
- function jsonToJson(incomingJson) {
128430
+ function jsonToJson(incomingJson, options) {
128431
+ const { getAcceptedInsertChars } = options || {};
128360
128432
  return JSON.stringify(
128361
128433
  omit$1(
128362
128434
  cleanUpTeselagenJsonForExport(
128363
128435
  tidyUpSequenceData(incomingJson, {
128364
128436
  doNotRemoveInvalidChars: true,
128365
- annotationsAsObjects: false
128437
+ annotationsAsObjects: false,
128438
+ getAcceptedInsertChars
128366
128439
  })
128367
128440
  ),
128368
128441
  [
@@ -139048,9 +139121,19 @@ ${seq.sequence}
139048
139121
  };
139049
139122
  __name(_AnnotationPositioner, "AnnotationPositioner");
139050
139123
  let AnnotationPositioner = _AnnotationPositioner;
139124
+ let measureCanvas;
139125
+ function getAnnotationTextWidth(text2, fontSize2 = ANNOTATION_LABEL_FONT_WIDTH, fontFamily2 = "monospace") {
139126
+ if (!measureCanvas) {
139127
+ measureCanvas = document.createElement("canvas");
139128
+ }
139129
+ const ctx = measureCanvas.getContext("2d");
139130
+ ctx.font = `${fontSize2}px ${fontFamily2}`;
139131
+ return ctx.measureText(text2).width;
139132
+ }
139133
+ __name(getAnnotationTextWidth, "getAnnotationTextWidth");
139051
139134
  const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
139052
- const textLength = text2.length * ANNOTATION_LABEL_FONT_WIDTH;
139053
- const widthMinusOne = (range2 ? getWidth(range2, charWidth2, 0) : width) - charWidth2;
139135
+ const textLength = getAnnotationTextWidth(text2);
139136
+ const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
139054
139137
  return widthMinusOne > textLength;
139055
139138
  }, "doesLabelFitInAnnotation");
139056
139139
  function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
@@ -139060,6 +139143,78 @@ ${seq.sequence}
139060
139143
  });
139061
139144
  }
139062
139145
  __name(getAnnotationClassnames, "getAnnotationClassnames");
139146
+ function getAnnotationTextOffset({
139147
+ width,
139148
+ nameToDisplay,
139149
+ hasAPoint,
139150
+ pointiness,
139151
+ forward
139152
+ }) {
139153
+ return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
139154
+ }
139155
+ __name(getAnnotationTextOffset, "getAnnotationTextOffset");
139156
+ function getAnnotationNameInfo({
139157
+ name: name2,
139158
+ width,
139159
+ hasAPoint,
139160
+ pointiness,
139161
+ forward,
139162
+ charWidth: charWidth2,
139163
+ truncateLabelsThatDoNotFit,
139164
+ onlyShowLabelsThatDoNotFit,
139165
+ annotation
139166
+ }) {
139167
+ let nameToDisplay = name2;
139168
+ let textOffset = getAnnotationTextOffset({
139169
+ width,
139170
+ nameToDisplay,
139171
+ hasAPoint,
139172
+ pointiness,
139173
+ forward
139174
+ });
139175
+ const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
139176
+ if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
139177
+ if (truncateLabelsThatDoNotFit) {
139178
+ let left2 = 0;
139179
+ let right2 = name2.length;
139180
+ let bestFit = "";
139181
+ while (left2 <= right2) {
139182
+ const mid = Math.floor((left2 + right2) / 2);
139183
+ const candidate = name2.slice(0, mid);
139184
+ const candidateWidth = getAnnotationTextWidth(candidate);
139185
+ if (candidateWidth <= widthAvailableForText) {
139186
+ if (candidate.length > bestFit.length) {
139187
+ bestFit = candidate;
139188
+ }
139189
+ left2 = mid + 1;
139190
+ } else {
139191
+ right2 = mid - 1;
139192
+ }
139193
+ }
139194
+ if (bestFit.length < name2.length) {
139195
+ bestFit = bestFit.slice(0, -2) + "..";
139196
+ }
139197
+ nameToDisplay = bestFit;
139198
+ if (nameToDisplay.length <= 3) {
139199
+ textOffset = 0;
139200
+ nameToDisplay = "";
139201
+ } else {
139202
+ textOffset = getAnnotationTextOffset({
139203
+ width,
139204
+ nameToDisplay,
139205
+ hasAPoint,
139206
+ pointiness,
139207
+ forward
139208
+ });
139209
+ }
139210
+ } else {
139211
+ textOffset = 0;
139212
+ nameToDisplay = "";
139213
+ }
139214
+ }
139215
+ return { textOffset, nameToDisplay };
139216
+ }
139217
+ __name(getAnnotationNameInfo, "getAnnotationNameInfo");
139063
139218
  function PointedAnnotation(props) {
139064
139219
  const {
139065
139220
  className,
@@ -139195,27 +139350,17 @@ ${seq.sequence}
139195
139350
  Q ${pointiness},${height / 2} ${0},${0}
139196
139351
  z`;
139197
139352
  }
139198
- let nameToDisplay = name2;
139199
- let textOffset = width / 2 - name2.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
139200
- if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
139201
- if (truncateLabelsThatDoNotFit) {
139202
- const fractionToDisplay = width / (name2.length * ANNOTATION_LABEL_FONT_WIDTH);
139203
- const numLetters = Math.floor(fractionToDisplay * name2.length);
139204
- nameToDisplay = name2.slice(0, numLetters);
139205
- if (nameToDisplay.length > 3) {
139206
- if (nameToDisplay.length !== name2.length) {
139207
- nameToDisplay += "..";
139208
- }
139209
- textOffset = width / 2 - nameToDisplay.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
139210
- } else {
139211
- textOffset = 0;
139212
- nameToDisplay = "";
139213
- }
139214
- } else {
139215
- textOffset = 0;
139216
- nameToDisplay = "";
139217
- }
139218
- }
139353
+ const { textOffset, nameToDisplay } = getAnnotationNameInfo({
139354
+ name: name2,
139355
+ width,
139356
+ hasAPoint,
139357
+ pointiness,
139358
+ forward,
139359
+ charWidth: charWidth2,
139360
+ truncateLabelsThatDoNotFit,
139361
+ onlyShowLabelsThatDoNotFit,
139362
+ annotation
139363
+ });
139219
139364
  let _textColor = textColor;
139220
139365
  if (!textColor) {
139221
139366
  try {
@@ -145084,7 +145229,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
145084
145229
  input.click();
145085
145230
  }
145086
145231
  __name(showFileDialog, "showFileDialog");
145087
- const version = "0.8.28";
145232
+ const version = "0.8.30";
145088
145233
  const packageJson = {
145089
145234
  version
145090
145235
  };
@@ -146002,7 +146147,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
146002
146147
  },
146003
146148
  exportSequenceAsTeselagenJson: {
146004
146149
  name: "Download Teselagen JSON File",
146005
- handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
146150
+ handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
146006
146151
  },
146007
146152
  viewProperties: {
146008
146153
  handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
@@ -147211,6 +147356,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
147211
147356
  caretPosition: caretPosition2,
147212
147357
  sequenceData: sequenceData2,
147213
147358
  maxInsertSize,
147359
+ getAcceptedInsertChars,
147214
147360
  showAminoAcidUnitAsCodon
147215
147361
  } = this.props;
147216
147362
  const { charsToInsert, hasTempError } = this.state;
@@ -147246,7 +147392,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
147246
147392
  const [sanitizedVal, warnings] = filterSequenceString(
147247
147393
  e2.target.value,
147248
147394
  __spreadProps(__spreadValues({}, sequenceData2), {
147249
- name: void 0
147395
+ name: void 0,
147396
+ getAcceptedInsertChars
147250
147397
  })
147251
147398
  );
147252
147399
  if (warnings.length) {
@@ -148125,7 +148272,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148125
148272
  onPaste,
148126
148273
  disableBpEditing,
148127
148274
  sequenceData: sequenceData2,
148128
- maxInsertSize
148275
+ maxInsertSize,
148276
+ getAcceptedInsertChars
148129
148277
  } = this.props;
148130
148278
  if (disableBpEditing) {
148131
148279
  return this.createDisableBpEditingMsg();
@@ -148164,7 +148312,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148164
148312
  topLevelSeqData: sequenceData2,
148165
148313
  provideNewIdsForAnnotations: true,
148166
148314
  annotationsAsObjects: true,
148167
- noCdsTranslations: true
148315
+ noCdsTranslations: true,
148316
+ getAcceptedInsertChars
148168
148317
  });
148169
148318
  if (!seqDataToInsert.sequence.length)
148170
148319
  return window.toastr.warning("Sorry no valid base pairs to paste");
@@ -148184,7 +148333,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148184
148333
  selectionLayer: selectionLayer2,
148185
148334
  copyOptions: copyOptions2,
148186
148335
  disableBpEditing,
148187
- readOnly: readOnly2
148336
+ readOnly: readOnly2,
148337
+ getAcceptedInsertChars
148188
148338
  } = this.props;
148189
148339
  const onCut = this.props.onCut || this.props.onCopy || noop$8;
148190
148340
  const seqData = tidyUpSequenceData(
@@ -148208,7 +148358,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148208
148358
  {
148209
148359
  doNotRemoveInvalidChars: true,
148210
148360
  annotationsAsObjects: true,
148211
- includeProteinSequence: true
148361
+ includeProteinSequence: true,
148362
+ getAcceptedInsertChars
148212
148363
  }
148213
148364
  );
148214
148365
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
@@ -148226,7 +148377,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148226
148377
  e2,
148227
148378
  tidyUpSequenceData(seqData, {
148228
148379
  doNotRemoveInvalidChars: true,
148229
- annotationsAsObjects: true
148380
+ annotationsAsObjects: true,
148381
+ getAcceptedInsertChars
148230
148382
  }),
148231
148383
  this.props
148232
148384
  );
@@ -148276,6 +148428,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148276
148428
  readOnly: readOnly2,
148277
148429
  disableBpEditing,
148278
148430
  maxInsertSize,
148431
+ getAcceptedInsertChars,
148279
148432
  showAminoAcidUnitAsCodon
148280
148433
  } = this.props;
148281
148434
  const sequenceLength = sequenceData2.sequence.length;
@@ -148295,6 +148448,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148295
148448
  sequenceLength,
148296
148449
  caretPosition: caretPosition2,
148297
148450
  maxInsertSize,
148451
+ getAcceptedInsertChars,
148298
148452
  showAminoAcidUnitAsCodon,
148299
148453
  handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
148300
148454
  yield insertAndSelectHelper({
@@ -150901,6 +151055,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
150901
151055
  }));
150902
151056
  }
150903
151057
  getNearestCursorPositionToMouseEvent(rowData, event, callback2) {
151058
+ var _a2;
151059
+ const isProtein2 = (_a2 = this.props.sequenceData) == null ? void 0 : _a2.isProtein;
150904
151060
  let nearestCaretPos = 0;
150905
151061
  let rowDomNode = this.linearView;
150906
151062
  rowDomNode = rowDomNode.querySelector(".veRowItem");
@@ -150914,11 +151070,11 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
150914
151070
  (clickXPositionRelativeToRowContainer + this.charWidth / 2) / this.charWidth
150915
151071
  );
150916
151072
  nearestCaretPos = numberOfBPsInFromRowStart + 0;
150917
- if (nearestCaretPos > maxEnd + 1) {
150918
- nearestCaretPos = maxEnd + 1;
151073
+ if (nearestCaretPos > maxEnd) {
151074
+ nearestCaretPos = isProtein2 ? maxEnd + 1 : maxEnd;
150919
151075
  }
150920
151076
  }
150921
- if (this.props.sequenceData && this.props.sequenceData.isProtein) {
151077
+ if (isProtein2) {
150922
151078
  nearestCaretPos = Math.round(nearestCaretPos / 3) * 3;
150923
151079
  }
150924
151080
  if (maxEnd === 0) nearestCaretPos = 0;
@@ -153985,6 +154141,30 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153985
154141
  }) : /* @__PURE__ */ React.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
153986
154142
  }, "render")
153987
154143
  }), "sizeSchema");
154144
+ const getMemoOrfs = /* @__PURE__ */ (() => {
154145
+ let lastDeps;
154146
+ let lastResult;
154147
+ return (editorState) => {
154148
+ const {
154149
+ sequenceData: sequenceData2,
154150
+ minimumOrfSize: minimumOrfSize2,
154151
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
154152
+ } = editorState;
154153
+ const { sequence: sequence2, circular: circular2 } = sequenceData2;
154154
+ const deps = {
154155
+ sequence: sequence2,
154156
+ circular: circular2,
154157
+ minimumOrfSize: minimumOrfSize2,
154158
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
154159
+ };
154160
+ if (lastResult && isEqual$3(deps, lastDeps)) {
154161
+ return lastResult;
154162
+ }
154163
+ lastResult = selectors.orfsSelector(editorState);
154164
+ lastDeps = deps;
154165
+ return lastResult;
154166
+ };
154167
+ })();
153988
154168
  var lodash$1 = { exports: {} };
153989
154169
  /**
153990
154170
  * @license
@@ -164540,10 +164720,16 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
164540
164720
  hideDialog();
164541
164721
  };
164542
164722
  }, []);
164723
+ reactExports.useEffect(() => {
164724
+ dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
164725
+ if (editorName) {
164726
+ const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
164727
+ slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
164728
+ }
164729
+ }, [editorName]);
164543
164730
  if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
164544
164731
  return null;
164545
164732
  }
164546
- dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
164547
164733
  const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
164548
164734
  if (!Comp) return null;
164549
164735
  return /* @__PURE__ */ React.createElement(
@@ -169307,6 +169493,8 @@ ${seqDataToCopy}\r
169307
169493
  "enzymeManageOverride",
169308
169494
  "enzymeGroupsOverride",
169309
169495
  "additionalEnzymes",
169496
+ "getAcceptedInsertChars",
169497
+ "maxInsertSize",
169310
169498
  "onDelete",
169311
169499
  "onCopy",
169312
169500
  "autoAnnotateFeatures",
@@ -171080,7 +171268,7 @@ ${seqDataToCopy}\r
171080
171268
  readOnly: readOnly2,
171081
171269
  annotationVisibility: annotationVisibility2,
171082
171270
  useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
171083
- orfs: selectors.orfsSelector(editorState),
171271
+ orfs: getMemoOrfs(editorState),
171084
171272
  sequenceLength: sequence2.length,
171085
171273
  sequenceData: sequenceData2,
171086
171274
  minimumOrfSize: minimumOrfSize2
@@ -171270,7 +171458,7 @@ ${seqDataToCopy}\r
171270
171458
  return {
171271
171459
  readOnly: readOnly2,
171272
171460
  translations: selectors.translationsSelector(editorState),
171273
- orfs: selectors.orfsSelector(editorState),
171461
+ orfs: getMemoOrfs(editorState),
171274
171462
  annotationVisibility: annotationVisibility2,
171275
171463
  sequenceLength: (sequenceData2.sequence || "").length,
171276
171464
  sequenceData: sequenceData2
@@ -172555,6 +172743,7 @@ ${seqDataToCopy}\r
172555
172743
  hoveredId,
172556
172744
  isFullscreen,
172557
172745
  maxInsertSize,
172746
+ getAcceptedInsertChars,
172558
172747
  showAminoAcidUnitAsCodon,
172559
172748
  maxAnnotationsToDisplay,
172560
172749
  minHeight = 400,
@@ -172744,6 +172933,7 @@ ${seqDataToCopy}\r
172744
172933
  }), panelPropsToSpread), {
172745
172934
  editorName,
172746
172935
  maxInsertSize,
172936
+ getAcceptedInsertChars,
172747
172937
  showAminoAcidUnitAsCodon,
172748
172938
  isProtein: sequenceData2.isProtein,
172749
172939
  onlyShowLabelsThatDoNotFit,