@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.es.js CHANGED
@@ -2906,6 +2906,13 @@ document.addEventListener("mouseup", () => {
2906
2906
  isDragging$1 = false;
2907
2907
  });
2908
2908
  let tippys = [];
2909
+ function isInAllowedContainer(element2) {
2910
+ if (window.onlyAllowTooltipsInVeEditor) {
2911
+ return element2.closest(".veEditor") !== null;
2912
+ }
2913
+ return true;
2914
+ }
2915
+ __name(isInAllowedContainer, "isInAllowedContainer");
2909
2916
  let recentlyHidden = false;
2910
2917
  let clearMe;
2911
2918
  (function() {
@@ -2913,6 +2920,9 @@ let clearMe;
2913
2920
  document.addEventListener("mouseover", function(event) {
2914
2921
  var _a2, _b2;
2915
2922
  const element2 = event.target;
2923
+ if (!isInAllowedContainer(element2)) {
2924
+ return;
2925
+ }
2916
2926
  if (element2 instanceof Element && element2 !== lastMouseOverElement) {
2917
2927
  let clearOldTippys = /* @__PURE__ */ __name(function(maybeInst) {
2918
2928
  tippys = tippys.filter((t2) => {
@@ -9237,6 +9247,195 @@ function DialogFooter({
9237
9247
  );
9238
9248
  }
9239
9249
  __name(DialogFooter, "DialogFooter");
9250
+ var NOT_FOUND = "NOT_FOUND";
9251
+ function createSingletonCache(equals) {
9252
+ var entry;
9253
+ return {
9254
+ get: /* @__PURE__ */ __name(function get7(key) {
9255
+ if (entry && equals(entry.key, key)) {
9256
+ return entry.value;
9257
+ }
9258
+ return NOT_FOUND;
9259
+ }, "get"),
9260
+ put: /* @__PURE__ */ __name(function put(key, value) {
9261
+ entry = {
9262
+ key,
9263
+ value
9264
+ };
9265
+ }, "put"),
9266
+ getEntries: /* @__PURE__ */ __name(function getEntries() {
9267
+ return entry ? [entry] : [];
9268
+ }, "getEntries"),
9269
+ clear: /* @__PURE__ */ __name(function clear3() {
9270
+ entry = void 0;
9271
+ }, "clear")
9272
+ };
9273
+ }
9274
+ __name(createSingletonCache, "createSingletonCache");
9275
+ function createLruCache(maxSize, equals) {
9276
+ var entries2 = [];
9277
+ function get7(key) {
9278
+ var cacheIndex = entries2.findIndex(function(entry2) {
9279
+ return equals(key, entry2.key);
9280
+ });
9281
+ if (cacheIndex > -1) {
9282
+ var entry = entries2[cacheIndex];
9283
+ if (cacheIndex > 0) {
9284
+ entries2.splice(cacheIndex, 1);
9285
+ entries2.unshift(entry);
9286
+ }
9287
+ return entry.value;
9288
+ }
9289
+ return NOT_FOUND;
9290
+ }
9291
+ __name(get7, "get");
9292
+ function put(key, value) {
9293
+ if (get7(key) === NOT_FOUND) {
9294
+ entries2.unshift({
9295
+ key,
9296
+ value
9297
+ });
9298
+ if (entries2.length > maxSize) {
9299
+ entries2.pop();
9300
+ }
9301
+ }
9302
+ }
9303
+ __name(put, "put");
9304
+ function getEntries() {
9305
+ return entries2;
9306
+ }
9307
+ __name(getEntries, "getEntries");
9308
+ function clear3() {
9309
+ entries2 = [];
9310
+ }
9311
+ __name(clear3, "clear");
9312
+ return {
9313
+ get: get7,
9314
+ put,
9315
+ getEntries,
9316
+ clear: clear3
9317
+ };
9318
+ }
9319
+ __name(createLruCache, "createLruCache");
9320
+ var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
9321
+ return a2 === b3;
9322
+ }, "defaultEqualityCheck");
9323
+ function createCacheKeyComparator(equalityCheck) {
9324
+ return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
9325
+ if (prev === null || next === null || prev.length !== next.length) {
9326
+ return false;
9327
+ }
9328
+ var length = prev.length;
9329
+ for (var i = 0; i < length; i++) {
9330
+ if (!equalityCheck(prev[i], next[i])) {
9331
+ return false;
9332
+ }
9333
+ }
9334
+ return true;
9335
+ }, "areArgumentsShallowlyEqual");
9336
+ }
9337
+ __name(createCacheKeyComparator, "createCacheKeyComparator");
9338
+ function defaultMemoize(func, equalityCheckOrOptions) {
9339
+ var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
9340
+ equalityCheck: equalityCheckOrOptions
9341
+ };
9342
+ 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;
9343
+ var comparator = createCacheKeyComparator(equalityCheck);
9344
+ var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
9345
+ function memoized() {
9346
+ var value = cache2.get(arguments);
9347
+ if (value === NOT_FOUND) {
9348
+ value = func.apply(null, arguments);
9349
+ if (resultEqualityCheck) {
9350
+ var entries2 = cache2.getEntries();
9351
+ var matchingEntry = entries2.find(function(entry) {
9352
+ return resultEqualityCheck(entry.value, value);
9353
+ });
9354
+ if (matchingEntry) {
9355
+ value = matchingEntry.value;
9356
+ }
9357
+ }
9358
+ cache2.put(arguments, value);
9359
+ }
9360
+ return value;
9361
+ }
9362
+ __name(memoized, "memoized");
9363
+ memoized.clearCache = function() {
9364
+ return cache2.clear();
9365
+ };
9366
+ return memoized;
9367
+ }
9368
+ __name(defaultMemoize, "defaultMemoize");
9369
+ function getDependencies(funcs) {
9370
+ var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
9371
+ if (!dependencies.every(function(dep) {
9372
+ return typeof dep === "function";
9373
+ })) {
9374
+ var dependencyTypes = dependencies.map(function(dep) {
9375
+ return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
9376
+ }).join(", ");
9377
+ throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
9378
+ }
9379
+ return dependencies;
9380
+ }
9381
+ __name(getDependencies, "getDependencies");
9382
+ function createSelectorCreator(memoize2) {
9383
+ for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
9384
+ memoizeOptionsFromArgs[_key - 1] = arguments[_key];
9385
+ }
9386
+ var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
9387
+ for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
9388
+ funcs[_key2] = arguments[_key2];
9389
+ }
9390
+ var _recomputations = 0;
9391
+ var _lastResult;
9392
+ var directlyPassedOptions = {
9393
+ memoizeOptions: void 0
9394
+ };
9395
+ var resultFunc = funcs.pop();
9396
+ if (typeof resultFunc === "object") {
9397
+ directlyPassedOptions = resultFunc;
9398
+ resultFunc = funcs.pop();
9399
+ }
9400
+ if (typeof resultFunc !== "function") {
9401
+ throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
9402
+ }
9403
+ var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
9404
+ var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
9405
+ var dependencies = getDependencies(funcs);
9406
+ var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
9407
+ _recomputations++;
9408
+ return resultFunc.apply(null, arguments);
9409
+ }, "recomputationWrapper")].concat(finalMemoizeOptions));
9410
+ var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
9411
+ var params = [];
9412
+ var length = dependencies.length;
9413
+ for (var i = 0; i < length; i++) {
9414
+ params.push(dependencies[i].apply(null, arguments));
9415
+ }
9416
+ _lastResult = memoizedResultFunc.apply(null, params);
9417
+ return _lastResult;
9418
+ }, "dependenciesChecker"));
9419
+ Object.assign(selector, {
9420
+ resultFunc,
9421
+ memoizedResultFunc,
9422
+ dependencies,
9423
+ lastResult: /* @__PURE__ */ __name(function lastResult() {
9424
+ return _lastResult;
9425
+ }, "lastResult"),
9426
+ recomputations: /* @__PURE__ */ __name(function recomputations() {
9427
+ return _recomputations;
9428
+ }, "recomputations"),
9429
+ resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
9430
+ return _recomputations = 0;
9431
+ }, "resetRecomputations")
9432
+ });
9433
+ return selector;
9434
+ }, "createSelector");
9435
+ return createSelector2;
9436
+ }
9437
+ __name(createSelectorCreator, "createSelectorCreator");
9438
+ var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
9240
9439
  function useCombinedRefs() {
9241
9440
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
9242
9441
  refs[_key] = arguments[_key];
@@ -56633,21 +56832,27 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56633
56832
  }
