@teselagen/ove 0.8.22 → 0.8.24

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
@@ -44301,23 +44301,6 @@ ${latestSubscriptionCallbackError.current.stack}
44301
44301
  const { allOrderedEntities, selectedEntities } = useSelector(entitySelector);
44302
44302
  return { selectTableEntities, allOrderedEntities, selectedEntities };
44303
44303
  }, "useTableEntities");
44304
- const isEqualIgnoreFunctions = /* @__PURE__ */ __name((o1, o2) => {
44305
- const isEq = isEqualWith(o1, o2, function(val1, val2) {
44306
- if (isFunction$1(val1) && isFunction$1(val2)) {
44307
- return val1 === val2 || val1.toString() === val2.toString();
44308
- }
44309
- if (val1 && val1.constructor && val1.constructor.name === "FiberNode")
44310
- return true;
44311
- });
44312
- return isEq;
44313
- }, "isEqualIgnoreFunctions");
44314
- const useDeepEqualMemo = /* @__PURE__ */ __name((value) => {
44315
- const ref2 = reactExports.useRef();
44316
- if (!isEqualIgnoreFunctions(value, ref2.current)) {
44317
- ref2.current = value;
44318
- }
44319
- return ref2.current;
44320
- }, "useDeepEqualMemo");
44321
44304
  function rowClick(e2, rowInfo, entities, {
44322
44305
  reduxFormSelectedEntityIdMap,
44323
44306
  isSingleSelect,
@@ -85601,6 +85584,33 @@ ${latestSubscriptionCallbackError.current.stack}
85601
85584
  $mobx
85602
85585
  });
85603
85586
  }
85587
+ const isEqualIgnoreFunctions = /* @__PURE__ */ __name((o1, o2) => {
85588
+ const isEq = isEqualWith(o1, o2, function(val1, val2) {
85589
+ if (isFunction$1(val1) && isFunction$1(val2)) {
85590
+ return val1 === val2 || val1.toString() === val2.toString();
85591
+ }
85592
+ if (val1 && val1.constructor && val1.constructor.name === "FiberNode")
85593
+ return true;
85594
+ });
85595
+ return isEq;
85596
+ }, "isEqualIgnoreFunctions");
85597
+ const useDeepEqualMemoIgnoreFns = /* @__PURE__ */ __name((value) => {
85598
+ const ref2 = reactExports.useRef();
85599
+ if (!isEqualIgnoreFunctions(value, ref2.current)) {
85600
+ ref2.current = value;
85601
+ }
85602
+ return ref2.current;
85603
+ }, "useDeepEqualMemoIgnoreFns");
85604
+ const useDeepEqualMemo = /* @__PURE__ */ __name((value) => {
85605
+ const ref2 = reactExports.useRef();
85606
+ if (!isEqual$3(value, ref2.current)) {
85607
+ ref2.current = value;
85608
+ }
85609
+ return ref2.current;
85610
+ }, "useDeepEqualMemo");
85611
+ const useMemoDeepEqual = /* @__PURE__ */ __name((value, depsArray) => {
85612
+ return reactExports.useMemo(value, useDeepEqualMemo(depsArray));
85613
+ }, "useMemoDeepEqual");
85604
85614
  T$1();
85605
85615
  const IS_LINUX = window.navigator.platform.toLowerCase().search("linux") > -1;
85606
85616
  const itemSizeEstimators = {
@@ -85687,9 +85697,11 @@ ${latestSubscriptionCallbackError.current.stack}
85687
85697
  "reduxFormSelectedEntityIdMap"
85688
85698
  );
85689
85699
  }, "dtFormParamsSelector"));
85690
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
85691
- const reduxFormQueryParams = useDeepEqualMemo(_reduxFormQueryParams);
85692
- const reduxFormSelectedEntityIdMap = useDeepEqualMemo(
85700
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
85701
+ _reduxFormCellValidation
85702
+ );
85703
+ const reduxFormQueryParams = useDeepEqualMemoIgnoreFns(_reduxFormQueryParams);
85704
+ const reduxFormSelectedEntityIdMap = useDeepEqualMemoIgnoreFns(
85693
85705
  _reduxFormSelectedEntityIdMap
85694
85706
  );
