@jbrowse/plugin-config 1.7.11 → 2.1.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 (133) hide show
  1. package/dist/ConfigurationEditorWidget/components/CallbackEditor.d.ts +10 -7
  2. package/dist/ConfigurationEditorWidget/components/CallbackEditor.js +117 -115
  3. package/dist/ConfigurationEditorWidget/components/CallbackEditor.js.map +1 -0
  4. package/dist/ConfigurationEditorWidget/components/ColorEditor.d.ts +9 -33
  5. package/dist/ConfigurationEditorWidget/components/ColorEditor.js +68 -117
  6. package/dist/ConfigurationEditorWidget/components/ColorEditor.js.map +1 -0
  7. package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.d.ts +7 -3
  8. package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.js +117 -160
  9. package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.js.map +1 -0
  10. package/dist/ConfigurationEditorWidget/components/JsonEditor.d.ts +9 -7
  11. package/dist/ConfigurationEditorWidget/components/JsonEditor.js +92 -77
  12. package/dist/ConfigurationEditorWidget/components/JsonEditor.js.map +1 -0
  13. package/dist/ConfigurationEditorWidget/components/SlotEditor.d.ts +17 -5
  14. package/dist/ConfigurationEditorWidget/components/SlotEditor.js +240 -374
  15. package/dist/ConfigurationEditorWidget/components/SlotEditor.js.map +1 -0
  16. package/dist/ConfigurationEditorWidget/components/StringArrayEditor.js +76 -105
  17. package/dist/ConfigurationEditorWidget/components/StringArrayEditor.js.map +1 -0
  18. package/dist/ConfigurationEditorWidget/components/TypeSelector.d.ts +8 -6
  19. package/dist/ConfigurationEditorWidget/components/TypeSelector.js +16 -46
  20. package/dist/ConfigurationEditorWidget/components/TypeSelector.js.map +1 -0
  21. package/dist/ConfigurationEditorWidget/index.d.ts +10 -3
  22. package/dist/ConfigurationEditorWidget/index.js +26 -42
  23. package/dist/ConfigurationEditorWidget/index.js.map +1 -0
  24. package/dist/ConfigurationEditorWidget/model.d.ts +3 -2
  25. package/dist/ConfigurationEditorWidget/model.js +19 -26
  26. package/dist/ConfigurationEditorWidget/model.js.map +1 -0
  27. package/dist/FromConfigAdapter/FromConfigAdapter.js +172 -204
  28. package/dist/FromConfigAdapter/FromConfigAdapter.js.map +1 -0
  29. package/dist/FromConfigAdapter/FromConfigRegionsAdapter.js +151 -142
  30. package/dist/FromConfigAdapter/FromConfigRegionsAdapter.js.map +1 -0
  31. package/dist/FromConfigAdapter/FromConfigSequenceAdapter.d.ts +2 -1
  32. package/dist/FromConfigAdapter/FromConfigSequenceAdapter.js +174 -181
  33. package/dist/FromConfigAdapter/FromConfigSequenceAdapter.js.map +1 -0
  34. package/dist/FromConfigAdapter/configSchema.js +33 -49
  35. package/dist/FromConfigAdapter/configSchema.js.map +1 -0
  36. package/dist/FromConfigAdapter/index.js +16 -50
  37. package/dist/FromConfigAdapter/index.js.map +1 -0
  38. package/dist/RefNameAliasAdapter/RefNameAliasAdapter.js +111 -125
  39. package/dist/RefNameAliasAdapter/RefNameAliasAdapter.js.map +1 -0
  40. package/dist/RefNameAliasAdapter/configSchema.js +16 -25
  41. package/dist/RefNameAliasAdapter/configSchema.js.map +1 -0
  42. package/dist/RefNameAliasAdapter/index.js +10 -22
  43. package/dist/RefNameAliasAdapter/index.js.map +1 -0
  44. package/dist/index.d.ts +9 -3
  45. package/dist/index.js +129 -144
  46. package/dist/index.js.map +1 -0
  47. package/esm/ConfigurationEditorWidget/components/CallbackEditor.d.ts +12 -0
  48. package/esm/ConfigurationEditorWidget/components/CallbackEditor.js +80 -0
  49. package/esm/ConfigurationEditorWidget/components/CallbackEditor.js.map +1 -0
  50. package/esm/ConfigurationEditorWidget/components/ColorEditor.d.ts +20 -0
  51. package/esm/ConfigurationEditorWidget/components/ColorEditor.js +22 -0
  52. package/esm/ConfigurationEditorWidget/components/ColorEditor.js.map +1 -0
  53. package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.d.ts +8 -0
  54. package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.js +87 -0
  55. package/esm/ConfigurationEditorWidget/components/ConfigurationEditor.js.map +1 -0
  56. package/esm/ConfigurationEditorWidget/components/JsonEditor.d.ts +11 -0
  57. package/esm/ConfigurationEditorWidget/components/JsonEditor.js +55 -0
  58. package/esm/ConfigurationEditorWidget/components/JsonEditor.js.map +1 -0
  59. package/esm/ConfigurationEditorWidget/components/SlotEditor.d.ts +18 -0
  60. package/esm/ConfigurationEditorWidget/components/SlotEditor.js +182 -0
  61. package/esm/ConfigurationEditorWidget/components/SlotEditor.js.map +1 -0
  62. package/esm/ConfigurationEditorWidget/components/StringArrayEditor.d.ts +12 -0
  63. package/esm/ConfigurationEditorWidget/components/StringArrayEditor.js +36 -0
  64. package/esm/ConfigurationEditorWidget/components/StringArrayEditor.js.map +1 -0
  65. package/esm/ConfigurationEditorWidget/components/TypeSelector.d.ts +9 -0
  66. package/esm/ConfigurationEditorWidget/components/TypeSelector.js +12 -0
  67. package/esm/ConfigurationEditorWidget/components/TypeSelector.js.map +1 -0
  68. package/esm/ConfigurationEditorWidget/index.d.ts +10 -0
  69. package/esm/ConfigurationEditorWidget/index.js +21 -0
  70. package/esm/ConfigurationEditorWidget/index.js.map +1 -0
  71. package/esm/ConfigurationEditorWidget/model.d.ts +9 -0
  72. package/esm/ConfigurationEditorWidget/model.js +17 -0
  73. package/esm/ConfigurationEditorWidget/model.js.map +1 -0
  74. package/esm/FromConfigAdapter/FromConfigAdapter.d.ts +24 -0
  75. package/esm/FromConfigAdapter/FromConfigAdapter.js +63 -0
  76. package/esm/FromConfigAdapter/FromConfigAdapter.js.map +1 -0
  77. package/esm/FromConfigAdapter/FromConfigRegionsAdapter.d.ts +23 -0
  78. package/esm/FromConfigAdapter/FromConfigRegionsAdapter.js +50 -0
  79. package/esm/FromConfigAdapter/FromConfigRegionsAdapter.js.map +1 -0
  80. package/esm/FromConfigAdapter/FromConfigSequenceAdapter.d.ts +26 -0
  81. package/esm/FromConfigAdapter/FromConfigSequenceAdapter.js +65 -0
  82. package/esm/FromConfigAdapter/FromConfigSequenceAdapter.js.map +1 -0
  83. package/esm/FromConfigAdapter/configSchema.d.ts +3 -0
  84. package/esm/FromConfigAdapter/configSchema.js +32 -0
  85. package/esm/FromConfigAdapter/configSchema.js.map +1 -0
  86. package/esm/FromConfigAdapter/index.d.ts +4 -0
  87. package/esm/FromConfigAdapter/index.js +5 -0
  88. package/esm/FromConfigAdapter/index.js.map +1 -0
  89. package/esm/RefNameAliasAdapter/RefNameAliasAdapter.d.ts +8 -0
  90. package/esm/RefNameAliasAdapter/RefNameAliasAdapter.js +24 -0
  91. package/esm/RefNameAliasAdapter/RefNameAliasAdapter.js.map +1 -0
  92. package/esm/RefNameAliasAdapter/configSchema.d.ts +2 -0
  93. package/esm/RefNameAliasAdapter/configSchema.js +15 -0
  94. package/esm/RefNameAliasAdapter/configSchema.js.map +1 -0
  95. package/esm/RefNameAliasAdapter/index.d.ts +2 -0
  96. package/esm/RefNameAliasAdapter/index.js +3 -0
  97. package/esm/RefNameAliasAdapter/index.js.map +1 -0
  98. package/esm/index.d.ts +18 -0
  99. package/esm/index.js +72 -0
  100. package/esm/index.js.map +1 -0
  101. package/package.json +21 -15
  102. package/src/ConfigurationEditorWidget/components/CallbackEditor.tsx +126 -0
  103. package/src/ConfigurationEditorWidget/components/ColorEditor.tsx +13 -60
  104. package/src/ConfigurationEditorWidget/components/{ConfigurationEditor.test.js → ConfigurationEditor.test.tsx} +0 -0
  105. package/src/ConfigurationEditorWidget/components/ConfigurationEditor.tsx +173 -0
  106. package/src/ConfigurationEditorWidget/components/JsonEditor.tsx +84 -0
  107. package/src/ConfigurationEditorWidget/components/SlotEditor.tsx +484 -0
  108. package/src/ConfigurationEditorWidget/components/StringArrayEditor.tsx +2 -2
  109. package/src/ConfigurationEditorWidget/components/{TypeSelector.js → TypeSelector.tsx} +15 -7
  110. package/src/ConfigurationEditorWidget/components/__snapshots__/ConfigurationEditor.test.tsx.snap +2024 -0
  111. package/src/ConfigurationEditorWidget/index.tsx +25 -0
  112. package/src/ConfigurationEditorWidget/{model.js → model.ts} +4 -2
  113. package/src/FromConfigAdapter/FromConfigSequenceAdapter.ts +6 -10
  114. package/src/index.ts +20 -14
  115. package/dist/ConfigurationEditorWidget/components/CodeEditor.d.ts +0 -4
  116. package/dist/ConfigurationEditorWidget/components/CodeEditor.js +0 -80
  117. package/dist/ConfigurationEditorWidget/components/ColorEditor.test.js +0 -31
  118. package/dist/ConfigurationEditorWidget/components/ColorPicker.d.ts +0 -14
  119. package/dist/ConfigurationEditorWidget/components/ColorPicker.js +0 -72
  120. package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.test.js +0 -121
  121. package/dist/FromConfigAdapter/FromConfigAdapter.test.js +0 -100
  122. package/dist/FromConfigAdapter/FromConfigRegionsAdapter.test.js +0 -200
  123. package/dist/FromConfigAdapter/FromConfigSequenceAdapter.test.js +0 -110
  124. package/dist/RefNameAliasAdapter/RefNameAliasAdapter.test.js +0 -41
  125. package/dist/index.test.js +0 -41
  126. package/src/ConfigurationEditorWidget/components/CallbackEditor.js +0 -112
  127. package/src/ConfigurationEditorWidget/components/CodeEditor.js +0 -60
  128. package/src/ConfigurationEditorWidget/components/ColorPicker.tsx +0 -52
  129. package/src/ConfigurationEditorWidget/components/ConfigurationEditor.js +0 -154
  130. package/src/ConfigurationEditorWidget/components/JsonEditor.js +0 -56
  131. package/src/ConfigurationEditorWidget/components/SlotEditor.js +0 -377
  132. package/src/ConfigurationEditorWidget/components/__snapshots__/ConfigurationEditor.test.js.snap +0 -1753
  133. package/src/ConfigurationEditorWidget/index.js +0 -20
