@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.cjs.js CHANGED
@@ -2924,6 +2924,13 @@ document.addEventListener("mouseup", () => {
2924
2924
  isDragging$1 = false;
2925
2925
  });
2926
2926
  let tippys = [];
2927
+ function isInAllowedContainer(element2) {
2928
+ if (window.onlyAllowTooltipsInVeEditor) {
2929
+ return element2.closest(".veEditor") !== null;
2930
+ }
2931
+ return true;
2932
+ }
2933
+ __name(isInAllowedContainer, "isInAllowedContainer");
2927
2934
  let recentlyHidden = false;
2928
2935
  let clearMe;
2929
2936
  (function() {
@@ -2931,6 +2938,9 @@ let clearMe;
2931
2938
  document.addEventListener("mouseover", function(event) {
2932
2939
  var _a2, _b2;
2933
2940
  const element2 = event.target;
2941
+ if (!isInAllowedContainer(element2)) {
2942
+ return;
2943
+ }
2934
2944
  if (element2 instanceof Element && element2 !== lastMouseOverElement) {
2935
2945
  let clearOldTippys = /* @__PURE__ */ __name(function(maybeInst) {
2936
2946
  tippys = tippys.filter((t2) => {
@@ -9255,6 +9265,195 @@ function DialogFooter({
9255
9265
  );
9256
9266
  }
9257
9267
  __name(DialogFooter, "DialogFooter");
9268
+ var NOT_FOUND = "NOT_FOUND";
9269
+ function createSingletonCache(equals) {
9270
+ var entry;
9271
+ return {
9272
+ get: /* @__PURE__ */ __name(function get7(key) {
9273
+ if (entry && equals(entry.key, key)) {
9274
+ return entry.value;
9275
+ }
9276
+ return NOT_FOUND;
9277
+ }, "get"),
9278
+ put: /* @__PURE__ */ __name(function put(key, value) {
9279
+ entry = {
9280
+ key,
9281
+ value
9282
+ };
9283
+ }, "put"),
9284
+ getEntries: /* @__PURE__ */ __name(function getEntries() {
9285
+ return entry ? [entry] : [];
9286
+ }, "getEntries"),
9287
+ clear: /* @__PURE__ */ __name(function clear3() {
9288
+ entry = void 0;
9289
+ }, "clear")
9290
+ };
9291
+ }
9292
+ __name(createSingletonCache, "createSingletonCache");
9293
+ function createLruCache(maxSize, equals) {
9294
+ var entries2 = [];
9295
+ function get7(key) {
9296
+ var cacheIndex = entries2.findIndex(function(entry2) {
9297
+ return equals(key, entry2.key);
9298
+ });
9299
+ if (cacheIndex > -1) {
9300
+ var entry = entries2[cacheIndex];
9301
+ if (cacheIndex > 0) {
9302
+ entries2.splice(cacheIndex, 1);
9303
+ entries2.unshift(entry);
9304
+ }
9305
+ return entry.value;
9306
+ }
9307
+ return NOT_FOUND;
9308
+ }
9309
+ __name(get7, "get");
9310
+ function put(key, value) {
9311
+ if (get7(key) === NOT_FOUND) {
9312
+ entries2.unshift({
9313
+ key,
9314
+ value
9315
+ });
9316
+ if (entries2.length > maxSize) {
9317
+ entries2.pop();
9318
+ }
9319
+ }
9320
+ }
9321
+ __name(put, "put");
9322
+ function getEntries() {
9323
+ return entries2;
9324
+ }
9325
+ __name(getEntries, "getEntries");
9326
+ function clear3() {
9327
+ entries2 = [];
9328
+ }
9329
+ __name(clear3, "clear");
9330
+ return {
9331
+ get: get7,
9332
+ put,
9333
+ getEntries,
9334
+ clear: clear3
9335
+ };
9336
+ }
9337
+ __name(createLruCache, "createLruCache");
9338
+ var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
9339
+ return a2 === b3;
9340
+ }, "defaultEqualityCheck");
9341
+ function createCacheKeyComparator(equalityCheck) {
9342
+ return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
9343
+ if (prev === null || next === null || prev.length !== next.length) {
9344
+ return false;
9345
+ }
9346
+ var length = prev.length;
9347
+ for (var i = 0; i < length; i++) {
9348
+ if (!equalityCheck(prev[i], next[i])) {
9349
+ return false;
9350
+ }
9351
+ }
9352
+ return true;
9353
+ }, "areArgumentsShallowlyEqual");
9354
+ }
9355
+ __name(createCacheKeyComparator, "createCacheKeyComparator");
9356
+ function defaultMemoize(func, equalityCheckOrOptions) {
9357
+ var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
9358
+ equalityCheck: equalityCheckOrOptions
9359
+ };
9360
+ 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;
9361
+ var comparator = createCacheKeyComparator(equalityCheck);
9362
+ var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
9363
+ function memoized() {
9364
+ var value = cache2.get(arguments);
9365
+ if (value === NOT_FOUND) {
9366
+ value = func.apply(null, arguments);
9367
+ if (resultEqualityCheck) {
9368
+ var entries2 = cache2.getEntries();
9369
+ var matchingEntry = entries2.find(function(entry) {
9370
+ return resultEqualityCheck(entry.value, value);
9371
+ });
9372
+ if (matchingEntry) {
9373
+ value = matchingEntry.value;
9374
+ }
9375
+ }
9376
+ cache2.put(arguments, value);
9377
+ }
9378
+ return value;
9379
+ }
9380
+ __name(memoized, "memoized");
9381
+ memoized.clearCache = function() {
9382
+ return cache2.clear();
9383
+ };
9384
+ return memoized;
9385
+ }
9386
+ __name(defaultMemoize, "defaultMemoize");
9387
+ function getDependencies(funcs) {
9388
+ var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
9389
+ if (!dependencies.every(function(dep) {
9390
+ return typeof dep === "function";
9391
+ })) {
9392
+ var dependencyTypes = dependencies.map(function(dep) {
9393
+ return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
9394
+ }).join(", ");
9395
+ throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
9396
+ }
9397
+ return dependencies;
9398
+ }
9399
+ __name(getDependencies, "getDependencies");
9400
+ function createSelectorCreator(memoize2) {
9401
+ for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
9402
+ memoizeOptionsFromArgs[_key - 1] = arguments[_key];
9403
+ }
9404
+ var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
9405
+ for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
9406
+ funcs[_key2] = arguments[_key2];
9407
+ }
9408
+ var _recomputations = 0;
9409
+ var _lastResult;
9410
+ var directlyPassedOptions = {
9411
+ memoizeOptions: void 0
9412
+ };
9413
+ var resultFunc = funcs.pop();
9414
+ if (typeof resultFunc === "object") {
9415
+ directlyPassedOptions = resultFunc;
9416
+ resultFunc = funcs.pop();
9417
+ }
9418
+ if (typeof resultFunc !== "function") {
9419
+ throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
9420
+ }
9421
+ var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
9422
+ var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
9423
+ var dependencies = getDependencies(funcs);
9424
+ var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
9425
+ _recomputations++;
9426
+ return resultFunc.apply(null, arguments);
9427
+ }, "recomputationWrapper")].concat(finalMemoizeOptions));
9428
+ var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
9429
+ var params = [];
9430
+ var length = dependencies.length;
9431
+ for (var i = 0; i < length; i++) {
9432
+ params.push(dependencies[i].apply(null, arguments));
9433
+ }
9434
+ _lastResult = memoizedResultFunc.apply(null, params);
9435
+ return _lastResult;
9436
+ }, "dependenciesChecker"));
9437
+ Object.assign(selector, {
9438
+ resultFunc,
9439
+ memoizedResultFunc,
9440
+ dependencies,
9441
+ lastResult: /* @__PURE__ */ __name(function lastResult() {
9442
+ return _lastResult;
9443
+ }, "lastResult"),
9444
+ recomputations: /* @__PURE__ */ __name(function recomputations() {
9445
+ return _recomputations;
9446
+ }, "recomputations"),
9447
+ resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
9448
+ return _recomputations = 0;
9449
+ }, "resetRecomputations")
9450
+ });
9451
+ return selector;
9452
+ }, "createSelector");
9453
+ return createSelector2;
9454
+ }
9455
+ __name(createSelectorCreator, "createSelectorCreator");
9456
+ var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
9258
9457
  function useCombinedRefs() {
9259
9458
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
9260
9459
  refs[_key] = arguments[_key];
@@ -56651,21 +56850,27 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56651
56850
  }