56634
56833
  return false;
56635
56834
  });
56835
+ const dtFormParamsSelector = useMemo$1(
56836
+ () => createSelector(
56837
+ (state2) => formValueSelector(formName)(
56838
+ state2,
56839
+ "reduxFormCellValidation",
56840
+ "reduxFormEntities",
56841
+ "reduxFormQueryParams",
56842
+ "reduxFormSelectedEntityIdMap"
56843
+ ),
56844
+ (result) => result
56845
+ // identity, but memoized
56846
+ ),
56847
+ [formName]
56848
+ );
56636
56849
  const {
56637
56850
  reduxFormCellValidation: _reduxFormCellValidation,
56638
56851
  reduxFormEditingCell,
56639
56852
  reduxFormEntities,
56640
56853
  reduxFormQueryParams: _reduxFormQueryParams = {},
56641
56854
  reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
56642
- } = useSelector(/* @__PURE__ */ __name(function dtFormParamsSelector(state2) {
56643
- return formValueSelector(formName)(
56644
- state2,
56645
- "reduxFormCellValidation",
56646
- "reduxFormEntities",
56647
- "reduxFormQueryParams",
56648
- "reduxFormSelectedEntityIdMap"
56649
- );
56650
- }, "dtFormParamsSelector"));
56855
+ } = useSelector(dtFormParamsSelector);
56651
56856
  const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
56652
56857
  _reduxFormCellValidation
56653
56858
  );
@@ -56954,11 +57159,9 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56954
57159
  newTableConfig = {
56955
57160
  fieldOptions: []
56956
57161
  };
56957
- if (isEqual$3(prev, newTableConfig)) {
56958
- return prev;
56959
- } else {
56960
- return newTableConfig;
56961
- }
57162
+ }
57163
+ if (isEqual$3(prev, newTableConfig)) {
57164
+ return prev;
56962
57165
  } else {
56963
57166
  return newTableConfig;
56964
57167
  }