85695
85707
  let props = ownProps;
@@ -85764,7 +85776,7 @@ ${latestSubscriptionCallbackError.current.stack}
85764
85776
  const tmp = (urlConnected ? getCurrentParamsFromUrl(history.location) : reduxFormQueryParams) || {};
85765
85777
  return tmp;
85766
85778
  }, [history, reduxFormQueryParams, urlConnected]);
85767
- const currentParams = useDeepEqualMemo(_currentParams);
85779
+ const currentParams = useDeepEqualMemoIgnoreFns(_currentParams);
85768
85780
  const tableParams = reactExports.useMemo(() => {
85769
85781
  if (!isTableParamsConnected) {
85770
85782
  const setNewParams2 = /* @__PURE__ */ __name((newParams) => {
@@ -85945,8 +85957,8 @@ ${latestSubscriptionCallbackError.current.stack}
85945
85957
  () => ((reduxFormEntities == null ? void 0 : reduxFormEntities.length) ? reduxFormEntities : _origEntities) || [],
85946
85958
  [_origEntities, reduxFormEntities]
85947
85959
  );
85948
- const entities = useDeepEqualMemo(_entities);
85949
- const entitiesAcrossPages = useDeepEqualMemo(_entitiesAcrossPages);
85960
+ const entities = useDeepEqualMemoIgnoreFns(_entities);
85961
+ const entitiesAcrossPages = useDeepEqualMemoIgnoreFns(_entitiesAcrossPages);
85950
85962
  reactExports.useEffect(() => {
85951
85963
  change$12("allOrderedEntities", entitiesAcrossPages);
85952
85964
  if (entities.length === 0 || isEmpty$1(reduxFormSelectedEntityIdMap)) return;
@@ -90510,7 +90522,7 @@ ${latestSubscriptionCallbackError.current.stack}
90510
90522
  return (_b2 = (_a3 = state2.form) == null ? void 0 : _a3[dataTableForm]) == null ? void 0 : _b2.values.reduxFormEntities;
90511
90523
  }
90512
90524
  );
90513
- const reduxFormEntities = useDeepEqualMemo(_reduxFormEntities);
90525
+ const reduxFormEntities = useDeepEqualMemoIgnoreFns(_reduxFormEntities);
90514
90526
  reactExports.useEffect(() => {
90515
90527
  return () => dispatch(destroy(dataTableForm));
90516
90528
  }, [dataTableForm, dispatch]);
@@ -90520,7 +90532,9 @@ ${latestSubscriptionCallbackError.current.stack}
90520
90532
  return (_b2 = (_a3 = state2.form) == null ? void 0 : _a3[dataTableForm]) == null ? void 0 : _b2.values.reduxFormCellValidation;
90521
90533
  }, "_reduxFormCellValidationSelector")
90522
90534
  );
90523
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
90535
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
90536
+ _reduxFormCellValidation
90537
+ );
90524
90538
  const { entsToUse, validationToUse } = reactExports.useMemo(
90525
90539
  () => removeCleanRows(reduxFormEntities, reduxFormCellValidation),
90526
90540
  [reduxFormEntities, reduxFormCellValidation]
@@ -90605,8 +90619,10 @@ ${latestSubscriptionCallbackError.current.stack}
90605
90619
  "reduxFormCellValidation"
90606
90620
  );
90607
90621
  }, "dtFormNameSelector"));
90608
- const reduxFormEntities = useDeepEqualMemo(_reduxFormEntities);
90609
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
90622
+ const reduxFormEntities = useDeepEqualMemoIgnoreFns(_reduxFormEntities);
90623
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
90624
+ _reduxFormCellValidation
90625
+ );
90610
90626
  let inner2;
90611
90627
  if (hasSubmitted) {
90612
90628
  inner2 = /* @__PURE__ */ React.createElement(
@@ -90908,8 +90924,10 @@ ${latestSubscriptionCallbackError.current.stack}
90908
90924
  };
90909
90925
  }
90910
90926
  });
