@apollo-annotation/jbrowse-plugin-apollo 0.1.6 → 0.1.7

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 (76) hide show
  1. package/dist/index.esm.js +206 -115
  2. package/dist/index.esm.js.map +1 -1
  3. package/dist/jbrowse-plugin-apollo.cjs.development.js +206 -115
  4. package/dist/jbrowse-plugin-apollo.cjs.development.js.map +1 -1
  5. package/dist/jbrowse-plugin-apollo.cjs.production.min.js +1 -1
  6. package/dist/jbrowse-plugin-apollo.cjs.production.min.js.map +1 -1
  7. package/dist/jbrowse-plugin-apollo.umd.development.js +257 -117
  8. package/dist/jbrowse-plugin-apollo.umd.development.js.map +1 -1
  9. package/dist/jbrowse-plugin-apollo.umd.production.min.js +1 -1
  10. package/dist/jbrowse-plugin-apollo.umd.production.min.js.map +1 -1
  11. package/package.json +6 -6
  12. package/src/ApolloInternetAccount/addMenuItems.ts +2 -4
  13. package/src/ApolloInternetAccount/components/AuthTypeSelector.tsx +14 -6
  14. package/src/ApolloInternetAccount/model.ts +24 -16
  15. package/src/ApolloJobModel.ts +2 -0
  16. package/src/ApolloSequenceAdapter/ApolloSequenceAdapter.ts +4 -0
  17. package/src/ApolloSixFrameRenderer/ApolloSixFrameRenderer.tsx +1 -0
  18. package/src/ApolloSixFrameRenderer/components/ApolloRendering.tsx +16 -3
  19. package/src/ApolloTextSearchAdapter/ApolloTextSearchAdapter.ts +5 -0
  20. package/src/BackendDrivers/CollaborationServerDriver.ts +10 -4
  21. package/src/BackendDrivers/DesktopFileDriver.ts +1 -0
  22. package/src/BackendDrivers/InMemoryFileDriver.ts +1 -0
  23. package/src/ChangeManager.ts +3 -0
  24. package/src/FeatureDetailsWidget/Attributes.tsx +4 -1
  25. package/src/FeatureDetailsWidget/BasicInformation.tsx +4 -2
  26. package/src/FeatureDetailsWidget/NumberTextField.tsx +4 -1
  27. package/src/FeatureDetailsWidget/RelatedFeature.tsx +16 -3
  28. package/src/FeatureDetailsWidget/Sequence.tsx +1 -0
  29. package/src/FeatureDetailsWidget/StringTextField.tsx +4 -1
  30. package/src/FeatureDetailsWidget/model.ts +2 -0
  31. package/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx +9 -2
  32. package/src/LinearApolloDisplay/glyphs/BoxGlyph.ts +2 -0
  33. package/src/LinearApolloDisplay/glyphs/CanonicalGeneGlyph.ts +9 -4
  34. package/src/LinearApolloDisplay/glyphs/GenericChildGlyph.ts +4 -1
  35. package/src/LinearApolloDisplay/glyphs/Glyph.ts +5 -1
  36. package/src/LinearApolloDisplay/glyphs/ImplicitExonGeneGlyph.ts +8 -2
  37. package/src/LinearApolloDisplay/stateModel/base.ts +7 -2
  38. package/src/LinearApolloDisplay/stateModel/getGlyph.ts +1 -0
  39. package/src/LinearApolloDisplay/stateModel/glyphs.ts +2 -0
  40. package/src/LinearApolloDisplay/stateModel/layouts.ts +3 -0
  41. package/src/LinearApolloDisplay/stateModel/mouseEvents.ts +3 -1
  42. package/src/LinearApolloDisplay/stateModel/rendering.ts +3 -2
  43. package/src/LinearApolloDisplay/types.ts +1 -1
  44. package/src/OntologyManager/OntologyStore/fulltext.ts +1 -0
  45. package/src/OntologyManager/OntologyStore/index.test.ts +3 -1
  46. package/src/OntologyManager/OntologyStore/index.ts +4 -5
  47. package/src/OntologyManager/OntologyStore/indexeddb-storage.ts +3 -2
  48. package/src/SixFrameFeatureDisplay/stateModel.ts +17 -5
  49. package/src/TabularEditor/HybridGrid/Feature.tsx +7 -2
  50. package/src/TabularEditor/HybridGrid/FeatureAttributes.tsx +1 -0
  51. package/src/TabularEditor/HybridGrid/HybridGrid.tsx +2 -2
  52. package/src/TabularEditor/HybridGrid/NumberCell.tsx +3 -1
  53. package/src/TabularEditor/HybridGrid/ToolBar.tsx +9 -2
  54. package/src/components/AddAssembly.tsx +16 -8
  55. package/src/components/AddChildFeature.tsx +9 -4
  56. package/src/components/AddFeature.tsx +11 -5
  57. package/src/components/CopyFeature.tsx +11 -6
  58. package/src/components/DeleteAssembly.tsx +7 -4
  59. package/src/components/DeleteFeature.tsx +4 -1
  60. package/src/components/Dialog.tsx +1 -0
  61. package/src/components/DownloadGFF3.tsx +7 -2
  62. package/src/components/ImportFeatures.tsx +9 -3
  63. package/src/components/ManageChecks.tsx +10 -4
  64. package/src/components/ManageUsers.tsx +13 -4
  65. package/src/components/ModifyFeatureAttribute.tsx +4 -1
  66. package/src/components/OntologyTermAutocomplete.tsx +7 -4
  67. package/src/components/OntologyTermMultiSelect.tsx +2 -2
  68. package/src/components/OpenLocalFile.tsx +6 -3
  69. package/src/components/ViewChangeLog.tsx +13 -4
  70. package/src/components/ViewCheckResults.tsx +8 -2
  71. package/src/extensions/annotationFromPileup.ts +7 -2
  72. package/src/index.ts +4 -0
  73. package/src/makeDisplayComponent.tsx +4 -4
  74. package/src/session/ClientDataStore.ts +5 -0
  75. package/src/session/session.ts +9 -17
  76. package/src/util/loadAssemblyIntoClient.ts +4 -3
@@ -4624,7 +4624,7 @@
4624
4624
  });
4625
4625
  Validation$5.Validation = Validation$5.isContext = void 0;
4626
4626
  function isContext$2(thing) {
4627
- return thing.context !== undefined && thing.reflector !== undefined;
4627
+ return 'context' in thing && 'reflector' in thing;
4628
4628
  }
4629
4629
  Validation$5.isContext = isContext$2;
4630
4630
  var Validation$4 = /*#__PURE__*/function () {
@@ -5859,7 +5859,7 @@
5859
5859
  });
5860
5860
  Validation$3.Validation = Validation$3.isContext = void 0;
5861
5861
  function isContext$1(thing) {
5862
- return thing.context !== undefined && thing.reflector !== undefined;
5862
+ return 'context' in thing && 'reflector' in thing;
5863
5863
  }
5864
5864
  Validation$3.isContext = isContext$1;
5865
5865
  var Validation$2 = /*#__PURE__*/function () {
@@ -5992,6 +5992,8 @@
5992
5992
  tslib_1.__exportStar(Validation$3, exports);
5993
5993
  })(dist$1);
5994
5994
 
5995
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
5996
+ /* eslint-disable @typescript-eslint/require-await */
5995
5997
  Object.defineProperty(AddAssemblyAndFeaturesFromFileChange$1, "__esModule", {
5996
5998
  value: true
5997
5999
  });
@@ -15674,10 +15676,13 @@
15674
15676
 
15675
15677
  var require$$2 = /*@__PURE__*/getAugmentedNamespace(esm$1);
15676
15678
 
15679
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
15680
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
15677
15681
  Object.defineProperty(AddAssemblyFromExternalChange$1, "__esModule", {
15678
15682
  value: true
15679
15683
  });
15680
15684
  AddAssemblyFromExternalChange$1.AddAssemblyFromExternalChange = void 0;
15685
+ /* eslint-disable @typescript-eslint/require-await */
15681
15686
  var apollo_common_1$h = dist$1;
15682
15687
  var indexedfasta_1 = require$$1$1;
15683
15688
  var generic_filehandle_1 = require$$2;
@@ -15915,6 +15920,8 @@
15915
15920
  value: true
15916
15921
  });
15917
15922
  AddAssemblyFromFileChange$1.AddAssemblyFromFileChange = void 0;
15923
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
15924
+ /* eslint-disable @typescript-eslint/require-await */
15918
15925
  var apollo_common_1$g = dist$1;
15919
15926
  var AddAssemblyFromFileChange = /*#__PURE__*/function (_apollo_common_1$Asse) {
15920
15927
  _inherits(AddAssemblyFromFileChange, _apollo_common_1$Asse);
@@ -16119,6 +16126,9 @@
16119
16126
  value: true
16120
16127
  });
16121
16128
  DeleteFeatureChange$1.isDeleteFeatureChange = DeleteFeatureChange$1.DeleteFeatureChange = void 0;
16129
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
16130
+ /* eslint-disable @typescript-eslint/require-await */
16131
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
16122
16132
  var apollo_common_1$f = dist$1;
16123
16133
  var AddFeatureChange_1 = AddFeatureChange$1;
16124
16134
  var DeleteFeatureChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
@@ -16444,6 +16454,10 @@
16444
16454
  value: true
16445
16455
  });
16446
16456
  AddFeatureChange$1.isAddFeatureChange = AddFeatureChange$1.AddFeatureChange = void 0;
16457
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
16458
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
16459
+ /* eslint-disable @typescript-eslint/require-await */
16460
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
16447
16461
  var apollo_common_1$e = dist$1;
16448
16462
  var DeleteFeatureChange_1 = DeleteFeatureChange$1;
16449
16463
  var AddFeatureChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
@@ -16790,6 +16804,7 @@
16790
16804
  value: true
16791
16805
  });
16792
16806
  AddFeaturesFromFileChange$1.AddFeaturesFromFileChange = void 0;
16807
+ /* eslint-disable @typescript-eslint/require-await */
16793
16808
  var apollo_common_1$d = dist$1;
16794
16809
  var AddFeaturesFromFileChange = /*#__PURE__*/function (_apollo_common_1$Asse) {
16795
16810
  _inherits(AddFeaturesFromFileChange, _apollo_common_1$Asse);
@@ -17029,6 +17044,10 @@
17029
17044
  value: true
17030
17045
  });
17031
17046
  DeleteAssemblyChange$1.DeleteAssemblyChange = void 0;
