@jbrowse/core 3.3.0 → 3.4.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 (37) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +2 -1
  2. package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +2 -1
  3. package/BaseFeatureWidget/BaseFeatureDetail/index.js +2 -2
  4. package/BaseFeatureWidget/stateModelFactory.d.ts +15 -10
  5. package/BaseFeatureWidget/stateModelFactory.js +7 -12
  6. package/BaseFeatureWidget/types.d.ts +9 -1
  7. package/BaseFeatureWidget/util.d.ts +4 -1
  8. package/BaseFeatureWidget/util.js +11 -0
  9. package/PluginManager.d.ts +1 -143
  10. package/PluginManager.js +3 -2
  11. package/ReExports/BaseFeatureDetails.d.ts +1 -0
  12. package/ReExports/BaseFeatureDetails.js +45 -0
  13. package/ReExports/MuiDataGridReExports.d.ts +2 -0
  14. package/ReExports/MuiDataGridReExports.js +167 -0
  15. package/ReExports/MuiReExports.d.ts +133 -0
  16. package/ReExports/MuiReExports.js +150 -0
  17. package/ReExports/lazify.d.ts +2 -0
  18. package/ReExports/lazify.js +14 -0
  19. package/ReExports/list.js +1 -0
  20. package/ReExports/modules.d.ts +1 -173
  21. package/ReExports/modules.js +36 -308
  22. package/TextSearch/TextSearchManager.d.ts +17 -2
  23. package/TextSearch/TextSearchManager.js +23 -3
  24. package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +0 -1
  25. package/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  26. package/package.json +7 -6
  27. package/pluggableElementTypes/models/baseTrackConfig.js +25 -8
  28. package/pluggableElementTypes/renderers/FeatureRendererType.js +8 -2
  29. package/tsconfig.build.tsbuildinfo +1 -1
  30. package/ui/index.d.ts +1 -0
  31. package/ui/index.js +3 -1
  32. package/ui/theme.d.ts +2 -2
  33. package/ui/theme.js +13 -5
  34. package/util/index.d.ts +1 -0
  35. package/util/index.js +7 -3
  36. package/util/offscreenCanvasUtils.d.ts +7 -6
  37. package/util/offscreenCanvasUtils.js +6 -6
@@ -36,9 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- const jsx_runtime_1 = require("react/jsx-runtime");
40
39
  const React = __importStar(require("react"));
41
- const react_1 = require("react");
42
40
  const material_1 = require("@mui/material");
43
41
  const MUIStyles = __importStar(require("@mui/material/styles"));
44
42
  const MUIUtils = __importStar(require("@mui/material/utils"));
@@ -54,6 +52,10 @@ const Plugin_1 = __importDefault(require("../Plugin"));
54
52
  const Configuration = __importStar(require("../configuration"));
55
53
  const BaseAdapterExports = __importStar(require("../data_adapters/BaseAdapter"));
56
54
  const pluggableElementTypes = __importStar(require("../pluggableElementTypes"));
55
+ const BaseFeatureDetails_1 = require("./BaseFeatureDetails");
56
+ const MuiDataGridReExports_1 = require("./MuiDataGridReExports");
57
+ const MuiReExports_1 = require("./MuiReExports");
58
+ const lazify_1 = require("./lazify");
57
59
  const list_1 = __importDefault(require("./list"));
58
60
  const AdapterType_1 = __importDefault(require("../pluggableElementTypes/AdapterType"));
59
61
  const DisplayType_1 = __importDefault(require("../pluggableElementTypes/DisplayType"));