@@ -74955,14 +75158,16 @@ function filterSequenceString(sequenceString = "", {
74955
75158
  name: name2,
74956
75159
  isProtein: isProtein2,
74957
75160
  isRna: isRna2,
74958
- isMixedRnaAndDna
75161
+ isMixedRnaAndDna,
75162
+ getAcceptedInsertChars
74959
75163
  } = {}) {
74960
- const acceptedChars = getAcceptedChars({
75164
+ const sequenceTypeInfo = {
74961
75165
  isOligo: isOligo2,
74962
75166
  isProtein: isProtein2,
74963
75167
  isRna: isRna2,
74964
75168
  isMixedRnaAndDna
74965
- });
75169
+ };
75170
+ const acceptedChars = isFunction$2(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
74966
75171
  const replaceChars = getReplaceChars({
74967
75172
  isOligo: isOligo2,
74968
75173
  isProtein: isProtein2,
@@ -75198,6 +75403,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
75198
75403
  doNotProvideIdsForAnnotations,
75199
75404
  noCdsTranslations,
75200
75405
  convertAnnotationsFromAAIndices,
75406
+ getAcceptedInsertChars,
75201
75407
  topLevelSeqData
75202
75408
  } = options;
75203
75409
  let seqData = cloneDeep(pSeqData);
@@ -75229,13 +75435,16 @@ function tidyUpSequenceData(pSeqData, options = {}) {
75229
75435
  if (!doNotRemoveInvalidChars) {
75230
75436
  if (seqData.isProtein) {
75231
75437
  const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
75232
- isProtein: true
75438
+ isProtein: true,
75439
+ getAcceptedInsertChars
75233
75440
  }));
75234
75441
  seqData.proteinSequence = newSeq;
75235
75442
  } else {
75236
- const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
75443
+ const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
75237
75444
  additionalValidChars
75238
- }, topLevelSeqData || seqData));
75445
+ }, topLevelSeqData || seqData), {
75446
+ getAcceptedInsertChars
75447
+ }));
75239
75448
  seqData.sequence = newSeq;
75240
75449
  }
75241
75450
  }
@@ -97591,195 +97800,6 @@ function sequenceSelector(state2) {
97591
97800
  return sequenceDataSelector(state2).sequence;
97592
97801
  }
97593
97802
  __name(sequenceSelector, "sequenceSelector");
