@teselagen/ove 0.3.10 → 0.3.12

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.
Files changed (148) hide show
  1. package/index.js +453 -319
  2. package/index.mjs +453 -319
  3. package/index.umd.js +397 -287
  4. package/package.json +2 -2
  5. package/src/AlignmentView/AlignmentVisibilityTool.js +1 -1
  6. package/src/AlignmentView/EditTrackNameDialog.js +1 -5
  7. package/src/AlignmentView/HorizontalPanelDragHandle.js +2 -2
  8. package/src/AlignmentView/Minimap.js +12 -12
  9. package/src/AlignmentView/PairwiseAlignmentView.js +1 -1
  10. package/src/AlignmentView/getGapMap.js +1 -1
  11. package/src/AlignmentView/getTrackFromEvent.js +1 -1
  12. package/src/AlignmentView/index.js +32 -37
  13. package/src/AutoAnnotate.js +48 -48
  14. package/src/CircularView/Cutsites.js +3 -3
  15. package/src/CircularView/Labels/index.js +7 -7
  16. package/src/CircularView/Labels/relaxLabels_DEPRECATED.js +5 -5
  17. package/src/CircularView/RotateCircularViewSlider.js +1 -1
  18. package/src/CircularView/SelectionLayer.js +2 -2
  19. package/src/CircularView/drawAnnotations.js +3 -3
  20. package/src/CircularView/getAngleForPositionMidpoint.js +1 -1
  21. package/src/CircularView/index.d.ts +11 -11
  22. package/src/CircularView/index.js +9 -9
  23. package/src/CreateAnnotationsPage.js +7 -5
  24. package/src/CreateCustomEnzyme/index.js +1 -5
  25. package/src/CutsiteFilter/AdditionalCutsiteInfoDialog.js +11 -11
  26. package/src/CutsiteFilter/index.js +12 -12
  27. package/src/DigestTool/AddLaddersDialog.js +1 -1
  28. package/src/DigestTool/DigestTool.js +3 -3
  29. package/src/DigestTool/Ladder.js +8 -8
  30. package/src/DigestTool/ladderDefaults.js +1 -2
  31. package/src/Editor/CommandHotkeyHandler.js +1 -1
  32. package/src/Editor/DropHandler.js +2 -2
  33. package/src/Editor/index.js +14 -14
  34. package/src/Editor/userDefinedHandlersAndOpts.js +2 -0
  35. package/src/FindBar/index.js +6 -6
  36. package/src/GlobalDialogUtils.js +6 -0
  37. package/src/LinearView/ZoomLinearView.js +1 -1
  38. package/src/LinearView/index.js +7 -7
  39. package/src/MenuBar/index.js +1 -1
  40. package/src/MenuBar/viewSubmenu.js +1 -1
  41. package/src/PCRTool/PCRTool.js +19 -19
  42. package/src/Reflex/Browser.js +4 -5
  43. package/src/Reflex/ReflexContainer.js +3 -3
  44. package/src/Reflex/ReflexElement.js +2 -2
  45. package/src/RowItem/Axis.js +1 -1
  46. package/src/RowItem/Caret/index.js +1 -1
  47. package/src/RowItem/Chromatograms/Chromatogram.js +3 -3
  48. package/src/RowItem/CutsiteSelectionLayers.js +1 -1
  49. package/src/RowItem/Cutsites.js +1 -1
  50. package/src/RowItem/Labels.js +2 -2
  51. package/src/RowItem/Orfs.js +2 -2
  52. package/src/RowItem/Sequence.js +4 -4
  53. package/src/RowItem/StackedAnnotations/PointedAnnotation.js +3 -3
  54. package/src/RowItem/StackedAnnotations/getStructuredBases.js +1 -1
  55. package/src/RowItem/Translations/AASliver.js +71 -75
  56. package/src/RowItem/Translations/index.js +1 -1
  57. package/src/RowItem/getCutsiteLabelHeights.js +1 -1
  58. package/src/RowItem/index.js +14 -8
  59. package/src/RowView/estimateRowHeight.js +5 -5
  60. package/src/RowView/index.d.ts +7 -7
  61. package/src/RowView/index.js +11 -12
  62. package/src/SimpleCircularOrLinearView.js +6 -6
  63. package/src/StatusBar/MeltingTemp.js +3 -3
  64. package/src/ToolBar/ToolbarItem.js +2 -2
  65. package/src/ToolBar/alignmentTool.js +9 -9
  66. package/src/ToolBar/editTool.js +1 -1
  67. package/src/ToolBar/findTool.js +2 -2
  68. package/src/ToolBar/importTool.js +1 -1
  69. package/src/ToolBar/index.js +2 -2
  70. package/src/ToolBar/oligoTool.js +1 -1
  71. package/src/ToolBar/orfTool.js +1 -6
  72. package/src/ToolBar/printTool.js +2 -2
  73. package/src/ToolBar/visibilityTool.js +1 -1
  74. package/src/VersionHistoryView/index.js +2 -2
  75. package/src/commands/index.js +236 -230
  76. package/src/createVectorEditor/index.js +4 -4
  77. package/src/fileUtils.js +18 -18
  78. package/src/helperComponents/AddOrEditAnnotationDialog/index.js +22 -15
  79. package/src/helperComponents/AddOrEditFeatureDialog/index.js +2 -2
  80. package/src/helperComponents/AddOrEditPartDialog/index.js +2 -2
  81. package/src/helperComponents/AddOrEditPrimerDialog/index.js +5 -5
  82. package/src/helperComponents/EnzymesDialog/index.js +17 -22
  83. package/src/helperComponents/GoToDialog.js +5 -1
  84. package/src/helperComponents/MergeFeaturesDialog/index.js +3 -3
  85. package/src/helperComponents/PinchHelper/PinchHelper.js +1 -1
  86. package/src/helperComponents/PrintDialog/index.js +4 -4
  87. package/src/helperComponents/PropertiesDialog/CutsiteProperties.js +3 -3
  88. package/src/helperComponents/PropertiesDialog/GenbankView.js +1 -1
  89. package/src/helperComponents/PropertiesDialog/GeneralProperties.js +5 -5
  90. package/src/helperComponents/PropertiesDialog/GenericAnnotationProperties.js +136 -138
  91. package/src/helperComponents/PropertiesDialog/OrfProperties.js +3 -3
  92. package/src/helperComponents/PropertiesDialog/PrimerProperties.js +1 -1
  93. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +2 -2
  94. package/src/helperComponents/PropertiesDialog/index.js +3 -3
  95. package/src/helperComponents/RemoveDuplicates/index.js +3 -3
  96. package/src/helperComponents/SelectDialog.js +3 -3
  97. package/src/helperComponents/UncontrolledSliderWithPlusMinusBtns.js +5 -5
  98. package/src/helperComponents/createSimpleDialog.js +1 -1
  99. package/src/helperComponents/partTagSearch.js +2 -5
  100. package/src/helperComponents/withHover.js +3 -3
  101. package/src/redux/alignments.js +6 -6
  102. package/src/redux/annotationVisibility.js +4 -4
  103. package/src/redux/featureLengthsToHide.js +1 -1
  104. package/src/redux/frameTranslations.js +3 -3
  105. package/src/redux/middleware.js +2 -2
  106. package/src/redux/panelsShown.js +19 -19
  107. package/src/redux/partLengthsToHide.js +1 -1
  108. package/src/redux/primerLengthsToHide.js +1 -1
  109. package/src/redux/readOnly.js +1 -4
  110. package/src/redux/selectionLayer.js +1 -1
  111. package/src/redux/sequenceData/features.js +1 -1
  112. package/src/redux/sequenceData/upsertDeleteActionGenerator.js +1 -1
  113. package/src/redux/sequenceDataHistory.js +5 -5
  114. package/src/redux/toolBar.js +2 -4
  115. package/src/redux/utils/createMetaAction.js +2 -2
  116. package/src/redux/versionHistory.js +1 -2
  117. package/src/selectors/annotationSearchSelector.js +4 -4
  118. package/src/selectors/circularSelector.js +1 -1
  119. package/src/selectors/cutsiteLabelColorSelector.js +1 -1
  120. package/src/selectors/filteredCutsitesSelector.js +6 -6
  121. package/src/selectors/filteredFeaturesSelector.js +4 -4
  122. package/src/selectors/filteredPartsSelector.js +5 -5
  123. package/src/selectors/filteredPrimersSelector.js +3 -3
  124. package/src/selectors/isEnzymeFilterAndSelector.js +1 -1
  125. package/src/selectors/orfsSelector.js +1 -1
  126. package/src/selectors/restrictionEnzymesSelector.js +2 -2
  127. package/src/selectors/searchLayersSelector.js +7 -7
  128. package/src/selectors/sequenceLengthSelector.js +1 -1
  129. package/src/selectors/sequenceSelector.js +1 -1
  130. package/src/selectors/tagsToBoldSelector.js +1 -1
  131. package/src/selectors/translationsSelector.js +7 -7
  132. package/src/updateEditor.js +1 -1
  133. package/src/utils/PassThrough.js +1 -1
  134. package/src/utils/addWrappedAddons.js +1 -1
  135. package/src/utils/annotationTypes.js +2 -2
  136. package/src/utils/combineReducersDontIgnoreKeys.js +1 -1
  137. package/src/utils/editorUtils.js +2 -2
  138. package/src/utils/massageTickSpacing.js +1 -1
  139. package/src/utils/onlyUpdateForKeysDeep.js +1 -1
  140. package/src/utils/pureNoFunc.js +1 -1
  141. package/src/utils/shouldRerender.js +1 -1
  142. package/src/utils/showFileDialog.js +6 -7
  143. package/src/utils/updateLabelsForInViewFeatures.js +1 -1
  144. package/src/utils/useAnnotationLimits.js +1 -1
  145. package/src/withEditorInteractions/Keyboard.js +2 -3
  146. package/src/withEditorInteractions/createSequenceInputPopup.js +4 -4
  147. package/src/withEditorInteractions/index.js +93 -55
  148. package/src/withEditorProps/index.js +40 -37
