@teselagen/ove 0.8.29 → 0.8.31

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
@@ -22537,6 +22537,13 @@ var __async = (__this, __arguments, generator) => {
22537
22537
  isDragging$1 = false;
22538
22538
  });
22539
22539
  let tippys = [];
22540
+ function isInAllowedContainer(element2) {
22541
+ if (window.onlyAllowTooltipsInVeEditor) {
22542
+ return element2.closest(".veEditor") !== null;
22543
+ }
22544
+ return true;
22545
+ }
22546
+ __name(isInAllowedContainer, "isInAllowedContainer");
22540
22547
  let recentlyHidden = false;
22541
22548
  let clearMe;
22542
22549
  (function() {
@@ -22544,6 +22551,9 @@ var __async = (__this, __arguments, generator) => {
22544
22551
  document.addEventListener("mouseover", function(event) {
22545
22552
  var _a2, _b2;
22546
22553
  const element2 = event.target;
22554
+ if (!isInAllowedContainer(element2)) {
22555
+ return;
22556
+ }
22547
22557
  if (element2 instanceof Element && element2 !== lastMouseOverElement) {
22548
22558
  let clearOldTippys = /* @__PURE__ */ __name(function(maybeInst) {
22549
22559
  tippys = tippys.filter((t2) => {
@@ -36296,6 +36306,195 @@ ${latestSubscriptionCallbackError.current.stack}
36296
36306
  );
36297
36307
  }
36298
36308
  __name(DialogFooter, "DialogFooter");
36309
+ var NOT_FOUND = "NOT_FOUND";
36310
+ function createSingletonCache(equals) {
36311
+ var entry;
36312
+ return {
36313
+ get: /* @__PURE__ */ __name(function get2(key) {
36314
+ if (entry && equals(entry.key, key)) {
36315
+ return entry.value;
36316
+ }
36317
+ return NOT_FOUND;
36318
+ }, "get"),
36319
+ put: /* @__PURE__ */ __name(function put(key, value) {
36320
+ entry = {
36321
+ key,
36322
+ value
36323
+ };
36324
+ }, "put"),
36325
+ getEntries: /* @__PURE__ */ __name(function getEntries() {
36326
+ return entry ? [entry] : [];
36327
+ }, "getEntries"),
36328
+ clear: /* @__PURE__ */ __name(function clear() {
36329
+ entry = void 0;
36330
+ }, "clear")
36331
+ };
36332
+ }
36333
+ __name(createSingletonCache, "createSingletonCache");
36334
+ function createLruCache(maxSize, equals) {
36335
+ var entries = [];
36336
+ function get2(key) {
36337
+ var cacheIndex = entries.findIndex(function(entry2) {
36338
+ return equals(key, entry2.key);
36339
+ });
36340
+ if (cacheIndex > -1) {
36341
+ var entry = entries[cacheIndex];
36342
+ if (cacheIndex > 0) {
36343
+ entries.splice(cacheIndex, 1);
36344
+ entries.unshift(entry);
36345
+ }
36346
+ return entry.value;
36347
+ }
36348
+ return NOT_FOUND;
36349
+ }
36350
+ __name(get2, "get");
36351
+ function put(key, value) {
36352
+ if (get2(key) === NOT_FOUND) {
36353
+ entries.unshift({
36354
+ key,
36355
+ value
36356
+ });
36357
+ if (entries.length > maxSize) {
36358
+ entries.pop();
36359
+ }
36360
+ }
36361
+ }
36362
+ __name(put, "put");
36363
+ function getEntries() {
36364
+ return entries;
36365
+ }
36366
+ __name(getEntries, "getEntries");
36367
+ function clear() {
36368
+ entries = [];
36369
+ }
36370
+ __name(clear, "clear");
36371
+ return {
36372
+ get: get2,
36373
+ put,
36374
+ getEntries,
36375
+ clear
36376
+ };
36377
+ }
36378
+ __name(createLruCache, "createLruCache");
36379
+ var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
36380
+ return a2 === b3;
36381
+ }, "defaultEqualityCheck");
36382
+ function createCacheKeyComparator(equalityCheck) {
36383
+ return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
36384
+ if (prev === null || next === null || prev.length !== next.length) {
36385
+ return false;
36386
+ }
36387
+ var length = prev.length;
36388
+ for (var i2 = 0; i2 < length; i2++) {
36389
+ if (!equalityCheck(prev[i2], next[i2])) {
36390
+ return false;
36391
+ }
36392
+ }
36393
+ return true;
36394
+ }, "areArgumentsShallowlyEqual");
36395
+ }
36396
+ __name(createCacheKeyComparator, "createCacheKeyComparator");
36397
+ function defaultMemoize(func, equalityCheckOrOptions) {
36398
+ var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
36399
+ equalityCheck: equalityCheckOrOptions
36400
+ };
36401
+ 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;
36402
+ var comparator = createCacheKeyComparator(equalityCheck);
36403
+ var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
36404
+ function memoized() {
36405
+ var value = cache2.get(arguments);
36406
+ if (value === NOT_FOUND) {
36407
+ value = func.apply(null, arguments);
36408
+ if (resultEqualityCheck) {
36409
+ var entries = cache2.getEntries();
36410
+ var matchingEntry = entries.find(function(entry) {
36411
+ return resultEqualityCheck(entry.value, value);
36412
+ });
36413
+ if (matchingEntry) {
36414
+ value = matchingEntry.value;
36415
+ }
36416
+ }
36417
+ cache2.put(arguments, value);
36418
+ }
36419
+ return value;
36420
+ }
36421
+ __name(memoized, "memoized");
36422
+ memoized.clearCache = function() {
36423
+ return cache2.clear();
36424
+ };
36425
+ return memoized;
36426
+ }
36427
+ __name(defaultMemoize, "defaultMemoize");
36428
+ function getDependencies(funcs) {
36429
+ var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
36430
+ if (!dependencies.every(function(dep) {
36431
+ return typeof dep === "function";
36432
+ })) {
36433
+ var dependencyTypes = dependencies.map(function(dep) {
36434
+ return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
36435
+ }).join(", ");
36436
+ throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
36437
+ }
36438
+ return dependencies;
36439
+ }
36440
+ __name(getDependencies, "getDependencies");
36441
+ function createSelectorCreator(memoize2) {
36442
+ for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
36443
+ memoizeOptionsFromArgs[_key - 1] = arguments[_key];
36444
+ }
36445
+ var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
36446
+ for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
36447
+ funcs[_key2] = arguments[_key2];
36448
+ }
36449
+ var _recomputations = 0;
36450
+ var _lastResult;
36451
+ var directlyPassedOptions = {
36452
+ memoizeOptions: void 0
36453
+ };
36454
+ var resultFunc = funcs.pop();
36455
+ if (typeof resultFunc === "object") {
36456
+ directlyPassedOptions = resultFunc;
36457
+ resultFunc = funcs.pop();
36458
+ }
36459
+ if (typeof resultFunc !== "function") {
36460
+ throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
36461
+ }
36462
+ var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
36463
+ var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
36464
+ var dependencies = getDependencies(funcs);
36465
+ var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
36466
+ _recomputations++;
36467
+ return resultFunc.apply(null, arguments);
36468
+ }, "recomputationWrapper")].concat(finalMemoizeOptions));
36469
+ var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
36470
+ var params = [];
36471
+ var length = dependencies.length;
36472
+ for (var i2 = 0; i2 < length; i2++) {
36473
+ params.push(dependencies[i2].apply(null, arguments));
36474
+ }
36475
+ _lastResult = memoizedResultFunc.apply(null, params);
36476
+ return _lastResult;
36477
+ }, "dependenciesChecker"));
36478
+ Object.assign(selector, {
36479
+ resultFunc,
36480
+ memoizedResultFunc,
36481
+ dependencies,
36482
+ lastResult: /* @__PURE__ */ __name(function lastResult() {
36483
+ return _lastResult;
36484
+ }, "lastResult"),
36485
+ recomputations: /* @__PURE__ */ __name(function recomputations() {
36486
+ return _recomputations;
36487
+ }, "recomputations"),
36488
+ resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
36489
+ return _recomputations = 0;
36490
+ }, "resetRecomputations")
36491
+ });
36492
+ return selector;
36493
+ }, "createSelector");
36494
+ return createSelector2;
36495
+ }
36496
+ __name(createSelectorCreator, "createSelectorCreator");
36497
+ var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
36299
36498
  function useCombinedRefs() {
36300
36499
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
36301
36500
  refs[_key] = arguments[_key];
@@ -85682,21 +85881,27 @@ ${latestSubscriptionCallbackError.current.stack}
85682
85881
  }
