@apollo-annotation/jbrowse-plugin-apollo 0.1.6 → 0.1.8
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/dist/index.esm.js +206 -115
- package/dist/index.esm.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.cjs.development.js +206 -115
- package/dist/jbrowse-plugin-apollo.cjs.development.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.cjs.production.min.js +1 -1
- package/dist/jbrowse-plugin-apollo.cjs.production.min.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.umd.development.js +257 -117
- package/dist/jbrowse-plugin-apollo.umd.development.js.map +1 -1
- package/dist/jbrowse-plugin-apollo.umd.production.min.js +1 -1
- package/dist/jbrowse-plugin-apollo.umd.production.min.js.map +1 -1
- package/package.json +6 -6
- package/src/ApolloInternetAccount/addMenuItems.ts +2 -4
- package/src/ApolloInternetAccount/components/AuthTypeSelector.tsx +14 -6
- package/src/ApolloInternetAccount/model.ts +24 -16
- package/src/ApolloJobModel.ts +2 -0
- package/src/ApolloSequenceAdapter/ApolloSequenceAdapter.ts +4 -0
- package/src/ApolloSixFrameRenderer/ApolloSixFrameRenderer.tsx +1 -0
- package/src/ApolloSixFrameRenderer/components/ApolloRendering.tsx +16 -3
- package/src/ApolloTextSearchAdapter/ApolloTextSearchAdapter.ts +5 -0
- package/src/BackendDrivers/CollaborationServerDriver.ts +10 -4
- package/src/BackendDrivers/DesktopFileDriver.ts +1 -0
- package/src/BackendDrivers/InMemoryFileDriver.ts +1 -0
- package/src/ChangeManager.ts +3 -0
- package/src/FeatureDetailsWidget/Attributes.tsx +4 -1
- package/src/FeatureDetailsWidget/BasicInformation.tsx +4 -2
- package/src/FeatureDetailsWidget/NumberTextField.tsx +4 -1
- package/src/FeatureDetailsWidget/RelatedFeature.tsx +16 -3
- package/src/FeatureDetailsWidget/Sequence.tsx +1 -0
- package/src/FeatureDetailsWidget/StringTextField.tsx +4 -1
- package/src/FeatureDetailsWidget/model.ts +2 -0
- package/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx +9 -2
- package/src/LinearApolloDisplay/glyphs/BoxGlyph.ts +2 -0
- package/src/LinearApolloDisplay/glyphs/CanonicalGeneGlyph.ts +9 -4
- package/src/LinearApolloDisplay/glyphs/GenericChildGlyph.ts +4 -1
- package/src/LinearApolloDisplay/glyphs/Glyph.ts +5 -1
- package/src/LinearApolloDisplay/glyphs/ImplicitExonGeneGlyph.ts +8 -2
- package/src/LinearApolloDisplay/stateModel/base.ts +7 -2
- package/src/LinearApolloDisplay/stateModel/getGlyph.ts +1 -0
- package/src/LinearApolloDisplay/stateModel/glyphs.ts +2 -0
- package/src/LinearApolloDisplay/stateModel/layouts.ts +3 -0
- package/src/LinearApolloDisplay/stateModel/mouseEvents.ts +3 -1
- package/src/LinearApolloDisplay/stateModel/rendering.ts +3 -2
- package/src/LinearApolloDisplay/types.ts +1 -1
- package/src/OntologyManager/OntologyStore/fulltext.ts +1 -0
- package/src/OntologyManager/OntologyStore/index.test.ts +3 -1
- package/src/OntologyManager/OntologyStore/index.ts +4 -5
- package/src/OntologyManager/OntologyStore/indexeddb-storage.ts +3 -2
- package/src/SixFrameFeatureDisplay/stateModel.ts +17 -5
- package/src/TabularEditor/HybridGrid/Feature.tsx +7 -2
- package/src/TabularEditor/HybridGrid/FeatureAttributes.tsx +1 -0
- package/src/TabularEditor/HybridGrid/HybridGrid.tsx +2 -2
- package/src/TabularEditor/HybridGrid/NumberCell.tsx +3 -1
- package/src/TabularEditor/HybridGrid/ToolBar.tsx +9 -2
- package/src/components/AddAssembly.tsx +16 -8
- package/src/components/AddChildFeature.tsx +9 -4
- package/src/components/AddFeature.tsx +11 -5
- package/src/components/CopyFeature.tsx +11 -6
- package/src/components/DeleteAssembly.tsx +7 -4
- package/src/components/DeleteFeature.tsx +4 -1
- package/src/components/Dialog.tsx +1 -0
- package/src/components/DownloadGFF3.tsx +7 -2
- package/src/components/ImportFeatures.tsx +9 -3
- package/src/components/ManageChecks.tsx +10 -4
- package/src/components/ManageUsers.tsx +13 -4
- package/src/components/ModifyFeatureAttribute.tsx +4 -1
- package/src/components/OntologyTermAutocomplete.tsx +7 -4
- package/src/components/OntologyTermMultiSelect.tsx +2 -2
- package/src/components/OpenLocalFile.tsx +6 -3
- package/src/components/ViewChangeLog.tsx +13 -4
- package/src/components/ViewCheckResults.tsx +8 -2
- package/src/extensions/annotationFromPileup.ts +7 -2
- package/src/index.ts +4 -0
- package/src/makeDisplayComponent.tsx +4 -4
- package/src/session/ClientDataStore.ts +5 -0
- package/src/session/session.ts +9 -17
- 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
|
|
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
|
|
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.
|
|
21321
|
+
var version = "0.1.8";
|
|
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),
|
|
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
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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: () =>
|
|
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
|
|
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
|
|
36677
|
-
es6(this.options.textIndexing, meta.storeOptions
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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) =>
|
|
37324
|
-
|
|
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
|
-
|
|
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) =>
|
|
37460
|
+
getRefNames().catch((error) => {
|
|
37461
|
+
setErrorMessage(String(error));
|
|
37462
|
+
});
|
|
37403
37463
|
}, [selectedAssemblyId, assemblyManager]);
|
|
37404
|
-
|
|
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
|
|
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
|
|
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
|
|
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: () =>
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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
|
|
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
|
-
|
|
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
|
|
39319
|
+
notify(`Loaded GFF3 ${file.name}`, 'success');
|
|
39246
39320
|
}
|
|
39247
39321
|
else {
|
|
39248
|
-
notify(`Error loading GFF3 ${file
|
|
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) =>
|
|
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) =>
|
|
39449
|
+
getGridData().catch((error) => {
|
|
39450
|
+
setErrorMessage(String(error));
|
|
39451
|
+
});
|
|
39373
39452
|
}, [assemblyId, apolloInternetAccount, baseURL]);
|
|
39374
|
-
|
|
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) =>
|
|
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: () =>
|
|
39573
|
-
|
|
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: () =>
|
|
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
|
-
|
|
39729
|
+
finishOAuthWindow(event, resolve, reject) {
|
|
39646
39730
|
if (event.data.name !== `JBrowseAuthWindow-${self.internetAccountId}`) {
|
|
39647
|
-
|
|
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
|
-
|
|
39742
|
+
reject(new Error('Error with token endpoint'));
|
|
39743
|
+
return;
|
|
39658
39744
|
}
|
|
39659
39745
|
self.storeToken(token);
|
|
39660
39746
|
self.setRole();
|
|
39661
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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(() =>
|
|
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
|
-
|
|
40272
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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) =>
|
|
41037
|
-
|
|
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) =>
|
|
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
|
|
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
|
|
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) =>
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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
|
|
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: () =>
|
|
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: () =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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: () =>
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
43860
|
-
return colorMap[letter
|
|
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
|
|
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
|
|
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
|
|
44795
|
+
if (adjacentExons?.nextExon && bp >= adjacentExons.nextExon.start - 1) {
|
|
44672
44796
|
return;
|
|
44673
44797
|
}
|
|
44674
|
-
if (adjacentExons?.prevExon && bp <= adjacentExons
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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(() =>
|
|
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
|
|
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(() =>
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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 &&
|