package/index.umd.js CHANGED
@@ -57061,17 +57061,17 @@
57061
57061
  throw TypeError("Can't convert object to primitive value");
57062
57062
  };
57063
57063
 
57064
- var anObject$3 = _anObject;
57064
+ var anObject$5 = _anObject;
57065
57065
  var IE8_DOM_DEFINE$1 = _ie8DomDefine;
57066
57066
  var toPrimitive$2 = _toPrimitive$1;
57067
- var dP$2 = Object.defineProperty;
57067
+ var dP$3 = Object.defineProperty;
57068
57068
 
57069
57069
  _objectDp.f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
57070
- anObject$3(O);
57070
+ anObject$5(O);
57071
57071
  P = toPrimitive$2(P, true);
57072
- anObject$3(Attributes);
57072
+ anObject$5(Attributes);
57073
57073
  if (IE8_DOM_DEFINE$1) try {
57074
- return dP$2(O, P, Attributes);
57074
+ return dP$3(O, P, Attributes);
57075
57075
  } catch (e) { /* empty */ }
57076
57076
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
57077
57077
  if ('value' in Attributes) O[P] = Attributes.value;
@@ -57087,10 +57087,10 @@
57087
57087
  };
57088
57088
  };
57089
57089
 
57090
- var dP$1 = _objectDp;
57090
+ var dP$2 = _objectDp;
57091
57091
  var createDesc$3 = _propertyDesc;
57092
57092
  var _hide = _descriptors ? function (object, key, value) {
57093
- return dP$1.f(object, key, createDesc$3(1, value));
57093
+ return dP$2.f(object, key, createDesc$3(1, value));
57094
57094
  } : function (object, key, value) {
57095
57095
  object[key] = value;
57096
57096
  return object;
@@ -57106,7 +57106,7 @@
57106
57106
  var ctx$1 = _ctx;
57107
57107
  var hide$2 = _hide;
57108
57108
  var has$d = _has;
57109
- var PROTOTYPE$1 = 'prototype';
57109
+ var PROTOTYPE$2 = 'prototype';
57110
57110
 
57111
57111
  var $export$8 = function (type, name, source) {
57112
57112
  var IS_FORCED = type & $export$8.F;
@@ -57116,8 +57116,8 @@
57116
57116
  var IS_BIND = type & $export$8.B;
57117
57117
  var IS_WRAP = type & $export$8.W;
57118
57118
  var exports = IS_GLOBAL ? core$3 : core$3[name] || (core$3[name] = {});
57119
- var expProto = exports[PROTOTYPE$1];
57120
- var target = IS_GLOBAL ? global$4 : IS_STATIC ? global$4[name] : (global$4[name] || {})[PROTOTYPE$1];
57119
+ var expProto = exports[PROTOTYPE$2];
57120
+ var target = IS_GLOBAL ? global$4 : IS_STATIC ? global$4[name] : (global$4[name] || {})[PROTOTYPE$2];
57121
57121
  var key, own, out;
57122
57122
  if (IS_GLOBAL) source = name;
57123
57123
  for (key in source) {
@@ -57141,7 +57141,7 @@
57141
57141
  } return new C(a, b, c);
57142
57142
  } return C.apply(this, arguments);
57143
57143
  };
57144
- F[PROTOTYPE$1] = C[PROTOTYPE$1];
57144
+ F[PROTOTYPE$2] = C[PROTOTYPE$2];
57145
57145
  return F;
57146
57146
  // make static versions for prototype methods
57147
57147
  })(out) : IS_PROTO && typeof out == 'function' ? ctx$1(Function.call, out) : out;
@@ -57170,20 +57170,12 @@
57170
57170
  return toString$4.call(it).slice(8, -1);
57171
57171
  };
57172
57172
 
57173
- var _iobject;
57174
- var hasRequired_iobject;
57175
-
57176
- function require_iobject () {
57177
- if (hasRequired_iobject) return _iobject;
57178
- hasRequired_iobject = 1;
57179
- // fallback for non-array-like ES3 and non-enumerable old V8 strings
57180
- var cof = _cof;
57181
- // eslint-disable-next-line no-prototype-builtins
57182
- _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
57183
- return cof(it) == 'String' ? it.split('') : Object(it);
57184
- };
57185
- return _iobject;
57186
- }
57173
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
57174
+ var cof$2 = _cof;
57175
+ // eslint-disable-next-line no-prototype-builtins
57176
+ var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
57177
+ return cof$2(it) == 'String' ? it.split('') : Object(it);
57178
+ };
57187
57179
 
57188
57180
  // 7.2.1 RequireObjectCoercible(argument)
57189
57181
  var _defined = function (it) {
@@ -57192,7 +57184,7 @@
57192
57184
  };
57193
57185
 
57194
57186
  // to indexed object, toObject with fallback for non-array-like ES3 strings
57195
- var IObject = require_iobject();
57187
+ var IObject = _iobject;
57196
57188
  var defined$2 = _defined;
57197
57189
  var _toIobject = function (it) {
57198
57190
  return IObject(defined$2(it));
@@ -57278,14 +57270,14 @@
57278
57270
  var has$c = _has;
57279
57271
  var toIObject$4 = _toIobject;
57280
57272
  var arrayIndexOf = _arrayIncludes$1(false);
57281
- var IE_PROTO$1 = _sharedKey('IE_PROTO');
57273
+ var IE_PROTO$2 = _sharedKey('IE_PROTO');
57282
57274
 
57283
57275
  var _objectKeysInternal = function (object, names) {
57284
57276
  var O = toIObject$4(object);
57285
57277
  var i = 0;
57286
57278
  var result = [];
57287
57279
  var key;
57288
- for (key in O) if (key != IE_PROTO$1) has$c(O, key) && result.push(key);
57280
+ for (key in O) if (key != IE_PROTO$2) has$c(O, key) && result.push(key);
57289
57281
  // Don't enum bug & hidden keys
57290
57282
  while (names.length > i) if (has$c(O, key = names[i++])) {
57291
57283
  ~arrayIndexOf(result, key) || result.push(key);
@@ -57300,10 +57292,10 @@
57300
57292
 
57301
57293
  // 19.1.2.14 / 15.2.3.14 Object.keys(O)
57302
57294
  var $keys$3 = _objectKeysInternal;
57303
- var enumBugKeys = _enumBugKeys;
57295
+ var enumBugKeys$1 = _enumBugKeys;
57304
57296
 
57305
57297
  var _objectKeys = Object.keys || function keys(O) {
57306
- return $keys$3(O, enumBugKeys);
57298
+ return $keys$3(O, enumBugKeys$1);
57307
57299
  };
57308
57300
 
57309
57301
  var _objectGops = {};
@@ -57339,7 +57331,7 @@
57339
57331
  var gOPS = _objectGops;
57340
57332
  var pIE = require_objectPie();
57341
57333
  var toObject = _toObject;
57342
- var IObject = require_iobject();
57334
+ var IObject = _iobject;
57343
57335
  var $assign = Object.assign;
57344
57336
 
57345
57337
  // should work with symbols and should have deterministic property order (V8 bug)
@@ -57410,27 +57402,19 @@
57410
57402
 
57411
57403
  var _redefine = _hide;
57412
57404
 
57413
- var _objectDps;
57414
- var hasRequired_objectDps;
57415
-
57416
- function require_objectDps () {
57417
- if (hasRequired_objectDps) return _objectDps;
57418
- hasRequired_objectDps = 1;
57419
- var dP = _objectDp;
57420
- var anObject = _anObject;
57421
- var getKeys = _objectKeys;
57405
+ var dP$1 = _objectDp;
57406
+ var anObject$4 = _anObject;
57407
+ var getKeys$1 = _objectKeys;
57422
57408
 
57423
- _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
57424
- anObject(O);
57425
- var keys = getKeys(Properties);
57426
- var length = keys.length;
57427
- var i = 0;
57428
- var P;
57429
- while (length > i) dP.f(O, P = keys[i++], Properties[P]);
57430
- return O;
57431
- };
57432
- return _objectDps;
57433
- }
57409
+ var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
57410
+ anObject$4(O);
57411
+ var keys = getKeys$1(Properties);
57412
+ var length = keys.length;
57413
+ var i = 0;
57414
+ var P;
57415
+ while (length > i) dP$1.f(O, P = keys[i++], Properties[P]);
57416
+ return O;
57417
+ };
57434
57418
 
57435
57419
  var _html;
57436
57420
  var hasRequired_html;
@@ -57443,55 +57427,47 @@
57443
57427
  return _html;
57444
57428
  }