17047
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
17048
+ /* eslint-disable @typescript-eslint/require-await */
17049
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
17050
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
17032
17051
  var apollo_common_1$c = dist$1;
17033
17052
  var util_1 = require$$1__default$1["default"];
17034
17053
  var DeleteAssemblyChange = /*#__PURE__*/function (_apollo_common_1$Asse) {
@@ -17204,6 +17223,7 @@
17204
17223
  value: true
17205
17224
  });
17206
17225
  DeleteUserChange$1.DeleteUserChange = void 0;
17226
+ /* eslint-disable @typescript-eslint/require-await */
17207
17227
  var apollo_common_1$b = dist$1;
17208
17228
  var DeleteUserChange = /*#__PURE__*/function (_apollo_common_1$Chan) {
17209
17229
  _inherits(DeleteUserChange, _apollo_common_1$Chan);
@@ -17333,6 +17353,9 @@
17333
17353
  value: true
17334
17354
  });
17335
17355
  DiscontinuousLocationEndChange$1.isDiscontinuousLocationEndChange = DiscontinuousLocationEndChange$1.DiscontinuousLocationEndChange = void 0;
17356
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
17357
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
17358
+ /* eslint-disable @typescript-eslint/require-await */
17336
17359
  var apollo_common_1$a = dist$1;
17337
17360
  var DiscontinuousLocationEndChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
17338
17361
  _inherits(DiscontinuousLocationEndChange, _apollo_common_1$Feat);
@@ -17618,6 +17641,9 @@
17618
17641
  value: true
17619
17642
  });
17620
17643
  DiscontinuousLocationStartChange$1.isDiscontinuousLocationStartChange = DiscontinuousLocationStartChange$1.DiscontinuousLocationStartChange = void 0;
17644
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
17645
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
17646
+ /* eslint-disable @typescript-eslint/require-await */
17621
17647
  var apollo_common_1$9 = dist$1;
17622
17648
  var DiscontinuousLocationStartChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
17623
17649
  _inherits(DiscontinuousLocationStartChange, _apollo_common_1$Feat);
@@ -17903,6 +17929,9 @@
17903
17929
  value: true
17904
17930
  });
17905
17931
  FeatureAttributeChange$1.isFeatureAttributeChange = FeatureAttributeChange$1.FeatureAttributeChange = void 0;
17932
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
17933
+ /* eslint-disable @typescript-eslint/require-await */
17934
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
17906
17935
  var apollo_common_1$8 = dist$1;
17907
17936
  var FeatureAttributeChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
17908
17937
  _inherits(FeatureAttributeChange, _apollo_common_1$Feat);
@@ -18182,6 +18211,9 @@
18182
18211
  value: true
18183
18212
  });
18184
18213
  LocationEndChange$1.isLocationEndChange = LocationEndChange$1.LocationEndChange = void 0;
18214
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
18215
+ /* eslint-disable @typescript-eslint/require-await */
18216
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
18185
18217
  var apollo_common_1$7 = dist$1;
18186
18218
  var LocationEndChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
18187
18219
  _inherits(LocationEndChange, _apollo_common_1$Feat);
@@ -18481,6 +18513,9 @@
18481
18513
  value: true
18482
18514
  });
18483
18515
  LocationStartChange$1.isLocationStartChange = LocationStartChange$1.LocationStartChange = void 0;
18516
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
18517
+ /* eslint-disable @typescript-eslint/require-await */
18518
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
18484
18519
  var apollo_common_1$6 = dist$1;
18485
18520
  var LocationStartChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
18486
18521
  _inherits(LocationStartChange, _apollo_common_1$Feat);
@@ -18780,6 +18815,9 @@
18780
18815
  value: true
18781
18816
  });
18782
18817
  StrandChange$1.StrandChange = void 0;
18818
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
18819
+ /* eslint-disable @typescript-eslint/require-await */
18820
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
18783
18821
  var apollo_common_1$5 = dist$1;
18784
18822
  var StrandChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
18785
18823
  _inherits(StrandChange, _apollo_common_1$Feat);
@@ -19067,6 +19105,9 @@
19067
19105
  value: true
19068
19106
  });
19069
19107
  TypeChange$1.TypeChange = void 0;
19108
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
19109
+ /* eslint-disable @typescript-eslint/require-await */
19110
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
19070
19111
  var apollo_common_1$4 = dist$1;
19071
19112
  var TypeChange = /*#__PURE__*/function (_apollo_common_1$Feat) {
19072
19113
  _inherits(TypeChange, _apollo_common_1$Feat);
@@ -19354,6 +19395,7 @@
19354
19395
  value: true
19355
19396
  });
19356
19397
  UserChange$1.UserChange = void 0;
19398
+ /* eslint-disable @typescript-eslint/require-await */
19357
19399
  var apollo_common_1$3 = dist$1;
19358
19400
  var UserChange = /*#__PURE__*/function (_apollo_common_1$Chan) {
19359
19401
  _inherits(UserChange, _apollo_common_1$Chan);
@@ -19572,6 +19614,7 @@
19572
19614
  value: true
19573
19615
  });
19574
19616
  GetAssembliesOperation$1.GetAssembliesOperation = void 0;
19617
+ /* eslint-disable @typescript-eslint/require-await */
19575
19618
  var apollo_common_1$2 = dist$1;
19576
19619
  var GetAssembliesOperation = /*#__PURE__*/function (_apollo_common_1$Oper) {
19577
19620
  _inherits(GetAssembliesOperation, _apollo_common_1$Oper);
@@ -19631,6 +19674,7 @@
19631
19674
  value: true
19632
19675
  });
19633
19676
  GetFeaturesOperation$1.GetFeaturesOperation = void 0;
19677
+ /* eslint-disable @typescript-eslint/require-await */
19634
19678
  var apollo_common_1$1 = dist$1;
19635
19679
  var GetFeaturesOperation = /*#__PURE__*/function (_apollo_common_1$Oper) {
19636
19680
  _inherits(GetFeaturesOperation, _apollo_common_1$Oper);
@@ -21110,6 +21154,7 @@
21110
21154
 
21111
21155
  var util$1 = {};
21112
21156
 
21157
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
21113
21158
  Object.defineProperty(util$1, "__esModule", {
21114
21159
  value: true
21115
21160
  });
@@ -21273,7 +21318,7 @@
21273
21318
  }), 'Add');
21274
21319
  default_1$9 = Add["default"] = _default$b;
21275
21320
 
21276
- var version = "0.1.6";
21321
+ var version = "0.1.7";
21277
21322
 
21278
21323
  const ApolloConfigSchema = configuration.ConfigurationSchema('ApolloInternetAccount', {
21279
21324
  baseURL: {
@@ -28808,7 +28853,7 @@
28808
28853
  for (const ref of assembly.refSeqs.values()) {
28809
28854
  for (const feature of ref.features.values()) {
28810
28855
  for (const check of dist$3.checkRegistry.getChecks().values()) {
28811
- const result = await check.checkFeature(require$$0$2.getSnapshot(feature), async (start, stop) => ref.getSequence(start, stop));
28856
+ const result = await check.checkFeature(require$$0$2.getSnapshot(feature), (start, stop) => Promise.resolve(ref.getSequence(start, stop)));
28812
28857
  checkResults.push(...result);
28813
28858
  }
28814
28859
  }
@@ -28900,14 +28945,14 @@
28900
28945
  }
28901
28946
  }
28902
28947
  }
28903
- if (childFeatures?.length) {
28948
+ if (childFeatures.length > 0) {
28904
28949
  const children = {};
28905
28950
  for (const childFeature of childFeatures) {
28906
28951
  const child = createFeature(childFeature);
28907
28952
  children[child._id] = child;
28908
28953
  // Add value to gffId
28909
28954
  child.attributes?._id
28910
- ? (child.gffId = child.attributes?._id.toString())
28955
+ ? (child.gffId = child.attributes._id.toString())
28911
28956
  : (child.gffId = child._id);
28912
28957
  }
28913
28958
  feature.children = children;
@@ -29037,6 +29082,7 @@
29037
29082
  }), 'Close');
29038
29083
  default_1$7 = Close["default"] = _default$9;
29039
29084
 
29085
+ /* eslint-disable @typescript-eslint/unbound-method */
29040
29086
  const useStyles$f = mui.makeStyles()((theme) => ({
29041
29087
  dialogTitle: {
29042
29088
  background: theme.palette.primary.main,
@@ -29059,6 +29105,7 @@
29059
29105
  React__default["default"].createElement(default_1$7, null))) }));
29060
29106
  });
29061
29107
 
29108
+ /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */
29062
29109
  var FileType;
29063
29110
  (function (FileType) {
29064
29111
  FileType["GFF3"] = "text/x-gff3";
@@ -29266,21 +29313,29 @@
29266
29313
  React__default["default"].createElement(material.FormControlLabel, { value: FileType.EXTERNAL, control: React__default["default"].createElement(material.Radio, null), label: "External", disabled: submitted && !errorMessage }))),