@@ -67,6 +69,7 @@ const FeatureRendererType = __importStar(require("../pluggableElementTypes/rende
67
69
  const RendererType = __importStar(require("../pluggableElementTypes/renderers/RendererType"));
68
70
  const ServerSideRendererType = __importStar(require("../pluggableElementTypes/renderers/ServerSideRendererType"));
69
71
  const coreUi = __importStar(require("../ui"));
72
+ const coreTheme = __importStar(require("../ui/theme"));
70
73
  const coreUtil = __importStar(require("../util"));
71
74
  const Base1DViewModel_1 = __importDefault(require("../util/Base1DViewModel"));
72
75
  const coreColor = __importStar(require("../util/color"));
@@ -76,278 +79,6 @@ const coreMstReflection = __importStar(require("../util/mst-reflection"));
76
79
  const rxjs = __importStar(require("../util/rxjs"));
77
80
  const trackUtils = __importStar(require("../util/tracks"));
78
81
  const mstTypes = __importStar(require("../util/types/mst"));
79
- const Entries = {
80
- Accordion: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Accordion')))),
81
- AccordionActions: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/AccordionActions')))),
82
- AccordionDetails: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/AccordionDetails')))),
83
- AccordionSummary: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/AccordionSummary')))),
84
- Alert: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Alert')))),
85
- AlertTitle: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/AlertTitle')))),
86
- Autocomplete: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Autocomplete')))),
87
- Avatar: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Avatar')))),
88
- AvatarGroup: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/AvatarGroup')))),
89
- Backdrop: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Backdrop')))),
90
- Badge: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Badge')))),
91
- Box: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Box')))),
92
- Breadcrumbs: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Breadcrumbs')))),
93
- Button: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Button')))),
94
- ButtonGroup: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ButtonGroup')))),
95
- Card: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Card')))),
96
- CardActions: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/CardActions')))),
97
- CardActionArea: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/CardActionArea')))),
98
- CardContent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/CardContent')))),
99
- CardHeader: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/CardHeader')))),
100
- CardMedia: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/CardMedia')))),
101
- CircularProgress: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/CircularProgress')))),
102
- Collapse: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Collapse')))),
103
- ClickAwayListener: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ClickAwayListener')))),
104
- Chip: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Chip')))),
105
- Checkbox: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Checkbox')))),
106
- Container: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Container')))),
107
- Dialog: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Dialog')))),
108
- DialogActions: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/DialogActions')))),
109
- DialogTitle: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/DialogTitle')))),
110
- DialogContent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/DialogContent')))),
111
- DialogContentText: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/DialogContentText')))),
112
- Divider: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Divider')))),
113
- Drawer: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Drawer')))),
114
- Fab: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Fab')))),
115
- Fade: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Fade')))),
116
- FilledInput: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/FilledInput')))),
117
- FormLabel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/FormLabel')))),
118
- FormControl: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/FormControl')))),
119
- FormControlLabel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/FormControlLabel')))),
120
- FormHelperText: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/FormHelperText')))),
121
- FormGroup: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/FormGroup')))),
122
- Grid: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Grid')))),
123
- Grid2: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Grid')))),
124
- Grow: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Grow')))),
125
- Icon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Icon')))),
126
- IconButton: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/IconButton')))),
127
- Input: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Input')))),
128
- InputBase: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/InputBase')))),
129
- InputLabel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/InputLabel')))),
130
- InputAdornment: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/InputAdornment')))),
131
- Link: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Link')))),
132
- LinearProgress: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/LinearProgress')))),
133
- List: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/List')))),
134
- ListItem: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ListItem')))),
135
- ListItemAvatar: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ListItemAvatar')))),
136
- ListItemSecondaryAction: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ListItemSecondaryAction')))),
137
- ListItemIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ListItemIcon')))),
138
- ListSubheader: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ListSubheader')))),
139
- ListItemText: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ListItemText')))),
140
- Menu: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Menu')))),
141
- MenuItem: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/MenuItem')))),
142
- MenuList: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/MenuList')))),
143
- Modal: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Modal')))),
144
- NativeSelect: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/NativeSelect')))),
145
- OutlinedInput: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/OutlinedInput')))),
146
- Pagination: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Pagination')))),
147
- PaginationItem: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/PaginationItem')))),
148
- Paper: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Paper')))),
149
- Popover: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Popover')))),
150
- Popper: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Popper')))),
151
- Portal: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Portal')))),
152
- Radio: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Radio')))),
153
- RadioGroup: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/RadioGroup')))),
154
- Rating: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Rating')))),
155
- ScopedCssBaseline: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ScopedCssBaseline')))),
156
- Select: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Select')))),
157
- Skeleton: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Skeleton')))),
158
- Slider: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Slider')))),
159
- Snackbar: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Snackbar')))),
160
- SnackbarContent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/SnackbarContent')))),
161
- SpeedDial: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/SpeedDial')))),
162
- SpeedDialAction: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/SpeedDialAction')))),
163
- SpeedDialIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/SpeedDialIcon')))),
164
- Stack: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Stack')))),
165
- Step: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Step')))),
166
- StepButton: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/StepButton')))),
167
- StepConnector: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/StepConnector')))),
168
- StepLabel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/StepLabel')))),
169
- StepIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/StepIcon')))),
170
- Stepper: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Stepper')))),
171
- SvgIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/SvgIcon')))),
172
- Switch: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Switch')))),
173
- Tab: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Tab')))),
174
- Table: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Table')))),
175
- TableBody: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableBody')))),
176
- TableCell: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableCell')))),
177
- TableContainer: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableContainer')))),
178
- TableFooter: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableFooter')))),
179
- TableHead: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableHead')))),
180
- TablePagination: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TablePagination')))),
181
- TableRow: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableRow')))),
182
- TableSortLabel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TableSortLabel')))),
183
- Tabs: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Tabs')))),
184
- TextField: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TextField')))),
185
- TextareaAutosize: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/TextareaAutosize')))),
186
- ToggleButton: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ToggleButton')))),
187
- ToggleButtonGroup: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/ToggleButtonGroup')))),
188
- Toolbar: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Toolbar')))),
189
- Tooltip: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Tooltip')))),
190
- Typography: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/material/Typography')))),
191
- };
192
- const LazyMUICore = Object.fromEntries(Object.entries(Entries).map(([key, ReactComponent]) => {
193
- const Component = (0, react_1.forwardRef)((props, ref) => ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(ReactComponent, { ...props, ref: ref }) })));
194
- Component.displayName = key;
195
- return [key, Component];
196
- }));
197
- const MaterialPrefixMUI = Object.fromEntries(Object.entries(LazyMUICore).map(([key, value]) => [
198
- `@material-ui/core/${key}`,
199
- value,
200
- ]));
201
- const MuiPrefixMUI = Object.fromEntries(Object.entries(LazyMUICore).map(([key, value]) => [
202
- `@mui/material/${key}`,
203
- value,
204
- ]));
205
- const Attributes = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../BaseFeatureWidget/BaseFeatureDetail/Attributes'))));
206
- const FeatureDetails = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../BaseFeatureWidget/BaseFeatureDetail/FeatureDetails'))));
207
- const BaseCard = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../BaseFeatureWidget/BaseFeatureDetail/BaseCard'))));
208
- const BaseAttributes = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../BaseFeatureWidget/BaseFeatureDetail/BaseAttributes'))));
209
- const BaseCoreDetails = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails'))));
210
- const DataGridEntries = {
211
- DataGrid: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({ default: module.DataGrid }))),
212
- GridActionsCellItem: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
213
- default: module.GridActionsCellItem,
214
- }))),
215
- GridAddIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
216
- default: module.GridAddIcon,
217
- }))),
218
- GridArrowDownwardIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
219
- default: module.GridArrowDownwardIcon,
220
- }))),
221
- GridArrowUpwardIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
222
- default: module.GridArrowUpwardIcon,
223
- }))),
224
- GridCellCheckboxForwardRef: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
225
- default: module.GridCellCheckboxForwardRef,
226
- }))),
227
- GridCellCheckboxRenderer: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
228
- default: module.GridCellCheckboxRenderer,
229
- }))),
230
- GridCheckCircleIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
231
- default: module.GridCheckCircleIcon,
232
- }))),
233
- GridCheckIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
234
- default: module.GridCheckIcon,
235
- }))),
236
- GridCloseIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
237
- default: module.GridCloseIcon,
238
- }))),
239
- GridColumnHeaderSeparator: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
240
- default: module.GridColumnHeaderSeparator,
241
- }))),
242
- GridColumnHeaderSortIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
243
- default: module.GridColumnHeaderSortIcon,
244
- }))),
245
- GridColumnIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
246
- default: module.GridColumnIcon,
247
- }))),
248
- GridColumnMenu: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
249
- default: module.GridColumnMenu,
250
- }))),
251
- GridColumnMenuContainer: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
252
- default: module.GridColumnMenuContainer,
253
- }))),
254
- GridDragIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
255
- default: module.GridDragIcon,
256
- }))),
257
- GridExpandMoreIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
258
- default: module.GridExpandMoreIcon,
259
- }))),
260
- GridFilterAltIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
261
- default: module.GridFilterAltIcon,
262
- }))),
263
- GridFilterForm: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
264
- default: module.GridFilterForm,
265
- }))),
266
- GridFilterListIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
267
- default: module.GridFilterListIcon,
268
- }))),
269
- GridFilterPanel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
270
- default: module.GridFilterPanel,
271
- }))),
272
- GridFooter: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({ default: module.GridFooter }))),
273
- GridFooterContainer: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
274
- default: module.GridFooterContainer,
275
- }))),
276
- GridHeader: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({ default: module.GridHeader }))),
277
- GridHeaderCheckbox: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
278
- default: module.GridHeaderCheckbox,
279
- }))),
280
- GridKeyboardArrowRight: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
281
- default: module.GridKeyboardArrowRight,
282
- }))),
283
- GridLoadIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
284
- default: module.GridLoadIcon,
285
- }))),
286
- GridLoadingOverlay: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
287
- default: module.GridLoadingOverlay,
288
- }))),
289
- GridMenuIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
290
- default: module.GridMenuIcon,
291
- }))),
292
- GridMoreVertIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
293
- default: module.GridMoreVertIcon,
294
- }))),
295
- GridNoRowsOverlay: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
296
- default: module.GridNoRowsOverlay,
297
- }))),
298
- GridOverlay: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
299
- default: module.GridOverlay,
300
- }))),
301
- GridPagination: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
302
- default: module.GridPagination,
303
- }))),
304
- GridPanel: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({ default: module.GridPanel }))),
305
- GridPanelWrapper: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
306
- default: module.GridPanelWrapper,
307
- }))),
308
- GridRemoveIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
309
- default: module.GridRemoveIcon,
310
- }))),
311
- GridRoot: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({ default: module.GridRoot }))),
312
- GridRowCount: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
313
- default: module.GridRowCount,
314
- }))),
315
- GridSearchIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
316
- default: module.GridSearchIcon,
317
- }))),
318
- GridSelectedRowCount: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
319
- default: module.GridSelectedRowCount,
320
- }))),
321
- GridSeparatorIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
322
- default: module.GridSeparatorIcon,
323
- }))),
324
- GridTableRowsIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
325
- default: module.GridTableRowsIcon,
326
- }))),
327
- GridToolbarExportContainer: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
328
- default: module.GridToolbarExportContainer,
329
- }))),
330
- GridTripleDotsVerticalIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
331
- default: module.GridTripleDotsVerticalIcon,
332
- }))),
333
- GridViewHeadlineIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
334
- default: module.GridViewHeadlineIcon,
335
- }))),
336
- GridViewStreamIcon: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@mui/x-data-grid'))).then(module => ({
337
- default: module.GridViewStreamIcon,
338
- }))),
339
- };
340
- const LazyDataGridComponents = Object.fromEntries(Object.entries(DataGridEntries).map(([key, ReactComponent]) => {
341
- const Component = (0, react_1.forwardRef)((props, ref) => ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(ReactComponent, { ...props, ref: ref }) })));
342
- Component.displayName = key;
343
- return [key, Component];
344
- }));
345
- const LazyAttributes = (0, react_1.forwardRef)((props, ref) => ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(Attributes, { ...props, ref: ref }) })));
346
- LazyAttributes.displayName = 'Attributes';
347
- const LazyFeatureDetails = (0, react_1.forwardRef)((props, ref) => ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(FeatureDetails, { ...props, ref: ref }) })));
348
- LazyFeatureDetails.displayName = 'FeatureDetails';
349
- const LazyBaseCard = (0, react_1.forwardRef)((props, ref) => ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(BaseCard, { ...props, ref: ref }) })));
350
- LazyBaseCard.displayName = 'BaseCard';
351
82
  const libs = {
352
83
  mobx,
353
84
  'mobx-state-tree': mst,
@@ -360,13 +91,15 @@ const libs = {
360
91
  useGridApiContext: x_data_grid_1.useGridApiContext,
361
92
  useGridApiRef: x_data_grid_1.useGridApiRef,
362
93
  useGridRootProps: x_data_grid_1.useGridRootProps,
363
- ...LazyDataGridComponents,
94
+ ...(0, lazify_1.lazyMap)(MuiDataGridReExports_1.DataGridEntries, '@mui/x-data-grid/'),
364
95
  },
365
96
  '@mui/material/utils': MUIUtils,
366
97
  '@material-ui/core/utils': MUIUtils,
367
- 'tss-react/mui': { makeStyles: mui_1.makeStyles },
98
+ 'tss-react/mui': {
99
+ makeStyles: mui_1.makeStyles,
100
+ },
368
101
  '@material-ui/core': {
369
- ...LazyMUICore,
102
+ ...(0, lazify_1.lazyMap)(MuiReExports_1.Entries),
370
103
  useTheme: material_1.useTheme,
371
104
  alpha: material_1.alpha,
372
105
  makeStyles: (args) => {
@@ -375,53 +108,43 @@ const libs = {
375
108
  },
376
109
  },
377
110
  '@mui/material': {
378
- ...LazyMUICore,
111
+ ...(0, lazify_1.lazyMap)(MuiReExports_1.Entries),
379
112
  alpha: material_1.alpha,
380
113
  useTheme: material_1.useTheme,
381
114
  createTheme: material_1.createTheme,
382
115
  },
116
+ ...(0, lazify_1.lazyMap)(MuiReExports_1.Entries, '@mui/material/'),
117
+ ...(0, lazify_1.lazyMap)(MuiReExports_1.Entries, '@material-ui/core/'),
383
118
  '@mui/material/styles': {
384
- MUIStyles,
119
+ ...MUIStyles,
385
120
  makeStyles: (args) => {
386
121
  const useStyles = (0, mui_1.makeStyles)()(args);
387
122
  return () => useStyles().classes;
388
123
  },
389
124
  },
390
125
  '@material-ui/core/styles': {
391
- MUIStyles,
126
+ ...MUIStyles,
392
127
  makeStyles: (args) => {
393
128
  const useStyles = (0, mui_1.makeStyles)()(args);
394
129
  return () => useStyles().classes;
395
130
  },
396
131
  },
397
- ...MaterialPrefixMUI,
398
- ...MuiPrefixMUI,
399
- '@material-ui/lab/ToggleButton': Entries.ToggleButton,
400
- '@material-ui/lab/ToggleButtonGroup': Entries.ToggleButtonGroup,
401
- '@material-ui/lab/Autocomplete': Entries.Autocomplete,
402
- '@material-ui/lab/Alert': Entries.Alert,
132
+ '@material-ui/lab/ToggleButton': MuiReExports_1.Entries.ToggleButton,
133
+ '@material-ui/lab/ToggleButtonGroup': MuiReExports_1.Entries.ToggleButtonGroup,
134
+ '@material-ui/lab/Autocomplete': MuiReExports_1.Entries.Autocomplete,
135
+ '@material-ui/lab/Alert': MuiReExports_1.Entries.Alert,
403
136
  '@material-ui/lab': {
404
- Alert: Entries.Alert,
405
- Autocomplete: Entries.Autocomplete,
406
- ToggleButton: Entries.ToggleButton,
407
- ToggleButtonGroup: Entries.ToggleButtonGroup,
137
+ Alert: MuiReExports_1.Entries.Alert,
138
+ Autocomplete: MuiReExports_1.Entries.Autocomplete,
139
+ ToggleButton: MuiReExports_1.Entries.ToggleButton,
140
+ ToggleButtonGroup: MuiReExports_1.Entries.ToggleButtonGroup,
408
141
  },
409
142
  '@jbrowse/core/Plugin': Plugin_1.default,
410
- '@jbrowse/core/pluggableElementTypes': pluggableElementTypes,
411
- '@jbrowse/core/pluggableElementTypes/ViewType': ViewType_1.default,
412
- '@jbrowse/core/pluggableElementTypes/AdapterType': AdapterType_1.default,
413
- '@jbrowse/core/pluggableElementTypes/DisplayType': DisplayType_1.default,
414
- '@jbrowse/core/pluggableElementTypes/TrackType': TrackType_1.default,
415
- '@jbrowse/core/pluggableElementTypes/WidgetType': WidgetType_1.default,
416
- '@jbrowse/core/pluggableElementTypes/models': pluggableElementTypeModels,
417
- '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType': ServerSideRendererType,
418
- '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType': CircularChordRendererType_1.default,
419
- '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType': BoxRendererType,
420
- '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType': FeatureRendererType,
421
143
  '@jbrowse/core/pluggableElementTypes/renderers/RendererType': RendererType,
422
144
  '@jbrowse/core/configuration': Configuration,
423
145
  '@jbrowse/core/util/types/mst': mstTypes,
424
146
  '@jbrowse/core/ui': coreUi,
147
+ '@jbrowse/core/ui/theme': coreTheme,
425
148
  '@jbrowse/core/util': coreUtil,
426
149
  '@jbrowse/core/util/color': coreColor,
427
150
  '@jbrowse/core/util/layouts': coreLayouts,
@@ -430,13 +153,18 @@ const libs = {
430
153
  '@jbrowse/core/util/io': coreIo,
431
154
  '@jbrowse/core/util/mst-reflection': coreMstReflection,
432
155
  '@jbrowse/core/util/rxjs': rxjs,
433
- '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail': {
434
- Attributes: LazyAttributes,
435
- FeatureDetails: LazyFeatureDetails,
436
- BaseCard: LazyBaseCard,
437
- BaseCoreDetails,
438
- BaseAttributes,
439
- },
156
+ '@jbrowse/core/pluggableElementTypes': pluggableElementTypes,
157
+ '@jbrowse/core/pluggableElementTypes/ViewType': ViewType_1.default,
158
+ '@jbrowse/core/pluggableElementTypes/AdapterType': AdapterType_1.default,
159
+ '@jbrowse/core/pluggableElementTypes/DisplayType': DisplayType_1.default,
160
+ '@jbrowse/core/pluggableElementTypes/TrackType': TrackType_1.default,
161
+ '@jbrowse/core/pluggableElementTypes/WidgetType': WidgetType_1.default,
162
+ '@jbrowse/core/pluggableElementTypes/models': pluggableElementTypeModels,
163
+ '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType': ServerSideRendererType,
164
+ '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType': CircularChordRendererType_1.default,
165
+ '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType': BoxRendererType,
166
+ '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType': FeatureRendererType,
167
+ '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail': BaseFeatureDetails_1.BaseFeatureDetail,
440
168
  '@jbrowse/core/data_adapters/BaseAdapter': BaseAdapterExports,
441
169
  };
442
170
  const libsList = Object.keys(libs);
@@ -20,7 +20,13 @@ export default class TextSearchManager {
20
20
  [x: string]: any;
21
21
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>);
22
22
  } & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>)[];