57445
57429
 
57446
- var _objectCreate;
57447
- var hasRequired_objectCreate;
57430
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
57431
+ var anObject$3 = _anObject;
57432
+ var dPs = _objectDps;
57433
+ var enumBugKeys = _enumBugKeys;
57434
+ var IE_PROTO$1 = _sharedKey('IE_PROTO');
57435
+ var Empty = function () { /* empty */ };
57436
+ var PROTOTYPE$1 = 'prototype';
57448
57437
 
57449
- function require_objectCreate () {
57450
- if (hasRequired_objectCreate) return _objectCreate;
57451
- hasRequired_objectCreate = 1;
57452
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
57453
- var anObject = _anObject;
57454
- var dPs = require_objectDps();
57455
- var enumBugKeys = _enumBugKeys;
57456
- var IE_PROTO = _sharedKey('IE_PROTO');
57457
- var Empty = function () { /* empty */ };
57458
- var PROTOTYPE = 'prototype';
57459
-
57460
- // Create object with fake `null` prototype: use iframe Object with cleared prototype
57461
- var createDict = function () {
57462
- // Thrash, waste and sodomy: IE GC bug
57463
- var iframe = require_domCreate()('iframe');
57464
- var i = enumBugKeys.length;
57465
- var lt = '<';
57466
- var gt = '>';
57467
- var iframeDocument;
57468
- iframe.style.display = 'none';
57469
- require_html().appendChild(iframe);
57470
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
57471
- // createDict = iframe.contentWindow.Object;
57472
- // html.removeChild(iframe);
57473
- iframeDocument = iframe.contentWindow.document;
57474
- iframeDocument.open();
57475
- iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
57476
- iframeDocument.close();
57477
- createDict = iframeDocument.F;
57478
- while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
57479
- return createDict();
57480
- };
57481
-
57482
- _objectCreate = Object.create || function create(O, Properties) {
57483
- var result;
57484
- if (O !== null) {
57485
- Empty[PROTOTYPE] = anObject(O);
57486
- result = new Empty();
57487
- Empty[PROTOTYPE] = null;
57488
- // add "__proto__" for Object.getPrototypeOf polyfill
57489
- result[IE_PROTO] = O;
57490
- } else result = createDict();
57491
- return Properties === undefined ? result : dPs(result, Properties);
57492
- };
57493
- return _objectCreate;
57494
- }
57438
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
57439
+ var createDict = function () {
57440
+ // Thrash, waste and sodomy: IE GC bug
57441
+ var iframe = require_domCreate()('iframe');
57442
+ var i = enumBugKeys.length;
57443
+ var lt = '<';
57444
+ var gt = '>';
57445
+ var iframeDocument;
57446
+ iframe.style.display = 'none';
57447
+ require_html().appendChild(iframe);
57448
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
57449
+ // createDict = iframe.contentWindow.Object;
57450
+ // html.removeChild(iframe);
57451
+ iframeDocument = iframe.contentWindow.document;
57452
+ iframeDocument.open();
57453
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
57454
+ iframeDocument.close();
57455
+ createDict = iframeDocument.F;
57456
+ while (i--) delete createDict[PROTOTYPE$1][enumBugKeys[i]];
57457
+ return createDict();
57458
+ };
57459
+
57460
+ var _objectCreate = Object.create || function create(O, Properties) {
57461
+ var result;
57462
+ if (O !== null) {
57463
+ Empty[PROTOTYPE$1] = anObject$3(O);
57464
+ result = new Empty();
57465
+ Empty[PROTOTYPE$1] = null;
57466
+ // add "__proto__" for Object.getPrototypeOf polyfill
57467
+ result[IE_PROTO$1] = O;
57468
+ } else result = createDict();
57469
+ return Properties === undefined ? result : dPs(result, Properties);
57470
+ };
57495
57471
 
57496
57472
  var _wks = {exports: {}};
57497
57473
 
@@ -57517,7 +57493,7 @@
57517
57493
  if (it && !has$b(it = stat ? it : it.prototype, TAG$1)) def(it, TAG$1, { configurable: true, value: tag });
57518
57494
  };
57519
57495
 
57520
- var create$4 = require_objectCreate();
57496
+ var create$4 = _objectCreate;
57521
57497
  var descriptor = _propertyDesc;
57522
57498
  var setToStringTag$2 = _setToStringTag;
57523
57499
  var IteratorPrototype = {};
@@ -58160,7 +58136,7 @@
58160
58136
  var toIObject = _toIobject;
58161
58137
  var toPrimitive = _toPrimitive$1;
58162
58138
  var createDesc = _propertyDesc;
58163
- var _create$1 = require_objectCreate();
58139
+ var _create$1 = _objectCreate;
58164
58140
  var gOPNExt = _objectGopnExt;
58165
58141
  var $GOPD = _objectGopd;
58166
58142
  var $GOPS = _objectGops;
@@ -58470,7 +58446,7 @@
58470
58446
 
58471
58447
  var $export = _export;
58472
58448
  // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
58473
- $export($export.S, 'Object', { create: require_objectCreate() });
58449
+ $export($export.S, 'Object', { create: _objectCreate });
58474
58450
 
58475
58451
  var $Object = _coreExports.Object;
58476
58452
  var create$3 = function create(P, D) {
@@ -113756,13 +113732,7 @@
113756
113732
  return {};
113757
113733
  }
113758
113734
  const mergedOpts = getMergedOpts(topLevelOptions, ownProps);
113759
- const {
113760
- formName,
113761
- urlConnected,
113762
- history,
113763
- defaults,
113764
- onlyOneFilter
113765
- } = mergedOpts;
113735
+ const { formName, urlConnected, history, defaults, onlyOneFilter } = mergedOpts;
113766
113736
  function updateSearch(val) {
113767
113737
  setTimeout(function() {
113768
113738
  dispatch(change(formName, "reduxFormSearchInput", val || ""));
@@ -113801,12 +113771,7 @@
113801
113771
  action(...args, currentParams);
113802
113772
  };
113803
113773
  });
113804
- const {
113805
- variables,
113806
- selectedEntities,
113807
- mergedOpts,
113808
- ...restStateProps
113809
- } = stateProps;
113774
+ const { variables, selectedEntities, mergedOpts, ...restStateProps } = stateProps;
113810
113775
  const changeFormValue = (...args) => dispatchProps.dispatch(change(formName, ...args));
113811
113776
  const tableParams = {
113812
113777
  changeFormValue,
@@ -117702,7 +117667,9 @@
117702
117667
  return doNotTriggerClick();
117703
117668
  }
117704
117669
  const parentEl = r.current?.closest(".bp3-dialog-container");
117705
- const dialogs = document.querySelectorAll(".bp3-dialog-container");
117670
+ const dialogs = document.querySelectorAll(
117671
+ ".bp3-dialog-container"
117672
+ );
117706
117673
  const numDialogs = dialogs?.length;
