@jbrowse/plugin-config 2.11.2 → 2.12.1

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.
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
2
  import { AbstractSessionModel } from '@jbrowse/core/util';
3
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
4
  declare const ConfigurationEditor: ({ model, }: {
5
5
  model: {
6
6
  target: AnyConfigurationModel;
@@ -4,12 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const configuration_1 = require("@jbrowse/core/configuration");
8
7
  const material_1 = require("@mui/material");
9
8
  const mui_1 = require("tss-react/mui");
10
9
  const mobx_react_1 = require("mobx-react");
11
10
  const mobx_state_tree_1 = require("mobx-state-tree");
12
11
  const pluralize_1 = require("pluralize");
12
+ const SanitizedHTML_1 = __importDefault(require("@jbrowse/core/ui/SanitizedHTML"));
13
+ const configuration_1 = require("@jbrowse/core/configuration");
13
14
  // icons
14
15
  const ExpandMore_1 = __importDefault(require("@mui/icons-material/ExpandMore"));
15
16
  // locals
@@ -18,12 +19,9 @@ const TypeSelector_1 = __importDefault(require("./TypeSelector"));
18
19
  const useStyles = (0, mui_1.makeStyles)()(theme => {
19
20
  var _a;
20
21
  return ({
21
- expandIcon: {
22
+ icon: {
22
23
  color: ((_a = theme.palette.tertiary) === null || _a === void 0 ? void 0 : _a.contrastText) || '#fff',
23
24
  },
24
- root: {
25
- padding: theme.spacing(1, 3, 1, 1),
26
- },
27
25
  expansionPanelDetails: {
28
26
  display: 'block',
29
27
  padding: theme.spacing(1),
@@ -40,37 +38,36 @@ const useStyles = (0, mui_1.makeStyles)()(theme => {
40
38
  const Member = (0, mobx_react_1.observer)(function (props) {
41
39
  const { classes } = useStyles();
42
40
  const { slotName, slotSchema, schema, slot = schema[slotName], path = [], } = props;
43
- let typeSelector;
44
41
  if ((0, configuration_1.isConfigurationSchemaType)(slotSchema)) {
45
42
  if (slot.length) {
46
43
  return slot.map((subslot, slotIndex) => {
47
- const key = `${(0, pluralize_1.singular)(slotName)} ${slotIndex + 1}`;
44
+ const key = subslot.type
45
+ ? `${(0, pluralize_1.singular)(slotName)} ${subslot.type}`
46
+ : `${(0, pluralize_1.singular)(slotName)} ${slotIndex + 1}`;
48
47
  return react_1.default.createElement(Member, { key: key, ...props, slot: subslot, slotName: key });
49
48
  });
50
49
  }
51
50
  // if this is an explicitly typed schema, make a type-selecting dropdown
52
51
  // that can be used to change its type
53
52
  const typeNameChoices = (0, configuration_1.getTypeNamesFromExplicitlyTypedUnion)(slotSchema);
54
- if (typeNameChoices.length) {
55
- typeSelector = (react_1.default.createElement(TypeSelector_1.default, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange: evt => {
56
- if (evt.target.value !== slot.type) {
57
- schema.setSubschema(slotName, { type: evt.target.value });
58
- }
59
- } }));
60
- }
61
53
  return (react_1.default.createElement(material_1.Accordion, { defaultExpanded: true, className: classes.accordion },
62
- react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
54
+ react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.icon }) },
63
55
  react_1.default.createElement(material_1.Typography, null, [...path, slotName].join('➔'))),
64
56
  react_1.default.createElement(material_1.AccordionDetails, { className: classes.expansionPanelDetails },
65
- typeSelector,
57
+ typeNameChoices.length ? (react_1.default.createElement(TypeSelector_1.default, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange: evt => {
58
+ if (evt.target.value !== slot.type) {
59
+ schema.setSubschema(slotName, { type: evt.target.value });
60
+ }
61
+ } })) : null,
66
62
  react_1.default.createElement(material_1.FormGroup, { className: classes.noOverflow },
67
63
  react_1.default.createElement(Schema, { schema: slot, path: [...path, slotName] })))));
68
64
  }
69
- if ((0, configuration_1.isConfigurationSlotType)(slotSchema)) {
70
- // this is a regular config slot
65
+ else if ((0, configuration_1.isConfigurationSlotType)(slotSchema)) {
71
66
  return react_1.default.createElement(SlotEditor_1.default, { key: slotName, slot: slot, slotSchema: slotSchema });
72
67
  }
73
- return null;
68
+ else {
69
+ return null;
70
+ }
74
71
  });
75
72
  const Schema = (0, mobx_react_1.observer)(function ({ schema, path = [], }) {
76
73
  const properties = (0, mobx_state_tree_1.getMembers)(schema).properties;
@@ -85,8 +82,9 @@ const ConfigurationEditor = (0, mobx_react_1.observer)(function ({ model, }) {
85
82
  const key = target && (0, configuration_1.readConfObject)(target, 'trackId');
86
83
  const name = target && (0, configuration_1.readConfObject)(target, 'name');
87
84
  return (react_1.default.createElement(material_1.Accordion, { key: key, defaultExpanded: true, className: classes.accordion },
88
- react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
89
- react_1.default.createElement(material_1.Typography, null, name !== null && name !== void 0 ? name : 'Configuration')),
85
+ react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.icon }) },
86
+ react_1.default.createElement(material_1.Typography, null,
87
+ react_1.default.createElement(SanitizedHTML_1.default, { html: name !== null && name !== void 0 ? name : 'Configuration' }))),
90
88
  react_1.default.createElement(material_1.AccordionDetails, { className: classes.expansionPanelDetails, "data-testid": "configEditor" }, !target ? 'no target set' : react_1.default.createElement(Schema, { schema: target }))));
91
89
  });
92
90
  exports.default = ConfigurationEditor;
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = ConfigurationTextField;
6
7
  const react_1 = __importDefault(require("react"));
7
8
  const material_1 = require("@mui/material");
8
9
  const ui_1 = require("@jbrowse/core/ui");
@@ -14,4 +15,3 @@ function ConfigurationTextField(props) {
14
15
  component: 'div',
15
16
  }, fullWidth: true }));