23
- getAdaptersWithAssembly(assemblyName: string, confs: AnyConfigurationModel[]): AnyConfigurationModel[];
23
+ getAdaptersWithAssembly(assemblyName: string, confs: AnyConfigurationModel[]): ({
24
+ [x: string]: any;
25
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
26
+ setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
27
+ [x: string]: any;
28
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>);
29
+ } & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>)[];
24
30
  getTrackAdaptersWithAssembly(assemblyName: string, confs: AnyConfigurationModel[]): ({
25
31
  [x: string]: any;
26
32
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
@@ -29,5 +35,14 @@ export default class TextSearchManager {
29
35
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>);
30
36
  } & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>)[];
31
37
  search(args: BaseTextSearchArgs, searchScope: SearchScope, rankFn: (results: BaseResult[]) => BaseResult[]): Promise<BaseResult[]>;
32
- sortResults(results: BaseResult[], rankFn: (results: BaseResult[]) => BaseResult[]): BaseResult[];
38
+ search2({ args, searchScope, rankFn, }: {
39
+ args: BaseTextSearchArgs;
40
+ searchScope: SearchScope;
41
+ rankFn: (results: BaseResult[]) => BaseResult[];
42
+ }): Promise<BaseResult[]>;
43
+ sortResults2({ results, rankFn, args, }: {
44
+ results: BaseResult[];
45
+ args: BaseTextSearchArgs;
46
+ rankFn: (results: BaseResult[]) => BaseResult[];
47
+ }): BaseResult[];
33
48
  }
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ufuzzy_1 = __importDefault(require("@leeoniya/ufuzzy"));
6
7
  const configuration_1 = require("../configuration");
