@jbrowse/plugin-spreadsheet-view 2.16.1 → 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 -66
  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 -181
  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 -127
  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 -38
  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 -176
  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 -120
  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
@@ -1,126 +0,0 @@
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.FilterModelType = exports.NumberColumn = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const mobx_state_tree_1 = require("mobx-state-tree");
9
- const mobx_react_1 = require("mobx-react");
10
- const material_1 = require("@mui/material");
11
- const mui_1 = require("tss-react/mui");
12
- const MakeSpreadsheetColumnType_1 = __importDefault(require("./MakeSpreadsheetColumnType"));
13
- const OPERATIONS = [
14
- 'equals',
15
- 'greater than',
16
- 'less than',
17
- 'between',
18
- 'not between',
19
- ];
20
- // NOTE: assembly names, if present, are ignored in all of these predicates
21
- const OPERATION_PREDICATES = {
22
- equals: (numberInCell, firstNumber) => {
23
- return numberInCell === firstNumber;
24
- },
25
- 'greater than': (numberInCell, firstNumber) => {
26
- return numberInCell > firstNumber;
27
- },
28
- 'less than': (numberInCell, firstNumber) => {
29
- return numberInCell < firstNumber;
30
- },
31
- between: (numberInCell, firstNumber, secondNumber) => {
32
- return (numberInCell > firstNumber &&
33
- secondNumber !== undefined &&
34
- numberInCell < secondNumber);
35
- },
36
- };
37
- OPERATION_PREDICATES['not between'] = (numberInCell, firstNumber, secondNumber) => {
38
- return !OPERATION_PREDICATES.between(numberInCell, firstNumber, secondNumber);
39
- };
40
- const useStyles = (0, mui_1.makeStyles)()({
41
- textFilterControlAdornment: { marginRight: '-18px' },
42
- textFilterControl: {
43
- '& .MuiInput-formControl': {
44
- marginTop: 8,
45
- },
46
- '& .MuiInputLabel-formControl': {
47
- top: '-7px',
48
- '&.MuiInputLabel-shrink': {
49
- top: '-3px',
50
- },
51
- },
52
- },
53
- });
54
- // React component for the column filter control
55
- const FilterReactComponent = (0, mobx_react_1.observer)(({ filterModel }) => {
56
- const { classes } = useStyles();
57
- const operationChoices = OPERATIONS;
58
- return (react_1.default.createElement(react_1.default.Fragment, null,
59
- react_1.default.createElement(material_1.Select, { value: filterModel.operation, onChange: e => filterModel.setOperation(String(e.target.value)) }, operationChoices.map(name => (react_1.default.createElement(material_1.MenuItem, { key: name, value: name }, name)))),
60
- ' ',
61
- react_1.default.createElement(material_1.TextField, { label: "number", placeholder: "123", type: "number", error: filterModel.firstNumberIsInvalid, defaultValue: filterModel.firstNumber, onChange: evt => {
62
- filterModel.setFirstNumber(Number.parseFloat(evt.target.value));
63
- }, className: classes.textFilterControl }),
64
- filterModel.operation !== 'between' &&
65
- filterModel.operation !== 'not between' ? null : (react_1.default.createElement(react_1.default.Fragment, null,
66
- ' and ',
67
- react_1.default.createElement(material_1.TextField, { label: "number", placeholder: "456", type: "number", error: filterModel.secondNumberIsInvalid, defaultValue: filterModel.secondNumber, onChange: evt => filterModel.setSecondNumber(Number.parseFloat(evt.target.value)), className: classes.textFilterControl })))));
68
- });
69
- // MST model for the column filter control
70
- const FilterModelType = mobx_state_tree_1.types
71
- .model('ColumnNumberFilter', {
72
- type: mobx_state_tree_1.types.literal('Number'),
73
- columnNumber: mobx_state_tree_1.types.integer,
74
- firstNumber: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
75
- secondNumber: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
76
- operation: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.enumeration(OPERATIONS), OPERATIONS[0]),
77
- })
78
- .views(self => ({
79
- // returns a function that tests the given row
80
- get predicate() {
81
- if (typeof self.firstNumber !== 'number') {
82
- return function alwaysTrue() {
83
- return true;
84
- };
85
- }
86
- const { firstNumber, secondNumber, operation, columnNumber } = self; // avoid closing over self
87
- return function stringPredicate(_sheet, row) {
88
- const { cellsWithDerived } = row;
89
- const cell = cellsWithDerived[columnNumber];
90
- if (!(cell === null || cell === void 0 ? void 0 : cell.text)) {
91
- return false;
92
- }
93
- const parsedCellText = Number.parseFloat(cell.text);
94
- if (typeof parsedCellText !== 'number') {
95
- return false;
96
- }
97
- const predicate = OPERATION_PREDICATES[operation];
98
- if (!predicate) {
99
- throw new Error(`"${operation}" not implemented in location filter`);
100
- }
101
- return predicate(parsedCellText, firstNumber, secondNumber);
102
- };
103
- },
104
- }))
105
- .actions(self => ({
106
- setFirstNumber(n) {
107
- self.firstNumber =
108
- Number.isNaN(n) || typeof n !== 'number' ? undefined : n;
109
- },
110
- setSecondNumber(n) {
111
- self.secondNumber =
112
- Number.isNaN(n) || typeof n !== 'number' ? undefined : n;
113
- },
114
- setOperation(op) {
115
- self.operation = op;
116
- },
117
- }))
118
- .volatile(() => ({ ReactComponent: FilterReactComponent }));
119
- exports.FilterModelType = FilterModelType;
120
- const NumberColumn = (0, MakeSpreadsheetColumnType_1.default)('Number', {
121
- compare(cellA, cellB) {
122
- return Number.parseFloat(cellA.text) - Number.parseFloat(cellB.text);
123
- },
124
- FilterModelType,
125
- });
126
- exports.NumberColumn = NumberColumn;
@@ -1,28 +0,0 @@
1
- import React from 'react';
2
- declare const ColumnTextFilter: import("mobx-state-tree").IModelType<{
3
- type: import("mobx-state-tree").ISimpleType<"Text">;
4
- columnNumber: import("mobx-state-tree").ISimpleType<number>;
5
- stringToFind: import("mobx-state-tree").IType<string | undefined, string, string>;
6
- operation: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
7
- }, {
8
- readonly predicate: (_sheet: any, row: any) => boolean;
9
- } & {
10
- setString(s: string): void;
11
- setOperation(op: string): void;
12
- } & {
13
- ReactComponent: ({ filterModel }: {
14
- filterModel: any;
15
- }) => React.JSX.Element;
16
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
17
- declare const TextColumnType: import("mobx-state-tree").IModelType<{
18
- type: import("mobx-state-tree").ISimpleType<string>;
19
- }, {
20
- DataCellReactComponent: React.FC<any> | null;
21
- FilterModelType: any;
22
- displayName: string;
23
- categoryName: string | undefined;
24
- } & {
25
- compare: any;
26
- readonly hasFilter: boolean;
27
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
28
- export { TextColumnType as TextColumn, ColumnTextFilter as FilterModelType };
@@ -1,127 +0,0 @@
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.FilterModelType = exports.TextColumn = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const material_1 = require("@mui/material");
9
- const mui_1 = require("tss-react/mui");
10
- const MakeSpreadsheetColumnType_1 = __importDefault(require("./MakeSpreadsheetColumnType"));
11
- const mobx_state_tree_1 = require("mobx-state-tree");
12
- const mobx_react_1 = require("mobx-react");
13
- const mst_reflection_1 = require("@jbrowse/core/util/mst-reflection");
14
- // icons
15
- const Clear_1 = __importDefault(require("@mui/icons-material/Clear"));
16
- const OPERATIONS = [
17
- 'equals',
18
- 'contains',
19
- 'does not contain',
20
- 'does not equal',
21
- 'starts with',
22
- 'ends with',
23
- ];
24
- // NOTE: assembly names, if present, are ignored in all of these predicates
25
- const OPERATION_PREDICATES = {
26
- contains: (textInCell, stringToFind) => {
27
- return textInCell.toLowerCase().includes(stringToFind);
28
- },
29
- equals: (textInCell, stringToFind) => {
30
- return textInCell.toLowerCase() === stringToFind;
31
- },
32
- 'starts with': (textInCell, stringToFind) => {
33
- return textInCell.toLowerCase().startsWith(stringToFind);
34
- },
35
- 'ends with': (textInCell, stringToFind) => {
36
- const index = textInCell.toLowerCase().indexOf(stringToFind);
37
- if (index === -1) {
38
- return false;
39
- }
40
- return index === textInCell.length - stringToFind.length;
41
- },
42
- };
43
- OPERATION_PREDICATES['does not contain'] = (textInCell, stringToFind) => {
44
- return !OPERATION_PREDICATES.contains(textInCell, stringToFind);
45
- };
46
- OPERATION_PREDICATES['does not equal'] = (textInCell, stringToFind) => {
47
- return !OPERATION_PREDICATES.equals(textInCell, stringToFind);
48
- };
49
- const useStyles = (0, mui_1.makeStyles)()({
50
- textFilterControlAdornment: { marginRight: '-18px' },
51
- textFilterControl: {
52
- margin: 0,
53
- '& .MuiInput-formControl': {
54
- marginTop: 8,
55
- },
56
- '& .MuiInputLabel-formControl': {
57
- top: '-7px',
58
- '&.MuiInputLabel-shrink': {
59
- top: '-3px',
60
- },
61
- },
62
- },
63
- });
64
- // React component for the column filter control
65
- const FilterReactComponent = (0, mobx_react_1.observer)(({ filterModel }) => {
66
- const { classes } = useStyles();
67
- const operationChoices = (0, mst_reflection_1.getEnumerationValues)((0, mst_reflection_1.getSubType)((0, mst_reflection_1.getPropertyType)((0, mobx_state_tree_1.getPropertyMembers)(filterModel), 'operation')));
68
- return (react_1.default.createElement(react_1.default.Fragment, null,
69
- react_1.default.createElement(material_1.Select, { value: filterModel.operation, onChange: event => {
70
- filterModel.setOperation(String(event.target.value));
71
- } }, operationChoices.map(name => (react_1.default.createElement(material_1.MenuItem, { key: name, value: name }, name)))),
72
- ' ',
73
- react_1.default.createElement(material_1.TextField, { label: "text", value: filterModel.stringToFind, onChange: evt => filterModel.setString(evt.target.value), className: classes.textFilterControl, InputProps: {
74
- endAdornment: (react_1.default.createElement(material_1.InputAdornment, { className: classes.textFilterControlAdornment, position: "end" },
75
- react_1.default.createElement(material_1.IconButton, { "aria-label": "clear filter", onClick: () => filterModel.setString('') },
76
- react_1.default.createElement(Clear_1.default, null)))),
77
- } })));
78
- });
79
- // MST model for the column filter control
80
- const ColumnTextFilter = mobx_state_tree_1.types
81
- .model('ColumnTextFilter', {
82
- type: mobx_state_tree_1.types.literal('Text'),
83
- columnNumber: mobx_state_tree_1.types.integer,
84
- stringToFind: '',
85
- operation: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.enumeration(OPERATIONS), OPERATIONS[0]),
86
- })
87
- .views(self => ({
88
- // returns a function that tests the given row
89
- get predicate() {
90
- const { stringToFind, columnNumber, operation } = self; // avoid closing over self
91
- if (!stringToFind) {
92
- return function alwaysTrue() {
93
- return true;
94
- };
95
- }
96
- const s = stringToFind.toLowerCase(); // case insensitive match
97
- return function stringPredicate(_sheet, row) {
98
- const { cellsWithDerived } = row;
99
- const cell = cellsWithDerived[columnNumber];
100
- if (!(cell === null || cell === void 0 ? void 0 : cell.text)) {
101
- return false;
102
- }
103
- const predicate = OPERATION_PREDICATES[operation];
104
- if (!predicate) {
105
- throw new Error(`"${operation}" not implemented in location filter`);
106
- }
107
- return predicate(cell.text, s);
108
- };
109
- },
110
- }))
111
- .actions(self => ({
112
- setString(s) {
113
- self.stringToFind = s;
114
- },
115
- setOperation(op) {
116
- self.operation = op;
117
- },
118
- }))
119
- .volatile(() => ({ ReactComponent: FilterReactComponent }));
120
- exports.FilterModelType = ColumnTextFilter;
121
- const TextColumnType = (0, MakeSpreadsheetColumnType_1.default)('Text', {
122
- compare(cellA, cellB) {
123
- return cellA.text.localeCompare(cellB.text);
124
- },
125
- FilterModelType: ColumnTextFilter,
126
- });
127
- exports.TextColumn = TextColumnType;
@@ -1,71 +0,0 @@
1
- declare const ColumnTypes: {
2
- Number: import("mobx-state-tree").IModelType<{
3
- type: import("mobx-state-tree").ISimpleType<string>;
4
- }, {
5
- DataCellReactComponent: import("react").FC<any> | null;
6
- FilterModelType: any;
7
- displayName: string;
8
- categoryName: string | undefined;
9
- } & {
10
- compare: any;
11
- readonly hasFilter: boolean;
12
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
13
- Text: import("mobx-state-tree").IModelType<{
14
- type: import("mobx-state-tree").ISimpleType<string>;
15
- }, {
16
- DataCellReactComponent: import("react").FC<any> | null;
17
- FilterModelType: any;
18
- displayName: string;
19
- categoryName: string | undefined;
20
- } & {
21
- compare: any;
22
- readonly hasFilter: boolean;
23
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
24
- LocString: import("mobx-state-tree").IModelType<{
25
- type: import("mobx-state-tree").ISimpleType<string>;
26
- }, {
27
- DataCellReactComponent: import("react").FC<any> | null;
28
- FilterModelType: any;
29
- displayName: string;
30
- categoryName: string | undefined;
31
- } & {
32
- compare: any;
33
- readonly hasFilter: boolean;
34
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
35
- LocRef: import("mobx-state-tree").IModelType<{
36
- type: import("mobx-state-tree").ISimpleType<string>;
37
- }, {
38
- DataCellReactComponent: import("react").FC<any> | null;
39
- FilterModelType: any;
40
- displayName: string;
41
- categoryName: string | undefined;
42
- } & {
43
- compare: any;
44
- readonly hasFilter: boolean;
45
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
46
- LocStart: import("mobx-state-tree").IModelType<{
47
- type: import("mobx-state-tree").ISimpleType<string>;
48
- }, {
49
- DataCellReactComponent: import("react").FC<any> | null;
50
- FilterModelType: any;
51
- displayName: string;
52
- categoryName: string | undefined;
53
- } & {
54
- compare: any;
55
- readonly hasFilter: boolean;
56
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
57
- LocEnd: import("mobx-state-tree").IModelType<{
58
- type: import("mobx-state-tree").ISimpleType<string>;
59
- }, {
60
- DataCellReactComponent: import("react").FC<any> | null;
61
- FilterModelType: any;
62
- displayName: string;
63
- categoryName: string | undefined;
64
- } & {
65
- compare: any;
66
- readonly hasFilter: boolean;
67
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
68
- };
69
- declare const AnyColumnType: import("mobx-state-tree").IAnyType;
70
- declare const AnyFilterModelType: import("mobx-state-tree").IAnyType;
71
- export { ColumnTypes, AnyColumnType, AnyFilterModelType };
@@ -1,37 +0,0 @@
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.AnyFilterModelType = exports.AnyColumnType = exports.ColumnTypes = void 0;
7
- const LocString_1 = __importDefault(require("./LocString"));
8
- const LocRef_1 = __importDefault(require("./LocRef"));
9
- const LocStart_1 = __importDefault(require("./LocStart"));
10
- const LocEnd_1 = __importDefault(require("./LocEnd"));
11
- const Number_1 = require("./Number");
12
- const Text_1 = require("./Text");
13
- const mobx_state_tree_1 = require("mobx-state-tree");
14
- const ColumnTypes = {
15
- Number: Number_1.NumberColumn,
16
- Text: Text_1.TextColumn,
17
- LocString: LocString_1.default,
18
- LocRef: LocRef_1.default,
19
- LocStart: LocStart_1.default,
20
- LocEnd: LocEnd_1.default,
21
- };
22
- exports.ColumnTypes = ColumnTypes;
23
- const allColumnTypes = Object.values(ColumnTypes);
24
- const AnyColumnType = mobx_state_tree_1.types.union(...allColumnTypes);
25
- exports.AnyColumnType = AnyColumnType;
26
- const AnyFilterModelType = mobx_state_tree_1.types.union(...allColumnTypes
27
- .map(columnType => {
28
- // just instantiate the blank types to get their filter model types
29
- const { FilterModelType } = columnType.create({
30
- // @ts-expect-error
31
- type: columnType.properties.type.value,
32
- });
33
- return FilterModelType;
34
- })
35
- // some column types might not have filter machinery, filter those out
36
- .filter(t => !!t));
37
- exports.AnyFilterModelType = AnyFilterModelType;
@@ -1,26 +0,0 @@
1
- import { AnyFilterModelType as AnyColumnFilter } from './ColumnDataTypes';
2
- declare const model: import("mobx-state-tree").IModelType<{
3
- rowFullText: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IModelType<{
4
- type: import("mobx-state-tree").ISimpleType<"RowFullText">;
5
- stringToFind: import("mobx-state-tree").IType<string | undefined, string, string>;
6
- }, {
7
- readonly predicate: (_sheet: unknown, row: {
8
- cellsWithDerived: {
9
- text: string;
10
- }[];
11
- }) => boolean;
12
- } & {
13
- setString(s: string): void;
14
- clear(): void;
15
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
16
- columnFilters: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
17
- }, {
18
- readonly filters: any[];
19
- setRowFullTextFilter(stringToFind: string): void;
20
- rowPassesFilters(sheet: unknown, row: unknown): boolean;
21
- } & {
22
- addBlankColumnFilter(columnNumber: number): void;
23
- removeColumnFilter(filter: typeof AnyColumnFilter): boolean;
24
- clearAllFilters(): void;
25
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
26
- export default model;
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const mobx_state_tree_1 = require("mobx-state-tree");
4
- const ColumnDataTypes_1 = require("./ColumnDataTypes");
5
- // filter that finds a simple string in any of the cells of a row
6
- const RowFullTextFilter = mobx_state_tree_1.types
7
- .model('RowFullTextFilter', {
8
- type: mobx_state_tree_1.types.literal('RowFullText'),
9
- stringToFind: '',
10
- })
11
- .views(self => ({
12
- // returns a function that tests the given row
13
- get predicate() {
14
- let s = self.stringToFind; // avoid closing over self
15
- if (!s) {
16
- return function alwaysTrue() {
17
- return true;
18
- };
19
- }
20
- s = s.toLowerCase();
21
- return function stringPredicate(_sheet, row) {
22
- const { cellsWithDerived } = row;
23
- for (const cell of cellsWithDerived) {
24
- // note: case insensitive
25
- if (cell.text.toLowerCase().includes(s)) {
26
- return true;
27
- }
28
- }
29
- return false;
30
- };
31
- },
32
- }))
33
- .actions(self => ({
34
- setString(s) {
35
- self.stringToFind = s;
36
- },
37
- clear() {
38
- self.stringToFind = '';
39
- },
40
- }));
41
- const model = mobx_state_tree_1.types
42
- .model('SpreadsheetFilterControls', {
43
- rowFullText: mobx_state_tree_1.types.optional(RowFullTextFilter, () => ({
44
- type: 'RowFullText',
45
- stringToFind: '',
46
- })),
47
- columnFilters: mobx_state_tree_1.types.array(ColumnDataTypes_1.AnyFilterModelType),
48
- })
49
- .views(self => ({
50
- get filters() {
51
- return [self.rowFullText, ...self.columnFilters].filter(f => !!f);
52
- },
53
- setRowFullTextFilter(stringToFind) {
54
- // @ts-expect-error
55
- self.rowFullText = {
56
- type: 'RowFullText',
57
- stringToFind,
58
- };
59
- },
60
- rowPassesFilters(sheet, row) {
61
- for (const filter of this.filters) {
62
- if (!filter.predicate(sheet, row)) {
63
- return false;
64
- }
65
- }
66
- return true;
67
- },
68
- }))
69
- .actions(self => ({
70
- addBlankColumnFilter(columnNumber) {
71
- const { dataType } = (0, mobx_state_tree_1.getParent)(self).spreadsheet.columns[columnNumber];
72
- self.columnFilters.push({
73
- type: dataType.type,
74
- columnNumber,
75
- });
76
- },
77
- removeColumnFilter(filter) {
78
- return self.columnFilters.remove(filter);
79
- },
80
- clearAllFilters() {
81
- self.columnFilters.clear();
82
- self.rowFullText.clear();
83
- },
84
- }));
85
- exports.default = model;
@@ -1,31 +0,0 @@
1
- import { Instance } from 'mobx-state-tree';
2
- declare const ImportWizard: import("mobx-state-tree").IModelType<{
3
- fileType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- hasColumnNameLine: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
5
- columnNameLineNumber: import("mobx-state-tree").IType<number | undefined, number, number>;
6
- selectedAssemblyName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
7
- }, {
8
- fileTypes: string[];
9
- fileSource: any;
10
- error: unknown;
11
- loading: boolean;
12
- } & {
13
- readonly isReadyToOpen: any;
14
- readonly canCancel: any;
15
- readonly fileName: any;
16
- readonly requiresUnzip: any;
17
- isValidRefName(refName: string, assemblyName?: string): boolean;
18
- } & {
19
- setSelectedAssemblyName(s: string): void;
20
- setFileSource(newSource: unknown): void;
21
- toggleHasColumnNameLine(): void;
22
- setColumnNameLineNumber(newnumber: number): void;
23
- setFileType(typeName: string): void;
24
- setError(error: unknown): void;
25
- setLoaded(): void;
26
- cancelButton(): void;
27
- import(assemblyName: string): Promise<void>;
28
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
29
- export type ImportWizardStateModel = typeof ImportWizard;
30
- export type ImportWizardModel = Instance<ImportWizardStateModel>;
31
- export default ImportWizard;