56652
56851
  return false;
56653
56852
  });
56853
+ const dtFormParamsSelector = React.useMemo(
56854
+ () => createSelector(
56855
+ (state2) => reduxForm.formValueSelector(formName)(
56856
+ state2,
56857
+ "reduxFormCellValidation",
56858
+ "reduxFormEntities",
56859
+ "reduxFormQueryParams",
56860
+ "reduxFormSelectedEntityIdMap"
56861
+ ),
56862
+ (result) => result
56863
+ // identity, but memoized
56864
+ ),
56865
+ [formName]
56866
+ );
56654
56867
  const {
56655
56868
  reduxFormCellValidation: _reduxFormCellValidation,
56656
56869
  reduxFormEditingCell,
56657
56870
  reduxFormEntities,
56658
56871
  reduxFormQueryParams: _reduxFormQueryParams = {},
56659
56872
  reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
56660
- } = reactRedux.useSelector(/* @__PURE__ */ __name(function dtFormParamsSelector(state2) {
56661
- return reduxForm.formValueSelector(formName)(
56662
- state2,
56663
- "reduxFormCellValidation",
56664
- "reduxFormEntities",
56665
- "reduxFormQueryParams",
56666
- "reduxFormSelectedEntityIdMap"
56667
- );
56668
- }, "dtFormParamsSelector"));
56873
+ } = reactRedux.useSelector(dtFormParamsSelector);
56669
56874
  const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
56670
56875
  _reduxFormCellValidation
56671
56876
  );
@@ -56972,11 +57177,9 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56972
57177
  newTableConfig = {
56973
57178
  fieldOptions: []
56974
57179
  };
56975
- if (isEqual$3(prev, newTableConfig)) {
56976
- return prev;
56977
- } else {
56978
- return newTableConfig;
56979
- }
57180
+ }
57181
+ if (isEqual$3(prev, newTableConfig)) {
57182
+ return prev;
56980
57183
  } else {
56981
57184
  return newTableConfig;
56982
57185
  }