7
8
  const QuickLRU_1 = __importDefault(require("../util/QuickLRU"));
8
9
  class TextSearchManager {
@@ -54,12 +55,31 @@ class TextSearchManager {
54
55
  .map(conf => conf.textSearching.textSearchAdapter);
55
56
  }
56
57
  async search(args, searchScope, rankFn) {
58
+ return this.search2({ args, searchScope, rankFn });
59
+ }
60
+ async search2({ args, searchScope, rankFn, }) {
57
61
  const adapters = await this.loadTextSearchAdapters(searchScope);
58
62
  const results = await Promise.all(adapters.map(a => a.searchIndex(args)));
59
- return this.sortResults(results.flat(), rankFn);
63
+ return this.sortResults2({
64
+ args,
65
+ results: results.flat(),
66
+ rankFn,
67
+ });
60
68
  }
61
- sortResults(results, rankFn) {
62
- return rankFn(results.sort((a, b) => -b.getLabel().localeCompare(a.getLabel()))).sort((r1, r2) => r1.getScore() - r2.getScore());
69
+ sortResults2({ results, rankFn, args, }) {
70
+ const uf = new ufuzzy_1.default({});
71
+ const haystack = results.map(r => r.getDisplayString());
72
+ const needle = args.queryString;
73
+ const idxs = uf.filter(haystack, needle);
74
+ const res = [];
75
+ if (idxs != null && idxs.length > 0) {
76
+ const info = uf.info(idxs, haystack, needle);
77
+ const order = uf.sort(info, haystack, needle);
78
+ for (const element of order) {
79
+ res.push(results[info.idx[element]]);
80
+ }
81
+ }
82
+ return rankFn(res);
63
83
  }
64
84
  }
65
85
  exports.default = TextSearchManager;
@@ -3,5 +3,4 @@ import { BaseAdapter } from '../BaseAdapter';
3
3
  import type { BaseOptions } from '../BaseAdapter/BaseOptions';
4
4
  export default class CytobandAdapter extends BaseAdapter {
5
5
  getData(opts?: BaseOptions): Promise<SimpleFeature[]>;
6
- freeResources(): void;
7
6
  }
@@ -13,6 +13,7 @@ class CytobandAdapter extends BaseAdapter_1.BaseAdapter {
13
13
  return text
14
14
  .split(/\n|\r\n|\r/)
15
15
  .filter(f => !!f.trim())
16
+ .filter(f => !f.startsWith('#'))
16
17
  .map((line, i) => {
17
18
  const [refName, start, end, name, type] = line.split('\t');
18
19
  return new util_1.SimpleFeature({
@@ -26,6 +27,5 @@ class CytobandAdapter extends BaseAdapter_1.BaseAdapter {
26
27
  });
27
28
  });
28
29
  }
29
- freeResources() { }
30
30
  }
31
31
  exports.default = CytobandAdapter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/core",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "JBrowse 2 core libraries used by plugins",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -31,9 +31,10 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@floating-ui/react": "^0.27.0",
34
- "@gmod/abortable-promise-cache": "^2.0.0",
35
- "@gmod/bgzf-filehandle": "^2.0.1",
36
- "@gmod/http-range-fetcher": "^4.0.0",
34
+ "@gmod/abortable-promise-cache": "^3.0.1",
35
+ "@gmod/bgzf-filehandle": "^3.0.2",
36
+ "@gmod/http-range-fetcher": "^5.0.0",
37
+ "@leeoniya/ufuzzy": "^1.0.18",
37
38
  "@mui/icons-material": "^7.0.0",
38
39
  "@mui/material": "^7.0.0",
39
40
  "@mui/x-data-grid": "^8.0.0",
@@ -46,7 +47,7 @@
46
47
  "dompurify": "^3.2.0",
47
48
  "escape-html": "^1.0.3",
48
49
  "fast-deep-equal": "^3.1.3",
49
- "generic-filehandle2": "^1.0.0",
50
+ "generic-filehandle2": "^2.0.1",
50
51
  "jexl": "^2.3.0",
51
52
  "librpc-web-mod": "^1.1.5",
52
53
  "load-script": "^2.0.0",
@@ -69,5 +70,5 @@
69
70
  "access": "public",
70
71
  "directory": "dist"
71
72
  },