97594
- var NOT_FOUND = "NOT_FOUND";
97595
- function createSingletonCache(equals) {
97596
- var entry;
97597
- return {
97598
- get: /* @__PURE__ */ __name(function get7(key) {
97599
- if (entry && equals(entry.key, key)) {
97600
- return entry.value;
97601
- }
97602
- return NOT_FOUND;
97603
- }, "get"),
97604
- put: /* @__PURE__ */ __name(function put(key, value) {
97605
- entry = {
97606
- key,
97607
- value
97608
- };
97609
- }, "put"),
97610
- getEntries: /* @__PURE__ */ __name(function getEntries() {
97611
- return entry ? [entry] : [];
97612
- }, "getEntries"),
97613
- clear: /* @__PURE__ */ __name(function clear3() {
97614
- entry = void 0;
97615
- }, "clear")
97616
- };
97617
- }
97618
- __name(createSingletonCache, "createSingletonCache");
97619
- function createLruCache(maxSize, equals) {
97620
- var entries2 = [];
97621
- function get7(key) {
97622
- var cacheIndex = entries2.findIndex(function(entry2) {
97623
- return equals(key, entry2.key);
97624
- });
97625
- if (cacheIndex > -1) {
97626
- var entry = entries2[cacheIndex];
97627
- if (cacheIndex > 0) {
97628
- entries2.splice(cacheIndex, 1);
97629
- entries2.unshift(entry);
97630
- }
97631
- return entry.value;
97632
- }
97633
- return NOT_FOUND;
97634
- }
97635
- __name(get7, "get");
97636
- function put(key, value) {
97637
- if (get7(key) === NOT_FOUND) {
97638
- entries2.unshift({
97639
- key,
97640
- value
97641
- });
97642
- if (entries2.length > maxSize) {
97643
- entries2.pop();
97644
- }
97645
- }
97646
- }
97647
- __name(put, "put");
97648
- function getEntries() {
97649
- return entries2;
97650
- }
97651
- __name(getEntries, "getEntries");
97652
- function clear3() {
97653
- entries2 = [];
97654
- }
97655
- __name(clear3, "clear");
97656
- return {
97657
- get: get7,
97658
- put,
97659
- getEntries,
97660
- clear: clear3
97661
- };
97662
- }
97663
- __name(createLruCache, "createLruCache");
97664
- var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
97665
- return a2 === b3;
97666
- }, "defaultEqualityCheck");
97667
- function createCacheKeyComparator(equalityCheck) {
97668
- return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
97669
- if (prev === null || next === null || prev.length !== next.length) {
97670
- return false;
97671
- }
97672
- var length = prev.length;
97673
- for (var i = 0; i < length; i++) {
97674
- if (!equalityCheck(prev[i], next[i])) {
97675
- return false;
97676
- }
97677
- }
97678
- return true;
97679
- }, "areArgumentsShallowlyEqual");
97680
- }
97681
- __name(createCacheKeyComparator, "createCacheKeyComparator");
97682
- function defaultMemoize(func, equalityCheckOrOptions) {
97683
- var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
97684
- equalityCheck: equalityCheckOrOptions
97685
- };
97686
- 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;
97687
- var comparator = createCacheKeyComparator(equalityCheck);
97688
- var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
97689
- function memoized() {
97690
- var value = cache2.get(arguments);
97691
- if (value === NOT_FOUND) {
97692
- value = func.apply(null, arguments);
97693
- if (resultEqualityCheck) {
97694
- var entries2 = cache2.getEntries();
97695
- var matchingEntry = entries2.find(function(entry) {
97696
- return resultEqualityCheck(entry.value, value);
97697
- });
97698
- if (matchingEntry) {
97699
- value = matchingEntry.value;
97700
- }
97701
- }
97702
- cache2.put(arguments, value);
97703
- }
97704
- return value;
97705
- }
97706
- __name(memoized, "memoized");
97707
- memoized.clearCache = function() {
97708
- return cache2.clear();
97709
- };
97710
- return memoized;
97711
- }
97712
- __name(defaultMemoize, "defaultMemoize");
97713
- function getDependencies(funcs) {
97714
- var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
97715
- if (!dependencies.every(function(dep) {
97716
- return typeof dep === "function";
97717
- })) {
97718
- var dependencyTypes = dependencies.map(function(dep) {
97719
- return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
97720
- }).join(", ");
97721
- throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
97722
- }
97723
- return dependencies;
97724
- }
97725
- __name(getDependencies, "getDependencies");
97726
- function createSelectorCreator(memoize2) {
97727
- for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
97728
- memoizeOptionsFromArgs[_key - 1] = arguments[_key];
97729
- }
97730
- var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
97731
- for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
97732
- funcs[_key2] = arguments[_key2];
97733
- }
97734
- var _recomputations = 0;
97735
- var _lastResult;
97736
- var directlyPassedOptions = {
97737
- memoizeOptions: void 0
97738
- };
97739
- var resultFunc = funcs.pop();
97740
- if (typeof resultFunc === "object") {
97741
- directlyPassedOptions = resultFunc;
97742
- resultFunc = funcs.pop();
97743
- }
97744
- if (typeof resultFunc !== "function") {
97745
- throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
97746
- }
97747
- var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
97748
- var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
97749
- var dependencies = getDependencies(funcs);
97750
- var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
97751
- _recomputations++;
97752
- return resultFunc.apply(null, arguments);
97753
- }, "recomputationWrapper")].concat(finalMemoizeOptions));
97754
- var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
97755
- var params = [];
97756
- var length = dependencies.length;
97757
- for (var i = 0; i < length; i++) {
97758
- params.push(dependencies[i].apply(null, arguments));
97759
- }
97760
- _lastResult = memoizedResultFunc.apply(null, params);
97761
- return _lastResult;
97762
- }, "dependenciesChecker"));
97763
- Object.assign(selector, {
97764
- resultFunc,
97765
- memoizedResultFunc,
97766
- dependencies,
97767
- lastResult: /* @__PURE__ */ __name(function lastResult() {
97768
- return _lastResult;
97769
- }, "lastResult"),
97770
- recomputations: /* @__PURE__ */ __name(function recomputations() {
97771
- return _recomputations;
97772
- }, "recomputations"),
97773
- resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
97774
- return _recomputations = 0;
97775
- }, "resetRecomputations")
97776
- });
97777
- return selector;
97778
- }, "createSelector");
97779
- return createSelector2;
97780
- }
97781
- __name(createSelectorCreator, "createSelectorCreator");
97782
- var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
97783
97803
  const restrictionEnzymesSelector = createSelector(
97784
97804
  () => defaultEnzymesByName,
97785
97805
  (state2, additionalEnzymes) => {
@@ -97805,7 +97825,34 @@ const restrictionEnzymesSelector = createSelector(
97805
97825
  const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
97806
97826
  return sequenceData2.cutsiteLabelColors;
97807
97827
  });
97808
- function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors) {
97828
+ const cutsitesCache = [];
97829
+ function getCachedResult(argsObj) {
97830
+ const idx = cutsitesCache.findIndex(
97831
+ (entry) => entry && isEqual$3(entry.args, argsObj)
97832
+ );
97833
+ if (idx === -1) return;
97834
+ const hit = cutsitesCache[idx];
97835
+ return hit.result;
97836
+ }
97837
+ __name(getCachedResult, "getCachedResult");
97838
+ function setCachedResult(argsObj, result, cacheSize = 1) {
97839
+ cutsitesCache.push({
97840
+ args: argsObj,
97841
+ result
97842
+ });
97843
+ if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
97844
+ }
97845
+ __name(setCachedResult, "setCachedResult");
97846
+ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
97847
+ const cachedResult = getCachedResult({
97848
+ sequence: sequence2,
97849
+ circular: circular2,
97850
+ enzymeList,
97851
+ cutsiteLabelColors
97852
+ });
97853
+ if (cachedResult) {
97854
+ return cachedResult;
97855
+ }
97809
97856
  const cutsitesByName = getLowerCaseObj(
97810
97857
  getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
97811
97858
  );
@@ -97838,11 +97885,22 @@ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors)
97838
97885
  const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
97839
97886
  return cutsitesForEnzyme;
97840
97887
  });