29267
29314
  fileType === FileType.EXTERNAL ? (React__default["default"].createElement(material.Box, { style: { marginTop: 20 } },
29268
29315
  React__default["default"].createElement(material.Typography, { variant: "caption" }, "Enter FASTA and FASTA index(es) URL"),
29269
- React__default["default"].createElement(material.TextField, { margin: "dense", helperText: "Can be bgz-compressed", id: "fasta", label: "FASTA", type: "TextField", fullWidth: true, variant: "outlined", error: !validFastaFile, onChange: (e) => setFastaFile(e.target.value), disabled: submitted && !errorMessage, InputProps: {
29316
+ React__default["default"].createElement(material.TextField, { margin: "dense", helperText: "Can be bgz-compressed", id: "fasta", label: "FASTA", type: "TextField", fullWidth: true, variant: "outlined", error: !validFastaFile, onChange: (e) => {
29317
+ setFastaFile(e.target.value);
29318
+ }, disabled: submitted && !errorMessage, InputProps: {
29270
29319
  startAdornment: (React__default["default"].createElement(InputAdornment__default["default"], { position: "start" },
29271
29320
  React__default["default"].createElement(default_1$8, null))),
29272
29321
  } }),
29273
- React__default["default"].createElement(material.TextField, { margin: "dense", id: "fasta-index", label: "FASTA Index", helperText: ".fai or .gz.fai", type: "TextField", fullWidth: true, variant: "outlined", error: !validFastaIndexFile, onChange: (e) => setFastaIndexFile(e.target.value), disabled: submitted && !errorMessage, InputProps: {
29322
+ React__default["default"].createElement(material.TextField, { margin: "dense", id: "fasta-index", label: "FASTA Index", helperText: ".fai or .gz.fai", type: "TextField", fullWidth: true, variant: "outlined", error: !validFastaIndexFile, onChange: (e) => {
29323
+ setFastaIndexFile(e.target.value);
29324
+ }, disabled: submitted && !errorMessage, InputProps: {
29274
29325
  startAdornment: (React__default["default"].createElement(InputAdornment__default["default"], { position: "start" },
29275
29326
  React__default["default"].createElement(default_1$8, null))),
29276
29327
  } }),
29277
- React__default["default"].createElement(material.TextField, { margin: "dense", id: "fasta-gzi-index", label: "FASTA GZI Index", helperText: "Only for bgz-compressed FASTA, .gz.gzi", type: "TextField", fullWidth: true, variant: "outlined", error: Boolean(fastaGziIndexFile) && !validFastaGziIndexFile, onChange: (e) => setFastaGziIndexFile(e.target.value), disabled: submitted && !errorMessage, InputProps: {
29328
+ React__default["default"].createElement(material.TextField, { margin: "dense", id: "fasta-gzi-index", label: "FASTA GZI Index", helperText: "Only for bgz-compressed FASTA, .gz.gzi", type: "TextField", fullWidth: true, variant: "outlined", error: Boolean(fastaGziIndexFile) && !validFastaGziIndexFile, onChange: (e) => {
29329
+ setFastaGziIndexFile(e.target.value);
29330
+ }, disabled: submitted && !errorMessage, InputProps: {
29278
29331
  startAdornment: (React__default["default"].createElement(InputAdornment__default["default"], { position: "start" },
29279
29332
  React__default["default"].createElement(default_1$8, null))),
29280
29333
  } }))) : (React__default["default"].createElement(material.Box, { style: { marginTop: 20 } },
29281
29334
  React__default["default"].createElement("input", { type: "file", onChange: handleChangeFile, disabled: submitted && !errorMessage }),
29282
29335
  React__default["default"].createElement(material.FormGroup, null,
29283
- React__default["default"].createElement(material.FormControlLabel, { control: React__default["default"].createElement(material.Checkbox, { checked: fileType === FileType.GFF3 && importFeatures, onChange: () => setImportFeatures(!importFeatures), disabled: fileType !== FileType.GFF3 ||
29336
+ React__default["default"].createElement(material.FormControlLabel, { control: React__default["default"].createElement(material.Checkbox, { checked: fileType === FileType.GFF3 && importFeatures, onChange: () => {
29337
+ setImportFeatures(!importFeatures);
29338
+ }, disabled: fileType !== FileType.GFF3 ||
29284
29339
  (submitted && !errorMessage) }), label: "Also load features from GFF3 file" }))))),
29285
29340
  React__default["default"].createElement(material.DialogActions, null,
29286
29341
  React__default["default"].createElement(material.Button, { disabled: !validAsm ||
@@ -35912,7 +35967,7 @@
35912
35967
  return uri;
35913
35968
  }
35914
35969
 
35915
- /* eslint-disable import/no-named-as-default-member */
35970
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
35916
35971
  /** special value of jsonPath that gets the IRI (that is, ID) of the node with the configured prefixes applied */
35917
35972
  const PREFIXED_ID_PATH = '$PREFIXED_ID';
35918
35973
  /** small wrapper for jsonpath.query that intercepts requests for the special prefixed ID path */
@@ -36544,6 +36599,7 @@
36544
36599
  });
36545
36600
  });
36546
36601
 
36602
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
36547
36603
  /** schema version we are currently on, used for the IndexedDB schema open call */
36548
36604
  const schemaVersion = 2;
36549
36605
  /** open the IndexedDB and create the DB schema if necessary */
@@ -36673,10 +36729,11 @@
36673
36729
  return false;
36674
36730
  }
36675
36731
  // check that the index paths and prefixes are the same as our current ones
36676
- return (es6(this.options.prefixes, meta.storeOptions?.prefixes) &&
36677
- es6(this.options.textIndexing, meta.storeOptions?.textIndexing));
36732
+ return (es6(this.options.prefixes, meta.storeOptions.prefixes) &&
36733
+ es6(this.options.textIndexing, meta.storeOptions.textIndexing));
36678
36734
  }
36679
36735
 
36736
+ /* eslint-disable @typescript-eslint/no-throw-literal */
36680
36737
  /**
36681
36738
  * @deprecated use the one from jbrowse core when it is published
36682
36739
  **/
@@ -36771,7 +36828,7 @@
36771
36828
  const myTx = tx ?? db.transaction('nodes');
36772
36829
  return myTx.objectStore('nodes').count();
36773
36830
  }
36774
- async unique(nodes) {
36831
+ unique(nodes) {
36775
36832
  const seen = new Map();
36776
36833
  const result = [];
36777
36834
  for (const node of nodes) {
@@ -36836,10 +36893,7 @@
36836
36893
  const resultIds = new Set();
36837
36894
  async function recur(queryIds) {
36838
36895
  await Promise.all([...queryIds].map(async (queryId) => {
36839
- const theseResults = (await myTx
36840
- .objectStore('edges')
36841
- .index(queryIndex)
36842
- .getAll(queryId))
36896
+ const theseResults = (await myTx.objectStore('edges').index(queryIndex).getAll(queryId))
36843
36897
  .filter((element) => filterEdge(element))
36844
36898
  .map((edge) => edge[resultProp]);
36845
36899
  if (theseResults.length > 0) {
@@ -37106,13 +37160,13 @@
37106
37160
  return subpartTerms;
37107
37161
  }
37108
37162
 
37163
+ /* eslint-disable @typescript-eslint/no-unused-vars */
37109
37164
  function OntologyTermAutocomplete({ fetchValidTerms, filterTerms: filterTermsProp, includeDeprecated, onChange, ontologyName, ontologyVersion, renderInput, session, style, value: valueString, }) {
37110
37165
  const [open, setOpen] = React.useState(false);
37111
37166
  const [termChoices, setTermChoices] = React.useState();
37112
37167
  const [currentOntologyTermInvalid, setCurrentOntologyTermInvalid] = React.useState('');
37113
37168
  const [currentOntologyTerm, setCurrentOntologyTerm] = React.useState();
37114
- const ontologyManager = session.apolloDataStore
37115
- .ontologyManager;
37169
+ const { ontologyManager } = session.apolloDataStore;
37116
37170
  const ontologyStore = ontologyManager.findOntology(ontologyName, ontologyVersion)?.dataStore;
37117
37171
  const needToLoadTermChoices = ontologyStore && open && !termChoices;
37118
37172
  const needToLoadCurrentTerm = ontologyStore && !currentOntologyTerm;
@@ -37172,7 +37226,7 @@
37172
37226
  session,
37173
37227
  fetchValidTerms,
37174
37228
  ]);
37175
- const handleChange = async (event, newValue) => {
37229
+ const handleChange = (event, newValue) => {
37176
37230
  if (!newValue) {
37177
37231
  return;
37178
37232
  }
@@ -37278,7 +37332,7 @@
37278
37332
  },
37279
37333
  parentFeatureId: sourceFeature._id,
37280
37334
  });
37281
- await changeManager.submit?.(change);
37335
+ await changeManager.submit(change);
37282
37336
  notify('Feature added successfully', 'success');
37283
37337
  handleClose();
37284
37338
  event.preventDefault();
@@ -37294,7 +37348,7 @@
37294
37348
  setShowPhase(false);
37295
37349
  }
37296
37350
  }
37297
- async function handleChangePhase(e) {
37351
+ function handleChangePhase(e) {
37298
37352
  setErrorMessage('');
37299
37353
  setPhase(e.target.value);
37300
37354
  switch (Number(e.target.value)) {
@@ -37320,8 +37374,12 @@
37320
37374
  return (React__default["default"].createElement(Dialog, { open: true, title: "Add new child feature", handleClose: handleClose, maxWidth: false, "data-testid": "add-feature-dialog" },
37321
37375
  React__default["default"].createElement("form", { onSubmit: onSubmit },
37322
37376
  React__default["default"].createElement(material.DialogContent, { style: { display: 'flex', flexDirection: 'column' } },
37323
- React__default["default"].createElement(material.TextField, { margin: "dense", id: "start", label: "Start", type: "number", fullWidth: true, variant: "outlined", value: start, onChange: (e) => setStart(e.target.value) }),
37324
- React__default["default"].createElement(material.TextField, { margin: "dense", id: "end", label: "End", type: "number", fullWidth: true, variant: "outlined", value: end, onChange: (e) => setEnd(e.target.value), error: error, helperText: error ? '"End" must be greater than "Start"' : null }),
37377
+ React__default["default"].createElement(material.TextField, { margin: "dense", id: "start", label: "Start", type: "number", fullWidth: true, variant: "outlined", value: start, onChange: (e) => {
37378
+ setStart(e.target.value);
37379
+ } }),
37380
+ React__default["default"].createElement(material.TextField, { margin: "dense", id: "end", label: "End", type: "number", fullWidth: true, variant: "outlined", value: end, onChange: (e) => {
37381
+ setEnd(e.target.value);
37382
+ }, error: error, helperText: error ? '"End" must be greater than "Start"' : null }),
37325
37383
  React__default["default"].createElement(OntologyTermAutocomplete, { session: session, ontologyName: "Sequence Ontology", style: { width: 170 }, value: type, filterTerms: isOntologyClass, fetchValidTerms: fetchValidTerms.bind(null, sourceFeature), renderInput: (params) => (React__default["default"].createElement(material.TextField, { ...params, label: "Type", variant: "outlined", fullWidth: true, error: Boolean(typeWarningText), helperText: typeWarningText })), onChange: (oldValue, newValue) => {
37326
37384
  if (newValue) {
37327
37385
  handleChangeType(newValue);
@@ -37375,7 +37433,7 @@
37375
37433
  const [selectedRefSeqId, setSelectedRefSeqId] = React.useState('');
37376
37434
  const [start, setStart] = React.useState(sourceFeature.start);
37377
37435
  const [errorMessage, setErrorMessage] = React.useState('');
37378
- async function handleChangeAssembly(e) {
37436
+ function handleChangeAssembly(e) {
37379
37437
  setSelectedAssemblyId(e.target.value);
37380
37438
  }
37381
37439
  React.useEffect(() => {
@@ -37399,9 +37457,11 @@
37399
37457
  setRefNames(newRefNames);
37400
37458
  setSelectedRefSeqId(newRefNames[0]?._id || '');
37401
37459
  }
37402
- getRefNames().catch((error) => setErrorMessage(String(error)));
37460
+ getRefNames().catch((error) => {
37461
+ setErrorMessage(String(error));
37462
+ });
37403
37463
  }, [selectedAssemblyId, assemblyManager]);
37404
- async function handleChangeRefSeq(e) {
37464
+ function handleChangeRefSeq(e) {
37405
37465
  const refSeq = e.target.value;
37406
37466
  setSelectedRefSeqId(refSeq);
37407
37467
  }
@@ -37417,7 +37477,7 @@
37417
37477
  setErrorMessage(`Assembly not found: ${selectedAssemblyId}.`);
37418
37478
  return;
37419
37479
  }
37420
- const canonicalRefName = assembly?.getCanonicalRefName(selectedRefSeqId);
37480
+ const canonicalRefName = assembly.getCanonicalRefName(selectedRefSeqId);
37421
37481
  const region = assembly.regions?.find((r) => r.refName === canonicalRefName);
37422
37482
  if (!region) {
37423
37483
  setErrorMessage(`RefSeq not found: ${selectedRefSeqId}.`);
@@ -37473,7 +37533,7 @@
37473
37533
  copyFeature: true,
37474
37534
  allIds: featureIds,
37475
37535
  });
37476
- await changeManager.submit?.(change);
37536
+ await changeManager.submit(change);
37477
37537
  notify('Feature copied successfully', 'success');
37478
37538
  handleClose();
37479
37539
  event.preventDefault();
@@ -37533,6 +37593,7 @@
37533
37593
  React__default["default"].createElement(material.DialogContentText, { color: "error" }, errorMessage))) : null));
37534
37594
  }
37535
37595
 
37596
+ /* eslint-disable @typescript-eslint/no-misused-promises */
37536
37597
  function DeleteAssembly({ changeManager, handleClose, session, }) {
37537
37598
  const { internetAccounts } = require$$0$2.getRoot(session);
37538
37599
  const [selectedAssembly, setSelectedAssembly] = React.useState();
@@ -37575,7 +37636,7 @@
37575
37636
  typeName: 'DeleteAssemblyChange',
37576
37637
  assembly: selectedAssembly.name,
37577
37638
  });
37578
- await changeManager.submit?.(change, {
37639
+ await changeManager.submit(change, {
37579
37640
  internetAccountId: selectedInternetAccount.internetAccountId,
37580
37641
  });
37581
37642
  handleClose();
@@ -37592,7 +37653,9 @@
37592
37653
  React__default["default"].createElement(material.DialogContentText, null,
37593
37654
  React__default["default"].createElement("strong", { style: { color: 'red' } }, "NOTE: All assembly data will be deleted and this operation cannot be undone!")),
37594
37655
  React__default["default"].createElement(material.FormGroup, null,
37595
- React__default["default"].createElement(material.FormControlLabel, { control: React__default["default"].createElement(material.Checkbox, { checked: confirmDelete, onChange: () => setconfirmDelete(!confirmDelete) }), label: "I understand that all assembly data will be deleted" }))),
37656
+ React__default["default"].createElement(material.FormControlLabel, { control: React__default["default"].createElement(material.Checkbox, { checked: confirmDelete, onChange: () => {
37657
+ setconfirmDelete(!confirmDelete);
37658
+ } }), label: "I understand that all assembly data will be deleted" }))),
37596
37659
  React__default["default"].createElement(material.DialogActions, null,
37597
37660
  React__default["default"].createElement(material.Button, { disabled: !selectedAssembly || !confirmDelete, variant: "contained", type: "submit" }, "Delete"),
37598
37661
  React__default["default"].createElement(material.Button, { variant: "outlined", type: "submit", onClick: handleClose }, "Cancel"))),
@@ -37617,7 +37680,7 @@
37617
37680
  deletedFeature: require$$0$2.getSnapshot(sourceFeature),
37618
37681
  parentFeatureId: sourceFeature.parent?._id,
37619
37682
  });
37620
- await changeManager.submit?.(change);
37683
+ await changeManager.submit(change);
37621
37684
  notify('Feature deleted successfully', 'success');
37622
37685
  handleClose();
37623
37686
  event.preventDefault();
@@ -37799,7 +37862,7 @@
37799
37862
  });
37800
37863
  }
37801
37864
  for (const [, refSeq] of refSeqs) {
37802
- const features = refSeq?.features;
37865
+ const { features } = refSeq;
37803
37866
  if (!features) {
37804
37867
  continue;
37805
37868
  }
@@ -37828,6 +37891,7 @@
37828
37891
  React__default["default"].createElement(material.DialogContentText, { color: "error" }, errorMessage))) : null));
37829
37892
  }
37830
37893
 
37894
+ /* eslint-disable @typescript-eslint/unbound-method */
37831
37895
  function ImportFeatures({ changeManager, handleClose, session, }) {
37832
37896
  const { apolloDataStore } = session;
37833
37897
  const [file, setFile] = React.useState();
@@ -37869,7 +37933,7 @@
37869
37933
  assemblyId: selectedAssembly.name,
37870
37934
  });
37871
37935
  uri.search = searchParams.toString();
37872
- const fetch = apolloInternetAccount?.getFetcher({
37936
+ const fetch = apolloInternetAccount.getFetcher({
37873
37937
  locationType: 'UriLocation',
37874
37938
  uri: uri.toString(),
37875
37939
  });
@@ -37923,7 +37987,7 @@
37923
37987
  formData.append('file', file);
37924
37988
  formData.append('fileName', file.name);
37925
37989
  formData.append('type', 'text/x-gff3');
37926
- const apolloFetchFile = apolloInternetAccount?.getFetcher({
37990
+ const apolloFetchFile = apolloInternetAccount.getFetcher({
37927
37991
  locationType: 'UriLocation',
37928
37992
  uri: url,
37929
37993
  });
@@ -38018,7 +38082,9 @@
38018
38082
  const data = (await response.json());
38019
38083
  setChecks(data);
38020
38084
  }
38021
- getChecks().catch((error) => setErrorMessage(String(error)));
38085
+ getChecks().catch((error) => {
38086
+ setErrorMessage(String(error));
38087
+ });
38022
38088
  }, [selectedInternetAccount]);
38023
38089
  React.useEffect(() => {
38024
38090
  if (assemblies.length > 0 && selectedAssembly === undefined) {
@@ -38042,7 +38108,9 @@
38042
38108
  const assembly = (await response.json());
38043
38109
  setSelectedChecks(assembly.checks);
38044
38110
  }
38045
- getChecks().catch((error) => setErrorMessage(String(error)));
38111
+ getChecks().catch((error) => {
38112
+ setErrorMessage(String(error));
38113
+ });
38046
38114
  }, [selectedAssembly, selectedInternetAccount]);
38047
38115
  function handleChangeAssembly(e) {
38048
38116
  const newAssembly = assemblies.find((asm) => asm.name === e.target.value);
@@ -38146,6 +38214,7 @@
38146
38214
  }), 'Delete');
38147
38215
  default_1$6 = Delete["default"] = _default$8;
38148
38216
 
38217
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
38149
38218
  function ManageUsers({ changeManager, handleClose, session, }) {
38150
38219
  const { internetAccounts } = require$$0$2.getRoot(session);
38151
38220
  const apolloInternetAccounts = internetAccounts.filter((ia) => ia.type === 'ApolloInternetAccount' && ia.role?.includes('admin'));
@@ -38158,7 +38227,7 @@
38158
38227
  const getUsers = React.useCallback(async () => {
38159
38228
  const { baseURL } = selectedInternetAccount;
38160
38229
  const uri = new URL('/users', baseURL).href;
38161
- const apolloFetch = selectedInternetAccount?.getFetcher({
38230
+ const apolloFetch = selectedInternetAccount.getFetcher({
38162
38231
  locationType: 'UriLocation',
38163
38232
  uri,
38164
38233
  });
@@ -38174,7 +38243,9 @@
38174
38243
  }
38175
38244
  }, [selectedInternetAccount]);
38176
38245
  React.useEffect(() => {
38177
- getUsers().catch((error) => setErrorMessage(String(error)));
38246
+ getUsers().catch((error) => {
38247
+ setErrorMessage(String(error));
38248
+ });
38178
38249
  }, [getUsers]);
38179
38250
  async function deleteUser(id) {
38180
38251
  const change = new dist$2.DeleteUserChange({
@@ -38239,7 +38310,9 @@
38239
38310
  React__default["default"].createElement(material.DialogContentText, null, "Select account"),
38240
38311
  React__default["default"].createElement(material.Select, { value: selectedInternetAccount.internetAccountId, onChange: handleChangeInternetAccount, disabled: !errorMessage }, internetAccounts.map((option) => (React__default["default"].createElement(material.MenuItem, { key: option.id, value: option.internetAccountId }, option.name)))))) : null,
38241
38312
  React__default["default"].createElement("div", { style: { height: '100%', width: '100%' } },
38242
- React__default["default"].createElement(xDataGrid.DataGrid, { pagination: true, rows: users, columns: gridColumns, getRowId: (row) => row._id, slots: { toolbar: xDataGrid.GridToolbar }, getRowHeight: () => 'auto', isCellEditable: (params) => !isCurrentUser(params.id), processRowUpdate: processRowUpdate, onProcessRowUpdateError: (error) => setErrorMessage(String(error)) }))),
38313
+ React__default["default"].createElement(xDataGrid.DataGrid, { pagination: true, rows: users, columns: gridColumns, getRowId: (row) => row._id, slots: { toolbar: xDataGrid.GridToolbar }, getRowHeight: () => 'auto', isCellEditable: (params) => !isCurrentUser(params.id), processRowUpdate: processRowUpdate, onProcessRowUpdateError: (error) => {
38314
+ setErrorMessage(String(error));
38315
+ } }))),
38243
38316
  React__default["default"].createElement(material.DialogActions, null,
38244
38317
  React__default["default"].createElement(material.Button, { variant: "outlined", type: "submit", onClick: handleClose }, "Close")),
38245
38318
  errorMessage ? (React__default["default"].createElement(material.DialogContent, null,
@@ -38765,6 +38838,7 @@
38765
38838
  })(parse);
38766
38839
  var highlightParse = parse.exports;
38767
38840
 
38841
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
38768
38842
  // interface TermAutocompleteResult extends TermValue {
38769
38843
  // label: string[]
38770
38844
  // match: string
@@ -38813,8 +38887,7 @@
38813
38887
  React__namespace.createElement(material.Chip, { label: errorMessage || manager.applyPrefixes(termId), color: errorMessage ? 'error' : 'default', size: "small", ...getTagProps({ index }) }))));