package/dist/index.js CHANGED
@@ -1,152 +1,137 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.ConfigurationEditor = void 0;
9
- Object.defineProperty(exports, "JsonEditor", {
10
- enumerable: true,
11
- get: function get() {
12
- return _JsonEditor.default;
13
- }
14
- });
15
- exports.default = void 0;
16
-
17
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
18
-
19
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
20
-
21
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
22
-
23
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
24
-
25
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
26
-
27
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
28
-
29
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
30
-
31
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
32
-
33
- var _react = require("react");
34
-
35
- var _AdapterType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
36
-
37
- var _WidgetType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/WidgetType"));
38
-
39
- var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
40
-
41
- var _ConfigurationEditorWidget = require("./ConfigurationEditorWidget");
42
-
43
- var _FromConfigAdapter = require("./FromConfigAdapter");
44
-
45
- var _RefNameAliasAdapter = require("./RefNameAliasAdapter");
46
-
47
- var _JsonEditor = _interopRequireDefault(require("./ConfigurationEditorWidget/components/JsonEditor"));
48
-
49
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
50
-
51
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
52
-
53
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
54
-
55
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
56
-
57
- var ConfigurationEditorComponent = /*#__PURE__*/(0, _react.lazy)(function () {
58
- return Promise.resolve().then(function () {
59
- return _interopRequireWildcard(require('./ConfigurationEditorWidget/components/ConfigurationEditor'));
60
- });
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
61
32
  });