97841
- return {
97888
+ const result = {
97842
97889
  cutsitesByName,
97843
97890
  cutsitesById,
97844
97891
  cutsitesArray
97845
97892
  };
97893
+ setCachedResult(
97894
+ {
97895
+ sequence: sequence2,
97896
+ circular: circular2,
97897
+ enzymeList,
97898
+ cutsiteLabelColors
97899
+ },
97900
+ result,
97901
+ editorSize
97902
+ );
97903
+ return result;
97846
97904
  }
97847
97905
  __name(cutsitesSelector, "cutsitesSelector");
97848
97906
  const cutsitesSelector$1 = createSelector(
@@ -97850,6 +97908,7 @@ const cutsitesSelector$1 = createSelector(
97850
97908
  circularSelector,
97851
97909
  restrictionEnzymesSelector,
97852
97910
  cutsiteLabelColorSelector,
97911
+ (editorState) => editorState.editorSize,
97853
97912
  cutsitesSelector
97854
97913
  );
97855
97914
  function divideBy3(num, shouldDivideBy3) {
@@ -99265,11 +99324,12 @@ function showDialog({
99265
99324
  props,
99266
99325
  overrideName
99267
99326
  }) {
99268
- var _a2;
99327
+ var _a2, _b2, _c, _d;
99269
99328
  dialogHolder.dialogType = dialogType;
99270
99329
  if (!dialogHolder.dialogType && ModalComponent) {
99271
99330
  dialogHolder.dialogType = "TGCustomModal";
99272
99331
  }
99332
+ dialogHolder.editorName = props == null ? void 0 : props.editorName;
99273
99333
  if (document.activeElement && document.activeElement.closest(".veEditor")) {
99274
99334
  let editorName;
99275
99335
  (_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
@@ -99283,16 +99343,28 @@ function showDialog({
99283
99343
  dialogHolder.CustomModalComponent = ModalComponent;
99284
99344
  dialogHolder.props = props;
99285
99345
  dialogHolder.overrideName = overrideName;
99286
- dialogHolder.setUniqKeyToForceRerender(uuid());
99346
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
99347
+ (_c = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c.call(
99348
+ _b2,
99349
+ uuid()
99350
+ );
99351
+ } else {
99352
+ (_d = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d.call(dialogHolder, uuid());
99353
+ }
99287
99354
  }
99288
99355
  __name(showDialog, "showDialog");
99289
99356
  function hideDialog() {
99357
+ var _a2, _b2, _c;
99290
99358
  delete dialogHolder.dialogType;
99291
99359
  delete dialogHolder.CustomModalComponent;
99292
99360
  delete dialogHolder.props;
99293
99361
  delete dialogHolder.overrideName;
99362
+ if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
99363
+ (_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
99364
+ } else {
99365
+ (_c = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c.call(dialogHolder);
99366
+ }
99294
99367
  delete dialogHolder.editorName;
99295
- dialogHolder.setUniqKeyToForceRerender();
99296
99368
  }
99297
99369
  __name(hideDialog, "hideDialog");
99298
99370
  const typeToDialogType = {
@@ -99567,7 +99639,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(void 0,
99567
99639
  readOnly: readOnly2,
99568
99640
  alwaysAllowSave,
99569
99641
  sequenceData: sequenceData2,
99570
- lastSavedIdUpdate: lastSavedIdUpdate2
99642
+ lastSavedIdUpdate: lastSavedIdUpdate2,
99643
+ getAcceptedInsertChars
99571
99644
  } = props;
99572
99645
  const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
99573
99646
  const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
@@ -99580,7 +99653,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(void 0,
99580
99653
  opts2,
99581
99654
  tidyUpSequenceData(sequenceData2, {
99582
99655
  doNotRemoveInvalidChars: true,
99583
- annotationsAsObjects: true
99656
+ annotationsAsObjects: true,
99657
+ getAcceptedInsertChars
99584
99658
  }),
99585
99659
  props,
99586
99660
  updateLastSavedIdToCurrent
@@ -99762,8 +99836,8 @@ const withEditorProps = compose(
99762
99836
  caretPositionOrRange,
99763
99837
  options
99764
99838
  } = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
99765
- tidyUpSequenceData(_sequenceDataToInsert),
99766
- tidyUpSequenceData(_existingSequenceData),
99839
+ tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
99840
+ tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
99767
99841
  _caretPositionOrRange,
99768
99842
  _options
99769
99843
  )) || {} : {};
@@ -99926,7 +100000,11 @@ const getEditorState = createSelector(
99926
100000
  (state2) => state2.VectorEditor,
99927
100001
  (state2, editorName) => editorName,
99928
100002
  (VectorEditor, editorName) => {
99929
- return VectorEditor[editorName];
100003
+ const editorState = VectorEditor[editorName];
100004
+ editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
100005
+ (editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
100006
+ ).length);
100007
+ return editorState;
99930
100008
  }
99931
100009
  );
99932
100010
  function mapStateToProps(state2, ownProps) {
@@ -99963,6 +100041,9 @@ function mapStateToProps(state2, ownProps) {
99963
100041
  annotationTypePlural,
99964
100042
  sequenceLength
99965
100043
  );
100044
+ if (dialogHolder.editorName) {
100045
+ annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
100046
+ }
99966
100047
  }
99967
100048
  });
99968
100049
  const toReturn = __spreadProps(__spreadValues({}, editorState), {
@@ -100190,13 +100271,15 @@ function getShowGCContent(state2, ownProps) {
100190
100271
  return toRet;
100191
100272
  }
100192
100273
  __name(getShowGCContent, "getShowGCContent");
100193
- function jsonToJson(incomingJson) {
100274
+ function jsonToJson(incomingJson, options) {
100275
+ const { getAcceptedInsertChars } = options || {};
100194
100276
  return JSON.stringify(
100195
100277
  omit$1(
100196
100278
  cleanUpTeselagenJsonForExport(
100197
100279
  tidyUpSequenceData(incomingJson, {
100198
100280
  doNotRemoveInvalidChars: true,
100199
- annotationsAsObjects: false
100281
+ annotationsAsObjects: false,
100282
+ getAcceptedInsertChars
100200
100283
  })
100201
100284
  ),
100202
100285
  [
@@ -110096,7 +110179,8 @@ function getAnnotationNameAndStartStopString({
110096
110179
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110097
110180
  click → top cut position
110098
110181
  alt/option+click → bottom cut position
110099
- cmd/ctrl+click → recognition range` : `
110182
+ cmd/ctrl+click → recognition range
110183
+ double click → show info` : `
110100
110184
 
110101
110185
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110102
110186
  INTERACTIONS:
@@ -110882,9 +110966,19 @@ const _AnnotationPositioner = class _AnnotationPositioner extends React__default
110882
110966
  };
110883
110967
  __name(_AnnotationPositioner, "AnnotationPositioner");
110884
110968
  let AnnotationPositioner = _AnnotationPositioner;
110969
+ let measureCanvas;
110970
+ function getAnnotationTextWidth(text2, fontSize = ANNOTATION_LABEL_FONT_WIDTH, fontFamily = "monospace") {
110971
+ if (!measureCanvas) {
110972
+ measureCanvas = document.createElement("canvas");
110973
+ }
110974
+ const ctx = measureCanvas.getContext("2d");
110975
+ ctx.font = `${fontSize}px ${fontFamily}`;
110976
+ return ctx.measureText(text2).width;
110977
+ }
110978
+ __name(getAnnotationTextWidth, "getAnnotationTextWidth");
110885
110979
  const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
110886
- const textLength = text2.length * ANNOTATION_LABEL_FONT_WIDTH;
110887
- const widthMinusOne = (range2 ? getWidth(range2, charWidth2, 0) : width) - charWidth2;
110980
+ const textLength = getAnnotationTextWidth(text2);
110981
+ const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
110888
110982
  return widthMinusOne > textLength;
110889
110983
  }, "doesLabelFitInAnnotation");
110890
110984
  function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
@@ -110894,6 +110988,78 @@ function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
110894
110988
  });
110895
110989
  }
110896
110990
  __name(getAnnotationClassnames, "getAnnotationClassnames");
110991
+ function getAnnotationTextOffset({
110992
+ width,
110993
+ nameToDisplay,
110994
+ hasAPoint,
110995
+ pointiness,
110996
+ forward
110997
+ }) {
110998
+ return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
110999
+ }
111000
+ __name(getAnnotationTextOffset, "getAnnotationTextOffset");
111001
+ function getAnnotationNameInfo({
111002
+ name: name2,
111003
+ width,
111004
+ hasAPoint,
111005
+ pointiness,
111006
+ forward,
111007
+ charWidth: charWidth2,
111008
+ truncateLabelsThatDoNotFit,
111009
+ onlyShowLabelsThatDoNotFit,
111010
+ annotation
111011
+ }) {
111012
+ let nameToDisplay = name2;
111013
+ let textOffset = getAnnotationTextOffset({
111014
+ width,
111015
+ nameToDisplay,
111016
+ hasAPoint,
111017
+ pointiness,
111018
+ forward
111019
+ });
111020
+ const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
111021
+ if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
111022
+ if (truncateLabelsThatDoNotFit) {
111023
+ let left2 = 0;
111024
+ let right2 = name2.length;
111025
+ let bestFit = "";
111026
+ while (left2 <= right2) {
111027
+ const mid = Math.floor((left2 + right2) / 2);
111028
+ const candidate = name2.slice(0, mid);
111029
+ const candidateWidth = getAnnotationTextWidth(candidate);
111030
+ if (candidateWidth <= widthAvailableForText) {
111031
+ if (candidate.length > bestFit.length) {
111032
+ bestFit = candidate;
111033
+ }
111034
+ left2 = mid + 1;
111035
+ } else {
111036
+ right2 = mid - 1;
111037
+ }
111038
+ }
111039
+ if (bestFit.length < name2.length) {
111040
+ bestFit = bestFit.slice(0, -2) + "..";
111041
+ }
111042
+ nameToDisplay = bestFit;
111043
+ if (nameToDisplay.length <= 3) {
111044
+ textOffset = 0;
111045
+ nameToDisplay = "";
111046
+ } else {
111047
+ textOffset = getAnnotationTextOffset({
111048
+ width,
111049
+ nameToDisplay,
111050
+ hasAPoint,
111051
+ pointiness,
111052
+ forward
111053
+ });
111054
+ }
111055
+ } else {
111056
+ textOffset = 0;
111057
+ nameToDisplay = "";
111058
+ }
111059
+ }
111060
+ return { textOffset, nameToDisplay };
111061
+ }
111062
+ __name(getAnnotationNameInfo, "getAnnotationNameInfo");
110897
111063
  function PointedAnnotation(props) {
110898
111064
  const {
110899
111065
  className,
@@ -111029,27 +111195,17 @@ function PointedAnnotation(props) {
111029
111195
  Q ${pointiness},${height / 2} ${0},${0}
111030
111196
  z`;
111031
111197
  }
111032
- let nameToDisplay = name2;
111033
- let textOffset = width / 2 - name2.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
111034
- if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
111035
- if (truncateLabelsThatDoNotFit) {
111036
- const fractionToDisplay = width / (name2.length * ANNOTATION_LABEL_FONT_WIDTH);
111037
- const numLetters = Math.floor(fractionToDisplay * name2.length);
111038
- nameToDisplay = name2.slice(0, numLetters);
111039
- if (nameToDisplay.length > 3) {
111040
- if (nameToDisplay.length !== name2.length) {
111041
- nameToDisplay += "..";
111042
- }
111043
- textOffset = width / 2 - nameToDisplay.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
111044
- } else {
111045
- textOffset = 0;
111046
- nameToDisplay = "";
111047
- }
111048
- } else {
111049
- textOffset = 0;
111050
- nameToDisplay = "";
111051
- }
111052
- }
111198
+ const { textOffset, nameToDisplay } = getAnnotationNameInfo({
111199
+ name: name2,
111200
+ width,
111201
+ hasAPoint,
111202
+ pointiness,
111203
+ forward,
111204
+ charWidth: charWidth2,
111205
+ truncateLabelsThatDoNotFit,
111206
+ onlyShowLabelsThatDoNotFit,
111207
+ annotation
111208
+ });
111053
111209
  let _textColor = textColor;
111054
111210
  if (!textColor) {
111055
111211
  try {
@@ -116968,7 +117124,7 @@ function showFileDialog({ multiple = false, onSelect }) {
116968
117124
  input.click();
116969
117125
  }
116970
117126
  __name(showFileDialog, "showFileDialog");
116971
- const version = "0.8.29";
117127
+ const version = "0.8.31";
116972
117128
  const packageJson = {
116973
117129
  version
116974
117130
  };
@@ -117886,7 +118042,7 @@ const fileCommandDefs = __spreadValues(__spreadProps(__spreadValues({
117886
118042
  },
117887
118043
  exportSequenceAsTeselagenJson: {
117888
118044
  name: "Download Teselagen JSON File",
117889
- handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
118045
+ handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
117890
118046
  },
117891
118047
  viewProperties: {
117892
118048
  handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
@@ -120697,6 +120853,7 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React__def
120697
120853
  caretPosition: caretPosition2,
120698
120854
  sequenceData: sequenceData2,
120699
120855
  maxInsertSize,
120856
+ getAcceptedInsertChars,
120700
120857
  showAminoAcidUnitAsCodon
120701
120858
  } = this.props;
120702
120859
  const { charsToInsert, hasTempError } = this.state;
@@ -120732,7 +120889,8 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React__def
120732
120889
  const [sanitizedVal, warnings] = filterSequenceString(
120733
120890
  e.target.value,
120734
120891
  __spreadProps(__spreadValues({}, sequenceData2), {
120735
- name: void 0
120892
+ name: void 0,
120893
+ getAcceptedInsertChars
120736
120894
  })
120737
120895
  );
120738
120896
  if (warnings.length) {
@@ -121611,7 +121769,8 @@ function VectorInteractionHOC(Component2) {
121611
121769
  onPaste,
121612
121770
  disableBpEditing,
121613
121771
  sequenceData: sequenceData2,
121614
- maxInsertSize
121772
+ maxInsertSize,
121773
+ getAcceptedInsertChars
121615
121774
  } = this.props;
121616
121775
  if (disableBpEditing) {
121617
121776
  return this.createDisableBpEditingMsg();
@@ -121650,7 +121809,8 @@ function VectorInteractionHOC(Component2) {
121650
121809
  topLevelSeqData: sequenceData2,
121651
121810
  provideNewIdsForAnnotations: true,
121652
121811
  annotationsAsObjects: true,
121653
- noCdsTranslations: true
121812
+ noCdsTranslations: true,
121813
+ getAcceptedInsertChars
121654
121814
  });
121655
121815
  if (!seqDataToInsert.sequence.length)
121656
121816
  return window.toastr.warning("Sorry no valid base pairs to paste");
@@ -121670,7 +121830,8 @@ function VectorInteractionHOC(Component2) {
121670
121830
  selectionLayer: selectionLayer2,
121671
121831
  copyOptions: copyOptions2,
121672
121832
  disableBpEditing,
121673
- readOnly: readOnly2
121833
+ readOnly: readOnly2,
121834
+ getAcceptedInsertChars
121674
121835
  } = this.props;
121675
121836
  const onCut = this.props.onCut || this.props.onCopy || noop$8;
121676
121837
  const seqData = tidyUpSequenceData(
@@ -121694,7 +121855,8 @@ function VectorInteractionHOC(Component2) {
121694
121855
  {
121695
121856
  doNotRemoveInvalidChars: true,
121696
121857
  annotationsAsObjects: true,
121697
- includeProteinSequence: true
121858
+ includeProteinSequence: true,
121859
+ getAcceptedInsertChars
121698
121860
  }
121699
121861
  );
121700
121862
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
@@ -121712,7 +121874,8 @@ function VectorInteractionHOC(Component2) {
121712
121874
  e,
121713
121875
  tidyUpSequenceData(seqData, {
121714
121876
  doNotRemoveInvalidChars: true,
121715
- annotationsAsObjects: true
121877
+ annotationsAsObjects: true,
121878
+ getAcceptedInsertChars
121716
121879
  }),
121717
121880
  this.props
121718
121881
  );
@@ -121762,6 +121925,7 @@ function VectorInteractionHOC(Component2) {
121762
121925
  readOnly: readOnly2,
121763
121926
  disableBpEditing,
121764
121927
  maxInsertSize,
121928
+ getAcceptedInsertChars,
121765
121929
  showAminoAcidUnitAsCodon
121766
121930
  } = this.props;
121767
121931
  const sequenceLength = sequenceData2.sequence.length;
@@ -121781,6 +121945,7 @@ function VectorInteractionHOC(Component2) {
121781
121945
  sequenceLength,
121782
121946
  caretPosition: caretPosition2,
121783
121947
  maxInsertSize,
121948
+ getAcceptedInsertChars,
121784
121949
  showAminoAcidUnitAsCodon,
121785
121950
  handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
121786
121951
  yield insertAndSelectHelper({
@@ -127473,6 +127638,30 @@ const sizeSchema = /* @__PURE__ */ __name((isProtein2) => ({
127473
127638
  }) : /* @__PURE__ */ React__default.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
127474
127639
  }, "render")
127475
127640
  }), "sizeSchema");
127641
+ const getMemoOrfs = /* @__PURE__ */ (() => {
127642
+ let lastDeps;
127643
+ let lastResult;
127644
+ return (editorState) => {
127645
+ const {
127646
+ sequenceData: sequenceData2,
127647
+ minimumOrfSize: minimumOrfSize2,
127648
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
127649
+ } = editorState;
127650
+ const { sequence: sequence2, circular: circular2 } = sequenceData2;
127651
+ const deps = {
127652
+ sequence: sequence2,
127653
+ circular: circular2,
127654
+ minimumOrfSize: minimumOrfSize2,
127655
+ useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
127656
+ };
127657
+ if (lastResult && isEqual$3(deps, lastDeps)) {
127658
+ return lastResult;
127659
+ }
127660
+ lastResult = selectors.orfsSelector(editorState);
127661
+ lastDeps = deps;
127662
+ return lastResult;
127663
+ };
127664
+ })();
127476
127665
  var lodash$1 = { exports: {} };
127477
127666
  /**
127478
127667
  * @license
@@ -138028,10 +138217,16 @@ function GlobalDialog(props) {
138028
138217
  hideDialog();
138029
138218
  };
138030
138219
  }, []);
138220
+ useEffect(() => {
138221
+ dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
138222
+ if (editorName) {
138223
+ const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
138224
+ slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
138225
+ }
138226
+ }, [editorName]);
138031
138227
  if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
138032
138228
  return null;
138033
138229
  }
138034
- dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
138035
138230
  const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
138036
138231
  if (!Comp) return null;
138037
138232
  return /* @__PURE__ */ React__default.createElement(
@@ -142795,6 +142990,8 @@ const userDefinedHandlersAndOpts = [
142795
142990
  "enzymeManageOverride",
142796
142991
  "enzymeGroupsOverride",
142797
142992
  "additionalEnzymes",
142993
+ "getAcceptedInsertChars",
142994
+ "maxInsertSize",
142798
142995
  "onDelete",
142799
142996
  "onCopy",
142800
142997
  "autoAnnotateFeatures",
@@ -144568,7 +144765,7 @@ const OrfProperties$1 = compose(
144568
144765
  readOnly: readOnly2,
144569
144766
  annotationVisibility: annotationVisibility2,
144570
144767
  useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
144571
- orfs: selectors.orfsSelector(editorState),
144768
+ orfs: getMemoOrfs(editorState),
144572
144769
  sequenceLength: sequence2.length,
144573
144770
  sequenceData: sequenceData2,
144574
144771
  minimumOrfSize: minimumOrfSize2
@@ -144758,7 +144955,7 @@ const TranslationProperties$1 = compose(
144758
144955
  return {
144759
144956
  readOnly: readOnly2,
144760
144957
  translations: selectors.translationsSelector(editorState),
144761
- orfs: selectors.orfsSelector(editorState),
144958
+ orfs: getMemoOrfs(editorState),
144762
144959
  annotationVisibility: annotationVisibility2,
144763
144960
  sequenceLength: (sequenceData2.sequence || "").length,
144764
144961
  sequenceData: sequenceData2
@@ -146043,6 +146240,7 @@ const _Editor = class _Editor extends React__default.Component {
146043
146240
  hoveredId,
146044
146241
  isFullscreen,
146045
146242
  maxInsertSize,
146243
+ getAcceptedInsertChars,
146046
146244
  showAminoAcidUnitAsCodon,
146047
146245
  maxAnnotationsToDisplay,
146048
146246
  minHeight = 400,
@@ -146232,6 +146430,7 @@ const _Editor = class _Editor extends React__default.Component {
146232
146430
  }), panelPropsToSpread), {
146233
146431
  editorName,
146234
146432
  maxInsertSize,
146433
+ getAcceptedInsertChars,
146235
146434
  showAminoAcidUnitAsCodon,
146236
146435
  isProtein: sequenceData2.isProtein,
146237
146436
  onlyShowLabelsThatDoNotFit,