@@ -74973,14 +75176,16 @@ function filterSequenceString(sequenceString = "", {
74973
75176
  name: name2,
74974
75177
  isProtein: isProtein2,
74975
75178
  isRna: isRna2,
74976
- isMixedRnaAndDna
75179
+ isMixedRnaAndDna,
75180
+ getAcceptedInsertChars
74977
75181
  } = {}) {
74978
- const acceptedChars = getAcceptedChars({
75182
+ const sequenceTypeInfo = {
74979
75183
  isOligo: isOligo2,
74980
75184
  isProtein: isProtein2,
74981
75185
  isRna: isRna2,
74982
75186
  isMixedRnaAndDna
74983
- });
75187
+ };
75188
+ const acceptedChars = isFunction$2(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
74984
75189
  const replaceChars = getReplaceChars({
74985
75190
  isOligo: isOligo2,
74986
75191
  isProtein: isProtein2,
@@ -75216,6 +75421,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
75216
75421
  doNotProvideIdsForAnnotations,
75217
75422
  noCdsTranslations,
75218
75423
  convertAnnotationsFromAAIndices,
75424
+ getAcceptedInsertChars,
75219
75425
  topLevelSeqData
75220
75426
  } = options;
75221
75427
  let seqData = cloneDeep(pSeqData);
@@ -75247,13 +75453,16 @@ function tidyUpSequenceData(pSeqData, options = {}) {
75247
75453
  if (!doNotRemoveInvalidChars) {
75248
75454
  if (seqData.isProtein) {
75249
75455
  const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
75250
- isProtein: true
75456
+ isProtein: true,
75457
+ getAcceptedInsertChars
75251
75458
  }));
75252
75459
  seqData.proteinSequence = newSeq;
75253
75460
  } else {
75254
- const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
75461
+ const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
75255
75462
  additionalValidChars
75256
- }, topLevelSeqData || seqData));
75463
+ }, topLevelSeqData || seqData), {
75464
+ getAcceptedInsertChars
75465
+ }));
75257
75466
  seqData.sequence = newSeq;
75258
75467
  }
75259
75468
  }
@@ -97609,195 +97818,6 @@ function sequenceSelector(state2) {
97609
97818
  return sequenceDataSelector(state2).sequence;
97610
97819
  }
97611
97820
  __name(sequenceSelector, "sequenceSelector");