85683
85882
  return false;
85684
85883
  });
85884
+ const dtFormParamsSelector = reactExports.useMemo(
85885
+ () => createSelector(
85886
+ (state2) => formValueSelector(formName)(
85887
+ state2,
85888
+ "reduxFormCellValidation",
85889
+ "reduxFormEntities",
85890
+ "reduxFormQueryParams",
85891
+ "reduxFormSelectedEntityIdMap"
85892
+ ),
85893
+ (result) => result
85894
+ // identity, but memoized
85895
+ ),
85896
+ [formName]
85897
+ );
85685
85898
  const {
85686
85899
  reduxFormCellValidation: _reduxFormCellValidation,
85687
85900
  reduxFormEditingCell,
85688
85901
  reduxFormEntities,
85689
85902
  reduxFormQueryParams: _reduxFormQueryParams = {},
85690
85903
  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"));
85904
+ } = useSelector(dtFormParamsSelector);
85700
85905
  const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
85701
85906
  _reduxFormCellValidation
85702
85907
  );
@@ -86003,11 +86208,9 @@ ${latestSubscriptionCallbackError.current.stack}
86003
86208
  newTableConfig = {
86004
86209
  fieldOptions: []
86005
86210
  };
86006
- if (isEqual$3(prev, newTableConfig)) {
86007
- return prev;
86008
- } else {
86009
- return newTableConfig;
86010
- }
86211
+ }
86212
+ if (isEqual$3(prev, newTableConfig)) {
86213
+ return prev;
86011
86214
  } else {
86012
86215
  return newTableConfig;
86013
86216
  }
