@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.mjs CHANGED
@@ -7404,7 +7404,7 @@ function getPlainObjectKeys(object) {
7404
7404
  var ownKeys$8 = typeof Reflect !== "undefined" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {
7405
7405
  return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));
7406
7406
  } : /* istanbul ignore next */Object.getOwnPropertyNames;
7407
- function toPrimitive$3(value) {
7407
+ function toPrimitive$2(value) {
7408
7408
  return value === null ? null : typeof value === "object" ? "" + value : value;
7409
7409
  }
7410
7410
  function hasProp(target, prop) {
@@ -8333,7 +8333,7 @@ var ObservableValue = /*#__PURE__*/function (_Atom) {
8333
8333
  return this.name_ + "[" + this.value_ + "]";
8334
8334
  };
8335
8335
  _proto.valueOf = function valueOf() {
8336
- return toPrimitive$3(this.get());
8336
+ return toPrimitive$2(this.get());
8337
8337
  };
8338
8338
  _proto[_Symbol$toPrimitive] = function () {
8339
8339
  return this.valueOf();
@@ -8561,7 +8561,7 @@ var ComputedValue = /*#__PURE__*/function () {
8561
8561
  return this.name_ + "[" + this.derivation.toString() + "]";
8562
8562
  };
8563
8563
  _proto.valueOf = function valueOf() {
8564
- return toPrimitive$3(this.get());
8564
+ return toPrimitive$2(this.get());
8565
8565
  };
8566
8566
  _proto[_Symbol$toPrimitive$1] = function () {
8567
8567
  return this.valueOf();
@@ -30258,10 +30258,18 @@ var _fails = function (exec) {
30258
30258
  }
30259
30259
  };
30260
30260
 
30261
- // Thank's IE8 for his funny defineProperty
30262
- var _descriptors = !_fails(function () {
30263
- return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
30264
- });
30261
+ var _descriptors;
30262
+ var hasRequired_descriptors;
30263
+
30264
+ function require_descriptors () {
30265
+ if (hasRequired_descriptors) return _descriptors;
30266
+ hasRequired_descriptors = 1;
30267
+ // Thank's IE8 for his funny defineProperty
30268
+ _descriptors = !_fails(function () {
30269
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
30270
+ });
30271
+ return _descriptors;
30272
+ }
30265
30273
 
30266
30274
  var _domCreate;
30267
30275
  var hasRequired_domCreate;
@@ -30279,9 +30287,17 @@ function require_domCreate () {
30279
30287
  return _domCreate;
30280
30288
  }
30281
30289
 
30282
- var _ie8DomDefine = !_descriptors && !_fails(function () {
30283
- return Object.defineProperty(require_domCreate()('div'), 'a', { get: function () { return 7; } }).a != 7;
30284
- });
30290
+ var _ie8DomDefine;
30291
+ var hasRequired_ie8DomDefine;
30292
+
30293
+ function require_ie8DomDefine () {
30294
+ if (hasRequired_ie8DomDefine) return _ie8DomDefine;
30295
+ hasRequired_ie8DomDefine = 1;
30296
+ _ie8DomDefine = !require_descriptors() && !_fails(function () {
30297
+ return Object.defineProperty(require_domCreate()('div'), 'a', { get: function () { return 7; } }).a != 7;
30298
+ });
30299
+ return _ie8DomDefine;
30300
+ }
30285
30301
 
30286
30302
  // 7.1.1 ToPrimitive(input [, PreferredType])
30287
30303
  var isObject$d = _isObject;
@@ -30296,22 +30312,29 @@ var _toPrimitive$1 = function (it, S) {
30296
30312
  throw TypeError("Can't convert object to primitive value");
30297
30313
  };
30298
30314
 
30299
- var anObject$3 = _anObject;
30300
- var IE8_DOM_DEFINE$1 = _ie8DomDefine;
30301
- var toPrimitive$2 = _toPrimitive$1;
30302
- var dP$2 = Object.defineProperty;
30303
-
30304
- _objectDp.f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
30305
- anObject$3(O);
30306
- P = toPrimitive$2(P, true);
30307
- anObject$3(Attributes);
30308
- if (IE8_DOM_DEFINE$1) try {
30309
- return dP$2(O, P, Attributes);
30310
- } catch (e) { /* empty */ }
30311
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
30312
- if ('value' in Attributes) O[P] = Attributes.value;
30313
- return O;
30314
- };
30315
+ var hasRequired_objectDp;
30316
+
30317
+ function require_objectDp () {
30318
+ if (hasRequired_objectDp) return _objectDp;
30319
+ hasRequired_objectDp = 1;
30320
+ var anObject = _anObject;
30321
+ var IE8_DOM_DEFINE = require_ie8DomDefine();
30322
+ var toPrimitive = _toPrimitive$1;
30323
+ var dP = Object.defineProperty;
30324
+
30325
+ _objectDp.f = require_descriptors() ? Object.defineProperty : function defineProperty(O, P, Attributes) {
30326
+ anObject(O);
30327
+ P = toPrimitive(P, true);
30328
+ anObject(Attributes);
30329
+ if (IE8_DOM_DEFINE) try {
30330
+ return dP(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
+ return _objectDp;
30337
+ }
30315
30338
 
30316
30339
  var _propertyDesc = function (bitmap, value) {
30317
30340
  return {
@@ -30322,10 +30345,10 @@ var _propertyDesc = function (bitmap, value) {
30322
30345
  };
30323
30346
  };
30324
30347
 
30325
- var dP$1 = _objectDp;
30348
+ var dP$2 = require_objectDp();
30326
30349
  var createDesc$3 = _propertyDesc;
30327
- var _hide = _descriptors ? function (object, key, value) {
30328
- return dP$1.f(object, key, createDesc$3(1, value));
30350
+ var _hide = require_descriptors() ? function (object, key, value) {
30351
+ return dP$2.f(object, key, createDesc$3(1, value));
30329
30352
  } : function (object, key, value) {
30330
30353
  object[key] = value;
30331
30354
  return object;
@@ -30341,7 +30364,7 @@ var core$3 = _coreExports;
30341
30364
  var ctx$1 = _ctx;
30342
30365
  var hide$3 = _hide;
30343
30366
  var has$e = _has;
30344
- var PROTOTYPE$1 = 'prototype';
30367
+ var PROTOTYPE$2 = 'prototype';
30345
30368
 
30346
30369
  var $export$8 = function (type, name, source) {
30347
30370
  var IS_FORCED = type & $export$8.F;
@@ -30351,8 +30374,8 @@ var $export$8 = function (type, name, source) {
30351
30374
  var IS_BIND = type & $export$8.B;
30352
30375
  var IS_WRAP = type & $export$8.W;
30353
30376
  var exports = IS_GLOBAL ? core$3 : core$3[name] || (core$3[name] = {});
30354
- var expProto = exports[PROTOTYPE$1];
30355
- var target = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name] : (global$5[name] || {})[PROTOTYPE$1];
30377
+ var expProto = exports[PROTOTYPE$2];
30378
+ var target = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name] : (global$5[name] || {})[PROTOTYPE$2];
30356
30379
  var key, own, out;
30357
30380
  if (IS_GLOBAL) source = name;
30358
30381
  for (key in source) {
@@ -30376,7 +30399,7 @@ var $export$8 = function (type, name, source) {
30376
30399
  } return new C(a, b, c);
30377
30400
  } return C.apply(this, arguments);
30378
30401
  };
30379
- F[PROTOTYPE$1] = C[PROTOTYPE$1];
30402
+ F[PROTOTYPE$2] = C[PROTOTYPE$2];
30380
30403
  return F;
30381
30404
  // make static versions for prototype methods
30382
30405
  })(out) : IS_PROTO && typeof out == 'function' ? ctx$1(Function.call, out) : out;
@@ -30513,14 +30536,14 @@ var _sharedKey = function (key) {
30513
30536
  var has$d = _has;
30514
30537
  var toIObject$4 = _toIobject;
30515
30538
  var arrayIndexOf = _arrayIncludes$1(false);
30516
- var IE_PROTO$1 = _sharedKey('IE_PROTO');
30539
+ var IE_PROTO$2 = _sharedKey('IE_PROTO');
30517
30540
 
30518
30541
  var _objectKeysInternal = function (object, names) {
30519
30542
  var O = toIObject$4(object);
30520
30543
  var i = 0;
30521
30544
  var result = [];
30522
30545
  var key;
30523
- for (key in O) if (key != IE_PROTO$1) has$d(O, key) && result.push(key);
30546
+ for (key in O) if (key != IE_PROTO$2) has$d(O, key) && result.push(key);
30524
30547
  // Don't enum bug & hidden keys
30525
30548
  while (names.length > i) if (has$d(O, key = names[i++])) {
30526
30549
  ~arrayIndexOf(result, key) || result.push(key);
@@ -30534,11 +30557,11 @@ var _enumBugKeys = (
30534
30557
  ).split(',');
30535
30558
 
30536
30559
  // 19.1.2.14 / 15.2.3.14 Object.keys(O)
30537
- var $keys$2 = _objectKeysInternal;
30538
- var enumBugKeys = _enumBugKeys;
30560
+ var $keys$3 = _objectKeysInternal;
30561
+ var enumBugKeys$1 = _enumBugKeys;
30539
30562
 
30540
30563
  var _objectKeys = Object.keys || function keys(O) {
30541
- return $keys$2(O, enumBugKeys);
30564
+ return $keys$3(O, enumBugKeys$1);
30542
30565
  };
30543
30566
 
30544
30567
  var _objectGops = {};
@@ -30569,7 +30592,7 @@ function require_objectAssign () {
30569
30592
  if (hasRequired_objectAssign) return _objectAssign;
30570
30593
  hasRequired_objectAssign = 1;
30571
30594
  // 19.1.2.1 Object.assign(target, source, ...)
30572
- var DESCRIPTORS = _descriptors;
30595
+ var DESCRIPTORS = require_descriptors();
30573
30596
  var getKeys = _objectKeys;
30574
30597
  var gOPS = _objectGops;
30575
30598
  var pIE = require_objectPie();
@@ -30645,27 +30668,19 @@ var _iterators = {};
30645
30668
 
30646
30669
  var _redefine = _hide;
30647
30670
 
30648
- var _objectDps;
30649
- var hasRequired_objectDps;
30650
-
30651
- function require_objectDps () {
30652
- if (hasRequired_objectDps) return _objectDps;
30653
- hasRequired_objectDps = 1;
30654
- var dP = _objectDp;
30655
- var anObject = _anObject;
30656
- var getKeys = _objectKeys;
30671
+ var dP$1 = require_objectDp();
30672
+ var anObject$4 = _anObject;
30673
+ var getKeys$1 = _objectKeys;
30657
30674
 
30658
- _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
30659
- anObject(O);
30660
- var keys = getKeys(Properties);
30661
- var length = keys.length;
30662
- var i = 0;
30663
- var P;
30664
- while (length > i) dP.f(O, P = keys[i++], Properties[P]);
30665
- return O;
30666
- };
30667
- return _objectDps;
30668
- }
30675
+ var _objectDps = require_descriptors() ? Object.defineProperties : function defineProperties(O, Properties) {
30676
+ anObject$4(O);
30677
+ var keys = getKeys$1(Properties);
30678
+ var length = keys.length;
30679
+ var i = 0;
30680
+ var P;
30681
+ while (length > i) dP$1.f(O, P = keys[i++], Properties[P]);
30682
+ return O;
30683
+ };
30669
30684
 
30670
30685
  var _html;
30671
30686
  var hasRequired_html;
@@ -30678,55 +30693,47 @@ function require_html () {
30678
30693
  return _html;
30679
30694
  }
30680
30695
 
30681
- var _objectCreate;
30682
- var hasRequired_objectCreate;
30696
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
30697
+ var anObject$3 = _anObject;
30698
+ var dPs = _objectDps;
30699
+ var enumBugKeys = _enumBugKeys;
30700
+ var IE_PROTO$1 = _sharedKey('IE_PROTO');
30701
+ var Empty = function () { /* empty */ };
30702
+ var PROTOTYPE$1 = 'prototype';
30683
30703
 
30684
- function require_objectCreate () {
30685
- if (hasRequired_objectCreate) return _objectCreate;
30686
- hasRequired_objectCreate = 1;
30687
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
30688
- var anObject = _anObject;
30689
- var dPs = require_objectDps();
30690
- var enumBugKeys = _enumBugKeys;
30691
- var IE_PROTO = _sharedKey('IE_PROTO');
30692
- var Empty = function () { /* empty */ };
30693
- var PROTOTYPE = 'prototype';
30694
-
30695
- // Create object with fake `null` prototype: use iframe Object with cleared prototype
30696
- var createDict = function () {
30697
- // Thrash, waste and sodomy: IE GC bug
30698
- var iframe = require_domCreate()('iframe');
30699
- var i = enumBugKeys.length;
30700
- var lt = '<';
30701
- var gt = '>';
30702
- var iframeDocument;
30703
- iframe.style.display = 'none';
30704
- require_html().appendChild(iframe);
30705
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
30706
- // createDict = iframe.contentWindow.Object;
30707
- // html.removeChild(iframe);
30708
- iframeDocument = iframe.contentWindow.document;
30709
- iframeDocument.open();
30710
- iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
30711
- iframeDocument.close();
30712
- createDict = iframeDocument.F;
30713
- while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
30714
- return createDict();
30715
- };
30716
-
30717
- _objectCreate = Object.create || function create(O, Properties) {
30718
- var result;
30719
- if (O !== null) {
30720
- Empty[PROTOTYPE] = anObject(O);
30721
- result = new Empty();
30722
- Empty[PROTOTYPE] = null;
30723
- // add "__proto__" for Object.getPrototypeOf polyfill
30724
- result[IE_PROTO] = O;
30725
- } else result = createDict();
30726
- return Properties === undefined ? result : dPs(result, Properties);
30727
- };
30728
- return _objectCreate;
30729
- }
30704
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
30705
+ var createDict = function () {
30706
+ // Thrash, waste and sodomy: IE GC bug
30707
+ var iframe = require_domCreate()('iframe');
30708
+ var i = enumBugKeys.length;
30709
+ var lt = '<';
30710
+ var gt = '>';
30711
+ var iframeDocument;
30712
+ iframe.style.display = 'none';
30713
+ require_html().appendChild(iframe);
30714
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
30715
+ // createDict = iframe.contentWindow.Object;
30716
+ // html.removeChild(iframe);
30717
+ iframeDocument = iframe.contentWindow.document;
30718
+ iframeDocument.open();
30719
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
30720
+ iframeDocument.close();
30721
+ createDict = iframeDocument.F;
30722
+ while (i--) delete createDict[PROTOTYPE$1][enumBugKeys[i]];
30723
+ return createDict();
30724
+ };
30725
+
30726
+ var _objectCreate = Object.create || function create(O, Properties) {
30727
+ var result;
30728
+ if (O !== null) {
30729
+ Empty[PROTOTYPE$1] = anObject$3(O);
30730
+ result = new Empty();
30731
+ Empty[PROTOTYPE$1] = null;
30732
+ // add "__proto__" for Object.getPrototypeOf polyfill
30733
+ result[IE_PROTO$1] = O;
30734
+ } else result = createDict();
30735
+ return Properties === undefined ? result : dPs(result, Properties);
30736
+ };
30730
30737
 
30731
30738
  var _wks = {exports: {}};
30732
30739
 
@@ -30744,7 +30751,7 @@ $exports.store = store$2;
30744
30751
 
30745
30752
  var _wksExports = _wks.exports;
30746
30753
 
30747
- var def = _objectDp.f;
30754
+ var def = require_objectDp().f;
30748
30755
  var has$c = _has;
30749
30756
  var TAG$1 = _wksExports('toStringTag');
30750
30757
 
@@ -30752,7 +30759,7 @@ var _setToStringTag = function (it, tag, stat) {
30752
30759
  if (it && !has$c(it = stat ? it : it.prototype, TAG$1)) def(it, TAG$1, { configurable: true, value: tag });
30753
30760
  };
30754
30761
 
30755
- var create$4 = require_objectCreate();
30762
+ var create$4 = _objectCreate;
30756
30763
  var descriptor = _propertyDesc;
30757
30764
  var setToStringTag$2 = _setToStringTag;
30758
30765
  var IteratorPrototype = {};
@@ -31058,7 +31065,7 @@ var _isArrayIter = function (it) {
31058
31065
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
31059
31066
  };
31060
31067
 
31061
- var $defineProperty$2 = _objectDp;
31068
+ var $defineProperty$2 = require_objectDp();
31062
31069
  var createDesc$2 = _propertyDesc;
31063
31070
 
31064
31071
  var _createProperty = function (object, index, value) {
@@ -31191,7 +31198,7 @@ var _default$9 = function (instance, Constructor) {
31191
31198
 
31192
31199
  var $export$3 = _export;
31193
31200
  // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
31194
- $export$3($export$3.S + $export$3.F * !_descriptors, 'Object', { defineProperty: _objectDp.f });
31201
+ $export$3($export$3.S + $export$3.F * !require_descriptors(), 'Object', { defineProperty: require_objectDp().f });
31195
31202
 
31196
31203
  var $Object$2 = _coreExports.Object;
31197
31204
  var defineProperty$c = function defineProperty(it, key, desc) {
@@ -31239,7 +31246,7 @@ var _meta = {exports: {}};
31239
31246
  var META$1 = _uid('meta');
31240
31247
  var isObject$c = _isObject;
31241
31248
  var has$a = _has;
31242
- var setDesc = _objectDp.f;
31249
+ var setDesc = require_objectDp().f;
31243
31250
  var id$1 = 0;
31244
31251
  var isExtensible = Object.isExtensible || function () {
31245
31252
  return true;
@@ -31294,7 +31301,7 @@ var _metaExports = _meta.exports;
31294
31301
 
31295
31302
  var core = _coreExports;
31296
31303
  var wksExt$1 = _wksExt;
31297
- var defineProperty$a = _objectDp.f;
31304
+ var defineProperty$a = require_objectDp().f;
31298
31305
  var _wksDefine = function (name) {
31299
31306
  var $Symbol = core.Symbol || (core.Symbol = {} );
31300
31307
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty$a($Symbol, name, { value: wksExt$1.f(name) });
@@ -31326,24 +31333,17 @@ var _objectGopnExt = {};
31326
31333
 
31327
31334
  var _objectGopn = {};
31328
31335
 
31329
- var hasRequired_objectGopn;
31330
-
31331
- function require_objectGopn () {
31332
- if (hasRequired_objectGopn) return _objectGopn;
31333
- hasRequired_objectGopn = 1;
31334
- // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
31335
- var $keys = _objectKeysInternal;
31336
- var hiddenKeys = _enumBugKeys.concat('length', 'prototype');
31336
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
31337
+ var $keys$2 = _objectKeysInternal;
31338
+ var hiddenKeys = _enumBugKeys.concat('length', 'prototype');
31337
31339
 
31338
- _objectGopn.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
31339
- return $keys(O, hiddenKeys);
31340
- };
31341
- return _objectGopn;
31342
- }
31340
+ _objectGopn.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
31341
+ return $keys$2(O, hiddenKeys);
31342
+ };
31343
31343
 
31344
31344
  // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
31345
31345
  var toIObject$2 = _toIobject;
31346
- var gOPN$1 = require_objectGopn().f;
31346
+ var gOPN$1 = _objectGopn.f;
31347
31347
  var toString$5 = {}.toString;
31348
31348
 
31349
31349
  var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
@@ -31368,10 +31368,10 @@ var createDesc$1 = _propertyDesc;
31368
31368
  var toIObject$1 = _toIobject;
31369
31369
  var toPrimitive$1 = _toPrimitive$1;
31370
31370
  var has$9 = _has;
31371
- var IE8_DOM_DEFINE = _ie8DomDefine;
31371
+ var IE8_DOM_DEFINE = require_ie8DomDefine();
31372
31372
  var gOPD$5 = Object.getOwnPropertyDescriptor;
31373
31373
 
31374
- _objectGopd.f = _descriptors ? gOPD$5 : function getOwnPropertyDescriptor(O, P) {
31374
+ _objectGopd.f = require_descriptors() ? gOPD$5 : function getOwnPropertyDescriptor(O, P) {
31375
31375
  O = toIObject$1(O);
31376
31376
  P = toPrimitive$1(P, true);
31377
31377
  if (IE8_DOM_DEFINE) try {
@@ -31383,7 +31383,7 @@ _objectGopd.f = _descriptors ? gOPD$5 : function getOwnPropertyDescriptor(O, P)
31383
31383
  // ECMAScript 6 symbols shim
31384
31384
  var global$2 = _globalExports;
31385
31385
  var has$8 = _has;
31386
- var DESCRIPTORS = _descriptors;
31386
+ var DESCRIPTORS = require_descriptors();
31387
31387
  var $export$2 = _export;
31388
31388
  var redefine = _redefine;
31389
31389
  var META = _metaExports.KEY;
@@ -31402,11 +31402,11 @@ var toObject$1 = _toObject;
31402
31402
  var toIObject = _toIobject;
31403
31403
  var toPrimitive = _toPrimitive$1;
31404
31404
  var createDesc = _propertyDesc;
31405
- var _create$1 = require_objectCreate();
31405
+ var _create$1 = _objectCreate;
31406
31406
  var gOPNExt = _objectGopnExt;
31407
31407
  var $GOPD = _objectGopd;
31408
31408
  var $GOPS = _objectGops;
31409
- var $DP = _objectDp;
31409
+ var $DP = require_objectDp();
31410
31410
  var $keys$1 = _objectKeys;
31411
31411
  var gOPD$4 = $GOPD.f;
31412
31412
  var dP = $DP.f;
@@ -31530,7 +31530,7 @@ if (!USE_NATIVE) {
31530
31530
 
31531
31531
  $GOPD.f = $getOwnPropertyDescriptor;
31532
31532
  $DP.f = $defineProperty$1;
31533
- require_objectGopn().f = gOPNExt.f = $getOwnPropertyNames;
31533
+ _objectGopn.f = gOPNExt.f = $getOwnPropertyNames;
31534
31534
  require_objectPie().f = $propertyIsEnumerable;
31535
31535
  $GOPS.f = $getOwnPropertySymbols;
31536
31536
 
@@ -31712,7 +31712,7 @@ var setPrototypeOf = { "default": setPrototypeOf$1, __esModule: true };
31712
31712
 
31713
31713
  var $export = _export;
31714
31714
  // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
31715
- $export($export.S, 'Object', { create: require_objectCreate() });
31715
+ $export($export.S, 'Object', { create: _objectCreate });
31716
31716
 
31717
31717
  var $Object$1 = _coreExports.Object;
31718
31718
  var create$3 = function create(P, D) {
@@ -85375,13 +85375,7 @@ function withTableParams(compOrOpts, pTopLevelOpts) {
85375
85375
  return {};
85376
85376
  }
85377
85377
  const mergedOpts = getMergedOpts(topLevelOptions, ownProps);
85378
- const {
85379
- formName,
85380
- urlConnected,
85381
- history,
85382
- defaults,
85383
- onlyOneFilter
85384
- } = mergedOpts;
85378
+ const { formName, urlConnected, history, defaults, onlyOneFilter } = mergedOpts;
85385
85379
  function updateSearch(val) {
85386
85380
  setTimeout(function() {
85387
85381
  dispatch(change(formName, "reduxFormSearchInput", val || ""));
@@ -85420,12 +85414,7 @@ function withTableParams(compOrOpts, pTopLevelOpts) {
85420
85414
  action(...args, currentParams);
85421
85415
  };
85422
85416
  });
85423
- const {
85424
- variables,
85425
- selectedEntities,
85426
- mergedOpts,
85427
- ...restStateProps
85428
- } = stateProps;
85417
+ const { variables, selectedEntities, mergedOpts, ...restStateProps } = stateProps;
85429
85418
  const changeFormValue = (...args) => dispatchProps.dispatch(change(formName, ...args));
85430
85419
  const tableParams = {
85431
85420
  changeFormValue,
@@ -89321,7 +89310,9 @@ const wrapDialog = (topLevelDialogProps = {}) => (Component) => (props) => {
89321
89310
  return doNotTriggerClick();
89322
89311
  }
89323
89312
  const parentEl = r.current?.closest(".bp3-dialog-container");
89324
- const dialogs = document.querySelectorAll(".bp3-dialog-container");
89313
+ const dialogs = document.querySelectorAll(
89314
+ ".bp3-dialog-container"
89315
+ );
89325
89316
  const numDialogs = dialogs?.length;
89326
89317
  if (numDialogs > 1) {
89327
89318
  const topMostDialog = dialogs[numDialogs - 1];
@@ -89660,6 +89651,7 @@ function MatchHeaders({
89660
89651
  marginBottom: 10,
89661
89652
  marginLeft: 20,
89662
89653
  fontSize: 10
89654
+ /* color: Colors.RED1 */
89663
89655
  }
89664
89656
  },
89665
89657
  userMatchedHeader && [
@@ -91648,10 +91640,7 @@ const UploadCsvWizardDialog = compose(
91648
91640
  if (props.filesWIssues.length > 0) {
91649
91641
  const reduxFormEntitiesArray = [];
91650
91642
  const finishedFiles = props.filesWIssues.map((f, i) => {
91651
- const {
91652
- reduxFormEntities,
91653
- reduxFormCellValidation
91654
- } = formValueSelector(`editableCellTable-${i}`)(
91643
+ const { reduxFormEntities, reduxFormCellValidation } = formValueSelector(`editableCellTable-${i}`)(
91655
91644
  state,
91656
91645
  "reduxFormEntities",
91657
91646
  "reduxFormCellValidation"
@@ -103906,7 +103895,14 @@ const EnhancedMenuItem = compose(
103906
103895
  }
103907
103896
  }),
103908
103897
  branch(({ navTo }) => navTo, withRouter$1)
103909
- )(function({ navTo, context, staticContext, didMount, willUnmount, ...props }) {
103898
+ )(function({
103899
+ navTo,
103900
+ context,
103901
+ staticContext,
103902
+ didMount,
103903
+ willUnmount,
103904
+ ...props
103905
+ }) {
103910
103906
  let MenuItemComp = MenuItem;
103911
103907
  if (navTo) {
103912
103908
  MenuItemComp = MenuItemLink;
@@ -104964,11 +104960,7 @@ function getCommandHotkeyHandlers(commands) {
104964
104960
  return handlers;
104965
104961
  }
104966
104962
 
104967
- const withCommand = (mappings) => (WrappedComponent) => ({
104968
- cmd,
104969
- cmdOptions = {},
104970
- ...props
104971
- }) => {
104963
+ const withCommand = (mappings) => (WrappedComponent) => ({ cmd, cmdOptions = {}, ...props }) => {
104972
104964
  const mappedProps = {};
104973
104965
  Object.keys(mappings).forEach((k) => {
104974
104966
  mappedProps[k] = mappings[k] === "execute" ? (event) => cmd.execute({ event }) : typeof mappings[k] === "function" ? mappings[k](cmd, props) : cmd[mappings[k]];
@@ -106115,9 +106107,9 @@ const frameTranslations = createReducer(
106115
106107
  }
106116
106108
  },
106117
106109
  {
106118
- "1": false,
106119
- "2": false,
106120
- "3": false,
106110
+ 1: false,
106111
+ 2: false,
106112
+ 3: false,
106121
106113
  "-1": false,
106122
106114
  "-2": false,
106123
106115
  "-3": false
@@ -106846,9 +106838,14 @@ function checkIfNonCircularRangesOverlap(range, comparisonRange) {
106846
106838
 
106847
106839
  function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
106848
106840
  return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(function(splitRange) {
106849
- return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(function(splitComparisonRange) {
106850
- return checkIfNonCircularRangesOverlap(splitRange, splitComparisonRange);
106851
- });
106841
+ return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(
106842
+ function(splitComparisonRange) {
106843
+ return checkIfNonCircularRangesOverlap(
106844
+ splitRange,
106845
+ splitComparisonRange
106846
+ );
106847
+ }
106848
+ );
106852
106849
  });
106853
106850
  }
106854
106851
 
@@ -106858,15 +106855,19 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
106858
106855
  return overlaps;
106859
106856
  } else if (overlaps.length === 2) {
106860
106857
  if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
106861
- return [{
106862
- start: overlaps[1].start,
106863
- end: overlaps[0].end
106864
- }];
106858
+ return [
106859
+ {
106860
+ start: overlaps[1].start,
106861
+ end: overlaps[0].end
106862
+ }
106863
+ ];
106865
106864
  } else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
106866
- return [{
106867
- start: overlaps[0].start,
106868
- end: overlaps[1].end
106869
- }];
106865
+ return [
106866
+ {
106867
+ start: overlaps[0].start,
106868
+ end: overlaps[1].end
106869
+ }
106870
+ ];
106870
106871
  } else {
106871
106872
  return overlaps;
106872
106873
  }
@@ -106874,17 +106875,29 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
106874
106875
  const firstOverlap = overlaps[0];
106875
106876
  const secondOverlap = overlaps[1];
106876
106877
  const thirdOverlap = overlaps[2];
106877
- let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, secondOverlap], sequenceLength, optionalOriginalRange);
106878
+ let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
106879
+ [firstOverlap, secondOverlap],
106880
+ sequenceLength,
106881
+ optionalOriginalRange
106882
+ );
106878
106883
  if (collapsedOverlaps.length === 1) {
106879
106884
  collapsedOverlaps.push(thirdOverlap);
106880
106885
  return collapsedOverlaps;
106881
106886
  } else {
106882
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
106887
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
106888
+ [firstOverlap, thirdOverlap],
106889
+ sequenceLength,
106890
+ optionalOriginalRange
106891
+ );
106883
106892
  if (collapsedOverlaps.length === 1) {
106884
106893
  collapsedOverlaps.push(secondOverlap);
106885
106894
  return collapsedOverlaps;
106886
106895
  } else {
106887
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([secondOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
106896
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
106897
+ [secondOverlap, thirdOverlap],
106898
+ sequenceLength,
106899
+ optionalOriginalRange
106900
+ );
106888
106901
  if (collapsedOverlaps.length === 1) {
106889
106902
  collapsedOverlaps.push(firstOverlap);
106890
106903
  return collapsedOverlaps;
@@ -106906,11 +106919,18 @@ function convertRangeIndices(range, inputType, outputType) {
106906
106919
  }
106907
106920
 
106908
106921
  function convertRangeTo0Based(range) {
106909
- return convertRangeIndices(range, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
106922
+ return convertRangeIndices(range, {
106923
+ inclusive1BasedStart: true,
106924
+ inclusive1BasedEnd: true
106925
+ });
106910
106926
  }
106911
106927
 
106912
106928
  function convertRangeTo1Based(range) {
106913
- return convertRangeIndices(range, {}, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
106929
+ return convertRangeIndices(
106930
+ range,
106931
+ {},
106932
+ { inclusive1BasedStart: true, inclusive1BasedEnd: true }
106933
+ );
106914
106934
  }
106915
106935
 
106916
106936
  function provideInclusiveOptions(funToWrap) {
@@ -107015,7 +107035,11 @@ function expandOrContractCircularRangeToPosition(range, position, maxLength) {
107015
107035
  let endMoved = true;
107016
107036
  if (range.end >= position) {
107017
107037
  if (position + maxLength - range.start > range.end - position) {
107018
- newRange.end = normalizePositionByRangeLength(position - 1, maxLength, false);
107038
+ newRange.end = normalizePositionByRangeLength(
107039
+ position - 1,
107040
+ maxLength,
107041
+ false
107042
+ );
107019
107043
  } else {
107020
107044
  newRange.start = position;
107021
107045
  endMoved = false;
@@ -107088,19 +107112,31 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
107088
107112
  if (range.start > range.end) {
107089
107113
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
107090
107114
  } else {
107091
- return expandOrContractNonCircularRangeToPosition(range, position);
107115
+ return expandOrContractNonCircularRangeToPosition(
107116
+ range,
107117
+ position);
107092
107118
  }
107093
107119
  }
107094
107120
 
107095
107121
  function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
107096
107122
  return lodashExports.assign({}, rangeToBeAdjusted, {
107097
- start: normalizePositionByRangeLength(rangeToBeAdjusted.start + translateBy, rangeLength),
107098
- end: normalizePositionByRangeLength(rangeToBeAdjusted.end + translateBy, rangeLength)
107123
+ start: normalizePositionByRangeLength(
107124
+ rangeToBeAdjusted.start + translateBy,
107125
+ rangeLength
107126
+ ),
107127
+ end: normalizePositionByRangeLength(
107128
+ rangeToBeAdjusted.end + translateBy,
107129
+ rangeLength
107130
+ )
107099
107131
  });
107100
107132
  }
107101
107133
 
107102
107134
  function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
107103
- const isFullyContained = isRangeWithinRange(innerRange, outerRange, sequenceLength);
107135
+ const isFullyContained = isRangeWithinRange(
107136
+ innerRange,
107137
+ outerRange,
107138
+ sequenceLength
107139
+ );
107104
107140
  if (isFullyContained) {
107105
107141
  return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
107106
107142
  } else {
@@ -107108,40 +107144,91 @@ function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
107108
107144
  }
107109
107145
  }
107110
107146
  function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
107111
- const outerFullyContained = isRangeWithinRange(outerRange, innerRange, sequenceLength);
107147
+ const outerFullyContained = isRangeWithinRange(
107148
+ outerRange,
107149
+ innerRange,
107150
+ sequenceLength
107151
+ );
107112
107152
  let flippedInnerRange;
107113
107153
  if (outerFullyContained) {
107114
- const expandBy1 = getRangeLength({
107115
- start: innerRange.start,
107116
- end: outerRange.start
107117
- }, sequenceLength) - 1;
107118
- flippedInnerRange = expandOrContractRangeByLength(outerRange, expandBy1, false, sequenceLength);
107119
- const expandBy2 = getRangeLength({
107120
- end: innerRange.end,
107121
- start: outerRange.end
107122
- }, sequenceLength) - 1;
107123
- flippedInnerRange = expandOrContractRangeByLength(flippedInnerRange, expandBy2, true, sequenceLength);
107154
+ const expandBy1 = getRangeLength(
107155
+ {
107156
+ start: innerRange.start,
107157
+ end: outerRange.start
107158
+ },
107159
+ sequenceLength
107160
+ ) - 1;
107161
+ flippedInnerRange = expandOrContractRangeByLength(
107162
+ outerRange,
107163
+ expandBy1,
107164
+ false,
107165
+ sequenceLength
107166
+ );
107167
+ const expandBy2 = getRangeLength(
107168
+ {
107169
+ end: innerRange.end,
107170
+ start: outerRange.end
107171
+ },
107172
+ sequenceLength
107173
+ ) - 1;
107174
+ flippedInnerRange = expandOrContractRangeByLength(
107175
+ flippedInnerRange,
107176
+ expandBy2,
107177
+ true,
107178
+ sequenceLength
107179
+ );
107124
107180
  } else {
107125
- const overlaps = getOverlapsOfPotentiallyCircularRanges(innerRange, outerRange, sequenceLength);
107181
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
107182
+ innerRange,
107183
+ outerRange,
107184
+ sequenceLength
107185
+ );
107126
107186
  if (overlaps.length >= 1) {
107127
107187
  let overlapExtendsForward;
107128
107188
  const firstOverlap = overlaps[0];
107129
107189
  overlapExtendsForward = firstOverlap.start !== outerRange.start;
107130
- const flippedTruncatedInner = flipFullyContainedRange(firstOverlap, outerRange, sequenceLength);
107190
+ const flippedTruncatedInner = flipFullyContainedRange(
107191
+ firstOverlap,
107192
+ outerRange,
107193
+ sequenceLength
107194
+ );
107131
107195
  const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
107132
- flippedInnerRange = expandOrContractRangeByLength(flippedTruncatedInner, lengthToExtend, overlapExtendsForward, sequenceLength);
107196
+ flippedInnerRange = expandOrContractRangeByLength(
107197
+ flippedTruncatedInner,
107198
+ lengthToExtend,
107199
+ overlapExtendsForward,
107200
+ sequenceLength
107201
+ );
107133
107202
  } else {
107134
- throw new Error("This case (relative ranges that do not overlap) is unsupported! ");
107203
+ throw new Error(
107204
+ "This case (relative ranges that do not overlap) is unsupported! "
107205
+ );
107135
107206
  }
107136
107207
  }
107137
107208
  return flippedInnerRange;
107138
107209
  }
107139
107210
  function flipFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
107140
107211
  const translateBy = -outerRange.start;
107141
- const translatedOuterRange = translateRange(outerRange, translateBy, sequenceLength);
107142
- const translatedInnerRange = translateRange(innerRange, translateBy, sequenceLength);
107143
- const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(translatedInnerRange, translatedOuterRange, sequenceLength);
107144
- const flippedInnerRange = translateRange(translatedFlippedInnerRange, -translateBy, sequenceLength);
107212
+ const translatedOuterRange = translateRange(
107213
+ outerRange,
107214
+ translateBy,
107215
+ sequenceLength
107216
+ );
107217
+ const translatedInnerRange = translateRange(
107218
+ innerRange,
107219
+ translateBy,
107220
+ sequenceLength
107221
+ );
107222
+ const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
107223
+ translatedInnerRange,
107224
+ translatedOuterRange,
107225
+ sequenceLength
107226
+ );
107227
+ const flippedInnerRange = translateRange(
107228
+ translatedFlippedInnerRange,
107229
+ -translateBy,
107230
+ sequenceLength
107231
+ );
107145
107232
  return flippedInnerRange;
107146
107233
  }
107147
107234
  function flipNonOriginSpanningContainedRange(innerRange, outerRange, sequenceLength) {
@@ -107313,9 +107400,15 @@ function trimNumberToFitWithin0ToAnotherNumber(numberToBeTrimmed, max) {
107313
107400
  }
107314
107401
 
107315
107402
  function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
107316
- const trimmedSubRange = trimRangeByAnotherRange(subRange, containerRange, sequenceLength);
107403
+ const trimmedSubRange = trimRangeByAnotherRange(
107404
+ subRange,
107405
+ containerRange,
107406
+ sequenceLength
107407
+ );
107317
107408
  if (trimmedSubRange) {
107318
- throw new Error("subRange must be fully contained by containerRange! Otherwise this function does not make sense");
107409
+ throw new Error(
107410
+ "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
107411
+ );
107319
107412
  }
107320
107413
  const newSubrange = {};
107321
107414
  newSubrange.start = subRange.start - containerRange.start;
@@ -107342,12 +107435,24 @@ function modulo(n, m) {
107342
107435
  }
107343
107436
 
107344
107437
  function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
107345
- const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(getOverlapsOfPotentiallyCircularRanges(annotation, selection, sequenceLength), sequenceLength, annotation);
107438
+ const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
107439
+ getOverlapsOfPotentiallyCircularRanges(
107440
+ annotation,
107441
+ selection,
107442
+ sequenceLength
107443
+ ),
107444
+ sequenceLength,
107445
+ annotation
107446
+ );
107346
107447
  const zeroedOverlaps = overlaps.map((overlap) => {
107347
- return zeroSubrangeByContainerRange(overlap, {
107348
- start: selection.start,
107349
- end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
107350
- }, sequenceLength);
107448
+ return zeroSubrangeByContainerRange(
107449
+ overlap,
107450
+ {
107451
+ start: selection.start,
107452
+ end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
107453
+ },
107454
+ sequenceLength
107455
+ );
107351
107456
  });
107352
107457
  return zeroedOverlaps;
107353
107458
  }
@@ -114053,7 +114158,7 @@ const calcTmMethods = {
114053
114158
  calculateTemperature: function(sequence, type, A, R, C, Na) {
114054
114159
  if (typeof type === "undefined") {
114055
114160
  type = this.TABLE_BRESLAUER;
114056
- } else if (type != this.TABLE_BRESLAUER && (type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO)) {
114161
+ } else if (type != this.TABLE_BRESLAUER && type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO) {
114057
114162
  throw new Error("Invalid table type!");
114058
114163
  }
114059
114164
  if (!A) {
@@ -122312,12 +122417,7 @@ function findSequenceMatches(sequence, searchString, options = {}) {
122312
122417
  return matches;
122313
122418
  }
122314
122419
  function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
122315
- const {
122316
- isCircular,
122317
- isAmbiguous,
122318
- isProteinSequence,
122319
- isProteinSearch
122320
- } = options;
122420
+ const { isCircular, isAmbiguous, isProteinSequence, isProteinSearch } = options;
122321
122421
  let searchStringToUse = escapeStringRegexp(searchString);
122322
122422
  if (isAmbiguous) {
122323
122423
  if (isProteinSearch || isProteinSequence) {
@@ -122399,7 +122499,10 @@ function convertAmbiguousStringToRegex(string, isProtein) {
122399
122499
 
122400
122500
  function getComplementSequenceString(sequence, isRna) {
122401
122501
  let complementSeqString = "";
122402
- const complementMap = lodashExports.merge(DNAComplementMap, isRna ? { a: "u", A: "U" } : { a: "t", A: "T" });
122502
+ const complementMap = lodashExports.merge(
122503
+ DNAComplementMap,
122504
+ isRna ? { a: "u", A: "U" } : { a: "t", A: "T" }
122505
+ );
122403
122506
  for (let i = 0; i < sequence.length; i++) {
122404
122507
  let complementChar = complementMap[sequence[i]];
122405
122508
  if (!complementChar) {
@@ -122986,6 +123089,19 @@ function createInitialSequence(options) {
122986
123089
  };
122987
123090
  }
122988
123091
 
123092
+ function extractFileExtension(name) {
123093
+ if (typeof name === "string") {
123094
+ let ext = "";
123095
+ const match = name.match(/\.(\w+)$/);
123096
+ if (match && match[1]) {
123097
+ ext = match[1];
123098
+ }
123099
+ return ext;
123100
+ } else {
123101
+ return "";
123102
+ }
123103
+ }
123104
+
122989
123105
  function splitStringIntoLines(string) {
122990
123106
  let lines = [];
122991
123107
  if (string === "") {
@@ -123559,7 +123675,11 @@ function validateSequenceArray(parsingResultArray, options) {
123559
123675
  return parsingResultArray;
123560
123676
  }
123561
123677
 
123562
- function fastaToJson(fileString, options) {
123678
+ function fastaToJson(fileString, options = {}) {
123679
+ const ext = extractFileExtension(options.fileName);
123680
+ if (/^(faa)$/.test(ext)) {
123681
+ options.isProtein = true;
123682
+ }
123563
123683
  let resultArray = [];
123564
123684
  let result = null;
123565
123685
  try {
@@ -126031,19 +126151,6 @@ function parseSbolJson(sbolJson, options) {
126031
126151
  };
126032
126152
  }
126033
126153
 
126034
- function extractFileExtension(name) {
126035
- if (typeof name === "string") {
126036
- let ext = "";
126037
- const match = name.match(/\.(\w+)$/);
126038
- if (match && match[1]) {
126039
- ext = match[1];
126040
- }
126041
- return ext;
126042
- } else {
126043
- return "";
126044
- }
126045
- }
126046
-
126047
126154
  /*!
126048
126155
  * Copyright 2008 Fair Oaks Labs, Inc.
126049
126156
  * All rights reserved.
@@ -135066,10 +135173,7 @@ async function geneiousXmlToJson(string, options) {
135066
135173
  });
135067
135174
  }
135068
135175
  });
135069
- const toRet = lodashExports.filter(
135070
- resultArray,
135071
- (r) => r?.parsedSequence?.sequence?.length
135072
- );
135176
+ const toRet = lodashExports.filter(resultArray, (r) => r?.parsedSequence?.sequence?.length);
135073
135177
  if (toRet.length)
135074
135178
  return toRet;
135075
135179
  return onFileParsed(resultArray);
@@ -135171,10 +135275,7 @@ async function jbeiXmlToJson(string, options) {
135171
135275
  messages: ["Error while parsing JBEI format"]
135172
135276
  });
135173
135277
  }
135174
- const toRet = lodashExports.filter(
135175
- resultArray,
135176
- (r) => r?.parsedSequence?.sequence?.length
135177
- );
135278
+ const toRet = lodashExports.filter(resultArray, (r) => r?.parsedSequence?.sequence?.length);
135178
135279
  if (toRet.length)
135179
135280
  return toRet;
135180
135281
  return onFileParsed(resultArray);
@@ -135760,7 +135861,7 @@ async function anyToJson(fileContentStringOrFileObj, options) {
135760
135861
  );
135761
135862
  }
135762
135863
  }
135763
- if (/^(fasta|fas|fa|fna|ffn)$/.test(ext)) {
135864
+ if (/^(fasta|fas|fa|fna|ffn|faa)$/.test(ext)) {
135764
135865
  return fastaToJson(fileContentString, options);
135765
135866
  } else if (/^(gb|gbk)$/.test(ext)) {
135766
135867
  return genbankToJson(fileContentString, options);
@@ -138449,10 +138550,7 @@ const lastSavedId$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.definePrope
138449
138550
  lastSavedIdUpdate
138450
138551
  }, Symbol.toStringTag, { value: 'Module' }));
138451
138552
 
138452
- const toggleReadOnlyMode = createMetaAction(
138453
- "TOGGLE_READ_ONLY_MODE",
138454
- lodashExports.noop
138455
- );
138553
+ const toggleReadOnlyMode = createMetaAction("TOGGLE_READ_ONLY_MODE", lodashExports.noop);
138456
138554
  const updateReadOnlyMode = createMetaAction("UPDATE_READ_ONLY_MODE");
138457
138555
  const readOnly = createReducer(
138458
138556
  {
@@ -142165,6 +142263,9 @@ function showAddOrEditAnnotationDialog({
142165
142263
  overrideName: `AddOrEdit${nameUpper}DialogOverride`,
142166
142264
  dialogType,
142167
142265
  props: {
142266
+ ...annotation.isEditLocked && {
142267
+ readOnly: typeof annotation.isEditLocked === "string" ? annotation.isEditLocked : "This annotation is locked"
142268
+ },
142168
142269
  dialogProps: {
142169
142270
  title: annotation && annotation.id ? `Edit ${nameUpper}` : `New ${nameUpper}`
142170
142271
  },
@@ -142806,7 +142907,8 @@ function mapStateToProps(state, ownProps) {
142806
142907
  editorName,
142807
142908
  sequenceData: sequenceDataFromProps,
142808
142909
  allowSeqDataOverride,
142809
- allowMultipleFeatureDirections
142910
+ allowMultipleFeatureDirections,
142911
+ readOnly
142810
142912
  } = ownProps;
142811
142913
  const editorState = getEditorState(state, editorName);
142812
142914
  const meta = { editorName };
@@ -142866,6 +142968,7 @@ function mapStateToProps(state, ownProps) {
142866
142968
  const f = getFindTool(findTool, matchesTotal);
142867
142969
  return {
142868
142970
  ...editorState,
142971
+ readOnly: readOnly || editorState.readOnly,
142869
142972
  meta,
142870
142973
  annotationToAdd,
142871
142974
  ...newSelection && { selectionLayer: newSelection },
@@ -161050,7 +161153,7 @@ function showFileDialog({ multiple = false, onSelect }) {
161050
161153
  }
161051
161154
 
161052
161155
  const name = "@teselagen/ove";
161053
- const version = "0.3.9";
161156
+ const version = "0.3.11";
161054
161157
  const main = "./src/index.js";
161055
161158
  const exports$1 = {
161056
161159
  ".": {
@@ -161660,7 +161763,7 @@ const fileCommandDefs = {
161660
161763
  isHidden: isProtein
161661
161764
  },
161662
161765
  deleteSequence: {
161663
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || !props.onDelete,
161766
+ isDisabled: (props) => props.disableBpEditing && bpEditingDisabledTooltip || props.readOnly && readOnlyDisabledTooltip || !props.onDelete,
161664
161767
  isHidden: (props) => !props.onDelete,
161665
161768
  handler: (props) => props.onDelete(props.sequenceData)
161666
161769
  },
@@ -161859,6 +161962,7 @@ Object.keys(defaultCopyOptions).forEach((type) => {
161859
161962
  };
161860
161963
  });
161861
161964
  const readOnlyDisabledTooltip = "Sorry this function is not allowed in Read-Only Mode";
161965
+ const bpEditingDisabledTooltip = "Sequence Editing Disabled";
161862
161966
  const noSelection = ({ selectionLayer = {} }) => !(selectionLayer.start > -1 && selectionLayer.end > -1) && "Selection Required";
161863
161967
  const triggerClipboardCommand = (type) => {
161864
161968
  const wrapper = document.querySelector(".veVectorInteractionWrapper");
@@ -161890,8 +161994,8 @@ const editCommandDefs = {
161890
161994
  handler: lodashExports.noop
161891
161995
  },
161892
161996
  cut: {
161893
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
161894
- isHidden: (props) => props.readOnly,
161997
+ isDisabled: (props) => props.disableBpEditing && bpEditingDisabledTooltip || props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
161998
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
161895
161999
  handler: () => {
161896
162000
  triggerClipboardCommand("cut");
161897
162001
  },
@@ -161916,7 +162020,7 @@ const editCommandDefs = {
161916
162020
  },
161917
162021
  paste: {
161918
162022
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
161919
- isHidden: (props) => props.readOnly,
162023
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
161920
162024
  handler: () => triggerClipboardCommand("paste"),
161921
162025
  hotkey: "mod+v"
161922
162026
  },
@@ -162070,12 +162174,12 @@ const editCommandDefs = {
162070
162174
  hotkey: "mod+i"
162071
162175
  },
162072
162176
  complementSelection: {
162073
- isHidden: (props) => props.readOnly || isProtein(props),
162177
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162074
162178
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props),
162075
162179
  handler: (props) => props.handleComplementSelection()
162076
162180
  },
162077
162181
  complementEntireSequence: {
162078
- isHidden: (props) => props.readOnly || isProtein(props),
162182
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162079
162183
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
162080
162184
  handler: (props) => props.handleComplementSequence()
162081
162185
  },
@@ -162227,13 +162331,13 @@ const editCommandDefs = {
162227
162331
  // }
162228
162332
  // },
162229
162333
  reverseComplementSelection: {
162230
- isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props),
162334
+ isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || noSelection(props) || props.disableBpEditing,
162231
162335
  isHidden: (props) => props.readOnly || isProtein(props),
162232
162336
  handler: (props) => props.handleReverseComplementSelection(),
162233
162337
  hotkey: "mod+e"
162234
162338
  },
162235
162339
  reverseComplementEntireSequence: {
162236
- isHidden: (props) => props.readOnly || isProtein(props),
162340
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162237
162341
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0,
162238
162342
  handler: (props) => props.handleReverseComplementSequence()
162239
162343
  },
@@ -162383,7 +162487,7 @@ const editCommandDefs = {
162383
162487
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.sequenceLength === 0
162384
162488
  },
162385
162489
  rotateToCaretPosition: {
162386
- isHidden: (props) => props.readOnly || isProtein(props),
162490
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162387
162491
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip || props.caretPosition === -1 && "You must first place cursor" || !props.sequenceData.circular && "Disabled for Linear Sequences" || props.sequenceLength === 0,
162388
162492
  handler: (props) => props.handleRotateToCaretPosition(),
162389
162493
  hotkey: "mod+b"
@@ -162392,13 +162496,13 @@ const editCommandDefs = {
162392
162496
  };
162393
162497
  const cirularityCommandDefs = {
162394
162498
  circular: {
162395
- isHidden: (props) => props.readOnly || isProtein(props),
162499
+ isHidden: (props) => props.readOnly || isProtein(props) || props.disableBpEditing,
162396
162500
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
162397
162501
  handler: (props) => props.updateCircular(true),
162398
162502
  isActive: (props) => props && props.sequenceData.circular
162399
162503
  },
162400
162504
  linear: {
162401
- isHidden: (props) => props.readOnly,
162505
+ isHidden: (props) => props.readOnly || props.disableBpEditing,
162402
162506
  isDisabled: (props) => props.readOnly && readOnlyDisabledTooltip,
162403
162507
  handler: (props) => props.updateCircular(false),
162404
162508
  isActive: (props) => props && !props.sequenceData.circular
@@ -162425,29 +162529,27 @@ const nicheAnnotations = [
162425
162529
  }
162426
162530
  ];
162427
162531
  const labelToggleCommandDefs = {};
162428
- ["feature", "part", "cutsite", "primer", ...nicheAnnotations].forEach(
162429
- (_type) => {
162430
- let rest = {};
162431
- let type = _type;
162432
- if (_type.type) {
162433
- type = _type.type.slice(0, -1);
162434
- rest = _type;
162435
- }
162436
- const cmdId = `toggle${lodashExports.upperFirst(type)}Labels`;
162437
- const plural = type + "s";
162438
- labelToggleCommandDefs[cmdId] = {
162439
- toggle: ["show", "hide"],
162440
- handler: (props) => props.annotationLabelVisibilityToggle(plural),
162441
- isHidden: (props) => {
162442
- return props && props.typesToOmit && props.typesToOmit[plural] === false;
162443
- },
162444
- ...rest,
162445
- isActive: (props) => {
162446
- return props && props.annotationLabelVisibility[plural];
162447
- }
162448
- };
162449
- }
162450
- );
162532
+ ["feature", "part", "cutsite", "primer", ...nicheAnnotations].forEach((_type) => {
162533
+ let rest = {};
162534
+ let type = _type;
162535
+ if (_type.type) {
162536
+ type = _type.type.slice(0, -1);
162537
+ rest = _type;
162538
+ }
162539
+ const cmdId = `toggle${lodashExports.upperFirst(type)}Labels`;
162540
+ const plural = type + "s";
162541
+ labelToggleCommandDefs[cmdId] = {
162542
+ toggle: ["show", "hide"],
162543
+ handler: (props) => props.annotationLabelVisibilityToggle(plural),
162544
+ isHidden: (props) => {
162545
+ return props && props.typesToOmit && props.typesToOmit[plural] === false;
162546
+ },
162547
+ ...rest,
162548
+ isActive: (props) => {
162549
+ return props && props.annotationLabelVisibility[plural];
162550
+ }
162551
+ };
162552
+ });
162451
162553
  const editAnnotationCommandDefs = ["feature", "part", "primer"].reduce(
162452
162554
  (acc, key) => {
162453
162555
  acc[`edit${lodashExports.upperFirst(key)}`] = {
@@ -166636,8 +166738,12 @@ function VectorInteractionHOC(Component) {
166636
166738
  caretPosition = -1,
166637
166739
  selectionLayer = { start: -1, end: -1 },
166638
166740
  readOnly,
166639
- onPaste
166741
+ onPaste,
166742
+ disableBpEditing
166640
166743
  } = this.props;
166744
+ if (disableBpEditing) {
166745
+ return window.toastr.warning("Sorry the underlying sequence is locked");
166746
+ }
166641
166747
  if (readOnly) {
166642
166748
  return window.toastr.warning("Sorry the sequence is Read-Only");
166643
166749
  }
@@ -166678,6 +166784,7 @@ function VectorInteractionHOC(Component) {
166678
166784
  sequenceData,
166679
166785
  selectionLayer,
166680
166786
  copyOptions,
166787
+ disableBpEditing,
166681
166788
  readOnly
166682
166789
  } = this.props;
166683
166790
  const onCut = this.props.onCut || this.props.onCopy || lodashExports.noop;
@@ -166703,7 +166810,7 @@ function VectorInteractionHOC(Component) {
166703
166810
  );
166704
166811
  if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
166705
166812
  return window.toastr.warning(
166706
- `No Sequence Selected To ${isCut && !readOnly ? "Cut" : "Copy"}`
166813
+ `No Sequence Selected To ${isCut && !(readOnly || disableBpEditing) ? "Cut" : "Copy"}`
166707
166814
  );
166708
166815
  const clipboardData = e.clipboardData;
166709
166816
  const textToCopy = (this.sequenceDataToCopy || {}).textToCopy !== void 0 ? this.sequenceDataToCopy.textToCopy : seqData.isProtein ? seqData.proteinSequence : seqData.sequence;
@@ -166711,7 +166818,7 @@ function VectorInteractionHOC(Component) {
166711
166818
  clipboardData.setData("text/plain", textToCopy);
166712
166819
  clipboardData.setData("application/json", JSON.stringify(seqData));
166713
166820
  e.preventDefault();
166714
- if (isCut && !readOnly) {
166821
+ if (isCut && !(readOnly || disableBpEditing) && !disableBpEditing) {
166715
166822
  this.handleDnaDelete(false);
166716
166823
  onCut(
166717
166824
  e,
@@ -166724,7 +166831,7 @@ function VectorInteractionHOC(Component) {
166724
166831
  document.body.removeEventListener("copy", this.handleCopy);
166725
166832
  }
166726
166833
  window.toastr.success(
166727
- `Selection ${isCut && !readOnly ? "Cut" : "Copied"}`
166834
+ `Selection ${isCut && !(readOnly || disableBpEditing) && !disableBpEditing ? "Cut" : "Copied"}`
166728
166835
  );
166729
166836
  this.sequenceDataToCopy = void 0;
166730
166837
  };
@@ -166735,14 +166842,18 @@ function VectorInteractionHOC(Component) {
166735
166842
  caretPosition = -1,
166736
166843
  selectionLayer = { start: -1, end: -1 },
166737
166844
  sequenceData = { sequence: "" },
166738
- readOnly
166845
+ readOnly,
166846
+ disableBpEditing
166739
166847
  // updateSequenceData,
166740
166848
  // wrappedInsertSequenceDataAtPositionOrRange
166741
166849
  // handleInsert
166742
166850
  } = this.props;
166743
166851
  const sequenceLength = sequenceData.sequence.length;
166744
166852
  const isReplace = selectionLayer.start > -1;
166745
- if (readOnly) {
166853
+ if (disableBpEditing) {
166854
+ return window.toastr.warning("Sorry the underlying sequence is locked");
166855
+ }
166856
+ if (readOnly || disableBpEditing) {
166746
166857
  window.toastr.warning("Sorry the sequence is Read-Only");
166747
166858
  } else {
166748
166859
  createSequenceInputPopup({
@@ -166770,13 +166881,17 @@ function VectorInteractionHOC(Component) {
166770
166881
  selectionLayer = { start: -1, end: -1 },
166771
166882
  sequenceData = { sequence: "" },
166772
166883
  readOnly,
166884
+ disableBpEditing,
166773
166885
  updateSequenceData,
166774
166886
  wrappedInsertSequenceDataAtPositionOrRange,
166775
166887
  caretPositionUpdate
166776
166888
  // handleInsert
166777
166889
  } = this.props;
166778
166890
  const sequenceLength = sequenceData.sequence.length;
166779
- if (readOnly) {
166891
+ if (disableBpEditing) {
166892
+ return window.toastr.warning("Sorry the underlying sequence is locked");
166893
+ }
166894
+ if (readOnly || disableBpEditing) {
166780
166895
  return window.toastr.warning("Sorry the sequence is Read-Only");
166781
166896
  }
166782
166897
  if (sequenceLength > 0) {
@@ -166907,7 +167022,7 @@ function VectorInteractionHOC(Component) {
166907
167022
  };
166908
167023
  // eslint-disable-next-line no-unused-vars
166909
167024
  getCopyOptions = (annotation) => {
166910
- const { sequenceData, readOnly, selectionLayer } = this.props;
167025
+ const { sequenceData, readOnly, disableBpEditing, selectionLayer } = this.props;
166911
167026
  const { isProtein } = sequenceData;
166912
167027
  const makeTextCopyable = (transformFunc, className, action = "copy") => {
166913
167028
  return new Clipboard$1(`.${className}`, {
@@ -166967,7 +167082,7 @@ function VectorInteractionHOC(Component) {
166967
167082
  }
166968
167083
  };
166969
167084
  return [
166970
- ...readOnly ? [] : [
167085
+ ...readOnly || disableBpEditing ? [] : [
166971
167086
  {
166972
167087
  text: "Replace",
166973
167088
  ...this.insertHelper
@@ -167041,21 +167156,14 @@ function VectorInteractionHOC(Component) {
167041
167156
  this.openVeCopyAAReverse && this.openVeCopyAAReverse.destroy();
167042
167157
  },
167043
167158
  didMount: ({ className }) => {
167044
- this.openVeCopyAAReverse = makeTextCopyable(
167045
- (selectedSeqData) => {
167046
- const revSeqData = getReverseComplementSequenceAndAnnoations(
167047
- selectedSeqData
167048
- );
167049
- const textToCopy = isProtein ? revSeqData.proteinSequence.toUpperCase() : getAminoAcidStringFromSequenceString(
167050
- revSeqData.sequence
167051
- );
167052
- return {
167053
- ...revSeqData,
167054
- textToCopy
167055
- };
167056
- },
167057
- className
167058
- );
167159
+ this.openVeCopyAAReverse = makeTextCopyable((selectedSeqData) => {
167160
+ const revSeqData = getReverseComplementSequenceAndAnnoations(selectedSeqData);
167161
+ const textToCopy = isProtein ? revSeqData.proteinSequence.toUpperCase() : getAminoAcidStringFromSequenceString(revSeqData.sequence);
167162
+ return {
167163
+ ...revSeqData,
167164
+ textToCopy
167165
+ };
167166
+ }, className);
167059
167167
  }
167060
167168
  },
167061
167169
  {
@@ -167162,11 +167270,12 @@ function VectorInteractionHOC(Component) {
167162
167270
  ({ nearestCaretPos, shiftHeld, event }) => {
167163
167271
  this.updateSelectionOrCaret(shiftHeld, nearestCaretPos);
167164
167272
  const {
167165
- readOnly
167273
+ readOnly,
167274
+ disableBpEditing
167166
167275
  // sequenceData: { circular }
167167
167276
  } = this.props;
167168
167277
  const menu = [
167169
- ...readOnly ? [] : [
167278
+ ...readOnly || disableBpEditing ? [] : [
167170
167279
  {
167171
167280
  text: "Insert",
167172
167281
  ...this.insertHelper
@@ -167212,8 +167321,7 @@ function VectorInteractionHOC(Component) {
167212
167321
  overlapsSelf: annotation.overlapsSelf
167213
167322
  });
167214
167323
  return [
167215
- "editPart",
167216
- "deletePart",
167324
+ ...getEditDeleteHandlers("Part", annotation),
167217
167325
  "--",
167218
167326
  ...this.getSelectionMenuOptions(annotation),
167219
167327
  "--",
@@ -167255,8 +167363,7 @@ function VectorInteractionHOC(Component) {
167255
167363
  event.persist();
167256
167364
  const { readOnly, annotationsToSupport: { parts } = {} } = this.props;
167257
167365
  return [
167258
- "editFeature",
167259
- "deleteFeature",
167366
+ ...getEditDeleteHandlers("Feature", annotation),
167260
167367
  ...this.getSelectionMenuOptions(annotation),
167261
167368
  ...readOnly ? [] : [
167262
167369
  ...parts && [
@@ -167323,8 +167430,7 @@ function VectorInteractionHOC(Component) {
167323
167430
  end: annotation.end
167324
167431
  });
167325
167432
  return [
167326
- "editPrimer",
167327
- "deletePrimer",
167433
+ ...getEditDeleteHandlers("Primer", annotation),
167328
167434
  ...this.getSelectionMenuOptions(annotation),
167329
167435
  "showRemoveDuplicatesDialogPrimers",
167330
167436
  "viewPrimerProperties"
@@ -167534,6 +167640,28 @@ const insertAndSelectHelper = ({ seqDataToInsert, props }) => {
167534
167640
  end: newSelectionLayerEnd % newSeqData.sequence.length
167535
167641
  });
167536
167642
  };
167643
+ function getEditDeleteHandlers(type, annotation) {
167644
+ return [
167645
+ ...annotation.isEditLocked ? [
167646
+ {
167647
+ shouldDismissPopover: false,
167648
+ text: /* @__PURE__ */ React__default$1.createElement(
167649
+ "div",
167650
+ {
167651
+ style: {
167652
+ fontSize: 11,
167653
+ fontStyle: "italic",
167654
+ color: "rgba(0,0,0,.5)"
167655
+ }
167656
+ },
167657
+ typeof annotation.isEditLocked === "string" ? annotation.isEditLocked : `Note: This Annotation is Locked`
167658
+ )
167659
+ }
167660
+ ] : [],
167661
+ `edit${type}`,
167662
+ ...annotation.isEditLocked ? [] : [`delete${type}`]
167663
+ ];
167664
+ }
167537
167665
 
167538
167666
  const style$i = '';
167539
167667
 
@@ -174691,7 +174819,11 @@ const GoToDialog = createSimpleDialog({
174691
174819
  }
174692
174820
  }
174693
174821
  ],
174694
- withDialogProps: { title: "Go To", height: 190, onCloseHook: tryToRefocusEditor }
174822
+ withDialogProps: {
174823
+ title: "Go To",
174824
+ height: 190,
174825
+ onCloseHook: tryToRefocusEditor
174826
+ }
174695
174827
  });
174696
174828
 
174697
174829
  const validate$1 = (val, vals, props) => {
@@ -177351,6 +177483,7 @@ class AddOrEditAnnotationDialog extends React__default$1.Component {
177351
177483
  overlapsSelf,
177352
177484
  start,
177353
177485
  end,
177486
+ readOnly,
177354
177487
  getAdditionalEditAnnotationComps,
177355
177488
  advancedOptions,
177356
177489
  advancedDefaultOpen,
@@ -177445,10 +177578,11 @@ class AddOrEditAnnotationDialog extends React__default$1.Component {
177445
177578
  "tg-upsert-annotation"
177446
177579
  )
177447
177580
  },
177581
+ typeof readOnly === "string" ? /* @__PURE__ */ React__default$1.createElement(Callout, { intent: "primary", style: { marginBottom: 10 } }, readOnly) : null,
177448
177582
  /* @__PURE__ */ React__default$1.createElement(
177449
177583
  InputField,
177450
177584
  {
177451
- disabled: this.props.readOnly,
177585
+ disabled: readOnly,
177452
177586
  inlineLabel: true,
177453
177587
  tooltipError: true,
177454
177588
  autoFocus: true,
@@ -180386,15 +180520,15 @@ class Browser {
180386
180520
  }
180387
180521
  // Edge 20+
180388
180522
  static isEdge() {
180389
- return Browser.isBrowser() && (!Browser.isIE() && !!window.StyleMedia);
180523
+ return Browser.isBrowser() && !Browser.isIE() && !!window.StyleMedia;
180390
180524
  }
180391
180525
  // Chrome 1+
180392
180526
  static isChrome() {
180393
- return Browser.isBrowser() && (!!window.chrome && !!window.chrome.webstore);
180527
+ return Browser.isBrowser() && !!window.chrome && !!window.chrome.webstore;
180394
180528
  }
180395
180529
  // Blink engine detection
180396
180530
  static isBlink() {
180397
- return Browser.isBrowser() && ((Browser.isChrome() || Browser.isOpera()) && !!window.CSS);
180531
+ return Browser.isBrowser() && (Browser.isChrome() || Browser.isOpera()) && !!window.CSS;
180398
180532
  }
180399
180533
  static getUserAgent() {
180400
180534
  return typeof navigator === "undefined" ? "" : navigator.userAgent;
@@ -182987,6 +183121,8 @@ const userDefinedHandlersAndOpts = [
182987
183121
  "hideSingleImport",
182988
183122
  "beforeAnnotationCreate",
182989
183123
  "disableSetReadOnly",
183124
+ "allowAnnotationEditLocking",
183125
+ "disableBpEditing",
182990
183126
  "showReadOnly",
182991
183127
  "showCircularity",
182992
183128
  "onHiddenEnzymeAdd",
@@ -184400,9 +184536,7 @@ const genericAnnotationProperties = ({
184400
184536
  AnchorButton,
184401
184537
  {
184402
184538
  onClick: () => {
184403
- deleteAnnotation(
184404
- annotationPropertiesSelectedEntities
184405
- );
184539
+ deleteAnnotation(annotationPropertiesSelectedEntities);
184406
184540
  },
184407
184541
  className: "tgDeleteAnnsBtn",
184408
184542
  intent: "danger",