97612
- var NOT_FOUND = "NOT_FOUND";
97613
- function createSingletonCache(equals) {
97614
- var entry;
97615
- return {
97616
- get: /* @__PURE__ */ __name(function get7(key) {
97617
- if (entry && equals(entry.key, key)) {
97618
- return entry.value;
97619
- }
97620
- return NOT_FOUND;
97621
- }, "get"),
97622
- put: /* @__PURE__ */ __name(function put(key, value) {
97623
- entry = {
97624
- key,
97625
- value
97626
- };
97627
- }, "put"),
97628
- getEntries: /* @__PURE__ */ __name(function getEntries() {
97629
- return entry ? [entry] : [];
97630
- }, "getEntries"),
97631
- clear: /* @__PURE__ */ __name(function clear3() {
97632
- entry = void 0;
97633
- }, "clear")
97634
- };
97635
- }
97636
- __name(createSingletonCache, "createSingletonCache");
97637
- function createLruCache(maxSize, equals) {
97638
- var entries2 = [];
97639
- function get7(key) {
97640
- var cacheIndex = entries2.findIndex(function(entry2) {
97641
- return equals(key, entry2.key);
97642
- });
97643
- if (cacheIndex > -1) {
97644
- var entry = entries2[cacheIndex];
97645
- if (cacheIndex > 0) {
97646
- entries2.splice(cacheIndex, 1);
97647
- entries2.unshift(entry);
97648
- }
97649
- return entry.value;
97650
- }
97651
- return NOT_FOUND;
97652
- }
97653
- __name(get7, "get");
97654
- function put(key, value) {
97655
- if (get7(key) === NOT_FOUND) {
97656
- entries2.unshift({
97657
- key,
97658
- value
97659
- });
97660
- if (entries2.length > maxSize) {
97661
- entries2.pop();
97662
- }
97663
- }
97664
- }
97665
- __name(put, "put");
97666
- function getEntries() {
97667
- return entries2;
97668
- }
97669
- __name(getEntries, "getEntries");
97670
- function clear3() {
97671
- entries2 = [];
97672
- }
97673
- __name(clear3, "clear");
97674
- return {
97675
- get: get7,
97676
- put,
97677
- getEntries,
97678
- clear: clear3
97679
- };
97680
- }
97681
- __name(createLruCache, "createLruCache");
97682
- var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
97683
- return a2 === b3;
97684
- }, "defaultEqualityCheck");
97685
- function createCacheKeyComparator(equalityCheck) {
97686
- return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
97687
- if (prev === null || next === null || prev.length !== next.length) {
97688
- return false;
97689
- }
97690
- var length = prev.length;
97691
- for (var i = 0; i < length; i++) {
97692
- if (!equalityCheck(prev[i], next[i])) {
97693
- return false;
97694
- }
97695
- }
97696
- return true;
97697
- }, "areArgumentsShallowlyEqual");
97698
- }
97699
- __name(createCacheKeyComparator, "createCacheKeyComparator");
97700
- function defaultMemoize(func, equalityCheckOrOptions) {
97701
- var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
97702
- equalityCheck: equalityCheckOrOptions
97703
- };
97704
- 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;
97705
- var comparator = createCacheKeyComparator(equalityCheck);
97706
- var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
97707
- function memoized() {
97708
- var value = cache2.get(arguments);
97709
- if (value === NOT_FOUND) {
97710
- value = func.apply(null, arguments);
97711
- if (resultEqualityCheck) {
97712
- var entries2 = cache2.getEntries();
97713
- var matchingEntry = entries2.find(function(entry) {
97714
- return resultEqualityCheck(entry.value, value);
97715
- });
97716
- if (matchingEntry) {
97717
- value = matchingEntry.value;
97718
- }
97719
- }
97720
- cache2.put(arguments, value);
97721
- }
97722
- return value;
97723
- }
97724
- __name(memoized, "memoized");
97725
- memoized.clearCache = function() {
97726
- return cache2.clear();
97727
- };
97728
- return memoized;
97729
- }
97730
- __name(defaultMemoize, "defaultMemoize");
97731
- function getDependencies(funcs) {
97732
- var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
97733
- if (!dependencies.every(function(dep) {
97734
- return typeof dep === "function";
97735
- })) {
97736
- var dependencyTypes = dependencies.map(function(dep) {
97737
- return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
97738
- }).join(", ");
97739
- throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
97740
- }
97741
- return dependencies;
97742
- }
97743
- __name(getDependencies, "getDependencies");
97744
- function createSelectorCreator(memoize2) {
97745
- for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
97746
- memoizeOptionsFromArgs[_key - 1] = arguments[_key];
97747
- }
97748
- var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
97749
- for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
97750
- funcs[_key2] = arguments[_key2];
97751
- }
97752
- var _recomputations = 0;
97753
- var _lastResult;
97754
- var directlyPassedOptions = {
97755
- memoizeOptions: void 0
97756
- };
97757
- var resultFunc = funcs.pop();
97758
- if (typeof resultFunc === "object") {
97759
- directlyPassedOptions = resultFunc;
97760
- resultFunc = funcs.pop();
97761
- }
97762
- if (typeof resultFunc !== "function") {
97763
- throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
97764
- }
97765
- var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
97766
- var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
97767
- var dependencies = getDependencies(funcs);
97768
- var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
97769
- _recomputations++;
97770
- return resultFunc.apply(null, arguments);
97771
- }, "recomputationWrapper")].concat(finalMemoizeOptions));
97772
- var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
97773
- var params = [];
97774
- var length = dependencies.length;
97775
- for (var i = 0; i < length; i++) {
97776
- params.push(dependencies[i].apply(null, arguments));
97777
- }
97778
- _lastResult = memoizedResultFunc.apply(null, params);
97779
- return _lastResult;
97780
- }, "dependenciesChecker"));
97781
- Object.assign(selector, {
97782
- resultFunc,
97783
- memoizedResultFunc,
97784
- dependencies,
97785
- lastResult: /* @__PURE__ */ __name(function lastResult() {
97786
- return _lastResult;
97787
- }, "lastResult"),
97788
- recomputations: /* @__PURE__ */ __name(function recomputations() {
97789
- return _recomputations;
97790
- }, "recomputations"),
97791
- resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
97792
- return _recomputations = 0;
97793
- }, "resetRecomputations")
97794
- });
97795
- return selector;
97796
- }, "createSelector");
97797
- return createSelector2;
97798
- }
97799
- __name(createSelectorCreator, "createSelectorCreator");
97800
- var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
97801
97821
  const restrictionEnzymesSelector = createSelector(
97802
97822
  () => defaultEnzymesByName,
97803
97823
  (state2, additionalEnzymes) => {
@@ -97823,7 +97843,34 @@ const restrictionEnzymesSelector = createSelector(
97823
97843
  const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
97824
97844
  return sequenceData2.cutsiteLabelColors;
97825
97845
  });
97826
- function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors) {
97846
+ const cutsitesCache = [];
97847
+ function getCachedResult(argsObj) {
97848
+ const idx = cutsitesCache.findIndex(
97849
+ (entry) => entry && isEqual$3(entry.args, argsObj)
97850
+ );
97851
+ if (idx === -1) return;
97852
+ const hit = cutsitesCache[idx];
97853
+ return hit.result;
97854
+ }
97855
+ __name(getCachedResult, "getCachedResult");
97856
+ function setCachedResult(argsObj, result, cacheSize = 1) {
97857
+ cutsitesCache.push({
97858
+ args: argsObj,
97859
+ result
97860
+ });
97861
+ if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
97862
+ }
97863
+ __name(setCachedResult, "setCachedResult");
97864
+ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
97865
+ const cachedResult = getCachedResult({
97866
+ sequence: sequence2,
97867
+ circular: circular2,
97868
+ enzymeList,
97869
+ cutsiteLabelColors
97870
+ });
97871
+ if (cachedResult) {
97872
+ return cachedResult;
97873
+ }
97827
97874
  const cutsitesByName = getLowerCaseObj(
97828
97875
  getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
97829
97876
  );
@@ -97856,11 +97903,22 @@ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors)
97856
97903
  const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
97857
97904
  return cutsitesForEnzyme;
97858
97905
  });