@@ -103876,14 +104079,16 @@ ${latestSubscriptionCallbackError.current.stack}
103876
104079
  name: name2,
103877
104080
  isProtein: isProtein2,
103878
104081
  isRna: isRna2,
103879
- isMixedRnaAndDna
104082
+ isMixedRnaAndDna,
104083
+ getAcceptedInsertChars
103880
104084
  } = {}) {
103881
- const acceptedChars = getAcceptedChars({
104085
+ const sequenceTypeInfo = {
103882
104086
  isOligo: isOligo2,
103883
104087
  isProtein: isProtein2,
103884
104088
  isRna: isRna2,
103885
104089
  isMixedRnaAndDna
103886
- });
104090
+ };
104091
+ const acceptedChars = isFunction$1(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
103887
104092
  const replaceChars = getReplaceChars({
103888
104093
  isOligo: isOligo2,
103889
104094
  isProtein: isProtein2,
@@ -104119,6 +104324,7 @@ ${latestSubscriptionCallbackError.current.stack}
104119
104324
  doNotProvideIdsForAnnotations,
104120
104325
  noCdsTranslations,
104121
104326
  convertAnnotationsFromAAIndices,
104327
+ getAcceptedInsertChars,
104122
104328
  topLevelSeqData
104123
104329
  } = options;
104124
104330
  let seqData = cloneDeep(pSeqData);
@@ -104150,13 +104356,16 @@ ${latestSubscriptionCallbackError.current.stack}
104150
104356
  if (!doNotRemoveInvalidChars) {
104151
104357
  if (seqData.isProtein) {
104152
104358
  const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
104153
- isProtein: true
104359
+ isProtein: true,
104360
+ getAcceptedInsertChars
104154
104361
  }));
104155
104362
  seqData.proteinSequence = newSeq;
104156
104363
  } else {
104157
- const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
104364
+ const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
104158
104365
  additionalValidChars
104159
- }, topLevelSeqData || seqData));
104366
+ }, topLevelSeqData || seqData), {
104367
+ getAcceptedInsertChars
104368
+ }));
104160
104369
  seqData.sequence = newSeq;
104161
104370
  }
104162
104371
  }
@@ -125757,195 +125966,6 @@ ${seq.sequence}
125757
125966
  return sequenceDataSelector(state2).sequence;
125758
125967
  }
125759
125968
  __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