72
- "gitHead": "0bb64d8cc7ecdd167515308b31eec3d9acbc59e4"
73
+ "gitHead": "a9f1ac35fc2dd810bae92cdaf1fc19995bee4413"
73
74
  }
@@ -86,17 +86,34 @@ function createBaseTrackConfig(pluginManager) {
86
86
  const snap = pluginManager.evaluateExtensionPoint('Core-preProcessTrackConfig', structuredClone(s2));
87
87
  const { displays = [] } = snap;
88
88
  if (snap.trackId !== 'placeholderId') {
89
- const configDisplayTypes = new Set(displays.map(d => d.type));
90
- for (const d of pluginManager.getTrackType(snap.type).displayTypes) {
91
- if (!configDisplayTypes.has(d.name)) {
92
- displays.push({
93
- displayId: `${snap.trackId}-${d.name}`,
94
- type: d.name,
95
- });
89
+ try {
90
+ const configDisplayTypes = new Set(displays.map(d => d.type));
91
+ for (const d of pluginManager.getTrackType(snap.type)
92
+ .displayTypes) {
93
+ if (!configDisplayTypes.has(d.name)) {
94
+ displays.push({
95
+ displayId: `${snap.trackId}-${d.name}`,
96
+ type: d.name,
97
+ });
98
+ }
96
99
  }
97
100
  }
101
+ catch (e) {
102
+ throw new Error(`Unknown track type "${snap.type}" in ${JSON.stringify(snap)}`, {
103
+ cause: e,
104
+ });
105
+ }
98
106
  }
99
- return { ...snap, displays };
107
+ return {
108
+ ...snap,
109
+ displays: displays.map(d => {
110
+ var _a;
111
+ return ({
112
+ ...d,
113
+ displayId: (_a = d.displayId) !== null && _a !== void 0 ? _a : `${snap.trackId}-${d.type}`,
114
+ });
115
+ }),
116
+ };
100
117
  },
101
118
  explicitIdentifier: 'trackId',
102
119
  explicitlyTyped: true,
@@ -72,8 +72,14 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
72
72
  }
73
73
  async render(props) {
74
74
  const features = props.features || (await this.getFeatures(props));
75
- const result = await super.render({ ...props, features });
76
- return { ...result, features };
75
+ const result = await super.render({
76
+ ...props,
77
+ features,
78
+ });
79
+ return {
80
+ ...result,
81
+ features,
82
+ };
77
83
  }
78
84
  }
79
85
  exports.default = FeatureRendererType;