@jbrowse/plugin-config 3.7.0 → 4.0.0

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 (101) hide show
  1. package/esm/ConfigurationEditorWidget/components/BooleanEditor.js +1 -1
  2. package/esm/ConfigurationEditorWidget/components/CallbackEditor.js +25 -25
  3. package/esm/ConfigurationEditorWidget/components/ColorEditor.js +2 -2
  4. package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.d.ts +1 -1
  5. package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.js +12 -9
  6. package/esm/ConfigurationEditorWidget/components/HeadingComponent.d.ts +1 -1
  7. package/esm/ConfigurationEditorWidget/components/HeadingComponent.js +8 -7
  8. package/esm/ConfigurationEditorWidget/components/JsonEditor.js +1 -1
  9. package/esm/ConfigurationEditorWidget/components/NumberEditor.js +3 -4
  10. package/esm/ConfigurationEditorWidget/components/NumberMapEditor.js +3 -3
  11. package/esm/ConfigurationEditorWidget/components/SlotEditor.d.ts +1 -1
  12. package/esm/ConfigurationEditorWidget/components/SlotEditor.js +18 -19
  13. package/esm/ConfigurationEditorWidget/components/StringArrayEditor.js +1 -1
  14. package/esm/ConfigurationEditorWidget/components/StringArrayMapEditor.js +3 -3
  15. package/esm/ConfigurationEditorWidget/components/TypeSelector.js +2 -2
  16. package/esm/ConfigurationEditorWidget/components/useSlotEditorStyles.d.ts +6 -5
  17. package/esm/ConfigurationEditorWidget/components/useSlotEditorStyles.js +1 -1
  18. package/esm/ConfigurationEditorWidget/index.js +3 -3
  19. package/esm/ConfigurationEditorWidget/model.d.ts +9 -6
  20. package/esm/ConfigurationEditorWidget/model.js +20 -3
  21. package/esm/FromConfigAdapter/FromConfigAdapter.js +1 -0
  22. package/esm/FromConfigAdapter/configSchema.d.ts +2 -2
  23. package/esm/FromConfigAdapter/index.js +2 -2
  24. package/esm/FromConfigRegionsAdapter/FromConfigRegionsAdapter.js +2 -1
  25. package/esm/FromConfigRegionsAdapter/configSchema.d.ts +2 -2
  26. package/esm/FromConfigRegionsAdapter/index.js +2 -2
  27. package/esm/FromConfigSequenceAdapter/FromConfigSequenceAdapter.d.ts +1 -1
  28. package/esm/FromConfigSequenceAdapter/FromConfigSequenceAdapter.js +1 -1
  29. package/esm/FromConfigSequenceAdapter/configSchema.d.ts +2 -2
  30. package/esm/FromConfigSequenceAdapter/index.js +2 -2
  31. package/esm/NcbiSequenceReportAliasAdapter/configSchema.d.ts +2 -2
  32. package/esm/NcbiSequenceReportAliasAdapter/index.js +2 -2
  33. package/esm/RefNameAliasAdapter/configSchema.d.ts +2 -2
  34. package/esm/RefNameAliasAdapter/index.js +2 -2
  35. package/esm/index.d.ts +1 -1
  36. package/esm/index.js +8 -11
  37. package/package.json +25 -31
  38. package/dist/ConfigurationEditorWidget/components/BooleanEditor.d.ts +0 -9
  39. package/dist/ConfigurationEditorWidget/components/BooleanEditor.js +0 -11
  40. package/dist/ConfigurationEditorWidget/components/CallbackEditor.d.ts +0 -10
  41. package/dist/ConfigurationEditorWidget/components/CallbackEditor.js +0 -73
  42. package/dist/ConfigurationEditorWidget/components/ColorEditor.d.ts +0 -18
  43. package/dist/ConfigurationEditorWidget/components/ColorEditor.js +0 -33
  44. package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.d.ts +0 -9
  45. package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.js +0 -72
  46. package/dist/ConfigurationEditorWidget/components/ConfigurationTextField.d.ts +0 -4
  47. package/dist/ConfigurationEditorWidget/components/ConfigurationTextField.js +0 -14
  48. package/dist/ConfigurationEditorWidget/components/HeadingComponent.d.ts +0 -8
  49. package/dist/ConfigurationEditorWidget/components/HeadingComponent.js +0 -20
  50. package/dist/ConfigurationEditorWidget/components/JsonEditor.d.ts +0 -9
  51. package/dist/ConfigurationEditorWidget/components/JsonEditor.js +0 -55
  52. package/dist/ConfigurationEditorWidget/components/NumberEditor.d.ts +0 -10
  53. package/dist/ConfigurationEditorWidget/components/NumberEditor.js +0 -26
  54. package/dist/ConfigurationEditorWidget/components/NumberMapEditor.d.ts +0 -10
  55. package/dist/ConfigurationEditorWidget/components/NumberMapEditor.js +0 -40
  56. package/dist/ConfigurationEditorWidget/components/SlotEditor.d.ts +0 -6
  57. package/dist/ConfigurationEditorWidget/components/SlotEditor.js +0 -92
  58. package/dist/ConfigurationEditorWidget/components/StringArrayEditor.d.ts +0 -11
  59. package/dist/ConfigurationEditorWidget/components/StringArrayEditor.js +0 -39
  60. package/dist/ConfigurationEditorWidget/components/StringArrayMapEditor.d.ts +0 -13
  61. package/dist/ConfigurationEditorWidget/components/StringArrayMapEditor.js +0 -48
  62. package/dist/ConfigurationEditorWidget/components/TypeSelector.d.ts +0 -8
  63. package/dist/ConfigurationEditorWidget/components/TypeSelector.js +0 -11
  64. package/dist/ConfigurationEditorWidget/components/useSlotEditorStyles.d.ts +0 -9
  65. package/dist/ConfigurationEditorWidget/components/useSlotEditorStyles.js +0 -21
  66. package/dist/ConfigurationEditorWidget/index.d.ts +0 -2
  67. package/dist/ConfigurationEditorWidget/index.js +0 -57
  68. package/dist/ConfigurationEditorWidget/model.d.ts +0 -8
  69. package/dist/ConfigurationEditorWidget/model.js +0 -18
  70. package/dist/FromConfigAdapter/FromConfigAdapter.d.ts +0 -17
  71. package/dist/FromConfigAdapter/FromConfigAdapter.js +0 -56
  72. package/dist/FromConfigAdapter/configSchema.d.ts +0 -7
  73. package/dist/FromConfigAdapter/configSchema.js +0 -11
  74. package/dist/FromConfigAdapter/index.d.ts +0 -2
  75. package/dist/FromConfigAdapter/index.js +0 -51
  76. package/dist/FromConfigRegionsAdapter/FromConfigRegionsAdapter.d.ts +0 -14
  77. package/dist/FromConfigRegionsAdapter/FromConfigRegionsAdapter.js +0 -41
  78. package/dist/FromConfigRegionsAdapter/configSchema.d.ts +0 -7
  79. package/dist/FromConfigRegionsAdapter/configSchema.js +0 -14
  80. package/dist/FromConfigRegionsAdapter/index.d.ts +0 -2
  81. package/dist/FromConfigRegionsAdapter/index.js +0 -51
  82. package/dist/FromConfigSequenceAdapter/FromConfigSequenceAdapter.d.ts +0 -12
  83. package/dist/FromConfigSequenceAdapter/FromConfigSequenceAdapter.js +0 -56
  84. package/dist/FromConfigSequenceAdapter/configSchema.d.ts +0 -7
  85. package/dist/FromConfigSequenceAdapter/configSchema.js +0 -14
  86. package/dist/FromConfigSequenceAdapter/index.d.ts +0 -2
  87. package/dist/FromConfigSequenceAdapter/index.js +0 -51
  88. package/dist/NcbiSequenceReportAliasAdapter/NcbiSequenceReportAliasAdapter.d.ts +0 -9
  89. package/dist/NcbiSequenceReportAliasAdapter/NcbiSequenceReportAliasAdapter.js +0 -41
  90. package/dist/NcbiSequenceReportAliasAdapter/configSchema.d.ts +0 -15
  91. package/dist/NcbiSequenceReportAliasAdapter/configSchema.js +0 -32
  92. package/dist/NcbiSequenceReportAliasAdapter/index.d.ts +0 -2
  93. package/dist/NcbiSequenceReportAliasAdapter/index.js +0 -53
  94. package/dist/RefNameAliasAdapter/RefNameAliasAdapter.d.ts +0 -8
  95. package/dist/RefNameAliasAdapter/RefNameAliasAdapter.js +0 -39
  96. package/dist/RefNameAliasAdapter/configSchema.d.ts +0 -19
  97. package/dist/RefNameAliasAdapter/configSchema.js +0 -36
  98. package/dist/RefNameAliasAdapter/index.d.ts +0 -2
  99. package/dist/RefNameAliasAdapter/index.js +0 -51
  100. package/dist/index.d.ts +0 -13
  101. package/dist/index.js +0 -64
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Checkbox, FormControl, FormControlLabel, FormHelperText, } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
- const BooleanEditor = observer(function ({ slot, }) {
4
+ const BooleanEditor = observer(function BooleanEditor({ slot, }) {
5
5
  return (_jsxs(FormControl, { children: [_jsx(FormControlLabel, { label: slot.name, control: _jsx(Checkbox, { checked: slot.value, onChange: evt => {
6
6
  slot.set(evt.target.checked);
7
7
  } }) }), _jsx(FormHelperText, { children: slot.description })] }));
@@ -1,12 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { useDebounce } from '@jbrowse/core/util';
2
+ import { useState, useTransition } from 'react';
4
3
  import { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings';
4
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
5
+ import { getEnv } from '@jbrowse/mobx-state-tree';
5
6
  import HelpIcon from '@mui/icons-material/Help';
6
7
  import { IconButton, TextField, Tooltip } from '@mui/material';
7
8
  import { observer } from 'mobx-react';
8
- import { getEnv } from 'mobx-state-tree';
9
- import { makeStyles } from 'tss-react/mui';
10
9
  const fontFamily = 'Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace';
11
10
  const useStyles = makeStyles()(theme => ({
12
11
  callbackEditor: {
@@ -27,31 +26,32 @@ const useStyles = makeStyles()(theme => ({
27
26
  fontSize: '0.8em',
28
27
  },
29
28
  }));
30
- const CallbackEditor = observer(function ({ slot, }) {
29
+ function validateAndSetCode(code, slot, setCodeError) {
30
+ try {
31
+ const jexlCode = code.startsWith('jexl:') ? code : `jexl:${code}`;
32
+ if (jexlCode === 'jexl:') {
33
+ throw new Error('Empty jexl expression is not valid');
34
+ }
35
+ stringToJexlExpression(jexlCode, getEnv(slot).pluginManager?.jexl);
36
+ slot.set(jexlCode);
37
+ setCodeError(undefined);
38
+ }
39
+ catch (e) {
40
+ console.error({ e });
41
+ setCodeError(e);
42
+ }
43
+ }
44
+ const CallbackEditor = observer(function CallbackEditor({ slot, }) {
31
45
  const { classes } = useStyles();
32
46
  const [code, setCode] = useState(slot.value);
33
47
  const [error, setCodeError] = useState();
34
- const debouncedCode = useDebounce(code, 400);
35
- useEffect(() => {
36
- var _a;
37
- try {
38
- const jexlDebouncedCode = debouncedCode.startsWith('jexl:')
39
- ? debouncedCode
40
- : `jexl:${debouncedCode}`;
41
- if (jexlDebouncedCode === 'jexl:') {
42
- throw new Error('Empty jexl expression is not valid');
43
- }
44
- stringToJexlExpression(jexlDebouncedCode, (_a = getEnv(slot).pluginManager) === null || _a === void 0 ? void 0 : _a.jexl);
45
- slot.set(jexlDebouncedCode);
46
- setCodeError(undefined);
47
- }
48
- catch (e) {
49
- console.error({ e });
50
- setCodeError(e);
51
- }
52
- }, [debouncedCode, slot]);
48
+ const [, startTransition] = useTransition();
53
49
  return (_jsxs(_Fragment, { children: [error ? _jsx("p", { className: classes.error, children: `${error}` }) : null, _jsxs("div", { className: classes.callbackContainer, children: [_jsx(TextField, { multiline: true, className: classes.callbackEditor, value: code.startsWith('jexl:') ? code.split('jexl:')[1] : code, onChange: event => {
54
- setCode(event.target.value);
50
+ const value = event.target.value;
51
+ setCode(value);
52
+ startTransition(() => {
53
+ validateAndSetCode(value, slot, setCodeError);
54
+ });
55
55
  }, style: { background: error ? '#fdd' : undefined }, slotProps: {
56
56
  input: {
57
57
  classes: {
@@ -4,7 +4,7 @@ import ColorPicker from '@jbrowse/core/ui/ColorPicker';
4
4
  import { TextField } from '@mui/material';
5
5
  import { observer } from 'mobx-react';
6
6
  export const ColorSlot = (props) => {
7
- const { value = '#000', label = '', TextFieldProps = {}, onChange } = props;
7
+ const { value, label = '', TextFieldProps = {}, onChange } = props;
8
8
  const [displayed, setDisplayed] = useState(false);
9
9
  return (_jsxs("div", { style: { display: 'flex' }, children: [_jsx(TextField, { value: value, label: label, onClick: () => {
10
10
  setDisplayed(!displayed);
@@ -14,7 +14,7 @@ export const ColorSlot = (props) => {
14
14
  onChange(event);
15
15
  } }) }) })] }));
16
16
  };
17
- const ColorEditor = observer(function (props) {
17
+ const ColorEditor = observer(function ColorEditor(props) {
18
18
  const { slot } = props;
19
19
  return (_jsx(ColorSlot, { label: slot.name, value: slot.value, onChange: color => {
20
20
  slot.set(color);
@@ -2,7 +2,7 @@ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
2
  import type { AbstractSessionModel } from '@jbrowse/core/util';
3
3
  declare const ConfigurationEditor: ({ model, }: {
4
4
  model: {
5
- target: AnyConfigurationModel;
5
+ target?: AnyConfigurationModel;
6
6
  };
7
7
  session?: AbstractSessionModel;
8
8
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,14 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { getTypeNamesFromExplicitlyTypedUnion, isConfigurationSchemaType, isConfigurationSlotType, readConfObject, } from '@jbrowse/core/configuration';
3
3
  import SanitizedHTML from '@jbrowse/core/ui/SanitizedHTML';
4
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
5
+ import { getMembers } from '@jbrowse/mobx-state-tree';
4
6
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
5
7
  import { Accordion, AccordionDetails, AccordionSummary, FormGroup, Typography, } from '@mui/material';
6
8
  import { observer } from 'mobx-react';
7
- import { getMembers } from 'mobx-state-tree';
8
9
  import { singular } from 'pluralize';
9
- import { makeStyles } from 'tss-react/mui';
10
- import SlotEditor from './SlotEditor';
11
- import TypeSelector from './TypeSelector';
10
+ import SlotEditor from "./SlotEditor.js";
11
+ import TypeSelector from "./TypeSelector.js";
12
12
  const useStyles = makeStyles()(theme => ({
13
13
  icon: {
14
14
  color: theme.palette.tertiary.contrastText || '#fff',
@@ -25,7 +25,7 @@ const useStyles = makeStyles()(theme => ({
25
25
  overflowX: 'auto',
26
26
  },
27
27
  }));
28
- const Member = observer(function (props) {
28
+ const Member = observer(function Member(props) {
29
29
  const { classes } = useStyles();
30
30
  const { slotName, slotSchema, schema, slot = schema[slotName], path = [], } = props;
31
31
  if (isConfigurationSchemaType(slotSchema)) {
@@ -53,15 +53,18 @@ const Member = observer(function (props) {
53
53
  return null;
54
54
  }
55
55
  });
56
- const Schema = observer(function ({ schema, path = [], }) {
56
+ const Schema = observer(function Schema({ schema, path = [], }) {
57
57
  const properties = getMembers(schema).properties;
58
58
  return (_jsx(_Fragment, { children: Object.entries(properties).map(([slotName, slotSchema]) => (_jsx(Member, { slotName: slotName, slotSchema: slotSchema, path: path, schema: schema }, slotName))) }));
59
59
  });
60
- const ConfigurationEditor = observer(function ({ model, }) {
60
+ const ConfigurationEditor = observer(function ConfigurationEditor({ model, }) {
61
61
  const { classes } = useStyles();
62
- const { target } = model;
62
+ const target = model.target;
63
+ if (!target) {
64
+ return _jsx(Typography, { children: "No configuration target" });
65
+ }
63
66
  const key = readConfObject(target, 'trackId');
64
67
  const name = readConfObject(target, 'name');
65
- return (_jsxs(Accordion, { defaultExpanded: true, className: classes.accordion, children: [_jsx(AccordionSummary, { expandIcon: _jsx(ExpandMoreIcon, { className: classes.icon }), children: _jsx(Typography, { children: _jsx(SanitizedHTML, { html: name !== null && name !== void 0 ? name : 'Configuration' }) }) }), _jsx(AccordionDetails, { className: classes.expansionPanelDetails, "data-testid": "configEditor", children: _jsx(Schema, { schema: target }) })] }, key));
68
+ return (_jsxs(Accordion, { defaultExpanded: true, className: classes.accordion, children: [_jsx(AccordionSummary, { expandIcon: _jsx(ExpandMoreIcon, { className: classes.icon }), children: _jsx(Typography, { children: _jsx(SanitizedHTML, { html: name ?? 'Configuration' }) }) }), _jsx(AccordionDetails, { className: classes.expansionPanelDetails, "data-testid": "configEditor", children: _jsx(Schema, { schema: target }) })] }, key));
66
69
  });
67
70
  export default ConfigurationEditor;
@@ -1,6 +1,6 @@
1
1
  declare const HeadingComponent: ({ model, }: {
2
2
  model?: {
3
- target: {
3
+ target?: {
4
4
  type: string;
5
5
  };
6
6
  };
@@ -1,13 +1,14 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { getType, isStateTreeNode } from '@jbrowse/mobx-state-tree';
2
3
  import { observer } from 'mobx-react';
3
- import { getType, isStateTreeNode } from 'mobx-state-tree';
4
- const HeadingComponent = observer(function ({ model, }) {
5
- if (model === null || model === void 0 ? void 0 : model.target) {
6
- if (model.target.type) {
7
- return `${model.target.type} settings`;
4
+ const HeadingComponent = observer(function HeadingComponent({ model, }) {
5
+ const target = model?.target;
6
+ if (target) {
7
+ if (target.type) {
8
+ return `${target.type} settings`;
8
9
  }
9
- if (isStateTreeNode(model.target)) {
10
- const type = getType(model.target);
10
+ if (isStateTreeNode(target)) {
11
+ const type = getType(target);
11
12
  if (type.name) {
12
13
  return `${type.name.replace('ConfigurationSchema', '')} settings`;
13
14
  }
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
3
4
  import { InputLabel, TextField } from '@mui/material';
4
5
  import { observer } from 'mobx-react';
5
- import { makeStyles } from 'tss-react/mui';
6
6
  const fontSize = '12px';
7
7
  const fontFamily = 'Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace';
8
8
  const useStyles = makeStyles()(theme => ({
@@ -1,14 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { observer } from 'mobx-react';
4
- import ConfigurationTextField from './ConfigurationTextField';
5
- const NumberEditor = observer(function ({ slot, }) {
4
+ import ConfigurationTextField from "./ConfigurationTextField.js";
5
+ const NumberEditor = observer(function NumberEditor({ slot, }) {
6
6
  const [val, setVal] = useState(slot.value);
7
7
  useEffect(() => {
8
- var _a;
9
8
  const num = Number.parseFloat(val);
10
9
  if (Number.isNaN(num)) {
11
- (_a = slot.reset) === null || _a === void 0 ? void 0 : _a.call(slot);
10
+ slot.reset?.();
12
11
  }
13
12
  else {
14
13
  slot.set(num);
@@ -1,17 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
3
4
  import AddIcon from '@mui/icons-material/Add';
4
5
  import DeleteIcon from '@mui/icons-material/Delete';
5
6
  import { Card, CardContent, CardHeader, FormHelperText, IconButton, InputAdornment, InputLabel, TextField, } from '@mui/material';
6
7
  import { observer } from 'mobx-react';
7
- import { makeStyles } from 'tss-react/mui';
8
- import NumberEditor from './NumberEditor';
8
+ import NumberEditor from "./NumberEditor.js";
9
9
  const useStyles = makeStyles()(theme => ({
10
10
  card: {
11
11
  marginTop: theme.spacing(1),
12
12
  },
13
13
  }));
14
- const NumberMapEditor = observer(function ({ slot, }) {
14
+ const NumberMapEditor = observer(function NumberMapEditor({ slot, }) {
15
15
  const { classes } = useStyles();
16
16
  const [value, setValue] = useState('');
17
17
  return (_jsxs(_Fragment, { children: [_jsx(InputLabel, { children: slot.name }), [...slot.value].map(([key, val]) => (_jsxs(Card, { raised: true, className: classes.card, children: [_jsx(CardHeader, { title: key, action: _jsx(IconButton, { onClick: () => {
@@ -1,4 +1,4 @@
1
- import type { IAnyType } from 'mobx-state-tree';
1
+ import type { IAnyType } from '@jbrowse/mobx-state-tree';
2
2
  declare const SlotEditor: ({ slot, slotSchema, }: {
3
3
  slot: any;
4
4
  slotSchema: IAnyType;
@@ -3,32 +3,32 @@ import { useEffect, useState } from 'react';
3
3
  import { FileSelector } from '@jbrowse/core/ui';
4
4
  import { getEnv } from '@jbrowse/core/util';
5
5
  import { getSubType, getUnionSubTypes } from '@jbrowse/core/util/mst-reflection';
6
+ import { getPropertyMembers } from '@jbrowse/mobx-state-tree';
6
7
  import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked';
7
8
  import { IconButton, MenuItem, Paper, SvgIcon, TextField } from '@mui/material';
8
9
  import { observer } from 'mobx-react';
9
- import { getPropertyMembers } from 'mobx-state-tree';
10
- import BooleanEditor from './BooleanEditor';
11
- import CallbackEditor from './CallbackEditor';
12
- import ColorEditor from './ColorEditor';
13
- import ConfigurationTextField from './ConfigurationTextField';
14
- import JsonEditor from './JsonEditor';
15
- import NumberEditor from './NumberEditor';
16
- import NumberMapEditor from './NumberMapEditor';
17
- import StringArrayEditor from './StringArrayEditor';
18
- import StringArrayMapEditor from './StringArrayMapEditor';
19
- import { useSlotEditorStyles } from './useSlotEditorStyles';
20
- const StringEditor = observer(function ({ slot, }) {
10
+ import BooleanEditor from "./BooleanEditor.js";
11
+ import CallbackEditor from "./CallbackEditor.js";
12
+ import ColorEditor from "./ColorEditor.js";
13
+ import ConfigurationTextField from "./ConfigurationTextField.js";
14
+ import JsonEditor from "./JsonEditor.js";
15
+ import NumberEditor from "./NumberEditor.js";
16
+ import NumberMapEditor from "./NumberMapEditor.js";
17
+ import StringArrayEditor from "./StringArrayEditor.js";
18
+ import StringArrayMapEditor from "./StringArrayMapEditor.js";
19
+ import { useSlotEditorStyles } from "./useSlotEditorStyles.js";
20
+ const StringEditor = observer(function StringEditor({ slot, }) {
21
21
  return (_jsx(ConfigurationTextField, { label: slot.name, helperText: slot.description, value: slot.value, onChange: evt => {
22
22
  slot.set(evt.target.value);
23
23
  } }));
24
24
  });
25
- const TextEditor = observer(function ({ slot, }) {
25
+ const TextEditor = observer(function TextEditor({ slot, }) {
26
26
  return (_jsx(TextField, { label: slot.name, helperText: slot.description, multiline: true, value: slot.value, onChange: evt => {
27
27
  slot.set(evt.target.value);
28
28
  } }));
29
29
  });
30
30
  const SvgCheckbox = () => (_jsx(SvgIcon, { children: _jsx("path", { d: "M20.41,3C21.8,5.71 22.35,8.84 22,12C21.8,15.16 20.7,18.29 18.83,21L17.3,20C18.91,17.57 19.85,14.8 20,12C20.34,9.2 19.89,6.43 18.7,4L20.41,3M5.17,3L6.7,4C5.09,6.43 4.15,9.2 4,12C3.66,14.8 4.12,17.57 5.3,20L3.61,21C2.21,18.29 1.65,15.17 2,12C2.2,8.84 3.3,5.71 5.17,3M12.08,10.68L14.4,7.45H16.93L13.15,12.45L15.35,17.37H13.09L11.71,14L9.28,17.33H6.76L10.66,12.21L8.53,7.45H10.8L12.08,10.68Z" }) }));
31
- const IntegerEditor = observer(function ({ slot, }) {
31
+ const IntegerEditor = observer(function IntegerEditor({ slot, }) {
32
32
  const [val, setVal] = useState(slot.value);
33
33
  useEffect(() => {
34
34
  const num = Number.parseInt(val, 10);
@@ -40,18 +40,17 @@ const IntegerEditor = observer(function ({ slot, }) {
40
40
  setVal(evt.target.value);
41
41
  } }));
42
42
  });
43
- const StringEnumEditor = observer(function ({ slot, slotSchema, }) {
43
+ const StringEnumEditor = observer(function StringEnumEditor({ slot, slotSchema, }) {
44
44
  const p = getPropertyMembers(getSubType(slotSchema));
45
45
  const choices = getUnionSubTypes(getUnionSubTypes(getSubType(p.properties.value))[1]).map(t => t.value);
46
46
  return (_jsx(ConfigurationTextField, { value: slot.value, label: slot.name, select: true, helperText: slot.description, onChange: evt => {
47
47
  slot.set(evt.target.value);
48
48
  }, children: choices.map(str => (_jsx(MenuItem, { value: str, children: str }, str))) }));
49
49
  });
50
- const FileSelectorWrapper = observer(function ({ slot, }) {
51
- var _a;
50
+ const FileSelectorWrapper = observer(function FileSelectorWrapper({ slot, }) {
52
51
  return (_jsx(FileSelector, { location: slot.value, setLocation: location => {
53
52
  slot.set(location);
54
- }, name: slot.name, description: slot.description, rootModel: (_a = getEnv(slot).pluginManager) === null || _a === void 0 ? void 0 : _a.rootModel }));
53
+ }, name: slot.name, description: slot.description, rootModel: getEnv(slot).pluginManager.rootModel }));
55
54
  });
56
55
  const valueComponents = {
57
56
  string: StringEditor,
@@ -68,7 +67,7 @@ const valueComponents = {
68
67
  frozen: JsonEditor,
69
68
  configRelationships: JsonEditor,
70
69
  };
71
- const SlotEditor = observer(function ({ slot, slotSchema, }) {
70
+ const SlotEditor = observer(function SlotEditor({ slot, slotSchema, }) {
72
71
  const { classes } = useSlotEditorStyles();
73
72
  const { type } = slot;
74
73
  let ValueComponent = slot.isCallback
@@ -3,7 +3,7 @@ import { useState } from 'react';
3
3
  import DeleteIcon from '@mui/icons-material/Delete';
4
4
  import { Button, FormHelperText, IconButton, InputAdornment, InputLabel, List, ListItem, TextField, } from '@mui/material';
5
5
  import { observer } from 'mobx-react';
6
- const StringArrayEditor = observer(function ({ slot, }) {
6
+ const StringArrayEditor = observer(function StringArrayEditor({ slot, }) {
7
7
  const [value, setValue] = useState('');
8
8
  const [addNew, setAddNew] = useState(false);
9
9
  return (_jsxs(_Fragment, { children: [slot.name ? _jsx(InputLabel, { children: slot.name }) : null, _jsxs(List, { disablePadding: true, children: [slot.value.map((val, idx) => (_jsx(ListItem, { disableGutters: true, children: _jsx(TextField, { value: val, onChange: evt => {
@@ -1,17 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
3
4
  import AddIcon from '@mui/icons-material/Add';
4
5
  import DeleteIcon from '@mui/icons-material/Delete';
5
6
  import { Card, CardContent, CardHeader, FormHelperText, IconButton, InputAdornment, InputLabel, TextField, } from '@mui/material';
6
7
  import { observer } from 'mobx-react';
7
- import { makeStyles } from 'tss-react/mui';
8
- import StringArrayEditor from './StringArrayEditor';
8
+ import StringArrayEditor from "./StringArrayEditor.js";
9
9
  const useStyles = makeStyles()(theme => ({
10
10
  card: {
11
11
  marginTop: theme.spacing(1),
12
12
  },
13
13
  }));
14
- const StringArrayMapEditor = observer(function ({ slot, }) {
14
+ const StringArrayMapEditor = observer(function StringArrayMapEditor({ slot, }) {
15
15
  const { classes } = useStyles();
16
16
  const [value, setValue] = useState('');
17
17
  return (_jsxs(_Fragment, { children: [_jsx(InputLabel, { children: slot.name }), [...slot.value].map(([key, val]) => (_jsxs(Card, { raised: true, className: classes.card, children: [_jsx(CardHeader, { title: key, action: _jsx(IconButton, { onClick: () => {
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { MenuItem, Paper, TextField } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
- import { useSlotEditorStyles } from './useSlotEditorStyles';
5
- const TypeSelector = observer(function ({ typeNameChoices, slot, slotName, onChange, }) {
4
+ import { useSlotEditorStyles } from "./useSlotEditorStyles.js";
5
+ const TypeSelector = observer(function TypeSelector({ typeNameChoices, slot, slotName, onChange, }) {
6
6
  const { classes } = useSlotEditorStyles();
7
7
  return (_jsx(Paper, { className: classes.paper, children: _jsx("div", { className: classes.paperContent, children: _jsx(TextField, { value: slot.type, label: "Type", select: true, helperText: `Type of ${slotName} to use`, fullWidth: true, onChange: onChange, children: typeNameChoices.map(str => (_jsx(MenuItem, { value: str, children: str }, str))) }) }) }));
8
8
  });
@@ -1,9 +1,10 @@
1
- export declare const useSlotEditorStyles: (params: void, muiStyleOverridesParams?: {
2
- props: Record<string, unknown>;
3
- ownerState?: Record<string, unknown> | undefined;
1
+ export declare const useSlotEditorStyles: (_params?: unknown, muiStyleOverridesParams?: {
2
+ props: {
3
+ classes?: Record<string, string>;
4
+ };
4
5
  } | undefined) => {
5
6
  classes: Record<"paper" | "paperContent" | "slotModeSwitch", string>;
6
7
  theme: import("@mui/material").Theme;
7
- css: import("tss-react/types").Css;
8
- cx: import("tss-react/types").Cx;
8
+ css: import("node_modules/@jbrowse/core/src/util/tss-react/types").Css;
9
+ cx: import("node_modules/@jbrowse/core/src/util/tss-react/types").Cx;
9
10
  };
@@ -1,4 +1,4 @@
1
- import { makeStyles } from 'tss-react/mui';
1
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
2
2
  export const useSlotEditorStyles = makeStyles()(theme => ({
3
3
  paper: {
4
4
  display: 'flex',
@@ -1,10 +1,10 @@
1
1
  import { lazy } from 'react';
2
2
  import { ConfigurationSchema } from '@jbrowse/core/configuration';
3
3
  import { WidgetType } from '@jbrowse/core/pluggableElementTypes';
4
- import HeadingComponent from './components/HeadingComponent';
5
- import stateModelFactory from './model';
4
+ import HeadingComponent from "./components/HeadingComponent.js";
5
+ import stateModelFactory from "./model.js";
6
6
  const configSchema = ConfigurationSchema('ConfigurationEditorWidget', {});
7
- const LazyConfigurationEditorComponent = lazy(() => import('./components/ConfigurationEditor'));
7
+ const LazyConfigurationEditorComponent = lazy(() => import("./components/ConfigurationEditor.js"));
8
8
  export default function registerConfigurationEditorWidget(pluginManager) {
9
9
  pluginManager.addWidgetType(() => {
10
10
  return new WidgetType({
@@ -1,8 +1,11 @@
1
1
  import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
3
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- type: import("mobx-state-tree").ISimpleType<"ConfigurationEditorWidget">;
5
- target: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyModelType>>;
2
+ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
+ export default function stateModelFactory(_pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{
4
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
5
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<"ConfigurationEditorWidget">;
6
6
  }, {
7
- setTarget(newTarget: any): void;
8
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
7
+ target: AnyConfigurationModel | undefined;
8
+ } & {
9
+ setTarget(newTarget: AnyConfigurationModel | undefined): void;
10
+ afterCreate(): void;
11
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
@@ -1,15 +1,32 @@
1
+ import { getSession } from '@jbrowse/core/util';
1
2
  import { ElementId } from '@jbrowse/core/util/types/mst';
2
- import { types } from 'mobx-state-tree';
3
- export default function stateModelFactory(pluginManager) {
3
+ import { addDisposer, getSnapshot, types } from '@jbrowse/mobx-state-tree';
4
+ import { autorun } from 'mobx';
5
+ export default function stateModelFactory(_pluginManager) {
4
6
  return types
5
7
  .model('ConfigurationEditorWidget', {
6
8
  id: ElementId,
7
9
  type: types.literal('ConfigurationEditorWidget'),
8
- target: types.safeReference(pluginManager.pluggableConfigSchemaType('track')),
9
10
  })
11
+ .volatile(() => ({
12
+ target: undefined,
13
+ }))
10
14
  .actions(self => ({
11
15
  setTarget(newTarget) {
12
16
  self.target = newTarget;
13
17
  },
18
+ afterCreate() {
19
+ let timeout;
20
+ addDisposer(self, autorun(() => {
21
+ if (self.target) {
22
+ const snapshot = getSnapshot(self.target);
23
+ clearTimeout(timeout);
24
+ timeout = setTimeout(() => {
25
+ const session = getSession(self);
26
+ session.jbrowse.updateTrackConf(snapshot);
27
+ }, 400);
28
+ }
29
+ }));
30
+ },
14
31
  }));
15
32
  }
@@ -20,6 +20,7 @@ export function makeFeatures(fdata) {
20
20
  return features;
21
21
  }
22
22
  export default class FromConfigAdapter extends BaseFeatureDataAdapter {
23
+ features;
23
24
  constructor(conf, getSubAdapter, pluginManager) {
24
25
  super(conf, getSubAdapter, pluginManager);
25
26
  const feats = readConfObject(conf, 'features');
@@ -1,7 +1,7 @@
1
- declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
1
+ declare const configSchema: import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaType<{
2
2
  features: {
3
3
  type: string;
4
4
  defaultValue: never[];
5
5
  };
6
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
6
+ }, import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
7
7
  export default configSchema;
@@ -1,10 +1,10 @@
1
1
  import { AdapterType } from '@jbrowse/core/pluggableElementTypes';
2
- import configSchema from './configSchema';
2
+ import configSchema from "./configSchema.js";
3
3
  export default function FromConfigAdapterF(pluginManager) {
4
4
  pluginManager.addAdapterType(() => new AdapterType({
5
5
  name: 'FromConfigAdapter',
6
6
  configSchema,
7
- getAdapterClass: () => import('./FromConfigAdapter').then(r => r.default),
7
+ getAdapterClass: () => import("./FromConfigAdapter.js").then(r => r.default),
8
8
  adapterMetadata: {
9
9
  hiddenFromGUI: true,
10
10
  },
@@ -1,7 +1,8 @@
1
1
  import { readConfObject } from '@jbrowse/core/configuration';
2
2
  import { BaseAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
3
- import { makeFeatures } from '../FromConfigAdapter/FromConfigAdapter';
3
+ import { makeFeatures } from "../FromConfigAdapter/FromConfigAdapter.js";
4
4
  export default class FromConfigRegionsAdapter extends BaseAdapter {
5
+ features;
5
6
  constructor(config, getSubAdapter, pluginManager) {
6
7
  super(config, getSubAdapter, pluginManager);
7
8
  const f = readConfObject(config, 'features');
@@ -1,7 +1,7 @@
1
- declare const regionsConfigSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
1
+ declare const regionsConfigSchema: import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaType<{
2
2
  features: {
3
3
  type: string;
4
4
  defaultValue: never[];
5
5
  };
6
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
6
+ }, import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
7
7
  export default regionsConfigSchema;
@@ -1,10 +1,10 @@
1
1
  import { AdapterType } from '@jbrowse/core/pluggableElementTypes';
2
- import configSchema from './configSchema';
2
+ import configSchema from "./configSchema.js";
3
3
  export default function FromConfigRegionsAdapterF(pluginManager) {
4
4
  pluginManager.addAdapterType(() => new AdapterType({
5
5
  name: 'FromConfigRegionsAdapter',
6
6
  configSchema,
7
- getAdapterClass: () => import('./FromConfigRegionsAdapter').then(r => r.default),
7
+ getAdapterClass: () => import("./FromConfigRegionsAdapter.js").then(r => r.default),
8
8
  adapterMetadata: {
9
9
  hiddenFromGUI: true,
10
10
  },
@@ -1,4 +1,4 @@
1
- import FromConfigAdapter from '../FromConfigAdapter/FromConfigAdapter';
1
+ import FromConfigAdapter from '../FromConfigAdapter/FromConfigAdapter.ts';
2
2
  import type { RegionsAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
3
3
  import type { Feature } from '@jbrowse/core/util/simpleFeature';
4
4
  import type { NoAssemblyRegion } from '@jbrowse/core/util/types';
@@ -2,7 +2,7 @@ import { ObservableCreate } from '@jbrowse/core/util/rxjs';
2
2
  import SimpleFeature from '@jbrowse/core/util/simpleFeature';
3
3
  import { firstValueFrom } from 'rxjs';
4
4
  import { toArray } from 'rxjs/operators';
5
- import FromConfigAdapter from '../FromConfigAdapter/FromConfigAdapter';
5
+ import FromConfigAdapter from "../FromConfigAdapter/FromConfigAdapter.js";
6
6
  export default class FromConfigSequenceAdapter extends FromConfigAdapter {
7
7
  getFeatures(region) {
8
8
  return ObservableCreate(async (observer) => {
@@ -1,7 +1,7 @@
1
- declare const sequenceConfigSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
1
+ declare const sequenceConfigSchema: import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaType<{
2
2
  features: {
3
3
  type: string;
4
4
  defaultValue: never[];
5
5
  };
6
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
6
+ }, import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
7
7
  export default sequenceConfigSchema;
@@ -1,10 +1,10 @@
1
1
  import { AdapterType } from '@jbrowse/core/pluggableElementTypes';
2
- import configSchema from './configSchema';
2
+ import configSchema from "./configSchema.js";
3
3
  export default function FromConfigSequenceAdapterF(pluginManager) {
4
4
  pluginManager.addAdapterType(() => new AdapterType({
5
5
  name: 'FromConfigSequenceAdapter',
6
6
  configSchema,
7
- getAdapterClass: () => import('./FromConfigSequenceAdapter').then(r => r.default),
7
+ getAdapterClass: () => import("./FromConfigSequenceAdapter.js").then(r => r.default),
8
8
  adapterMetadata: {
9
9
  hiddenFromGUI: true,
10
10
  },
@@ -1,4 +1,4 @@
1
- declare const NcbiSequenceReportAliasAdapterConfigSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
1
+ declare const NcbiSequenceReportAliasAdapterConfigSchema: import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaType<{
2
2
  location: {
3
3
  type: string;
4
4
  defaultValue: {
@@ -11,5 +11,5 @@ declare const NcbiSequenceReportAliasAdapterConfigSchema: import("@jbrowse/core/
11
11
  defaultValue: boolean;
12
12
  description: string;
13
13
  };
14
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
14
+ }, import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
15
15
  export default NcbiSequenceReportAliasAdapterConfigSchema;
@@ -1,11 +1,11 @@
1
1
  import { AdapterType } from '@jbrowse/core/pluggableElementTypes';
2
- import configSchema from './configSchema';
2
+ import configSchema from "./configSchema.js";
3
3
  export default function NcbiSequenceReportAliasAdapterF(pluginManager) {
4
4
  pluginManager.addAdapterType(() => {
5
5
  return new AdapterType({
6
6
  name: 'NcbiSequenceReportAliasAdapter',
7
7
  configSchema,
8
- getAdapterClass: () => import('./NcbiSequenceReportAliasAdapter').then(r => r.default),
8
+ getAdapterClass: () => import("./NcbiSequenceReportAliasAdapter.js").then(r => r.default),
9
9
  adapterMetadata: {
10
10
  hiddenFromGUI: true,
11
11
  },