125969
  const restrictionEnzymesSelector = createSelector(
125950
125970
  () => defaultEnzymesByName,
125951
125971
  (state2, additionalEnzymes) => {
@@ -125971,7 +125991,34 @@ ${seq.sequence}
125971
125991
  const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
125972
125992
  return sequenceData2.cutsiteLabelColors;
125973
125993
  });
125974
- function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors) {
125994
+ const cutsitesCache = [];
125995
+ function getCachedResult(argsObj) {
125996
+ const idx = cutsitesCache.findIndex(
125997
+ (entry) => entry && isEqual$3(entry.args, argsObj)
125998
+ );
125999
+ if (idx === -1) return;
126000
+ const hit = cutsitesCache[idx];
126001
+ return hit.result;
126002
+ }
126003
+ __name(getCachedResult, "getCachedResult");
126004
+ function setCachedResult(argsObj, result, cacheSize = 1) {
126005
+ cutsitesCache.push({
126006
+ args: argsObj,
126007
+ result
126008
+ });
126009
+ if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
126010
+ }
126011
+ __name(setCachedResult, "setCachedResult");
126012
+ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
126013
+ const cachedResult = getCachedResult({
126014
+ sequence: sequence2,
126015
+ circular: circular2,
126016
+ enzymeList,
126017
+ cutsiteLabelColors
126018
+ });
126019
+ if (cachedResult) {
126020
+ return cachedResult;
126021
+ }
125975
126022
  const cutsitesByName = getLowerCaseObj(
125976
126023
  getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
125977
126024
  );
@@ -126004,11 +126051,22 @@ ${seq.sequence}
126004
126051
  const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
126005
126052
  return cutsitesForEnzyme;
126006
126053
  });
126007
- return {
126054
+ const result = {
126008
126055
  cutsitesByName,
126009
126056
  cutsitesById,
126010
126057
  cutsitesArray
126011
126058
  };
126059
+ setCachedResult(
126060
+ {
126061
+ sequence: sequence2,
126062
+ circular: circular2,
126063
+ enzymeList,
126064
+ cutsiteLabelColors
126065
+ },
126066
+ result,
126067
+ editorSize
126068
+ );
126069
+ return result;
126012
126070
  }
126013
126071
  __name(cutsitesSelector, "cutsitesSelector");
126014
126072
  const cutsitesSelector$1 = createSelector(
@@ -126016,6 +126074,7 @@ ${seq.sequence}
126016
126074
  circularSelector,
126017
126075
  restrictionEnzymesSelector,
126018
126076
  cutsiteLabelColorSelector,
126077
+ (editorState) => editorState.editorSize,
126019
126078
  cutsitesSelector
126020
126079
  );
