@jbrowse/core 1.5.3 → 1.5.7

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 (150) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +4 -2
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +113 -100
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +59 -66
  4. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +9 -9
  5. package/BaseFeatureWidget/index.js +1 -1
  6. package/BaseFeatureWidget/index.test.js +3 -3
  7. package/BaseFeatureWidget/types.js +5 -1
  8. package/BaseFeatureWidget/util.js +9 -13
  9. package/CorePlugin.js +19 -31
  10. package/Plugin.js +11 -13
  11. package/PluginLoader.js +33 -38
  12. package/PluginManager.d.ts +5 -5
  13. package/PluginManager.js +55 -60
  14. package/ReExports/index.js +4 -4
  15. package/ReExports/list.js +2 -2
  16. package/ReExports/material-ui-colors.js +20 -20
  17. package/ReExports/modules.js +47 -51
  18. package/TextSearch/BaseResults.js +24 -34
  19. package/TextSearch/BaseResults.test.js +3 -7
  20. package/TextSearch/TextSearchManager.d.ts +1 -1
  21. package/TextSearch/TextSearchManager.js +15 -18
  22. package/assemblyManager/assembly.js +34 -39
  23. package/assemblyManager/assemblyConfigSchema.js +2 -2
  24. package/assemblyManager/assemblyManager.js +16 -20
  25. package/assemblyManager/index.js +3 -3
  26. package/configuration/configurationSchema.js +17 -19
  27. package/configuration/configurationSlot.js +11 -11
  28. package/configuration/configurationSlot.test.js +5 -5
  29. package/configuration/util.js +5 -5
  30. package/data_adapters/BaseAdapter.d.ts +4 -4
  31. package/data_adapters/BaseAdapter.js +36 -47
  32. package/data_adapters/BaseAdapter.test.js +24 -30
  33. package/data_adapters/CytobandAdapter.js +16 -22
  34. package/data_adapters/dataAdapterCache.js +9 -9
  35. package/package.json +7 -7
  36. package/pluggableElementTypes/AdapterType.js +22 -29
  37. package/pluggableElementTypes/ConnectionType.js +18 -26
  38. package/pluggableElementTypes/DisplayType.js +17 -25
  39. package/pluggableElementTypes/InternetAccountType.js +14 -22
  40. package/pluggableElementTypes/PluggableElementBase.js +9 -10
  41. package/pluggableElementTypes/RpcMethodType.js +40 -56
  42. package/pluggableElementTypes/RpcMethodType.test.js +17 -23
  43. package/pluggableElementTypes/TextSearchAdapterType.js +15 -23
  44. package/pluggableElementTypes/TrackType.js +15 -25
  45. package/pluggableElementTypes/ViewType.js +15 -25
  46. package/pluggableElementTypes/WidgetType.js +17 -25
  47. package/pluggableElementTypes/index.js +11 -11
  48. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +5 -5
  49. package/pluggableElementTypes/models/BaseDisplayModel.js +5 -8
  50. package/pluggableElementTypes/models/BaseTrackModel.js +8 -11
  51. package/pluggableElementTypes/models/BaseViewModel.js +3 -3
  52. package/pluggableElementTypes/models/InternetAccountModel.js +5 -5
  53. package/pluggableElementTypes/models/baseConnectionConfig.js +2 -2
  54. package/pluggableElementTypes/models/baseTrackConfig.js +4 -7
  55. package/pluggableElementTypes/models/index.js +4 -4
  56. package/pluggableElementTypes/renderers/BoxRendererType.js +39 -49
  57. package/pluggableElementTypes/renderers/CircularChordRendererType.js +12 -16
  58. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +27 -35
  59. package/pluggableElementTypes/renderers/FeatureRendererType.js +36 -46
  60. package/pluggableElementTypes/renderers/RendererType.js +21 -31
  61. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +8 -12
  62. package/pluggableElementTypes/renderers/ServerSideRendererType.js +31 -44
  63. package/pluggableElementTypes/renderers/index.js +8 -8
  64. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +8 -10
  65. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +2 -2
  66. package/rpc/BaseRpcDriver.d.ts +1 -1
  67. package/rpc/BaseRpcDriver.js +37 -42
  68. package/rpc/BaseRpcDriver.test.js +49 -63
  69. package/rpc/MainThreadRpcDriver.js +22 -32
  70. package/rpc/RpcManager.d.ts +2 -2
  71. package/rpc/RpcManager.js +20 -25
  72. package/rpc/WebWorkerRpcDriver.d.ts +2 -2
  73. package/rpc/WebWorkerRpcDriver.js +29 -40
  74. package/rpc/configSchema.js +2 -2
  75. package/rpc/coreRpcMethods.js +72 -82
  76. package/rpc/remoteAbortSignals.js +3 -3
  77. package/ui/AboutDialog.js +17 -21
  78. package/ui/App.js +38 -42
  79. package/ui/AssemblySelector.js +5 -5
  80. package/ui/Drawer.js +7 -7
  81. package/ui/DrawerWidget.js +33 -37
  82. package/ui/DropDownMenu.js +9 -21
  83. package/ui/EditableTypography.js +19 -30
  84. package/ui/ErrorMessage.js +5 -5
  85. package/ui/FactoryResetDialog.js +8 -8
  86. package/ui/FatalErrorDialog.js +12 -29
  87. package/ui/FatalErrorDialog.test.js +11 -11
  88. package/ui/FileSelector/FileSelector.js +32 -42
  89. package/ui/FileSelector/LocalFileChooser.js +9 -9
  90. package/ui/FileSelector/UrlChooser.js +4 -4
  91. package/ui/FileSelector/index.js +4 -4
  92. package/ui/Icons.js +9 -9
  93. package/ui/Logo.js +19 -19
  94. package/ui/Menu.js +35 -46
  95. package/ui/NewSessionCards.js +19 -29
  96. package/ui/PrerenderedCanvas.js +10 -27
  97. package/ui/ResizeHandle.js +10 -17
  98. package/ui/SanitizedHTML.js +5 -5
  99. package/ui/SanitizedHTML.test.js +4 -4
  100. package/ui/Snackbar.js +12 -16
  101. package/ui/SnackbarModel.js +1 -1
  102. package/ui/Tooltip.js +7 -11
  103. package/ui/ViewContainer.js +20 -30
  104. package/ui/index.js +13 -17
  105. package/ui/theme.js +11 -15
  106. package/util/Base1DViewModel.js +10 -14
  107. package/util/Base1DViewModel.test.js +5 -5
  108. package/util/QuickLRU.js +27 -31
  109. package/util/aborting.js +16 -24
  110. package/util/analytics.js +7 -7
  111. package/util/blockTypes.js +36 -49
  112. package/util/calculateDynamicBlocks.js +4 -4
  113. package/util/calculateDynamicBlocks.test.js +10 -14
  114. package/util/calculateStaticBlocks.js +1 -1
  115. package/util/calculateStaticBlocks.test.js +15 -15
  116. package/util/compositeMap.js +30 -41
  117. package/util/idMaker.js +4 -4
  118. package/util/index.js +35 -48
  119. package/util/index.test.js +7 -11
  120. package/util/io/RemoteFileWithRangeCache.js +29 -41
  121. package/util/io/index.js +6 -6
  122. package/util/jexl.js +8 -5
  123. package/util/jexlStrings.js +2 -2
  124. package/util/jexlStrings.test.js +2 -2
  125. package/util/layouts/BaseLayout.js +5 -1
  126. package/util/layouts/GranularRectLayout.js +28 -34
  127. package/util/layouts/GranularRectLayout.test.js +10 -10
  128. package/util/layouts/MultiLayout.d.ts +1 -1
  129. package/util/layouts/MultiLayout.js +14 -21
  130. package/util/layouts/PrecomputedLayout.js +14 -16
  131. package/util/layouts/PrecomputedMultiLayout.js +18 -22
  132. package/util/layouts/SceneGraph.d.ts +3 -3
  133. package/util/layouts/SceneGraph.js +17 -31
  134. package/util/layouts/index.js +6 -6
  135. package/util/mst-reflection.d.ts +3 -3
  136. package/util/offscreenCanvasPonyfill.js +29 -31
  137. package/util/offscreenCanvasUtils.js +6 -6
  138. package/util/range.test.js +20 -20
  139. package/util/rxjs.js +2 -2
  140. package/util/simpleFeature.js +19 -24
  141. package/util/simpleFeature.test.js +3 -3
  142. package/util/stats.js +7 -11
  143. package/util/stats.test.js +15 -15
  144. package/util/types/index.d.ts +2 -0
  145. package/util/types/index.js +29 -36
  146. package/util/types/mst.js +15 -19
  147. package/util/types/util.js +5 -1
  148. package/util/when.js +6 -6
  149. package/babel.config.d.ts +0 -15
  150. package/babel.config.js +0 -19