90911
- const reduxFormEntitiesArray = useDeepEqualMemo(_reduxFormEntitiesArray);
90912
- const finishedFiles = useDeepEqualMemo(_finishedFiles);
90927
+ const reduxFormEntitiesArray = useDeepEqualMemoIgnoreFns(
90928
+ _reduxFormEntitiesArray
90929
+ );
90930
+ const finishedFiles = useDeepEqualMemoIgnoreFns(_finishedFiles);
90913
90931
  const [hasSubmittedOuter, setSubmittedOuter] = reactExports.useState();
90914
90932
  const [steps, setSteps] = reactExports.useState(getInitialSteps(true));
90915
90933
  const [focusedTab, setFocusedTab] = reactExports.useState(0);
@@ -99408,12 +99426,21 @@ ${latestSubscriptionCallbackError.current.stack}
99408
99426
  }, RndProps),
99409
99427
  /* @__PURE__ */ React.createElement(
99410
99428
  Dialog,
99411
- __spreadValues({
99429
+ __spreadProps(__spreadValues({
99412
99430
  enforceFocus: false,
99413
99431
  hasBackdrop: false,
99414
99432
  usePortal: false,
99415
99433
  canEscapeKeyClose: true
99416
- }, rest)
99434
+ }, rest), {
99435
+ title: /* @__PURE__ */ React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8 } }, /* @__PURE__ */ React.createElement(
99436
+ Icon,
99437
+ {
99438
+ size: "14",
99439
+ "data-tip": "I'm a resizable draggable dialog!",
99440
+ icon: "move"
99441
+ }
99442
+ ), rest.title)
99443
+ })
99417
99444
  )
99418
99445
  )
99419
99446
  );
@@ -102565,7 +102592,7 @@ ${latestSubscriptionCallbackError.current.stack}
102565
102592
  { name: "regulatory", color: "#3F6C51" },
102566
102593
  { name: "SecStr", color: "#7B4B94" },
102567
102594
  { name: "Site", color: "#7D82B8" },
102568
- { name: "telomere", color: "DE9151" },
102595
+ { name: "telomere", color: "#DE9151" },
102569
102596
  { name: "tmRNA", color: "#B7E3CC" },
102570
102597
  { name: "unsure", color: "#C4FFB2" },
102571
102598
  { name: "V_segment", color: "#D6F7A3" },
@@ -112704,7 +112731,10 @@ ${latestSubscriptionCallbackError.current.stack}
112704
112731
  return nonDuplicatedOrfRanges;
112705
112732
  }
112706
112733
  __name(getOrfsFromSequence, "getOrfsFromSequence");
112707
- function findOrfsInPlasmid(sequence2, circular2, minimumOrfSize2, useAdditionalOrfStartCodons2) {
112734
+ function findOrfsInPlasmid(sequence2, circular2, minimumOrfSize2, useAdditionalOrfStartCodons2, isProteinOrOligo) {
112735
+ if (isProteinOrOligo) {
112736
+ return [];
112737
+ }
112708
112738
  const forwardOrfs = getOrfsFromSequence({
112709
112739
  sequence: sequence2,
112710
112740
  minimumOrfSize: minimumOrfSize2,
@@ -126234,6 +126264,10 @@ ${seq.sequence}
126234
126264
  circularSelector,
126235
126265
  minimumOrfSizeSelector,
126236
126266
  (state2) => state2.useAdditionalOrfStartCodons,
126267
+ (state2) => {
126268
+ var _a2, _b2;
126269
+ return ((_a2 = state2.sequenceData) == null ? void 0 : _a2.isProtein) || ((_b2 = state2.sequenceData) == null ? void 0 : _b2.isOligo);
126270
+ },
126237
126271
  findOrfsInPlasmid
126238
126272
  );
126239
126273
  function translationsRawSelector(sequenceData2) {
@@ -126269,10 +126303,7 @@ ${seq.sequence}
126269
126303
  end: end2 * 3 + 2
126270
126304
  });
126271
126305
  });
126272
- return [
126273
- ...toReturn,
126274
- ...r2
126275
- ];
126306
+ return [...toReturn, ...r2];
126276
126307
  }
