@jbrowse/core 2.2.0 → 2.2.2

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 (80) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +1 -0
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +43 -28
  3. package/BaseFeatureWidget/SequenceBox.js +4 -8
  4. package/BaseFeatureWidget/SequenceFeatureDetails.js +1 -0
  5. package/BaseFeatureWidget/SequenceFeatureSettingsDialog.js +2 -17
  6. package/BaseFeatureWidget/SequenceHelpDialog.js +3 -19
  7. package/Plugin.d.ts +1 -1
  8. package/PluginLoader.d.ts +2 -2
  9. package/PluginManager.d.ts +3 -3
  10. package/assemblyManager/assembly.d.ts +3 -3
  11. package/assemblyManager/assembly.js +1 -1
  12. package/configuration/configurationSchema.d.ts +2 -2
  13. package/data_adapters/BaseAdapter.d.ts +3 -3
  14. package/data_adapters/dataAdapterCache.d.ts +1 -1
  15. package/package.json +2 -2
  16. package/pluggableElementTypes/AdapterType.d.ts +1 -1
  17. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +2 -2
  18. package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
  19. package/pluggableElementTypes/ViewType.d.ts +2 -2
  20. package/pluggableElementTypes/index.d.ts +2 -2
  21. package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +23 -2
  22. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +24 -2
  23. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +2 -2
  24. package/pluggableElementTypes/models/BaseTrackModel.d.ts +49 -4
  25. package/pluggableElementTypes/models/BaseTrackModel.js +77 -26
  26. package/pluggableElementTypes/models/BaseViewModel.d.ts +22 -0
  27. package/pluggableElementTypes/models/BaseViewModel.js +41 -2
  28. package/pluggableElementTypes/models/InternetAccountModel.d.ts +53 -6
  29. package/pluggableElementTypes/models/InternetAccountModel.js +57 -6
  30. package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +0 -3
  31. package/pluggableElementTypes/models/baseTrackConfig.d.ts +2 -2
  32. package/pluggableElementTypes/models/baseTrackConfig.js +9 -0
  33. package/pluggableElementTypes/renderers/BoxRendererType.d.ts +1 -1
  34. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +1 -1
  35. package/pluggableElementTypes/renderers/RendererType.d.ts +1 -1
  36. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +2 -2
  37. package/pluggableElementTypes/renderers/ServerSideRendererType.js +1 -1
  38. package/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +2 -2
  39. package/rpc/BaseRpcDriver.js +1 -1
  40. package/rpc/RpcManager.d.ts +2 -2
  41. package/rpc/remoteAbortSignals.d.ts +1 -1
  42. package/tsconfig.build.tsbuildinfo +1 -1
  43. package/ui/AboutDialog.d.ts +1 -1
  44. package/ui/AboutDialog.js +8 -18
  45. package/ui/App.d.ts +2 -2
  46. package/ui/App.js +6 -8
  47. package/ui/AssemblySelector.d.ts +1 -1
  48. package/ui/AssemblySelector.js +12 -10
  49. package/ui/Dialog.d.ts +7 -0
  50. package/ui/Dialog.js +35 -0
  51. package/ui/EditableTypography.d.ts +4 -4
  52. package/ui/EditableTypography.js +7 -11
  53. package/ui/FactoryResetDialog.js +8 -13
  54. package/ui/Logo.d.ts +1 -1
  55. package/ui/Menu.d.ts +2 -2
  56. package/ui/ReturnToImportFormDialog.js +2 -17
  57. package/ui/Snackbar.d.ts +1 -1
  58. package/ui/ViewContainer.d.ts +2 -1
  59. package/ui/ViewContainer.js +34 -22
  60. package/ui/index.d.ts +1 -0
  61. package/ui/index.js +3 -1
  62. package/util/Base1DViewModel.d.ts +72 -2
  63. package/util/Base1DViewModel.js +94 -3
  64. package/util/analytics.js +3 -0
  65. package/util/blockTypes.d.ts +1 -1
  66. package/util/formatFastaStrings.d.ts +1 -1
  67. package/util/formatFastaStrings.js +1 -1
  68. package/util/index.d.ts +3 -1
  69. package/util/index.js +13 -3
  70. package/util/io/RemoteFileWithRangeCache.js +2 -2
  71. package/util/io/index.js +3 -3
  72. package/util/jexl.d.ts +1 -1
  73. package/util/layouts/BaseLayout.d.ts +1 -1
  74. package/util/offscreenCanvasPonyfill.d.ts +2 -2
  75. package/util/offscreenCanvasUtils.d.ts +1 -1
  76. package/util/tracks.d.ts +3 -3
  77. package/util/tracks.js +1 -1
  78. package/util/types/index.d.ts +15 -8
  79. package/util/types/index.js +8 -1
  80. package/util/types/util.d.ts +5 -5