62
- exports.ConfigurationEditor = ConfigurationEditorComponent;
63
-
64
- var _default = /*#__PURE__*/function (_Plugin) {
65
- (0, _inherits2.default)(_default, _Plugin);
66
-
67
- var _super = _createSuper(_default);
68
-
69
- function _default() {
70
- var _this;
71
-
72
- (0, _classCallCheck2.default)(this, _default);
73
-
74
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
75
- args[_key] = arguments[_key];
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.ConfigurationEditor = exports.JsonEditor = void 0;
45
+ var react_1 = require("react");
46
+ var AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
47
+ var WidgetType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/WidgetType"));
48
+ var Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
49
+ var ConfigurationEditorWidget_1 = require("./ConfigurationEditorWidget");
50
+ var FromConfigAdapter_1 = require("./FromConfigAdapter");
51
+ var RefNameAliasAdapter_1 = require("./RefNameAliasAdapter");
52
+ var LazyConfigurationEditorComponent = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./ConfigurationEditorWidget/components/ConfigurationEditor')); }); });
53
+ exports.ConfigurationEditor = LazyConfigurationEditorComponent;
54
+ var default_1 = /** @class */ (function (_super) {
55
+ __extends(default_1, _super);
56
+ function default_1() {
57
+ var _this = _super !== null && _super.apply(this, arguments) || this;
58
+ _this.name = 'ConfigurationPlugin';
59
+ return _this;
76
60
  }
77
-
78
- _this = _super.call.apply(_super, [this].concat(args));
79
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "name", 'ConfigurationPlugin');
80
- return _this;
81
- }
82
-
83
- (0, _createClass2.default)(_default, [{
84
- key: "install",
85
- value: function install(pluginManager) {
86
- pluginManager.addAdapterType(function () {
87
- return new _AdapterType.default({
88
- name: 'FromConfigAdapter',
89
- configSchema: _FromConfigAdapter.configSchema,
90
- AdapterClass: _FromConfigAdapter.AdapterClass,
91
- adapterMetadata: {
92
- category: null,
93
- hiddenFromGUI: true,
94
- displayName: null,
95
- description: null
96
- }
61
+ default_1.prototype.install = function (pluginManager) {
62
+ pluginManager.addAdapterType(function () {
63
+ return new AdapterType_1.default({
64
+ name: 'FromConfigAdapter',
65
+ configSchema: FromConfigAdapter_1.configSchema,
66
+ getAdapterClass: function () {
67
+ return Promise.resolve().then(function () { return __importStar(require('./FromConfigAdapter/FromConfigAdapter')); }).then(function (r) { return r.default; });
68
+ },
69
+ adapterMetadata: {
70
+ category: null,
71
+ hiddenFromGUI: true,
72
+ displayName: null,
73
+ description: null,
74
+ },
75
+ });
97
76
  });
98
- });
99
- pluginManager.addAdapterType(function () {
100
- return new _AdapterType.default({
101
- name: 'FromConfigRegionsAdapter',
102
- configSchema: _FromConfigAdapter.regionsConfigSchema,
103
- AdapterClass: _FromConfigAdapter.RegionsAdapterClass,
104
- adapterMetadata: {
105
- category: null,
106
- hiddenFromGUI: true,
107
- displayName: null,
108
- description: null
109
- }
77
+ pluginManager.addAdapterType(function () {
78
+ return new AdapterType_1.default({
79
+ name: 'FromConfigRegionsAdapter',
80
+ configSchema: FromConfigAdapter_1.regionsConfigSchema,
81
+ getAdapterClass: function () {
82
+ return Promise.resolve().then(function () { return __importStar(require('./FromConfigAdapter/FromConfigRegionsAdapter')); }).then(function (r) { return r.default; });
83
+ },
84
+ adapterMetadata: {
85
+ category: null,
86
+ hiddenFromGUI: true,
87
+ displayName: null,
88
+ description: null,
89
+ },
90
+ });
110
91
  });
111
- });
112
- pluginManager.addAdapterType(function () {
113
- return new _AdapterType.default({
114
- name: 'FromConfigSequenceAdapter',
115
- configSchema: _FromConfigAdapter.sequenceConfigSchema,
116
- AdapterClass: _FromConfigAdapter.SequenceAdapterClass,
117
- adapterMetadata: {
118
- category: null,
119
- hiddenFromGUI: true,
120
- displayName: null,
121
- description: null
122
- }
92
+ pluginManager.addAdapterType(function () {
93
+ return new AdapterType_1.default({
94
+ name: 'FromConfigSequenceAdapter',
95
+ configSchema: FromConfigAdapter_1.sequenceConfigSchema,
96
+ getAdapterClass: function () {
97
+ return Promise.resolve().then(function () { return __importStar(require('./FromConfigAdapter/FromConfigSequenceAdapter')); }).then(function (r) { return r.default; });
98
+ },
99
+ adapterMetadata: {
100
+ category: null,
101
+ hiddenFromGUI: true,
102
+ displayName: null,
103
+ description: null,
104
+ },
105
+ });
123
106
  });
124
- });
125
- pluginManager.addAdapterType(function () {
126
- return new _AdapterType.default({
127
- name: 'RefNameAliasAdapter',
128
- configSchema: _RefNameAliasAdapter.configSchema,
129
- AdapterClass: _RefNameAliasAdapter.AdapterClass,
130
- adapterMetadata: {
131
- category: null,
132
- hiddenFromGUI: true,
133
- displayName: null,
134
- description: null
135
- }
107
+ pluginManager.addAdapterType(function () {
108
+ return new AdapterType_1.default({
109
+ name: 'RefNameAliasAdapter',
110
+ configSchema: RefNameAliasAdapter_1.configSchema,
111
+ getAdapterClass: function () {
112
+ return Promise.resolve().then(function () { return __importStar(require('./RefNameAliasAdapter/RefNameAliasAdapter')); }).then(function (r) { return r.default; });
113
+ },
114
+ adapterMetadata: {
115
+ category: null,
116
+ hiddenFromGUI: true,
117
+ displayName: null,
118
+ description: null,
119
+ },
120
+ });
136
121
  });
137
- });
138
- pluginManager.addWidgetType(function () {
139
- return new _WidgetType.default({
140
- name: 'ConfigurationEditorWidget',
141
- HeadingComponent: _ConfigurationEditorWidget.HeadingComponent,
142
- configSchema: _ConfigurationEditorWidget.configSchema,
143
- stateModel: (0, _ConfigurationEditorWidget.stateModelFactory)(pluginManager),
144
- ReactComponent: ConfigurationEditorComponent
122
+ pluginManager.addWidgetType(function () {
123
+ return new WidgetType_1.default({
124
+ name: 'ConfigurationEditorWidget',
125
+ HeadingComponent: ConfigurationEditorWidget_1.HeadingComponent,
126
+ configSchema: ConfigurationEditorWidget_1.configSchema,
127
+ stateModel: (0, ConfigurationEditorWidget_1.stateModelFactory)(pluginManager),
128
+ ReactComponent: LazyConfigurationEditorComponent,
129
+ });
145
130
  });
146
- });
147
- }
148
- }]);
149
- return _default;
150
- }(_Plugin2.default);
151
-
152
- exports.default = _default;
131
+ };
132
+ return default_1;
133
+ }(Plugin_1.default));
134
+ exports.default = default_1;
135
+ var JsonEditor_1 = require("./ConfigurationEditorWidget/components/JsonEditor");
136
+ Object.defineProperty(exports, "JsonEditor", { enumerable: true, get: function () { return __importDefault(JsonEditor_1).default; } });
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ declare function CallbackEditor({ slot, }: {
3
+ slot: {
4
+ set: (arg: string) => void;
5
+ description: string;
6
+ name: string;
7
+ value: string;
8
+ contextVariable: string;
9
+ };
10
+ }): JSX.Element;
11
+ declare const _default: typeof CallbackEditor;
12
+ export default _default;
@@ -0,0 +1,80 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Tooltip, IconButton, TextField } from '@mui/material';
3
+ import { useDebounce } from '@jbrowse/core/util';
4
+ import { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings';
5
+ import { getEnv } from 'mobx-state-tree';
6
+ import { observer } from 'mobx-react';
7
+ import { makeStyles } from 'tss-react/mui';
8
+ // icons
9
+ import HelpIcon from '@mui/icons-material/Help';
10
+ // Optimize by using system default fonts:
11
+ // https://css-tricks.com/snippets/css/font-stacks/
12
+ 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';
13
+ const useStyles = makeStyles()(theme => ({
14
+ callbackEditor: {
15
+ marginTop: '16px',
16
+ borderBottom: `1px solid ${theme.palette.divider}`,
17
+ width: '100%',
18
+ fontFamily,
19
+ },
20
+ textAreaFont: {
21
+ fontFamily,
22
+ },
23
+ callbackContainer: {
24
+ width: '100%',
25
+ overflowX: 'auto',
26
+ },
27
+ error: {
28
+ color: 'red',
29
+ fontSize: '0.8em',
30
+ },
31
+ }));
32
+ function CallbackEditor({ slot, }) {
33
+ const { classes } = useStyles();
34
+ const [code, setCode] = useState(slot.value);
35
+ const [error, setCodeError] = useState();
36
+ const debouncedCode = useDebounce(code, 400);
37
+ useEffect(() => {
38
+ var _a;
39
+ try {
40
+ const jexlDebouncedCode = debouncedCode.startsWith('jexl:')
41
+ ? debouncedCode
42
+ : `jexl:${debouncedCode}`;
43
+ if (jexlDebouncedCode === 'jexl:') {
44
+ throw new Error('Empty jexl expression is not valid');
45
+ }
46
+ stringToJexlExpression(jexlDebouncedCode, (_a = getEnv(slot).pluginManager) === null || _a === void 0 ? void 0 : _a.jexl);
47
+ slot.set(jexlDebouncedCode);
48
+ setCodeError(undefined);
49
+ }
50
+ catch (e) {
51
+ console.error({ e });
52
+ setCodeError(e);
53
+ }
54
+ }, [debouncedCode, slot]);
55
+ // if default value is a callback, will have to remove jexl:
56
+ // do this last
57
+ return (React.createElement(React.Fragment, null,
58
+ error ? React.createElement("p", { className: classes.error }, `${error}`) : null,
59
+ React.createElement("div", { className: classes.callbackContainer },
60
+ React.createElement(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: {
61
+ classes: {
62
+ input: classes.textAreaFont,
63
+ },
64
+ } }),
65
+ React.createElement("p", null, slot.description),
66
+ React.createElement(Tooltip, { title: React.createElement("div", null,
67
+ "Callbacks are written in Jexl format. Click to learn more.",
68
+ React.createElement("br", null),
69
+ " Names of available context items: ",
70
+ slot.contextVariable), arrow: true },
71
+ React.createElement(IconButton, { color: "primary", onClick: () => {
72
+ const newWindow = window.open('https://github.com/TomFrost/Jexl', '_blank', 'noopener,noreferrer');
73
+ if (newWindow) {
74
+ newWindow.opener = null;
75
+ }
76
+ } },
77
+ React.createElement(HelpIcon, null))))));
78
+ }
79
+ export default observer(CallbackEditor);
80
+ //# sourceMappingURL=CallbackEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallbackEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/CallbackEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,QAAQ;AACR,OAAO,QAAQ,MAAM,0BAA0B,CAAA;AAE/C,0CAA0C;AAC1C,mDAAmD;AACnD,MAAM,UAAU,GACd,sNAAsN,CAAA;AAExN,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,cAAc,EAAE;QACd,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;QAClD,KAAK,EAAE,MAAM;QACb,UAAU;KACX;IACD,YAAY,EAAE;QACZ,UAAU;KACX;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,MAAM;KAClB;IAED,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,cAAc,CAAC,EACtB,IAAI,GASL;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAE/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAW,CAAA;IACjD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAE5C,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI;YACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;gBACzD,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,QAAQ,aAAa,EAAE,CAAA;YAE3B,IAAI,iBAAiB,KAAK,OAAO,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;aACtD;YACD,sBAAsB,CACpB,iBAAiB,EACjB,MAAA,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,0CAAE,IAAI,CACjC,CAAA;YACD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAC3B,YAAY,CAAC,SAAS,CAAC,CAAA;SACxB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACpB,YAAY,CAAC,CAAC,CAAC,CAAA;SAChB;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;IAEzB,4DAA4D;IAC5D,eAAe;IACf,OAAO,CACL;QACG,KAAK,CAAC,CAAC,CAAC,2BAAG,SAAS,EAAE,OAAO,CAAC,KAAK,IAAG,GAAG,KAAK,EAAE,CAAK,CAAC,CAAC,CAAC,IAAI;QAC7D,6BAAK,SAAS,EAAE,OAAO,CAAC,iBAAiB;YACvC,oBAAC,SAAS,IACR,SAAS,QACT,SAAS,EAAE,OAAO,CAAC,cAAc,EACjC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAC/D,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,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;YAEF,+BAAI,IAAI,CAAC,WAAW,CAAK;YACzB,oBAAC,OAAO,IACN,KAAK,EACH;;oBAEE,+BAAM;;oBAAoC,IAAI,CAAC,eAAe,CAC1D,EAER,KAAK;gBAEL,oBAAC,UAAU,IACT,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;wBACZ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,kCAAkC,EAClC,QAAQ,EACR,qBAAqB,CACtB,CAAA;wBACD,IAAI,SAAS,EAAE;4BACb,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;yBACxB;oBACH,CAAC;oBAED,oBAAC,QAAQ,OAAG,CACD,CACL,CACN,CACL,CACJ,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,cAAc,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ /// <reference types="react" />
2
+ export declare const ColorSlot: (props: {
3
+ value: string;
4
+ label?: string | undefined;
5
+ TextFieldProps?: {
6
+ helperText: string;
7
+ fullWidth: boolean;
8
+ } | undefined;
9
+ onChange: (arg: string) => void;
10
+ }) => JSX.Element;
11
+ declare function ColorEditorSlot(props: {
12
+ slot: {
13
+ name: string;
14
+ value: string;
15
+ description: string;
16
+ set: (arg: string) => void;
17
+ };
18
+ }): JSX.Element;
19
+ declare const _default: typeof ColorEditorSlot;
20
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import React, { lazy, useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { TextField } from '@mui/material';
4
+ const ColorPicker = lazy(() => import('@jbrowse/core/ui/ColorPicker'));
5
+ export const ColorSlot = (props) => {
6
+ const { value = '#000', label = '', TextFieldProps = {}, onChange } = props;
7
+ const [displayed, setDisplayed] = useState(false);
8
+ return (React.createElement("div", { style: { display: 'flex' } },
9
+ React.createElement(TextField, { value: value, label: label, onClick: () => setDisplayed(!displayed), onChange: event => onChange(event.target.value), ...TextFieldProps }),
10
+ React.createElement("div", { style: { marginTop: 10 } },
11
+ React.createElement(React.Suspense, { fallback: React.createElement("div", null) },
12
+ React.createElement(ColorPicker, { color: value, onChange: event => onChange(event) })))));
13
+ };
14
+ function ColorEditorSlot(props) {
15
+ const { slot } = props;
16
+ return (React.createElement(ColorSlot, { label: slot.name, value: slot.value, onChange: color => slot.set(color), TextFieldProps: {
17
+ helperText: slot.description,
18
+ fullWidth: true,
19
+ } }));
20
+ }
21
+ export default observer(ColorEditorSlot);
22
+ //# sourceMappingURL=ColorEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/ColorEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAA;AAEtE,MAAM,CAAC,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,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,oBAAC,SAAS,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,6BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC3B,oBAAC,KAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,gCAAO;gBAC/B,oBAAC,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;AAED,SAAS,eAAe,CAAC,KAOxB;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACtB,OAAO,CACL,oBAAC,SAAS,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,eAAe,QAAQ,CAAC,eAAe,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
+ declare const ConfigurationEditor: ({ model }: {
4
+ model: {
5
+ target: AnyConfigurationModel;
6
+ };
7
+ }) => JSX.Element;
8
+ export default ConfigurationEditor;
@@ -0,0 +1,87 @@
1
+ import React from 'react';
2
+ import { readConfObject, getTypeNamesFromExplicitlyTypedUnion, isConfigurationSchemaType, isConfigurationSlotType, } from '@jbrowse/core/configuration';
3
+ import { FormGroup, Accordion, AccordionDetails, AccordionSummary, Typography, } from '@mui/material';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import { observer } from 'mobx-react';
6
+ import { getMembers } from 'mobx-state-tree';
7
+ import { singular } from 'pluralize';
8
+ // icons
9
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
10
+ // locals
11
+ import SlotEditor from './SlotEditor';
12
+ import TypeSelector from './TypeSelector';
13
+ const useStyles = makeStyles()(theme => ({
14
+ expandIcon: {
15
+ color: '#fff',
16
+ },
17
+ root: {
18
+ padding: theme.spacing(1, 3, 1, 1),
19
+ },
20
+ expansionPanelDetails: {
21
+ display: 'block',
22
+ padding: theme.spacing(1),
23
+ },
24
+ accordion: {
25
+ border: `1px solid ${theme.palette.text.primary}`,
26
+ },
27
+ noOverflow: {
28
+ width: '100%',
29
+ overflowX: 'auto',
30
+ },
31
+ }));
32
+ const Member = observer((props) => {
33
+ const { classes } = useStyles();
34
+ const { slotName, slotSchema, schema, slot = schema[slotName], path = [], } = props;
35
+ let typeSelector;
36
+ if (isConfigurationSchemaType(slotSchema)) {
37
+ if (slot.length) {
38
+ return slot.map((subslot, slotIndex) => {
39
+ const key = `${singular(slotName)} ${slotIndex + 1}`;
40
+ return React.createElement(Member, { ...props, key: key, slot: subslot, slotName: key });
41
+ });
42
+ }
43
+ // if this is an explicitly typed schema, make a type-selecting dropdown
44
+ // that can be used to change its type
45
+ const typeNameChoices = getTypeNamesFromExplicitlyTypedUnion(slotSchema);
46
+ if (typeNameChoices.length) {
47
+ typeSelector = (React.createElement(TypeSelector, { typeNameChoices: typeNameChoices, slotName: slotName, slot: slot, onChange: evt => {
48
+ if (evt.target.value !== slot.type) {
49
+ schema.setSubschema(slotName, { type: evt.target.value });
50
+ }
51
+ } }));
52
+ }
53
+ return (React.createElement(Accordion, { defaultExpanded: true, className: classes.accordion },
54
+ React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
55
+ React.createElement(Typography, null, [...path, slotName].join('🡒'))),
56
+ React.createElement(AccordionDetails, { className: classes.expansionPanelDetails },
57
+ typeSelector,
58
+ React.createElement(FormGroup, { className: classes.noOverflow },
59
+ React.createElement(Schema, { schema: slot, path: [...path, slotName] })))));
60
+ }
61
+ if (isConfigurationSlotType(slotSchema)) {
62
+ // this is a regular config slot
63
+ return React.createElement(SlotEditor, { key: slotName, slot: slot, slotSchema: slotSchema });
64
+ }
65
+ return null;
66
+ });
67
+ const Schema = observer(({ schema, path = [], }) => {
68
+ const properties = getMembers(schema).properties;
69
+ return (React.createElement(React.Fragment, null, Object.entries(properties).map(([slotName, slotSchema]) => (React.createElement(Member, { key: slotName, slotName: slotName, slotSchema: slotSchema, path: path, schema: schema })))));
70
+ });
71
+ const ConfigurationEditor = observer(({ model }) => {
72
+ const { classes } = useStyles();
73
+ // key forces a re-render, otherwise the same field can end up being used
74
+ // for different tracks since only the backing model changes for example
75
+ // see pr #804
76
+ const { target } = model;
77
+ const key = target && readConfObject(target, 'trackId');
78
+ const name = target && readConfObject(target, 'name');
79
+ return (React.createElement(React.Fragment, null,
80
+ React.createElement(Accordion, { key: key, defaultExpanded: true, className: classes.accordion },
81
+ React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, { className: classes.expandIcon }) },
82
+ React.createElement(Typography, null, name !== null && name !== void 0 ? name : 'Configuration')),
83
+ React.createElement(AccordionDetails, { className: classes.expansionPanelDetails, "data-testid": "configEditor" }, !target ? 'no target set' : React.createElement(Schema, { schema: target }))),
84
+ React.createElement("div", { style: { height: 300 } })));
85
+ });
86
+ export default ConfigurationEditor;
87
+ //# sourceMappingURL=ConfigurationEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigurationEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/ConfigurationEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ declare function JsonEditor({ slot, }: {
3
+ slot: {
4
+ name: string;
5
+ description: string;
6
+ value: unknown;
7
+ set: (arg: unknown) => void;
8
+ };
9
+ }): JSX.Element;
10
+ declare const _default: typeof JsonEditor;
11
+ export default _default;
@@ -0,0 +1,55 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { InputLabel, TextField } from '@mui/material';
3
+ import { makeStyles } from 'tss-react/mui';
4
+ import { observer } from 'mobx-react';
5
+ // fontSize and fontFamily have to match between Editor and SyntaxHighlighter
6
+ const fontSize = '12px';
7
+ // Optimize by using system default fonts: https://css-tricks.com/snippets/css/font-stacks/
8
+ 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';
9
+ const useStyles = makeStyles()(theme => ({
10
+ error: {
11
+ color: 'red',
12
+ fontSize: '0.8em',
13
+ },
14
+ callbackEditor: {
15
+ fontFamily,
16
+ fontSize,
17
+ background: theme.palette.background.default,
18
+ width: 800,
19
+ marginTop: '16px',
20
+ border: '1px solid rgba(0,0,0,0.42)',
21
+ },
22
+ callbackContainer: {
23
+ width: '100%',
24
+ overflowX: 'auto',
25
+ },
26
+ textAreaFont: {
27
+ fontFamily,
28
+ },
29
+ }));
30
+ function JsonEditor({ slot, }) {
31
+ const { classes } = useStyles();
32
+ const [contents, setContents] = useState(JSON.stringify(slot.value, null, 2));
33
+ const [error, setError] = useState();
34
+ useEffect(() => {
35
+ try {
36
+ setError(undefined);
37
+ slot.set(JSON.parse(contents));
38
+ }
39
+ catch (e) {
40
+ console.error({ e });
41
+ setError(e);
42
+ }
43
+ }, [contents, slot]);
44
+ return (React.createElement(React.Fragment, null,
45
+ error ? React.createElement("p", { className: classes.error }, `${error}`) : null,
46
+ React.createElement("div", { className: classes.callbackContainer },
47
+ React.createElement(InputLabel, { shrink: true, htmlFor: "json-editor" }, slot.name),
48
+ React.createElement(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: {
49
+ classes: {
50
+ input: classes.textAreaFont,
51
+ },
52
+ } }))));
53
+ }
54
+ export default observer(JsonEditor);
55
+ //# sourceMappingURL=JsonEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonEditor.js","sourceRoot":"","sources":["../../../src/ConfigurationEditorWidget/components/JsonEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,MAAM,CAAA;AACvB,2FAA2F;AAC3F,MAAM,UAAU,GACd,sNAAsN,CAAA;AAExN,MAAM,SAAS,GAAG,UAAU,EAAE,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,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAA;IAE7C,SAAS,CAAC,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,2BAAG,SAAS,EAAE,OAAO,CAAC,KAAK,IAAG,GAAG,KAAK,EAAE,CAAK,CAAC,CAAC,CAAC,IAAI;QAC7D,6BAAK,SAAS,EAAE,OAAO,CAAC,iBAAiB;YACvC,oBAAC,UAAU,IAAC,MAAM,QAAC,OAAO,EAAC,aAAa,IACrC,IAAI,CAAC,IAAI,CACC;YACb,oBAAC,SAAS,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,eAAe,QAAQ,CAAC,UAAU,CAAC,CAAA"}