38814
38888
  }
38815
38889
  function OntologyTermMultiSelect({ includeDeprecated, onChange, ontologyName, ontologyVersion, session, value: initialValue, }) {
38816
- const ontologyManager = session.apolloDataStore
38817
- .ontologyManager;
38890
+ const { ontologyManager } = session.apolloDataStore;
38818
38891
  const ontology = ontologyManager.findOntology(ontologyName, ontologyVersion);
38819
38892
  const [value, setValue] = React__namespace.useState(initialValue.map((id) => ({ term: { id, type: 'CLASS' } })));
38820
38893
  const [inputValue, setInputValue] = React__namespace.useState('');
@@ -39073,7 +39146,7 @@
39073
39146
  featureId: sourceFeature._id,
39074
39147
  attributes: attrs,
39075
39148
  });
39076
- await changeManager.submit?.(change);
39149
+ await changeManager.submit(change);
39077
39150
  notify('Feature attributes modified successfully', 'success');
39078
39151
  handleClose();
39079
39152
  event.preventDefault();
@@ -39177,6 +39250,7 @@
39177
39250
  React__default["default"].createElement(material.Button, { variant: "outlined", type: "submit", disabled: showAddNewForm, onClick: handleClose }, "Cancel")))));
39178
39251
  }
39179
39252
 