@@ -34,6 +34,7 @@ export declare const BaseCoreDetails: (props: BaseProps) => JSX.Element;
34
34
  interface AttributeProps {
35
35
  attributes: Record<string, any>;
36
36
  omit?: string[];
37
+ omitSingleLevel?: string[];
37
38
  formatter?: (val: unknown, key: string) => React.ReactNode;
38
39
  descriptions?: Record<string, React.ReactNode>;
39
40
  prefix?: string[];
@@ -156,35 +156,41 @@ const ArrayValue = ({ name, value, description, prefix = [], }) => {
156
156
  }
157
157
  };
158
158
  const toLocale = (n) => n.toLocaleString('en-US');
159
- function CoreDetails(props) {
159
+ function Position(props) {
160
160
  const { feature } = props;
161
- const obj = feature;
162
- // eslint-disable-next-line no-underscore-dangle
163
- const formattedFeat = { ...obj, ...obj.__jbrowsefmt };
164
- const { start, strand, end, refName } = formattedFeat;
161
+ const strand = feature.strand;
165
162
  const strandMap = {
166
163
  '-1': '-',
167
164
  '0': '',
168
165
  '1': '+',
169
166
  };
170
167
  const str = strandMap[strand] ? `(${strandMap[strand]})` : '';
168
+ // @ts-ignore
169
+ const loc = (0, util_1.assembleLocString)(feature);
170
+ return react_1.default.createElement(react_1.default.Fragment, null, `${loc} ${str}`);
171
+ }
172
+ function CoreDetails(props) {
173
+ const { feature } = props;
174
+ const obj = feature;
175
+ // eslint-disable-next-line no-underscore-dangle
176
+ const formattedFeat = { ...obj, ...obj.__jbrowsefmt };
177
+ const { start, end } = formattedFeat;
171
178
  const displayedDetails = {
172
179
  ...formattedFeat,
173
180
  length: toLocale(end - start),
174
- position: `${refName}:${toLocale(start + 1)}..${toLocale(end)} ${str}`,
175
181
  };
176
182
  const coreRenderedDetails = {
177
- position: 'Position',
178
183
  description: 'Description',
179
184
  name: 'Name',
180
185
  length: 'Length',
181
186
  type: 'Type',
182
- assemblyName: 'Assembly name',
183
187
  };
184
- return (react_1.default.createElement(react_1.default.Fragment, null, Object.entries(coreRenderedDetails)
185
- .map(([key, name]) => [name, displayedDetails[key]])
186
- .filter(([, value]) => value !== null && value !== undefined)
187
- .map(([name, value]) => (react_1.default.createElement(exports.SimpleValue, { key: name, name: name, value: value })))));
188
+ return (react_1.default.createElement(react_1.default.Fragment, null,
189
+ react_1.default.createElement(exports.SimpleValue, { name: "Position", value: react_1.default.createElement(Position, { ...props, feature: formattedFeat }) }),
190
+ Object.entries(coreRenderedDetails)
191
+ .map(([key, name]) => [name, displayedDetails[key]])
192
+ .filter(([, value]) => value != null)
193
+ .map(([name, value]) => (react_1.default.createElement(exports.SimpleValue, { key: name, name: name, value: value })))));
188
194
  }
189
195
  const BaseCoreDetails = (props) => {
190
196
  return (react_1.default.createElement(BaseCard, { ...props, title: "Primary data" },
@@ -229,23 +235,25 @@ const DataGridDetails = ({ value, prefix, name, }) => {
229
235
  width: (0, util_1.measureGridWidth)(rows.map(r => r[val])),
230
236
  }));
231
237
  const rowHeight = 25;
232
- const hideFooter = rows.length < 100;
233
- const headerHeight = 80;
238
+ const hideFoot = rows.length < 100;
239
+ const headHeight = 80;
240
+ const height = Math.min(rows.length, 100) * rowHeight + headHeight + (hideFoot ? 0 : 50);
234
241
  // disableSelection on click helps avoid
235
242
  // https://github.com/mui-org/material-ui-x/issues/1197
236
243
  return (react_1.default.createElement(react_1.default.Fragment, null,
237
244
  react_1.default.createElement(exports.FieldName, { prefix: prefix, name: name }),
238
245
  react_1.default.createElement("div", { style: {
239
- height: Math.min(rows.length, 100) * rowHeight +
240
- headerHeight +
241
- (hideFooter ? 0 : 50),
246
+ height,
242
247
  width: '100%',
243
248
  } },
244
- react_1.default.createElement(x_data_grid_1.DataGrid, { disableSelectionOnClick: true, rowHeight: rowHeight, rows: rows, rowsPerPageOptions: [], hideFooterSelectedRowCount: true, columns: columns, hideFooter: hideFooter }))));
249
+ react_1.default.createElement(x_data_grid_1.DataGrid, { disableSelectionOnClick: true, rowHeight: rowHeight, rows: rows, hideFooterSelectedRowCount: true, columns: columns, hideFooter: hideFoot }))));
245
250
  }
