@jbrowse/plugin-spreadsheet-view 2.17.0 → 2.18.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 (197) hide show
  1. package/dist/LaunchSpreadsheetView/index.d.ts +1 -1
  2. package/dist/LaunchSpreadsheetView/index.js +1 -3
  3. package/dist/SpreadsheetView/ImportWizard.d.ts +51 -0
  4. package/dist/SpreadsheetView/ImportWizard.js +240 -0
  5. package/dist/SpreadsheetView/SpreadsheetModel.d.ts +79 -0
  6. package/dist/SpreadsheetView/SpreadsheetModel.js +133 -0
  7. package/dist/SpreadsheetView/SpreadsheetViewModel.d.ts +299 -0
  8. package/dist/SpreadsheetView/SpreadsheetViewModel.js +94 -0
  9. package/dist/SpreadsheetView/components/BreakendMultiLevelOptionDialog.d.ts +1 -0
  10. package/dist/SpreadsheetView/components/BreakendMultiLevelOptionDialog.js +5 -0
  11. package/dist/SpreadsheetView/components/BreakendSingleLevelOptionDialog.d.ts +1 -0
  12. package/dist/SpreadsheetView/components/BreakendSingleLevelOptionDialog.js +5 -0
  13. package/dist/SpreadsheetView/components/FeatureMenu.d.ts +8 -0
  14. package/dist/SpreadsheetView/components/FeatureMenu.js +95 -0
  15. package/dist/SpreadsheetView/components/ImportWizard.d.ts +2 -2
  16. package/dist/SpreadsheetView/components/ImportWizard.js +40 -43
  17. package/dist/SpreadsheetView/components/LocationCell.d.ts +8 -0
  18. package/dist/SpreadsheetView/components/LocationCell.js +31 -0
  19. package/dist/SpreadsheetView/components/NumberEditor.d.ts +1 -1
  20. package/dist/SpreadsheetView/components/NumberEditor.js +1 -3
  21. package/dist/SpreadsheetView/components/SpreadsheetDataGrid.d.ts +6 -0
  22. package/dist/SpreadsheetView/components/SpreadsheetDataGrid.js +27 -0
  23. package/dist/SpreadsheetView/components/SpreadsheetView.d.ts +3 -3
  24. package/dist/SpreadsheetView/components/SpreadsheetView.js +23 -44
  25. package/dist/SpreadsheetView/components/TrackSelector.d.ts +7 -0
  26. package/dist/SpreadsheetView/components/TrackSelector.js +49 -0
  27. package/dist/SpreadsheetView/importAdapters/BedImport.d.ts +26 -17
  28. package/dist/SpreadsheetView/importAdapters/BedImport.js +53 -139
  29. package/dist/SpreadsheetView/importAdapters/BedpeImport.d.ts +36 -0
  30. package/dist/SpreadsheetView/importAdapters/BedpeImport.js +79 -0
  31. package/dist/SpreadsheetView/importAdapters/STARFusionImport.d.ts +25 -9
  32. package/dist/SpreadsheetView/importAdapters/STARFusionImport.js +27 -62
  33. package/dist/SpreadsheetView/importAdapters/VcfImport.d.ts +19 -12
  34. package/dist/SpreadsheetView/importAdapters/VcfImport.js +53 -98
  35. package/dist/SpreadsheetView/importAdapters/isNumber.d.ts +1 -0
  36. package/dist/SpreadsheetView/importAdapters/isNumber.js +14 -0
  37. package/dist/SpreadsheetView/importAdapters/util.d.ts +2 -0
  38. package/dist/SpreadsheetView/importAdapters/util.js +22 -0
  39. package/dist/SpreadsheetView/index.d.ts +2 -2
  40. package/dist/SpreadsheetView/index.js +2 -2
  41. package/dist/SpreadsheetView/util.d.ts +7 -0
  42. package/dist/SpreadsheetView/util.js +13 -0
  43. package/dist/index.d.ts +1 -1
  44. package/dist/index.js +1 -3
  45. package/esm/LaunchSpreadsheetView/index.d.ts +1 -1
  46. package/esm/LaunchSpreadsheetView/index.js +1 -3
  47. package/esm/SpreadsheetView/ImportWizard.d.ts +51 -0
  48. package/esm/SpreadsheetView/ImportWizard.js +214 -0
  49. package/esm/SpreadsheetView/SpreadsheetModel.d.ts +79 -0
  50. package/esm/SpreadsheetView/SpreadsheetModel.js +127 -0
  51. package/esm/SpreadsheetView/SpreadsheetViewModel.d.ts +299 -0
  52. package/esm/SpreadsheetView/SpreadsheetViewModel.js +88 -0
  53. package/esm/SpreadsheetView/components/BreakendMultiLevelOptionDialog.d.ts +1 -0
  54. package/esm/SpreadsheetView/components/BreakendMultiLevelOptionDialog.js +1 -0
  55. package/esm/SpreadsheetView/components/BreakendSingleLevelOptionDialog.d.ts +1 -0
  56. package/esm/SpreadsheetView/components/BreakendSingleLevelOptionDialog.js +1 -0
  57. package/esm/SpreadsheetView/components/FeatureMenu.d.ts +8 -0
  58. package/esm/SpreadsheetView/components/FeatureMenu.js +66 -0
  59. package/esm/SpreadsheetView/components/ImportWizard.d.ts +2 -2
  60. package/esm/SpreadsheetView/components/ImportWizard.js +41 -44
  61. package/esm/SpreadsheetView/components/LocationCell.d.ts +8 -0
  62. package/esm/SpreadsheetView/components/LocationCell.js +25 -0
  63. package/esm/SpreadsheetView/components/NumberEditor.d.ts +1 -1
  64. package/esm/SpreadsheetView/components/NumberEditor.js +2 -4
  65. package/esm/SpreadsheetView/components/SpreadsheetDataGrid.d.ts +6 -0
  66. package/esm/SpreadsheetView/components/SpreadsheetDataGrid.js +22 -0
  67. package/esm/SpreadsheetView/components/SpreadsheetView.d.ts +3 -3
  68. package/esm/SpreadsheetView/components/SpreadsheetView.js +24 -45
  69. package/esm/SpreadsheetView/components/TrackSelector.d.ts +7 -0
  70. package/esm/SpreadsheetView/components/TrackSelector.js +24 -0
  71. package/esm/SpreadsheetView/importAdapters/BedImport.d.ts +26 -17
  72. package/esm/SpreadsheetView/importAdapters/BedImport.js +53 -137
  73. package/esm/SpreadsheetView/importAdapters/BedpeImport.d.ts +36 -0
  74. package/esm/SpreadsheetView/importAdapters/BedpeImport.js +76 -0
  75. package/esm/SpreadsheetView/importAdapters/STARFusionImport.d.ts +25 -9
  76. package/esm/SpreadsheetView/importAdapters/STARFusionImport.js +27 -62
  77. package/esm/SpreadsheetView/importAdapters/VcfImport.d.ts +19 -12
  78. package/esm/SpreadsheetView/importAdapters/VcfImport.js +53 -97
  79. package/esm/SpreadsheetView/importAdapters/isNumber.d.ts +1 -0
  80. package/esm/SpreadsheetView/importAdapters/isNumber.js +11 -0
  81. package/esm/SpreadsheetView/importAdapters/util.d.ts +2 -0
  82. package/esm/SpreadsheetView/importAdapters/util.js +18 -0
  83. package/esm/SpreadsheetView/index.d.ts +2 -2
  84. package/esm/SpreadsheetView/index.js +2 -2
  85. package/esm/SpreadsheetView/util.d.ts +7 -0
  86. package/esm/SpreadsheetView/util.js +10 -0
  87. package/esm/index.d.ts +1 -1
  88. package/esm/index.js +1 -3
  89. package/package.json +6 -6
  90. package/dist/SpreadsheetView/components/CellData.d.ts +0 -9
  91. package/dist/SpreadsheetView/components/CellData.js +0 -14
  92. package/dist/SpreadsheetView/components/ColumnFilterControls.d.ts +0 -3
  93. package/dist/SpreadsheetView/components/ColumnFilterControls.js +0 -58
  94. package/dist/SpreadsheetView/components/ColumnMenu.d.ts +0 -16
  95. package/dist/SpreadsheetView/components/ColumnMenu.js +0 -140
  96. package/dist/SpreadsheetView/components/DataRow.d.ts +0 -12
  97. package/dist/SpreadsheetView/components/DataRow.js +0 -81
  98. package/dist/SpreadsheetView/components/DataTable.d.ts +0 -10
  99. package/dist/SpreadsheetView/components/DataTable.js +0 -42
  100. package/dist/SpreadsheetView/components/DataTableHeader.d.ts +0 -6
  101. package/dist/SpreadsheetView/components/DataTableHeader.js +0 -104
  102. package/dist/SpreadsheetView/components/GlobalFilterControls.d.ts +0 -5
  103. package/dist/SpreadsheetView/components/GlobalFilterControls.js +0 -68
  104. package/dist/SpreadsheetView/components/RowCountMessage.d.ts +0 -6
  105. package/dist/SpreadsheetView/components/RowCountMessage.js +0 -33
  106. package/dist/SpreadsheetView/components/RowMenu.d.ts +0 -9
  107. package/dist/SpreadsheetView/components/RowMenu.js +0 -39
  108. package/dist/SpreadsheetView/components/SortIndicator.d.ts +0 -6
  109. package/dist/SpreadsheetView/components/SortIndicator.js +0 -27
  110. package/dist/SpreadsheetView/components/Spreadsheet.d.ts +0 -11
  111. package/dist/SpreadsheetView/components/Spreadsheet.js +0 -25
  112. package/dist/SpreadsheetView/components/StatusBar.d.ts +0 -11
  113. package/dist/SpreadsheetView/components/StatusBar.js +0 -44
  114. package/dist/SpreadsheetView/importAdapters/ImportUtils.d.ts +0 -42
  115. package/dist/SpreadsheetView/importAdapters/ImportUtils.js +0 -123
  116. package/dist/SpreadsheetView/models/ColumnDataTypes/LocEnd.d.ts +0 -12
  117. package/dist/SpreadsheetView/models/ColumnDataTypes/LocEnd.js +0 -20
  118. package/dist/SpreadsheetView/models/ColumnDataTypes/LocRef.d.ts +0 -12
  119. package/dist/SpreadsheetView/models/ColumnDataTypes/LocRef.js +0 -20
  120. package/dist/SpreadsheetView/models/ColumnDataTypes/LocStart.d.ts +0 -12
  121. package/dist/SpreadsheetView/models/ColumnDataTypes/LocStart.js +0 -20
  122. package/dist/SpreadsheetView/models/ColumnDataTypes/LocString.d.ts +0 -13
  123. package/dist/SpreadsheetView/models/ColumnDataTypes/LocString.js +0 -183
  124. package/dist/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.d.ts +0 -19
  125. package/dist/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js +0 -23
  126. package/dist/SpreadsheetView/models/ColumnDataTypes/Number.d.ts +0 -30
  127. package/dist/SpreadsheetView/models/ColumnDataTypes/Number.js +0 -126
  128. package/dist/SpreadsheetView/models/ColumnDataTypes/Text.d.ts +0 -28
  129. package/dist/SpreadsheetView/models/ColumnDataTypes/Text.js +0 -129
  130. package/dist/SpreadsheetView/models/ColumnDataTypes/index.d.ts +0 -71
  131. package/dist/SpreadsheetView/models/ColumnDataTypes/index.js +0 -37
  132. package/dist/SpreadsheetView/models/FilterControls.d.ts +0 -26
  133. package/dist/SpreadsheetView/models/FilterControls.js +0 -85
  134. package/dist/SpreadsheetView/models/ImportWizard.d.ts +0 -31
  135. package/dist/SpreadsheetView/models/ImportWizard.js +0 -186
  136. package/dist/SpreadsheetView/models/Row.d.ts +0 -17
  137. package/dist/SpreadsheetView/models/Row.js +0 -43
  138. package/dist/SpreadsheetView/models/Spreadsheet.d.ts +0 -260
  139. package/dist/SpreadsheetView/models/Spreadsheet.js +0 -174
  140. package/dist/SpreadsheetView/models/SpreadsheetView.d.ts +0 -482
  141. package/dist/SpreadsheetView/models/SpreadsheetView.js +0 -199
  142. package/dist/SpreadsheetView/models/StaticRowSet.d.ts +0 -163
  143. package/dist/SpreadsheetView/models/StaticRowSet.js +0 -56
  144. package/esm/SpreadsheetView/components/CellData.d.ts +0 -9
  145. package/esm/SpreadsheetView/components/CellData.js +0 -9
  146. package/esm/SpreadsheetView/components/ColumnFilterControls.d.ts +0 -3
  147. package/esm/SpreadsheetView/components/ColumnFilterControls.js +0 -53
  148. package/esm/SpreadsheetView/components/ColumnMenu.d.ts +0 -16
  149. package/esm/SpreadsheetView/components/ColumnMenu.js +0 -135
  150. package/esm/SpreadsheetView/components/DataRow.d.ts +0 -12
  151. package/esm/SpreadsheetView/components/DataRow.js +0 -76
  152. package/esm/SpreadsheetView/components/DataTable.d.ts +0 -10
  153. package/esm/SpreadsheetView/components/DataTable.js +0 -37
  154. package/esm/SpreadsheetView/components/DataTableHeader.d.ts +0 -6
  155. package/esm/SpreadsheetView/components/DataTableHeader.js +0 -76
  156. package/esm/SpreadsheetView/components/GlobalFilterControls.d.ts +0 -5
  157. package/esm/SpreadsheetView/components/GlobalFilterControls.js +0 -40
  158. package/esm/SpreadsheetView/components/RowCountMessage.d.ts +0 -6
  159. package/esm/SpreadsheetView/components/RowCountMessage.js +0 -28
  160. package/esm/SpreadsheetView/components/RowMenu.d.ts +0 -9
  161. package/esm/SpreadsheetView/components/RowMenu.js +0 -34
  162. package/esm/SpreadsheetView/components/SortIndicator.d.ts +0 -6
  163. package/esm/SpreadsheetView/components/SortIndicator.js +0 -21
  164. package/esm/SpreadsheetView/components/Spreadsheet.d.ts +0 -11
  165. package/esm/SpreadsheetView/components/Spreadsheet.js +0 -20
  166. package/esm/SpreadsheetView/components/StatusBar.d.ts +0 -11
  167. package/esm/SpreadsheetView/components/StatusBar.js +0 -39
  168. package/esm/SpreadsheetView/importAdapters/ImportUtils.d.ts +0 -42
  169. package/esm/SpreadsheetView/importAdapters/ImportUtils.js +0 -95
  170. package/esm/SpreadsheetView/models/ColumnDataTypes/LocEnd.d.ts +0 -12
  171. package/esm/SpreadsheetView/models/ColumnDataTypes/LocEnd.js +0 -15
  172. package/esm/SpreadsheetView/models/ColumnDataTypes/LocRef.d.ts +0 -12
  173. package/esm/SpreadsheetView/models/ColumnDataTypes/LocRef.js +0 -15
  174. package/esm/SpreadsheetView/models/ColumnDataTypes/LocStart.d.ts +0 -12
  175. package/esm/SpreadsheetView/models/ColumnDataTypes/LocStart.js +0 -15
  176. package/esm/SpreadsheetView/models/ColumnDataTypes/LocString.d.ts +0 -13
  177. package/esm/SpreadsheetView/models/ColumnDataTypes/LocString.js +0 -178
  178. package/esm/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.d.ts +0 -19
  179. package/esm/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js +0 -20
  180. package/esm/SpreadsheetView/models/ColumnDataTypes/Number.d.ts +0 -30
  181. package/esm/SpreadsheetView/models/ColumnDataTypes/Number.js +0 -119
  182. package/esm/SpreadsheetView/models/ColumnDataTypes/Text.d.ts +0 -28
  183. package/esm/SpreadsheetView/models/ColumnDataTypes/Text.js +0 -122
  184. package/esm/SpreadsheetView/models/ColumnDataTypes/index.d.ts +0 -71
  185. package/esm/SpreadsheetView/models/ColumnDataTypes/index.js +0 -29
  186. package/esm/SpreadsheetView/models/FilterControls.d.ts +0 -26
  187. package/esm/SpreadsheetView/models/FilterControls.js +0 -83
  188. package/esm/SpreadsheetView/models/ImportWizard.d.ts +0 -31
  189. package/esm/SpreadsheetView/models/ImportWizard.js +0 -161
  190. package/esm/SpreadsheetView/models/Row.d.ts +0 -17
  191. package/esm/SpreadsheetView/models/Row.js +0 -41
  192. package/esm/SpreadsheetView/models/Spreadsheet.d.ts +0 -260
  193. package/esm/SpreadsheetView/models/Spreadsheet.js +0 -169
  194. package/esm/SpreadsheetView/models/SpreadsheetView.d.ts +0 -482
  195. package/esm/SpreadsheetView/models/SpreadsheetView.js +0 -194
  196. package/esm/SpreadsheetView/models/StaticRowSet.d.ts +0 -163
  197. package/esm/SpreadsheetView/models/StaticRowSet.js +0 -51
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = LocationCell;
7
+ const react_1 = __importDefault(require("react"));
8
+ const util_1 = require("@jbrowse/core/util");
9
+ const material_1 = require("@mui/material");
10
+ const mobx_state_tree_1 = require("mobx-state-tree");
11
+ const util_2 = require("../util");
12
+ const FeatureMenu_1 = __importDefault(require("./FeatureMenu"));
13
+ function LocationCell({ model, feature, }) {
14
+ return (react_1.default.createElement(react_1.default.Fragment, null,
15
+ react_1.default.createElement(FeatureMenu_1.default, { session: (0, util_1.getSession)(model), spreadsheetViewId: (0, mobx_state_tree_1.getParent)(model).id, assemblyName: model.assemblyName, feature: feature }),
16
+ react_1.default.createElement(material_1.Link, { href: "#", onClick: async (event) => {
17
+ try {
18
+ event.preventDefault();
19
+ await (0, util_2.locationLinkClick)({
20
+ spreadsheetViewId: (0, mobx_state_tree_1.getParent)(model).id,
21
+ session: (0, util_1.getSession)(model),
22
+ locString: (0, util_1.assembleLocString)(feature),
23
+ assemblyName: model.assemblyName,
24
+ });
25
+ }
26
+ catch (e) {
27
+ console.error(e);
28
+ (0, util_1.getSession)(model).notifyError(`${e}`, e);
29
+ }
30
+ } }, (0, util_1.assembleLocString)(feature))));
31
+ }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ImportWizardModel } from '../models/ImportWizard';
2
+ import type { ImportWizardModel } from '../ImportWizard';
3
3
  declare const NumberEditor: ({ model, disabled, modelPropName, modelSetterName, }: {
4
4
  model: ImportWizardModel;
5
5
  disabled: boolean;
@@ -25,8 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const react_1 = __importStar(require("react"));
27
27
  const material_1 = require("@mui/material");
28
- const mui_1 = require("tss-react/mui");
29
28
  const mobx_react_1 = require("mobx-react");
29
+ const mui_1 = require("tss-react/mui");
30
30
  const useStyles = (0, mui_1.makeStyles)()({
31
31
  textField: {
32
32
  width: '2rem',
@@ -34,14 +34,12 @@ const useStyles = (0, mui_1.makeStyles)()({
34
34
  },
35
35
  });
36
36
  const NumberEditor = (0, mobx_react_1.observer)(function ({ model, disabled, modelPropName, modelSetterName, }) {
37
- // @ts-expect-error
38
37
  const [val, setVal] = (0, react_1.useState)(model[modelPropName]);
39
38
  const { classes } = useStyles();
40
39
  (0, react_1.useEffect)(() => {
41
40
  const num = Number.parseInt(val, 10);
42
41
  if (!Number.isNaN(num)) {
43
42
  if (num > 0) {
44
- // @ts-expect-error
45
43
  model[modelSetterName](num);
46
44
  }
47
45
  else {
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { SpreadsheetModel } from '../SpreadsheetModel';
3
+ declare const SpreadsheetDataGrid: ({ model, }: {
4
+ model: SpreadsheetModel;
5
+ }) => React.JSX.Element;
6
+ export default SpreadsheetDataGrid;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const ui_1 = require("@jbrowse/core/ui");
8
+ const x_data_grid_1 = require("@mui/x-data-grid");
9
+ const mobx_react_1 = require("mobx-react");
10
+ const SpreadsheetDataGrid = (0, mobx_react_1.observer)(function ({ model, }) {
11
+ const { rows, dataGridColumns, visibleColumns } = model;
12
+ const apiRef = (0, x_data_grid_1.useGridApiRef)();
13
+ return rows && dataGridColumns ? (react_1.default.createElement(x_data_grid_1.DataGrid, { apiRef: apiRef, checkboxSelection: true, disableRowSelectionOnClick: true, columnHeaderHeight: 35, columnVisibilityModel: visibleColumns, onFilterModelChange: () => {
14
+ setTimeout(() => {
15
+ model.setVisibleRows(apiRef.current.state.visibleRowsLookup);
16
+ });
17
+ }, onColumnVisibilityModelChange: n => {
18
+ model.setVisibleColumns(n);
19
+ }, rowHeight: 25, hideFooter: rows.length < 100, slots: {
20
+ toolbar: x_data_grid_1.GridToolbar,
21
+ }, slotProps: {
22
+ toolbar: {
23
+ showQuickFilter: true,
24
+ },
25
+ }, rows: rows, columns: dataGridColumns })) : (react_1.default.createElement(ui_1.LoadingEllipses, { variant: "h6" }));
26
+ });
27
+ exports.default = SpreadsheetDataGrid;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { SpreadsheetViewModel } from '../models/SpreadsheetView';
3
- declare const SpreadsheetView: ({ model, }: {
2
+ import type { SpreadsheetViewModel } from '../SpreadsheetViewModel';
3
+ declare const SpreadsheetContainer: ({ model, }: {
4
4
  model: SpreadsheetViewModel;
5
5
  }) => React.JSX.Element;
6
- export default SpreadsheetView;
6
+ export default SpreadsheetContainer;
@@ -27,60 +27,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
- const material_1 = require("@mui/material");
31
- const mui_1 = require("tss-react/mui");
32
- const mobx_react_1 = require("mobx-react");
33
30
  const ui_1 = require("@jbrowse/core/ui");
34
- // locals
35
- const ImportWizard_1 = __importDefault(require("./ImportWizard"));
36
- const Spreadsheet_1 = __importDefault(require("./Spreadsheet"));
37
- const GlobalFilterControls_1 = __importDefault(require("./GlobalFilterControls"));
38
- const ColumnFilterControls_1 = __importDefault(require("./ColumnFilterControls"));
39
- const StatusBar_1 = __importDefault(require("./StatusBar"));
40
- const headerHeight = 52;
41
- const colFilterHeight = 46;
42
- const statusBarHeight = 40;
31
+ const mobx_react_1 = require("mobx-react");
32
+ const mui_1 = require("tss-react/mui");
33
+ const SpreadsheetDataGrid_1 = __importDefault(require("./SpreadsheetDataGrid"));
34
+ const ImportWizard = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ImportWizard'))));
43
35
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
44
- header: {
45
- overflow: 'hidden',
46
- whiteSpace: 'nowrap',
47
- boxSizing: 'border-box',
48
- height: headerHeight,
49
- paddingLeft: theme.spacing(1),
50
- },
51
36
  contentArea: {
52
37
  overflow: 'auto',
38
+ position: 'relative',
39
+ marginBottom: theme.spacing(1),
40
+ background: theme.palette.background.paper,
53
41
  },
54
42
  resizeHandle: {
55
- height: 3,
56
- position: 'absolute',
57
- bottom: 0,
58
- left: 0,
59
- background: theme.palette.action.disabled,
43
+ height: 5,
60
44
  boxSizing: 'border-box',
45
+ background: theme.palette.action.disabled,
61
46
  borderTop: '1px solid #fafafa',
62
47
  },
63
48
  }));
64
49
  const SpreadsheetView = (0, mobx_react_1.observer)(function ({ model, }) {
50
+ const [initialHeight, setInitialHeight] = (0, react_1.useState)(0);
65
51
  const { classes } = useStyles();
66
- const { spreadsheet, filterControls, hideFilterControls, hideVerticalResizeHandle, mode, height, } = model;
67
- const [page, setPage] = (0, react_1.useState)(0);
68
- const [rowsPerPage, setRowsPerPage] = (0, react_1.useState)(100);
69
- return (react_1.default.createElement("div", null,
70
- mode !== 'display' || hideFilterControls ? null : (react_1.default.createElement(react_1.default.Fragment, null,
71
- react_1.default.createElement(material_1.Grid, { container: true, direction: "row", className: classes.header },
72
- react_1.default.createElement(material_1.Grid, { item: true },
73
- react_1.default.createElement(GlobalFilterControls_1.default, { model: model }))),
74
- filterControls.columnFilters.map((f, i) => (react_1.default.createElement(ColumnFilterControls_1.default, { key: `${f.columnNumber}-${i}`, viewModel: model, filterModel: f, columnNumber: f.columnNumber, height: colFilterHeight }))))),
75
- mode === 'import' ? (react_1.default.createElement(ImportWizard_1.default, { model: model.importWizard })) : (react_1.default.createElement("div", { className: classes.contentArea },
76
- react_1.default.createElement("div", { style: {
77
- position: 'relative',
78
- display: mode === 'display' ? undefined : 'none',
79
- } }, spreadsheet ? (react_1.default.createElement(Spreadsheet_1.default, { page: page, rowsPerPage: rowsPerPage, model: spreadsheet, height: height -
80
- headerHeight -
81
- filterControls.columnFilters.length * colFilterHeight -
82
- statusBarHeight })) : null))),
83
- spreadsheet ? (react_1.default.createElement(StatusBar_1.default, { page: page, setPage: setPage, rowsPerPage: rowsPerPage, setRowsPerPage: setRowsPerPage, mode: mode, spreadsheet: spreadsheet })) : null,
84
- hideVerticalResizeHandle ? null : (react_1.default.createElement(ui_1.ResizeHandle, { onDrag: model.resizeHeight, className: classes.resizeHandle }))));
52
+ const { spreadsheet, hideVerticalResizeHandle, height } = model;
53
+ return spreadsheet ? (react_1.default.createElement(react_1.default.Fragment, null,
54
+ react_1.default.createElement("div", { style: { height }, className: classes.contentArea },
55
+ react_1.default.createElement(SpreadsheetDataGrid_1.default, { model: spreadsheet })),
56
+ hideVerticalResizeHandle ? null : (react_1.default.createElement(ui_1.ResizeHandle, { onMouseDown: () => {
57
+ setInitialHeight(height);
58
+ }, onDrag: (_, dist) => model.setHeight(initialHeight - dist), className: classes.resizeHandle })))) : (react_1.default.createElement("div", null, "Unknown"));
59
+ });
60
+ const SpreadsheetContainer = (0, mobx_react_1.observer)(function ({ model, }) {
61
+ var _a;
62
+ return !((_a = model.spreadsheet) === null || _a === void 0 ? void 0 : _a.initialized) ? (react_1.default.createElement(react_1.Suspense, { fallback: null },
63
+ react_1.default.createElement(ImportWizard, { model: model.importWizard }))) : (react_1.default.createElement(SpreadsheetView, { model: model }));
85
64
  });
86
- exports.default = SpreadsheetView;
65
+ exports.default = SpreadsheetContainer;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { ImportWizardModel } from '../ImportWizard';
3
+ declare const TrackSelector: ({ model, selectedAssembly, }: {
4
+ model: ImportWizardModel;
5
+ selectedAssembly: string;
6
+ }) => React.JSX.Element;
7
+ export default TrackSelector;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const react_1 = __importStar(require("react"));
27
+ const ui_1 = require("@jbrowse/core/ui");
28
+ const util_1 = require("@jbrowse/core/util");
29
+ const material_1 = require("@mui/material");
30
+ const mobx_react_1 = require("mobx-react");
31
+ const TrackSelector = (0, mobx_react_1.observer)(function ({ model, selectedAssembly, }) {
32
+ var _a;
33
+ const filteredTracks = selectedAssembly
34
+ ? model.tracksForAssembly(selectedAssembly)
35
+ : undefined;
36
+ const resetTrack = ((_a = filteredTracks === null || filteredTracks === void 0 ? void 0 : filteredTracks[0]) === null || _a === void 0 ? void 0 : _a.track.trackId) || '';
37
+ const [selectedTrack, setSelectedTrack] = (0, react_1.useState)(resetTrack);
38
+ (0, react_1.useEffect)(() => {
39
+ const entry = filteredTracks === null || filteredTracks === void 0 ? void 0 : filteredTracks.find(f => selectedTrack === f.track.trackId);
40
+ if (entry) {
41
+ model.setFileSource(entry.loc);
42
+ model.setFileType(entry.type);
43
+ }
44
+ }, [model, selectedTrack, filteredTracks]);
45
+ return (react_1.default.createElement("div", null, (filteredTracks === null || filteredTracks === void 0 ? void 0 : filteredTracks.length) ? (react_1.default.createElement(material_1.TextField, { select: true, label: "Tracks", variant: "outlined", value: selectedTrack, onChange: event => {
46
+ setSelectedTrack(event.target.value);
47
+ } }, filteredTracks.map(({ track, label }) => (react_1.default.createElement(material_1.MenuItem, { key: track.trackId, value: track.trackId }, (0, util_1.coarseStripHTML)(label)))))) : (react_1.default.createElement(ui_1.ErrorMessage, { error: `No tracks found for ${selectedAssembly}` }))));
48
+ });
49
+ exports.default = TrackSelector;
@@ -1,17 +1,26 @@
1
- import { ParseOptions } from './ImportUtils';
2
- import type { Buffer } from 'buffer';
3
- export declare function removeBedHeaders(buffer: Buffer): Buffer;
4
- export declare function parseBedBuffer(buffer: Buffer, options: ParseOptions): Promise<{
5
- rowSet: import("./ImportUtils").RowSet;
6
- columnDisplayOrder: number[];
7
- hasColumnNames: boolean;
8
- columns: import("./ImportUtils").Column[];
9
- assemblyName: string | undefined;
10
- }>;
11
- export declare function parseBedPEBuffer(buffer: Buffer, options: ParseOptions): Promise<{
12
- rowSet: import("./ImportUtils").RowSet;
13
- columnDisplayOrder: number[];
14
- hasColumnNames: boolean;
15
- columns: import("./ImportUtils").Column[];
16
- assemblyName: string | undefined;
17
- }>;
1
+ export declare function parseBedBuffer(buffer: Uint8Array): {
2
+ columns: {
3
+ name: string;
4
+ }[];
5
+ rowSet: {
6
+ rows: {
7
+ cellData: {
8
+ refName: string | undefined;
9
+ start: number;
10
+ end: number;
11
+ name: string | undefined;
12
+ score: string | undefined;
13
+ strand: string | undefined;
14
+ };
15
+ feature: {
16
+ uniqueId: string;
17
+ refName: string | undefined;
18
+ start: number;
19
+ end: number;
20
+ name: string | undefined;
21
+ score: string | undefined;
22
+ strand: number | undefined;
23
+ };
24
+ }[];
25
+ };
26
+ };
@@ -1,144 +1,58 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeBedHeaders = removeBedHeaders;
4
3
  exports.parseBedBuffer = parseBedBuffer;
5
- exports.parseBedPEBuffer = parseBedPEBuffer;
6
- const ImportUtils_1 = require("./ImportUtils");
7
- const browserBytes = 'browser '.split('').map(c => c.charCodeAt(0));
8
- const trackBytes = 'track '.split('').map(c => c.charCodeAt(0));
9
- const commentBytes = '#'.split('').map(c => c.charCodeAt(0));
10
- function bytesAreFoundAt(position, buffer, bytes) {
11
- let i = 0;
12
- for (; i < bytes.length; i += 1) {
13
- if (buffer[position + i] !== bytes[i]) {
14
- return false;
15
- }
16
- }
17
- return true;
18
- }
19
- function removeBedHeaders(buffer) {
20
- // slice off the first lines of the buffer if it starts with one or more
21
- // header lines
22
- let i = 0;
23
- for (; i < buffer.length; i += 1) {
24
- if (bytesAreFoundAt(i, buffer, browserBytes) ||
25
- bytesAreFoundAt(i, buffer, trackBytes) ||
26
- bytesAreFoundAt(i, buffer, commentBytes)) {
27
- // consume up to the next newline
28
- do {
29
- i += 1;
30
- } while (buffer[i] !== 10);
31
- }
32
- else {
33
- // end of headers, return
34
- break;
35
- }
36
- }
37
- if (i) {
38
- return buffer.subarray(i);
39
- }
40
- return buffer;
41
- }
42
- async function parseBedBuffer(buffer, options) {
43
- const b = removeBedHeaders(buffer);
44
- const data = await (0, ImportUtils_1.parseTsvBuffer)(b);
45
- const bedColumns = [
46
- { name: 'chrom', dataType: { type: 'LocRef' } },
47
- { name: 'chromStart', dataType: { type: 'LocStart' } },
48
- { name: 'chromEnd', dataType: { type: 'LocEnd' } },
49
- { name: 'name', dataType: { type: 'Text' } },
50
- { name: 'score', dataType: { type: 'Number' } },
51
- { name: 'strand', dataType: { type: 'Text' } },
52
- ];
53
- data.columns.forEach((col, colNumber) => {
54
- const bedColumn = bedColumns[colNumber];
55
- if (bedColumn) {
56
- col.name = bedColumn.name;
57
- col.dataType = bedColumn.dataType;
58
- }
59
- });
60
- data.hasColumnNames = true;
61
- data.assemblyName = options.selectedAssemblyName;
62
- data.columnDisplayOrder.push(data.columnDisplayOrder.length);
63
- data.columns.unshift({
64
- name: 'Location',
65
- dataType: { type: 'LocString' },
66
- isDerived: true,
67
- derivationFunctionText: `jexl:{text:row.cells[0].text+':'+row.cells[1].text+'..'+row.cells[2].text,\n
68
- extendedData: {refName: row.cells.ref.text, start: parseInt(row.cells.start.text,10), end: parseInt(row.cells.end.text,10)}}`,
69
- });
70
- return data;
71
- }
72
- async function parseBedPEBuffer(buffer, options) {
73
- const b = removeBedHeaders(buffer);
74
- const data = await (0, ImportUtils_1.parseTsvBuffer)(b);
75
- const bedColumns = [
76
- { name: 'chrom1', dataType: { type: 'Text' }, featureField: ['refName'] },
77
- { name: 'start1', dataType: { type: 'Number' }, featureField: ['start'] },
78
- { name: 'end1', dataType: { type: 'Number' }, featureField: ['end'] },
79
- {
80
- name: 'chrom2',
81
- dataType: { type: 'Text' },
82
- featureField: ['mate', 'refName'],
83
- },
84
- {
85
- name: 'start2',
86
- dataType: { type: 'Number' },
87
- featureField: ['mate', 'start'],
88
- },
89
- {
90
- name: 'end2',
91
- dataType: { type: 'Number' },
92
- featureField: ['mate', 'end'],
93
- },
94
- { name: 'name', dataType: { type: 'Text' }, featureField: ['name'] },
95
- { name: 'score', dataType: { type: 'Number' }, featureField: ['score'] },
96
- { name: 'strand1', dataType: { type: 'Text' }, featureField: ['strand'] },
97
- {
98
- name: 'strand2',
99
- dataType: { type: 'Text' },
100
- featureField: ['mate', 'strand'],
4
+ const isNumber_1 = require("./isNumber");
5
+ const util_1 = require("./util");
6
+ function parseBedBuffer(buffer) {
7
+ var _a, _b;
8
+ const lines = (0, util_1.bufferToLines)(buffer);
9
+ const rest = lines.filter(line => !(line.startsWith('#') ||
10
+ line.startsWith('browser') ||
11
+ line.startsWith('track')));
12
+ const lastHeaderLine = lines.findLast(line => line.startsWith('#'));
13
+ const coreColumns = ['refName', 'start', 'end'];
14
+ const numExtraColumns = Math.max(0, (((_b = (_a = rest[0]) === null || _a === void 0 ? void 0 : _a.split('\t')) === null || _b === void 0 ? void 0 : _b.length) || 0) - coreColumns.length);
15
+ const extraNames = (lastHeaderLine === null || lastHeaderLine === void 0 ? void 0 : lastHeaderLine.includes('\t'))
16
+ ? lastHeaderLine
17
+ .slice(1)
18
+ .split('\t')
19
+ .slice(coreColumns.length)
20
+ .map(t => t.trim())
21
+ : Array.from({ length: numExtraColumns }, (_v, i) => `field_${i}`);
22
+ const colNames = [...coreColumns, ...extraNames];
23
+ return {
24
+ columns: colNames.map(c => ({ name: c })),
25
+ rowSet: {
26
+ rows: rest.map((line, idx) => {
27
+ const cols = line.split('\t');
28
+ return {
29
+ cellData: {
30
+ refName: cols[0],
31
+ start: +cols[1],
32
+ end: +cols[2],
33
+ name: cols[3],
34
+ score: cols[4],
35
+ strand: cols[5],
36
+ ...Object.fromEntries(extraNames.map((n, idx) => {
37
+ const r = cols[idx + coreColumns.length];
38
+ return [n, (0, isNumber_1.isNumber)(r) ? +r : r];
39
+ })),
40
+ },
41
+ feature: {
42
+ uniqueId: `bed-${idx}`,
43
+ refName: cols[0],
44
+ start: +cols[1],
45
+ end: +cols[2],
46
+ name: cols[3],
47
+ score: cols[4],
48
+ strand: (0, util_1.parseStrand)(cols[5]),
49
+ ...Object.fromEntries(extraNames.map((n, idx) => {
50
+ const r = cols[idx + coreColumns.length];
51
+ return [n, (0, isNumber_1.isNumber)(r) ? +r : r];
52
+ })),
53
+ },
54
+ };
55
+ }),
101
56
  },
102
- ];
103
- data.columns.forEach((col, colNumber) => {
104
- const bedColumn = bedColumns[colNumber];
105
- if (bedColumn) {
106
- col.name = bedColumn.name;
107
- col.dataType = bedColumn.dataType;
108
- }
109
- });
110
- data.hasColumnNames = true;
111
- // decorate each row with a feature object in its extendedData
112
- data.rowSet.rows.forEach((row, rowNumber) => {
113
- const featureData = {};
114
- row.cells.forEach(({ text }, columnNumber) => {
115
- const bedColumn = bedColumns[columnNumber];
116
- const val = bedColumn && bedColumn.dataType.type === 'Number' && text
117
- ? Number.parseFloat(text)
118
- : text;
119
- if (bedColumn) {
120
- // a predefined column
121
- if (bedColumn.featureField.length === 2) {
122
- if (!featureData[bedColumn.featureField[0]]) {
123
- featureData[bedColumn.featureField[0]] = {};
124
- }
125
- featureData[bedColumn.featureField[0]][bedColumn.featureField[1]] =
126
- val;
127
- }
128
- else {
129
- featureData[bedColumn.featureField[0]] = val;
130
- }
131
- }
132
- else {
133
- // some other column
134
- featureData[`column${columnNumber + 1}`] = val;
135
- }
136
- });
137
- featureData.uniqueId = `bedpe-${rowNumber}`;
138
- row.extendedData = {
139
- feature: featureData,
140
- };
141
- });
142
- data.assemblyName = options.selectedAssemblyName;
143
- return data;
57
+ };
144
58
  }
@@ -0,0 +1,36 @@
1
+ export declare function parseBedPEBuffer(buffer: Uint8Array): {
2
+ columns: {
3
+ name: string;
4
+ }[];
5
+ rowSet: {
6
+ rows: {
7
+ cellData: {
8
+ refName: string | undefined;
9
+ start: string | undefined;
10
+ end: string | undefined;
11
+ mateRefName: string | undefined;
12
+ mateStart: string | undefined;
13
+ mateEnd: string | undefined;
14
+ name: string | undefined;
15
+ score: string | number | undefined;
16
+ strand: string | undefined;
17
+ mateStrand: string | undefined;
18
+ };
19
+ feature: {
20
+ uniqueId: string;
21
+ refName: string | undefined;
22
+ start: number;
23
+ end: number;
24
+ strand: number | undefined;
25
+ mate: {
26
+ refName: string | undefined;
27
+ start: number;
28
+ end: number;
29
+ strand: number | undefined;
30
+ };
31
+ name: string | undefined;
32
+ score: string | undefined;
33
+ };
34
+ }[];
35
+ };
36
+ };
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBedPEBuffer = parseBedPEBuffer;
4
+ const internals_1 = require("@mui/x-data-grid/internals");
5
+ const util_1 = require("./util");
6
+ function parseBedPEBuffer(buffer) {
7
+ var _a, _b;
8
+ const lines = (0, util_1.bufferToLines)(buffer);
9
+ const rest = lines.filter(line => !(line.startsWith('#') ||
10
+ line.startsWith('browser') ||
11
+ line.startsWith('track')));
12
+ const lastHeaderLine = lines.findLast(line => line.startsWith('#'));
13
+ const coreColumns = [
14
+ 'refName',
15
+ 'start',
16
+ 'end',
17
+ 'mateRef',
18
+ 'mateStart',
19
+ 'mateEnd',
20
+ 'name',
21
+ 'score',
22
+ 'strand',
23
+ 'mateStrand',
24
+ ];
25
+ const numExtraColumns = Math.max(0, (((_b = (_a = rest[0]) === null || _a === void 0 ? void 0 : _a.split('\t')) === null || _b === void 0 ? void 0 : _b.length) || 0) - coreColumns.length);
26
+ const extraNames = (lastHeaderLine === null || lastHeaderLine === void 0 ? void 0 : lastHeaderLine.includes('\t'))
27
+ ? lastHeaderLine
28
+ .slice(1)
29
+ .split('\t')
30
+ .slice(coreColumns.length)
31
+ .map(t => t.trim())
32
+ : Array.from({ length: numExtraColumns }, (_v, i) => `field_${i}`);
33
+ const colNames = [...coreColumns, ...extraNames];
34
+ return {
35
+ columns: colNames.map(c => ({ name: c })),
36
+ rowSet: {
37
+ rows: rest.map((line, idx) => {
38
+ const cols = line.split('\t');
39
+ return {
40
+ cellData: {
41
+ refName: cols[0],
42
+ start: cols[1],
43
+ end: cols[2],
44
+ mateRefName: cols[3],
45
+ mateStart: cols[4],
46
+ mateEnd: cols[5],
47
+ name: cols[6],
48
+ score: +cols[7] || cols[7],
49
+ strand: cols[8],
50
+ mateStrand: cols[9],
51
+ ...Object.fromEntries(extraNames.map((n, idx) => {
52
+ const r = cols[idx + coreColumns.length];
53
+ return [n, (0, internals_1.isNumber)(r) ? +r : r];
54
+ })),
55
+ },
56
+ feature: {
57
+ uniqueId: `bedpe-${idx}`,
58
+ refName: cols[0],
59
+ start: +cols[1],
60
+ end: +cols[2],
61
+ strand: (0, util_1.parseStrand)(cols[8]),
62
+ mate: {
63
+ refName: cols[3],
64
+ start: +cols[4],
65
+ end: +cols[5],
66
+ strand: (0, util_1.parseStrand)(cols[9]),
67
+ },
68
+ name: cols[6],
69
+ score: cols[7],
70
+ ...Object.fromEntries(extraNames.map((n, idx) => {
71
+ const r = cols[idx + coreColumns.length];
72
+ return [n, (0, internals_1.isNumber)(r) ? +r : r];
73
+ })),
74
+ },
75
+ };
76
+ }),
77
+ },
78
+ };
79
+ }