39253
+ /* eslint-disable @typescript-eslint/unbound-method */
39180
39254
  function OpenLocalFile({ handleClose, session }) {
39181
39255
  const { addApolloTrackConfig, apolloDataStore } = session;
39182
39256
  const { addAssembly, addSessionAssembly, assemblyManager, notify } = session;
@@ -39185,7 +39259,7 @@
39185
39259
  const [errorMessage, setErrorMessage] = React.useState('');
39186
39260
  const [submitted, setSubmitted] = React.useState(false);
39187
39261
  const theme = material.useTheme();
39188
- async function handleChangeFile(e) {
39262
+ function handleChangeFile(e) {
39189
39263
  const selectedFile = e.target.files?.item(0);
39190
39264
  if (!selectedFile) {
39191
39265
  return;
@@ -39242,10 +39316,10 @@
39242
39316
  if (a) {
39243
39317
  // @ts-expect-error MST type coercion problem?
39244
39318
  addApolloTrackConfig(a);
39245
- notify(`Loaded GFF3 ${file?.name}`, 'success');
39319
+ notify(`Loaded GFF3 ${file.name}`, 'success');
39246
39320
  }
39247
39321
  else {
39248
- notify(`Error loading GFF3 ${file?.name}`, 'error');
39322
+ notify(`Error loading GFF3 ${file.name}`, 'error');
39249
39323
  }
39250
39324
  handleClose();
39251
39325
  }
@@ -39270,6 +39344,7 @@
39270
39344
  React__default["default"].createElement(material.DialogContentText, { color: "error" }, errorMessage))) : null));
39271
39345
  }
39272
39346
 
39347
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
39273
39348
  const useStyles$d = mui.makeStyles()((theme) => ({
39274
39349
  changeTextarea: {
39275
39350
  fontFamily: 'monospace',
@@ -39335,7 +39410,9 @@
39335
39410
  setAssemblyCollection(data);
39336
39411
  }
39337
39412
  }
39338
- getAssemblies().catch((error) => setErrorMessage(String(error)));
39413
+ getAssemblies().catch((error) => {
39414
+ setErrorMessage(String(error));
39415
+ });
39339
39416
  }, [apolloInternetAccount, baseURL]);
39340
39417
  React.useEffect(() => {
39341
39418
  if (!assemblyId && assemblyCollection.length > 0) {
@@ -39369,9 +39446,11 @@
39369
39446
  setDisplayGridData(data);
39370
39447
  }
39371
39448
  }
39372
- getGridData().catch((error) => setErrorMessage(String(error)));
39449
+ getGridData().catch((error) => {
39450
+ setErrorMessage(String(error));
39451
+ });
39373
39452
  }, [assemblyId, apolloInternetAccount, baseURL]);
39374
- async function handleChangeAssembly(e) {
39453
+ function handleChangeAssembly(e) {
39375
39454
  setAssemblyId(e.target.value);
39376
39455
  }
39377
39456
  return (React__default["default"].createElement(Dialog, { open: true, fullScreen: true, title: "View change log", handleClose: handleClose, "data-testid": "view-changelog" },
@@ -39428,8 +39507,7 @@
39428
39507
  handleClose: () => {
39429
39508
  doneCallback();
39430
39509
  },
39431
- changeManager: session.apolloDataStore
39432
- .changeManager,
39510
+ changeManager: session.apolloDataStore.changeManager,
39433
39511
  },
39434
39512
  ]);
39435
39513
  },
@@ -39444,8 +39522,7 @@
39444
39522
  handleClose: () => {
39445
39523
  doneCallback();
39446
39524
  },
39447
- changeManager: session.apolloDataStore
39448
- .changeManager,
39525
+ changeManager: session.apolloDataStore.changeManager,
39449
39526
  },
39450
39527
  ]);
39451
39528
  },
@@ -39548,7 +39625,9 @@
39548
39625
  const data = (await response.json());
39549
39626
  setLoginTypes(data);
39550
39627
  }
39551
- getAuthTypes().catch((error) => require$$1$3.isAbortException(error) ? '' : setErrorMessage(String(error)));
39628
+ getAuthTypes().catch((error) => {
39629
+ require$$1$3.isAbortException(error) ? '' : setErrorMessage(String(error));
39630
+ });
39552
39631
  return () => {
39553
39632
  controller.abort();
39554
39633
  };
@@ -39569,11 +39648,17 @@
39569
39648
  const allowGuest = loginTypes.includes('guest');
39570
39649
  return (React__default["default"].createElement(Dialog, { open: true, title: `Log in to ${name}`, handleClose: handleClose, maxWidth: false, "data-testid": "login-apollo" },
39571
39650
  React__default["default"].createElement(material.DialogContent, { style: { display: 'flex', flexDirection: 'column', paddingTop: 8 } },
39572
- allowGoogle ? (React__default["default"].createElement(GoogleButton, { disabled: !allowGoogle, onClick: () => handleClick('google') })) : null,
39573
- allowMicrosoft ? (React__default["default"].createElement(MicrosoftButton, { disabled: !allowMicrosoft, onClick: () => handleClick('microsoft') })) : null,
39651
+ allowGoogle ? (React__default["default"].createElement(GoogleButton, { disabled: !allowGoogle, onClick: () => {
39652
+ handleClick('google');
39653
+ } })) : null,
39654
+ allowMicrosoft ? (React__default["default"].createElement(MicrosoftButton, { disabled: !allowMicrosoft, onClick: () => {
39655
+ handleClick('microsoft');
39656
+ } })) : null,
39574
39657
  allowGuest ? (React__default["default"].createElement(React__default["default"].Fragment, null,
39575
39658
  React__default["default"].createElement(material.Divider, { className: classes.divider }),
39576
- React__default["default"].createElement(GuestButton, { onClick: () => handleClick('guest') }))) : null),
39659
+ React__default["default"].createElement(GuestButton, { onClick: () => {
39660
+ handleClick('guest');
39661
+ } }))) : null),
39577
39662
  React__default["default"].createElement(material.DialogActions, null,
39578
39663
  React__default["default"].createElement(material.Button, { variant: "outlined", type: "submit", onClick: () => {
39579
39664
  handleClose();
@@ -39582,6 +39667,7 @@
39582
39667
  React__default["default"].createElement(material.DialogContentText, { color: "error" }, errorMessage))) : null));
39583
39668
  };
39584
39669
 
39670
+ /* eslint-disable @typescript-eslint/no-unused-vars */
39585
39671
  const inWebWorker$1 = typeof sessionStorage === 'undefined';
39586
39672
  const stateModelFactory$2 = (configSchema) => {
39587
39673
  return pluggableElementTypes.InternetAccount.named('ApolloInternetAccount')
@@ -39633,8 +39719,6 @@
39633
39719
  return {
39634
39720
  addMessageChannel(resolve, reject) {
39635
39721
  listener = (event) => {
39636
- // this should probably get better handling, but ignored for now
39637
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
39638
39722
  this.finishOAuthWindow(event, resolve, reject);
39639
39723
  };
39640
39724
  window.addEventListener('message', listener);
@@ -39642,9 +39726,10 @@
39642
39726
  deleteMessageChannel() {
39643
39727
  window.removeEventListener('message', listener);
39644
39728
  },
39645
- async finishOAuthWindow(event, resolve, reject) {
39729
+ finishOAuthWindow(event, resolve, reject) {
39646
39730
  if (event.data.name !== `JBrowseAuthWindow-${self.internetAccountId}`) {
39647
- return this.deleteMessageChannel();
39731
+ this.deleteMessageChannel();
39732
+ return;
39648
39733
  }
39649
39734
  const redirectUriWithInfo = event.data.redirectUri;
39650
39735
  const fixedQueryString = redirectUriWithInfo.replace('#', '?');
@@ -39654,11 +39739,12 @@
39654
39739
  const token = urlParams.get('access_token');
39655
39740
  this.deleteMessageChannel();
39656
39741
  if (!token) {
39657
- return reject(new Error('Error with token endpoint'));
39742
+ reject(new Error('Error with token endpoint'));
39743
+ return;
39658
39744
  }
39659
39745
  self.storeToken(token);
39660
39746
  self.setRole();
39661
- return resolve(token);
39747
+ resolve(token);
39662
39748
  },
39663
39749
  async openAuthWindow(type, resolve, reject) {
39664
39750
  const redirectUri = require$$1$3.isElectron
@@ -39681,7 +39767,6 @@
39681
39767
  const eventFromDesktop = new MessageEvent('message', {
39682
39768
  data: { name: eventName, redirectUri: redirectUriFromElectron },
39683
39769
  });
39684
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
39685
39770
  this.finishOAuthWindow(eventFromDesktop, resolve, reject);
39686
39771
  }
39687
39772
  else {
@@ -39729,7 +39814,8 @@
39729
39814
  const response = await fetch(uri);
39730
39815
  if (!response.ok) {
39731
39816
  const errorMessage = await createFetchErrorMessage(response, 'Error when logging in');
39732
- return reject(new Error(errorMessage));
39817
+ reject(new Error(errorMessage));
39818
+ return;
39733
39819
  }
39734
39820
  const { token } = await response.json();
39735
39821
  resolve(token);
@@ -39765,8 +39851,7 @@
39765
39851
  }),
39766
39852
  getMissingChanges: require$$0$2.flow(function* getMissingChanges() {
39767
39853
  const { session } = require$$0$2.getRoot(self);
39768
- const { changeManager } = session
39769
- .apolloDataStore;
39854
+ const { changeManager } = session.apolloDataStore;
39770
39855
  if (!self.lastChangeSequenceNumber) {
39771
39856
  throw new Error('No LastChangeSequence stored in session. Please, refresh you browser to get last updates from server');
39772
39857
  }
@@ -39790,7 +39875,7 @@
39790
39875
  const serializedChanges = yield response.json();
39791
39876
  for (const serializedChange of serializedChanges) {
39792
39877
  const change = dist$3.Change.fromJSON(serializedChange);
39793
- void changeManager?.submit(change, { submitToBackend: false });
39878
+ void changeManager.submit(change, { submitToBackend: false });
39794
39879
  }
39795
39880
  }),
39796
39881
  }))