117707
117674
  if (numDialogs > 1) {
117708
117675
  const topMostDialog = dialogs[numDialogs - 1];
@@ -118041,6 +118008,7 @@
118041
118008
  marginBottom: 10,
118042
118009
  marginLeft: 20,
118043
118010
  fontSize: 10
118011
+ /* color: Colors.RED1 */
118044
118012
  }
118045
118013
  },
118046
118014
  userMatchedHeader && [
@@ -120029,10 +119997,7 @@
120029
119997
  if (props.filesWIssues.length > 0) {
120030
119998
  const reduxFormEntitiesArray = [];
120031
119999
  const finishedFiles = props.filesWIssues.map((f, i) => {
120032
- const {
120033
- reduxFormEntities,
120034
- reduxFormCellValidation
120035
- } = formValueSelector(`editableCellTable-${i}`)(
120000
+ const { reduxFormEntities, reduxFormCellValidation } = formValueSelector(`editableCellTable-${i}`)(
120036
120001
  state,
120037
120002
  "reduxFormEntities",
120038
120003
  "reduxFormCellValidation"
@@ -132276,7 +132241,14 @@
132276
132241
  }
132277
132242
  }),
132278
132243
  branch(({ navTo }) => navTo, withRouter$1)
132279
- )(function({ navTo, context, staticContext, didMount, willUnmount, ...props }) {
132244
+ )(function({
132245
+ navTo,
132246
+ context,
132247
+ staticContext,
132248
+ didMount,
132249
+ willUnmount,
132250
+ ...props
132251
+ }) {
132280
132252
  let MenuItemComp = MenuItem;
132281
132253
  if (navTo) {
132282
132254
  MenuItemComp = MenuItemLink;
@@ -133334,11 +133306,7 @@
133334
133306
  return handlers;
133335
133307
  }
133336
133308
 
133337
- const withCommand = (mappings) => (WrappedComponent) => ({
133338
- cmd,
133339
- cmdOptions = {},
133340
- ...props
133341
- }) => {
133309
+ const withCommand = (mappings) => (WrappedComponent) => ({ cmd, cmdOptions = {}, ...props }) => {
133342
133310
  const mappedProps = {};
133343
133311
  Object.keys(mappings).forEach((k) => {
133344
133312
  mappedProps[k] = mappings[k] === "execute" ? (event) => cmd.execute({ event }) : typeof mappings[k] === "function" ? mappings[k](cmd, props) : cmd[mappings[k]];
@@ -134485,9 +134453,9 @@
134485
134453
  }
134486
134454
  },
134487
134455
  {
134488
- "1": false,
134489
- "2": false,
134490
- "3": false,
134456
+ 1: false,
134457
+ 2: false,
134458
+ 3: false,
134491
134459
  "-1": false,
134492
134460
  "-2": false,
134493
134461
  "-3": false
@@ -135216,9 +135184,14 @@
135216
135184
 
135217
135185
  function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
135218
135186
  return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(function(splitRange) {
135219
- return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(function(splitComparisonRange) {
135220
- return checkIfNonCircularRangesOverlap(splitRange, splitComparisonRange);
135221
- });
135187
+ return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(
135188
+ function(splitComparisonRange) {
135189
+ return checkIfNonCircularRangesOverlap(
135190
+ splitRange,
135191
+ splitComparisonRange
135192
+ );
135193
+ }
135194
+ );
135222
135195
  });
135223
135196
  }
135224
135197
 
@@ -135228,15 +135201,19 @@
135228
135201
  return overlaps;
135229
135202
  } else if (overlaps.length === 2) {
135230
135203
  if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
135231
- return [{
135232
- start: overlaps[1].start,
135233
- end: overlaps[0].end
135234
- }];
135204
+ return [
135205
+ {
135206
+ start: overlaps[1].start,
135207
+ end: overlaps[0].end
135208
+ }
135209
+ ];
135235
135210
  } else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
135236
- return [{
135237
- start: overlaps[0].start,
135238
- end: overlaps[1].end
135239
- }];
135211
+ return [
135212
+ {
135213
+ start: overlaps[0].start,
135214
+ end: overlaps[1].end
135215
+ }
135216
+ ];
135240
135217
  } else {
135241
135218
  return overlaps;
135242
135219
  }
@@ -135244,17 +135221,29 @@
135244
135221
  const firstOverlap = overlaps[0];
135245
135222
  const secondOverlap = overlaps[1];
135246
135223
  const thirdOverlap = overlaps[2];
135247
- let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, secondOverlap], sequenceLength, optionalOriginalRange);
135224
+ let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
135225
+ [firstOverlap, secondOverlap],
135226
+ sequenceLength,
135227
+ optionalOriginalRange
135228
+ );
135248
135229
  if (collapsedOverlaps.length === 1) {
135249
135230
  collapsedOverlaps.push(thirdOverlap);
135250
135231
  return collapsedOverlaps;
135251
135232
  } else {
135252
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
135233
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
135234
+ [firstOverlap, thirdOverlap],
135235
+ sequenceLength,
135236
+ optionalOriginalRange
135237
+ );
135253
135238
  if (collapsedOverlaps.length === 1) {
135254
135239
  collapsedOverlaps.push(secondOverlap);
135255
135240
  return collapsedOverlaps;
135256
135241
  } else {
135257
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([secondOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
135242
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
135243
+ [secondOverlap, thirdOverlap],
135244
+ sequenceLength,
135245
+ optionalOriginalRange
135246
+ );
135258
135247
  if (collapsedOverlaps.length === 1) {
135259
135248
  collapsedOverlaps.push(firstOverlap);
135260
135249
  return collapsedOverlaps;
@@ -135276,11 +135265,18 @@
135276
135265
  }
135277
135266
 
135278
135267
  function convertRangeTo0Based(range) {
135279
- return convertRangeIndices(range, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
135268
+ return convertRangeIndices(range, {
135269
+ inclusive1BasedStart: true,
135270
+ inclusive1BasedEnd: true
135271
+ });
135280
135272
  }
135281
135273
 
135282
135274
  function convertRangeTo1Based(range) {
135283
- return convertRangeIndices(range, {}, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
135275
+ return convertRangeIndices(
135276
+ range,
135277
+ {},
135278
+ { inclusive1BasedStart: true, inclusive1BasedEnd: true }
135279
+ );
135284
135280
  }
135285
135281
 
135286
135282
  function provideInclusiveOptions(funToWrap) {
@@ -135385,7 +135381,11 @@
135385
135381
  let endMoved = true;
135386
135382
  if (range.end >= position) {
135387
135383
  if (position + maxLength - range.start > range.end - position) {
135388
- newRange.end = normalizePositionByRangeLength(position - 1, maxLength, false);
135384
+ newRange.end = normalizePositionByRangeLength(
135385
+ position - 1,
135386
+ maxLength,
135387
+ false
135388
+ );
135389
135389
  } else {
135390
135390
  newRange.start = position;
135391
135391
  endMoved = false;
@@ -135458,19 +135458,31 @@
135458
135458
  if (range.start > range.end) {
135459
135459
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
135460
135460
  } else {
135461
- return expandOrContractNonCircularRangeToPosition(range, position);
135461
+ return expandOrContractNonCircularRangeToPosition(
135462
+ range,
135463
+ position);
135462
135464
  }
135463
135465
  }
135464
135466
 
135465
135467
  function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
135466
135468
  return lodashExports.assign({}, rangeToBeAdjusted, {
135467
- start: normalizePositionByRangeLength(rangeToBeAdjusted.start + translateBy, rangeLength),
135468
- end: normalizePositionByRangeLength(rangeToBeAdjusted.end + translateBy, rangeLength)
135469
+ start: normalizePositionByRangeLength(
135470
+ rangeToBeAdjusted.start + translateBy,
135471
+ rangeLength
135472
+ ),
135473
+ end: normalizePositionByRangeLength(
135474
+ rangeToBeAdjusted.end + translateBy,
135475
+ rangeLength
135476
+ )
135469
135477
  });
135470
135478
  }
135471
135479
 
135472
135480
  function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
135473
- const isFullyContained = isRangeWithinRange(innerRange, outerRange, sequenceLength);
135481
+ const isFullyContained = isRangeWithinRange(
135482
+ innerRange,
135483
+ outerRange,
135484
+ sequenceLength
135485
+ );
135474
135486
  if (isFullyContained) {
135475
135487
  return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
135476
135488
  } else {
@@ -135478,40 +135490,91 @@
135478
135490
  }
135479
135491
  }
135480
135492
  function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
135481
- const outerFullyContained = isRangeWithinRange(outerRange, innerRange, sequenceLength);
135493
+ const outerFullyContained = isRangeWithinRange(
135494
+ outerRange,
135495
+ innerRange,
135496
+ sequenceLength
135497
+ );
135482
135498
  let flippedInnerRange;
135483
135499
  if (outerFullyContained) {
135484
- const expandBy1 = getRangeLength({
135485
- start: innerRange.start,
135486
- end: outerRange.start
135487
- }, sequenceLength) - 1;
135488
- flippedInnerRange = expandOrContractRangeByLength(outerRange, expandBy1, false, sequenceLength);
135489
- const expandBy2 = getRangeLength({
135490
- end: innerRange.end,
135491
- start: outerRange.end
135492
- }, sequenceLength) - 1;
135493
- flippedInnerRange = expandOrContractRangeByLength(flippedInnerRange, expandBy2, true, sequenceLength);
135500
+ const expandBy1 = getRangeLength(
135501
+ {
135502
+ start: innerRange.start,
135503
+ end: outerRange.start
135504
+ },
135505
+ sequenceLength
135506
+ ) - 1;
135507
+ flippedInnerRange = expandOrContractRangeByLength(
135508
+ outerRange,
135509
+ expandBy1,
135510
+ false,
135511
+ sequenceLength
135512
+ );
135513
+ const expandBy2 = getRangeLength(
135514
+ {
135515
+ end: innerRange.end,
135516
+ start: outerRange.end
135517
+ },
135518
+ sequenceLength
135519
+ ) - 1;
135520
+ flippedInnerRange = expandOrContractRangeByLength(
135521
+ flippedInnerRange,
135522
+ expandBy2,
135523
+ true,
135524
+ sequenceLength
135525
+ );
135494
135526
  } else {
135495
- const overlaps = getOverlapsOfPotentiallyCircularRanges(innerRange, outerRange, sequenceLength);
135527
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
135528
+ innerRange,
135529
+ outerRange,
135530
+ sequenceLength
135531
+ );
135496
135532
  if (overlaps.length >= 1) {
135497
135533
  let overlapExtendsForward;
135498
135534
  const firstOverlap = overlaps[0];
135499
135535
  overlapExtendsForward = firstOverlap.start !== outerRange.start;
135500
- const flippedTruncatedInner = flipFullyContainedRange(firstOverlap, outerRange, sequenceLength);
135536
+ const flippedTruncatedInner = flipFullyContainedRange(
135537
+ firstOverlap,
135538
+ outerRange,
135539
+ sequenceLength
135540
+ );
135501
135541
  const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
135502
- flippedInnerRange = expandOrContractRangeByLength(flippedTruncatedInner, lengthToExtend, overlapExtendsForward, sequenceLength);
135542
+ flippedInnerRange = expandOrContractRangeByLength(
135543
+ flippedTruncatedInner,
135544
+ lengthToExtend,
135545
+ overlapExtendsForward,
135546
+ sequenceLength
135547
+ );
135503
135548
  } else {
135504
- throw new Error("This case (relative ranges that do not overlap) is unsupported! ");
135549
+ throw new Error(
135550
+ "This case (relative ranges that do not overlap) is unsupported! "
135551
+ );
135505
135552
  }
135506
135553
  }
135507
135554
  return flippedInnerRange;
135508
135555
  }
135509
135556
  function flipFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
135510
135557
  const translateBy = -outerRange.start;
135511
- const translatedOuterRange = translateRange(outerRange, translateBy, sequenceLength);
135512
- const translatedInnerRange = translateRange(innerRange, translateBy, sequenceLength);
135513
- const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(translatedInnerRange, translatedOuterRange, sequenceLength);
135514
- const flippedInnerRange = translateRange(translatedFlippedInnerRange, -translateBy, sequenceLength);
135558
+ const translatedOuterRange = translateRange(
135559
+ outerRange,
135560
+ translateBy,
135561
+ sequenceLength
135562
+ );
135563
+ const translatedInnerRange = translateRange(
135564
+ innerRange,
135565
+ translateBy,
135566
+ sequenceLength
135567
+ );
135568
+ const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
135569
+ translatedInnerRange,
135570
+ translatedOuterRange,
135571
+ sequenceLength
135572
+ );
135573
+ const flippedInnerRange = translateRange(
135574
+ translatedFlippedInnerRange,
135575
+ -translateBy,
135576
+ sequenceLength
135577
+ );
135515
135578
  return flippedInnerRange;
135516
135579
  }
135517
135580
  function flipNonOriginSpanningContainedRange(innerRange, outerRange, sequenceLength) {
@@ -135683,9 +135746,15 @@
135683
135746
  }
135684
135747
 
135685
135748
  function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
135686
- const trimmedSubRange = trimRangeByAnotherRange(subRange, containerRange, sequenceLength);
135749
+ const trimmedSubRange = trimRangeByAnotherRange(
135750
+ subRange,
135751
+ containerRange,
135752
+ sequenceLength
135753
+ );
135687
135754
  if (trimmedSubRange) {
135688
- throw new Error("subRange must be fully contained by containerRange! Otherwise this function does not make sense");
135755
+ throw new Error(
135756
+ "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
135757
+ );
135689
135758
  }
135690
135759
  const newSubrange = {};
135691
135760
  newSubrange.start = subRange.start - containerRange.start;
@@ -135712,12 +135781,24 @@
135712
135781
  }
135713
135782
 
135714
135783
  function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
135715
- const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(getOverlapsOfPotentiallyCircularRanges(annotation, selection, sequenceLength), sequenceLength, annotation);
135784
+ const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
135785
+ getOverlapsOfPotentiallyCircularRanges(
135786
+ annotation,
135787
+ selection,
135788
+ sequenceLength
135789
+ ),
135790
+ sequenceLength,
135791
+ annotation
135792
+ );
135716
135793
  const zeroedOverlaps = overlaps.map((overlap) => {
135717
- return zeroSubrangeByContainerRange(overlap, {
135718
- start: selection.start,
135719
- end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
135720
- }, sequenceLength);
135794
+ return zeroSubrangeByContainerRange(
135795
+ overlap,
135796
+ {
135797
+ start: selection.start,
135798
+ end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
135799
+ },
135800
+ sequenceLength
135801
+ );
135721
135802
  });