16
17
  }
17
- exports.default = ConfigurationTextField;
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.default = registerConfigurationEditorWidget;
29
30
  const react_1 = require("react");
30
31
  const configuration_1 = require("@jbrowse/core/configuration");
31
32
  const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
@@ -44,4 +45,3 @@ function registerConfigurationEditorWidget(pluginManager) {
44
45
  });
45
46
  });
46
47
  }
47
- exports.default = registerConfigurationEditorWidget;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = stateModelFactory;
3
4
  const mobx_state_tree_1 = require("mobx-state-tree");
4
5
  const mst_1 = require("@jbrowse/core/util/types/mst");
5
6
  function stateModelFactory(pluginManager) {
@@ -18,4 +19,3 @@ function stateModelFactory(pluginManager) {
18
19
  },
19
20
  }));
20
21
  }
21
- exports.default = stateModelFactory;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makeFeatures = void 0;
6
+ exports.makeFeatures = makeFeatures;
7
7
  const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
8
8
  const simpleFeature_1 = __importDefault(require("@jbrowse/core/util/simpleFeature"));
9
9
  const rxjs_1 = require("@jbrowse/core/util/rxjs");
@@ -28,7 +28,6 @@ function makeFeatures(fdata) {
28
28
  }
29
29
  return features;
30
30
  }
31
- exports.makeFeatures = makeFeatures;
32
31
  class FromConfigAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
33
32
  constructor(conf, getSubAdapter, pluginManager) {
34
33
  super(conf, getSubAdapter, pluginManager);
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.default = FromConfigAdapterF;
29
30
  const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
30
31
  const configSchema_1 = __importDefault(require("./configSchema"));
31
32
  function FromConfigAdapterF(pluginManager) {
@@ -38,4 +39,3 @@ function FromConfigAdapterF(pluginManager) {
38
39
  },
39
40
  }));
40
41
  }
41
- exports.default = FromConfigAdapterF;
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.default = FromConfigRegionsAdapterF;
29
30
  const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
30
31
  const configSchema_1 = __importDefault(require("./configSchema"));
31
32
  function FromConfigRegionsAdapterF(pluginManager) {
@@ -38,4 +39,3 @@ function FromConfigRegionsAdapterF(pluginManager) {
38
39
  },
39
40
  }));
40
41
  }