@@ -39829,7 +39914,7 @@
39829
39914
  return; // we did this change, no need to apply it again
39830
39915
  }
39831
39916
  const change = dist$3.Change.fromJSON(message.changeInfo);
39832
- void changeManager?.submit(change, { submitToBackend: false });
39917
+ void changeManager.submit(change, { submitToBackend: false });
39833
39918
  });
39834
39919
  socket.on('USER_LOCATION', (message) => {
39835
39920
  const { channel, locations, userName, userSessionId } = message;
@@ -39884,7 +39969,9 @@
39884
39969
  let timeoutId;
39885
39970
  return (userLocation) => {
39886
39971
  clearTimeout(timeoutId);
39887
- timeoutId = setTimeout(() => fn(userLocation), debounceTimeout);
39972
+ timeoutId = setTimeout(() => {
39973
+ fn(userLocation);
39974
+ }, debounceTimeout);
39888
39975
  };
39889
39976
  };
39890
39977
  return { postUserLocation: debouncePostUserLocation(postUserLocation) };
@@ -40080,6 +40167,7 @@
40080
40167
  }();
40081
40168
  var _default$6 = simpleFeature["default"] = SimpleFeature;
40082
40169
 
40170
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
40083
40171
  function isApolloMessageData$1(data) {
40084
40172
  return (typeof data === 'object' &&
40085
40173
  data !== null &&
@@ -40268,8 +40356,9 @@
40268
40356
  const { session } = displayModel;
40269
40357
  const { collaborators: collabs } = session;
40270
40358
  // bridging mobx observability and React useEffect observability
40271
- // eslint-disable-next-line react-hooks/exhaustive-deps
40272
- React.useEffect(() => mobx.autorun(() => setCollaborators(mobx.toJS(collabs))), []);
40359
+ React.useEffect(() => mobx.autorun(() => {
40360
+ setCollaborators(mobx.toJS(collabs));
40361
+ }), []);
40273
40362
  const [region] = regions;
40274
40363
  const totalWidth = (region.end - region.start) / bpPerPx;
40275
40364
  const { apolloFeatureUnderMouse, apolloRowHeight: height, apolloRowUnderMouse, changeManager, codonLayout, featureLayout, features, featuresHeight: totalHeight, getAssemblyId, selectedFeature, setApolloFeatureUnderMouse, setApolloRowUnderMouse, setSelectedFeature, showIntronLines: showLines, showStartCodons: showStarts, showStopCodons: showStops, } = displayModel;
@@ -40650,7 +40739,7 @@
40650
40739
  assembly,
40651
40740
  });
40652
40741
  }
40653
- await changeManager?.submit(change);
40742
+ await changeManager.submit(change);
40654
40743
  }
40655
40744
  // eslint-disable-next-line unicorn/no-useless-undefined
40656
40745
  setDragging(undefined);
@@ -40751,6 +40840,7 @@
40751
40840
 
40752
40841
  var apolloSixFrameRendererConfigSchema = configuration.ConfigurationSchema('ApolloSixFrameRenderer', {}, { explicitlyTyped: true });
40753
40842
 
40843
+ /* eslint-disable @typescript-eslint/require-await */
40754
40844
  class ApolloSixFrameRenderer extends pluggableElementTypes.RendererType {
40755
40845
  async renderInClient(_rpcManager, args) {
40756
40846
  return this.render(args);
@@ -40857,6 +40947,7 @@
40857
40947
  }(BaseResult);
40858
40948
  BaseResults.RefSequenceResult = RefSequenceResult;
40859
40949
 
40950
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
40860
40951
  class ApolloTextSearchAdapter extends BaseAdapter.BaseAdapter {
40861
40952
  get baseURL() {
40862
40953
  return configuration.readConfObject(this.config, 'baseURL').uri;
@@ -40921,6 +41012,7 @@
40921
41012
  }));
40922
41013
  }
40923
41014
 
41015
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
40924
41016
  var PhaseEnum;
40925
41017
  (function (PhaseEnum) {
40926
41018
  PhaseEnum[PhaseEnum["zero"] = 0] = "zero";
@@ -40974,7 +41066,7 @@
40974
41066
  strand,
40975
41067
  },
40976
41068
  });
40977
- await changeManager.submit?.(change);
41069
+ await changeManager.submit(change);
40978
41070
  notify('Feature added successfully', 'success');
40979
41071
  handleClose();
40980
41072
  event.preventDefault();
@@ -41007,7 +41099,7 @@
41007
41099
  }
41008
41100
  }
41009
41101
  }
41010
- async function handleChangePhase(e) {
41102
+ function handleChangePhase(e) {
41011
41103
  setErrorMessage('');
41012
41104
  setPhase(e.target.value);
41013
41105
  switch (Number(e.target.value)) {
@@ -41033,8 +41125,12 @@
41033
41125
  return (React__default["default"].createElement(Dialog, { open: true, title: "Add new feature", handleClose: handleClose, maxWidth: false, "data-testid": "add-feature-dialog" },
41034
41126
  React__default["default"].createElement("form", { onSubmit: onSubmit },
41035
41127
  React__default["default"].createElement(material.DialogContent, { style: { display: 'flex', flexDirection: 'column' } },
41036
- React__default["default"].createElement(material.TextField, { margin: "dense", id: "start", label: "Start", type: "number", fullWidth: true, variant: "outlined", value: Number(start), onChange: (e) => setStart(e.target.value) }),
41037
- React__default["default"].createElement(material.TextField, { margin: "dense", id: "end", label: "End", type: "number", fullWidth: true, variant: "outlined", value: end, onChange: (e) => setEnd(e.target.value), error: error, helperText: error ? '"End" must be greater than "Start"' : null }),
41128
+ React__default["default"].createElement(material.TextField, { margin: "dense", id: "start", label: "Start", type: "number", fullWidth: true, variant: "outlined", value: Number(start), onChange: (e) => {
41129
+ setStart(e.target.value);
41130
+ } }),
41131
+ React__default["default"].createElement(material.TextField, { margin: "dense", id: "end", label: "End", type: "number", fullWidth: true, variant: "outlined", value: end, onChange: (e) => {
41132
+ setEnd(e.target.value);
41133
+ }, error: error, helperText: error ? '"End" must be greater than "Start"' : null }),
41038
41134
  React__default["default"].createElement(OntologyTermAutocomplete, { session: session, ontologyName: "Sequence Ontology", style: { width: 170 }, value: type, filterTerms: isOntologyClass, renderInput: (params) => (React__default["default"].createElement(material.TextField, { ...params, label: "Type", variant: "outlined", fullWidth: true })), onChange: (oldValue, newValue) => {
41039
41135
  if (newValue) {
41040
41136
  handleChangeType(newValue);
@@ -41114,7 +41210,9 @@
41114
41210
  setDisplayGridData(data);
41115
41211
  }
41116
41212
  }
41117
- getGridData().catch((error) => setErrorMessage(String(error)));
41213
+ getGridData().catch((error) => {
41214
+ setErrorMessage(String(error));
41215
+ });
41118
41216
  }, [selectedAssembly, apolloInternetAccount, baseURL]);
41119
41217
  function handleChangeAssembly(e) {
41120
41218
  const newAssembly = assemblies.find((asm) => asm.name === e.target.value);
@@ -41267,7 +41365,7 @@
41267
41365
  cdsFeature.start = Math.min(cdsFeature.start, exon.start);
41268
41366
  cdsFeature.end = Math.max(cdsFeature.end, exon.end);
41269
41367
  const { end, start } = exon;
41270
- discontinuousLocations?.push({ start, end, phase });
41368
+ discontinuousLocations.push({ start, end, phase });
41271
41369
  const localPhase = (end - start) % 3;
41272
41370
  phase = ((phase + localPhase) % 3);
41273
41371
  const newExon = {
@@ -41295,7 +41393,7 @@
41295
41393
  addedFeature: newFeature,
41296
41394
  });
41297
41395
  const session = require$$1$3.getSession(self);
41298
- await session.apolloDataStore.changeManager.submit?.(change);
41396
+ await session.apolloDataStore.changeManager.submit(change);
41299
41397
  session.notify('Annotation added successfully', 'success');
41300
41398
  },
41301
41399
  }))
@@ -41322,6 +41420,7 @@
41322
41420
  return pluggableElement;
41323
41421
  }
41324
41422
 
41423
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
41325
41424
  const StringTextField = mobxReact.observer(function StringTextField({ onChangeCommitted, value: initialValue, ...props }) {
41326
41425
  const [value, setValue] = React.useState(String(initialValue));
41327
41426
  const [blur, setBlur] = React.useState(false);
@@ -41350,7 +41449,9 @@
41350
41449
  if (value !== String(initialValue)) {
41351
41450
  onChangeCommitted(value);
41352
41451
  }
41353
- }, inputRef: (node) => setInputNode(node) }));
41452
+ }, inputRef: (node) => {
41453
+ setInputNode(node);
41454
+ } }));
41354
41455
  });
41355
41456
 
41356
41457
  const reservedKeys = new Map([
@@ -41487,7 +41588,7 @@
41487
41588
  featureId: feature._id,
41488
41589
  attributes: attrs,
41489
41590
  });
41490
- await changeManager.submit?.(change);
41591
+ await changeManager.submit(change);
41491
41592
  notify('Feature attributes modified successfully', 'success');
41492
41593
  }