@@ -4,19 +4,21 @@ import { BaseCardProps, BaseProps } from './types';
4
4
  import { SimpleFeatureSerialized } from '../util/simpleFeature';
5
5
  export declare const useStyles: (props?: any) => import("@material-ui/styles").ClassNameMap<"expandIcon" | "expansionPanelDetails" | "field" | "fieldDescription" | "fieldName" | "fieldValue" | "fieldSubvalue">;
6
6
  export declare function BaseCard({ children, title, defaultExpanded, }: BaseCardProps): JSX.Element;
7
- export declare const FieldName: ({ description, name, prefix, }: {
7
+ export declare const FieldName: ({ description, name, prefix, width, }: {
8
8
  description?: React.ReactNode;
9
9
  name: string;
10
10
  prefix?: string[] | undefined;
11
+ width?: number | undefined;
11
12
  }) => JSX.Element;
12
13
  export declare const BasicValue: ({ value }: {
13
14
  value: string | React.ReactNode;
14
15
  }) => JSX.Element;
15
- export declare const SimpleValue: ({ name, value, description, prefix, }: {
16
+ export declare const SimpleValue: ({ name, value, description, prefix, width, }: {
16
17
  description?: React.ReactNode;
17
18
  name: string;
18
19
  value: any;
19
20
  prefix?: string[] | undefined;
21
+ width?: number | undefined;
20
22
  }) => JSX.Element | null;
21
23
  export declare const BaseCoreDetails: (props: BaseProps) => JSX.Element;
22
24
  interface AttributeProps {
@@ -1,25 +1,23 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("/data/jbrowse-components2/node_modules/@babel/runtime/helpers/interopRequireDefault.js")["default"];
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _interopRequireWildcard = require("/data/jbrowse-components2/node_modules/@babel/runtime/helpers/interopRequireWildcard.js")["default"];
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.BaseAttributes = exports.Attributes = void 0;
11
11
  exports.BaseCard = BaseCard;
12
- exports.useStyles = exports.default = exports.SimpleValue = exports.FieldName = exports.FeatureDetails = exports.BasicValue = exports.BaseCoreDetails = void 0;
12
+ exports.useStyles = exports["default"] = exports.SimpleValue = exports.FieldName = exports.FeatureDetails = exports.BasicValue = exports.BaseCoreDetails = void 0;
13
13
 
14
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("/data/jbrowse-components2/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"));
15
15
 
16
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
+ var _objectSpread2 = _interopRequireDefault(require("/data/jbrowse-components2/node_modules/@babel/runtime/helpers/esm/objectSpread2.js"));
17
17
 
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+ var _toConsumableArray2 = _interopRequireDefault(require("/data/jbrowse-components2/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"));
19
19
 
20
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
21
-
22
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
20
+ var _slicedToArray2 = _interopRequireDefault(require("/data/jbrowse-components2/node_modules/@babel/runtime/helpers/esm/slicedToArray.js"));
23
21
 
24
22
  var _react = _interopRequireWildcard(require("react"));
25
23
 
@@ -50,16 +48,8 @@ var _SequenceFeatureDetails = _interopRequireDefault(require("./SequenceFeatureD
50
48
  var _util2 = require("./util");
51
49
 
52
50
  var _excluded = ["id"];
51
+ var MAX_FIELD_NAME_WIDTH = 170; // these are always omitted as too detailed
53
52
 
54
- 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); }
55
-
56
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
57
-
58
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
59
-
60
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
61
-
62
- // these are always omitted as too detailed
63
53
  var globalOmit = ['length', 'position', 'subfeatures', 'uniqueId', 'exonFrames', 'parentId', 'thickStart', 'thickEnd']; // coreDetails are omitted in some circumstances
64
54
 
65
55
  var coreDetails = ['name', 'start', 'end', 'strand', 'refName', 'description', 'type'];
@@ -84,7 +74,6 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
84
74
  fieldName: {
85
75
  wordBreak: 'break-all',
86
76
  minWidth: '90px',
87
- maxWidth: '150px',
88
77
  borderBottom: '1px solid #0003',
89
78
  background: theme.palette.grey[200],
90
79
  marginRight: theme.spacing(1),
@@ -117,11 +106,11 @@ function BaseCard(_ref) {
117
106
  var classes = useStyles();
118
107
 
119
108
  var _useState = (0, _react.useState)(defaultExpanded),
120
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
109
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
121
110
  expanded = _useState2[0],
122
111
  setExpanded = _useState2[1];
123
112
 
124
- return /*#__PURE__*/_react.default.createElement(_core.Accordion, {
113
+ return /*#__PURE__*/_react["default"].createElement(_core.Accordion, {
125
114
  expanded: expanded,
126
115
  onChange: function onChange() {
127
116
  return setExpanded(function (s) {
@@ -131,13 +120,13 @@ function BaseCard(_ref) {
131
120
  TransitionProps: {
132
121
  unmountOnExit: true
133
122
  }
134
- }, /*#__PURE__*/_react.default.createElement(_core.AccordionSummary, {
135
- expandIcon: /*#__PURE__*/_react.default.createElement(_ExpandMore.default, {
123
+ }, /*#__PURE__*/_react["default"].createElement(_core.AccordionSummary, {
124
+ expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], {
136
125
  className: classes.expandIcon
137
126
  })
138
- }, /*#__PURE__*/_react.default.createElement(_core.Typography, {
127
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
139
128
  variant: "button"
140
- }, " ", title)), /*#__PURE__*/_react.default.createElement(_core.AccordionDetails, {
129
+ }, " ", title)), /*#__PURE__*/_react["default"].createElement(_core.AccordionDetails, {
141
130
  className: classes.expansionPanelDetails
142
131
  }, children));
143
132
  }
@@ -146,16 +135,20 @@ var FieldName = function FieldName(_ref2) {
146
135
  var description = _ref2.description,
147
136
  name = _ref2.name,
148
137
  _ref2$prefix = _ref2.prefix,
149
- prefix = _ref2$prefix === void 0 ? [] : _ref2$prefix;
138
+ prefix = _ref2$prefix === void 0 ? [] : _ref2$prefix,
139
+ width = _ref2.width;
150
140
  var classes = useStyles();
151
- var val = [].concat((0, _toConsumableArray2.default)(prefix), [name]).join('.');
152
- return description ? /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
141
+ var val = [].concat((0, _toConsumableArray2["default"])(prefix), [name]).join('.');
142
+ return description ? /*#__PURE__*/_react["default"].createElement(_core.Tooltip, {
153
143
  title: description,
154
144
  placement: "left"
155
- }, /*#__PURE__*/_react.default.createElement("div", {
156
- className: (0, _clsx.default)(classes.fieldDescription, classes.fieldName)
157
- }, val)) : /*#__PURE__*/_react.default.createElement("div", {
158
- className: classes.fieldName
145
+ }, /*#__PURE__*/_react["default"].createElement("div", {
146
+ className: (0, _clsx["default"])(classes.fieldDescription, classes.fieldName)
147
+ }, val)) : /*#__PURE__*/_react["default"].createElement("div", {
148
+ className: classes.fieldName,
149
+ style: {
150
+ width: width
151
+ }
159
152
  }, val);
160
153
  };
161
154
 
@@ -164,10 +157,10 @@ exports.FieldName = FieldName;
164
157
  var BasicValue = function BasicValue(_ref3) {
165
158
  var value = _ref3.value;
166
159
  var classes = useStyles();
167
- return /*#__PURE__*/_react.default.createElement("div", {
160
+ return /*#__PURE__*/_react["default"].createElement("div", {
168
161
  className: classes.fieldValue
169
- }, /*#__PURE__*/_react.default.isValidElement(value) ? value : /*#__PURE__*/_react.default.createElement(_SanitizedHTML.default, {
170
- html: (0, _isObject.default)(value) ? JSON.stringify(value) : String(value)
162
+ }, /*#__PURE__*/_react["default"].isValidElement(value) ? value : /*#__PURE__*/_react["default"].createElement(_SanitizedHTML["default"], {
163
+ html: (0, _isObject["default"])(value) ? JSON.stringify(value) : String(value)
171
164
  }));
172
165
  };
173
166
 
@@ -177,15 +170,17 @@ var SimpleValue = function SimpleValue(_ref4) {
177
170
  var name = _ref4.name,
178
171
  value = _ref4.value,
179
172
  description = _ref4.description,
180
- prefix = _ref4.prefix;
173
+ prefix = _ref4.prefix,
174
+ width = _ref4.width;
181
175
  var classes = useStyles();
182
- return value !== null && value !== undefined ? /*#__PURE__*/_react.default.createElement("div", {
176
+ return value !== null && value !== undefined ? /*#__PURE__*/_react["default"].createElement("div", {
183
177
  className: classes.field
184
- }, /*#__PURE__*/_react.default.createElement(FieldName, {
178
+ }, /*#__PURE__*/_react["default"].createElement(FieldName, {
185
179
  prefix: prefix,
186
180
  description: description,
187
- name: name
188
- }), /*#__PURE__*/_react.default.createElement(BasicValue, {
181
+ name: name,
182
+ width: width
183
+ }), /*#__PURE__*/_react["default"].createElement(BasicValue, {
189
184
  value: value
190
185
  })) : null;
191
186
  };
@@ -199,36 +194,36 @@ var ArrayValue = function ArrayValue(_ref5) {
199
194
  _ref5$prefix = _ref5.prefix,
200
195
  prefix = _ref5$prefix === void 0 ? [] : _ref5$prefix;
201
196
  var classes = useStyles();
202
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, value.length === 1 ? (0, _isObject.default)(value[0]) ? /*#__PURE__*/_react.default.createElement(Attributes, {
197
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, value.length === 1 ? (0, _isObject["default"])(value[0]) ? /*#__PURE__*/_react["default"].createElement(Attributes, {
203
198
  attributes: value[0],
204
- prefix: [].concat((0, _toConsumableArray2.default)(prefix), [name])
205
- }) : /*#__PURE__*/_react.default.createElement("div", {
199
+ prefix: [].concat((0, _toConsumableArray2["default"])(prefix), [name])
200
+ }) : /*#__PURE__*/_react["default"].createElement("div", {
206
201
  className: classes.field
207
- }, /*#__PURE__*/_react.default.createElement(FieldName, {
202
+ }, /*#__PURE__*/_react["default"].createElement(FieldName, {
208
203
  prefix: prefix,
209
204
  description: description,
210
205
  name: name
211
- }), /*#__PURE__*/_react.default.createElement(BasicValue, {
206
+ }), /*#__PURE__*/_react["default"].createElement(BasicValue, {
212
207
  value: value[0]
213
208
  })) : value.every(function (val) {
214
- return (0, _isObject.default)(val);
209
+ return (0, _isObject["default"])(val);
215
210
  }) ? value.map(function (val, i) {
216
- return /*#__PURE__*/_react.default.createElement(Attributes, {
211
+ return /*#__PURE__*/_react["default"].createElement(Attributes, {
217
212
  key: JSON.stringify(val) + '-' + i,
218
213
  attributes: val,
219
- prefix: [].concat((0, _toConsumableArray2.default)(prefix), [name + '-' + i])
214
+ prefix: [].concat((0, _toConsumableArray2["default"])(prefix), [name + '-' + i])
220
215
  });
221
- }) : /*#__PURE__*/_react.default.createElement("div", {
216
+ }) : /*#__PURE__*/_react["default"].createElement("div", {
222
217
  className: classes.field
223
- }, /*#__PURE__*/_react.default.createElement(FieldName, {
218
+ }, /*#__PURE__*/_react["default"].createElement(FieldName, {
224
219
  prefix: prefix,
225
220
  description: description,
226
221
  name: name
227
222
  }), value.map(function (val, i) {
228
- return /*#__PURE__*/_react.default.createElement("div", {
223
+ return /*#__PURE__*/_react["default"].createElement("div", {
229
224
  key: JSON.stringify(val) + '-' + i,
230
225
  className: classes.fieldSubvalue
231
- }, /*#__PURE__*/_react.default.createElement(BasicValue, {
226
+ }, /*#__PURE__*/_react["default"].createElement(BasicValue, {
232
227
  value: val
233
228
  }));
234
229
  })));
@@ -250,26 +245,24 @@ function CoreDetails(props) {
250
245
  var displayStart = (start + 1).toLocaleString('en-US');
251
246
  var displayEnd = end.toLocaleString('en-US');
252
247
  var displayRef = refName ? "".concat(refName, ":") : '';
253
-
254
- var displayedDetails = _objectSpread(_objectSpread({}, feature), {}, {
248
+ var displayedDetails = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, feature), {}, {
255
249
  length: (end - start).toLocaleString('en-US'),
256
250
  position: "".concat(displayRef).concat(displayStart, "..").concat(displayEnd, " ").concat(strandStr)
257
251
  });
258
-
259
252
  var coreRenderedDetails = ['Position', 'Description', 'Name', 'Length', 'Type'];
260
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, coreRenderedDetails.map(function (key) {
253
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, coreRenderedDetails.map(function (key) {
261
254
  return [key, displayedDetails[key.toLowerCase()]];
262
255
  }).filter(function (_ref7) {
263
- var _ref8 = (0, _slicedToArray2.default)(_ref7, 2),
256
+ var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
264
257
  value = _ref8[1];
265
258
 
266
259
  return value !== null && value !== undefined;
267
260
  }).map(function (_ref9) {
268
- var _ref10 = (0, _slicedToArray2.default)(_ref9, 2),
261
+ var _ref10 = (0, _slicedToArray2["default"])(_ref9, 2),
269
262
  key = _ref10[0],
270
263
  value = _ref10[1];
271
264
 
272
- return /*#__PURE__*/_react.default.createElement(SimpleValue, {
265
+ return /*#__PURE__*/_react["default"].createElement(SimpleValue, {
273
266
  key: key,
274
267
  name: key,
275
268
  value: value
@@ -278,9 +271,9 @@ function CoreDetails(props) {
278
271
  }
279
272
 
280
273
  var BaseCoreDetails = function BaseCoreDetails(props) {
281
- return /*#__PURE__*/_react.default.createElement(BaseCard, (0, _extends2.default)({}, props, {
274
+ return /*#__PURE__*/_react["default"].createElement(BaseCard, Object.assign({}, props, {
282
275
  title: "Primary data"
283
- }), /*#__PURE__*/_react.default.createElement(CoreDetails, props));
276
+ }), /*#__PURE__*/_react["default"].createElement(CoreDetails, props));
284
277
  };
285
278
 
286
279
  exports.BaseCoreDetails = BaseCoreDetails;
@@ -300,13 +293,13 @@ var DataGridDetails = function DataGridDetails(_ref11) {
300
293
  if (unionKeys.size < keys.length + 5) {
301
294
  // avoids key 'id' from being used in row data
302
295
  var rows = Object.entries(value).map(function (_ref12) {
303
- var _ref13 = (0, _slicedToArray2.default)(_ref12, 2),
296
+ var _ref13 = (0, _slicedToArray2["default"])(_ref12, 2),
304
297
  k = _ref13[0],
305
298
  val = _ref13[1];
306
299
 
307
300
  var id = val.id,
308
- rest = (0, _objectWithoutProperties2.default)(val, _excluded);
309
- return _objectSpread({
301
+ rest = (0, _objectWithoutProperties2["default"])(val, _excluded);
302
+ return (0, _objectSpread2["default"])({
310
303
  id: k,
311
304
  // used by material UI
312
305
  identifier: id
@@ -317,16 +310,16 @@ var DataGridDetails = function DataGridDetails(_ref11) {
317
310
  var colNames;
318
311
 
319
312
  if (unionKeys.has('id')) {
320
- unionKeys.delete('id');
321
- colNames = ['identifier'].concat((0, _toConsumableArray2.default)(unionKeys));
313
+ unionKeys["delete"]('id');
314
+ colNames = ['identifier'].concat((0, _toConsumableArray2["default"])(unionKeys));
322
315
  } else {
323
- colNames = (0, _toConsumableArray2.default)(unionKeys);
316
+ colNames = (0, _toConsumableArray2["default"])(unionKeys);
324
317
  }
325
318
 
326
319
  var columns = colNames.map(function (val) {
327
320
  return {
328
321
  field: val,
329
- width: Math.max.apply(Math, (0, _toConsumableArray2.default)(rows.map(function (row) {
322
+ width: Math.max.apply(Math, (0, _toConsumableArray2["default"])(rows.map(function (row) {
330
323
  var result = String(row[val]);
331
324
  return Math.min(Math.max((0, _util.measureText)(result, 14) + 50, 80), 1000);
332
325
  })))
@@ -334,15 +327,15 @@ var DataGridDetails = function DataGridDetails(_ref11) {
334
327
  }); // disableSelection on click helps avoid
335
328
  // https://github.com/mui-org/material-ui-x/issues/1197
336
329
 
337
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(FieldName, {
330
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(FieldName, {
338
331
  prefix: prefix,
339
332
  name: name
340
- }), /*#__PURE__*/_react.default.createElement("div", {
333
+ }), /*#__PURE__*/_react["default"].createElement("div", {
341
334
  style: {
342
335
  height: Math.min(rows.length, 100) * 20 + 50 + (rows.length < 100 ? 0 : 50),
343
336
  width: '100%'
344
337
  }
345
- }, /*#__PURE__*/_react.default.createElement(_xDataGrid.DataGrid, {
338
+ }, /*#__PURE__*/_react["default"].createElement(_xDataGrid.DataGrid, {
346
339
  disableSelectionOnClick: true,
347
340
  rowHeight: 20,
348
341
  headerHeight: 25,
@@ -371,6 +364,17 @@ function accessNested(arr) {
371
364
  return typeof obj === 'string' ? obj : typeof ((_obj = obj) === null || _obj === void 0 ? void 0 : _obj.Description) === 'string' ? obj.Description : undefined;
372
365
  }
373
366
 
367
+ function generateMaxWidth(array, prefix) {
368
+ // @ts-ignore
369
+ var arr = [];
370
+ array.forEach(function (key, value) {
371
+ var val = [].concat((0, _toConsumableArray2["default"])(prefix), [key[0]]).join('.');
372
+ arr.push((0, _util.measureText)(val, 12));
373
+ }); // @ts-ignore
374
+
375
+ return Math.ceil(Math.max.apply(Math, arr)) + 10;
376
+ }
377
+
374
378
  var Attributes = function Attributes(props) {
375
379
  var attributes = props.attributes,
376
380
  _props$omit = props.omit,
@@ -382,22 +386,30 @@ var Attributes = function Attributes(props) {
382
386
  } : _props$formatter,
383
387
  _props$prefix = props.prefix,
384
388
  prefix = _props$prefix === void 0 ? [] : _props$prefix;
385
- var omits = [].concat((0, _toConsumableArray2.default)(omit), globalOmit);
386
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, Object.entries(attributes).filter(function (_ref14) {
387
- var _ref15 = (0, _slicedToArray2.default)(_ref14, 2),
389
+ var omits = [].concat((0, _toConsumableArray2["default"])(omit), globalOmit);
390
+ var maxLabelWidth = generateMaxWidth(Object.entries(attributes).filter(function (_ref14) {
391
+ var _ref15 = (0, _slicedToArray2["default"])(_ref14, 2),
388
392
  k = _ref15[0],
389
393
  v = _ref15[1];
390
394
 
391
395
  return v !== undefined && !omits.includes(k);
392
- }).map(function (_ref16) {
393
- var _ref17 = (0, _slicedToArray2.default)(_ref16, 2),
394
- key = _ref17[0],
395
- value = _ref17[1];
396
+ }), prefix);
397
+ var labelWidth = maxLabelWidth <= MAX_FIELD_NAME_WIDTH ? maxLabelWidth : MAX_FIELD_NAME_WIDTH;
398
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, Object.entries(attributes).filter(function (_ref16) {
399
+ var _ref17 = (0, _slicedToArray2["default"])(_ref16, 2),
400
+ k = _ref17[0],
401
+ v = _ref17[1];
402
+
403
+ return v !== undefined && !omits.includes(k);
404
+ }).map(function (_ref18) {
405
+ var _ref19 = (0, _slicedToArray2["default"])(_ref18, 2),
406
+ key = _ref19[0],
407
+ value = _ref19[1];
396
408
 
397
409
  if (Array.isArray(value) && value.length > 2 && value.every(function (val) {
398
- return (0, _isObject.default)(val);
410
+ return (0, _isObject["default"])(val);
399
411
  })) {
400
- return /*#__PURE__*/_react.default.createElement(DataGridDetails, {
412
+ return /*#__PURE__*/_react["default"].createElement(DataGridDetails, {
401
413
  key: key,
402
414
  prefix: prefix,
403
415
  name: key,
@@ -405,10 +417,10 @@ var Attributes = function Attributes(props) {
405
417
  });
406
418
  }
407
419
 
408
- var description = accessNested([].concat((0, _toConsumableArray2.default)(prefix), [key]), descriptions);
420
+ var description = accessNested([].concat((0, _toConsumableArray2["default"])(prefix), [key]), descriptions);
409
421
 
410
422
  if (Array.isArray(value)) {
411
- return /*#__PURE__*/_react.default.createElement(ArrayValue, {
423
+ return /*#__PURE__*/_react["default"].createElement(ArrayValue, {
412
424
  key: key,
413
425
  name: key,
414
426
  value: value,
@@ -417,22 +429,23 @@ var Attributes = function Attributes(props) {
417
429
  });
418
430
  }
419
431
 
420
- if ((0, _isObject.default)(value)) {
421
- return /*#__PURE__*/_react.default.createElement(Attributes, {
432
+ if ((0, _isObject["default"])(value)) {
433
+ return /*#__PURE__*/_react["default"].createElement(Attributes, {
422
434
  omit: omits,
423
435
  key: key,
424
436
  attributes: value,
425
437
  descriptions: descriptions,
426
- prefix: [].concat((0, _toConsumableArray2.default)(prefix), [key])
438
+ prefix: [].concat((0, _toConsumableArray2["default"])(prefix), [key])
427
439
  });
428
440
  }
429
441
 
430
- return /*#__PURE__*/_react.default.createElement(SimpleValue, {
442
+ return /*#__PURE__*/_react["default"].createElement(SimpleValue, {
431
443
  key: key,
432
444
  name: key,
433
445
  value: formatter(value, key),
434
446
  description: description,
435
- prefix: prefix
447
+ prefix: prefix,
448
+ width: labelWidth
436
449
  });
437
450
  }));
438
451
  };
@@ -441,9 +454,9 @@ exports.Attributes = Attributes;
441
454
 
442
455
  var BaseAttributes = function BaseAttributes(props) {
443
456
  var feature = props.feature;
444
- return /*#__PURE__*/_react.default.createElement(BaseCard, (0, _extends2.default)({}, props, {
457
+ return /*#__PURE__*/_react["default"].createElement(BaseCard, Object.assign({}, props, {
445
458
  title: "Attributes"
446
- }), /*#__PURE__*/_react.default.createElement(Attributes, (0, _extends2.default)({}, props, {
459
+ }), /*#__PURE__*/_react["default"].createElement(Attributes, Object.assign({}, props, {
447
460
  attributes: feature
448
461
  })));
449
462
  };
@@ -471,26 +484,26 @@ var FeatureDetails = function FeatureDetails(props) {
471
484
  var session = (0, _util.getSession)(model);
472
485
  var defaultSeqTypes = ['mRNA', 'transcript'];
473
486
  var sequenceTypes = (0, _configuration.getConf)(session, ['featureDetails', 'sequenceTypes']) || defaultSeqTypes;
474
- return /*#__PURE__*/_react.default.createElement(BaseCard, {
487
+ return /*#__PURE__*/_react["default"].createElement(BaseCard, {
475
488
  title: [(0, _util2.ellipses)(name || id), type].filter(function (f) {
476
489
  return !!f;
477
490
  }).join(' - ')
478
- }, /*#__PURE__*/_react.default.createElement(_core.Typography, null, "Core details"), /*#__PURE__*/_react.default.createElement(CoreDetails, props), /*#__PURE__*/_react.default.createElement(_core.Divider, null), /*#__PURE__*/_react.default.createElement(_core.Typography, null, "Attributes"), /*#__PURE__*/_react.default.createElement(Attributes, (0, _extends2.default)({
491
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Core details"), /*#__PURE__*/_react["default"].createElement(CoreDetails, props), /*#__PURE__*/_react["default"].createElement(_core.Divider, null), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Attributes"), /*#__PURE__*/_react["default"].createElement(Attributes, Object.assign({
479
492
  attributes: feature
480
493
  }, props, {
481
- omit: [].concat((0, _toConsumableArray2.default)(omit), coreDetails)
482
- })), sequenceTypes.includes(feature.type) ? /*#__PURE__*/_react.default.createElement(_reactErrorBoundary.ErrorBoundary, {
483
- FallbackComponent: function FallbackComponent(_ref18) {
484
- var error = _ref18.error;
485
- return /*#__PURE__*/_react.default.createElement(_core.Typography, {
494
+ omit: [].concat((0, _toConsumableArray2["default"])(omit), coreDetails)
495
+ })), sequenceTypes.includes(feature.type) ? /*#__PURE__*/_react["default"].createElement(_reactErrorBoundary.ErrorBoundary, {
496
+ FallbackComponent: function FallbackComponent(_ref20) {
497
+ var error = _ref20.error;
498
+ return /*#__PURE__*/_react["default"].createElement(_core.Typography, {
486
499
  color: "error"
487
500
  }, "Failed to fetch sequence for feature: ", "".concat(error));
488
501
  }
489
- }, /*#__PURE__*/_react.default.createElement(_SequenceFeatureDetails.default, props)) : null, subfeatures !== null && subfeatures !== void 0 && subfeatures.length ? /*#__PURE__*/_react.default.createElement(BaseCard, {
502
+ }, /*#__PURE__*/_react["default"].createElement(_SequenceFeatureDetails["default"], props)) : null, subfeatures !== null && subfeatures !== void 0 && subfeatures.length ? /*#__PURE__*/_react["default"].createElement(BaseCard, {
490
503
  title: "Subfeatures",
491
504
  defaultExpanded: !sequenceTypes.includes(feature.type)
492
505
  }, subfeatures.map(function (sub) {
493
- return /*#__PURE__*/_react.default.createElement(FeatureDetails, {
506
+ return /*#__PURE__*/_react["default"].createElement(FeatureDetails, {
494
507
  key: JSON.stringify(sub),
495
508
  feature: sub,
496
509
  model: model,
@@ -514,10 +527,10 @@ var BaseFeatureDetails = (0, _mobxReact.observer)(function (props) {
514
527
  return null;
515
528
  }
516
529
 
517
- return /*#__PURE__*/_react.default.createElement(FeatureDetails, {
530
+ return /*#__PURE__*/_react["default"].createElement(FeatureDetails, {
518
531
  model: model,
519
532
  feature: feature
520
533
  });
521
534
  });
522
535
  var _default = BaseFeatureDetails;
523
- exports.default = _default;
536
+ exports["default"] = _default;