246
251
  return null;
247
252
  };
248
- // arr = ['a','b'], obj = {a:{b:'hello}}, returns hello (with special addition to grab description also)
253
+ // pick using a path from an object, similar to _.get from lodash with special logic
254
+ // for Descriptions from e.g. VCF headers
255
+ // @param arr example ['a','b'], obj = {a:{b:'hello}}
256
+ // @returns hello (with special addition to grab description also)
249
257
  function accessNested(arr, obj = {}) {
250
258
  arr.forEach(elt => {
251
259
  if (obj) {
@@ -259,13 +267,11 @@ function accessNested(arr, obj = {}) {
259
267
  : undefined;
260
268
  }
261
269
  function generateMaxWidth(array, prefix) {
262
- // @ts-ignore
263
270
  const arr = [];
264
- array.forEach((key, value) => {
271
+ array.forEach(key => {
265
272
  const val = [...prefix, key[0]].join('.');
266
273
  arr.push((0, util_1.measureText)(val, 12));
267
274
  });
268
- // @ts-ignore
269
275
  return Math.ceil(Math.max(...arr)) + 10;
270
276
  }
271
277
  function UriAttribute({ value, prefix, name, }) {
@@ -283,8 +289,8 @@ function UriAttribute({ value, prefix, name, }) {
283
289
  react_1.default.createElement(exports.BasicValue, { value: href })));
284
290
  }
285
291
  function Attributes(props) {
286
- const { attributes, omit = [], descriptions, formatter = val => val, hideUris, prefix = [], } = props;
287
- const omits = [...omit, ...globalOmit];
292
+ const { attributes, omit = [], omitSingleLevel = [], descriptions, formatter = val => val, hideUris, prefix = [], } = props;
293
+ const omits = [...omit, ...globalOmit, ...omitSingleLevel];
288
294
  const { __jbrowsefmt, ...rest } = attributes;
289
295
  const formattedAttributes = { ...rest, ...__jbrowsefmt };
290
296
  const maxLabelWidth = generateMaxWidth(Object.entries(formattedAttributes).filter(([k, v]) => v !== undefined && !omits.includes(k)), prefix);
@@ -298,7 +304,8 @@ function Attributes(props) {
298
304
  return value.length > 1 && value.every(val => (0, is_object_1.default)(val)) ? (react_1.default.createElement(DataGridDetails, { key: key, name: key, prefix: prefix, value: value })) : (react_1.default.createElement(ArrayValue, { key: key, name: key, value: value, description: description, prefix: prefix }));
299
305
  }
300
306
  else if ((0, is_object_1.default)(value)) {
301
- return (0, util_1.isUriLocation)(value) ? (hideUris ? null : (react_1.default.createElement(UriAttribute, { key: key, name: key, prefix: prefix, value: value }))) : (react_1.default.createElement(Attributes, { ...props, omit: omits, key: key, attributes: value, descriptions: descriptions, prefix: [...prefix, key] }));
307
+ const { omitSingleLevel, ...rest } = props;
308
+ return (0, util_1.isUriLocation)(value) ? (hideUris ? null : (react_1.default.createElement(UriAttribute, { key: key, name: key, prefix: prefix, value: value }))) : (react_1.default.createElement(Attributes, { ...rest, key: key, attributes: value, descriptions: descriptions, prefix: [...prefix, key] }));
302
309
  }
303
310
  else {
304
311
  return (react_1.default.createElement(exports.SimpleValue, { key: key, name: key, value: formatter(value, key), description: description, prefix: prefix, width: Math.min(maxLabelWidth, MAX_FIELD_NAME_WIDTH) }));
@@ -323,15 +330,23 @@ function generateTitle(name, id, type) {
323
330
  const FeatureDetails = (props) => {
324
331
  const { omit = [], model, feature, depth = 0 } = props;
325
332
  const { name = '', id = '', type = '', subfeatures } = feature;
326
- const { pluginManager } = (0, util_1.getEnv)(model);
333
+ const pm = (0, util_1.getEnv)(model).pluginManager;
327
334
  const session = (0, util_1.getSession)(model);
328
- const ExtraPanel = pluginManager === null || pluginManager === void 0 ? void 0 : pluginManager.evaluateExtensionPoint('Core-extraFeaturePanel', null, { session, feature, model });
335
+ const ExtraPanel = pm.evaluateExtensionPoint('Core-extraFeaturePanel', null, {
336
+ session,
337
+ feature,
338
+ model,
339
+ });
329
340
  return (react_1.default.createElement(BaseCard, { title: generateTitle(name, id, type) },
330
341
  react_1.default.createElement(material_1.Typography, null, "Core details"),
331
342
  react_1.default.createElement(CoreDetails, { ...props }),
343
+ feature.mate ? (react_1.default.createElement(react_1.default.Fragment, null,
344
+ react_1.default.createElement(material_1.Divider, null),
345
+ react_1.default.createElement(material_1.Typography, null, "Mate details"),
346
+ react_1.default.createElement(CoreDetails, { ...props, feature: feature.mate }))) : null,
332
347
  react_1.default.createElement(material_1.Divider, null),
333
348
  react_1.default.createElement(material_1.Typography, null, "Attributes"),
334
- react_1.default.createElement(Attributes, { attributes: feature, ...props, omit: [...omit, ...coreDetails] }),
349
+ react_1.default.createElement(Attributes, { attributes: feature, ...props, omit: omit, omitSingleLevel: coreDetails }),
335
350
  react_1.default.createElement(react_error_boundary_1.ErrorBoundary, { FallbackComponent: ({ error }) => react_1.default.createElement(ui_1.ErrorMessage, { error: error }) },
336
351
  react_1.default.createElement(SequenceFeatureDetails_1.default, { ...props })),
337
352
  ExtraPanel ? (react_1.default.createElement(react_1.default.Fragment, null,
@@ -29,21 +29,17 @@ function GeneProtein({ cds, sequence, codonTable, }) {
29
29
  }
30
30
  exports.GeneProtein = GeneProtein;
31
31
  function GenecDNA({ utr, cds, exons, sequence, upstream, downstream, includeIntrons, collapseIntron, intronBp, }) {
32
- const chunks = cds.length
33
- ? [...cds, ...utr].sort((a, b) => a.start - b.start)
34
- : exons;
32
+ const chunks = (cds.length ? [...cds, ...utr].sort((a, b) => a.start - b.start) : exons).filter(f => f.start !== f.end);
35
33
  return (react_1.default.createElement(react_1.default.Fragment, null,
36
34
  upstream ? (react_1.default.createElement("span", { style: { background: updownstreamColor } }, upstream)) : null,
37
- chunks
38
- .filter(f => f.start !== f.end)
39
- .map((chunk, index) => {
35
+ chunks.map((chunk, idx) => {
40
36
  var _a;
41
- const intron = sequence.slice(chunk.end, (_a = chunks[index + 1]) === null || _a === void 0 ? void 0 : _a.start);
37
+ const intron = sequence.slice(chunk.end, (_a = chunks[idx + 1]) === null || _a === void 0 ? void 0 : _a.start);
42
38
  return (react_1.default.createElement(react_1.default.Fragment, { key: JSON.stringify(chunk) },
43
39
  react_1.default.createElement("span", { style: {
44
40
  background: chunk.type === 'CDS' ? cdsColor : utrColor,
45
41
  } }, sequence.slice(chunk.start, chunk.end)),
46
- includeIntrons && index < chunks.length - 1 ? (react_1.default.createElement("span", { style: { background: intronColor } }, collapseIntron && intron.length > intronBp * 2
42
+ includeIntrons && idx < chunks.length - 1 ? (react_1.default.createElement("span", { style: { background: intronColor } }, collapseIntron && intron.length > intronBp * 2
47
43
  ? `${intron.slice(0, intronBp)}...${intron.slice(-intronBp)}`
48
44
  : intron)) : null));
49
45
  }),
@@ -109,6 +109,7 @@ function SequenceFeatureDetails({ model, feature }) {
109
109
  const [feat] = feats;
110
110
  return (feat === null || feat === void 0 ? void 0 : feat.get('seq')) || '';
111
111
  }
112
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
112
113
  ;
113
114
  (async () => {
114
115
  try {
@@ -22,26 +22,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  const react_1 = __importStar(require("react"));
30
27
  const material_1 = require("@mui/material");
28
+ const ui_1 = require("@jbrowse/core/ui");
31
29
  const mui_1 = require("tss-react/mui");
32
- // icons
33
- const Close_1 = __importDefault(require("@mui/icons-material/Close"));
34
30
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
35
31
  formElt: {
36
32
  margin: theme.spacing(3),
37
33
  width: 400,
38
34
  },
39
- closeButton: {
40
- position: 'absolute',
41
- right: theme.spacing(1),
42
- top: theme.spacing(1),
43
- color: theme.palette.grey[500],
44
- },
45
35
  dialogContent: {
46
36
  width: '80em',
47
37
  },
@@ -52,12 +42,7 @@ function SequenceFeatureSettingsDialog({ handleClose, intronBp: intronBpArg, upD
52
42
  const [upDownBp, setUpDownBp] = (0, react_1.useState)(`${upDownBpArg}`);
53
43
  const intronBpValid = !Number.isNaN(+intronBp);
54
44
  const upDownBpValid = !Number.isNaN(+upDownBp);
55
- return (react_1.default.createElement(material_1.Dialog, { maxWidth: "xl", open: true, onClose: () => handleClose() },
56
- react_1.default.createElement(material_1.DialogTitle, null,
57
- "Feature sequence settings",
58
- handleClose ? (react_1.default.createElement(material_1.IconButton, { className: classes.closeButton, onClick: () => handleClose() },
59
- react_1.default.createElement(Close_1.default, null))) : null),
60
- react_1.default.createElement(material_1.Divider, null),
45
+ return (react_1.default.createElement(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => handleClose(), title: 'Feature sequence settings' },
61
46
  react_1.default.createElement(material_1.DialogContent, { className: classes.dialogContent },
62
47
  react_1.default.createElement(material_1.TextField, { label: "Number of intronic bases around splice site to display", className: classes.formElt, value: intronBp, helperText: !intronBpValid ? 'Not a number' : '', error: !intronBpValid, onChange: event => setIntronBp(event.target.value) }),
63
48
  react_1.default.createElement(material_1.TextField, { label: "Number of bases up/down stream of feature to display", className: classes.formElt, value: upDownBp, helperText: !upDownBpValid ? 'Not a number' : '', error: !upDownBpValid, onChange: event => setUpDownBp(event.target.value) })),
@@ -5,28 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const material_1 = require("@mui/material");
8
- const mui_1 = require("tss-react/mui");
8
+ const ui_1 = require("@jbrowse/core/ui");
9
9
  // icons
10
- const Close_1 = __importDefault(require("@mui/icons-material/Close"));
11
10
  const Settings_1 = __importDefault(require("@mui/icons-material/Settings"));
12
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
13
- closeButton: {
14
- position: 'absolute',
15
- right: theme.spacing(1),
16
- top: theme.spacing(1),
17
- color: theme.palette.grey[500],
18
- },
19
- dialogContent: {},
20
- }));
21
11
  function HelpDialog({ handleClose, }) {
22
- const { classes } = useStyles();
23
- return (react_1.default.createElement(material_1.Dialog, { maxWidth: "xl", open: true, onClose: () => handleClose() },
24
- react_1.default.createElement(material_1.DialogTitle, null,
25
- "Feature sequence panel",
26
- handleClose ? (react_1.default.createElement(material_1.IconButton, { className: classes.closeButton, onClick: () => handleClose() },
27
- react_1.default.createElement(Close_1.default, null))) : null),
28
- react_1.default.createElement(material_1.Divider, null),
29
- react_1.default.createElement(material_1.DialogContent, { className: classes.dialogContent },
12
+ return (react_1.default.createElement(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => handleClose(), title: "Feature sequence panel help" },
13
+ react_1.default.createElement(material_1.DialogContent, null,
30
14
  react_1.default.createElement(material_1.Typography, { paragraph: true }, "The \"Feature sequence\" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome."),
31
15
  react_1.default.createElement(material_1.Typography, null, "For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),
32
16
  react_1.default.createElement("ul", null,
package/Plugin.d.ts CHANGED
@@ -11,4 +11,4 @@ export default abstract class Plugin {
11
11
  configure(_pluginManager: PluginManager): void;
12
12
  configurationSchema: AnyConfigurationSchemaType | undefined;
13
13
  }
14
- export declare type PluginConstructor = new (...args: unknown[]) => Plugin;
14
+ export type PluginConstructor = new (...args: unknown[]) => Plugin;
package/PluginLoader.d.ts CHANGED
@@ -14,7 +14,7 @@ export interface LegacyUMDPluginDefinition {
14
14
  url: string;
15
15
  name: string;
16
16
  }
17
- declare type UMDPluginDefinition = UMDLocPluginDefinition | UMDUrlPluginDefinition;
17
+ type UMDPluginDefinition = UMDLocPluginDefinition | UMDUrlPluginDefinition;
18
18
  export declare function isUMDPluginDefinition(def: PluginDefinition): def is UMDPluginDefinition | LegacyUMDPluginDefinition;
19
19
  export interface ESMLocPluginDefinition {
20
20
  esmLoc: {
@@ -25,7 +25,7 @@ export interface ESMLocPluginDefinition {
25
25
  export interface ESMUrlPluginDefinition {
26
26
  esmUrl: string;
27
27
  }
28
- export declare type ESMPluginDefinition = ESMLocPluginDefinition | ESMUrlPluginDefinition;
28
+ export type ESMPluginDefinition = ESMLocPluginDefinition | ESMUrlPluginDefinition;
29
29
  export declare function isESMPluginDefinition(def: PluginDefinition): def is ESMPluginDefinition;
30
30
  export interface CJSPluginDefinition {
31
31
  cjsUrl: string;
@@ -26,7 +26,7 @@ declare class PhasedScheduler<PhaseName extends string> {
26
26
  add(phase: PhaseName, callback: Function): void;
27
27
  run(): void;
28
28
  }
29
- declare type PluggableElementTypeGroup = 'renderer' | 'adapter' | 'display' | 'track' | 'connection' | 'view' | 'widget' | 'rpc method' | 'internet account' | 'text search adapter' | 'add track workflow';
29
+ type PluggableElementTypeGroup = 'renderer' | 'adapter' | 'display' | 'track' | 'connection' | 'view' | 'widget' | 'rpc method' | 'internet account' | 'text search adapter' | 'add track workflow';
30
30
  /** internal class that holds the info for a certain element type */
31
31
  declare class TypeRecord<ElementClass extends PluggableElementBase> {
32
32
  typeName: string;
@@ -48,7 +48,7 @@ declare class TypeRecord<ElementClass extends PluggableElementBase> {
48
48
  get(name: string): ElementClass;
49
49
  all(): ElementClass[];
50
50
  }
51
- declare type AnyFunction = (...args: any) => any;
51
+ type AnyFunction = (...args: any) => any;
52
52
  /**
53
53
  * free-form string-to-unknown mapping of metadata related to the instance
54
54
  * of this plugin. `isCore` is typically set to `Boolean(true)` if the plugin was
@@ -56,7 +56,7 @@ declare type AnyFunction = (...args: any) => any;
56
56
  * Can also use this metadata to stash other things about why the plugin is
57
57
  * loaded, such as where it came from, what plugin depends on it, etc.
58
58
  */
59
- export declare type PluginMetadata = Record<string, unknown>;
59
+ export type PluginMetadata = Record<string, unknown>;
60
60
  export interface PluginLoadRecord {
61
61
  metadata?: PluginMetadata;
62
62
  plugin: Plugin;
@@ -1,7 +1,7 @@
1
1
  import { Instance, IAnyType } from 'mobx-state-tree';
2
2
  import PluginManager from '../PluginManager';
3
3
  import { Region, Feature } from '../util';
4
- declare type RefNameAliases = Record<string, string>;
4
+ type RefNameAliases = Record<string, string>;
5
5
  export interface BaseOptions {
6
6
  signal?: AbortSignal;
7
7
  sessionId: string;
@@ -72,6 +72,6 @@ export default function assemblyFactory(assemblyConfigType: IAnyType, pm: Plugin
72
72
  */
73
73
  getReverseRefNameMapForAdapter(adapterConf: unknown, opts: BaseOptions): Promise<RefNameAliases>;
74
74
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
75
- export declare type AssemblyModel = ReturnType<typeof assemblyFactory>;
76
- export declare type Assembly = Instance<AssemblyModel>;
75
+ export type AssemblyModel = ReturnType<typeof assemblyFactory>;
76
+ export type Assembly = Instance<AssemblyModel>;
77
77
  export {};
@@ -45,7 +45,7 @@ const refNameColors = [
45
45
  ];
46
46
  async function loadRefNameMap(assembly, adapterConfig, options, signal) {
47
47
  const { sessionId } = options;
48
- await (0, util_1.when)(() => Boolean(assembly.regions && assembly.refNameAliases), {
48
+ await (0, util_1.when)(() => !!(assembly.regions && assembly.refNameAliases), {
49
49
  signal,
50
50
  name: 'when assembly ready',
51
51
  });
@@ -22,8 +22,8 @@ export interface AnyConfigurationSchemaType extends ReturnType<typeof makeConfig
22
22
  jbrowseSchemaOptions: ConfigurationSchemaOptions;
23
23
  type: string;
24
24
  }
25
- export declare type AnyConfigurationModel = Instance<AnyConfigurationSchemaType>;
26
- export declare type ConfigurationModel<SCHEMA extends AnyConfigurationSchemaType> = Instance<SCHEMA>;
25
+ export type AnyConfigurationModel = Instance<AnyConfigurationSchemaType>;
26
+ export type ConfigurationModel<SCHEMA extends AnyConfigurationSchemaType> = Instance<SCHEMA>;
27
27
  export declare function ConfigurationSchema<DEFINITION extends ConfigurationSchemaDefinition, OPTIONS extends ConfigurationSchemaOptions>(modelName: string, inputSchemaDefinition: DEFINITION, inputOptions?: OPTIONS): AnyConfigurationSchemaType;
28
28
  export declare function ConfigurationReference(schemaType: IAnyType): import("mobx-state-tree").ITypeUnion<any, any, any>;
29
29
  export {};
@@ -13,7 +13,7 @@ export interface BaseOptions {
13
13
  headers?: Record<string, string>;
14
14
  [key: string]: unknown;
15
15
  }
16
- export declare type SearchType = 'full' | 'prefix' | 'exact';
16
+ export type SearchType = 'full' | 'prefix' | 'exact';
17
17
  export interface BaseArgs {
18
18
  searchType?: SearchType;
19
19
  queryString: string;
@@ -24,7 +24,7 @@ export interface BaseArgs {
24
24
  export interface AnyAdapter {
25
25
  new (config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager | undefined): AnyDataAdapter;
26
26
  }
27
- export declare type AnyDataAdapter = BaseAdapter | BaseFeatureDataAdapter | BaseRefNameAliasAdapter | BaseTextSearchAdapter | RegionsAdapter | BaseSequenceAdapter;
27
+ export type AnyDataAdapter = BaseAdapter | BaseFeatureDataAdapter | BaseRefNameAliasAdapter | BaseTextSearchAdapter | RegionsAdapter | BaseSequenceAdapter;
28
28
  export interface SequenceAdapter extends BaseFeatureDataAdapter, RegionsAdapter {
29
29
  }
30
30
  export declare abstract class BaseAdapter {
@@ -37,7 +37,7 @@ export declare abstract class BaseAdapter {
37
37
  getConf(arg: string | string[]): any;
38
38
  /**
39
39
  * Called to provide a hint that data tied to a certain region will not be
40
- * needed for the forseeable future and can be purged from caches, etc
40
+ * needed for the foreseeable future and can be purged from caches, etc
41
41
  * @param region - Region
42
42
  */
43
43
  abstract freeResources(region: Region): void;
@@ -21,7 +21,7 @@ export declare function getAdapter(pluginManager: PluginManager, sessionId: stri
21
21
  * allows them to get any sub-adapters that they need
22
22
  * internally, staying with the same worker session ID
23
23
  */
24
- export declare type getSubAdapterType = (adapterConfigSnapshot: SnapshotIn<AnyConfigurationSchemaType>) => ReturnType<typeof getAdapter>;
24
+ export type getSubAdapterType = (adapterConfigSnapshot: SnapshotIn<AnyConfigurationSchemaType>) => ReturnType<typeof getAdapter>;
25
25
  export declare function freeAdapterResources(specification: Record<string, any>): number;
26
26
  export declare function clearAdapterCache(): void;
27
27
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/core",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "JBrowse 2 core libraries used by plugins",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -73,5 +73,5 @@
73
73
  "access": "public",
74
74
  "directory": "dist"
75
75
  },
76
- "gitHead": "cf31db8d833117f8822510340664fb3f045975cb"
76
+ "gitHead": "abbc00e8feedbc58de84a7a3e735ec0224909b29"
77
77
  }
@@ -1,7 +1,7 @@
1
1
  import PluggableElementBase from './PluggableElementBase';
2
2
  import { AnyConfigurationSchemaType } from '../configuration/configurationSchema';
3
3
  import { AnyAdapter } from '../data_adapters/BaseAdapter';
4
- export declare type AdapterMetadata = {
4
+ export type AdapterMetadata = {
5
5
  category: string | null;
6
6
  hiddenFromGUI: boolean | null;
7
7
  displayName: string | null;
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { IAnyModelType } from 'mobx-state-tree';
3
3
  import PluggableElementBase from './PluggableElementBase';
4
- declare type BasicComponent = React.ComponentType<{
4
+ type BasicComponent = React.ComponentType<{
5
5
  model: any;
6
6
  }>;
7
- declare type AddTrackWorkflowComponent = React.LazyExoticComponent<BasicComponent> | BasicComponent;
7
+ type AddTrackWorkflowComponent = React.LazyExoticComponent<BasicComponent> | BasicComponent;
8
8
  export default class AddTrackWorkflow extends PluggableElementBase {
9
9
  ReactComponent: AddTrackWorkflowComponent;
10
10
  stateModel: IAnyModelType;
@@ -2,7 +2,7 @@ import PluginManager from '../PluginManager';
2
2
  import PluggableElementBase from './PluggableElementBase';
3
3
  import { UriLocation } from '../util/types';
4
4
  import { RemoteAbortSignal } from '../rpc/remoteAbortSignals';
5
- export declare type RpcMethodConstructor = new (pm: PluginManager) => RpcMethodType;
5
+ export type RpcMethodConstructor = new (pm: PluginManager) => RpcMethodType;
6
6
  export default abstract class RpcMethodType extends PluggableElementBase {
7
7
  pluginManager: PluginManager;
8
8
  name: string;
@@ -2,11 +2,11 @@ import React from 'react';
2
2
  import { IAnyModelType, IAnyStateTreeNode } from 'mobx-state-tree';
3
3
  import PluggableElementBase from './PluggableElementBase';
4
4
  import DisplayType from './DisplayType';
5
- declare type BasicView = React.ComponentType<{
5
+ type BasicView = React.ComponentType<{
6
6
  model: any;
7
7
  session?: IAnyStateTreeNode;
8
8
  }>;
9
- declare type ViewReactComponent = React.LazyExoticComponent<BasicView> | BasicView;
9
+ type ViewReactComponent = React.LazyExoticComponent<BasicView> | BasicView;
10
10
  export default class ViewType extends PluggableElementBase {
11
11
  ReactComponent: ViewReactComponent;
12
12
  stateModel: IAnyModelType;
@@ -12,5 +12,5 @@ import AddTrackWorkflowType from './AddTrackWorkflowType';
12
12
  export * from './renderers';
13
13
  export * from './models';
14
14
  export { AdapterType, ConnectionType, RendererType, WidgetType, TrackType, DisplayType, ViewType, RpcMethodType, InternetAccountType, TextSearchAdapterType, AddTrackWorkflowType, };
15
- export declare type PluggableElementType = AdapterType | ConnectionType | RendererType | WidgetType | TrackType | DisplayType | ViewType | RpcMethodType | InternetAccountType | TextSearchAdapterType | AddTrackWorkflowType;
16
- export declare type PluggableElementMember = keyof AdapterType | keyof ConnectionType | keyof RendererType | keyof WidgetType | keyof TrackType | keyof DisplayType | keyof ViewType | keyof RpcMethodType | keyof InternetAccountType | keyof TextSearchAdapterType | keyof AddTrackWorkflowType;
15
+ export type PluggableElementType = AdapterType | ConnectionType | RendererType | WidgetType | TrackType | DisplayType | ViewType | RpcMethodType | InternetAccountType | TextSearchAdapterType | AddTrackWorkflowType;
16
+ export type PluggableElementMember = keyof AdapterType | keyof ConnectionType | keyof RendererType | keyof WidgetType | keyof TrackType | keyof DisplayType | keyof ViewType | keyof RpcMethodType | keyof InternetAccountType | keyof TextSearchAdapterType | keyof AddTrackWorkflowType;
@@ -1,13 +1,34 @@
1
1
  import { AnyConfigurationModel } from '../../configuration';
2
2
  import PluginManager from '../../PluginManager';
3
- declare const _default: (pluginManager: PluginManager) => import("mobx-state-tree").IModelType<{
3
+ /**
4
+ * #stateModel BaseConnectionModel
5
+ */
6
+ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
7
+ /**
8
+ * #property
9
+ */
4
10
  name: import("mobx-state-tree").ISimpleType<string>;
11
+ /**
12
+ * #property
13
+ */
5
14
  tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
6
15
  }, {
7
16
  afterAttach(): void;
17
+ /**
18
+ * #action
19
+ */
8
20
  addTrackConf(trackConf: AnyConfigurationModel): any;
21
+ /**
22
+ * #action
23
+ */
9
24
  addTrackConfs(trackConfs: AnyConfigurationModel[]): any[];
25
+ /**
26
+ * #action
27
+ */
10
28
  setTrackConfs(trackConfs: AnyConfigurationModel[]): import("mobx-state-tree").IMSTArray<import("mobx-state-tree").IAnyModelType> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>>;
29
+ /**
30
+ * #action
31
+ */
11
32
  clear(): void;
12
33
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
13
- export default _default;
34
+ export default stateModelFactory;
@@ -1,10 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const mobx_state_tree_1 = require("mobx-state-tree");
4
- exports.default = (pluginManager) => {
4
+ /**
5
+ * #stateModel BaseConnectionModel
6
+ */
7
+ function stateModelFactory(pluginManager) {
5
8
  return mobx_state_tree_1.types
6
9
  .model('Connection', {
10
+ /**
11
+ * #property
12
+ */
7
13
  name: mobx_state_tree_1.types.identifier,
14
+ /**
15
+ * #property
16
+ */
8
17
  tracks: mobx_state_tree_1.types.array(pluginManager.pluggableConfigSchemaType('track')),
9
18
  })
10
19
  .actions(self => ({
@@ -14,18 +23,31 @@ exports.default = (pluginManager) => {
14
23
  self.connect(self.configuration);
15
24
  }
16
25
  },
26
+ /**
27
+ * #action
28
+ */
17
29
  addTrackConf(trackConf) {
18
30
  const length = self.tracks.push(trackConf);
19
31
  return self.tracks[length - 1];
20
32
  },
33
+ /**
34
+ * #action
35
+ */
21
36
  addTrackConfs(trackConfs) {
22
37
  const length = self.tracks.push(...trackConfs);
23
38
  return self.tracks.slice(length - 1 - trackConfs.length, length - 1);
24
39
  },
40
+ /**
41
+ * #action
42
+ */
25
43
  setTrackConfs(trackConfs) {
26
44
  self.tracks = (0, mobx_state_tree_1.cast)(trackConfs);
27
45
  return self.tracks;
28
46
  },
47
+ /**
48
+ * #action
49
+ */
29
50
  clear() { },
30
51
  }));
31
- };
52
+ }
53
+ exports.default = stateModelFactory;
@@ -136,5 +136,5 @@ export declare const BaseDisplay: import("mobx-state-tree").IModelType<{
136
136
  */
137
137
  reload(): void;
138
138
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
139
- export declare type BaseDisplayStateModel = typeof BaseDisplay;
140
- export declare type BaseDisplayModel = Instance<BaseDisplayStateModel>;
139
+ export type BaseDisplayStateModel = typeof BaseDisplay;
140
+ export type BaseDisplayModel = Instance<BaseDisplayStateModel>;