126021
126080
  function divideBy3(num, shouldDivideBy3) {
@@ -127431,11 +127490,12 @@ ${seq.sequence}
127431
127490
  props,
127432
127491
  overrideName
127433
127492
  }) {
127434
- var _a2;
127493
+ var _a2, _b2, _c2, _d2;
127435
127494
  dialogHolder.dialogType = dialogType;
127436
127495
  if (!dialogHolder.dialogType && ModalComponent) {
127437
127496
  dialogHolder.dialogType = "TGCustomModal";
127438
127497
  }
127498
+ dialogHolder.editorName = props == null ? void 0 : props.editorName;
127439
127499
  if (document.activeElement && document.activeElement.closest(".veEditor")) {
127440
127500
  let editorName;
127441
127501
  (_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
@@ -127449,16 +127509,28 @@ ${seq.sequence}
127449
127509
  dialogHolder.CustomModalComponent = ModalComponent;
127450
127510
  dialogHolder.props = props;
127451
127511
  dialogHolder.overrideName = overrideName;
127452
- dialogHolder.setUniqKeyToForceRerender(uuid());
127512
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
127513
+ (_c2 = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c2.call(
127514
+ _b2,
127515
+ uuid()
127516
+ );
127517
+ } else {
127518
+ (_d2 = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d2.call(dialogHolder, uuid());
127519
+ }
127453
127520
  }
127454
127521
  __name(showDialog, "showDialog");
127455
127522
  function hideDialog() {
127523
+ var _a2, _b2, _c2;
127456
127524
  delete dialogHolder.dialogType;
127457
127525
  delete dialogHolder.CustomModalComponent;
127458
127526
  delete dialogHolder.props;
127459
127527
  delete dialogHolder.overrideName;
127528
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
127529
+ (_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
127530
+ } else {
127531
+ (_c2 = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c2.call(dialogHolder);
127532
+ }
127460
127533
  delete dialogHolder.editorName;
127461
- dialogHolder.setUniqKeyToForceRerender();
127462
127534
  }
127463
127535
  __name(hideDialog, "hideDialog");
127464
127536
  const typeToDialogType = {
@@ -127733,7 +127805,8 @@ ${seq.sequence}
127733
127805
  readOnly: readOnly2,
127734
127806
  alwaysAllowSave,
127735
127807
  sequenceData: sequenceData2,
127736
- lastSavedIdUpdate: lastSavedIdUpdate2
127808
+ lastSavedIdUpdate: lastSavedIdUpdate2,
127809
+ getAcceptedInsertChars
127737
127810
  } = props;
127738
127811
  const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
127739
127812
  const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
@@ -127746,7 +127819,8 @@ ${seq.sequence}
127746
127819
  opts2,
127747
127820
  tidyUpSequenceData(sequenceData2, {
127748
127821
  doNotRemoveInvalidChars: true,
127749
- annotationsAsObjects: true
127822
+ annotationsAsObjects: true,
127823
+ getAcceptedInsertChars
127750
127824
  }),
127751
127825
  props,
127752
127826
  updateLastSavedIdToCurrent
@@ -127928,8 +128002,8 @@ ${seq.sequence}
127928
128002
  caretPositionOrRange,
127929
128003
  options
127930
128004
  } = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
127931
- tidyUpSequenceData(_sequenceDataToInsert),
127932
- tidyUpSequenceData(_existingSequenceData),
128005
+ tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
128006
+ tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
127933
128007
  _caretPositionOrRange,
127934
128008
  _options
127935
128009
  )) || {} : {};
@@ -128092,7 +128166,11 @@ ${seq.sequence}
128092
128166
  (state2) => state2.VectorEditor,
128093
128167
  (state2, editorName) => editorName,
128094
128168
  (VectorEditor, editorName) => {
128095
- return VectorEditor[editorName];
128169
+ const editorState = VectorEditor[editorName];
128170
+ editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
128171
+ (editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
128172
+ ).length);
128173
+ return editorState;
128096
128174
  }
128097
128175
  );
128098
128176
  function mapStateToProps(state2, ownProps) {
@@ -128129,6 +128207,9 @@ ${seq.sequence}
128129
128207
  annotationTypePlural,
128130
128208
  sequenceLength
128131
128209
  );
128210
+ if (dialogHolder.editorName) {
128211
+ annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
128212
+ }
128132
128213
  }
128133
128214
  });
128134
128215
  const toReturn = __spreadProps(__spreadValues({}, editorState), {
@@ -128356,13 +128437,15 @@ ${seq.sequence}
128356
128437
  return toRet;
128357
128438
  }
128358
128439
  __name(getShowGCContent, "getShowGCContent");
128359
- function jsonToJson(incomingJson) {
128440
+ function jsonToJson(incomingJson, options) {
128441
+ const { getAcceptedInsertChars } = options || {};
128360
128442
  return JSON.stringify(
128361
128443
  omit$1(
128362
128444
  cleanUpTeselagenJsonForExport(
128363
128445
  tidyUpSequenceData(incomingJson, {
128364
128446
  doNotRemoveInvalidChars: true,
128365
- annotationsAsObjects: false
128447
+ annotationsAsObjects: false,
128448
+ getAcceptedInsertChars
128366
128449
  })
128367
128450
  ),
128368
128451
  [
@@ -138262,7 +138345,8 @@ ${seq.sequence}
138262
138345
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138263
138346
  click → top cut position
138264
138347
  alt/option+click → bottom cut position
138265
- cmd/ctrl+click → recognition range` : `
138348
+ cmd/ctrl+click → recognition range
138349
+ double click → show info` : `
138266
138350
 
138267
138351
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138268
138352
  INTERACTIONS:
@@ -139048,9 +139132,19 @@ ${seq.sequence}
139048
139132
  };
139049
139133
  __name(_AnnotationPositioner, "AnnotationPositioner");
139050
139134
  let AnnotationPositioner = _AnnotationPositioner;
139135
+ let measureCanvas;
139136
+ function getAnnotationTextWidth(text2, fontSize2 = ANNOTATION_LABEL_FONT_WIDTH, fontFamily2 = "monospace") {
139137
+ if (!measureCanvas) {
139138
+ measureCanvas = document.createElement("canvas");
139139
+ }
139140
+ const ctx = measureCanvas.getContext("2d");
139141
+ ctx.font = `${fontSize2}px ${fontFamily2}`;
139142
+ return ctx.measureText(text2).width;
139143
+ }
139144
+ __name(getAnnotationTextWidth, "getAnnotationTextWidth");
139051
139145
  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;
139146
+ const textLength = getAnnotationTextWidth(text2);
139147
+ const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
139054
139148
  return widthMinusOne > textLength;
139055
139149
  }, "doesLabelFitInAnnotation");
139056
139150
  function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
@@ -139060,6 +139154,78 @@ ${seq.sequence}
139060
139154
  });
139061
139155
  }