126277
126308
  if (dnaOrAA === "DNA" && ambiguousOrLiteral === "LITERAL" && mismatchesAllowed > 0) {
126278
126309
  const approxMatches = findApproxMatches(
@@ -126290,9 +126321,12 @@ ${seq.sequence}
126290
126321
  isSearchLayer: true,
126291
126322
  forward: true
126292
126323
  })).sort((a2, b3) => a2.start - b3.start);
126293
- return [...toReturn, ...matches2.map((match) => __spreadProps(__spreadValues({}, match), {
126294
- className: "veSearchLayer"
126295
- }))];
126324
+ return [
126325
+ ...toReturn,
126326
+ ...matches2.map((match) => __spreadProps(__spreadValues({}, match), {
126327
+ className: "veSearchLayer"
126328
+ }))
126329
+ ];
126296
126330
  }
126297
126331
  const matches = findSequenceMatches(sequence2, searchString, {
126298
126332
  isCircular,
@@ -126302,11 +126336,14 @@ ${seq.sequence}
126302
126336
  }).sort(({ start: start2 }, { start: start22 }) => {
126303
126337
  return start2 - start22;
126304
126338
  });
126305
- return [...toReturn, ...matches.map((match) => __spreadProps(__spreadValues({}, match), {
126306
- forward: !match.bottomStrand,
126307
- className: "veSearchLayer " + (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
126308
- isSearchLayer: true
126309
- }))];
126339
+ return [
126340
+ ...toReturn,
126341
+ ...matches.map((match) => __spreadProps(__spreadValues({}, match), {
126342
+ forward: !match.bottomStrand,
126343
+ className: "veSearchLayer " + (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
126344
+ isSearchLayer: true
126345
+ }))
126346
+ ];
126310
126347
  }
126311
126348
  __name(searchLayersSelector, "searchLayersSelector");
126312
126349
  const searchLayersSelector$1 = createSelector(
@@ -126319,7 +126356,10 @@ ${seq.sequence}
126319
126356
  (state2) => state2.sequenceData.isProtein,
126320
126357
  (state2) => state2.sequenceData.proteinSequence,
126321
126358
  (state2) => state2.findTool && state2.findTool.mismatchesAllowed,
126322
- (state2) => state2.temporaryAnnotations.searchLayers,
126359
+ (state2) => {
126360
+ var _a2;
126361
+ return (_a2 = state2.temporaryAnnotations) == null ? void 0 : _a2.searchLayers;
126362
+ },
126323
126363
  searchLayersSelector
126324
126364
  );
126325
126365
  const translationSearchMatchesSelector = createSelector(
@@ -145035,7 +145075,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
145035
145075
  input.click();
145036
145076
  }
145037
145077
  __name(showFileDialog, "showFileDialog");
145038
- const version = "0.8.21";
145078
+ const version = "0.8.23";
145039
145079
  const packageJson = {
145040
145080
  version
145041
145081
  };
@@ -170396,12 +170436,29 @@ ${seqDataToCopy}\r
170396
170436
  additionalFooterEls
170397
170437
  }) => {
170398
170438
  const annotationTypeUpper = upperFirst(annotationType);
170399
- const _AnnotationProperties = class _AnnotationProperties extends React.Component {
170400
- constructor(props) {
170401
- super(props);
170402
- __publicField(this, "onRowSelect", /* @__PURE__ */ __name(([record]) => {
170439
+ const AnnotationProperties = /* @__PURE__ */ __name((props) => {
170440
+ var _a2, _b2, _c2;
170441
+ const {
170442
+ readOnly: readOnly2,
170443
+ annotations = {},
170444
+ annotationVisibility: annotationVisibility2,
170445
+ sequenceLength,
170446
+ selectionLayer: selectionLayer2,
170447
+ sequence: sequence2,
170448
+ isProtein: isProtein2,
170449
+ allPartTags,
170450
+ annotationPropertiesSelectedEntities: _annotationPropertiesSelectedEntities,
170451
+ selectedAnnotationId,
170452
+ PropertiesProps,
170453
+ dispatch,
170454
+ editorName
170455
+ } = props;
170456
+ const instanceRef = React.useRef({ props });
170457
+ instanceRef.current.props = props;
170458
+ const cmds = React.useMemo(() => getCommands(instanceRef.current), []);
170459
+ const onRowSelect = React.useCallback(
170460
+ ([record]) => {
170403
170461
  if (!record) return;
170404
- const { dispatch, editorName } = this.props;
170405
170462
  dispatch({
170406
170463
  type: "SELECTION_LAYER_UPDATE",
170407
170464
  payload: record,
@@ -170409,44 +170466,33 @@ ${seqDataToCopy}\r
170409
170466
  editorName
170410
170467
  }
170411
170468
  });
170412
- }, "onRowSelect"));
170413
- this.commands = getCommands(this);
170414
- }
170415
- render() {
170416
- var _a2, _b2, _c2;
170417
- const {
170418
- readOnly: readOnly2,
170419
- annotations = {},
170420
- annotationVisibility: annotationVisibility2,
170421
- sequenceLength,
170422
- selectionLayer: selectionLayer2,
170423
- sequence: sequence2,
170424
- isProtein: isProtein2,
170425
- allPartTags,
170426
- annotationPropertiesSelectedEntities: _annotationPropertiesSelectedEntities,
170427
- selectedAnnotationId,
170428
- PropertiesProps
170429
- } = this.props;
170430
- const annotationPropertiesSelectedEntities = _annotationPropertiesSelectedEntities.filter((a2) => annotations[a2.id]);
170431
- const deleteAnnotation = this.props[`delete${annotationTypeUpper}`];
170432
- const annotationsToUse = map$3(annotations, (annotation) => {
170469
+ },
170470
+ [dispatch, editorName]
170471
+ );
170472
+ const annotationPropertiesSelectedEntities = _annotationPropertiesSelectedEntities.filter((a2) => annotations[a2.id]);
170473
+ const deleteAnnotation = props[`delete${annotationTypeUpper}`];
170474
+ const annotationsToUse = React.useMemo(
170475
+ () => map$3(annotations, (annotation) => {
170433
170476
  return __spreadProps(__spreadValues(__spreadValues({}, annotation), annotation.strand === void 0 && {
170434
170477
  strand: annotation.forward ? 1 : -1
170435
170478
  }), {
170436
170479
  size: getRangeLength(annotation, sequenceLength)
170437
170480
  });
170438
- });
170439
- const keyedPartTags = (_a2 = getKeyedTagsAndTagOptions(allPartTags)) != null ? _a2 : {};
170440
- const additionalColumns = ((_c2 = (_b2 = PropertiesProps == null ? void 0 : PropertiesProps.propertiesList) == null ? void 0 : _b2.find(
170441
- (p2) => (p2.name || p2) === (pluralize(annotationType) || "")
170442
- )) == null ? void 0 : _c2.additionalColumns) || [];
170443
- this.schema = {
170481
+ }),
170482
+ [annotations, sequenceLength]
170483
+ );
170484
+ const keyedPartTags = (_a2 = getKeyedTagsAndTagOptions(allPartTags)) != null ? _a2 : {};
170485
+ const additionalColumns = ((_c2 = (_b2 = PropertiesProps == null ? void 0 : PropertiesProps.propertiesList) == null ? void 0 : _b2.find(
170486
+ (p2) => (p2.name || p2) === (pluralize(annotationType) || "")
170487
+ )) == null ? void 0 : _c2.additionalColumns) || [];
170488
+ const schema2 = useMemoDeepEqual(
170489
+ () => ({
170444
170490
  fields: [
170445
170491
  {
170446
170492
  path: "name",
170447
170493
  type: "string",
170448
170494
  render: /* @__PURE__ */ __name((name2, ann) => {
170449
- const checked = !this.props.annotationVisibility[`${annotationType}IndividualToHide`][ann.id];
170495
+ const checked = !annotationVisibility2[`${annotationType}IndividualToHide`][ann.id];
170450
170496
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
170451
170497
  Icon,
170452
170498
  {
@@ -170455,9 +170501,9 @@ ${seqDataToCopy}\r
170455
170501
  e2.stopPropagation();
170456
170502
  const upperType = startCase(annotationType);
170457
170503
  if (checked) {
170458
- this.props[`hide${upperType}Individual`]([ann.id]);
170504
+ props[`hide${upperType}Individual`]([ann.id]);
170459
170505
  } else {
170460
- this.props[`show${upperType}Individual`]([ann.id]);
170506
+ props[`show${upperType}Individual`]([ann.id]);
170461
170507
  }
170462
170508
  }, "onClick"),
170463
170509
  style: {
@@ -170478,7 +170524,7 @@ ${seqDataToCopy}\r
170478
170524
  render: /* @__PURE__ */ __name((bases, primer) => {
170479
170525
  let bps = bases;
170480
170526
  if (!bases) {
170481
- bps = getSequenceWithinRange(primer, this.props.sequence);
170527
+ bps = getSequenceWithinRange(primer, sequence2);
170482
170528
  if (!primer.forward) {
170483
170529
  bps = getReverseComplementSequenceString(bps);
170484
170530
  }
@@ -170503,8 +170549,8 @@ ${seqDataToCopy}\r
170503
170549
  }, "render")
170504
170550
  }
170505
170551
  ],
170506
- sizeSchema(this.props.isProtein),
170507
- ...withTags && this.props.allPartTags ? [
170552
+ sizeSchema(isProtein2),
170553
+ ...withTags && allPartTags ? [
170508
170554
  {
170509
170555
  path: "tags",
170510
170556
  type: "string",
@@ -170528,138 +170574,144 @@ ${seqDataToCopy}\r
170528
170574
  { path: "strand", type: "number" },
170529
170575
  ...additionalColumns
170530
170576
  ]
170531
- };
170532
- return /* @__PURE__ */ React.createElement(
170533
- WrappedDT,
170534
- {
170535
- topLeftItems: getVisFilter(
170536
- createCommandMenu(
170537
- isFunction$1(visSubmenu) ? visSubmenu(this.props) : visSubmenu,
170538
- this.commands,
170539
- {
170540
- useTicks: true
170541
- }
170542
- )
170543
- ),
170544
- annotationPropertiesSelectedEntities,
170545
- leftOfSearchBarItems: /* @__PURE__ */ React.createElement(React.Fragment, null, !readOnly2 && /* @__PURE__ */ React.createElement(ButtonGroup, { style: { marginTop: 3, marginRight: 4 } }, /* @__PURE__ */ React.createElement(
170546
- Tooltip,
170547
- {
170548
- position: "top",
170549
- modifiers: popoverOverflowModifiers,
170550
- content: "New"
170551
- },
170552
- /* @__PURE__ */ React.createElement(
170553
- AnchorButton,
170554
- {
170555
- disabled: !sequenceLength,
170556
- icon: "plus",
170557
- className: "tgNewAnnBtn",
170558
- onClick: /* @__PURE__ */ __name(() => {
170559
- showAddOrEditAnnotationDialog({
170560
- type: annotationType,
170561
- annotation: pick$1(
170562
- selectionLayer2,
170563
- "start",
170564
- "end",
170565
- "forward"
170566
- )
170567
- });
170568
- }, "onClick")
170569
- }
170570
- )
170571
- ), /* @__PURE__ */ React.createElement(
170572
- Tooltip,
170577
+ }),
170578
+ [
170579
+ additionalColumns,
170580
+ allPartTags,
170581
+ annotationVisibility2,
170582
+ isProtein2,
170583
+ keyedPartTags,
170584
+ sequence2
170585
+ ]
170586
+ );
170587
+ return /* @__PURE__ */ React.createElement(
170588
+ WrappedDT,
170589
+ {
170590
+ topLeftItems: getVisFilter(
170591
+ createCommandMenu(
170592
+ isFunction$1(visSubmenu) ? visSubmenu(props) : visSubmenu,
170593
+ cmds,
170573
170594
  {
170574
- position: "top",
170575
- modifiers: popoverOverflowModifiers,
170576
- content: "Edit"
170577
- },
170578
- /* @__PURE__ */ React.createElement(
170579
- AnchorButton,
170580
- {
170581
- onClick: /* @__PURE__ */ __name(() => {
170582
- showAddOrEditAnnotationDialog({
170583
- type: annotationType,
170584
- annotation: annotationPropertiesSelectedEntities[0]
170585
- });
170586
- }, "onClick"),
170587
- disabled: annotationPropertiesSelectedEntities.length !== 1,
170588
- icon: "edit"
170589
- }
170590
- )
170591
- ), ["feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
170592
- CmdButton,
170595
+ useTicks: true
170596
+ }
170597
+ )
170598
+ ),
170599
+ annotationPropertiesSelectedEntities,
170600
+ leftOfSearchBarItems: /* @__PURE__ */ React.createElement(React.Fragment, null, !readOnly2 && /* @__PURE__ */ React.createElement(ButtonGroup, { style: { marginTop: 3, marginRight: 4 } }, /* @__PURE__ */ React.createElement(
170601
+ Tooltip,
170602
+ {
170603
+ position: "top",
170604
+ modifiers: popoverOverflowModifiers,
170605
+ content: "New"
170606
+ },
170607
+ /* @__PURE__ */ React.createElement(
170608
+ AnchorButton,
170593
170609
  {
170594
- text: "",
170595
- icon: "cog",
170596
- "data-tip": "Configure Feature Types",
170597
- cmd: this.commands.onConfigureFeatureTypesClick
170610
+ disabled: !sequenceLength,
170611
+ icon: "plus",
170612
+ className: "tgNewAnnBtn",
170613
+ onClick: /* @__PURE__ */ __name(() => {
170614
+ showAddOrEditAnnotationDialog({
170615
+ type: annotationType,
170616
+ annotation: pick$1(
170617
+ selectionLayer2,
170618
+ "start",
170619
+ "end",
170620
+ "forward"
170621
+ )
170622
+ });
170623
+ }, "onClick")
170598
170624
  }
170599
- ), ["part", "primer", "feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
170600
- CmdButton,
170625
+ )
170626
+ ), /* @__PURE__ */ React.createElement(
170627
+ Tooltip,
170628
+ {
170629
+ position: "top",
170630
+ modifiers: popoverOverflowModifiers,
170631
+ content: "Edit"
170632
+ },
170633
+ /* @__PURE__ */ React.createElement(
170634
+ AnchorButton,
170601
170635
  {
170602
- text: "",
170603
- icon: removeDuplicatesIcon,
170604
- "data-tip": "Remove Duplicates",
170605
- cmd: this.commands[`showRemoveDuplicatesDialog${annotationTypeUpper + "s"}`]
170636
+ onClick: /* @__PURE__ */ __name(() => {
170637
+ showAddOrEditAnnotationDialog({
170638
+ type: annotationType,
170639
+ annotation: annotationPropertiesSelectedEntities[0]
170640
+ });
170641
+ }, "onClick"),
170642
+ disabled: annotationPropertiesSelectedEntities.length !== 1,
170643
+ icon: "edit"
170606
170644
  }
170607
- ), additionalFooterEls && additionalFooterEls(this.props), /* @__PURE__ */ React.createElement(
170608
- Tooltip,
170645
+ )
170646
+ ), ["feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
170647
+ CmdButton,
170648
+ {
170649
+ text: "",
170650
+ icon: "cog",
170651
+ "data-tip": "Configure Feature Types",
170652
+ cmd: cmds.onConfigureFeatureTypesClick
170653
+ }
170654
+ ), ["part", "primer", "feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
170655
+ CmdButton,
170656
+ {
170657
+ text: "",
170658
+ icon: removeDuplicatesIcon,
170659
+ "data-tip": "Remove Duplicates",
170660
+ cmd: cmds[`showRemoveDuplicatesDialog${annotationTypeUpper + "s"}`]
170661
+ }
170662
+ ), additionalFooterEls && additionalFooterEls(props), /* @__PURE__ */ React.createElement(
170663
+ Tooltip,
170664
+ {
170665
+ position: "top",
170666
+ modifiers: popoverOverflowModifiers,
170667
+ content: "Delete"
170668
+ },
170669
+ /* @__PURE__ */ React.createElement(
170670
+ AnchorButton,
170609
170671
  {
170610
- position: "top",
170611
- modifiers: popoverOverflowModifiers,
170612
- content: "Delete"
170613
- },
170614
- /* @__PURE__ */ React.createElement(
170615
- AnchorButton,
170616
- {
170617
- onClick: /* @__PURE__ */ __name(() => {
170618
- deleteAnnotation(annotationPropertiesSelectedEntities);
170619
- }, "onClick"),
170620
- className: "tgDeleteAnnsBtn",
170621
- intent: "danger",
170622
- disabled: !annotationPropertiesSelectedEntities.length,
170623
- icon: "trash"
170624
- }
170625
- )
170626
- ))),
170627
- onDoubleClick: /* @__PURE__ */ __name((annotation) => {
170628
- showAddOrEditAnnotationDialog({
170629
- type: annotationType,
170630
- annotation
170631
- });
170632
- }, "onDoubleClick"),
170633
- withCheckboxes: true,
170634
- showFeatureIndividual: this.props.showFeatureIndividual,
170635
- hideFeatureIndividual: this.props.hideFeatureIndividual,
170636
- showPartIndividual: this.props.showPartIndividual,
170637
- hidePartIndividual: this.props.hidePartIndividual,
170638
- showPrimerIndividual: this.props.showPrimerIndividual,
170639
- hidePrimerIndividual: this.props.hidePrimerIndividual,
170640
- annotationVisibility: annotationVisibility2,
170641
- featureLengthsToHide: this.props.featureLengthsToHide,
170642
- primerLengthsToHide: this.props.primerLengthsToHide,
170643
- partLengthsToHide: this.props.partLengthsToHide,
170644
- sequence: sequence2,
170645
- noPadding: true,
170646
- noFullscreenButton: true,
170647
- onRowSelect: this.onRowSelect,
170648
- selectedIds: selectedAnnotationId,
170649
- formName: "annotationProperties",
170650
- noRouter: true,
170651
- isProtein: isProtein2,
170652
- compact: true,
170653
- isInfinite: true,
170654
- withDisplayOptions: true,
170655
- schema: this.schema,
170656
- entities: annotationsToUse
170657
- }
170658
- );
170659
- }
170660
- };
170661
- __name(_AnnotationProperties, "AnnotationProperties");
170662
- let AnnotationProperties = _AnnotationProperties;
170672
+ onClick: /* @__PURE__ */ __name(() => {
170673
+ deleteAnnotation(annotationPropertiesSelectedEntities);
170674
+ }, "onClick"),
170675
+ className: "tgDeleteAnnsBtn",
170676
+ intent: "danger",
170677
+ disabled: !annotationPropertiesSelectedEntities.length,
170678
+ icon: "trash"
170679
+ }
170680
+ )
170681
+ ))),
170682
+ onDoubleClick: /* @__PURE__ */ __name((annotation) => {
170683
+ showAddOrEditAnnotationDialog({
170684
+ type: annotationType,
170685
+ annotation
170686
+ });
170687
+ }, "onDoubleClick"),
170688
+ withCheckboxes: true,
170689
+ showFeatureIndividual: props.showFeatureIndividual,
170690
+ hideFeatureIndividual: props.hideFeatureIndividual,
170691
+ showPartIndividual: props.showPartIndividual,
170692
+ hidePartIndividual: props.hidePartIndividual,
170693
+ showPrimerIndividual: props.showPrimerIndividual,
170694
+ hidePrimerIndividual: props.hidePrimerIndividual,
170695
+ annotationVisibility: annotationVisibility2,
170696
+ featureLengthsToHide: props.featureLengthsToHide,
170697
+ primerLengthsToHide: props.primerLengthsToHide,
170698
+ partLengthsToHide: props.partLengthsToHide,
170699
+ sequence: sequence2,
170700
+ noPadding: true,
170701
+ noFullscreenButton: true,
170702
+ onRowSelect,
170703
+ selectedIds: selectedAnnotationId,
170704
+ formName: "annotationProperties",
170705
+ noRouter: true,
170706
+ isProtein: isProtein2,
170707
+ compact: true,
170708
+ isInfinite: true,
170709
+ withDisplayOptions: true,
170710
+ schema: schema2,
170711
+ entities: annotationsToUse
170712
+ }
170713
+ );
170714
+ }, "AnnotationProperties");
170663
170715
  return compose(
170664
170716
  connectToEditor(
170665
170717
  ({