41493
41594
  function handleAddNewAttributeChange() {
@@ -41570,6 +41671,7 @@
41570
41671
  errorMessage ? (React__default["default"].createElement(material.Typography, { color: "error" }, errorMessage)) : null));
41571
41672
  });
41572
41673
 
41674
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
41573
41675
  const NumberTextField = mobxReact.observer(function NumberTextField({ onChangeCommitted, value: initialValue, ...props }) {
41574
41676
  const [value, setValue] = React.useState(String(initialValue));
41575
41677
  const [blur, setBlur] = React.useState(false);
@@ -41605,14 +41707,18 @@
41605
41707
  onChangeCommitted(valueAsNumber);
41606
41708
  }
41607
41709
  }
41608
- }, inputRef: (node) => setInputNode(node), error: error, helperText: error ? 'Not a valid number' : undefined }));
41710
+ }, inputRef: (node) => {
41711
+ setInputNode(node);
41712
+ }, error: error, helperText: error ? 'Not a valid number' : undefined }));
41609
41713
  });
41610
41714
 
41611
41715
  const BasicInformation = mobxReact.observer(function BasicInformation({ assembly, feature, session, }) {
41612
41716
  const [errorMessage, setErrorMessage] = React.useState('');
41613
41717
  const [typeWarningText, setTypeWarningText] = React.useState('');
41614
41718
  const { _id, assemblyId, end, start, strand, type } = feature;
41615
- const notifyError = (e) => session.notify(e.message, 'error');
41719
+ const notifyError = (e) => {
41720
+ session.notify(e.message, 'error');
41721
+ };
41616
41722
  const { changeManager } = session.apolloDataStore;
41617
41723
  function handleTypeChange(newType) {
41618
41724
  setErrorMessage('');
@@ -41708,7 +41814,7 @@
41708
41814
  assembly,
41709
41815
  refName,
41710
41816
  });
41711
- session.showWidget?.(apolloFeatureWidget);
41817
+ session.showWidget(apolloFeatureWidget);
41712
41818
  }
41713
41819
  };
41714
41820
  if (!(parent || (children && children.size > 0))) {
@@ -41720,12 +41826,16 @@
41720
41826
  React__default["default"].createElement(material.Typography, { variant: "h5" }, "Parent"),
41721
41827
  React__default["default"].createElement(material.Paper, { elevation: 6, className: classes.paper },
41722
41828
  `Start: ${parent.start}, End: ${parent.end}, Type: ${parent.type}`,
41723
- React__default["default"].createElement(material.Button, { variant: "contained", onClick: () => onButtonClick(parent) }, "Go to parent")))),
41829
+ React__default["default"].createElement(material.Button, { variant: "contained", onClick: () => {
41830
+ onButtonClick(parent);
41831
+ } }, "Go to parent")))),
41724
41832
  children && children.size > 0 && (React__default["default"].createElement(React__default["default"].Fragment, null,
41725
41833
  React__default["default"].createElement(material.Typography, { variant: "h5" }, "Children"),
41726
41834
  [...children.values()].map((child) => (React__default["default"].createElement(material.Paper, { elevation: 6, className: classes.paper, key: child._id },
41727
41835
  `Start: ${child.start}, End: ${child.end}, Type: ${child.type}`,
41728
- React__default["default"].createElement(material.Button, { variant: "contained", onClick: () => onButtonClick(child) }, "Go to child"))))))));
41836
+ React__default["default"].createElement(material.Button, { variant: "contained", onClick: () => {
41837
+ onButtonClick(child);
41838
+ } }, "Go to child"))))))));
41729
41839
  });
41730
41840
 
41731
41841
  function formatSequence(seq, refName, start, end, wrap) {
@@ -41823,6 +41933,10 @@
41823
41933
  value: true
41824
41934
  });
41825
41935
  exports.AnnotationFeature = exports.LateAnnotationFeature = void 0;
41936
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
41937
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
41938
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
41939
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
41826
41940
  var mobx_state_tree_1 = require$$0__default$1["default"];
41827
41941
  var _1 = dist;
41828
41942
  exports.LateAnnotationFeature = /*#__PURE__*/mobx_state_tree_1.types.late(function () {
@@ -42276,6 +42390,7 @@
42276
42390
  tslib_1.__exportStar(CheckResult, exports);
42277
42391
  })(dist);
42278
42392
 
42393
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
42279
42394
  const ApolloFeatureDetailsWidgetModel = require$$0$2.types
42280
42395
  .model('ApolloFeatureDetailsWidget', {
42281
42396
  id: mst.ElementId,
@@ -42558,7 +42673,9 @@
42558
42673
  if (value !== initialValue) {
42559
42674
  onChangeCommitted(value).catch(notifyError);
42560
42675
  }
42561
- }, ref: (node) => setInputNode(node) })));
42676
+ }, ref: (node) => {
42677
+ setInputNode(node);
42678
+ } })));
42562
42679
  });
42563
42680
 
42564
42681
  const useStyles$4 = mui.makeStyles()((theme) => ({
@@ -42617,7 +42734,9 @@
42617
42734
  tabularEditorState.setFeatureCollapsed(_id, expanded);
42618
42735
  };
42619
42736
  // pop up a snackbar in the session notifying user of an error
42620
- const notifyError = (e) => session.notify(e.message, 'error');
42737
+ const notifyError = (e) => {
42738
+ session.notify(e.message, 'error');
42739
+ };
42621
42740
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
42622
42741
  React__default["default"].createElement("tr", { onMouseEnter: (_e) => {
42623
42742
  displayState.setApolloHover({
@@ -42807,6 +42926,7 @@
42807
42926
  }), 'UnfoldLess');
42808
42927
  default_1$3 = UnfoldLess["default"] = _default$3;
42809
42928
 
42929
+ /* eslint-disable @typescript-eslint/unbound-method */
42810
42930
  const useStyles$2 = mui.makeStyles()({
42811
42931
  toolbar: {
42812
42932
  width: '100%',
@@ -42826,9 +42946,13 @@
42826
42946
  React__default["default"].createElement(material.Tooltip, { title: "Collapse all" },
42827
42947
  React__default["default"].createElement(material.IconButton, { "aria-label": "collapse", sx: { marginTop: 0 }, onClick: model.collapseAllFeatures },
42828
42948
  React__default["default"].createElement(default_1$3, null))),
42829
- React__default["default"].createElement(material.TextField, { className: classes.filterText, label: "Filter features", value: model.filterText, sx: { marginTop: 0 }, variant: "outlined", onChange: (event) => model.setFilterText(event.target.value), InputProps: {
42949
+ React__default["default"].createElement(material.TextField, { className: classes.filterText, label: "Filter features", value: model.filterText, sx: { marginTop: 0 }, variant: "outlined", onChange: (event) => {
42950
+ model.setFilterText(event.target.value);
42951
+ }, InputProps: {
42830
42952
  endAdornment: (React__default["default"].createElement(material.InputAdornment, { position: "end" },
42831
- React__default["default"].createElement(material.IconButton, { onClick: () => model.clearFilterText() },
42953
+ React__default["default"].createElement(material.IconButton, { onClick: () => {
42954
+ model.clearFilterText();
42955
+ } },
42832
42956
  React__default["default"].createElement(default_1$4, null)))),
42833
42957
  } })));
42834
42958
  });
@@ -43130,7 +43254,7 @@
43130
43254
  assembly: currentAssemblyId,
43131
43255
  refName: region.refName,
43132
43256
  });
43133
- session.showWidget?.(apolloFeatureWidget);
43257
+ session.showWidget(apolloFeatureWidget);
43134
43258
  },
43135
43259
  });
43136
43260
  }
@@ -43544,7 +43668,7 @@
43544
43668
  },
43545
43669
  get changeManager() {
43546
43670
  return self.session.apolloDataStore
43547
- ?.changeManager;
43671
+ .changeManager;
43548
43672
  },
43549
43673
  getAssemblyId(assemblyName) {
43550
43674
  const { assemblyManager } = self.session;
@@ -43561,7 +43685,7 @@
43561
43685
  }))