139062
139156
  __name(getAnnotationClassnames, "getAnnotationClassnames");
139157
+ function getAnnotationTextOffset({
139158
+ width,
139159
+ nameToDisplay,
139160
+ hasAPoint,
139161
+ pointiness,
139162
+ forward
139163
+ }) {
139164
+ return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
139165
+ }
139166
+ __name(getAnnotationTextOffset, "getAnnotationTextOffset");
139167
+ function getAnnotationNameInfo({
139168
+ name: name2,
139169
+ width,
139170
+ hasAPoint,
139171
+ pointiness,
139172
+ forward,
139173
+ charWidth: charWidth2,
139174
+ truncateLabelsThatDoNotFit,
139175
+ onlyShowLabelsThatDoNotFit,
139176
+ annotation
139177
+ }) {
139178
+ let nameToDisplay = name2;
139179
+ let textOffset = getAnnotationTextOffset({
139180
+ width,
139181
+ nameToDisplay,
139182
+ hasAPoint,
139183
+ pointiness,
139184
+ forward
139185
+ });
139186
+ const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
139187
+ if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
139188
+ if (truncateLabelsThatDoNotFit) {
139189
+ let left2 = 0;
139190
+ let right2 = name2.length;
139191
+ let bestFit = "";
139192
+ while (left2 <= right2) {
139193
+ const mid = Math.floor((left2 + right2) / 2);
139194
+ const candidate = name2.slice(0, mid);
139195
+ const candidateWidth = getAnnotationTextWidth(candidate);
139196
+ if (candidateWidth <= widthAvailableForText) {
139197
+ if (candidate.length > bestFit.length) {
139198
+ bestFit = candidate;
139199
+ }
139200
+ left2 = mid + 1;
139201
+ } else {
139202
+ right2 = mid - 1;
139203
+ }
139204
+ }
139205
+ if (bestFit.length < name2.length) {
139206
+ bestFit = bestFit.slice(0, -2) + "..";
139207
+ }
139208
+ nameToDisplay = bestFit;
139209
+ if (nameToDisplay.length <= 3) {
139210
+ textOffset = 0;
139211
+ nameToDisplay = "";
139212
+ } else {
139213
+ textOffset = getAnnotationTextOffset({
139214
+ width,
139215
+ nameToDisplay,
139216
+ hasAPoint,
139217
+ pointiness,
139218
+ forward
139219
+ });
139220
+ }
139221
+ } else {
139222
+ textOffset = 0;
139223
+ nameToDisplay = "";
139224
+ }
139225
+ }
139226
+ return { textOffset, nameToDisplay };
139227
+ }
139228
+ __name(getAnnotationNameInfo, "getAnnotationNameInfo");
139063
139229
  function PointedAnnotation(props) {
139064
139230
  const {
139065
139231
  className,
@@ -139195,27 +139361,17 @@ ${seq.sequence}
139195
139361
  Q ${pointiness},${height / 2} ${0},${0}
139196
139362
  z`;
139197
139363
  }
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
- }
139364
+ const { textOffset, nameToDisplay } = getAnnotationNameInfo({
139365
+ name: name2,
139366
+ width,
139367
+ hasAPoint,
139368
+ pointiness,
139369
+ forward,
139370
+ charWidth: charWidth2,
139371
+ truncateLabelsThatDoNotFit,
139372
+ onlyShowLabelsThatDoNotFit,
139373
+ annotation
139374
+ });
139219
139375
  let _textColor = textColor;
139220
139376
  if (!textColor) {
139221
139377
  try {
@@ -145084,7 +145240,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
145084
145240
  input.click();
145085
145241
  }
145086
145242
  __name(showFileDialog, "showFileDialog");
145087
- const version = "0.8.29";
145243
+ const version = "0.8.31";
145088
145244
  const packageJson = {
145089
145245
  version
145090
145246
  };
@@ -146002,7 +146158,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
146002
146158
  },
146003
146159
  exportSequenceAsTeselagenJson: {
146004
146160
  name: "Download Teselagen JSON File",
146005
- handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
146161
+ handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
146006
146162
  },
146007
146163
  viewProperties: {
146008
146164
  handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
@@ -147211,6 +147367,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
147211
147367
  caretPosition: caretPosition2,
147212
147368
  sequenceData: sequenceData2,
147213
147369
  maxInsertSize,
147370
+ getAcceptedInsertChars,
147214
147371
  showAminoAcidUnitAsCodon
147215
147372
  } = this.props;
147216
147373
  const { charsToInsert, hasTempError } = this.state;
@@ -147246,7 +147403,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
147246
147403
  const [sanitizedVal, warnings] = filterSequenceString(
147247
147404
  e2.target.value,
147248
147405
  __spreadProps(__spreadValues({}, sequenceData2), {
147249
- name: void 0
147406
+ name: void 0,
147407
+ getAcceptedInsertChars
147250
147408
  })
147251
147409
  );
147252
147410
  if (warnings.length) {
@@ -148125,7 +148283,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148125
148283
  onPaste,
148126
148284
  disableBpEditing,
148127
148285
  sequenceData: sequenceData2,
148128
- maxInsertSize
148286
+ maxInsertSize,
148287
+ getAcceptedInsertChars
148129
148288
  } = this.props;
148130
148289
  if (disableBpEditing) {
148131
148290
  return this.createDisableBpEditingMsg();
@@ -148164,7 +148323,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148164
148323
  topLevelSeqData: sequenceData2,
148165
148324
  provideNewIdsForAnnotations: true,
148166
148325
  annotationsAsObjects: true,
148167
- noCdsTranslations: true
148326
+ noCdsTranslations: true,
148327
+ getAcceptedInsertChars
148168
148328
  });
148169
148329
  if (!seqDataToInsert.sequence.length)
148170
148330
  return window.toastr.warning("Sorry no valid base pairs to paste");
@@ -148184,7 +148344,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148184
148344
  selectionLayer: selectionLayer2,
148185
148345
  copyOptions: copyOptions2,
148186
148346
  disableBpEditing,
148187
- readOnly: readOnly2
148347
+ readOnly: readOnly2,
148348
+ getAcceptedInsertChars
148188
148349
  } = this.props;
148189
148350
  const onCut = this.props.onCut || this.props.onCopy || noop$8;
148190
148351
  const seqData = tidyUpSequenceData(
@@ -148208,7 +148369,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148208
148369
  {
148209
148370
  doNotRemoveInvalidChars: true,
148210
148371
  annotationsAsObjects: true,
148211
- includeProteinSequence: true
148372
+ includeProteinSequence: true,
148373
+ getAcceptedInsertChars
148212
148374
  }
148213
148375
  );
148214
148376
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
@@ -148226,7 +148388,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148226
148388
  e2,
148227
148389
  tidyUpSequenceData(seqData, {
148228
148390
  doNotRemoveInvalidChars: true,
148229
- annotationsAsObjects: true
148391
+ annotationsAsObjects: true,
148392
+ getAcceptedInsertChars
148230
148393
  }),
148231
148394
  this.props
148232
148395
  );
@@ -148276,6 +148439,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148276
148439
  readOnly: readOnly2,
148277
148440
  disableBpEditing,
148278
148441
  maxInsertSize,
148442
+ getAcceptedInsertChars,
148279
148443
  showAminoAcidUnitAsCodon
148280
148444
  } = this.props;
148281
148445
  const sequenceLength = sequenceData2.sequence.length;
@@ -148295,6 +148459,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
148295
148459
  sequenceLength,
148296
148460
  caretPosition: caretPosition2,
148297
148461
  maxInsertSize,
148462
+ getAcceptedInsertChars,
148298
148463
  showAminoAcidUnitAsCodon,
148299
148464
  handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
148300
148465
  yield insertAndSelectHelper({
@@ -153987,6 +154152,30 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
153987
154152
  }) : /* @__PURE__ */ React.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
153988
154153
  }, "render")
153989
154154
  }), "sizeSchema");
154155
+ const getMemoOrfs = /* @__PURE__ */ (() => {
154156
+ let lastDeps;
154157
+ let lastResult;
154158
+ return (editorState) => {
154159
+ const {
154160
+ sequenceData: sequenceData2,
154161
+ minimumOrfSize: minimumOrfSize2,
154162
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
154163
+ } = editorState;
154164
+ const { sequence: sequence2, circular: circular2 } = sequenceData2;
154165
+ const deps = {
154166
+ sequence: sequence2,
154167
+ circular: circular2,
154168
+ minimumOrfSize: minimumOrfSize2,
154169
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
154170
+ };
154171
+ if (lastResult && isEqual$3(deps, lastDeps)) {
154172
+ return lastResult;
154173
+ }
154174
+ lastResult = selectors.orfsSelector(editorState);
154175
+ lastDeps = deps;
154176
+ return lastResult;
154177
+ };
154178
+ })();
153990
154179
  var lodash$1 = { exports: {} };
153991
154180
  /**
153992
154181
  * @license
@@ -164542,10 +164731,16 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
164542
164731
  hideDialog();
164543
164732
  };
164544
164733
  }, []);
164734
+ reactExports.useEffect(() => {
164735
+ dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
164736
+ if (editorName) {
164737
+ const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
164738
+ slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
164739
+ }
164740
+ }, [editorName]);
164545
164741
  if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
164546
164742
  return null;
164547
164743
  }
164548
- dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
164549
164744
  const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
164550
164745
  if (!Comp) return null;
164551
164746
  return /* @__PURE__ */ React.createElement(
@@ -169309,6 +169504,8 @@ ${seqDataToCopy}\r
169309
169504
  "enzymeManageOverride",
169310
169505
  "enzymeGroupsOverride",
169311
169506
  "additionalEnzymes",
169507
+ "getAcceptedInsertChars",
169508
+ "maxInsertSize",
169312
169509
  "onDelete",
169313
169510
  "onCopy",
169314
169511
  "autoAnnotateFeatures",
@@ -171082,7 +171279,7 @@ ${seqDataToCopy}\r
171082
171279
  readOnly: readOnly2,
171083
171280
  annotationVisibility: annotationVisibility2,
171084
171281
  useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
171085
- orfs: selectors.orfsSelector(editorState),
171282
+ orfs: getMemoOrfs(editorState),
171086
171283
  sequenceLength: sequence2.length,
171087
171284
  sequenceData: sequenceData2,
171088
171285
  minimumOrfSize: minimumOrfSize2
@@ -171272,7 +171469,7 @@ ${seqDataToCopy}\r
171272
171469
  return {
171273
171470
  readOnly: readOnly2,
171274
171471
  translations: selectors.translationsSelector(editorState),
171275
- orfs: selectors.orfsSelector(editorState),
171472
+ orfs: getMemoOrfs(editorState),
171276
171473
  annotationVisibility: annotationVisibility2,
171277
171474
  sequenceLength: (sequenceData2.sequence || "").length,
171278
171475
  sequenceData: sequenceData2
@@ -172557,6 +172754,7 @@ ${seqDataToCopy}\r
172557
172754
  hoveredId,
172558
172755
  isFullscreen,
172559
172756
  maxInsertSize,
172757
+ getAcceptedInsertChars,
172560
172758
  showAminoAcidUnitAsCodon,
172561
172759
  maxAnnotationsToDisplay,
172562
172760
  minHeight = 400,
@@ -172746,6 +172944,7 @@ ${seqDataToCopy}\r
172746
172944
  }), panelPropsToSpread), {
172747
172945
  editorName,
172748
172946
  maxInsertSize,
172947
+ getAcceptedInsertChars,
172749
172948
  showAminoAcidUnitAsCodon,
172750
172949
  isProtein: sequenceData2.isProtein,
172751
172950
  onlyShowLabelsThatDoNotFit,