@jbrowse/plugin-config 2.1.0 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConfigurationEditorWidget/components/CallbackEditor.js +27 -44
- package/dist/ConfigurationEditorWidget/components/CallbackEditor.js.map +1 -1
- package/dist/ConfigurationEditorWidget/components/ColorEditor.js +11 -38
- package/dist/ConfigurationEditorWidget/components/ColorEditor.js.map +1 -1
- package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.js +32 -73
- package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.js.map +1 -1
- package/dist/ConfigurationEditorWidget/components/JsonEditor.js +19 -36
- package/dist/ConfigurationEditorWidget/components/JsonEditor.js.map +1 -1
- package/dist/ConfigurationEditorWidget/components/SlotEditor.js +87 -142
- package/dist/ConfigurationEditorWidget/components/SlotEditor.js.map +1 -1
- package/dist/ConfigurationEditorWidget/components/StringArrayEditor.js +15 -32
- package/dist/ConfigurationEditorWidget/components/StringArrayEditor.js.map +1 -1
- package/dist/ConfigurationEditorWidget/components/TypeSelector.js +7 -8
- package/dist/ConfigurationEditorWidget/components/TypeSelector.js.map +1 -1
- package/dist/ConfigurationEditorWidget/index.js +8 -9
- package/dist/ConfigurationEditorWidget/index.js.map +1 -1
- package/dist/ConfigurationEditorWidget/model.js +16 -18
- package/dist/ConfigurationEditorWidget/model.js.map +1 -1
- package/dist/FromConfigAdapter/FromConfigAdapter.js +44 -158
- package/dist/FromConfigAdapter/FromConfigAdapter.js.map +1 -1
- package/dist/FromConfigAdapter/FromConfigRegionsAdapter.js +37 -144
- package/dist/FromConfigAdapter/FromConfigRegionsAdapter.js.map +1 -1
- package/dist/FromConfigAdapter/FromConfigSequenceAdapter.js +48 -171
- package/dist/FromConfigAdapter/FromConfigSequenceAdapter.js.map +1 -1
- package/dist/FromConfigAdapter/configSchema.js +1 -1
- package/dist/FromConfigAdapter/configSchema.js.map +1 -1
- package/dist/RefNameAliasAdapter/RefNameAliasAdapter.js +22 -108
- package/dist/RefNameAliasAdapter/RefNameAliasAdapter.js.map +1 -1
- package/dist/RefNameAliasAdapter/configSchema.js +1 -1
- package/dist/RefNameAliasAdapter/configSchema.js.map +1 -1
- package/dist/index.js +60 -94
- package/dist/index.js.map +1 -1
- package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.js +1 -1
- package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.js.map +1 -1
- package/package.json +2 -3
- package/src/ConfigurationEditorWidget/components/ConfigurationEditor.tsx +1 -1
- package/src/ConfigurationEditorWidget/components/__snapshots__/ConfigurationEditor.test.tsx.snap +73 -76
|
@@ -22,47 +22,31 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
-
if (!m) return o;
|
|
28
|
-
var i = m.call(o), r, ar = [], e;
|
|
29
|
-
try {
|
|
30
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
-
}
|
|
32
|
-
catch (error) { e = { error: error }; }
|
|
33
|
-
finally {
|
|
34
|
-
try {
|
|
35
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
-
}
|
|
37
|
-
finally { if (e) throw e.error; }
|
|
38
|
-
}
|
|
39
|
-
return ar;
|
|
40
|
-
};
|
|
41
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
27
|
};
|
|
44
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const material_1 = require("@mui/material");
|
|
31
|
+
const util_1 = require("@jbrowse/core/util");
|
|
32
|
+
const jexlStrings_1 = require("@jbrowse/core/util/jexlStrings");
|
|
33
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
34
|
+
const mobx_react_1 = require("mobx-react");
|
|
35
|
+
const mui_1 = require("tss-react/mui");
|
|
52
36
|
// icons
|
|
53
|
-
|
|
37
|
+
const Help_1 = __importDefault(require("@mui/icons-material/Help"));
|
|
54
38
|
// Optimize by using system default fonts:
|
|
55
39
|
// https://css-tricks.com/snippets/css/font-stacks/
|
|
56
|
-
|
|
57
|
-
|
|
40
|
+
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';
|
|
41
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
58
42
|
callbackEditor: {
|
|
59
43
|
marginTop: '16px',
|
|
60
|
-
borderBottom:
|
|
44
|
+
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
61
45
|
width: '100%',
|
|
62
|
-
fontFamily
|
|
46
|
+
fontFamily,
|
|
63
47
|
},
|
|
64
48
|
textAreaFont: {
|
|
65
|
-
fontFamily
|
|
49
|
+
fontFamily,
|
|
66
50
|
},
|
|
67
51
|
callbackContainer: {
|
|
68
52
|
width: '100%',
|
|
@@ -72,19 +56,18 @@ var useStyles = (0, mui_1.makeStyles)()(function (theme) { return ({
|
|
|
72
56
|
color: 'red',
|
|
73
57
|
fontSize: '0.8em',
|
|
74
58
|
},
|
|
75
|
-
})
|
|
76
|
-
function CallbackEditor(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
(0, react_1.useEffect)(function () {
|
|
59
|
+
}));
|
|
60
|
+
function CallbackEditor({ slot, }) {
|
|
61
|
+
const { classes } = useStyles();
|
|
62
|
+
const [code, setCode] = (0, react_1.useState)(slot.value);
|
|
63
|
+
const [error, setCodeError] = (0, react_1.useState)();
|
|
64
|
+
const debouncedCode = (0, util_1.useDebounce)(code, 400);
|
|
65
|
+
(0, react_1.useEffect)(() => {
|
|
83
66
|
var _a;
|
|
84
67
|
try {
|
|
85
|
-
|
|
68
|
+
const jexlDebouncedCode = debouncedCode.startsWith('jexl:')
|
|
86
69
|
? debouncedCode
|
|
87
|
-
:
|
|
70
|
+
: `jexl:${debouncedCode}`;
|
|
88
71
|
if (jexlDebouncedCode === 'jexl:') {
|
|
89
72
|
throw new Error('Empty jexl expression is not valid');
|
|
90
73
|
}
|
|
@@ -93,16 +76,16 @@ function CallbackEditor(_a) {
|
|
|
93
76
|
setCodeError(undefined);
|
|
94
77
|
}
|
|
95
78
|
catch (e) {
|
|
96
|
-
console.error({ e
|
|
79
|
+
console.error({ e });
|
|
97
80
|
setCodeError(e);
|
|
98
81
|
}
|
|
99
82
|
}, [debouncedCode, slot]);
|
|
100
83
|
// if default value is a callback, will have to remove jexl:
|
|
101
84
|
// do this last
|
|
102
85
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
103
|
-
error ? react_1.default.createElement("p", { className: classes.error },
|
|
86
|
+
error ? react_1.default.createElement("p", { className: classes.error }, `${error}`) : null,
|
|
104
87
|
react_1.default.createElement("div", { className: classes.callbackContainer },
|
|
105
|
-
react_1.default.createElement(material_1.TextField, { multiline: true, className: classes.callbackEditor, value: code.startsWith('jexl:') ? code.split('jexl:')[1] : code, onChange:
|
|
88
|
+
react_1.default.createElement(material_1.TextField, { multiline: true, className: classes.callbackEditor, value: code.startsWith('jexl:') ? code.split('jexl:')[1] : code, onChange: event => setCode(event.target.value), style: { background: error ? '#fdd' : undefined }, InputProps: {
|
|
106
89
|
classes: {
|
|
107
90
|
input: classes.textAreaFont,
|
|
108
91
|
},
|
|
@@ -113,8 +96,8 @@ function CallbackEditor(_a) {
|
|
|
113
96
|
react_1.default.createElement("br", null),
|
|
114
97
|
" Names of available context items: ",
|
|
115
98
|
slot.contextVariable), arrow: true },
|
|
116
|
-
react_1.default.createElement(material_1.IconButton, { color: "primary", onClick:
|
|
117
|
-
|
|
99
|
+
react_1.default.createElement(material_1.IconButton, { color: "primary", onClick: () => {
|
|
100
|
+
const newWindow = window.open('https://github.com/TomFrost/Jexl', '_blank', 'noopener,noreferrer');
|
|
118
101
|
if (newWindow) {
|
|
119
102
|
newWindow.opener = null;
|
|
120
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallbackEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/CallbackEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CallbackEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/CallbackEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -33,41 +22,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
22
|
__setModuleDefault(result, mod);
|
|
34
23
|
return result;
|
|
35
24
|
};
|
|
36
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
-
if (!m) return o;
|
|
39
|
-
var i = m.call(o), r, ar = [], e;
|
|
40
|
-
try {
|
|
41
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
-
}
|
|
43
|
-
catch (error) { e = { error: error }; }
|
|
44
|
-
finally {
|
|
45
|
-
try {
|
|
46
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
-
}
|
|
48
|
-
finally { if (e) throw e.error; }
|
|
49
|
-
}
|
|
50
|
-
return ar;
|
|
51
|
-
};
|
|
52
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
26
|
exports.ColorSlot = void 0;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const mobx_react_1 = require("mobx-react");
|
|
29
|
+
const material_1 = require("@mui/material");
|
|
30
|
+
const ColorPicker = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@jbrowse/core/ui/ColorPicker'))));
|
|
31
|
+
const ColorSlot = (props) => {
|
|
32
|
+
const { value = '#000', label = '', TextFieldProps = {}, onChange } = props;
|
|
33
|
+
const [displayed, setDisplayed] = (0, react_1.useState)(false);
|
|
61
34
|
return (react_1.default.createElement("div", { style: { display: 'flex' } },
|
|
62
|
-
react_1.default.createElement(material_1.TextField,
|
|
35
|
+
react_1.default.createElement(material_1.TextField, { value: value, label: label, onClick: () => setDisplayed(!displayed), onChange: event => onChange(event.target.value), ...TextFieldProps }),
|
|
63
36
|
react_1.default.createElement("div", { style: { marginTop: 10 } },
|
|
64
37
|
react_1.default.createElement(react_1.default.Suspense, { fallback: react_1.default.createElement("div", null) },
|
|
65
|
-
react_1.default.createElement(ColorPicker, { color: value, onChange:
|
|
38
|
+
react_1.default.createElement(ColorPicker, { color: value, onChange: event => onChange(event) })))));
|
|
66
39
|
};
|
|
67
40
|
exports.ColorSlot = ColorSlot;
|
|
68
41
|
function ColorEditorSlot(props) {
|
|
69
|
-
|
|
70
|
-
return (react_1.default.createElement(exports.ColorSlot, { label: slot.name, value: slot.value, onChange:
|
|
42
|
+
const { slot } = props;
|
|
43
|
+
return (react_1.default.createElement(exports.ColorSlot, { label: slot.name, value: slot.value, onChange: color => slot.set(color), TextFieldProps: {
|
|
71
44
|
helperText: slot.description,
|
|
72
45
|
fullWidth: true,
|
|
73
46
|
} }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/ColorEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ColorEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/ColorEditor.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA6C;AAC7C,2CAAqC;AACrC,4CAAyC;AAEzC,MAAM,WAAW,GAAG,IAAA,YAAI,EAAC,GAAG,EAAE,mDAAQ,8BAA8B,GAAC,CAAC,CAAA;AAE/D,MAAM,SAAS,GAAG,CAAC,KAQzB,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAC3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAEjD,OAAO,CACL,uCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,8BAAC,oBAAS,IACR,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EACvC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAC3C,cAAc,GAClB;QACF,uCAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC3B,8BAAC,eAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,0CAAO;gBAC/B,8BAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAI,CAClD,CACb,CACF,CACP,CAAA;AACH,CAAC,CAAA;AA5BY,QAAA,SAAS,aA4BrB;AAED,SAAS,eAAe,CAAC,KAOxB;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACtB,OAAO,CACL,8BAAC,iBAAS,IACR,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAClC,cAAc,EAAE;YACd,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI;SAChB,GACD,CACH,CAAA;AACH,CAAC;AAED,kBAAe,IAAA,qBAAQ,EAAC,eAAe,CAAC,CAAA"}
|
|
@@ -1,57 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
-
if (!m) return o;
|
|
16
|
-
var i = m.call(o), r, ar = [], e;
|
|
17
|
-
try {
|
|
18
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
-
}
|
|
20
|
-
catch (error) { e = { error: error }; }
|
|
21
|
-
finally {
|
|
22
|
-
try {
|
|
23
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
-
}
|
|
25
|
-
finally { if (e) throw e.error; }
|
|
26
|
-
}
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
30
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
31
|
-
if (ar || !(i in from)) {
|
|
32
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
33
|
-
ar[i] = from[i];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
|
-
};
|
|
38
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
4
|
};
|
|
41
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
8
|
+
const material_1 = require("@mui/material");
|
|
9
|
+
const mui_1 = require("tss-react/mui");
|
|
10
|
+
const mobx_react_1 = require("mobx-react");
|
|
11
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
12
|
+
const pluralize_1 = require("pluralize");
|
|
49
13
|
// icons
|
|
50
|
-
|
|
14
|
+
const ExpandMore_1 = __importDefault(require("@mui/icons-material/ExpandMore"));
|
|
51
15
|
// locals
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
16
|
+
const SlotEditor_1 = __importDefault(require("./SlotEditor"));
|
|
17
|
+
const TypeSelector_1 = __importDefault(require("./TypeSelector"));
|
|
18
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
55
19
|
expandIcon: {
|
|
56
20
|
color: '#fff',
|
|
57
21
|
},
|
|
@@ -63,29 +27,29 @@ var useStyles = (0, mui_1.makeStyles)()(function (theme) { return ({
|
|
|
63
27
|
padding: theme.spacing(1),
|
|
64
28
|
},
|
|
65
29
|
accordion: {
|
|
66
|
-
border:
|
|
30
|
+
border: `1px solid ${theme.palette.text.primary}`,
|
|
67
31
|
},
|
|
68
32
|
noOverflow: {
|
|
69
33
|
width: '100%',
|
|
70
34
|
overflowX: 'auto',
|
|
71
35
|
},
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
36
|
+
}));
|
|
37
|
+
const Member = (0, mobx_react_1.observer)((props) => {
|
|
38
|
+
const { classes } = useStyles();
|
|
39
|
+
const { slotName, slotSchema, schema, slot = schema[slotName], path = [], } = props;
|
|
40
|
+
let typeSelector;
|
|
77
41
|
if ((0, configuration_1.isConfigurationSchemaType)(slotSchema)) {
|
|
78
42
|
if (slot.length) {
|
|
79
|
-
return slot.map(
|
|
80
|
-
|
|
81
|
-
return react_1.default.createElement(Member,
|
|
43
|
+
return slot.map((subslot, slotIndex) => {
|
|
44
|
+
const key = `${(0, pluralize_1.singular)(slotName)} ${slotIndex + 1}`;
|
|
45
|
+
return react_1.default.createElement(Member, { ...props, key: key, slot: subslot, slotName: key });
|
|
82
46
|
});
|
|
83
47
|
}
|
|
84
48
|
// if this is an explicitly typed schema, make a type-selecting dropdown
|
|
85
49
|
// that can be used to change its type
|
|
86
|
-
|
|
50
|
+
const typeNameChoices = (0, configuration_1.getTypeNamesFromExplicitlyTypedUnion)(slotSchema);
|
|
87
51
|
if (typeNameChoices.length) {
|
|
88
|
-
typeSelector = (react_1.default.createElement(TypeSelector_1.default, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange:
|
|
52
|
+
typeSelector = (react_1.default.createElement(TypeSelector_1.default, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange: evt => {
|
|
89
53
|
if (evt.target.value !== slot.type) {
|
|
90
54
|
schema.setSubschema(slotName, { type: evt.target.value });
|
|
91
55
|
}
|
|
@@ -93,11 +57,11 @@ var Member = (0, mobx_react_1.observer)(function (props) {
|
|
|
93
57
|
}
|
|
94
58
|
return (react_1.default.createElement(material_1.Accordion, { defaultExpanded: true, className: classes.accordion },
|
|
95
59
|
react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
|
|
96
|
-
react_1.default.createElement(material_1.Typography, null,
|
|
60
|
+
react_1.default.createElement(material_1.Typography, null, [...path, slotName].join('➔'))),
|
|
97
61
|
react_1.default.createElement(material_1.AccordionDetails, { className: classes.expansionPanelDetails },
|
|
98
62
|
typeSelector,
|
|
99
63
|
react_1.default.createElement(material_1.FormGroup, { className: classes.noOverflow },
|
|
100
|
-
react_1.default.createElement(Schema, { schema: slot, path:
|
|
64
|
+
react_1.default.createElement(Schema, { schema: slot, path: [...path, slotName] })))));
|
|
101
65
|
}
|
|
102
66
|
if ((0, configuration_1.isConfigurationSlotType)(slotSchema)) {
|
|
103
67
|
// this is a regular config slot
|
|
@@ -105,23 +69,18 @@ var Member = (0, mobx_react_1.observer)(function (props) {
|
|
|
105
69
|
}
|
|
106
70
|
return null;
|
|
107
71
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, Object.entries(properties).map(function (_a) {
|
|
112
|
-
var _b = __read(_a, 2), slotName = _b[0], slotSchema = _b[1];
|
|
113
|
-
return (react_1.default.createElement(Member, { key: slotName, slotName: slotName, slotSchema: slotSchema, path: path, schema: schema }));
|
|
114
|
-
})));
|
|
72
|
+
const Schema = (0, mobx_react_1.observer)(({ schema, path = [], }) => {
|
|
73
|
+
const properties = (0, mobx_state_tree_1.getMembers)(schema).properties;
|
|
74
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, Object.entries(properties).map(([slotName, slotSchema]) => (react_1.default.createElement(Member, { key: slotName, slotName: slotName, slotSchema: slotSchema, path: path, schema: schema })))));
|
|
115
75
|
});
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var classes = useStyles().classes;
|
|
76
|
+
const ConfigurationEditor = (0, mobx_react_1.observer)(({ model }) => {
|
|
77
|
+
const { classes } = useStyles();
|
|
119
78
|
// key forces a re-render, otherwise the same field can end up being used
|
|
120
79
|
// for different tracks since only the backing model changes for example
|
|
121
80
|
// see pr #804
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
81
|
+
const { target } = model;
|
|
82
|
+
const key = target && (0, configuration_1.readConfObject)(target, 'trackId');
|
|
83
|
+
const name = target && (0, configuration_1.readConfObject)(target, 'name');
|
|
125
84
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
126
85
|
react_1.default.createElement(material_1.Accordion, { key: key, defaultExpanded: true, className: classes.accordion },
|
|
127
86
|
react_1.default.createElement(material_1.AccordionSummary, { expandIcon: react_1.default.createElement(ExpandMore_1.default, { className: classes.expandIcon }) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigurationEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/ConfigurationEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigurationEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/ConfigurationEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,39 +22,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
-
if (!m) return o;
|
|
28
|
-
var i = m.call(o), r, ar = [], e;
|
|
29
|
-
try {
|
|
30
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
-
}
|
|
32
|
-
catch (error) { e = { error: error }; }
|
|
33
|
-
finally {
|
|
34
|
-
try {
|
|
35
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
-
}
|
|
37
|
-
finally { if (e) throw e.error; }
|
|
38
|
-
}
|
|
39
|
-
return ar;
|
|
40
|
-
};
|
|
41
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const material_1 = require("@mui/material");
|
|
28
|
+
const mui_1 = require("tss-react/mui");
|
|
29
|
+
const mobx_react_1 = require("mobx-react");
|
|
46
30
|
// fontSize and fontFamily have to match between Editor and SyntaxHighlighter
|
|
47
|
-
|
|
31
|
+
const fontSize = '12px';
|
|
48
32
|
// Optimize by using system default fonts: https://css-tricks.com/snippets/css/font-stacks/
|
|
49
|
-
|
|
50
|
-
|
|
33
|
+
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';
|
|
34
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
51
35
|
error: {
|
|
52
36
|
color: 'red',
|
|
53
37
|
fontSize: '0.8em',
|
|
54
38
|
},
|
|
55
39
|
callbackEditor: {
|
|
56
|
-
fontFamily
|
|
57
|
-
fontSize
|
|
40
|
+
fontFamily,
|
|
41
|
+
fontSize,
|
|
58
42
|
background: theme.palette.background.default,
|
|
59
43
|
width: 800,
|
|
60
44
|
marginTop: '16px',
|
|
@@ -65,29 +49,28 @@ var useStyles = (0, mui_1.makeStyles)()(function (theme) { return ({
|
|
|
65
49
|
overflowX: 'auto',
|
|
66
50
|
},
|
|
67
51
|
textAreaFont: {
|
|
68
|
-
fontFamily
|
|
52
|
+
fontFamily,
|
|
69
53
|
},
|
|
70
|
-
})
|
|
71
|
-
function JsonEditor(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
(0, react_1.useEffect)(function () {
|
|
54
|
+
}));
|
|
55
|
+
function JsonEditor({ slot, }) {
|
|
56
|
+
const { classes } = useStyles();
|
|
57
|
+
const [contents, setContents] = (0, react_1.useState)(JSON.stringify(slot.value, null, 2));
|
|
58
|
+
const [error, setError] = (0, react_1.useState)();
|
|
59
|
+
(0, react_1.useEffect)(() => {
|
|
77
60
|
try {
|
|
78
61
|
setError(undefined);
|
|
79
62
|
slot.set(JSON.parse(contents));
|
|
80
63
|
}
|
|
81
64
|
catch (e) {
|
|
82
|
-
console.error({ e
|
|
65
|
+
console.error({ e });
|
|
83
66
|
setError(e);
|
|
84
67
|
}
|
|
85
68
|
}, [contents, slot]);
|
|
86
69
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
87
|
-
error ? react_1.default.createElement("p", { className: classes.error },
|
|
70
|
+
error ? react_1.default.createElement("p", { className: classes.error }, `${error}`) : null,
|
|
88
71
|
react_1.default.createElement("div", { className: classes.callbackContainer },
|
|
89
72
|
react_1.default.createElement(material_1.InputLabel, { shrink: true, htmlFor: "json-editor" }, slot.name),
|
|
90
|
-
react_1.default.createElement(material_1.TextField, { id: "json-editor", className: classes.callbackEditor, value: contents, helperText: slot.description, multiline: true, onChange:
|
|
73
|
+
react_1.default.createElement(material_1.TextField, { id: "json-editor", className: classes.callbackEditor, value: contents, helperText: slot.description, multiline: true, onChange: event => setContents(event.target.value), style: { background: error ? '#fdd' : undefined }, InputProps: {
|
|
91
74
|
classes: {
|
|
92
75
|
input: classes.textAreaFont,
|
|
93
76
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/JsonEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JsonEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/JsonEditor.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAkD;AAClD,4CAAqD;AACrD,uCAA0C;AAC1C,2CAAqC;AAErC,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,MAAM,CAAA;AACvB,2FAA2F;AAC3F,MAAM,UAAU,GACd,sNAAsN,CAAA;AAExN,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;KAClB;IACD,cAAc,EAAE;QACd,UAAU;QACV,QAAQ;QACR,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;QAC5C,KAAK,EAAE,GAAG;QACV,SAAS,EAAE,MAAM;QACjB,MAAM,EAAE,4BAA4B;KACrC;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,MAAM;KAClB;IACD,YAAY,EAAE;QACZ,UAAU;KACX;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,UAAU,CAAC,EAClB,IAAI,GAQL;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAW,CAAA;IAE7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI;YACF,QAAQ,CAAC,SAAS,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACpB,QAAQ,CAAC,CAAC,CAAC,CAAA;SACZ;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IAEpB,OAAO,CACL;QACG,KAAK,CAAC,CAAC,CAAC,qCAAG,SAAS,EAAE,OAAO,CAAC,KAAK,IAAG,GAAG,KAAK,EAAE,CAAK,CAAC,CAAC,CAAC,IAAI;QAC7D,uCAAK,SAAS,EAAE,OAAO,CAAC,iBAAiB;YACvC,8BAAC,qBAAU,IAAC,MAAM,QAAC,OAAO,EAAC,aAAa,IACrC,IAAI,CAAC,IAAI,CACC;YACb,8BAAC,oBAAS,IACR,EAAE,EAAC,aAAa,EAChB,SAAS,EAAE,OAAO,CAAC,cAAc,EACjC,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,SAAS,QACT,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAClD,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,EACjD,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,KAAK,EAAE,OAAO,CAAC,YAAY;qBAC5B;iBACF,GACD,CACE,CACL,CACJ,CAAA;AACH,CAAC;AAED,kBAAe,IAAA,qBAAQ,EAAC,UAAU,CAAC,CAAA"}
|