43562
43686
  .actions((self) => ({
43563
43687
  setSelectedFeature(feature) {
43564
- return self.session.apolloSetSelectedFeature(feature);
43688
+ self.session.apolloSetSelectedFeature(feature);
43565
43689
  },
43566
43690
  afterAttach() {
43567
43691
  require$$0$2.addDisposer(self, mobx.autorun(() => {
@@ -43856,8 +43980,8 @@
43856
43980
  M: '#33ee33',
43857
43981
  '*': '#f44336',
43858
43982
  };
43859
- if (colorMap[letter?.toUpperCase()] !== undefined) {
43860
- return colorMap[letter?.toUpperCase()];
43983
+ if (colorMap[letter.toUpperCase()] !== undefined) {
43984
+ return colorMap[letter.toUpperCase()];
43861
43985
  }
43862
43986
  return bpPerPx <= 0.1 ? rowColorCode : 'lightgray';
43863
43987
  }
@@ -44237,7 +44361,7 @@
44237
44361
  let featureRow;
44238
44362
  let i = 0;
44239
44363
  for (const [, f] of children ?? new Map()) {
44240
- if (f._id === apolloSelectedFeature?._id) {
44364
+ if (f._id === apolloSelectedFeature._id) {
44241
44365
  featureEntry = f;
44242
44366
  featureRow = i;
44243
44367
  }
@@ -44306,7 +44430,7 @@
44306
44430
  let featureRow;
44307
44431
  let i = 0;
44308
44432
  for (const [, f] of topLevelFeature.children ?? new Map()) {
44309
- if (f._id === feature?._id) {
44433
+ if (f._id === feature._id) {
44310
44434
  featureEntry = f;
44311
44435
  featureRow = i;
44312
44436
  }
@@ -44668,10 +44792,10 @@
44668
44792
  }
44669
44793
  if (feature.type !== 'CDS') {
44670
44794
  const adjacentExons = this.adjacentExonsOfExon(feature, topLevelFeature);
44671
- if (adjacentExons?.nextExon && bp >= adjacentExons?.nextExon.start - 1) {
44795
+ if (adjacentExons?.nextExon && bp >= adjacentExons.nextExon.start - 1) {
44672
44796
  return;
44673
44797
  }
44674
- if (adjacentExons?.prevExon && bp <= adjacentExons?.prevExon.end + 1) {
44798
+ if (adjacentExons?.prevExon && bp <= adjacentExons.prevExon.end + 1) {
44675
44799
  return;
44676
44800
  }
44677
44801
  const dls = this.cdsDlsForExon(feature, topLevelFeature);
@@ -44945,7 +45069,7 @@
44945
45069
  }
44946
45070
  getFeatureFromLayout(feature, bp, row) {
44947
45071
  const layoutRow = this.featuresForRow(feature)[row];
44948
- return layoutRow?.find((f) => bp >= f.start && bp <= f.end);
45072
+ return layoutRow.find((f) => bp >= f.start && bp <= f.end);
44949
45073
  }
44950
45074
  getRowForFeature(feature, childFeature) {
44951
45075
  const rows = this.featuresForRow(feature);
@@ -45105,7 +45229,7 @@
45105
45229
  let featureRow;
45106
45230
  let i = 0;
45107
45231
  for (const [, f] of children ?? new Map()) {
45108
- if (f._id === apolloSelectedFeature?._id) {
45232
+ if (f._id === apolloSelectedFeature._id) {
45109
45233
  featureEntry = f;
45110
45234
  featureRow = i;
45111
45235
  }
@@ -45363,7 +45487,7 @@
45363
45487
  }
45364
45488
  getFeatureFromLayout(feature, bp, row) {
45365
45489
  const layoutRow = this.featuresForRow(feature)[row];
45366
- return layoutRow?.find((f) => bp >= f.start && bp <= f.end);
45490
+ return layoutRow.find((f) => bp >= f.start && bp <= f.end);
45367
45491
  }
45368
45492
  getRowForFeature(feature, childFeature) {
45369
45493
  const rows = this.featuresForRow(feature);
@@ -45602,7 +45726,7 @@
45602
45726
  const LinearApolloDisplayRendering = mouseEventsModelIntermediateFactory(pluginManager, configSchema);
45603
45727
  return LinearApolloDisplayRendering.actions((self) => ({
45604
45728
  afterAttach() {
45605
- require$$0$2.addDisposer(self, mobx.autorun(async () => {
45729
+ require$$0$2.addDisposer(self, mobx.autorun(() => {
45606
45730
  if (!self.lgv.initialized || self.regionCannotBeRendered()) {
45607
45731
  return;
45608
45732
  }
@@ -45889,6 +46013,7 @@
45889
46013
  }), 'Error');
45890
46014
  default_1 = _Error["default"] = _default;
45891
46015
 
46016
+ /* eslint-disable @typescript-eslint/unbound-method */
45892
46017
  const useStyles$1 = mui.makeStyles()((theme) => ({
45893
46018
  canvasContainer: {
45894
46019
  position: 'relative',
@@ -45914,7 +46039,9 @@
45914
46039
  const { apolloRowHeight, contextMenuItems: getContextMenuItems, cursor, featuresHeight, isShown, onMouseDown, onMouseLeave, onMouseMove, onMouseUp, regionCannotBeRendered, session, setCanvas, setCollaboratorCanvas, setOverlayCanvas, setSeqTrackCanvas, setSeqTrackOverlayCanvas, setTheme, tabularEditor, } = model;
45915
46040
  const { classes } = useStyles$1();
45916
46041
  const lgv = require$$1$3.getContainingView(model);
45917
- React.useEffect(() => setTheme(theme), [theme, setTheme]);
46042
+ React.useEffect(() => {
46043
+ setTheme(theme);
46044
+ }, [theme, setTheme]);
45918
46045
  const [contextCoord, setContextCoord] = React.useState();
45919
46046
  const [contextMenuItems, setContextMenuItems] = React.useState([]);
45920
46047
  const message = regionCannotBeRendered();
@@ -45973,7 +46100,7 @@
45973
46100
  const assembly = assemblyManager.get(region.assemblyName);
45974
46101
  return [...session.apolloDataStore.checkResults.values()]
45975
46102
  .filter((checkResult) => assembly?.isValidRefName(checkResult.refSeq) &&
45976
- assembly?.getCanonicalRefName(checkResult.refSeq) ===
46103
+ assembly.getCanonicalRefName(checkResult.refSeq) ===
45977
46104
  region.refName &&
45978
46105
  require$$1$3.doesIntersect2(region.start, region.end, checkResult.start, checkResult.end))
45979
46106
  .map((checkResult) => {
@@ -46113,7 +46240,9 @@
46113
46240
  model.setDetailsHeight(model.detailsHeight - delta);
46114
46241
  };
46115
46242
  const canvasScrollContainerRef = React.useRef(null);
46116
- React.useEffect(() => scrollSelectedFeatureIntoView(model, canvasScrollContainerRef), [model, selectedFeature]);
46243
+ React.useEffect(() => {
46244
+ scrollSelectedFeatureIntoView(model, canvasScrollContainerRef);
46245
+ }, [model, selectedFeature]);
46117
46246
  return (React__default["default"].createElement("div", { className: classes.details, style: { height: overallHeight } },
46118
46247
  React__default["default"].createElement(AccordionControl, { open: isShown, title: "Graphical", onClick: toggleShown }),
46119
46248
  React__default["default"].createElement("div", { className: classes.shading, ref: canvasScrollContainerRef, style: { height: featureAreaHeight } },
@@ -46145,6 +46274,7 @@
46145
46274
  return mobxReact.observer(ApolloDisplayComponent);
46146
46275
  }
46147
46276
 
46277
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
46148
46278
  const ApolloJobModel = require$$0$2.types
46149
46279
  .model('JobsManager', {})
46150
46280
  .views((self) => ({
@@ -46232,6 +46362,7 @@
46232
46362
  }
46233
46363
  }
46234
46364
 
46365
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
46235
46366
  class ChangeManager {
46236
46367
  dataStore;
46237
46368
  constructor(dataStore) {
@@ -46343,6 +46474,7 @@
46343
46474
  }
46344
46475
  }
46345
46476
 
46477
+ /* eslint-disable @typescript-eslint/no-base-to-string */
46346
46478
  class CollaborationServerDriver extends BackendDriver {
46347
46479
  inFlight = new Map();
46348
46480
  async fetch(internetAccount, info, init) {
@@ -46401,7 +46533,7 @@
46401
46533
  const errorMessage = await createFetchErrorMessage(response, 'getFeatures failed');
46402
46534
  throw new Error(errorMessage);
46403
46535
  }
46404
- await this.checkSocket(assemblyName, refName, internetAccount);
46536
+ this.checkSocket(assemblyName, refName, internetAccount);
46405
46537
  return response.json();
46406
46538
  }
46407
46539
  /**
@@ -46410,7 +46542,7 @@
46410
46542
  * @param refSeq - refSeqName
46411
46543
  * @param internetAccount - internet account
46412
46544
  */
46413
- async checkSocket(assembly, refSeq, internetAccount) {
46545
+ checkSocket(assembly, refSeq, internetAccount) {
46414
46546
  const { socket } = internetAccount;
46415
46547
  const token = internetAccount.retrieveToken();
46416
46548
  const channel = `${assembly}-${refSeq}`;
@@ -46453,7 +46585,7 @@
46453
46585
  if (!apolloAssembly) {
46454
46586
  apolloAssembly = this.clientStore.addAssembly(assemblyName);
46455
46587
  }
46456
- let apolloRefSeq = apolloAssembly?.refSeqs.get(refSeq);
46588
+ let apolloRefSeq = apolloAssembly.refSeqs.get(refSeq);
46457
46589
  if (!apolloRefSeq) {
46458
46590
  apolloRefSeq = apolloAssembly.addRefSeq(refSeq, refName);
46459
46591
  }
@@ -46474,7 +46606,7 @@
46474
46606
  const seqPromise = this.getSeqFromServer(internetAccount, uri, apolloRefSeq, start, end);
46475
46607
  this.inFlight.set(inFlightKey, seqPromise);
46476
46608
  const seq = await seqPromise;
46477
- await this.checkSocket(assemblyName, refName, internetAccount);
46609
+ this.checkSocket(assemblyName, refName, internetAccount);
46478
46610
  this.inFlight.delete(inFlightKey);
46479
46611
  return { seq, refSeq };
46480
46612
  }
@@ -46612,6 +46744,7 @@
46612
46744
  }
46613
46745
  }
46614
46746
 
46747
+ /* eslint-disable @typescript-eslint/require-await */
46615
46748
  class DesktopFileDriver extends BackendDriver {
46616
46749
  async loadAssembly(assemblyName) {
46617
46750
  const { assemblyManager } = require$$1$3.getSession(this.clientStore);
@@ -47326,7 +47459,7 @@
47326
47459
  },
47327
47460
  get changeManager() {
47328
47461
  const session = require$$1$3.getSession(self);
47329
- return session.apolloDataStore?.changeManager;
47462
+ return session.apolloDataStore.changeManager;
47330
47463
  },
47331
47464
  get sequence() {
47332
47465
  const { regions } = self;
@@ -47520,7 +47653,7 @@
47520
47653
  .actions((self) => ({
47521
47654
  setSelectedFeature(feature) {
47522
47655
  const session = require$$1$3.getSession(self);
47523
- return session.apolloSetSelectedFeature(feature);
47656
+ session.apolloSetSelectedFeature(feature);
47524
47657
  },
47525
47658
  setApolloFeatureUnderMouse(feature) {
47526
47659
  self.apolloFeatureUnderMouse = feature;
@@ -47557,25 +47690,32 @@
47557
47690
  label: 'Show start codons',
47558
47691
  type: 'checkbox',
47559
47692
  checked: self.showStartCodons,
47560
- onClick: () => self.toggleShowStartCodons(),
47693
+ onClick: () => {
47694
+ self.toggleShowStartCodons();
47695
+ },
47561
47696
  },
47562
47697
  {
47563
47698
  label: 'Show stop codons',
47564
47699
  type: 'checkbox',
47565
47700
  checked: self.showStopCodons,
47566
- onClick: () => self.toggleShowStopCodons(),
47701
+ onClick: () => {
47702
+ self.toggleShowStopCodons();
47703
+ },
47567
47704
  },
47568
47705
  {
47569
47706
  label: 'Show intron lines',
47570
47707
  type: 'checkbox',
47571
47708
  checked: self.showIntronLines,
47572
- onClick: () => self.toggleShowIntronLines(),
47709
+ onClick: () => {
47710
+ self.toggleShowIntronLines();
47711
+ },
47573
47712
  },
47574
47713
  ];
47575
47714
  },
47576
47715
  }));
47577
47716
  }
47578
47717
 
47718
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
47579
47719
  function isApolloMessageData(data) {
47580
47720
  return (typeof data === 'object' &&
47581
47721
  data !== null &&