97859
- return {
97906
+ const result = {
97860
97907
  cutsitesByName,
97861
97908
  cutsitesById,
97862
97909
  cutsitesArray
97863
97910
  };
97911
+ setCachedResult(
97912
+ {
97913
+ sequence: sequence2,
97914
+ circular: circular2,
97915
+ enzymeList,
97916
+ cutsiteLabelColors
97917
+ },
97918
+ result,
97919
+ editorSize
97920
+ );
97921
+ return result;
97864
97922
  }
97865
97923
  __name(cutsitesSelector, "cutsitesSelector");
97866
97924
  const cutsitesSelector$1 = createSelector(
@@ -97868,6 +97926,7 @@ const cutsitesSelector$1 = createSelector(
97868
97926
  circularSelector,
97869
97927
  restrictionEnzymesSelector,
97870
97928
  cutsiteLabelColorSelector,
97929
+ (editorState) => editorState.editorSize,
97871
97930
  cutsitesSelector
97872
97931
  );
97873
97932
  function divideBy3(num, shouldDivideBy3) {
@@ -99283,11 +99342,12 @@ function showDialog({
99283
99342
  props,
99284
99343
  overrideName
99285
99344
  }) {
99286
- var _a2;
99345
+ var _a2, _b2, _c, _d;
99287
99346
  dialogHolder.dialogType = dialogType;
99288
99347
  if (!dialogHolder.dialogType && ModalComponent) {
99289
99348
  dialogHolder.dialogType = "TGCustomModal";
99290
99349
  }
99350
+ dialogHolder.editorName = props == null ? void 0 : props.editorName;
99291
99351
  if (document.activeElement && document.activeElement.closest(".veEditor")) {
99292
99352
  let editorName;
99293
99353
  (_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
@@ -99301,16 +99361,28 @@ function showDialog({
99301
99361
  dialogHolder.CustomModalComponent = ModalComponent;
99302
99362
  dialogHolder.props = props;
99303
99363
  dialogHolder.overrideName = overrideName;
99304
- dialogHolder.setUniqKeyToForceRerender(uuid());
99364
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
99365
+ (_c = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c.call(
99366
+ _b2,
99367
+ uuid()
99368
+ );
99369
+ } else {
99370
+ (_d = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d.call(dialogHolder, uuid());
99371
+ }
99305
99372
  }
99306
99373
  __name(showDialog, "showDialog");
99307
99374
  function hideDialog() {
99375
+ var _a2, _b2, _c;
99308
99376
  delete dialogHolder.dialogType;
99309
99377
  delete dialogHolder.CustomModalComponent;
99310
99378
  delete dialogHolder.props;
99311
99379
  delete dialogHolder.overrideName;
99380
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
99381
+ (_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
99382
+ } else {
99383
+ (_c = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c.call(dialogHolder);
99384
+ }
99312
99385
  delete dialogHolder.editorName;
99313
- dialogHolder.setUniqKeyToForceRerender();
99314
99386
  }
99315
99387
  __name(hideDialog, "hideDialog");
99316
99388
  const typeToDialogType = {
@@ -99585,7 +99657,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(exports,
99585
99657
  readOnly: readOnly2,
99586
99658
  alwaysAllowSave,
99587
99659
  sequenceData: sequenceData2,
99588
- lastSavedIdUpdate: lastSavedIdUpdate2
99660
+ lastSavedIdUpdate: lastSavedIdUpdate2,
99661
+ getAcceptedInsertChars
99589
99662
  } = props;
99590
99663
  const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
99591
99664
  const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
@@ -99598,7 +99671,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(exports,
99598
99671
  opts2,
99599
99672
  tidyUpSequenceData(sequenceData2, {
99600
99673
  doNotRemoveInvalidChars: true,
99601
- annotationsAsObjects: true
99674
+ annotationsAsObjects: true,
99675
+ getAcceptedInsertChars
99602
99676
  }),
99603
99677
  props,
99604
99678
  updateLastSavedIdToCurrent
@@ -99780,8 +99854,8 @@ const withEditorProps = compose(
99780
99854
  caretPositionOrRange,
99781
99855
  options
99782
99856
  } = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
99783
- tidyUpSequenceData(_sequenceDataToInsert),
99784
- tidyUpSequenceData(_existingSequenceData),
99857
+ tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
99858
+ tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
99785
99859
  _caretPositionOrRange,
99786
99860
  _options
99787
99861
  )) || {} : {};
@@ -99944,7 +100018,11 @@ const getEditorState = createSelector(
99944
100018
  (state2) => state2.VectorEditor,
99945
100019
  (state2, editorName) => editorName,
99946
100020
  (VectorEditor, editorName) => {
99947
- return VectorEditor[editorName];
100021
+ const editorState = VectorEditor[editorName];
100022
+ editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
100023
+ (editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
100024
+ ).length);
100025
+ return editorState;
99948
100026
  }
99949
100027
  );
99950
100028
  function mapStateToProps(state2, ownProps) {
@@ -99981,6 +100059,9 @@ function mapStateToProps(state2, ownProps) {
99981
100059
  annotationTypePlural,
99982
100060
  sequenceLength
99983
100061
  );
100062
+ if (dialogHolder.editorName) {
100063
+ annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
100064
+ }
99984
100065
  }
99985
100066
  });
99986
100067
  const toReturn = __spreadProps(__spreadValues({}, editorState), {
@@ -100208,13 +100289,15 @@ function getShowGCContent(state2, ownProps) {
100208
100289
  return toRet;
100209
100290
  }
100210
100291
  __name(getShowGCContent, "getShowGCContent");
100211
- function jsonToJson(incomingJson) {
100292
+ function jsonToJson(incomingJson, options) {
100293
+ const { getAcceptedInsertChars } = options || {};
100212
100294
  return JSON.stringify(
100213
100295
  omit$1(
100214
100296
  cleanUpTeselagenJsonForExport(
100215
100297
  tidyUpSequenceData(incomingJson, {
100216
100298
  doNotRemoveInvalidChars: true,
100217
- annotationsAsObjects: false
100299
+ annotationsAsObjects: false,
100300
+ getAcceptedInsertChars
100218
100301
  })
100219
100302
  ),
100220
100303
  [
@@ -110114,7 +110197,8 @@ function getAnnotationNameAndStartStopString({
110114
110197
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110115
110198
  click → top cut position
110116
110199
  alt/option+click → bottom cut position
110117
- cmd/ctrl+click → recognition range` : `
110200
+ cmd/ctrl+click → recognition range
110201
+ double click → show info` : `
110118
110202
 
110119
110203
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110120
110204
  INTERACTIONS:
@@ -110900,9 +110984,19 @@ const _AnnotationPositioner = class _AnnotationPositioner extends React.PureComp
110900
110984
  };
110901
110985
  __name(_AnnotationPositioner, "AnnotationPositioner");
110902
110986
  let AnnotationPositioner = _AnnotationPositioner;
110987
+ let measureCanvas;
110988
+ function getAnnotationTextWidth(text2, fontSize = ANNOTATION_LABEL_FONT_WIDTH, fontFamily = "monospace") {
110989
+ if (!measureCanvas) {
110990
+ measureCanvas = document.createElement("canvas");
110991
+ }
110992
+ const ctx = measureCanvas.getContext("2d");
110993
+ ctx.font = `${fontSize}px ${fontFamily}`;
110994
+ return ctx.measureText(text2).width;
110995
+ }
110996
+ __name(getAnnotationTextWidth, "getAnnotationTextWidth");
110903
110997
  const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
110904
- const textLength = text2.length * ANNOTATION_LABEL_FONT_WIDTH;
110905
- const widthMinusOne = (range2 ? getWidth(range2, charWidth2, 0) : width) - charWidth2;
110998
+ const textLength = getAnnotationTextWidth(text2);
110999
+ const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
110906
111000
  return widthMinusOne > textLength;
110907
111001
  }, "doesLabelFitInAnnotation");
110908
111002
  function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
@@ -110912,6 +111006,78 @@ function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
110912
111006
  });
110913
111007
  }
110914
111008
  __name(getAnnotationClassnames, "getAnnotationClassnames");
111009
+ function getAnnotationTextOffset({
111010
+ width,
111011
+ nameToDisplay,
111012
+ hasAPoint,
111013
+ pointiness,
111014
+ forward
111015
+ }) {
111016
+ return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
111017
+ }
111018
+ __name(getAnnotationTextOffset, "getAnnotationTextOffset");
111019
+ function getAnnotationNameInfo({
111020
+ name: name2,
111021
+ width,
111022
+ hasAPoint,
111023
+ pointiness,
111024
+ forward,
111025
+ charWidth: charWidth2,
111026
+ truncateLabelsThatDoNotFit,
111027
+ onlyShowLabelsThatDoNotFit,
111028
+ annotation
111029
+ }) {
111030
+ let nameToDisplay = name2;
111031
+ let textOffset = getAnnotationTextOffset({
111032
+ width,
111033
+ nameToDisplay,
111034
+ hasAPoint,
111035
+ pointiness,
111036
+ forward
111037
+ });
111038
+ const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
111039
+ if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
111040
+ if (truncateLabelsThatDoNotFit) {
111041
+ let left2 = 0;
111042
+ let right2 = name2.length;
111043
+ let bestFit = "";
111044
+ while (left2 <= right2) {
111045
+ const mid = Math.floor((left2 + right2) / 2);
111046
+ const candidate = name2.slice(0, mid);
111047
+ const candidateWidth = getAnnotationTextWidth(candidate);
111048
+ if (candidateWidth <= widthAvailableForText) {
111049
+ if (candidate.length > bestFit.length) {
111050
+ bestFit = candidate;
111051
+ }
111052
+ left2 = mid + 1;
111053
+ } else {
111054
+ right2 = mid - 1;
111055
+ }
111056
+ }
111057
+ if (bestFit.length < name2.length) {
111058
+ bestFit = bestFit.slice(0, -2) + "..";
111059
+ }
111060
+ nameToDisplay = bestFit;
111061
+ if (nameToDisplay.length <= 3) {
111062
+ textOffset = 0;
111063
+ nameToDisplay = "";
111064
+ } else {
111065
+ textOffset = getAnnotationTextOffset({
111066
+ width,
111067
+ nameToDisplay,
111068
+ hasAPoint,
111069
+ pointiness,
111070
+ forward
111071
+ });
111072
+ }
111073
+ } else {
111074
+ textOffset = 0;
111075
+ nameToDisplay = "";
111076
+ }
111077
+ }
111078
+ return { textOffset, nameToDisplay };
111079
+ }
111080
+ __name(getAnnotationNameInfo, "getAnnotationNameInfo");
110915
111081
  function PointedAnnotation(props) {
110916
111082
  const {
110917
111083
  className,
@@ -111047,27 +111213,17 @@ function PointedAnnotation(props) {
111047
111213
  Q ${pointiness},${height / 2} ${0},${0}
111048
111214
  z`;
111049
111215
  }
111050
- let nameToDisplay = name2;
111051
- let textOffset = width / 2 - name2.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
111052
- if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
111053
- if (truncateLabelsThatDoNotFit) {
111054
- const fractionToDisplay = width / (name2.length * ANNOTATION_LABEL_FONT_WIDTH);
111055
- const numLetters = Math.floor(fractionToDisplay * name2.length);
111056
- nameToDisplay = name2.slice(0, numLetters);
111057
- if (nameToDisplay.length > 3) {
111058
- if (nameToDisplay.length !== name2.length) {
111059
- nameToDisplay += "..";
111060
- }
111061
- textOffset = width / 2 - nameToDisplay.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
111062
- } else {
111063
- textOffset = 0;
111064
- nameToDisplay = "";
111065
- }
111066
- } else {
111067
- textOffset = 0;
111068
- nameToDisplay = "";
111069
- }
111070
- }
111216
+ const { textOffset, nameToDisplay } = getAnnotationNameInfo({
111217
+ name: name2,
111218
+ width,
111219
+ hasAPoint,
111220
+ pointiness,
111221
+ forward,
111222
+ charWidth: charWidth2,
111223
+ truncateLabelsThatDoNotFit,
111224
+ onlyShowLabelsThatDoNotFit,
111225
+ annotation
111226
+ });
111071
111227
  let _textColor = textColor;
111072
111228
  if (!textColor) {
111073
111229
  try {
@@ -116986,7 +117142,7 @@ function showFileDialog({ multiple = false, onSelect }) {
116986
117142
  input.click();
116987
117143
  }
116988
117144
  __name(showFileDialog, "showFileDialog");
116989
- const version = "0.8.29";
117145
+ const version = "0.8.31";
116990
117146
  const packageJson = {
116991
117147
  version
116992
117148
  };
@@ -117904,7 +118060,7 @@ const fileCommandDefs = __spreadValues(__spreadProps(__spreadValues({
117904
118060
  },
117905
118061
  exportSequenceAsTeselagenJson: {
117906
118062
  name: "Download Teselagen JSON File",
117907
- handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
118063
+ handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
117908
118064
  },
117909
118065
  viewProperties: {
117910
118066
  handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
@@ -120715,6 +120871,7 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React.Comp
120715
120871
  caretPosition: caretPosition2,
120716
120872
  sequenceData: sequenceData2,
120717
120873
  maxInsertSize,
120874
+ getAcceptedInsertChars,
120718
120875
  showAminoAcidUnitAsCodon
120719
120876
  } = this.props;
120720
120877
  const { charsToInsert, hasTempError } = this.state;
@@ -120750,7 +120907,8 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React.Comp
120750
120907
  const [sanitizedVal, warnings] = filterSequenceString(
120751
120908
  e.target.value,
120752
120909
  __spreadProps(__spreadValues({}, sequenceData2), {
120753
- name: void 0
120910
+ name: void 0,
120911
+ getAcceptedInsertChars
120754
120912
  })
120755
120913
  );
120756
120914
  if (warnings.length) {
@@ -121629,7 +121787,8 @@ function VectorInteractionHOC(Component) {
121629
121787
  onPaste,
121630
121788
  disableBpEditing,
121631
121789
  sequenceData: sequenceData2,
121632
- maxInsertSize
121790
+ maxInsertSize,
121791
+ getAcceptedInsertChars
121633
121792
  } = this.props;
121634
121793
  if (disableBpEditing) {
121635
121794
  return this.createDisableBpEditingMsg();
@@ -121668,7 +121827,8 @@ function VectorInteractionHOC(Component) {
121668
121827
  topLevelSeqData: sequenceData2,
121669
121828
  provideNewIdsForAnnotations: true,
121670
121829
  annotationsAsObjects: true,
121671
- noCdsTranslations: true
121830
+ noCdsTranslations: true,
121831
+ getAcceptedInsertChars
121672
121832
  });
121673
121833
  if (!seqDataToInsert.sequence.length)
121674
121834
  return window.toastr.warning("Sorry no valid base pairs to paste");
@@ -121688,7 +121848,8 @@ function VectorInteractionHOC(Component) {
121688
121848
  selectionLayer: selectionLayer2,
121689
121849
  copyOptions: copyOptions2,
121690
121850
  disableBpEditing,
121691
- readOnly: readOnly2
121851
+ readOnly: readOnly2,
121852
+ getAcceptedInsertChars
121692
121853
  } = this.props;
121693
121854
  const onCut = this.props.onCut || this.props.onCopy || noop$8;
121694
121855
  const seqData = tidyUpSequenceData(
@@ -121712,7 +121873,8 @@ function VectorInteractionHOC(Component) {
121712
121873
  {
121713
121874
  doNotRemoveInvalidChars: true,
121714
121875
  annotationsAsObjects: true,
121715
- includeProteinSequence: true
121876
+ includeProteinSequence: true,
121877
+ getAcceptedInsertChars
121716
121878
  }
121717
121879
  );
121718
121880
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
@@ -121730,7 +121892,8 @@ function VectorInteractionHOC(Component) {
121730
121892
  e,
121731
121893
  tidyUpSequenceData(seqData, {
121732
121894
  doNotRemoveInvalidChars: true,
121733
- annotationsAsObjects: true
121895
+ annotationsAsObjects: true,
121896
+ getAcceptedInsertChars
121734
121897
  }),
121735
121898
  this.props
121736
121899
  );
@@ -121780,6 +121943,7 @@ function VectorInteractionHOC(Component) {
121780
121943
  readOnly: readOnly2,
121781
121944
  disableBpEditing,
121782
121945
  maxInsertSize,
121946
+ getAcceptedInsertChars,
121783
121947
  showAminoAcidUnitAsCodon
121784
121948
  } = this.props;
121785
121949
  const sequenceLength = sequenceData2.sequence.length;
@@ -121799,6 +121963,7 @@ function VectorInteractionHOC(Component) {
121799
121963
  sequenceLength,
121800
121964
  caretPosition: caretPosition2,
121801
121965
  maxInsertSize,
121966
+ getAcceptedInsertChars,
121802
121967
  showAminoAcidUnitAsCodon,
121803
121968
  handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
121804
121969
  yield insertAndSelectHelper({
@@ -127491,6 +127656,30 @@ const sizeSchema = /* @__PURE__ */ __name((isProtein2) => ({
127491
127656
  }) : /* @__PURE__ */ React.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
127492
127657
  }, "render")
127493
127658
  }), "sizeSchema");
127659
+ const getMemoOrfs = /* @__PURE__ */ (() => {
127660
+ let lastDeps;
127661
+ let lastResult;
127662
+ return (editorState) => {
127663
+ const {
127664
+ sequenceData: sequenceData2,
127665
+ minimumOrfSize: minimumOrfSize2,
127666
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
127667
+ } = editorState;
127668
+ const { sequence: sequence2, circular: circular2 } = sequenceData2;
127669
+ const deps = {
127670
+ sequence: sequence2,
127671
+ circular: circular2,
127672
+ minimumOrfSize: minimumOrfSize2,
127673
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
127674
+ };
127675
+ if (lastResult && isEqual$3(deps, lastDeps)) {
127676
+ return lastResult;
127677
+ }
127678
+ lastResult = selectors.orfsSelector(editorState);
127679
+ lastDeps = deps;
127680
+ return lastResult;
127681
+ };
127682
+ })();
127494
127683
  var lodash$1 = { exports: {} };
127495
127684
  /**
127496
127685
  * @license
@@ -138046,10 +138235,16 @@ function GlobalDialog(props) {
138046
138235
  hideDialog();
138047
138236
  };
138048
138237
  }, []);
138238
+ React.useEffect(() => {
138239
+ dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
138240
+ if (editorName) {
138241
+ const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
138242
+ slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
138243
+ }
138244
+ }, [editorName]);
138049
138245
  if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
138050
138246
  return null;
138051
138247
  }
138052
- dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
138053
138248
  const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
138054
138249
  if (!Comp) return null;
138055
138250
  return /* @__PURE__ */ React.createElement(
@@ -142813,6 +143008,8 @@ const userDefinedHandlersAndOpts = [
142813
143008
  "enzymeManageOverride",
142814
143009
  "enzymeGroupsOverride",
142815
143010
  "additionalEnzymes",
143011
+ "getAcceptedInsertChars",
143012
+ "maxInsertSize",
142816
143013
  "onDelete",
142817
143014
  "onCopy",
142818
143015
  "autoAnnotateFeatures",
@@ -144586,7 +144783,7 @@ const OrfProperties$1 = compose(
144586
144783
  readOnly: readOnly2,
144587
144784
  annotationVisibility: annotationVisibility2,
144588
144785
  useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
144589
- orfs: selectors.orfsSelector(editorState),
144786
+ orfs: getMemoOrfs(editorState),
144590
144787
  sequenceLength: sequence2.length,
144591
144788
  sequenceData: sequenceData2,
144592
144789
  minimumOrfSize: minimumOrfSize2
@@ -144776,7 +144973,7 @@ const TranslationProperties$1 = compose(
144776
144973
  return {
144777
144974
  readOnly: readOnly2,
144778
144975
  translations: selectors.translationsSelector(editorState),
144779
- orfs: selectors.orfsSelector(editorState),
144976
+ orfs: getMemoOrfs(editorState),
144780
144977
  annotationVisibility: annotationVisibility2,
144781
144978
  sequenceLength: (sequenceData2.sequence || "").length,
144782
144979
  sequenceData: sequenceData2
@@ -146061,6 +146258,7 @@ const _Editor = class _Editor extends React.Component {
146061
146258
  hoveredId,
146062
146259
  isFullscreen,
146063
146260
  maxInsertSize,
146261
+ getAcceptedInsertChars,
146064
146262
  showAminoAcidUnitAsCodon,
146065
146263
  maxAnnotationsToDisplay,
146066
146264
  minHeight = 400,
@@ -146250,6 +146448,7 @@ const _Editor = class _Editor extends React.Component {
146250
146448
  }), panelPropsToSpread), {
146251
146449
  editorName,
146252
146450
  maxInsertSize,
146451
+ getAcceptedInsertChars,
146253
146452
  showAminoAcidUnitAsCodon,
146254
146453
  isProtein: sequenceData2.isProtein,
146255
146454
  onlyShowLabelsThatDoNotFit,