41
- exports.default = FromConfigRegionsAdapterF;
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.default = FromConfigSequenceAdapterF;
29
30
  const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
30
31
  const configSchema_1 = __importDefault(require("./configSchema"));
31
32
  function FromConfigSequenceAdapterF(pluginManager) {
@@ -38,4 +39,3 @@ function FromConfigSequenceAdapterF(pluginManager) {
38
39
  },
39
40
  }));
40
41
  }
41
- exports.default = FromConfigSequenceAdapterF;
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.default = RefNameAliasAdapterF;
29
30
  const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
30
31
  const configSchema_1 = __importDefault(require("./configSchema"));
31
32
  function RefNameAliasAdapterF(pluginManager) {
@@ -38,4 +39,3 @@ function RefNameAliasAdapterF(pluginManager) {
38
39
  },
39
40
  }));
40
41
  }
41
- exports.default = RefNameAliasAdapterF;
package/dist/index.d.ts CHANGED
@@ -1,15 +1,10 @@
1
- /// <reference types="react" />
2
1
  import Plugin from '@jbrowse/core/Plugin';
3
2
  import PluginManager from '@jbrowse/core/PluginManager';
4
3
  declare const LazyConfigurationEditorComponent: import("react").LazyExoticComponent<({ model, }: {
5
4
  model: {
6
- target: {
7
- [x: string]: any;
8
- } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
9
- setSubschema(slotName: string, data: unknown): any;
10
- } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>;
5
+ target: import("@jbrowse/core/configuration").AnyConfigurationModel;
11
6
  };
12
- session?: import("@jbrowse/core/util").AbstractSessionModel | undefined;
7
+ session?: import("@jbrowse/core/util").AbstractSessionModel;
13
8
  }) => import("react").JSX.Element>;