135722
135803
  return zeroedOverlaps;
135723
135804
  }
@@ -142423,7 +142504,7 @@
142423
142504
  calculateTemperature: function(sequence, type, A, R, C, Na) {
142424
142505
  if (typeof type === "undefined") {
142425
142506
  type = this.TABLE_BRESLAUER;
142426
- } else if (type != this.TABLE_BRESLAUER && (type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO)) {
142507
+ } else if (type != this.TABLE_BRESLAUER && type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO) {
142427
142508
  throw new Error("Invalid table type!");
142428
142509
  }
142429
142510
  if (!A) {
@@ -150682,12 +150763,7 @@
150682
150763
  return matches;
150683
150764
  }
150684
150765
  function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
150685
- const {
150686
- isCircular,
150687
- isAmbiguous,
150688
- isProteinSequence,
150689
- isProteinSearch
150690
- } = options;
150766
+ const { isCircular, isAmbiguous, isProteinSequence, isProteinSearch } = options;
150691
150767
  let searchStringToUse = escapeStringRegexp(searchString);
150692
150768
  if (isAmbiguous) {
150693
150769
  if (isProteinSearch || isProteinSequence) {
@@ -150769,7 +150845,10 @@
150769
150845
 
150770
150846
  function getComplementSequenceString(sequence, isRna) {
150771
150847
  let complementSeqString = "";
150772
- const complementMap = lodashExports.merge(DNAComplementMap, isRna ? { a: "u", A: "U" } : { a: "t", A: "T" });
150848
+ const complementMap = lodashExports.merge(
150849
+ DNAComplementMap,
150850
+ isRna ? { a: "u", A: "U" } : { a: "t", A: "T" }
150851
+ );
150773
150852
  for (let i = 0; i < sequence.length; i++) {
150774
150853
  let complementChar = complementMap[sequence[i]];
150775
150854
  if (!complementChar) {
@@ -151356,6 +151435,19 @@
151356
151435
  };
151357
151436
  }
151358
151437
 
151438
+ function extractFileExtension(name) {
151439
+ if (typeof name === "string") {
151440
+ let ext = "";
151441
+ const match = name.match(/\.(\w+)$/);
151442
+ if (match && match[1]) {
151443
+ ext = match[1];
151444
+ }
151445
+ return ext;
151446
+ } else {
151447
+ return "";
151448
+ }
151449
+ }
151450
+
151359
151451
  function splitStringIntoLines(string) {
151360
151452
  let lines = [];
151361
151453
  if (string === "") {
@@ -151929,7 +152021,11 @@
151929
152021
  return parsingResultArray;
151930
152022
  }
151931
152023
 
151932
- function fastaToJson(fileString, options) {
152024
+ function fastaToJson(fileString, options = {}) {
152025
+ const ext = extractFileExtension(options.fileName);
152026
+ if (/^(faa)$/.test(ext)) {
152027
+ options.isProtein = true;
152028
+ }
151933
152029
  let resultArray = [];
151934
152030
  let result = null;
151935
152031
  try {
@@ -154401,19 +154497,6 @@
154401
154497
  };
154402
154498
  }
154403
154499
 
154404
- function extractFileExtension(name) {
154405
- if (typeof name === "string") {
154406
- let ext = "";
154407
- const match = name.match(/\.(\w+)$/);
154408
- if (match && match[1]) {
154409
- ext = match[1];
154410
- }
154411
- return ext;
154412
- } else {
154413
- return "";
154414
- }
154415
- }
154416
-
154417
154500
  /*!
154418
154501
  * Copyright 2008 Fair Oaks Labs, Inc.
154419
154502
  * All rights reserved.
@@ -163436,10 +163519,7 @@
163436
163519
  });
163437
163520
  }
163438
163521
  });
163439
- const toRet = lodashExports.filter(
163440
- resultArray,
163441
- (r) => r?.parsedSequence?.sequence?.length
163442
- );
163522
+ const toRet = lodashExports.filter(resultArray, (r) => r?.parsedSequence?.sequence?.length);
163443
163523
  if (toRet.length)
163444
163524
  return toRet;
163445
163525
  return onFileParsed(resultArray);
@@ -163541,10 +163621,7 @@
163541
163621
  messages: ["Error while parsing JBEI format"]
163542
163622
  });
163543
163623
  }
163544
- const toRet = lodashExports.filter(
163545
- resultArray,
163546
- (r) => r?.parsedSequence?.sequence?.length
163547
- );
163624
+ const toRet = lodashExports.filter(resultArray, (r) => r?.parsedSequence?.sequence?.length);
163548
163625
  if (toRet.length)
163549
163626
  return toRet;
163550
163627
  return onFileParsed(resultArray);
@@ -164130,7 +164207,7 @@
164130
164207
  );
164131
164208
  }
164132
164209
  }
164133
- if (/^(fasta|fas|fa|fna|ffn)$/.test(ext)) {
164210
+ if (/^(fasta|fas|fa|fna|ffn|faa)$/.test(ext)) {
164134
164211
  return fastaToJson(fileContentString, options);
164135
164212
  } else if (/^(gb|gbk)$/.test(ext)) {
164136
164213
  return genbankToJson(fileContentString, options);
@@ -166819,10 +166896,7 @@
166819
166896
  lastSavedIdUpdate
166820
166897
  }, Symbol.toStringTag, { value: 'Module' }));
166821
166898
 
166822
- const toggleReadOnlyMode = createMetaAction(
166823
- "TOGGLE_READ_ONLY_MODE",
166824
- lodashExports.noop
166825
- );
166899
+ const toggleReadOnlyMode = createMetaAction("TOGGLE_READ_ONLY_MODE", lodashExports.noop);
166826
166900
  const updateReadOnlyMode = createMetaAction("UPDATE_READ_ONLY_MODE");
166827
166901
  const readOnly = createReducer(
166828
166902
  {
@@ -169801,6 +169875,9 @@
169801
169875
  overrideName: `AddOrEdit${nameUpper}DialogOverride`,
169802
169876
  dialogType,
169803
169877
  props: {
169878
+ ...annotation.isEditLocked && {
169879
+ readOnly: typeof annotation.isEditLocked === "string" ? annotation.isEditLocked : "This annotation is locked"
169880
+ },
169804
169881
  dialogProps: {
169805
169882
  title: annotation && annotation.id ? `Edit ${nameUpper}` : `New ${nameUpper}`
169806
169883
  },
@@ -170442,7 +170519,8 @@
170442
170519
  editorName,
170443
170520
  sequenceData: sequenceDataFromProps,
170444
170521
  allowSeqDataOverride,
170445
- allowMultipleFeatureDirections
170522
+ allowMultipleFeatureDirections,
170523
+ readOnly
170446
170524
  } = ownProps;
170447
170525
  const editorState = getEditorState(state, editorName);
170448
170526
  const meta = { editorName };
@@ -170502,6 +170580,7 @@
170502
170580
  const f = getFindTool(findTool, matchesTotal);
170503
170581
  return {
170504
170582
  ...editorState,
170583
+ readOnly: readOnly || editorState.readOnly,
170505
170584
  meta,
170506
170585
  annotationToAdd,
170507
170586
  ...newSelection && { selectionLayer: newSelection },
@@ -188648,7 +188727,7 @@ double click --> edit`}`;
188648
188727
  }
188649
188728
 
188650
188729
  const name = "@teselagen/ove";
188651
- const version = "0.3.9";
188730
+ const version = "0.3.11";
188652
188731
  const main = "./src/index.js";
188653
188732
  const exports$1 = {
188654
188733
  ".": {
@@ -189258,7 +189337,7 @@ double click --> edit`}`;
189258
189337
  isHidden: isProtein
189259
189338
  },
189260
189339
  deleteSequence: {
189261
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || !props.onDelete,
189340
+ isDisabled: (props) => props.disableBpEditing && bpEditingDisabledTooltip || props.readOnly && readOnlyDisabledTooltip || !props.onDelete,
189262
189341
  isHidden: (props) => !props.onDelete,
189263
189342
  handler: (props) => props.onDelete(props.sequenceData)
189264
189343
  },
@@ -189457,6 +189536,7 @@ double click --> edit`}`;
189457
189536
  };
189458
189537
  });
189459
189538
  const readOnlyDisabledTooltip = "Sorry this function is not allowed in Read-Only Mode";
189539
+ const bpEditingDisabledTooltip = "Sequence Editing Disabled";
189460
189540
  const noSelection = ({ selectionLayer = {} }) => !(selectionLayer.start > -1 && selectionLayer.end > -1) && "Selection Required";
189461
189541
  const triggerClipboardCommand = (type) => {
189462
189542
  const wrapper = document.querySelector(".veVectorInteractionWrapper");
@@ -189488,8 +189568,8 @@ double click --> edit`}`;
189488
189568
  handler: lodashExports.noop
189489
189569
  },
189490
189570
  cut: {
189491
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
189492
- isHidden: (props) => props.readOnly,
189571
+ isDisabled: (props) => props.disableBpEditing && bpEditingDisabledTooltip || props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
189572
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
189493
189573
  handler: () => {
189494
189574
  triggerClipboardCommand("cut");
189495
189575
  },
@@ -189514,7 +189594,7 @@ double click --> edit`}`;
189514
189594
  },
189515
189595
  paste: {
189516
189596
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
189517
- isHidden: (props) => props.readOnly,
189597
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
189518
189598
  handler: () => triggerClipboardCommand("paste"),
189519
189599
  hotkey: "mod+v"
189520
189600
  },
@@ -189668,12 +189748,12 @@ double click --> edit`}`;
189668
189748
  hotkey: "mod+i"
189669
189749
  },
189670
189750
  complementSelection: {
189671
- isHidden: (props) => props.readOnly || isProtein(props),
189751
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
189672
189752
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props),
189673
189753
  handler: (props) => props.handleComplementSelection()
189674
189754
  },
189675
189755
  complementEntireSequence: {
189676
- isHidden: (props) => props.readOnly || isProtein(props),
189756
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
189677
189757
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
189678
189758
  handler: (props) => props.handleComplementSequence()
189679
189759
  },
@@ -189825,13 +189905,13 @@ double click --> edit`}`;
189825
189905
  // }
189826
189906
  // },
189827
189907
  reverseComplementSelection: {
189828
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props),
189908
+ isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props) || props.disableBpEditing,
189829
189909
  isHidden: (props) => props.readOnly || isProtein(props),
189830
189910
  handler: (props) => props.handleReverseComplementSelection(),
189831
189911
  hotkey: "mod+e"
189832
189912
  },
189833
189913
  reverseComplementEntireSequence: {
189834
- isHidden: (props) => props.readOnly || isProtein(props),
189914
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
189835
189915
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
189836
189916
  handler: (props) => props.handleReverseComplementSequence()
189837
189917
  },
@@ -189981,7 +190061,7 @@ double click --> edit`}`;
189981
190061
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0
189982
190062
  },
189983
190063
  rotateToCaretPosition: {
189984
- isHidden: (props) => props.readOnly || isProtein(props),
190064
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
189985
190065
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.caretPosition === -1 && "You must first place cursor" || !props.sequenceData.circular && "Disabled for Linear Sequences" || props.sequenceLength === 0,
189986
190066
  handler: (props) => props.handleRotateToCaretPosition(),
189987
190067
  hotkey: "mod+b"
@@ -189990,13 +190070,13 @@ double click --> edit`}`;
189990
190070
  };
189991
190071
  const cirularityCommandDefs = {
189992
190072
  circular: {
189993
- isHidden: (props) => props.readOnly || isProtein(props),
190073
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
189994
190074
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
189995
190075
  handler: (props) => props.updateCircular(true),
189996
190076
  isActive: (props) => props && props.sequenceData.circular
189997
190077
  },
189998
190078
  linear: {
189999
- isHidden: (props) => props.readOnly,
190079
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
190000
190080
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
190001
190081
  handler: (props) => props.updateCircular(false),
190002
190082
  isActive: (props) => props && !props.sequenceData.circular
@@ -190023,29 +190103,27 @@ double click --> edit`}`;
190023
190103
  }
190024
190104
  ];
190025
190105
  const labelToggleCommandDefs = {};
190026
- ["feature", "part", "cutsite", "primer", ...nicheAnnotations].forEach(
190027
- (_type) => {
190028
- let rest = {};
190029
- let type = _type;
190030
- if (_type.type) {
190031
- type = _type.type.slice(0, -1);
190032
- rest = _type;
190033
- }
190034
- const cmdId = `toggle${lodashExports.upperFirst(type)}Labels`;
190035
- const plural = type + "s";
190036
- labelToggleCommandDefs[cmdId] = {
190037
- toggle: ["show", "hide"],
190038
- handler: (props) => props.annotationLabelVisibilityToggle(plural),
190039
- isHidden: (props) => {
190040
- return props && props.typesToOmit && props.typesToOmit[plural] === false;
190041
- },
190042
- ...rest,
190043
- isActive: (props) => {
190044
- return props && props.annotationLabelVisibility[plural];
190045
- }
190046
- };
190047
- }
190048
- );
190106
+ ["feature", "part", "cutsite", "primer", ...nicheAnnotations].forEach((_type) => {
190107
+ let rest = {};
190108
+ let type = _type;
190109
+ if (_type.type) {
190110
+ type = _type.type.slice(0, -1);
190111
+ rest = _type;
190112
+ }
190113
+ const cmdId = `toggle${lodashExports.upperFirst(type)}Labels`;
190114
+ const plural = type + "s";
190115
+ labelToggleCommandDefs[cmdId] = {
190116
+ toggle: ["show", "hide"],
190117
+ handler: (props) => props.annotationLabelVisibilityToggle(plural),
190118
+ isHidden: (props) => {
190119
+ return props && props.typesToOmit && props.typesToOmit[plural] === false;
190120
+ },
190121
+ ...rest,
190122
+ isActive: (props) => {
190123
+ return props && props.annotationLabelVisibility[plural];
190124
+ }
190125
+ };
190126
+ });
190049
190127
  const editAnnotationCommandDefs = ["feature", "part", "primer"].reduce(
190050
190128
  (acc, key) => {
190051
190129
  acc[`edit${lodashExports.upperFirst(key)}`] = {
@@ -191618,8 +191696,12 @@ double click --> edit`}`;
191618
191696
  caretPosition = -1,
191619
191697
  selectionLayer = { start: -1, end: -1 },
191620
191698
  readOnly,
191621
- onPaste
191699
+ onPaste,
191700
+ disableBpEditing
191622
191701
  } = this.props;
191702
+ if (disableBpEditing) {
191703
+ return window.toastr.warning("Sorry the underlying sequence is locked");
191704
+ }
191623
191705
  if (readOnly) {
191624
191706
  return window.toastr.warning("Sorry the sequence is Read-Only");
191625
191707
  }
@@ -191660,6 +191742,7 @@ double click --> edit`}`;
191660
191742
  sequenceData,
191661
191743
  selectionLayer,
191662
191744
  copyOptions,
191745
+ disableBpEditing,
191663
191746
  readOnly
191664
191747
  } = this.props;
191665
191748
  const onCut = this.props.onCut || this.props.onCopy || lodashExports.noop;
@@ -191685,7 +191768,7 @@ double click --> edit`}`;
191685
191768
  );
191686
191769
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
191687
191770
  return window.toastr.warning(
191688
- `No Sequence Selected To ${isCut && !readOnly ? "Cut" : "Copy"}`
191771
+ `No Sequence Selected To ${isCut && !(readOnly || disableBpEditing) ? "Cut" : "Copy"}`
191689
191772
  );
191690
191773
  const clipboardData = e.clipboardData;
191691
191774
  const textToCopy = (this.sequenceDataToCopy || {}).textToCopy !== void 0 ? this.sequenceDataToCopy.textToCopy : seqData.isProtein ? seqData.proteinSequence : seqData.sequence;
@@ -191693,7 +191776,7 @@ double click --> edit`}`;
191693
191776
  clipboardData.setData("text/plain", textToCopy);
191694
191777
  clipboardData.setData("application/json", JSON.stringify(seqData));
191695
191778
  e.preventDefault();
191696
- if (isCut && !readOnly) {
191779
+ if (isCut && !(readOnly || disableBpEditing) && !disableBpEditing) {
191697
191780
  this.handleDnaDelete(false);
191698
191781
  onCut(
191699
191782
  e,
@@ -191706,7 +191789,7 @@ double click --> edit`}`;
191706
191789
  document.body.removeEventListener("copy", this.handleCopy);
191707
191790
  }
191708
191791
  window.toastr.success(
191709
- `Selection ${isCut && !readOnly ? "Cut" : "Copied"}`
191792
+ `Selection ${isCut && !(readOnly || disableBpEditing) && !disableBpEditing ? "Cut" : "Copied"}`
191710
191793
  );
191711
191794
  this.sequenceDataToCopy = void 0;
191712
191795
  };
@@ -191717,14 +191800,18 @@ double click --> edit`}`;
191717
191800
  caretPosition = -1,
191718
191801
  selectionLayer = { start: -1, end: -1 },
191719
191802
  sequenceData = { sequence: "" },
191720
- readOnly
191803
+ readOnly,
191804
+ disableBpEditing
191721
191805
  // updateSequenceData,
191722
191806
  // wrappedInsertSequenceDataAtPositionOrRange
191723
191807
  // handleInsert
191724
191808
  } = this.props;
191725
191809
  const sequenceLength = sequenceData.sequence.length;
191726
191810
  const isReplace = selectionLayer.start > -1;
191727
- if (readOnly) {
191811
+ if (disableBpEditing) {
191812
+ return window.toastr.warning("Sorry the underlying sequence is locked");
191813
+ }
191814
+ if (readOnly || disableBpEditing) {
191728
191815
  window.toastr.warning("Sorry the sequence is Read-Only");
191729
191816
  } else {
191730
191817
  createSequenceInputPopup({
@@ -191752,13 +191839,17 @@ double click --> edit`}`;
191752
191839
  selectionLayer = { start: -1, end: -1 },
191753
191840
  sequenceData = { sequence: "" },
191754
191841
  readOnly,
191842
+ disableBpEditing,
191755
191843
  updateSequenceData,
191756
191844
  wrappedInsertSequenceDataAtPositionOrRange,
191757
191845
  caretPositionUpdate
191758
191846
  // handleInsert
191759
191847
  } = this.props;
191760
191848
  const sequenceLength = sequenceData.sequence.length;
191761
- if (readOnly) {
191849
+ if (disableBpEditing) {
191850
+ return window.toastr.warning("Sorry the underlying sequence is locked");
191851
+ }
191852
+ if (readOnly || disableBpEditing) {
191762
191853
  return window.toastr.warning("Sorry the sequence is Read-Only");
191763
191854
  }
191764
191855
  if (sequenceLength > 0) {
@@ -191889,7 +191980,7 @@ double click --> edit`}`;
191889
191980
  };
191890
191981
  // eslint-disable-next-line no-unused-vars
191891
191982
  getCopyOptions = (annotation) => {
191892
- const { sequenceData, readOnly, selectionLayer } = this.props;
191983
+ const { sequenceData, readOnly, disableBpEditing, selectionLayer } = this.props;
191893
191984
  const { isProtein } = sequenceData;
191894
191985
  const makeTextCopyable = (transformFunc, className, action = "copy") => {
191895
191986
  return new Clipboard$1(`.${className}`, {
@@ -191949,7 +192040,7 @@ double click --> edit`}`;
191949
192040
  }
191950
192041
  };
191951
192042
  return [
191952
- ...readOnly ? [] : [
192043
+ ...readOnly || disableBpEditing ? [] : [
191953
192044
  {
191954
192045
  text: "Replace",
191955
192046
  ...this.insertHelper
@@ -192023,21 +192114,14 @@ double click --> edit`}`;
192023
192114
  this.openVeCopyAAReverse && this.openVeCopyAAReverse.destroy();
192024
192115
  },
192025
192116
  didMount: ({ className }) => {
192026
- this.openVeCopyAAReverse = makeTextCopyable(
192027
- (selectedSeqData) => {
192028
- const revSeqData = getReverseComplementSequenceAndAnnoations(
192029
- selectedSeqData
192030
- );
192031
- const textToCopy = isProtein ? revSeqData.proteinSequence.toUpperCase() : getAminoAcidStringFromSequenceString(
192032
- revSeqData.sequence
192033
- );
192034
- return {
192035
- ...revSeqData,
192036
- textToCopy
192037
- };
192038
- },
192039
- className
192040
- );
192117
+ this.openVeCopyAAReverse = makeTextCopyable((selectedSeqData) => {
192118
+ const revSeqData = getReverseComplementSequenceAndAnnoations(selectedSeqData);
192119
+ const textToCopy = isProtein ? revSeqData.proteinSequence.toUpperCase() : getAminoAcidStringFromSequenceString(revSeqData.sequence);
192120
+ return {
192121
+ ...revSeqData,
192122
+ textToCopy
192123
+ };
192124
+ }, className);
192041
192125
  }
192042
192126
  },
192043
192127
  {
@@ -192144,11 +192228,12 @@ double click --> edit`}`;
192144
192228
  ({ nearestCaretPos, shiftHeld, event }) => {
192145
192229
  this.updateSelectionOrCaret(shiftHeld, nearestCaretPos);
192146
192230
  const {
192147
- readOnly
192231
+ readOnly,
192232
+ disableBpEditing
192148
192233
  // sequenceData: { circular }
192149
192234
  } = this.props;
192150
192235
  const menu = [
192151
- ...readOnly ? [] : [
192236
+ ...readOnly || disableBpEditing ? [] : [
192152
192237
  {
192153
192238
  text: "Insert",
192154
192239
  ...this.insertHelper
@@ -192194,8 +192279,7 @@ double click --> edit`}`;
192194
192279
  overlapsSelf: annotation.overlapsSelf
192195
192280
  });
192196
192281
  return [
192197
- "editPart",
192198
- "deletePart",
192282
+ ...getEditDeleteHandlers("Part", annotation),
192199
192283
  "--",
192200
192284
  ...this.getSelectionMenuOptions(annotation),
192201
192285
  "--",
@@ -192237,8 +192321,7 @@ double click --> edit`}`;
192237
192321
  event.persist();
192238
192322
  const { readOnly, annotationsToSupport: { parts } = {} } = this.props;
192239
192323
  return [
192240
- "editFeature",
192241
- "deleteFeature",
192324
+ ...getEditDeleteHandlers("Feature", annotation),
192242
192325
  ...this.getSelectionMenuOptions(annotation),
192243
192326
  ...readOnly ? [] : [
192244
192327
  ...parts && [
@@ -192305,8 +192388,7 @@ double click --> edit`}`;
192305
192388
  end: annotation.end
192306
192389
  });
192307
192390
  return [
192308
- "editPrimer",
192309
- "deletePrimer",
192391
+ ...getEditDeleteHandlers("Primer", annotation),
192310
192392
  ...this.getSelectionMenuOptions(annotation),
192311
192393
  "showRemoveDuplicatesDialogPrimers",
192312
192394
  "viewPrimerProperties"
@@ -192516,6 +192598,28 @@ double click --> edit`}`;
192516
192598
  end: newSelectionLayerEnd % newSeqData.sequence.length
192517
192599
  });
192518
192600
  };
192601
+ function getEditDeleteHandlers(type, annotation) {
192602
+ return [
192603
+ ...annotation.isEditLocked ? [
192604
+ {
192605
+ shouldDismissPopover: false,
192606
+ text: /* @__PURE__ */ React$3.createElement(
192607
+ "div",
192608
+ {
192609
+ style: {
192610
+ fontSize: 11,
192611
+ fontStyle: "italic",
192612
+ color: "rgba(0,0,0,.5)"
192613
+ }
192614
+ },
192615
+ typeof annotation.isEditLocked === "string" ? annotation.isEditLocked : `Note: This Annotation is Locked`
192616
+ )
192617
+ }
192618
+ ] : [],
192619
+ `edit${type}`,
192620
+ ...annotation.isEditLocked ? [] : [`delete${type}`]
192621
+ ];
192622
+ }
192519
192623
 
192520
192624
  const style$i = '';
192521
192625
 
@@ -199673,7 +199777,11 @@ double click --> edit`}`;
199673
199777
  }
199674
199778
  }
