@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.js CHANGED
@@ -7425,7 +7425,7 @@ function getPlainObjectKeys(object) {
7425
7425
  var ownKeys$8 = typeof Reflect !== "undefined" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {
7426
7426
  return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));
7427
7427
  } : /* istanbul ignore next */Object.getOwnPropertyNames;
7428
- function toPrimitive$3(value) {
7428
+ function toPrimitive$2(value) {
7429
7429
  return value === null ? null : typeof value === "object" ? "" + value : value;
7430
7430
  }
7431
7431
  function hasProp(target, prop) {
@@ -8354,7 +8354,7 @@ var ObservableValue = /*#__PURE__*/function (_Atom) {
8354
8354
  return this.name_ + "[" + this.value_ + "]";
8355
8355
  };
8356
8356
  _proto.valueOf = function valueOf() {
8357
- return toPrimitive$3(this.get());
8357
+ return toPrimitive$2(this.get());
8358
8358
  };
8359
8359
  _proto[_Symbol$toPrimitive] = function () {
8360
8360
  return this.valueOf();
@@ -8582,7 +8582,7 @@ var ComputedValue = /*#__PURE__*/function () {
8582
8582
  return this.name_ + "[" + this.derivation.toString() + "]";
8583
8583
  };
8584
8584
  _proto.valueOf = function valueOf() {
8585
- return toPrimitive$3(this.get());
8585
+ return toPrimitive$2(this.get());
8586
8586
  };
8587
8587
  _proto[_Symbol$toPrimitive$1] = function () {
8588
8588
  return this.valueOf();
@@ -30279,10 +30279,18 @@ var _fails = function (exec) {
30279
30279
  }
30280
30280
  };
30281
30281
 
30282
- // Thank's IE8 for his funny defineProperty
30283
- var _descriptors = !_fails(function () {
30284
- return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
30285
- });
30282
+ var _descriptors;
30283
+ var hasRequired_descriptors;
30284
+
30285
+ function require_descriptors () {
30286
+ if (hasRequired_descriptors) return _descriptors;
30287
+ hasRequired_descriptors = 1;
30288
+ // Thank's IE8 for his funny defineProperty
30289
+ _descriptors = !_fails(function () {
30290
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
30291
+ });
30292
+ return _descriptors;
30293
+ }
30286
30294
 
30287
30295
  var _domCreate;
30288
30296
  var hasRequired_domCreate;
@@ -30300,9 +30308,17 @@ function require_domCreate () {
30300
30308
  return _domCreate;
30301
30309
  }
30302
30310
 
30303
- var _ie8DomDefine = !_descriptors && !_fails(function () {
30304
- return Object.defineProperty(require_domCreate()('div'), 'a', { get: function () { return 7; } }).a != 7;
30305
- });
30311
+ var _ie8DomDefine;
30312
+ var hasRequired_ie8DomDefine;
30313
+
30314
+ function require_ie8DomDefine () {
30315
+ if (hasRequired_ie8DomDefine) return _ie8DomDefine;
30316
+ hasRequired_ie8DomDefine = 1;
30317
+ _ie8DomDefine = !require_descriptors() && !_fails(function () {
30318
+ return Object.defineProperty(require_domCreate()('div'), 'a', { get: function () { return 7; } }).a != 7;
30319
+ });
30320
+ return _ie8DomDefine;
30321
+ }
30306
30322
 
30307
30323
  // 7.1.1 ToPrimitive(input [, PreferredType])
30308
30324
  var isObject$d = _isObject;
@@ -30317,22 +30333,29 @@ var _toPrimitive$1 = function (it, S) {
30317
30333
  throw TypeError("Can't convert object to primitive value");
30318
30334
  };
30319
30335
 
30320
- var anObject$3 = _anObject;
30321
- var IE8_DOM_DEFINE$1 = _ie8DomDefine;
30322
- var toPrimitive$2 = _toPrimitive$1;
30323
- var dP$2 = Object.defineProperty;
30324
-
30325
- _objectDp.f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
30326
- anObject$3(O);
30327
- P = toPrimitive$2(P, true);
30328
- anObject$3(Attributes);
30329
- if (IE8_DOM_DEFINE$1) try {
30330
- return dP$2(O, P, Attributes);
30331
- } catch (e) { /* empty */ }
30332
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
30333
- if ('value' in Attributes) O[P] = Attributes.value;
30334
- return O;
30335
- };
30336
+ var hasRequired_objectDp;
30337
+
30338
+ function require_objectDp () {
30339
+ if (hasRequired_objectDp) return _objectDp;
30340
+ hasRequired_objectDp = 1;
30341
+ var anObject = _anObject;
30342
+ var IE8_DOM_DEFINE = require_ie8DomDefine();
30343
+ var toPrimitive = _toPrimitive$1;
30344
+ var dP = Object.defineProperty;
30345
+
30346
+ _objectDp.f = require_descriptors() ? Object.defineProperty : function defineProperty(O, P, Attributes) {
30347
+ anObject(O);
30348
+ P = toPrimitive(P, true);
30349
+ anObject(Attributes);
30350
+ if (IE8_DOM_DEFINE) try {
30351
+ return dP(O, P, Attributes);
30352
+ } catch (e) { /* empty */ }
30353
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
30354
+ if ('value' in Attributes) O[P] = Attributes.value;
30355
+ return O;
30356
+ };
30357
+ return _objectDp;
30358
+ }
30336
30359
 
30337
30360
  var _propertyDesc = function (bitmap, value) {
30338
30361
  return {
@@ -30343,10 +30366,10 @@ var _propertyDesc = function (bitmap, value) {
30343
30366
  };
30344
30367
  };
30345
30368
 
30346
- var dP$1 = _objectDp;
30369
+ var dP$2 = require_objectDp();
30347
30370
  var createDesc$3 = _propertyDesc;
30348
- var _hide = _descriptors ? function (object, key, value) {
30349
- return dP$1.f(object, key, createDesc$3(1, value));
30371
+ var _hide = require_descriptors() ? function (object, key, value) {
30372
+ return dP$2.f(object, key, createDesc$3(1, value));
30350
30373
  } : function (object, key, value) {
30351
30374
  object[key] = value;
30352
30375
  return object;
@@ -30362,7 +30385,7 @@ var core$3 = _coreExports;
30362
30385
  var ctx$1 = _ctx;
30363
30386
  var hide$3 = _hide;
30364
30387
  var has$e = _has;
30365
- var PROTOTYPE$1 = 'prototype';
30388
+ var PROTOTYPE$2 = 'prototype';
30366
30389
 
30367
30390
  var $export$8 = function (type, name, source) {
30368
30391
  var IS_FORCED = type & $export$8.F;
@@ -30372,8 +30395,8 @@ var $export$8 = function (type, name, source) {
30372
30395
  var IS_BIND = type & $export$8.B;
30373
30396
  var IS_WRAP = type & $export$8.W;
30374
30397
  var exports = IS_GLOBAL ? core$3 : core$3[name] || (core$3[name] = {});
30375
- var expProto = exports[PROTOTYPE$1];
30376
- var target = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name] : (global$5[name] || {})[PROTOTYPE$1];
30398
+ var expProto = exports[PROTOTYPE$2];
30399
+ var target = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name] : (global$5[name] || {})[PROTOTYPE$2];
30377
30400
  var key, own, out;
30378
30401
  if (IS_GLOBAL) source = name;
30379
30402
  for (key in source) {
@@ -30397,7 +30420,7 @@ var $export$8 = function (type, name, source) {
30397
30420
  } return new C(a, b, c);
30398
30421
  } return C.apply(this, arguments);
30399
30422
  };
30400
- F[PROTOTYPE$1] = C[PROTOTYPE$1];
30423
+ F[PROTOTYPE$2] = C[PROTOTYPE$2];
30401
30424
  return F;
30402
30425
  // make static versions for prototype methods
30403
30426
  })(out) : IS_PROTO && typeof out == 'function' ? ctx$1(Function.call, out) : out;
@@ -30534,14 +30557,14 @@ var _sharedKey = function (key) {
30534
30557
  var has$d = _has;
30535
30558
  var toIObject$4 = _toIobject;
30536
30559
  var arrayIndexOf = _arrayIncludes$1(false);
30537
- var IE_PROTO$1 = _sharedKey('IE_PROTO');
30560
+ var IE_PROTO$2 = _sharedKey('IE_PROTO');
30538
30561
 
30539
30562
  var _objectKeysInternal = function (object, names) {
30540
30563
  var O = toIObject$4(object);
30541
30564
  var i = 0;
30542
30565
  var result = [];
30543
30566
  var key;
30544
- for (key in O) if (key != IE_PROTO$1) has$d(O, key) && result.push(key);
30567
+ for (key in O) if (key != IE_PROTO$2) has$d(O, key) && result.push(key);
30545
30568
  // Don't enum bug & hidden keys
30546
30569
  while (names.length > i) if (has$d(O, key = names[i++])) {
30547
30570
  ~arrayIndexOf(result, key) || result.push(key);
@@ -30555,11 +30578,11 @@ var _enumBugKeys = (
30555
30578
  ).split(',');
30556
30579
 
30557
30580
  // 19.1.2.14 / 15.2.3.14 Object.keys(O)
30558
- var $keys$2 = _objectKeysInternal;
30559
- var enumBugKeys = _enumBugKeys;
30581
+ var $keys$3 = _objectKeysInternal;
30582
+ var enumBugKeys$1 = _enumBugKeys;
30560
30583
 
30561
30584
  var _objectKeys = Object.keys || function keys(O) {
30562
- return $keys$2(O, enumBugKeys);
30585
+ return $keys$3(O, enumBugKeys$1);
30563
30586
  };
30564
30587
 
30565
30588
  var _objectGops = {};
@@ -30590,7 +30613,7 @@ function require_objectAssign () {
30590
30613
  if (hasRequired_objectAssign) return _objectAssign;
30591
30614
  hasRequired_objectAssign = 1;
30592
30615
  // 19.1.2.1 Object.assign(target, source, ...)
30593
- var DESCRIPTORS = _descriptors;
30616
+ var DESCRIPTORS = require_descriptors();
30594
30617
  var getKeys = _objectKeys;
30595
30618
  var gOPS = _objectGops;
30596
30619
  var pIE = require_objectPie();
@@ -30666,27 +30689,19 @@ var _iterators = {};
30666
30689
 
30667
30690
  var _redefine = _hide;
30668
30691
 
30669
- var _objectDps;
30670
- var hasRequired_objectDps;
30671
-
30672
- function require_objectDps () {
30673
- if (hasRequired_objectDps) return _objectDps;
30674
- hasRequired_objectDps = 1;
30675
- var dP = _objectDp;
30676
- var anObject = _anObject;
30677
- var getKeys = _objectKeys;
30692
+ var dP$1 = require_objectDp();
30693
+ var anObject$4 = _anObject;
30694
+ var getKeys$1 = _objectKeys;
30678
30695
 
30679
- _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
30680
- anObject(O);
30681
- var keys = getKeys(Properties);
30682
- var length = keys.length;
30683
- var i = 0;
30684
- var P;
30685
- while (length > i) dP.f(O, P = keys[i++], Properties[P]);
30686
- return O;
30687
- };
30688
- return _objectDps;
30689
- }
30696
+ var _objectDps = require_descriptors() ? Object.defineProperties : function defineProperties(O, Properties) {
30697
+ anObject$4(O);
30698
+ var keys = getKeys$1(Properties);
30699
+ var length = keys.length;
30700
+ var i = 0;
30701
+ var P;
30702
+ while (length > i) dP$1.f(O, P = keys[i++], Properties[P]);
30703
+ return O;
30704
+ };
30690
30705
 
30691
30706
  var _html;
30692
30707
  var hasRequired_html;
@@ -30699,55 +30714,47 @@ function require_html () {
30699
30714
  return _html;
30700
30715
  }
30701
30716
 
30702
- var _objectCreate;
30703
- var hasRequired_objectCreate;
30717
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
30718
+ var anObject$3 = _anObject;
30719
+ var dPs = _objectDps;
30720
+ var enumBugKeys = _enumBugKeys;
30721
+ var IE_PROTO$1 = _sharedKey('IE_PROTO');
30722
+ var Empty = function () { /* empty */ };
30723
+ var PROTOTYPE$1 = 'prototype';
30704
30724
 
30705
- function require_objectCreate () {
30706
- if (hasRequired_objectCreate) return _objectCreate;
30707
- hasRequired_objectCreate = 1;
30708
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
30709
- var anObject = _anObject;
30710
- var dPs = require_objectDps();
30711
- var enumBugKeys = _enumBugKeys;
30712
- var IE_PROTO = _sharedKey('IE_PROTO');
30713
- var Empty = function () { /* empty */ };
30714
- var PROTOTYPE = 'prototype';
30715
-
30716
- // Create object with fake `null` prototype: use iframe Object with cleared prototype
30717
- var createDict = function () {
30718
- // Thrash, waste and sodomy: IE GC bug
30719
- var iframe = require_domCreate()('iframe');
30720
- var i = enumBugKeys.length;
30721
- var lt = '<';
30722
- var gt = '>';
30723
- var iframeDocument;
30724
- iframe.style.display = 'none';
30725
- require_html().appendChild(iframe);
30726
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
30727
- // createDict = iframe.contentWindow.Object;
30728
- // html.removeChild(iframe);
30729
- iframeDocument = iframe.contentWindow.document;
30730
- iframeDocument.open();
30731
- iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
30732
- iframeDocument.close();
30733
- createDict = iframeDocument.F;
30734
- while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
30735
- return createDict();
30736
- };
30737
-
30738
- _objectCreate = Object.create || function create(O, Properties) {
30739
- var result;
30740
- if (O !== null) {
30741
- Empty[PROTOTYPE] = anObject(O);
30742
- result = new Empty();
30743
- Empty[PROTOTYPE] = null;
30744
- // add "__proto__" for Object.getPrototypeOf polyfill
30745
- result[IE_PROTO] = O;
30746
- } else result = createDict();
30747
- return Properties === undefined ? result : dPs(result, Properties);
30748
- };
30749
- return _objectCreate;
30750
- }
30725
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
30726
+ var createDict = function () {
30727
+ // Thrash, waste and sodomy: IE GC bug
30728
+ var iframe = require_domCreate()('iframe');
30729
+ var i = enumBugKeys.length;
30730
+ var lt = '<';
30731
+ var gt = '>';
30732
+ var iframeDocument;
30733
+ iframe.style.display = 'none';
30734
+ require_html().appendChild(iframe);
30735
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
30736
+ // createDict = iframe.contentWindow.Object;
30737
+ // html.removeChild(iframe);
30738
+ iframeDocument = iframe.contentWindow.document;
30739
+ iframeDocument.open();
30740
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
30741
+ iframeDocument.close();
30742
+ createDict = iframeDocument.F;
30743
+ while (i--) delete createDict[PROTOTYPE$1][enumBugKeys[i]];
30744
+ return createDict();
30745
+ };
30746
+
30747
+ var _objectCreate = Object.create || function create(O, Properties) {
30748
+ var result;
30749
+ if (O !== null) {
30750
+ Empty[PROTOTYPE$1] = anObject$3(O);
30751
+ result = new Empty();
30752
+ Empty[PROTOTYPE$1] = null;
30753
+ // add "__proto__" for Object.getPrototypeOf polyfill
30754
+ result[IE_PROTO$1] = O;
30755
+ } else result = createDict();
30756
+ return Properties === undefined ? result : dPs(result, Properties);
30757
+ };
30751
30758
 
30752
30759
  var _wks = {exports: {}};
30753
30760
 
@@ -30765,7 +30772,7 @@ $exports.store = store$2;
30765
30772
 
30766
30773
  var _wksExports = _wks.exports;
30767
30774
 
30768
- var def = _objectDp.f;
30775
+ var def = require_objectDp().f;
30769
30776
  var has$c = _has;
30770
30777
  var TAG$1 = _wksExports('toStringTag');
30771
30778
 
@@ -30773,7 +30780,7 @@ var _setToStringTag = function (it, tag, stat) {
30773
30780
  if (it && !has$c(it = stat ? it : it.prototype, TAG$1)) def(it, TAG$1, { configurable: true, value: tag });
30774
30781
  };
30775
30782
 
30776
- var create$4 = require_objectCreate();
30783
+ var create$4 = _objectCreate;
30777
30784
  var descriptor = _propertyDesc;
30778
30785
  var setToStringTag$2 = _setToStringTag;
30779
30786
  var IteratorPrototype = {};
@@ -31079,7 +31086,7 @@ var _isArrayIter = function (it) {
31079
31086
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
31080
31087
  };
31081
31088
 
31082
- var $defineProperty$2 = _objectDp;
31089
+ var $defineProperty$2 = require_objectDp();
31083
31090
  var createDesc$2 = _propertyDesc;
31084
31091
 
31085
31092
  var _createProperty = function (object, index, value) {
@@ -31212,7 +31219,7 @@ var _default$9 = function (instance, Constructor) {
31212
31219
 
31213
31220
  var $export$3 = _export;
31214
31221
  // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
31215
- $export$3($export$3.S + $export$3.F * !_descriptors, 'Object', { defineProperty: _objectDp.f });
31222
+ $export$3($export$3.S + $export$3.F * !require_descriptors(), 'Object', { defineProperty: require_objectDp().f });
31216
31223
 
31217
31224
  var $Object$2 = _coreExports.Object;
31218
31225
  var defineProperty$c = function defineProperty(it, key, desc) {
@@ -31260,7 +31267,7 @@ var _meta = {exports: {}};
31260
31267
  var META$1 = _uid('meta');
31261
31268
  var isObject$c = _isObject;
31262
31269
  var has$a = _has;
31263
- var setDesc = _objectDp.f;
31270
+ var setDesc = require_objectDp().f;
31264
31271
  var id$1 = 0;
31265
31272
  var isExtensible = Object.isExtensible || function () {
31266
31273
  return true;
@@ -31315,7 +31322,7 @@ var _metaExports = _meta.exports;
31315
31322
 
31316
31323
  var core = _coreExports;
31317
31324
  var wksExt$1 = _wksExt;
31318
- var defineProperty$a = _objectDp.f;
31325
+ var defineProperty$a = require_objectDp().f;
31319
31326
  var _wksDefine = function (name) {
31320
31327
  var $Symbol = core.Symbol || (core.Symbol = {} );
31321
31328
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty$a($Symbol, name, { value: wksExt$1.f(name) });
@@ -31347,24 +31354,17 @@ var _objectGopnExt = {};
31347
31354
 
31348
31355
  var _objectGopn = {};
31349
31356
 
31350
- var hasRequired_objectGopn;
31351
-
31352
- function require_objectGopn () {
31353
- if (hasRequired_objectGopn) return _objectGopn;
31354
- hasRequired_objectGopn = 1;
31355
- // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
31356
- var $keys = _objectKeysInternal;
31357
- var hiddenKeys = _enumBugKeys.concat('length', 'prototype');
31357
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
31358
+ var $keys$2 = _objectKeysInternal;
31359
+ var hiddenKeys = _enumBugKeys.concat('length', 'prototype');
31358
31360
 
31359
- _objectGopn.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
31360
- return $keys(O, hiddenKeys);
31361
- };
31362
- return _objectGopn;
31363
- }
31361
+ _objectGopn.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
31362
+ return $keys$2(O, hiddenKeys);
31363
+ };
31364
31364
 
31365
31365
  // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
31366
31366
  var toIObject$2 = _toIobject;
31367
- var gOPN$1 = require_objectGopn().f;
31367
+ var gOPN$1 = _objectGopn.f;
31368
31368
  var toString$5 = {}.toString;
31369
31369
 
31370
31370
  var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
@@ -31389,10 +31389,10 @@ var createDesc$1 = _propertyDesc;
31389
31389
  var toIObject$1 = _toIobject;
31390
31390
  var toPrimitive$1 = _toPrimitive$1;
31391
31391
  var has$9 = _has;
31392
- var IE8_DOM_DEFINE = _ie8DomDefine;
31392
+ var IE8_DOM_DEFINE = require_ie8DomDefine();
31393
31393
  var gOPD$5 = Object.getOwnPropertyDescriptor;
31394
31394
 
31395
- _objectGopd.f = _descriptors ? gOPD$5 : function getOwnPropertyDescriptor(O, P) {
31395
+ _objectGopd.f = require_descriptors() ? gOPD$5 : function getOwnPropertyDescriptor(O, P) {
31396
31396
  O = toIObject$1(O);
31397
31397
  P = toPrimitive$1(P, true);
31398
31398
  if (IE8_DOM_DEFINE) try {
@@ -31404,7 +31404,7 @@ _objectGopd.f = _descriptors ? gOPD$5 : function getOwnPropertyDescriptor(O, P)
31404
31404
  // ECMAScript 6 symbols shim
31405
31405
  var global$2 = _globalExports;
31406
31406
  var has$8 = _has;
31407
- var DESCRIPTORS = _descriptors;
31407
+ var DESCRIPTORS = require_descriptors();
31408
31408
  var $export$2 = _export;
31409
31409
  var redefine = _redefine;
31410
31410
  var META = _metaExports.KEY;
@@ -31423,11 +31423,11 @@ var toObject$1 = _toObject;
31423
31423
  var toIObject = _toIobject;
31424
31424
  var toPrimitive = _toPrimitive$1;
31425
31425
  var createDesc = _propertyDesc;
31426
- var _create$1 = require_objectCreate();
31426
+ var _create$1 = _objectCreate;
31427
31427
  var gOPNExt = _objectGopnExt;
31428
31428
  var $GOPD = _objectGopd;
31429
31429
  var $GOPS = _objectGops;
31430
- var $DP = _objectDp;
31430
+ var $DP = require_objectDp();
31431
31431
  var $keys$1 = _objectKeys;
31432
31432
  var gOPD$4 = $GOPD.f;
31433
31433
  var dP = $DP.f;
@@ -31551,7 +31551,7 @@ if (!USE_NATIVE) {
31551
31551
 
31552
31552
  $GOPD.f = $getOwnPropertyDescriptor;
31553
31553
  $DP.f = $defineProperty$1;
31554
- require_objectGopn().f = gOPNExt.f = $getOwnPropertyNames;
31554
+ _objectGopn.f = gOPNExt.f = $getOwnPropertyNames;
31555
31555
  require_objectPie().f = $propertyIsEnumerable;
31556
31556
  $GOPS.f = $getOwnPropertySymbols;
31557
31557
 
@@ -31733,7 +31733,7 @@ var setPrototypeOf = { "default": setPrototypeOf$1, __esModule: true };
31733
31733
 
31734
31734
  var $export = _export;
31735
31735
  // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
31736
- $export($export.S, 'Object', { create: require_objectCreate() });
31736
+ $export($export.S, 'Object', { create: _objectCreate });
31737
31737
 
31738
31738
  var $Object$1 = _coreExports.Object;
31739
31739
  var create$3 = function create(P, D) {
@@ -85396,13 +85396,7 @@ function withTableParams(compOrOpts, pTopLevelOpts) {
85396
85396
  return {};
85397
85397
  }
85398
85398
  const mergedOpts = getMergedOpts(topLevelOptions, ownProps);
85399
- const {
85400
- formName,
85401
- urlConnected,
85402
- history,
85403
- defaults,
85404
- onlyOneFilter
85405
- } = mergedOpts;
85399
+ const { formName, urlConnected, history, defaults, onlyOneFilter } = mergedOpts;
85406
85400
  function updateSearch(val) {
85407
85401
  setTimeout(function() {
85408
85402
  dispatch(reduxForm.change(formName, "reduxFormSearchInput", val || ""));
@@ -85441,12 +85435,7 @@ function withTableParams(compOrOpts, pTopLevelOpts) {
85441
85435
  action(...args, currentParams);
85442
85436
  };
85443
85437
  });
85444
- const {
85445
- variables,
85446
- selectedEntities,
85447
- mergedOpts,
85448
- ...restStateProps
85449
- } = stateProps;
85438
+ const { variables, selectedEntities, mergedOpts, ...restStateProps } = stateProps;
85450
85439
  const changeFormValue = (...args) => dispatchProps.dispatch(reduxForm.change(formName, ...args));
85451
85440
  const tableParams = {
85452
85441
  changeFormValue,
@@ -89342,7 +89331,9 @@ const wrapDialog = (topLevelDialogProps = {}) => (Component) => (props) => {
89342
89331
  return doNotTriggerClick();
89343
89332
  }
89344
89333
  const parentEl = r.current?.closest(".bp3-dialog-container");
89345
- const dialogs = document.querySelectorAll(".bp3-dialog-container");
89334
+ const dialogs = document.querySelectorAll(
89335
+ ".bp3-dialog-container"
89336
+ );
89346
89337
  const numDialogs = dialogs?.length;
89347
89338
  if (numDialogs > 1) {
89348
89339
  const topMostDialog = dialogs[numDialogs - 1];
@@ -89681,6 +89672,7 @@ function MatchHeaders({
89681
89672
  marginBottom: 10,
89682
89673
  marginLeft: 20,
89683
89674
  fontSize: 10
89675
+ /* color: Colors.RED1 */
89684
89676
  }
89685
89677
  },
89686
89678
  userMatchedHeader && [
@@ -91669,10 +91661,7 @@ const UploadCsvWizardDialog = compose(
91669
91661
  if (props.filesWIssues.length > 0) {
91670
91662
  const reduxFormEntitiesArray = [];
91671
91663
  const finishedFiles = props.filesWIssues.map((f, i) => {
91672
- const {
91673
- reduxFormEntities,
91674
- reduxFormCellValidation
91675
- } = reduxForm.formValueSelector(`editableCellTable-${i}`)(
91664
+ const { reduxFormEntities, reduxFormCellValidation } = reduxForm.formValueSelector(`editableCellTable-${i}`)(
91676
91665
  state,
91677
91666
  "reduxFormEntities",
91678
91667
  "reduxFormCellValidation"
@@ -103927,7 +103916,14 @@ const EnhancedMenuItem = compose(
103927
103916
  }
103928
103917
  }),
103929
103918
  branch(({ navTo }) => navTo, withRouter$1)
103930
- )(function({ navTo, context, staticContext, didMount, willUnmount, ...props }) {
103919
+ )(function({
103920
+ navTo,
103921
+ context,
103922
+ staticContext,
103923
+ didMount,
103924
+ willUnmount,
103925
+ ...props
103926
+ }) {
103931
103927
  let MenuItemComp = core$5.MenuItem;
103932
103928
  if (navTo) {
103933
103929
  MenuItemComp = MenuItemLink;
@@ -104985,11 +104981,7 @@ function getCommandHotkeyHandlers(commands) {
104985
104981
  return handlers;
104986
104982
  }
104987
104983
 
104988
- const withCommand = (mappings) => (WrappedComponent) => ({
104989
- cmd,
104990
- cmdOptions = {},
104991
- ...props
104992
- }) => {
104984
+ const withCommand = (mappings) => (WrappedComponent) => ({ cmd, cmdOptions = {}, ...props }) => {
104993
104985
  const mappedProps = {};
104994
104986
  Object.keys(mappings).forEach((k) => {
104995
104987
  mappedProps[k] = mappings[k] === "execute" ? (event) => cmd.execute({ event }) : typeof mappings[k] === "function" ? mappings[k](cmd, props) : cmd[mappings[k]];
@@ -106136,9 +106128,9 @@ const frameTranslations = createReducer(
106136
106128
  }
106137
106129
  },
106138
106130
  {
106139
- "1": false,
106140
- "2": false,
106141
- "3": false,
106131
+ 1: false,
106132
+ 2: false,
106133
+ 3: false,
106142
106134
  "-1": false,
106143
106135
  "-2": false,
106144
106136
  "-3": false
@@ -106867,9 +106859,14 @@ function checkIfNonCircularRangesOverlap(range, comparisonRange) {
106867
106859
 
106868
106860
  function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
106869
106861
  return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(function(splitRange) {
106870
- return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(function(splitComparisonRange) {
106871
- return checkIfNonCircularRangesOverlap(splitRange, splitComparisonRange);
106872
- });
106862
+ return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(
106863
+ function(splitComparisonRange) {
106864
+ return checkIfNonCircularRangesOverlap(
106865
+ splitRange,
106866
+ splitComparisonRange
106867
+ );
106868
+ }
106869
+ );
106873
106870
  });
106874
106871
  }
106875
106872
 
@@ -106879,15 +106876,19 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
106879
106876
  return overlaps;
106880
106877
  } else if (overlaps.length === 2) {
106881
106878
  if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
106882
- return [{
106883
- start: overlaps[1].start,
106884
- end: overlaps[0].end
106885
- }];
106879
+ return [
106880
+ {
106881
+ start: overlaps[1].start,
106882
+ end: overlaps[0].end
106883
+ }
106884
+ ];
106886
106885
  } else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
106887
- return [{
106888
- start: overlaps[0].start,
106889
- end: overlaps[1].end
106890
- }];
106886
+ return [
106887
+ {
106888
+ start: overlaps[0].start,
106889
+ end: overlaps[1].end
106890
+ }
106891
+ ];
106891
106892
  } else {
106892
106893
  return overlaps;
106893
106894
  }
@@ -106895,17 +106896,29 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
106895
106896
  const firstOverlap = overlaps[0];
106896
106897
  const secondOverlap = overlaps[1];
106897
106898
  const thirdOverlap = overlaps[2];
106898
- let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, secondOverlap], sequenceLength, optionalOriginalRange);
106899
+ let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
106900
+ [firstOverlap, secondOverlap],
106901
+ sequenceLength,
106902
+ optionalOriginalRange
106903
+ );
106899
106904
  if (collapsedOverlaps.length === 1) {
106900
106905
  collapsedOverlaps.push(thirdOverlap);
106901
106906
  return collapsedOverlaps;
106902
106907
  } else {
106903
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
106908
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
106909
+ [firstOverlap, thirdOverlap],
106910
+ sequenceLength,
106911
+ optionalOriginalRange
106912
+ );
106904
106913
  if (collapsedOverlaps.length === 1) {
106905
106914
  collapsedOverlaps.push(secondOverlap);
106906
106915
  return collapsedOverlaps;
106907
106916
  } else {
106908
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([secondOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
106917
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
106918
+ [secondOverlap, thirdOverlap],
106919
+ sequenceLength,
106920
+ optionalOriginalRange
106921
+ );
106909
106922
  if (collapsedOverlaps.length === 1) {
106910
106923
  collapsedOverlaps.push(firstOverlap);
106911
106924
  return collapsedOverlaps;
@@ -106927,11 +106940,18 @@ function convertRangeIndices(range, inputType, outputType) {
106927
106940
  }
106928
106941
 
106929
106942
  function convertRangeTo0Based(range) {
106930
- return convertRangeIndices(range, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
106943
+ return convertRangeIndices(range, {
106944
+ inclusive1BasedStart: true,
106945
+ inclusive1BasedEnd: true
106946
+ });
106931
106947
  }
106932
106948
 
106933
106949
  function convertRangeTo1Based(range) {
106934
- return convertRangeIndices(range, {}, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
106950
+ return convertRangeIndices(
106951
+ range,
106952
+ {},
106953
+ { inclusive1BasedStart: true, inclusive1BasedEnd: true }
106954
+ );
106935
106955
  }
106936
106956
 
106937
106957
  function provideInclusiveOptions(funToWrap) {
@@ -107036,7 +107056,11 @@ function expandOrContractCircularRangeToPosition(range, position, maxLength) {
107036
107056
  let endMoved = true;
107037
107057
  if (range.end >= position) {
107038
107058
  if (position + maxLength - range.start > range.end - position) {
107039
- newRange.end = normalizePositionByRangeLength(position - 1, maxLength, false);
107059
+ newRange.end = normalizePositionByRangeLength(
107060
+ position - 1,
107061
+ maxLength,
107062
+ false
107063
+ );
107040
107064
  } else {
107041
107065
  newRange.start = position;
107042
107066
  endMoved = false;
@@ -107109,19 +107133,31 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
107109
107133
  if (range.start > range.end) {
107110
107134
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
107111
107135
  } else {
107112
- return expandOrContractNonCircularRangeToPosition(range, position);
107136
+ return expandOrContractNonCircularRangeToPosition(
107137
+ range,
107138
+ position);
107113
107139
  }
107114
107140
  }
107115
107141
 
107116
107142
  function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
107117
107143
  return lodashExports.assign({}, rangeToBeAdjusted, {
107118
- start: normalizePositionByRangeLength(rangeToBeAdjusted.start + translateBy, rangeLength),
107119
- end: normalizePositionByRangeLength(rangeToBeAdjusted.end + translateBy, rangeLength)
107144
+ start: normalizePositionByRangeLength(
107145
+ rangeToBeAdjusted.start + translateBy,
107146
+ rangeLength
107147
+ ),
107148
+ end: normalizePositionByRangeLength(
107149
+ rangeToBeAdjusted.end + translateBy,
107150
+ rangeLength
107151
+ )
107120
107152
  });
107121
107153
  }
107122
107154
 
107123
107155
  function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
107124
- const isFullyContained = isRangeWithinRange(innerRange, outerRange, sequenceLength);
107156
+ const isFullyContained = isRangeWithinRange(
107157
+ innerRange,
107158
+ outerRange,
107159
+ sequenceLength
107160
+ );
107125
107161
  if (isFullyContained) {
107126
107162
  return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
107127
107163
  } else {
@@ -107129,40 +107165,91 @@ function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
107129
107165
  }
107130
107166
  }
107131
107167
  function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
107132
- const outerFullyContained = isRangeWithinRange(outerRange, innerRange, sequenceLength);
107168
+ const outerFullyContained = isRangeWithinRange(
107169
+ outerRange,
107170
+ innerRange,
107171
+ sequenceLength
107172
+ );
107133
107173
  let flippedInnerRange;
107134
107174
  if (outerFullyContained) {
107135
- const expandBy1 = getRangeLength({
107136
- start: innerRange.start,
107137
- end: outerRange.start
107138
- }, sequenceLength) - 1;
107139
- flippedInnerRange = expandOrContractRangeByLength(outerRange, expandBy1, false, sequenceLength);
107140
- const expandBy2 = getRangeLength({
107141
- end: innerRange.end,
107142
- start: outerRange.end
107143
- }, sequenceLength) - 1;
107144
- flippedInnerRange = expandOrContractRangeByLength(flippedInnerRange, expandBy2, true, sequenceLength);
107175
+ const expandBy1 = getRangeLength(
107176
+ {
107177
+ start: innerRange.start,
107178
+ end: outerRange.start
107179
+ },
107180
+ sequenceLength
107181
+ ) - 1;
107182
+ flippedInnerRange = expandOrContractRangeByLength(
107183
+ outerRange,
107184
+ expandBy1,
107185
+ false,
107186
+ sequenceLength
107187
+ );
107188
+ const expandBy2 = getRangeLength(
107189
+ {
107190
+ end: innerRange.end,
107191
+ start: outerRange.end
107192
+ },
107193
+ sequenceLength
107194
+ ) - 1;
107195
+ flippedInnerRange = expandOrContractRangeByLength(
107196
+ flippedInnerRange,
107197
+ expandBy2,
107198
+ true,
107199
+ sequenceLength
107200
+ );
107145
107201
  } else {
107146
- const overlaps = getOverlapsOfPotentiallyCircularRanges(innerRange, outerRange, sequenceLength);
107202
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
107203
+ innerRange,
107204
+ outerRange,
107205
+ sequenceLength
107206
+ );
107147
107207
  if (overlaps.length >= 1) {
107148
107208
  let overlapExtendsForward;
107149
107209
  const firstOverlap = overlaps[0];
107150
107210
  overlapExtendsForward = firstOverlap.start !== outerRange.start;
107151
- const flippedTruncatedInner = flipFullyContainedRange(firstOverlap, outerRange, sequenceLength);
107211
+ const flippedTruncatedInner = flipFullyContainedRange(
107212
+ firstOverlap,
107213
+ outerRange,
107214
+ sequenceLength
107215
+ );
107152
107216
  const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
107153
- flippedInnerRange = expandOrContractRangeByLength(flippedTruncatedInner, lengthToExtend, overlapExtendsForward, sequenceLength);
107217
+ flippedInnerRange = expandOrContractRangeByLength(
107218
+ flippedTruncatedInner,
107219
+ lengthToExtend,
107220
+ overlapExtendsForward,
107221
+ sequenceLength
107222
+ );
107154
107223
  } else {
107155
- throw new Error("This case (relative ranges that do not overlap) is unsupported! ");
107224
+ throw new Error(
107225
+ "This case (relative ranges that do not overlap) is unsupported! "
107226
+ );
107156
107227
  }
107157
107228
  }
107158
107229
  return flippedInnerRange;
107159
107230
  }
107160
107231
  function flipFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
107161
107232
  const translateBy = -outerRange.start;
107162
- const translatedOuterRange = translateRange(outerRange, translateBy, sequenceLength);
107163
- const translatedInnerRange = translateRange(innerRange, translateBy, sequenceLength);
107164
- const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(translatedInnerRange, translatedOuterRange, sequenceLength);
107165
- const flippedInnerRange = translateRange(translatedFlippedInnerRange, -translateBy, sequenceLength);
107233
+ const translatedOuterRange = translateRange(
107234
+ outerRange,
107235
+ translateBy,
107236
+ sequenceLength
107237
+ );
107238
+ const translatedInnerRange = translateRange(
107239
+ innerRange,
107240
+ translateBy,
107241
+ sequenceLength
107242
+ );
107243
+ const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
107244
+ translatedInnerRange,
107245
+ translatedOuterRange,
107246
+ sequenceLength
107247
+ );
107248
+ const flippedInnerRange = translateRange(
107249
+ translatedFlippedInnerRange,
107250
+ -translateBy,
107251
+ sequenceLength
107252
+ );
107166
107253
  return flippedInnerRange;
107167
107254
  }
107168
107255
  function flipNonOriginSpanningContainedRange(innerRange, outerRange, sequenceLength) {
@@ -107334,9 +107421,15 @@ function trimNumberToFitWithin0ToAnotherNumber(numberToBeTrimmed, max) {
107334
107421
  }
107335
107422
 
107336
107423
  function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
107337
- const trimmedSubRange = trimRangeByAnotherRange(subRange, containerRange, sequenceLength);
107424
+ const trimmedSubRange = trimRangeByAnotherRange(
107425
+ subRange,
107426
+ containerRange,
107427
+ sequenceLength
107428
+ );
107338
107429
  if (trimmedSubRange) {
107339
- throw new Error("subRange must be fully contained by containerRange! Otherwise this function does not make sense");
107430
+ throw new Error(
107431
+ "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
107432
+ );
107340
107433
  }
107341
107434
  const newSubrange = {};
107342
107435
  newSubrange.start = subRange.start - containerRange.start;
@@ -107363,12 +107456,24 @@ function modulo(n, m) {
107363
107456
  }
107364
107457
 
107365
107458
  function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
107366
- const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(getOverlapsOfPotentiallyCircularRanges(annotation, selection, sequenceLength), sequenceLength, annotation);
107459
+ const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
107460
+ getOverlapsOfPotentiallyCircularRanges(
107461
+ annotation,
107462
+ selection,
107463
+ sequenceLength
107464
+ ),
107465
+ sequenceLength,
107466
+ annotation
107467
+ );
107367
107468
  const zeroedOverlaps = overlaps.map((overlap) => {
107368
- return zeroSubrangeByContainerRange(overlap, {
107369
- start: selection.start,
107370
- end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
107371
- }, sequenceLength);
107469
+ return zeroSubrangeByContainerRange(
107470
+ overlap,
107471
+ {
107472
+ start: selection.start,
107473
+ end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
107474
+ },
107475
+ sequenceLength
107476
+ );
107372
107477
  });
107373
107478
  return zeroedOverlaps;
107374
107479
  }
@@ -114074,7 +114179,7 @@ const calcTmMethods = {
114074
114179
  calculateTemperature: function(sequence, type, A, R, C, Na) {
114075
114180
  if (typeof type === "undefined") {
114076
114181
  type = this.TABLE_BRESLAUER;
114077
- } else if (type != this.TABLE_BRESLAUER && (type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO)) {
114182
+ } else if (type != this.TABLE_BRESLAUER && type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO) {
114078
114183
  throw new Error("Invalid table type!");
114079
114184
  }
114080
114185
  if (!A) {
@@ -122333,12 +122438,7 @@ function findSequenceMatches(sequence, searchString, options = {}) {
122333
122438
  return matches;
122334
122439
  }
122335
122440
  function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
122336
- const {
122337
- isCircular,
122338
- isAmbiguous,
122339
- isProteinSequence,
122340
- isProteinSearch
122341
- } = options;
122441
+ const { isCircular, isAmbiguous, isProteinSequence, isProteinSearch } = options;
122342
122442
  let searchStringToUse = escapeStringRegexp(searchString);
122343
122443
  if (isAmbiguous) {
122344
122444
  if (isProteinSearch || isProteinSequence) {
@@ -122420,7 +122520,10 @@ function convertAmbiguousStringToRegex(string, isProtein) {
122420
122520
 
122421
122521
  function getComplementSequenceString(sequence, isRna) {
122422
122522
  let complementSeqString = "";
122423
- const complementMap = lodashExports.merge(DNAComplementMap, isRna ? { a: "u", A: "U" } : { a: "t", A: "T" });
122523
+ const complementMap = lodashExports.merge(
122524
+ DNAComplementMap,
122525
+ isRna ? { a: "u", A: "U" } : { a: "t", A: "T" }
122526
+ );
122424
122527
  for (let i = 0; i < sequence.length; i++) {
122425
122528
  let complementChar = complementMap[sequence[i]];
122426
122529
  if (!complementChar) {
@@ -123007,6 +123110,19 @@ function createInitialSequence(options) {
123007
123110
  };
123008
123111
  }
123009
123112
 
123113
+ function extractFileExtension(name) {
123114
+ if (typeof name === "string") {
123115
+ let ext = "";
123116
+ const match = name.match(/\.(\w+)$/);
123117
+ if (match && match[1]) {
123118
+ ext = match[1];
123119
+ }
123120
+ return ext;
123121
+ } else {
123122
+ return "";
123123
+ }
123124
+ }
123125
+
123010
123126
  function splitStringIntoLines(string) {
123011
123127
  let lines = [];
123012
123128
  if (string === "") {
@@ -123580,7 +123696,11 @@ function validateSequenceArray(parsingResultArray, options) {
123580
123696
  return parsingResultArray;
123581
123697
  }
123582
123698
 
123583
- function fastaToJson(fileString, options) {
123699
+ function fastaToJson(fileString, options = {}) {
123700
+ const ext = extractFileExtension(options.fileName);
123701
+ if (/^(faa)$/.test(ext)) {
123702
+ options.isProtein = true;
123703
+ }
123584
123704
  let resultArray = [];
123585
123705
  let result = null;
123586
123706
  try {
@@ -126052,19 +126172,6 @@ function parseSbolJson(sbolJson, options) {
126052
126172
  };
126053
126173
  }
126054
126174
 
126055
- function extractFileExtension(name) {
126056
- if (typeof name === "string") {
126057
- let ext = "";
126058
- const match = name.match(/\.(\w+)$/);
126059
- if (match && match[1]) {
126060
- ext = match[1];
126061
- }
126062
- return ext;
126063
- } else {
126064
- return "";
126065
- }
126066
- }
126067
-
126068
126175
  /*!
126069
126176
  * Copyright 2008 Fair Oaks Labs, Inc.
126070
126177
  * All rights reserved.
@@ -135087,10 +135194,7 @@ async function geneiousXmlToJson(string, options) {
135087
135194
  });
135088
135195
  }
135089
135196
  });
135090
- const toRet = lodashExports.filter(
135091
- resultArray,
135092
- (r) => r?.parsedSequence?.sequence?.length
135093
- );
135197
+ const toRet = lodashExports.filter(resultArray, (r) => r?.parsedSequence?.sequence?.length);
135094
135198
  if (toRet.length)
135095
135199
  return toRet;
135096
135200
  return onFileParsed(resultArray);
@@ -135192,10 +135296,7 @@ async function jbeiXmlToJson(string, options) {
135192
135296
  messages: ["Error while parsing JBEI format"]
135193
135297
  });
135194
135298
  }
135195
- const toRet = lodashExports.filter(
135196
- resultArray,
135197
- (r) => r?.parsedSequence?.sequence?.length
135198
- );
135299
+ const toRet = lodashExports.filter(resultArray, (r) => r?.parsedSequence?.sequence?.length);
135199
135300
  if (toRet.length)
135200
135301
  return toRet;
135201
135302
  return onFileParsed(resultArray);
@@ -135781,7 +135882,7 @@ async function anyToJson(fileContentStringOrFileObj, options) {
135781
135882
  );
135782
135883
  }
135783
135884
  }
135784
- if (/^(fasta|fas|fa|fna|ffn)$/.test(ext)) {
135885
+ if (/^(fasta|fas|fa|fna|ffn|faa)$/.test(ext)) {
135785
135886
  return fastaToJson(fileContentString, options);
135786
135887
  } else if (/^(gb|gbk)$/.test(ext)) {
135787
135888
  return genbankToJson(fileContentString, options);
@@ -138470,10 +138571,7 @@ const lastSavedId$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.definePrope
138470
138571
  lastSavedIdUpdate
138471
138572
  }, Symbol.toStringTag, { value: 'Module' }));
138472
138573
 
138473
- const toggleReadOnlyMode = createMetaAction(
138474
- "TOGGLE_READ_ONLY_MODE",
138475
- lodashExports.noop
138476
- );
138574
+ const toggleReadOnlyMode = createMetaAction("TOGGLE_READ_ONLY_MODE", lodashExports.noop);
138477
138575
  const updateReadOnlyMode = createMetaAction("UPDATE_READ_ONLY_MODE");
138478
138576
  const readOnly = createReducer(
138479
138577
  {
@@ -142186,6 +142284,9 @@ function showAddOrEditAnnotationDialog({
142186
142284
  overrideName: `AddOrEdit${nameUpper}DialogOverride`,
142187
142285
  dialogType,
142188
142286
  props: {
142287
+ ...annotation.isEditLocked && {
142288
+ readOnly: typeof annotation.isEditLocked === "string" ? annotation.isEditLocked : "This annotation is locked"
142289
+ },
142189
142290
  dialogProps: {
142190
142291
  title: annotation && annotation.id ? `Edit ${nameUpper}` : `New ${nameUpper}`
142191
142292
  },
@@ -142827,7 +142928,8 @@ function mapStateToProps(state, ownProps) {
142827
142928
  editorName,
142828
142929
  sequenceData: sequenceDataFromProps,
142829
142930
  allowSeqDataOverride,
142830
- allowMultipleFeatureDirections
142931
+ allowMultipleFeatureDirections,
142932
+ readOnly
142831
142933
  } = ownProps;
142832
142934
  const editorState = getEditorState(state, editorName);
142833
142935
  const meta = { editorName };
@@ -142887,6 +142989,7 @@ function mapStateToProps(state, ownProps) {
142887
142989
  const f = getFindTool(findTool, matchesTotal);
142888
142990
  return {
142889
142991
  ...editorState,
142992
+ readOnly: readOnly || editorState.readOnly,
142890
142993
  meta,
142891
142994
  annotationToAdd,
142892
142995
  ...newSelection && { selectionLayer: newSelection },
@@ -161071,7 +161174,7 @@ function showFileDialog({ multiple = false, onSelect }) {
161071
161174
  }
161072
161175
 
161073
161176
  const name = "@teselagen/ove";
161074
- const version = "0.3.9";
161177
+ const version = "0.3.11";
161075
161178
  const main = "./src/index.js";
161076
161179
  const exports$1 = {
161077
161180
  ".": {
@@ -161681,7 +161784,7 @@ const fileCommandDefs = {
161681
161784
  isHidden: isProtein
161682
161785
  },
161683
161786
  deleteSequence: {
161684
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || !props.onDelete,
161787
+ isDisabled: (props) => props.disableBpEditing && bpEditingDisabledTooltip || props.readOnly && readOnlyDisabledTooltip || !props.onDelete,
161685
161788
  isHidden: (props) => !props.onDelete,
161686
161789
  handler: (props) => props.onDelete(props.sequenceData)
161687
161790
  },
@@ -161880,6 +161983,7 @@ Object.keys(defaultCopyOptions).forEach((type) => {
161880
161983
  };
161881
161984
  });
161882
161985
  const readOnlyDisabledTooltip = "Sorry this function is not allowed in Read-Only Mode";
161986
+ const bpEditingDisabledTooltip = "Sequence Editing Disabled";
161883
161987
  const noSelection = ({ selectionLayer = {} }) => !(selectionLayer.start > -1 && selectionLayer.end > -1) && "Selection Required";
161884
161988
  const triggerClipboardCommand = (type) => {
161885
161989
  const wrapper = document.querySelector(".veVectorInteractionWrapper");
@@ -161911,8 +162015,8 @@ const editCommandDefs = {
161911
162015
  handler: lodashExports.noop
161912
162016
  },
161913
162017
  cut: {
161914
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
161915
- isHidden: (props) => props.readOnly,
162018
+ isDisabled: (props) => props.disableBpEditing && bpEditingDisabledTooltip || props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
162019
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
161916
162020
  handler: () => {
161917
162021
  triggerClipboardCommand("cut");
161918
162022
  },
@@ -161937,7 +162041,7 @@ const editCommandDefs = {
161937
162041
  },
161938
162042
  paste: {
161939
162043
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
161940
- isHidden: (props) => props.readOnly,
162044
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
161941
162045
  handler: () => triggerClipboardCommand("paste"),
161942
162046
  hotkey: "mod+v"
161943
162047
  },
@@ -162091,12 +162195,12 @@ const editCommandDefs = {
162091
162195
  hotkey: "mod+i"
162092
162196
  },
162093
162197
  complementSelection: {
162094
- isHidden: (props) => props.readOnly || isProtein(props),
162198
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162095
162199
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props),
162096
162200
  handler: (props) => props.handleComplementSelection()
162097
162201
  },
162098
162202
  complementEntireSequence: {
162099
- isHidden: (props) => props.readOnly || isProtein(props),
162203
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162100
162204
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
162101
162205
  handler: (props) => props.handleComplementSequence()
162102
162206
  },
@@ -162248,13 +162352,13 @@ const editCommandDefs = {
162248
162352
  // }
162249
162353
  // },
162250
162354
  reverseComplementSelection: {
162251
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props),
162355
+ isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props) || props.disableBpEditing,
162252
162356
  isHidden: (props) => props.readOnly || isProtein(props),
162253
162357
  handler: (props) => props.handleReverseComplementSelection(),
162254
162358
  hotkey: "mod+e"
162255
162359
  },
162256
162360
  reverseComplementEntireSequence: {
162257
- isHidden: (props) => props.readOnly || isProtein(props),
162361
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162258
162362
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
162259
162363
  handler: (props) => props.handleReverseComplementSequence()
162260
162364
  },
@@ -162404,7 +162508,7 @@ const editCommandDefs = {
162404
162508
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0
162405
162509
  },
162406
162510
  rotateToCaretPosition: {
162407
- isHidden: (props) => props.readOnly || isProtein(props),
162511
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162408
162512
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.caretPosition === -1 && "You must first place cursor" || !props.sequenceData.circular && "Disabled for Linear Sequences" || props.sequenceLength === 0,
162409
162513
  handler: (props) => props.handleRotateToCaretPosition(),
162410
162514
  hotkey: "mod+b"
@@ -162413,13 +162517,13 @@ const editCommandDefs = {
162413
162517
  };
162414
162518
  const cirularityCommandDefs = {
162415
162519
  circular: {
162416
- isHidden: (props) => props.readOnly || isProtein(props),
162520
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162417
162521
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
162418
162522
  handler: (props) => props.updateCircular(true),
162419
162523
  isActive: (props) => props && props.sequenceData.circular
162420
162524
  },
162421
162525
  linear: {
162422
- isHidden: (props) => props.readOnly,
162526
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
162423
162527
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
162424
162528
  handler: (props) => props.updateCircular(false),
162425
162529
  isActive: (props) => props && !props.sequenceData.circular
@@ -162446,29 +162550,27 @@ const nicheAnnotations = [
162446
162550
  }
162447
162551
  ];
162448
162552
  const labelToggleCommandDefs = {};
162449
- ["feature", "part", "cutsite", "primer", ...nicheAnnotations].forEach(
162450
- (_type) => {
162451
- let rest = {};
162452
- let type = _type;
162453
- if (_type.type) {
162454
- type = _type.type.slice(0, -1);
162455
- rest = _type;
162456
- }
162457
- const cmdId = `toggle${lodashExports.upperFirst(type)}Labels`;
162458
- const plural = type + "s";
162459
- labelToggleCommandDefs[cmdId] = {
162460
- toggle: ["show", "hide"],
162461
- handler: (props) => props.annotationLabelVisibilityToggle(plural),
162462
- isHidden: (props) => {
162463
- return props && props.typesToOmit && props.typesToOmit[plural] === false;
162464
- },
162465
- ...rest,
162466
- isActive: (props) => {
162467
- return props && props.annotationLabelVisibility[plural];
162468
- }
162469
- };
162470
- }
162471
- );
162553
+ ["feature", "part", "cutsite", "primer", ...nicheAnnotations].forEach((_type) => {
162554
+ let rest = {};
162555
+ let type = _type;
162556
+ if (_type.type) {
162557
+ type = _type.type.slice(0, -1);
162558
+ rest = _type;
162559
+ }
162560
+ const cmdId = `toggle${lodashExports.upperFirst(type)}Labels`;
162561
+ const plural = type + "s";
162562
+ labelToggleCommandDefs[cmdId] = {
162563
+ toggle: ["show", "hide"],
162564
+ handler: (props) => props.annotationLabelVisibilityToggle(plural),
162565
+ isHidden: (props) => {
162566
+ return props && props.typesToOmit && props.typesToOmit[plural] === false;
162567
+ },
162568
+ ...rest,
162569
+ isActive: (props) => {
162570
+ return props && props.annotationLabelVisibility[plural];
162571
+ }
162572
+ };
162573
+ });
162472
162574
  const editAnnotationCommandDefs = ["feature", "part", "primer"].reduce(
162473
162575
  (acc, key) => {
162474
162576
  acc[`edit${lodashExports.upperFirst(key)}`] = {
@@ -166657,8 +166759,12 @@ function VectorInteractionHOC(Component) {
166657
166759
  caretPosition = -1,
166658
166760
  selectionLayer = { start: -1, end: -1 },
166659
166761
  readOnly,
166660
- onPaste
166762
+ onPaste,
166763
+ disableBpEditing
166661
166764
  } = this.props;
166765
+ if (disableBpEditing) {
166766
+ return window.toastr.warning("Sorry the underlying sequence is locked");
166767
+ }
166662
166768
  if (readOnly) {
166663
166769
  return window.toastr.warning("Sorry the sequence is Read-Only");
166664
166770
  }
@@ -166699,6 +166805,7 @@ function VectorInteractionHOC(Component) {
166699
166805
  sequenceData,
166700
166806
  selectionLayer,
166701
166807
  copyOptions,
166808
+ disableBpEditing,
166702
166809
  readOnly
166703
166810
  } = this.props;
166704
166811
  const onCut = this.props.onCut || this.props.onCopy || lodashExports.noop;
@@ -166724,7 +166831,7 @@ function VectorInteractionHOC(Component) {
166724
166831
  );
166725
166832
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
166726
166833
  return window.toastr.warning(
166727
- `No Sequence Selected To ${isCut && !readOnly ? "Cut" : "Copy"}`
166834
+ `No Sequence Selected To ${isCut && !(readOnly || disableBpEditing) ? "Cut" : "Copy"}`
166728
166835
  );
166729
166836
  const clipboardData = e.clipboardData;
166730
166837
  const textToCopy = (this.sequenceDataToCopy || {}).textToCopy !== void 0 ? this.sequenceDataToCopy.textToCopy : seqData.isProtein ? seqData.proteinSequence : seqData.sequence;
@@ -166732,7 +166839,7 @@ function VectorInteractionHOC(Component) {
166732
166839
  clipboardData.setData("text/plain", textToCopy);
166733
166840
  clipboardData.setData("application/json", JSON.stringify(seqData));
166734
166841
  e.preventDefault();
166735
- if (isCut && !readOnly) {
166842
+ if (isCut && !(readOnly || disableBpEditing) && !disableBpEditing) {
166736
166843
  this.handleDnaDelete(false);
166737
166844
  onCut(
166738
166845
  e,
@@ -166745,7 +166852,7 @@ function VectorInteractionHOC(Component) {
166745
166852
  document.body.removeEventListener("copy", this.handleCopy);
166746
166853
  }
166747
166854
  window.toastr.success(
166748
- `Selection ${isCut && !readOnly ? "Cut" : "Copied"}`
166855
+ `Selection ${isCut && !(readOnly || disableBpEditing) && !disableBpEditing ? "Cut" : "Copied"}`
166749
166856
  );
166750
166857
  this.sequenceDataToCopy = void 0;
166751
166858
  };
@@ -166756,14 +166863,18 @@ function VectorInteractionHOC(Component) {
166756
166863
  caretPosition = -1,
166757
166864
  selectionLayer = { start: -1, end: -1 },
166758
166865
  sequenceData = { sequence: "" },
166759
- readOnly
166866
+ readOnly,
166867
+ disableBpEditing
166760
166868
  // updateSequenceData,
166761
166869
  // wrappedInsertSequenceDataAtPositionOrRange
166762
166870
  // handleInsert
166763
166871
  } = this.props;
166764
166872
  const sequenceLength = sequenceData.sequence.length;
166765
166873
  const isReplace = selectionLayer.start > -1;
166766
- if (readOnly) {
166874
+ if (disableBpEditing) {
166875
+ return window.toastr.warning("Sorry the underlying sequence is locked");
166876
+ }
166877
+ if (readOnly || disableBpEditing) {
166767
166878
  window.toastr.warning("Sorry the sequence is Read-Only");
166768
166879
  } else {
166769
166880
  createSequenceInputPopup({
@@ -166791,13 +166902,17 @@ function VectorInteractionHOC(Component) {
166791
166902
  selectionLayer = { start: -1, end: -1 },
166792
166903
  sequenceData = { sequence: "" },
166793
166904
  readOnly,
166905
+ disableBpEditing,
166794
166906
  updateSequenceData,
166795
166907
  wrappedInsertSequenceDataAtPositionOrRange,
166796
166908
  caretPositionUpdate
166797
166909
  // handleInsert
166798
166910
  } = this.props;
166799
166911
  const sequenceLength = sequenceData.sequence.length;
166800
- if (readOnly) {
166912
+ if (disableBpEditing) {
166913
+ return window.toastr.warning("Sorry the underlying sequence is locked");
166914
+ }
166915
+ if (readOnly || disableBpEditing) {
166801
166916
  return window.toastr.warning("Sorry the sequence is Read-Only");
166802
166917
  }
166803
166918
  if (sequenceLength > 0) {
@@ -166928,7 +167043,7 @@ function VectorInteractionHOC(Component) {
166928
167043
  };
166929
167044
  // eslint-disable-next-line no-unused-vars
166930
167045
  getCopyOptions = (annotation) => {
166931
- const { sequenceData, readOnly, selectionLayer } = this.props;
167046
+ const { sequenceData, readOnly, disableBpEditing, selectionLayer } = this.props;
166932
167047
  const { isProtein } = sequenceData;
166933
167048
  const makeTextCopyable = (transformFunc, className, action = "copy") => {
166934
167049
  return new Clipboard$1(`.${className}`, {
@@ -166988,7 +167103,7 @@ function VectorInteractionHOC(Component) {
166988
167103
  }
166989
167104
  };
166990
167105
  return [
166991
- ...readOnly ? [] : [
167106
+ ...readOnly || disableBpEditing ? [] : [
166992
167107
  {
166993
167108
  text: "Replace",
166994
167109
  ...this.insertHelper
@@ -167062,21 +167177,14 @@ function VectorInteractionHOC(Component) {
167062
167177
  this.openVeCopyAAReverse && this.openVeCopyAAReverse.destroy();
167063
167178
  },
167064
167179
  didMount: ({ className }) => {
167065
- this.openVeCopyAAReverse = makeTextCopyable(
167066
- (selectedSeqData) => {
167067
- const revSeqData = getReverseComplementSequenceAndAnnoations(
167068
- selectedSeqData
167069
- );
167070
- const textToCopy = isProtein ? revSeqData.proteinSequence.toUpperCase() : getAminoAcidStringFromSequenceString(
167071
- revSeqData.sequence
167072
- );
167073
- return {
167074
- ...revSeqData,
167075
- textToCopy
167076
- };
167077
- },
167078
- className
167079
- );
167180
+ this.openVeCopyAAReverse = makeTextCopyable((selectedSeqData) => {
167181
+ const revSeqData = getReverseComplementSequenceAndAnnoations(selectedSeqData);
167182
+ const textToCopy = isProtein ? revSeqData.proteinSequence.toUpperCase() : getAminoAcidStringFromSequenceString(revSeqData.sequence);
167183
+ return {
167184
+ ...revSeqData,
167185
+ textToCopy
167186
+ };
167187
+ }, className);
167080
167188
  }
167081
167189
  },
167082
167190
  {
@@ -167183,11 +167291,12 @@ function VectorInteractionHOC(Component) {
167183
167291
  ({ nearestCaretPos, shiftHeld, event }) => {
167184
167292
  this.updateSelectionOrCaret(shiftHeld, nearestCaretPos);
167185
167293
  const {
167186
- readOnly
167294
+ readOnly,
167295
+ disableBpEditing
167187
167296
  // sequenceData: { circular }
167188
167297
  } = this.props;
167189
167298
  const menu = [
167190
- ...readOnly ? [] : [
167299
+ ...readOnly || disableBpEditing ? [] : [
167191
167300
  {
167192
167301
  text: "Insert",
167193
167302
  ...this.insertHelper
@@ -167233,8 +167342,7 @@ function VectorInteractionHOC(Component) {
167233
167342
  overlapsSelf: annotation.overlapsSelf
167234
167343
  });
167235
167344
  return [
167236
- "editPart",
167237
- "deletePart",
167345
+ ...getEditDeleteHandlers("Part", annotation),
167238
167346
  "--",
167239
167347
  ...this.getSelectionMenuOptions(annotation),
167240
167348
  "--",
@@ -167276,8 +167384,7 @@ function VectorInteractionHOC(Component) {
167276
167384
  event.persist();
167277
167385
  const { readOnly, annotationsToSupport: { parts } = {} } = this.props;
167278
167386
  return [
167279
- "editFeature",
167280
- "deleteFeature",
167387
+ ...getEditDeleteHandlers("Feature", annotation),
167281
167388
  ...this.getSelectionMenuOptions(annotation),
167282
167389
  ...readOnly ? [] : [
167283
167390
  ...parts && [
@@ -167344,8 +167451,7 @@ function VectorInteractionHOC(Component) {
167344
167451
  end: annotation.end
167345
167452
  });
167346
167453
  return [
167347
- "editPrimer",
167348
- "deletePrimer",
167454
+ ...getEditDeleteHandlers("Primer", annotation),
167349
167455
  ...this.getSelectionMenuOptions(annotation),
167350
167456
  "showRemoveDuplicatesDialogPrimers",
167351
167457
  "viewPrimerProperties"
@@ -167555,6 +167661,28 @@ const insertAndSelectHelper = ({ seqDataToInsert, props }) => {
167555
167661
  end: newSelectionLayerEnd % newSeqData.sequence.length
167556
167662
  });
167557
167663
  };
167664
+ function getEditDeleteHandlers(type, annotation) {
167665
+ return [
167666
+ ...annotation.isEditLocked ? [
167667
+ {
167668
+ shouldDismissPopover: false,
167669
+ text: /* @__PURE__ */ React$3.createElement(
167670
+ "div",
167671
+ {
167672
+ style: {
167673
+ fontSize: 11,
167674
+ fontStyle: "italic",
167675
+ color: "rgba(0,0,0,.5)"
167676
+ }
167677
+ },
167678
+ typeof annotation.isEditLocked === "string" ? annotation.isEditLocked : `Note: This Annotation is Locked`
167679
+ )
167680
+ }
167681
+ ] : [],
167682
+ `edit${type}`,
167683
+ ...annotation.isEditLocked ? [] : [`delete${type}`]
167684
+ ];
167685
+ }
167558
167686
 
167559
167687
  const style$i = '';
167560
167688
 
@@ -174712,7 +174840,11 @@ const GoToDialog = createSimpleDialog({
174712
174840
  }
174713
174841
  }
174714
174842
  ],
174715
- withDialogProps: { title: "Go To", height: 190, onCloseHook: tryToRefocusEditor }
174843
+ withDialogProps: {
174844
+ title: "Go To",
174845
+ height: 190,
174846
+ onCloseHook: tryToRefocusEditor
174847
+ }
174716
174848
  });
174717
174849
 
174718
174850
  const validate$1 = (val, vals, props) => {
@@ -177372,6 +177504,7 @@ class AddOrEditAnnotationDialog extends React$3.Component {
177372
177504
  overlapsSelf,
177373
177505
  start,
177374
177506
  end,
177507
+ readOnly,
177375
177508
  getAdditionalEditAnnotationComps,
177376
177509
  advancedOptions,
177377
177510
  advancedDefaultOpen,
@@ -177466,10 +177599,11 @@ class AddOrEditAnnotationDialog extends React$3.Component {
177466
177599
  "tg-upsert-annotation"
177467
177600
  )
177468
177601
  },
177602
+ typeof readOnly === "string" ? /* @__PURE__ */ React$3.createElement(core$5.Callout, { intent: "primary", style: { marginBottom: 10 } }, readOnly) : null,
177469
177603
  /* @__PURE__ */ React$3.createElement(
177470
177604
  InputField,
177471
177605
  {
177472
- disabled: this.props.readOnly,
177606
+ disabled: readOnly,
177473
177607
  inlineLabel: true,
177474
177608
  tooltipError: true,
177475
177609
  autoFocus: true,
@@ -180407,15 +180541,15 @@ class Browser {
180407
180541
  }
180408
180542
  // Edge 20+
180409
180543
  static isEdge() {
180410
- return Browser.isBrowser() && (!Browser.isIE() && !!window.StyleMedia);
180544
+ return Browser.isBrowser() && !Browser.isIE() && !!window.StyleMedia;
180411
180545
  }
180412
180546
  // Chrome 1+
180413
180547
  static isChrome() {
180414
- return Browser.isBrowser() && (!!window.chrome && !!window.chrome.webstore);
180548
+ return Browser.isBrowser() && !!window.chrome && !!window.chrome.webstore;
180415
180549
  }
180416
180550
  // Blink engine detection
180417
180551
  static isBlink() {
180418
- return Browser.isBrowser() && ((Browser.isChrome() || Browser.isOpera()) && !!window.CSS);
180552
+ return Browser.isBrowser() && (Browser.isChrome() || Browser.isOpera()) && !!window.CSS;
180419
180553
  }
180420
180554
  static getUserAgent() {
180421
180555
  return typeof navigator === "undefined" ? "" : navigator.userAgent;
@@ -183008,6 +183142,8 @@ const userDefinedHandlersAndOpts = [
183008
183142
  "hideSingleImport",
183009
183143
  "beforeAnnotationCreate",
183010
183144
  "disableSetReadOnly",
183145
+ "allowAnnotationEditLocking",
183146
+ "disableBpEditing",
183011
183147
  "showReadOnly",
183012
183148
  "showCircularity",
183013
183149
  "onHiddenEnzymeAdd",
@@ -184421,9 +184557,7 @@ const genericAnnotationProperties = ({
184421
184557
  core$5.AnchorButton,
184422
184558
  {
184423
184559
  onClick: () => {
184424
- deleteAnnotation(
184425
- annotationPropertiesSelectedEntities
184426
- );
184560
+ deleteAnnotation(annotationPropertiesSelectedEntities);
184427
184561
  },
184428
184562
  className: "tgDeleteAnnsBtn",
184429
184563
  intent: "danger",