14
9
  export default class ConfigurationPlugin extends Plugin {
15
10
  name: string;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
2
  import { AbstractSessionModel } from '@jbrowse/core/util';
3
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
4
  declare const ConfigurationEditor: ({ model, }: {
5
5
  model: {
6
6
  target: AnyConfigurationModel;
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
- import { readConfObject, getTypeNamesFromExplicitlyTypedUnion, isConfigurationSchemaType, isConfigurationSlotType, } from '@jbrowse/core/configuration';
3
2
  import { FormGroup, Accordion, AccordionDetails, AccordionSummary, Typography, } from '@mui/material';
4
3
  import { makeStyles } from 'tss-react/mui';
5
4
  import { observer } from 'mobx-react';
6
5
  import { getMembers } from 'mobx-state-tree';
7
6
  import { singular } from 'pluralize';
7
+ import SanitizedHTML from '@jbrowse/core/ui/SanitizedHTML';
8
+ import { readConfObject, getTypeNamesFromExplicitlyTypedUnion, isConfigurationSchemaType, isConfigurationSlotType, } from '@jbrowse/core/configuration';
8
9
  // icons
9
10
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
10
11
  // locals
@@ -13,12 +14,9 @@ import TypeSelector from './TypeSelector';
13
14
  const useStyles = makeStyles()(theme => {
14
15
  var _a;
15
16
  return ({
16
- expandIcon: {
17
+ icon: {
17
18
  color: ((_a = theme.palette.tertiary) === null || _a === void 0 ? void 0 : _a.contrastText) || '#fff',
18
19
  },
19
- root: {
20
- padding: theme.spacing(1, 3, 1, 1),
21
- },
22
20
  expansionPanelDetails: {
23
21
  display: 'block',
24
22
  padding: theme.spacing(1),
@@ -35,37 +33,36 @@ const useStyles = makeStyles()(theme => {
35
33
  const Member = observer(function (props) {
36
34
  const { classes } = useStyles();
37
35
  const { slotName, slotSchema, schema, slot = schema[slotName], path = [], } = props;
38
- let typeSelector;
39
36
  if (isConfigurationSchemaType(slotSchema)) {
40
37
  if (slot.length) {
41
38
  return slot.map((subslot, slotIndex) => {
42
- const key = `${singular(slotName)} ${slotIndex + 1}`;
39
+ const key = subslot.type
40
+ ? `${singular(slotName)} ${subslot.type}`
41
+ : `${singular(slotName)} ${slotIndex + 1}`;
43
42
  return React.createElement(Member, { key: key, ...props, slot: subslot, slotName: key });
44
43
  });
45
44
  }
46
45
  // if this is an explicitly typed schema, make a type-selecting dropdown
47
46
  // that can be used to change its type
48
47
  const typeNameChoices = getTypeNamesFromExplicitlyTypedUnion(slotSchema);
49
- if (typeNameChoices.length) {
50
- typeSelector = (React.createElement(TypeSelector, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange: evt => {
51
- if (evt.target.value !== slot.type) {
52
- schema.setSubschema(slotName, { type: evt.target.value });
53
- }
54
- } }));
55
- }
56
48
  return (React.createElement(Accordion, { defaultExpanded: true, className: classes.accordion },
57
- React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
49
+ React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.icon }) },
58
50
  React.createElement(Typography, null, [...path, slotName].join('➔'))),
59
51
  React.createElement(AccordionDetails, { className: classes.expansionPanelDetails },
60
- typeSelector,
52
+ typeNameChoices.length ? (React.createElement(TypeSelector, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange: evt => {
53
+ if (evt.target.value !== slot.type) {
54
+ schema.setSubschema(slotName, { type: evt.target.value });
55
+ }
56
+ } })) : null,
61
57
  React.createElement(FormGroup, { className: classes.noOverflow },
62
58
  React.createElement(Schema, { schema: slot, path: [...path, slotName] })))));
63
59
  }
64
- if (isConfigurationSlotType(slotSchema)) {
65
- // this is a regular config slot
60
+ else if (isConfigurationSlotType(slotSchema)) {
66
61
  return React.createElement(SlotEditor, { key: slotName, slot: slot, slotSchema: slotSchema });
67
62
  }
68
- return null;
63
+ else {
64
+ return null;
65
+ }
69
66
  });
70
67
  const Schema = observer(function ({ schema, path = [], }) {
71
68
  const properties = getMembers(schema).properties;
@@ -80,8 +77,9 @@ const ConfigurationEditor = observer(function ({ model, }) {
80
77
  const key = target && readConfObject(target, 'trackId');
81
78
  const name = target && readConfObject(target, 'name');
82
79
  return (React.createElement(Accordion, { key: key, defaultExpanded: true, className: classes.accordion },
83
- React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
84
- React.createElement(Typography, null, name !== null && name !== void 0 ? name : 'Configuration')),
80
+ React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.icon }) },
81
+ React.createElement(Typography, null,
82
+ React.createElement(SanitizedHTML, { html: name !== null && name !== void 0 ? name : 'Configuration' }))),
85
83
  React.createElement(AccordionDetails, { className: classes.expansionPanelDetails, "data-testid": "configEditor" }, !target ? 'no target set' : React.createElement(Schema, { schema: target }))));
86
84
  });
87
85
  export default ConfigurationEditor;
package/esm/index.d.ts CHANGED
@@ -1,15 +1,10 @@
1
- /// <reference types="react" />
2
1
  import Plugin from '@jbrowse/core/Plugin';
3
2
  import PluginManager from '@jbrowse/core/PluginManager';
4
3
  declare const LazyConfigurationEditorComponent: import("react").LazyExoticComponent<({ model, }: {
5
4
  model: {
6
- target: {
7
- [x: string]: any;
8
- } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
9
- setSubschema(slotName: string, data: unknown): any;
10
- } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>;
5
+ target: import("@jbrowse/core/configuration").AnyConfigurationModel;
11
6
  };
12
- session?: import("@jbrowse/core/util").AbstractSessionModel | undefined;
7
+ session?: import("@jbrowse/core/util").AbstractSessionModel;
13
8
  }) => import("react").JSX.Element>;
14
9
  export default class ConfigurationPlugin extends Plugin {
15
10
  name: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-config",
3
- "version": "2.11.2",
3
+ "version": "2.12.1",
4
4
  "description": "JBrowse 2 config utilities",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -56,5 +56,5 @@
56
56
  "distModule": "esm/index.js",
57
57
  "srcModule": "src/index.ts",
58
58
  "module": "esm/index.js",
59
- "gitHead": "511048cb6965f0bf624c96de244e7fd47fce17d6"
59
+ "gitHead": "20f16ae5a56ae5e4806aaa373131e540b0b5b0fd"
60
60
  }