199675
199779
  ],
199676
- withDialogProps: { title: "Go To", height: 190, onCloseHook: tryToRefocusEditor }
199780
+ withDialogProps: {
199781
+ title: "Go To",
199782
+ height: 190,
199783
+ onCloseHook: tryToRefocusEditor
199784
+ }
199677
199785
  });
199678
199786
 
199679
199787
  const validate$1 = (val, vals, props) => {
@@ -202333,6 +202441,7 @@ double click --> edit`}`;
202333
202441
  overlapsSelf,
202334
202442
  start,
202335
202443
  end,
202444
+ readOnly,
202336
202445
  getAdditionalEditAnnotationComps,
202337
202446
  advancedOptions,
202338
202447
  advancedDefaultOpen,
@@ -202427,10 +202536,11 @@ double click --> edit`}`;
202427
202536
  "tg-upsert-annotation"
202428
202537
  )
202429
202538
  },
202539
+ typeof readOnly === "string" ? /* @__PURE__ */ React$3.createElement(Callout, { intent: "primary", style: { marginBottom: 10 } }, readOnly) : null,
202430
202540
  /* @__PURE__ */ React$3.createElement(
202431
202541
  InputField,
202432
202542
  {
202433
- disabled: this.props.readOnly,
202543
+ disabled: readOnly,
202434
202544
  inlineLabel: true,
202435
202545
  tooltipError: true,
202436
202546
  autoFocus: true,
@@ -205368,15 +205478,15 @@ ${seqDataToCopy}\r
205368
205478
  }
205369
205479
  // Edge 20+
205370
205480
  static isEdge() {
205371
- return Browser.isBrowser() && (!Browser.isIE() && !!window.StyleMedia);
205481
+ return Browser.isBrowser() && !Browser.isIE() && !!window.StyleMedia;
205372
205482
  }
205373
205483
  // Chrome 1+
205374
205484
  static isChrome() {
205375
- return Browser.isBrowser() && (!!window.chrome && !!window.chrome.webstore);
205485
+ return Browser.isBrowser() && !!window.chrome && !!window.chrome.webstore;
205376
205486
  }
205377
205487
  // Blink engine detection
205378
205488
  static isBlink() {
205379
- return Browser.isBrowser() && ((Browser.isChrome() || Browser.isOpera()) && !!window.CSS);
205489
+ return Browser.isBrowser() && (Browser.isChrome() || Browser.isOpera()) && !!window.CSS;
205380
205490
  }
205381
205491
  static getUserAgent() {
205382
205492
  return typeof navigator === "undefined" ? "" : navigator.userAgent;
@@ -207042,6 +207152,8 @@ ${seqDataToCopy}\r
207042
207152
  "hideSingleImport",
207043
207153
  "beforeAnnotationCreate",
207044
207154
  "disableSetReadOnly",
207155
+ "allowAnnotationEditLocking",
207156
+ "disableBpEditing",
207045
207157
  "showReadOnly",
207046
207158
  "showCircularity",
207047
207159
  "onHiddenEnzymeAdd",
@@ -208455,9 +208567,7 @@ ${seqDataToCopy}\r
208455
208567
  AnchorButton,
208456
208568
  {
208457
208569
  onClick: () => {
208458
- deleteAnnotation(
208459
- annotationPropertiesSelectedEntities
208460
- );
208570
+ deleteAnnotation(annotationPropertiesSelectedEntities);
208461
208571
  },
208462
208572
  className: "tgDeleteAnnsBtn",
208463
208573
  intent: "danger",