@teselagen/ove 0.3.55 → 0.3.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.umd.js CHANGED
@@ -23362,6 +23362,21 @@ var __async = (__this, __arguments, generator) => {
23362
23362
  render: render$1
23363
23363
  });
23364
23364
  const tippy = "";
23365
+ let isDragging$1 = false;
23366
+ let canSetDragging = false;
23367
+ document.addEventListener("mousedown", () => {
23368
+ canSetDragging = true;
23369
+ isDragging$1 = false;
23370
+ });
23371
+ document.addEventListener("mousemove", () => {
23372
+ if (canSetDragging) {
23373
+ isDragging$1 = true;
23374
+ }
23375
+ });
23376
+ document.addEventListener("mouseup", () => {
23377
+ canSetDragging = false;
23378
+ isDragging$1 = false;
23379
+ });
23365
23380
  let tippys = [];
23366
23381
  let recentlyHidden = false;
23367
23382
  let clearMe;
@@ -23466,7 +23481,7 @@ var __async = (__this, __arguments, generator) => {
23466
23481
  dataAvoid,
23467
23482
  dataAvoidBackup
23468
23483
  };
23469
- if (dataTip && !document.body.classList.contains("drag-active")) {
23484
+ if (dataTip && !document.body.classList.contains("drag-active") && !isDragging$1) {
23470
23485
  inner2(dataTip, el2, opts2);
23471
23486
  break;
23472
23487
  } else if (isEllipsized && el2.offsetWidth < el2.scrollWidth - 4 && //the -4 is adding a teeny bit of tolerance to fix issues with the column headers getting tooltips even when fully visible
@@ -25891,7 +25906,7 @@ var __async = (__this, __arguments, generator) => {
25891
25906
  }, [onFileDialogCancel]);
25892
25907
  var rootRef = reactExports.useRef(null);
25893
25908
  var inputRef = reactExports.useRef(null);
25894
- var _useReducer = reactExports.useReducer(reducer$1, initialState), _useReducer2 = _slicedToArray$5(_useReducer, 2), state2 = _useReducer2[0], dispatch = _useReducer2[1];
25909
+ var _useReducer = reactExports.useReducer(reducer$2, initialState), _useReducer2 = _slicedToArray$5(_useReducer, 2), state2 = _useReducer2[0], dispatch = _useReducer2[1];
25895
25910
  var isFocused = state2.isFocused, isFileDialogActive = state2.isFileDialogActive, draggedFiles = state2.draggedFiles;
25896
25911
  var onWindowFocus = /* @__PURE__ */ __name(function onWindowFocus2() {
25897
25912
  if (isFileDialogActive) {
@@ -26198,7 +26213,7 @@ var __async = (__this, __arguments, generator) => {
26198
26213
  });
26199
26214
  }
26200
26215
  __name(useDropzone, "useDropzone");
26201
- function reducer$1(state2, action2) {
26216
+ function reducer$2(state2, action2) {
26202
26217
  switch (action2.type) {
26203
26218
  case "focus":
26204
26219
  return _objectSpread$2(_objectSpread$2({}, state2), {}, {
@@ -26233,7 +26248,7 @@ var __async = (__this, __arguments, generator) => {
26233
26248
  return state2;
26234
26249
  }
26235
26250
  }
26236
- __name(reducer$1, "reducer$1");
26251
+ __name(reducer$2, "reducer$2");
26237
26252
  function noop$6() {
26238
26253
  }
26239
26254
  __name(noop$6, "noop$6");
@@ -32266,12 +32281,12 @@ var __async = (__this, __arguments, generator) => {
32266
32281
  return ExtendableBuiltin;
32267
32282
  }
32268
32283
  __name(_extendableBuiltin, "_extendableBuiltin");
32269
- (function(_extendableBuiltin2) {
32270
- _inherits$p(ExtendableError, _extendableBuiltin2);
32271
- function ExtendableError() {
32284
+ var ExtendableError = function(_extendableBuiltin2) {
32285
+ _inherits$p(ExtendableError2, _extendableBuiltin2);
32286
+ function ExtendableError2() {
32272
32287
  var message = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
32273
- _classCallCheck$p(this, ExtendableError);
32274
- var _this = _possibleConstructorReturn$p(this, (ExtendableError.__proto__ || Object.getPrototypeOf(ExtendableError)).call(this, message));
32288
+ _classCallCheck$p(this, ExtendableError2);
32289
+ var _this = _possibleConstructorReturn$p(this, (ExtendableError2.__proto__ || Object.getPrototypeOf(ExtendableError2)).call(this, message));
32275
32290
  Object.defineProperty(_this, "message", {
32276
32291
  configurable: true,
32277
32292
  enumerable: false,
@@ -32296,10 +32311,22 @@ var __async = (__this, __arguments, generator) => {
32296
32311
  });
32297
32312
  return _this;
32298
32313
  }
32299
- __name(ExtendableError, "ExtendableError");
32300
- return ExtendableError;
32301
- })(_extendableBuiltin(Error));
32314
+ __name(ExtendableError2, "ExtendableError");
32315
+ return ExtendableError2;
32316
+ }(_extendableBuiltin(Error));
32302
32317
  var __FLAG__ = "@@redux-form/submission-error-flag";
32318
+ var SubmissionError = /* @__PURE__ */ function(_ExtendableError) {
32319
+ _inheritsLoose$2(SubmissionError2, _ExtendableError);
32320
+ function SubmissionError2(errors) {
32321
+ var _this;
32322
+ _this = _ExtendableError.call(this, "Submit Validation Failed") || this;
32323
+ _this.errors = errors;
32324
+ return _this;
32325
+ }
32326
+ __name(SubmissionError2, "SubmissionError");
32327
+ return SubmissionError2;
32328
+ }(ExtendableError);
32329
+ SubmissionError.__FLAG__ = __FLAG__;
32303
32330
  function isSubmissionError(error) {
32304
32331
  return (error && error.constructor && error.constructor.__FLAG__ === __FLAG__) === true;
32305
32332
  }
@@ -45001,16 +45028,25 @@ ${latestSubscriptionCallbackError.current.stack}
45001
45028
  var _cof = /* @__PURE__ */ __name(function(it) {
45002
45029
  return toString$4.call(it).slice(8, -1);
45003
45030
  }, "_cof");
45004
- var cof$2 = _cof;
45005
- var _iobject = Object("z").propertyIsEnumerable(0) ? Object : function(it) {
45006
- return cof$2(it) == "String" ? it.split("") : Object(it);
45007
- };
45031
+ var _iobject;
45032
+ var hasRequired_iobject;
45033
+ function require_iobject() {
45034
+ if (hasRequired_iobject)
45035
+ return _iobject;
45036
+ hasRequired_iobject = 1;
45037
+ var cof2 = _cof;
45038
+ _iobject = Object("z").propertyIsEnumerable(0) ? Object : function(it) {
45039
+ return cof2(it) == "String" ? it.split("") : Object(it);
45040
+ };
45041
+ return _iobject;
45042
+ }
45043
+ __name(require_iobject, "require_iobject");
45008
45044
  var _defined = /* @__PURE__ */ __name(function(it) {
45009
45045
  if (it == void 0)
45010
45046
  throw TypeError("Can't call method on " + it);
45011
45047
  return it;
45012
45048
  }, "_defined");
45013
- var IObject = _iobject;
45049
+ var IObject = require_iobject();
45014
45050
  var defined$2 = _defined;
45015
45051
  var _toIobject = /* @__PURE__ */ __name(function(it) {
45016
45052
  return IObject(defined$2(it));
@@ -45107,7 +45143,15 @@ ${latestSubscriptionCallbackError.current.stack}
45107
45143
  var _objectGops = {};
45108
45144
  _objectGops.f = Object.getOwnPropertySymbols;
45109
45145
  var _objectPie = {};
45110
- _objectPie.f = {}.propertyIsEnumerable;
45146
+ var hasRequired_objectPie;
45147
+ function require_objectPie() {
45148
+ if (hasRequired_objectPie)
45149
+ return _objectPie;
45150
+ hasRequired_objectPie = 1;
45151
+ _objectPie.f = {}.propertyIsEnumerable;
45152
+ return _objectPie;
45153
+ }
45154
+ __name(require_objectPie, "require_objectPie");
45111
45155
  var defined$1 = _defined;
45112
45156
  var _toObject = /* @__PURE__ */ __name(function(it) {
45113
45157
  return Object(defined$1(it));
@@ -45121,9 +45165,9 @@ ${latestSubscriptionCallbackError.current.stack}
45121
45165
  var DESCRIPTORS2 = _descriptors;
45122
45166
  var getKeys2 = _objectKeys;
45123
45167
  var gOPS2 = _objectGops;
45124
- var pIE2 = _objectPie;
45168
+ var pIE2 = require_objectPie();
45125
45169
  var toObject2 = _toObject;
45126
- var IObject2 = _iobject;
45170
+ var IObject2 = require_iobject();
45127
45171
  var $assign = Object.assign;
45128
45172
  _objectAssign = !$assign || _fails(function() {
45129
45173
  var A2 = {};
@@ -45758,7 +45802,7 @@ ${latestSubscriptionCallbackError.current.stack}
45758
45802
  }, "_wksDefine");
45759
45803
  var getKeys = _objectKeys;
45760
45804
  var gOPS$1 = _objectGops;
45761
- var pIE$1 = _objectPie;
45805
+ var pIE$1 = require_objectPie();
45762
45806
  var _enumKeys = /* @__PURE__ */ __name(function(it) {
45763
45807
  var result = getKeys(it);
45764
45808
  var getSymbols2 = gOPS$1.f;
@@ -45799,7 +45843,7 @@ ${latestSubscriptionCallbackError.current.stack}
45799
45843
  return windowNames && toString$3.call(it) == "[object Window]" ? getWindowNames(it) : gOPN$1(toIObject$2(it));
45800
45844
  }, "getOwnPropertyNames");
45801
45845
  var _objectGopd = {};
45802
- var pIE = _objectPie;
45846
+ var pIE = require_objectPie();
45803
45847
  var createDesc$1 = _propertyDesc;
45804
45848
  var toIObject$1 = _toIobject;
45805
45849
  var toPrimitive$1 = _toPrimitive$1;
@@ -45979,7 +46023,7 @@ ${latestSubscriptionCallbackError.current.stack}
45979
46023
  $GOPD.f = $getOwnPropertyDescriptor;
45980
46024
  $DP.f = $defineProperty;
45981
46025
  _objectGopn.f = gOPNExt.f = $getOwnPropertyNames;
45982
- _objectPie.f = $propertyIsEnumerable;
46026
+ require_objectPie().f = $propertyIsEnumerable;
45983
46027
  $GOPS.f = $getOwnPropertySymbols;
45984
46028
  if (DESCRIPTORS && !_library) {
45985
46029
  redefine(ObjectProto, "propertyIsEnumerable", $propertyIsEnumerable);
@@ -86111,6 +86155,16 @@ ${latestSubscriptionCallbackError.current.stack}
86111
86155
  lodashExports.set(entity, path2, nv);
86112
86156
  return { entity, error };
86113
86157
  }, "editCellHelper");
86158
+ const throwFormError = /* @__PURE__ */ __name((error) => {
86159
+ if (error.message) {
86160
+ console.error("error:", error);
86161
+ }
86162
+ const errorToUse = error.message ? { _error: error.message } : typeof error === "string" ? { _error: error } : error;
86163
+ if (!errorToUse._error) {
86164
+ errorToUse._error = "Error Submitting Form";
86165
+ }
86166
+ throw new SubmissionError(errorToUse);
86167
+ }, "throwFormError");
86114
86168
  T$1();
86115
86169
  const PRIMARY_SELECTED_VAL = "main_cell";
86116
86170
  dayjs.extend(localizedFormat);
@@ -86608,7 +86662,12 @@ ${latestSubscriptionCallbackError.current.stack}
86608
86662
  const { change: change2, schema: schema2 } = computePresets(this.props);
86609
86663
  change2(
86610
86664
  "reduxFormCellValidation",
86611
- validateTableWideErrors({ entities, schema: schema2, newCellValidate })
86665
+ validateTableWideErrors({
86666
+ entities,
86667
+ schema: schema2,
86668
+ newCellValidate,
86669
+ props: this.props
86670
+ })
86612
86671
  );
86613
86672
  }, "updateValidation"));
86614
86673
  __publicField(this, "handleDeleteCell", /* @__PURE__ */ __name(() => {
@@ -86708,7 +86767,7 @@ ${latestSubscriptionCallbackError.current.stack}
86708
86767
  }, "updateEntitiesHelper"));
86709
86768
  __publicField(this, "getRowCopyText", /* @__PURE__ */ __name((rowEl, { specificColumn } = {}) => {
86710
86769
  if (!rowEl)
86711
- return;
86770
+ return [];
86712
86771
  const textContent = [];
86713
86772
  const jsonText = [];
86714
86773
  lodashExports.forEach(rowEl.children, (cellEl) => {
@@ -87954,6 +88013,54 @@ ${latestSubscriptionCallbackError.current.stack}
87954
88013
  return "";
87955
88014
  return stringText;
87956
88015
  }, "getCopyTextForCell"));
88016
+ __publicField(this, "addEditableTableEntities", /* @__PURE__ */ __name((incomingEnts) => {
88017
+ const { entities = [], reduxFormCellValidation } = computePresets(
88018
+ this.props
88019
+ );
88020
+ this.updateEntitiesHelper(entities, (entities2) => {
88021
+ const newEntities = incomingEnts.map((e2) => __spreadProps(__spreadValues({}, e2), {
88022
+ id: e2.id || nanoid(),
88023
+ _isClean: false
88024
+ }));
88025
+ const { newEnts, validationErrors } = this.formatAndValidateEntities(
88026
+ newEntities,
88027
+ {
88028
+ useDefaultValues: true,
88029
+ indexToStartAt: entities2.length
88030
+ }
88031
+ );
88032
+ if (lodashExports.every(entities2, "_isClean")) {
88033
+ lodashExports.forEach(newEnts, (e2, i2) => {
88034
+ entities2[i2] = e2;
88035
+ });
88036
+ } else {
88037
+ entities2.splice(entities2.length, 0, ...newEnts);
88038
+ }
88039
+ this.updateValidation(entities2, __spreadValues(__spreadValues({}, reduxFormCellValidation), validationErrors));
88040
+ });
88041
+ }, "addEditableTableEntities"));
88042
+ __publicField(this, "getEditableTableInfoAndThrowFormError", /* @__PURE__ */ __name(() => {
88043
+ const { schema: schema2, reduxFormEntities, reduxFormCellValidation } = computePresets(this.props);
88044
+ const { entsToUse, validationToUse } = removeCleanRows(
88045
+ reduxFormEntities,
88046
+ reduxFormCellValidation
88047
+ );
88048
+ const validationWTableErrs = validateTableWideErrors({
88049
+ entities: entsToUse,
88050
+ schema: schema2,
88051
+ newCellValidate: validationToUse
88052
+ });
88053
+ if (!(entsToUse == null ? void 0 : entsToUse.length)) {
88054
+ throwFormError(
88055
+ "Please add at least one row to the table before submitting."
88056
+ );
88057
+ }
88058
+ const invalid = lodashExports.isEmpty(validationWTableErrs) || !lodashExports.some(validationWTableErrs, (v2) => v2) ? void 0 : validationWTableErrs;
88059
+ if (invalid) {
88060
+ throwFormError("Please fix the errors in the table before submitting.");
88061
+ }
88062
+ return entsToUse;
88063
+ }, "getEditableTableInfoAndThrowFormError"));
87957
88064
  __publicField(this, "insertRows", /* @__PURE__ */ __name(({ above, numRows = 1, appendToBottom } = {}) => {
87958
88065
  const { entities = [], reduxFormCellValidation } = computePresets(
87959
88066
  this.props
@@ -88346,6 +88453,10 @@ ${latestSubscriptionCallbackError.current.stack}
88346
88453
  )
88347
88454
  );
88348
88455
  }, "renderColumnHeader"));
88456
+ if (this.props.helperProp) {
88457
+ this.props.helperProp.addEditableTableEntities = this.addEditableTableEntities;
88458
+ this.props.helperProp.getEditableTableInfoAndThrowFormError = this.getEditableTableInfoAndThrowFormError;
88459
+ }
88349
88460
  this.hotkeyEnabler = withHotkeys(__spreadProps(__spreadValues({
88350
88461
  moveUpARow: {
88351
88462
  global: false,
@@ -88943,16 +89054,25 @@ ${latestSubscriptionCallbackError.current.stack}
88943
89054
  this.table = n2;
88944
89055
  },
88945
89056
  additionalBodyEl: isCellEditable && !onlyShowRowsWErrors && /* @__PURE__ */ React$2.createElement(
88946
- Button,
89057
+ "div",
88947
89058
  {
88948
- icon: "add",
88949
- style: { marginTop: "auto" },
88950
- onClick: () => {
88951
- this.insertRows({ numRows: 10, appendToBottom: true });
88952
- },
88953
- minimal: true
89059
+ style: {
89060
+ width: "100%",
89061
+ display: "flex",
89062
+ justifyContent: "center"
89063
+ }
88954
89064
  },
88955
- "Add 10 Rows"
89065
+ /* @__PURE__ */ React$2.createElement(
89066
+ Button,
89067
+ {
89068
+ icon: "add",
89069
+ onClick: () => {
89070
+ this.insertRows({ numRows: 10, appendToBottom: true });
89071
+ },
89072
+ minimal: true
89073
+ },
89074
+ "Add 10 Rows"
89075
+ )
88956
89076
  ),
88957
89077
  className: classNames$1({
88958
89078
  isCellEditable,
@@ -89347,6 +89467,26 @@ ${latestSubscriptionCallbackError.current.stack}
89347
89467
  }
89348
89468
  return newVal2;
89349
89469
  }, "formatPasteData");
89470
+ function removeCleanRows(reduxFormEntities, reduxFormCellValidation) {
89471
+ const toFilterOut = {};
89472
+ const entsToUse = (reduxFormEntities || []).filter((e2) => {
89473
+ if (!(e2._isClean || isEntityClean(e2)))
89474
+ return true;
89475
+ else {
89476
+ toFilterOut[getIdOrCodeOrIndex(e2)] = true;
89477
+ return false;
89478
+ }
89479
+ });
89480
+ const validationToUse = {};
89481
+ lodashExports.forEach(reduxFormCellValidation, (v2, k2) => {
89482
+ const [rowId] = k2.split(":");
89483
+ if (!toFilterOut[rowId]) {
89484
+ validationToUse[k2] = v2;
89485
+ }
89486
+ });
89487
+ return { entsToUse, validationToUse };
89488
+ }
89489
+ __name(removeCleanRows, "removeCleanRows");
89350
89490
  const wrapDialog = /* @__PURE__ */ __name((topLevelDialogProps = {}) => (Component) => (props) => {
89351
89491
  const r2 = reactExports.useRef();
89352
89492
  const memoedHotkeys = reactExports.useMemo(
@@ -91759,6 +91899,7 @@ ${latestSubscriptionCallbackError.current.stack}
91759
91899
  isSimple: true,
91760
91900
  keepDirtyOnReinitialize: true,
91761
91901
  isCellEditable: true,
91902
+ initialEntities: (initialEntities ? initialEntities : data) || [],
91762
91903
  entities: (initialEntities ? initialEntities : data) || [],
91763
91904
  schema: validateAgainstSchema
91764
91905
  }
@@ -91861,26 +92002,6 @@ ${latestSubscriptionCallbackError.current.stack}
91861
92002
  });
91862
92003
  }
91863
92004
  __name(asyncValidateHelper, "asyncValidateHelper");
91864
- function removeCleanRows(reduxFormEntities, reduxFormCellValidation) {
91865
- const toFilterOut = {};
91866
- const entsToUse = (reduxFormEntities || []).filter((e2) => {
91867
- if (!(e2._isClean || isEntityClean(e2)))
91868
- return true;
91869
- else {
91870
- toFilterOut[getIdOrCodeOrIndex(e2)] = true;
91871
- return false;
91872
- }
91873
- });
91874
- const validationToUse = {};
91875
- lodashExports.forEach(reduxFormCellValidation, (v2, k2) => {
91876
- const [rowId] = k2.split(":");
91877
- if (!toFilterOut[rowId]) {
91878
- validationToUse[k2] = v2;
91879
- }
91880
- });
91881
- return { entsToUse, validationToUse };
91882
- }
91883
- __name(removeCleanRows, "removeCleanRows");
91884
92005
  function maybeStripIdFromEntities(ents, validateAgainstSchema) {
91885
92006
  var _a2;
91886
92007
  let toRet;
@@ -113967,7 +114088,7 @@ ${latestSubscriptionCallbackError.current.stack}
113967
114088
  "primers",
113968
114089
  "guides"
113969
114090
  ];
113970
- function filterSequenceString(sequenceString, {
114091
+ function filterSequenceString(sequenceString = "", {
113971
114092
  additionalValidChars = "",
113972
114093
  isOligo: isOligo2,
113973
114094
  name: name2,
@@ -123665,12 +123786,6 @@ ${latestSubscriptionCallbackError.current.stack}
123665
123786
  sequence2.proteinSize = sequence2.proteinSequence.length;
123666
123787
  } else {
123667
123788
  const temp = sequence2.sequence;
123668
- if (!sequence2.isOligo) {
123669
- sequence2.sequence = sequence2.sequence.replace(
123670
- /u/gi,
123671
- (u2) => u2 === "U" ? "T" : "t"
123672
- );
123673
- }
123674
123789
  if (temp !== sequence2.sequence && !sequence2.isDNA && !sequence2.isProtein && sequence2.isRNA !== false) {
123675
123790
  sequence2.type = "RNA";
123676
123791
  sequence2.sequence = temp;
@@ -137002,7 +137117,7 @@ ${seq.sequence}
137002
137117
  activePanelId && dispatch(setPanelAsActive(activePanelId, meta2));
137003
137118
  };
137004
137119
  }, "collapseSplitScreen");
137005
- const panelsShown = createReducer(
137120
+ const reducer$1 = createReducer(
137006
137121
  {
137007
137122
  [addPanelIfItDoesntAlreadyExist]: (state2, panelToAdd) => {
137008
137123
  if (!state2.some((panelGroup) => {
@@ -137037,8 +137152,15 @@ ${seq.sequence}
137037
137152
  indexToClose = i2;
137038
137153
  });
137039
137154
  if (indexToClose > -1) {
137040
- return removeItem(group, indexToClose).map((tab2, i2) => {
137041
- if (i2 === 0)
137155
+ const newPanels = removeItem(group, indexToClose);
137156
+ let mostRecentIndex = 0;
137157
+ newPanels.forEach((p2) => {
137158
+ if (p2.lastActive > newPanels[mostRecentIndex].lastActive) {
137159
+ mostRecentIndex = newPanels.indexOf(p2);
137160
+ }
137161
+ });
137162
+ return newPanels.map((tab2, i2) => {
137163
+ if (i2 === mostRecentIndex)
137042
137164
  return __spreadProps(__spreadValues({}, tab2), { active: true });
137043
137165
  else {
137044
137166
  return tab2;
@@ -137135,6 +137257,17 @@ ${seq.sequence}
137135
137257
  ]
137136
137258
  ]
137137
137259
  );
137260
+ const panelsShown = /* @__PURE__ */ __name((state2, action2) => {
137261
+ const nextState = reducer$1(state2, action2);
137262
+ nextState.forEach((pg2) => {
137263
+ pg2.forEach((p2) => {
137264
+ if (p2.active) {
137265
+ p2.lastActive = Date.now().toString();
137266
+ }
137267
+ });
137268
+ });
137269
+ return nextState;
137270
+ }, "panelsShown");
137138
137271
  function flipActiveForGroup(group, setCircActive) {
137139
137272
  const activeTab = group.find(({ active: active2 }) => active2);
137140
137273
  if ((activeTab == null ? void 0 : activeTab.id) === (setCircActive ? "rail" : "circular")) {
@@ -151023,6 +151156,7 @@ ${seq.sequence}
151023
151156
  "rect",
151024
151157
  {
151025
151158
  className: "veAxisTick",
151159
+ "data-test": tickMarkPosition + 1,
151026
151160
  key: "axisTickMarkPath " + i2 + " " + tickMarkPosition,
151027
151161
  x: xCenter,
151028
151162
  width: 1,
@@ -155183,7 +155317,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
155183
155317
  }
155184
155318
  __name(showFileDialog, "showFileDialog");
155185
155319
  const name = "@teselagen/ove";
155186
- const version = "0.3.54";
155320
+ const version = "0.3.56";
155187
155321
  const main = "./src/index.js";
155188
155322
  const exports$1 = {
155189
155323
  ".": {
@@ -163249,7 +163383,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
163249
163383
  "g",
163250
163384
  __spreadValues(__spreadProps(__spreadValues({
163251
163385
  transform: transform2,
163252
- title: noTitle ? null : titleText
163386
+ "data-title": noTitle ? null : titleText
163253
163387
  }, avoidOverlapWith), {
163254
163388
  key: isNotLocation ? "notLocation" : "location--" + annotation.id + "--" + i2
163255
163389
  }), sharedProps),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/ove",
3
- "version": "0.3.55",
3
+ "version": "0.3.57",
4
4
  "main": "./src/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -13,12 +13,12 @@
13
13
  "node": "16.20.2"
14
14
  },
15
15
  "dependencies": {
16
- "@teselagen/sequence-utils": "0.3.12",
16
+ "@teselagen/sequence-utils": "0.3.13",
17
17
  "@teselagen/range-utils": "0.3.7",
18
- "@teselagen/ui": "0.3.43",
19
- "@teselagen/file-utils": "0.3.9",
18
+ "@teselagen/ui": "0.3.48",
19
+ "@teselagen/file-utils": "0.3.11",
20
20
  "@teselagen/bounce-loader": "0.3.11",
21
- "@teselagen/bio-parsers": "0.4.6",
21
+ "@teselagen/bio-parsers": "0.4.7",
22
22
  "@blueprintjs/core": "3.52.0",
23
23
  "@blueprintjs/datetime": "3.23.19",
24
24
  "@blueprintjs/icons": "3.33.0",
@@ -380,8 +380,7 @@ function DrawAnnotationInner({
380
380
  return (
381
381
  <g
382
382
  transform={transform}
383
- // data-title={noTitle ? null : titleText}
384
- title={noTitle ? null : titleText}
383
+ data-title={noTitle ? null : titleText}
385
384
  {...avoidOverlapWith}
386
385
  key={
387
386
  isNotLocation
@@ -88,6 +88,7 @@ const Axis = function (props) {
88
88
  tickMarkSVG.push(
89
89
  <rect
90
90
  className="veAxisTick"
91
+ data-test={tickMarkPosition + 1}
91
92
  key={"axisTickMarkPath " + i + " " + tickMarkPosition}
92
93
  x={xCenter}
93
94
  width={1}
@@ -104,7 +104,7 @@ export const collapseSplitScreen = (activePanelId, meta) => {
104
104
  // ------------------------------------
105
105
  // Reducer
106
106
  // ------------------------------------
107
- export default createReducer(
107
+ const reducer = createReducer(
108
108
  {
109
109
  [addPanelIfItDoesntAlreadyExist]: (state, panelToAdd) => {
110
110
  if (
@@ -140,8 +140,16 @@ export default createReducer(
140
140
  if (id === idToClose) indexToClose = i;
141
141
  });
142
142
  if (indexToClose > -1) {
143
- return removeItem(group, indexToClose).map((tab, i) => {
144
- if (i === 0) return { ...tab, active: true };
143
+ const newPanels = removeItem(group, indexToClose);
144
+ let mostRecentIndex = 0;
145
+ newPanels.forEach(p => {
146
+ if (p.lastActive > newPanels[mostRecentIndex].lastActive) {
147
+ mostRecentIndex = newPanels.indexOf(p);
148
+ }
149
+ });
150
+
151
+ return newPanels.map((tab, i) => {
152
+ if (i === mostRecentIndex) return { ...tab, active: true };
145
153
  else {
146
154
  return tab;
147
155
  }
@@ -258,6 +266,17 @@ export default createReducer(
258
266
  ]
259
267
  );
260
268
 
269
+ export default (state, action) => {
270
+ const nextState = reducer(state, action);
271
+ nextState.forEach(pg => {
272
+ pg.forEach(p => {
273
+ if (p.active) {
274
+ p.lastActive = Date.now().toString();
275
+ }
276
+ });
277
+ });
278
+ return nextState;
279
+ };
261
280
  function flipActiveForGroup(group, setCircActive) {
262
281
  const activeTab = group.find(({ active }) => active);
263
282
  if (activeTab?.id === (setCircActive ? "rail" : "circular")) {
package/style.css CHANGED
@@ -9546,9 +9546,9 @@ body:not(.drag-active)
9546
9546
  .tg-dropdown-cell-edit-container .bp3-tag-input .bp3-button {
9547
9547
  margin: 0;
9548
9548
  }
9549
- .tg-dropdown-cell-edit-container .bp3-tag-input .bp3-tag-input-values > * {
9549
+ /* .tg-dropdown-cell-edit-container .bp3-tag-input .bp3-tag-input-values > * {
9550
9550
  margin-bottom: 0;
9551
- }
9551
+ } */
9552
9552
  .tg-dropdown-cell-edit-container:not(.tg-dropdown-cell-edit-container-multi)
9553
9553
  .bp3-tag-input {
9554
9554
  min-height: 0;