@jbrowse/core 2.5.0 → 2.6.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.
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +0 -1
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +8 -25
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +2 -1
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +2 -1
- package/BaseFeatureWidget/BaseFeatureDetail/{DataGrid.d.ts → DataGridDetails.d.ts} +2 -1
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/{BasicField.d.ts → SimpleField.d.ts} +2 -2
- package/BaseFeatureWidget/BaseFeatureDetail/{BasicField.js → SimpleField.js} +3 -3
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +2 -1
- package/BaseFeatureWidget/BaseFeatureDetail/UriLink.d.ts +2 -1
- package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +9 -38
- package/BaseFeatureWidget/BaseFeatureDetail/index.js +14 -225
- package/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +1 -0
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +24 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +10 -13
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureSettingsDialog.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceHelpDialog.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceHelpDialog.js +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/index.d.ts +2 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +17 -17
- package/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +16 -16
- package/BaseFeatureWidget/util.js +15 -5
- package/PluginManager.d.ts +3 -3
- package/README.md +0 -2
- package/ReExports/modules.d.ts +3 -3
- package/ReExports/modules.js +0 -3
- package/assemblyManager/assemblyConfigSchema.d.ts +2 -0
- package/assemblyManager/assemblyConfigSchema.js +1 -0
- package/assemblyManager/assemblyManager.d.ts +112 -0
- package/assemblyManager/assemblyManager.js +12 -1
- package/assemblyManager/index.d.ts +1 -0
- package/configuration/index.d.ts +1 -1
- package/configuration/types.d.ts +3 -1
- package/data_adapters/BaseAdapter/BaseAdapter.js +1 -1
- package/data_adapters/BaseAdapter/index.d.ts +1 -1
- package/package.json +2 -2
- package/pluggableElementTypes/RpcMethodType.d.ts +9 -7
- package/pluggableElementTypes/RpcMethodType.js +9 -7
- package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +18 -0
- package/pluggableElementTypes/models/BaseConnectionModelFactory.js +9 -0
- package/pluggableElementTypes/models/BaseDisplayModel.d.ts +10 -1
- package/pluggableElementTypes/models/BaseDisplayModel.js +9 -1
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -0
- package/pluggableElementTypes/models/BaseTrackModel.js +1 -0
- package/pluggableElementTypes/models/BaseViewModel.d.ts +46 -2
- package/pluggableElementTypes/models/BaseViewModel.js +6 -0
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +6 -2
- package/pluggableElementTypes/models/InternetAccountModel.js +27 -20
- package/pluggableElementTypes/models/baseConnectionConfig.d.ts +5 -2
- package/pluggableElementTypes/models/baseConnectionConfig.js +2 -1
- package/pluggableElementTypes/models/baseInternetAccountConfig.js +1 -1
- package/pluggableElementTypes/models/baseTrackConfig.d.ts +2 -2
- package/pluggableElementTypes/models/baseTrackConfig.js +7 -5
- package/pluggableElementTypes/models/index.d.ts +1 -1
- package/pluggableElementTypes/renderers/BoxRendererType.js +1 -2
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +2 -1
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +3 -1
- package/pluggableElementTypes/renderers/FeatureRendererType.js +4 -6
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +2 -1
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +1 -1
- package/rpc/BaseRpcDriver.js +1 -7
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AppLogo.d.ts +2 -1
- package/ui/AssemblySelector.d.ts +2 -1
- package/ui/AssemblySelector.js +1 -1
- package/ui/CascadingMenu.d.ts +2 -1
- package/ui/CascadingMenuButton.d.ts +8 -0
- package/ui/CascadingMenuButton.js +20 -0
- package/ui/ColorPicker.d.ts +4 -3
- package/ui/Dialog.d.ts +5 -4
- package/ui/Dialog.js +5 -6
- package/ui/DropDownMenu.d.ts +2 -1
- package/ui/EditableTypography.js +1 -1
- package/ui/ErrorMessage.d.ts +2 -1
- package/ui/ErrorMessage.js +6 -2
- package/ui/FactoryResetDialog.d.ts +2 -1
- package/ui/FatalErrorDialog.d.ts +6 -6
- package/ui/FatalErrorDialog.js +7 -7
- package/ui/FileSelector/FileSelector.d.ts +2 -1
- package/ui/FileSelector/FileSelector.js +3 -2
- package/ui/FileSelector/LocalFileChooser.d.ts +2 -1
- package/ui/FileSelector/UrlChooser.d.ts +3 -3
- package/ui/FileSelector/UrlChooser.js +8 -10
- package/ui/Icons.d.ts +10 -9
- package/ui/LoadingEllipses.d.ts +2 -1
- package/ui/Logo.d.ts +3 -2
- package/ui/Menu.d.ts +2 -2
- package/ui/PrerenderedCanvas.d.ts +2 -1
- package/ui/ResizeBar.d.ts +1 -1
- package/ui/ResizeHandle.d.ts +2 -1
- package/ui/ReturnToImportFormDialog.d.ts +2 -1
- package/ui/SanitizedHTML.d.ts +2 -1
- package/ui/Snackbar.d.ts +7 -8
- package/ui/Snackbar.js +12 -17
- package/ui/SnackbarModel.d.ts +9 -3
- package/ui/SnackbarModel.js +3 -3
- package/ui/Tooltip.d.ts +2 -1
- package/ui/index.d.ts +0 -1
- package/ui/index.js +1 -3
- package/util/Base1DUtils.js +2 -1
- package/util/QuickLRU.d.ts +1 -1
- package/util/blockTypes.js +1 -1
- package/util/formatFastaStrings.js +1 -1
- package/util/index.d.ts +14 -0
- package/util/index.js +65 -8
- package/util/io/index.js +1 -1
- package/util/mst-reflection.js +1 -2
- package/util/offscreenCanvasUtils.d.ts +2 -2
- package/util/types/index.d.ts +6 -2
- package/util/types/index.js +6 -2
- package/util/types/util.d.ts +0 -3
- package/ui/AboutDialog.d.ts +0 -11
- package/ui/AboutDialog.js +0 -125
- package/ui/App.d.ts +0 -18
- package/ui/App.js +0 -114
- package/ui/AppToolbar.d.ts +0 -19
- package/ui/AppToolbar.js +0 -56
- package/ui/Drawer.d.ts +0 -8
- package/ui/Drawer.js +0 -34
- package/ui/DrawerWidget.d.ts +0 -5
- package/ui/DrawerWidget.js +0 -132
- package/ui/ViewContainer.d.ts +0 -9
- package/ui/ViewContainer.js +0 -76
- package/ui/ViewContainerTitle.d.ts +0 -5
- package/ui/ViewContainerTitle.js +0 -42
- package/ui/ViewLauncher.d.ts +0 -17
- package/ui/ViewLauncher.js +0 -50
- package/ui/ViewMenu.d.ts +0 -8
- package/ui/ViewMenu.js +0 -69
- package/ui/ViewPanel.d.ts +0 -18
- package/ui/ViewPanel.js +0 -49
- /package/BaseFeatureWidget/BaseFeatureDetail/{DataGrid.js → DataGridDetails.js} +0 -0
package/util/QuickLRU.d.ts
CHANGED
|
@@ -27,6 +27,6 @@ export default class QuickLRU extends Map<any, any> {
|
|
|
27
27
|
entriesDescending(): Generator<any[], void, unknown>;
|
|
28
28
|
entriesAscending(): Generator<any[], void, unknown>;
|
|
29
29
|
entries(): Generator<any[], void, unknown>;
|
|
30
|
-
forEach(callbackFunction: any, thisArgument?:
|
|
30
|
+
forEach(callbackFunction: any, thisArgument?: this): void;
|
|
31
31
|
[Symbol.iterator](): Generator<any[], void, unknown>;
|
|
32
32
|
}
|
package/util/blockTypes.js
CHANGED
|
@@ -7,7 +7,7 @@ class BlockSet {
|
|
|
7
7
|
}
|
|
8
8
|
push(block) {
|
|
9
9
|
if (block instanceof ElidedBlock && this.blocks.length > 0) {
|
|
10
|
-
const lastBlock = this.blocks
|
|
10
|
+
const lastBlock = this.blocks.at(-1);
|
|
11
11
|
if (lastBlock instanceof ElidedBlock) {
|
|
12
12
|
lastBlock.push(block);
|
|
13
13
|
return;
|
|
@@ -9,7 +9,7 @@ exports.formatSeqFasta = exports.formatFastaLines = void 0;
|
|
|
9
9
|
* @returns formatted sequence string
|
|
10
10
|
*/
|
|
11
11
|
function formatFastaLines(seqString) {
|
|
12
|
-
return seqString.
|
|
12
|
+
return seqString.replaceAll(/(.{1,80})/g, '$1\n').trimEnd();
|
|
13
13
|
}
|
|
14
14
|
exports.formatFastaLines = formatFastaLines;
|
|
15
15
|
/**
|
package/util/index.d.ts
CHANGED
|
@@ -356,4 +356,18 @@ export declare function max(arr: number[], init?: number): number;
|
|
|
356
356
|
export declare function min(arr: number[], init?: number): number;
|
|
357
357
|
export declare function sum(arr: number[]): number;
|
|
358
358
|
export declare function avg(arr: number[]): number;
|
|
359
|
+
export declare function groupBy<T>(array: T[], predicate: (v: T) => string): {
|
|
360
|
+
[key: string]: T[];
|
|
361
|
+
};
|
|
362
|
+
export declare function notEmpty<T>(value: T | null | undefined): value is T;
|
|
363
|
+
export declare function mergeIntervals<T extends {
|
|
364
|
+
start: number;
|
|
365
|
+
end: number;
|
|
366
|
+
}>(intervals: T[], w?: number): T[];
|
|
367
|
+
interface BasicFeature {
|
|
368
|
+
end: number;
|
|
369
|
+
start: number;
|
|
370
|
+
refName: string;
|
|
371
|
+
}
|
|
372
|
+
export declare function gatherOverlaps(regions: BasicFeature[]): BasicFeature[];
|
|
359
373
|
export { default as SimpleFeature, type Feature, type SimpleFeatureSerialized, isFeature, } from './simpleFeature';
|
package/util/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.bytesForRegions = exports.objectHash = exports.hashCode = exports.updateStatus = exports.generateCodonTable = exports.defaultCodonTable = exports.defaultStops = exports.defaultStarts = exports.measureText = exports.rIC = exports.blobToDataURL = exports.complement = exports.reverse = exports.revcom = exports.isElectron = exports.stringify = exports.shorten = exports.minmax = exports.renameRegionsIfNeeded = exports.renameRegionIfNeeded = exports.makeAbortableReaction = exports.findLast = exports.findLastIndex = exports.iterMap = exports.bpSpanPx = exports.featureSpanPx = exports.cartesianToPolar = exports.polarToCartesian = exports.degToRad = exports.radToDeg = exports.bpToPx = exports.clamp = exports.compareLocStrings = exports.compareLocs = exports.parseLocString = exports.parseLocStringOneBased = exports.assembleLocStringFast = exports.assembleLocString = exports.getContainingDisplay = exports.getContainingTrack = exports.getContainingView = exports.getSession = exports.findParentThatIs = exports.springAnimate = exports.findParentThat = exports.useDebouncedCallback = exports.useWidthSetter = exports.useDebounce = exports.inProduction = exports.inDevelopment = void 0;
|
|
21
|
-
exports.isFeature = exports.SimpleFeature = exports.avg = exports.sum = exports.min = exports.max = exports.localStorageSetItem = exports.localStorageGetItem = exports.getEnv = exports.measureGridWidth = exports.getStr = exports.getUriLink = exports.useLocalStorage = exports.getLayoutId = exports.getViewParams = exports.getTickDisplayStr = exports.toLocale = exports.getBpDisplayStr = exports.supportedIndexingAdapters = void 0;
|
|
21
|
+
exports.isFeature = exports.SimpleFeature = exports.gatherOverlaps = exports.mergeIntervals = exports.notEmpty = exports.groupBy = exports.avg = exports.sum = exports.min = exports.max = exports.localStorageSetItem = exports.localStorageGetItem = exports.getEnv = exports.measureGridWidth = exports.getStr = exports.getUriLink = exports.useLocalStorage = exports.getLayoutId = exports.getViewParams = exports.getTickDisplayStr = exports.toLocale = exports.getBpDisplayStr = exports.supportedIndexingAdapters = void 0;
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
23
23
|
const react_1 = require("react");
|
|
24
24
|
const is_object_1 = __importDefault(require("is-object"));
|
|
@@ -316,8 +316,8 @@ function parseLocStringOneBased(locString, isValidRefName) {
|
|
|
316
316
|
return {
|
|
317
317
|
assemblyName,
|
|
318
318
|
refName: prefix,
|
|
319
|
-
start: +start.
|
|
320
|
-
end: +end.
|
|
319
|
+
start: +start.replaceAll(',', ''),
|
|
320
|
+
end: +end.replaceAll(',', ''),
|
|
321
321
|
reversed,
|
|
322
322
|
};
|
|
323
323
|
}
|
|
@@ -330,15 +330,15 @@ function parseLocStringOneBased(locString, isValidRefName) {
|
|
|
330
330
|
return {
|
|
331
331
|
assemblyName,
|
|
332
332
|
refName: prefix,
|
|
333
|
-
start: +start.
|
|
333
|
+
start: +start.replaceAll(',', ''),
|
|
334
334
|
reversed,
|
|
335
335
|
};
|
|
336
336
|
}
|
|
337
337
|
return {
|
|
338
338
|
assemblyName,
|
|
339
339
|
refName: prefix,
|
|
340
|
-
start: +start.
|
|
341
|
-
end: +start.
|
|
340
|
+
start: +start.replaceAll(',', ''),
|
|
341
|
+
end: +start.replaceAll(',', ''),
|
|
342
342
|
reversed,
|
|
343
343
|
};
|
|
344
344
|
}
|
|
@@ -725,7 +725,7 @@ exports.complement = (() => {
|
|
|
725
725
|
G: 'C',
|
|
726
726
|
};
|
|
727
727
|
return (seqString) => {
|
|
728
|
-
return seqString.
|
|
728
|
+
return seqString.replaceAll(complementRegex, m => complementTable[m] || '');
|
|
729
729
|
};
|
|
730
730
|
})();
|
|
731
731
|
function blobToDataURL(blob) {
|
|
@@ -1004,7 +1004,7 @@ function getStr(obj) {
|
|
|
1004
1004
|
exports.getStr = getStr;
|
|
1005
1005
|
// tries to measure grid width without HTML tags included
|
|
1006
1006
|
function coarseStripHTML(s) {
|
|
1007
|
-
return s.
|
|
1007
|
+
return s.replaceAll(/(<([^>]+)>)/gi, '');
|
|
1008
1008
|
}
|
|
1009
1009
|
// heuristic measurement for a column of a @mui/x-data-grid, pass in values from a column
|
|
1010
1010
|
function measureGridWidth(elements, args) {
|
|
@@ -1060,6 +1060,63 @@ function avg(arr) {
|
|
|
1060
1060
|
return sum(arr) / arr.length;
|
|
1061
1061
|
}
|
|
1062
1062
|
exports.avg = avg;
|
|
1063
|
+
function groupBy(array, predicate) {
|
|
1064
|
+
var _a;
|
|
1065
|
+
const result = {};
|
|
1066
|
+
for (const value of array) {
|
|
1067
|
+
const entry = (result[_a = predicate(value)] || (result[_a] = []));
|
|
1068
|
+
entry.push(value);
|
|
1069
|
+
}
|
|
1070
|
+
return result;
|
|
1071
|
+
}
|
|
1072
|
+
exports.groupBy = groupBy;
|
|
1073
|
+
function notEmpty(value) {
|
|
1074
|
+
return value !== null && value !== undefined;
|
|
1075
|
+
}
|
|
1076
|
+
exports.notEmpty = notEmpty;
|
|
1077
|
+
function mergeIntervals(intervals, w = 5000) {
|
|
1078
|
+
// test if there are at least 2 intervals
|
|
1079
|
+
if (intervals.length <= 1) {
|
|
1080
|
+
return intervals;
|
|
1081
|
+
}
|
|
1082
|
+
const stack = [];
|
|
1083
|
+
let top = null;
|
|
1084
|
+
// sort the intervals based on their start values
|
|
1085
|
+
intervals = intervals.sort((a, b) => a.start - b.start);
|
|
1086
|
+
// push the 1st interval into the stack
|
|
1087
|
+
stack.push(intervals[0]);
|
|
1088
|
+
// start from the next interval and merge if needed
|
|
1089
|
+
for (let i = 1; i < intervals.length; i++) {
|
|
1090
|
+
// get the top element
|
|
1091
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1092
|
+
top = stack.at(-1);
|
|
1093
|
+
// if the current interval doesn't overlap with the
|
|
1094
|
+
// stack top element, push it to the stack
|
|
1095
|
+
if (top.end + w < intervals[i].start - w) {
|
|
1096
|
+
stack.push(intervals[i]);
|
|
1097
|
+
}
|
|
1098
|
+
// otherwise update the end value of the top element
|
|
1099
|
+
// if end of current interval is higher
|
|
1100
|
+
else if (top.end < intervals[i].end) {
|
|
1101
|
+
top.end = Math.max(top.end, intervals[i].end);
|
|
1102
|
+
stack.pop();
|
|
1103
|
+
stack.push(top);
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
return stack;
|
|
1107
|
+
}
|
|
1108
|
+
exports.mergeIntervals = mergeIntervals;
|
|
1109
|
+
function gatherOverlaps(regions) {
|
|
1110
|
+
const memo = {};
|
|
1111
|
+
for (const x of regions) {
|
|
1112
|
+
if (!memo[x.refName]) {
|
|
1113
|
+
memo[x.refName] = [];
|
|
1114
|
+
}
|
|
1115
|
+
memo[x.refName].push(x);
|
|
1116
|
+
}
|
|
1117
|
+
return Object.values(memo).flatMap(group => mergeIntervals(group.sort((a, b) => a.start - b.start)));
|
|
1118
|
+
}
|
|
1119
|
+
exports.gatherOverlaps = gatherOverlaps;
|
|
1063
1120
|
var simpleFeature_1 = require("./simpleFeature");
|
|
1064
1121
|
Object.defineProperty(exports, "SimpleFeature", { enumerable: true, get: function () { return __importDefault(simpleFeature_1).default; } });
|
|
1065
1122
|
Object.defineProperty(exports, "isFeature", { enumerable: true, get: function () { return simpleFeature_1.isFeature; } });
|
package/util/io/index.js
CHANGED
|
@@ -101,7 +101,7 @@ function getInternetAccount(location, pluginManager) {
|
|
|
101
101
|
configuration: location.internetAccountPreAuthorization.authInfo.configuration,
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
|
-
return;
|
|
104
|
+
return undefined;
|
|
105
105
|
}
|
|
106
106
|
// This fetch throws a special error if the response is "401" and includes a
|
|
107
107
|
// "WWW-Authenticate: Basic" header. This is so downstream code can retry if
|
package/util/mst-reflection.js
CHANGED
|
@@ -58,8 +58,7 @@ exports.getUnionSubTypes = getUnionSubTypes;
|
|
|
58
58
|
* get the type of one of the properties of the given MST model type
|
|
59
59
|
*/
|
|
60
60
|
function getPropertyType(type, propertyName) {
|
|
61
|
-
|
|
62
|
-
return propertyType;
|
|
61
|
+
return type.properties[propertyName];
|
|
63
62
|
}
|
|
64
63
|
exports.getPropertyType = getPropertyType;
|
|
65
64
|
/**
|
|
@@ -10,7 +10,7 @@ export declare function renderToAbstractCanvas(width: number, height: number, op
|
|
|
10
10
|
}, cb: (ctx: CanvasRenderingContext2D) => RendererRet): Promise<{
|
|
11
11
|
canvasRecordedData: any;
|
|
12
12
|
} | {
|
|
13
|
-
reactElement: JSX.Element;
|
|
13
|
+
reactElement: React.JSX.Element;
|
|
14
14
|
} | {
|
|
15
15
|
imageData: any;
|
|
16
16
|
}>;
|
|
@@ -24,5 +24,5 @@ export declare function ReactRendering({ rendering, }: {
|
|
|
24
24
|
reactElement?: React.ReactNode;
|
|
25
25
|
html?: string;
|
|
26
26
|
};
|
|
27
|
-
}): JSX.Element;
|
|
27
|
+
}): React.JSX.Element;
|
|
28
28
|
export {};
|
package/util/types/index.d.ts
CHANGED
|
@@ -63,7 +63,6 @@ export interface AbstractSessionModel extends AbstractViewContainer {
|
|
|
63
63
|
sessionConnections?: AnyConfigurationModel[];
|
|
64
64
|
connectionInstances?: {
|
|
65
65
|
name: string;
|
|
66
|
-
connectionId: string;
|
|
67
66
|
tracks: AnyConfigurationModel[];
|
|
68
67
|
configuration: AnyConfigurationModel;
|
|
69
68
|
}[];
|
|
@@ -98,6 +97,7 @@ export interface SessionWithWidgets extends AbstractSessionModel {
|
|
|
98
97
|
minimized: boolean;
|
|
99
98
|
visibleWidget?: Widget;
|
|
100
99
|
widgets: Map<string, Widget>;
|
|
100
|
+
hideAllWidgets: () => void;
|
|
101
101
|
activeWidgets: Map<string, Widget>;
|
|
102
102
|
addWidget(typeName: string, id: string, initialState?: Record<string, unknown>, configuration?: {
|
|
103
103
|
type: string;
|
|
@@ -115,9 +115,13 @@ export interface SessionWithDrawerWidgets extends SessionWithWidgets {
|
|
|
115
115
|
}
|
|
116
116
|
export declare function isSessionModelWithWidgets(thing: unknown): thing is SessionWithWidgets;
|
|
117
117
|
interface SessionWithConnections {
|
|
118
|
-
|
|
118
|
+
makeConnection: (arg: AnyConfigurationModel) => void;
|
|
119
119
|
}
|
|
120
120
|
export declare function isSessionModelWithConnections(thing: unknown): thing is SessionWithConnections;
|
|
121
|
+
interface SessionWithConnectionEditing {
|
|
122
|
+
addConnectionConf: (arg: AnyConfigurationModel) => void;
|
|
123
|
+
}
|
|
124
|
+
export declare function isSessionModelWithConnectionEditing(thing: unknown): thing is SessionWithConnectionEditing;
|
|
121
125
|
export interface SessionWithSessionPlugins extends AbstractSessionModel {
|
|
122
126
|
sessionPlugins: JBrowsePlugin[];
|
|
123
127
|
addSessionPlugin: Function;
|
package/util/types/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isRetryException = exports.isAuthNeededException = exports.RetryError = exports.AuthNeededError = exports.isUriLocation = exports.isAbstractMenuManager = exports.isRootModelWithInternetAccounts = exports.isAppRootModel = exports.isTrackViewModel = exports.isDisplayModel = exports.isTrackModel = exports.isViewModel = exports.isSelectionContainer = exports.isSessionWithSessionPlugins = exports.isSessionModelWithConnections = exports.isSessionModelWithWidgets = exports.isSessionWithAddTracks = exports.isSessionModelWithConfigEditing = exports.isSessionModel = exports.isViewContainer = void 0;
|
|
17
|
+
exports.isRetryException = exports.isAuthNeededException = exports.RetryError = exports.AuthNeededError = exports.isUriLocation = exports.isAbstractMenuManager = exports.isRootModelWithInternetAccounts = exports.isAppRootModel = exports.isTrackViewModel = exports.isDisplayModel = exports.isTrackModel = exports.isViewModel = exports.isSelectionContainer = exports.isSessionWithSessionPlugins = exports.isSessionModelWithConnectionEditing = exports.isSessionModelWithConnections = exports.isSessionModelWithWidgets = exports.isSessionWithAddTracks = exports.isSessionModelWithConfigEditing = exports.isSessionModel = exports.isViewContainer = void 0;
|
|
18
18
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
19
19
|
__exportStar(require("./util"), exports);
|
|
20
20
|
function isViewContainer(thing) {
|
|
@@ -46,9 +46,13 @@ function isSessionModelWithWidgets(thing) {
|
|
|
46
46
|
}
|
|
47
47
|
exports.isSessionModelWithWidgets = isSessionModelWithWidgets;
|
|
48
48
|
function isSessionModelWithConnections(thing) {
|
|
49
|
-
return isSessionModel(thing) && '
|
|
49
|
+
return isSessionModel(thing) && 'makeConnection' in thing;
|
|
50
50
|
}
|
|
51
51
|
exports.isSessionModelWithConnections = isSessionModelWithConnections;
|
|
52
|
+
function isSessionModelWithConnectionEditing(thing) {
|
|
53
|
+
return isSessionModel(thing) && 'addConnectionConf' in thing;
|
|
54
|
+
}
|
|
55
|
+
exports.isSessionModelWithConnectionEditing = isSessionModelWithConnectionEditing;
|
|
52
56
|
function isSessionWithSessionPlugins(thing) {
|
|
53
57
|
return isSessionModel(thing) && 'sessionPlugins' in thing;
|
|
54
58
|
}
|
package/util/types/util.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { IAnyModelType, Instance } from 'mobx-state-tree';
|
|
3
2
|
import PluginManager from '../../PluginManager';
|
|
4
3
|
/**
|
|
5
4
|
* Obtain the return type of a constructor function type.
|
|
@@ -12,5 +11,3 @@ export type ClassReturnedBy<FACT extends (pm: PluginManager) => any> = InstanceT
|
|
|
12
11
|
export type AnyReactComponentType = React.ComponentType<any>;
|
|
13
12
|
/** get the type that a predicate asserts */
|
|
14
13
|
export type TypeTestedByPredicate<PREDICATE extends (thing: any) => boolean> = PREDICATE extends (thing: any) => thing is infer TYPE ? TYPE : never;
|
|
15
|
-
/** get the type for an instance of an MST model in a PM factory function */
|
|
16
|
-
export type InstanceOfModelReturnedBy<FACTORY extends (pm: PluginManager) => IAnyModelType> = Instance<ReturnType<FACTORY>>;
|
package/ui/AboutDialog.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { AnyConfigurationModel } from '../configuration';
|
|
2
|
-
export declare function FileInfoPanel({ config }: {
|
|
3
|
-
config: AnyConfigurationModel;
|
|
4
|
-
}): JSX.Element | null;
|
|
5
|
-
export declare function AboutContents({ config }: {
|
|
6
|
-
config: AnyConfigurationModel;
|
|
7
|
-
}): JSX.Element;
|
|
8
|
-
export default function AboutDialog({ config, handleClose, }: {
|
|
9
|
-
config: AnyConfigurationModel;
|
|
10
|
-
handleClose: () => void;
|
|
11
|
-
}): JSX.Element;
|
package/ui/AboutDialog.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.AboutContents = exports.FileInfoPanel = void 0;
|
|
30
|
-
const react_1 = __importStar(require("react"));
|
|
31
|
-
const copy_to_clipboard_1 = __importDefault(require("copy-to-clipboard"));
|
|
32
|
-
const material_1 = require("@mui/material");
|
|
33
|
-
const mui_1 = require("tss-react/mui");
|
|
34
|
-
const configuration_1 = require("../configuration");
|
|
35
|
-
const Dialog_1 = __importDefault(require("./Dialog"));
|
|
36
|
-
const LoadingEllipses_1 = __importDefault(require("./LoadingEllipses"));
|
|
37
|
-
const util_1 = require("../util");
|
|
38
|
-
const tracks_1 = require("../util/tracks");
|
|
39
|
-
const BaseFeatureDetail_1 = require("../BaseFeatureWidget/BaseFeatureDetail");
|
|
40
|
-
const useStyles = (0, mui_1.makeStyles)()({
|
|
41
|
-
content: {
|
|
42
|
-
minWidth: 800,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
function FileInfoPanel({ config }) {
|
|
46
|
-
const [error, setError] = (0, react_1.useState)();
|
|
47
|
-
const [info, setInfo] = (0, react_1.useState)();
|
|
48
|
-
const session = (0, util_1.getSession)(config);
|
|
49
|
-
const { rpcManager } = session;
|
|
50
|
-
(0, react_1.useEffect)(() => {
|
|
51
|
-
const aborter = new AbortController();
|
|
52
|
-
const { signal } = aborter;
|
|
53
|
-
let cancelled = false;
|
|
54
|
-
(async () => {
|
|
55
|
-
try {
|
|
56
|
-
const adapterConfig = (0, configuration_1.readConfObject)(config, 'adapter');
|
|
57
|
-
const result = await rpcManager.call(config.trackId, 'CoreGetInfo', {
|
|
58
|
-
adapterConfig,
|
|
59
|
-
signal,
|
|
60
|
-
});
|
|
61
|
-
if (!cancelled) {
|
|
62
|
-
setInfo(result);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
catch (e) {
|
|
66
|
-
if (!cancelled) {
|
|
67
|
-
console.error(e);
|
|
68
|
-
setError(e);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
})();
|
|
72
|
-
return () => {
|
|
73
|
-
aborter.abort();
|
|
74
|
-
cancelled = true;
|
|
75
|
-
};
|
|
76
|
-
}, [config, rpcManager]);
|
|
77
|
-
const details = typeof info === 'string'
|
|
78
|
-
? {
|
|
79
|
-
header: `<pre>${info
|
|
80
|
-
.replace(/</g, '<')
|
|
81
|
-
.replace(/>/g, '>')}</pre>`,
|
|
82
|
-
}
|
|
83
|
-
: info || {};
|
|
84
|
-
return info !== null ? (react_1.default.createElement(BaseFeatureDetail_1.BaseCard, { title: "File info" }, error ? (react_1.default.createElement(material_1.Typography, { color: "error" }, `${error}`)) : info === undefined ? (react_1.default.createElement(LoadingEllipses_1.default, { message: "Loading file data" })) : (react_1.default.createElement(BaseFeatureDetail_1.Attributes, { attributes: details })))) : null;
|
|
85
|
-
}
|
|
86
|
-
exports.FileInfoPanel = FileInfoPanel;
|
|
87
|
-
function AboutContents({ config }) {
|
|
88
|
-
const [copied, setCopied] = (0, react_1.useState)(false);
|
|
89
|
-
const conf = (0, configuration_1.readConfObject)(config);
|
|
90
|
-
const session = (0, util_1.getSession)(config);
|
|
91
|
-
const hideUris = (0, configuration_1.getConf)(session, ['formatAbout', 'hideUris']) ||
|
|
92
|
-
(0, configuration_1.readConfObject)(config, ['formatAbout', 'hideUris']);
|
|
93
|
-
const { pluginManager } = (0, util_1.getEnv)(session);
|
|
94
|
-
const confPostExt = pluginManager.evaluateExtensionPoint('Core-customizeAbout', {
|
|
95
|
-
config: {
|
|
96
|
-
...conf,
|
|
97
|
-
...(0, configuration_1.getConf)(session, ['formatAbout', 'config'], { config: conf }),
|
|
98
|
-
...(0, configuration_1.readConfObject)(config, ['formatAbout', 'config'], { config: conf }),
|
|
99
|
-
},
|
|
100
|
-
}, { session, config });
|
|
101
|
-
const ExtraPanel = pluginManager.evaluateExtensionPoint('Core-extraAboutPanel', null, { session, config });
|
|
102
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
103
|
-
react_1.default.createElement(BaseFeatureDetail_1.BaseCard, { title: "Configuration" },
|
|
104
|
-
!hideUris ? (react_1.default.createElement(material_1.Button, { variant: "contained", style: { float: 'right' }, onClick: () => {
|
|
105
|
-
(0, copy_to_clipboard_1.default)(JSON.stringify(conf, null, 2));
|
|
106
|
-
setCopied(true);
|
|
107
|
-
setTimeout(() => setCopied(false), 1000);
|
|
108
|
-
} }, copied ? 'Copied to clipboard!' : 'Copy config')) : null,
|
|
109
|
-
react_1.default.createElement(BaseFeatureDetail_1.Attributes, { attributes: confPostExt, omit: ['displays', 'baseUri', 'refNames', 'formatAbout'], hideUris: hideUris })),
|
|
110
|
-
ExtraPanel ? (react_1.default.createElement(BaseFeatureDetail_1.BaseCard, { title: ExtraPanel.name },
|
|
111
|
-
react_1.default.createElement(ExtraPanel.Component, { config: config }))) : null,
|
|
112
|
-
react_1.default.createElement(FileInfoPanel, { config: config })));
|
|
113
|
-
}
|
|
114
|
-
exports.AboutContents = AboutContents;
|
|
115
|
-
function AboutDialog({ config, handleClose, }) {
|
|
116
|
-
const { classes } = useStyles();
|
|
117
|
-
const session = (0, util_1.getSession)(config);
|
|
118
|
-
const trackName = (0, tracks_1.getTrackName)(config, session);
|
|
119
|
-
const { pluginManager } = (0, util_1.getEnv)(session);
|
|
120
|
-
const AboutComponent = pluginManager.evaluateExtensionPoint('Core-replaceAbout', AboutContents, { session, config });
|
|
121
|
-
return (react_1.default.createElement(Dialog_1.default, { open: true, onClose: handleClose, title: trackName, maxWidth: "xl" },
|
|
122
|
-
react_1.default.createElement(material_1.DialogContent, { className: classes.content },
|
|
123
|
-
react_1.default.createElement(AboutComponent, { config: config }))));
|
|
124
|
-
}
|
|
125
|
-
exports.default = AboutDialog;
|
package/ui/App.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { NotificationLevel, SessionWithDrawerWidgets, SnackAction } from '../util';
|
|
3
|
-
import { MenuItem as JBMenuItem } from './Menu';
|
|
4
|
-
type SnackbarMessage = [string, NotificationLevel, SnackAction];
|
|
5
|
-
declare const App: (props: {
|
|
6
|
-
HeaderButtons?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
|
|
7
|
-
session: SessionWithDrawerWidgets & {
|
|
8
|
-
savedSessionNames: string[];
|
|
9
|
-
menus: {
|
|
10
|
-
label: string;
|
|
11
|
-
menuItems: JBMenuItem[];
|
|
12
|
-
}[];
|
|
13
|
-
renameCurrentSession: (arg: string) => void;
|
|
14
|
-
snackbarMessages: SnackbarMessage[];
|
|
15
|
-
popSnackbarMessage: () => unknown;
|
|
16
|
-
};
|
|
17
|
-
}) => JSX.Element;
|
|
18
|
-
export default App;
|
package/ui/App.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const react_1 = __importStar(require("react"));
|
|
30
|
-
const material_1 = require("@mui/material");
|
|
31
|
-
const mui_1 = require("tss-react/mui");
|
|
32
|
-
const Launch_1 = __importDefault(require("@mui/icons-material/Launch"));
|
|
33
|
-
const mobx_react_1 = require("mobx-react");
|
|
34
|
-
// ui elements
|
|
35
|
-
const DrawerWidget_1 = __importDefault(require("./DrawerWidget"));
|
|
36
|
-
const AppToolbar_1 = __importDefault(require("./AppToolbar"));
|
|
37
|
-
const Snackbar_1 = __importDefault(require("./Snackbar"));
|
|
38
|
-
const ViewLauncher_1 = __importDefault(require("./ViewLauncher"));
|
|
39
|
-
const ViewPanel_1 = __importDefault(require("./ViewPanel"));
|
|
40
|
-
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
41
|
-
root: {
|
|
42
|
-
fontFamily: 'Roboto',
|
|
43
|
-
display: 'grid',
|
|
44
|
-
height: '100vh',
|
|
45
|
-
width: '100%',
|
|
46
|
-
colorScheme: theme.palette.mode,
|
|
47
|
-
},
|
|
48
|
-
fabLeft: {
|
|
49
|
-
zIndex: 10000,
|
|
50
|
-
position: 'fixed',
|
|
51
|
-
bottom: theme.spacing(2),
|
|
52
|
-
left: theme.spacing(2),
|
|
53
|
-
},
|
|
54
|
-
fabRight: {
|
|
55
|
-
zIndex: 10000,
|
|
56
|
-
position: 'fixed',
|
|
57
|
-
bottom: theme.spacing(2),
|
|
58
|
-
right: theme.spacing(2),
|
|
59
|
-
},
|
|
60
|
-
menuBarAndComponents: {
|
|
61
|
-
gridColumn: 'main',
|
|
62
|
-
display: 'grid',
|
|
63
|
-
gridTemplateRows: '[menubar] min-content [components] auto',
|
|
64
|
-
height: '100vh',
|
|
65
|
-
},
|
|
66
|
-
menuBar: {
|
|
67
|
-
gridRow: 'menubar',
|
|
68
|
-
},
|
|
69
|
-
components: {
|
|
70
|
-
overflowY: 'auto',
|
|
71
|
-
gridRow: 'components',
|
|
72
|
-
},
|
|
73
|
-
appBar: {
|
|
74
|
-
flexGrow: 1,
|
|
75
|
-
},
|
|
76
|
-
}));
|
|
77
|
-
const App = (0, mobx_react_1.observer)(function (props) {
|
|
78
|
-
const { session } = props;
|
|
79
|
-
const { classes } = useStyles();
|
|
80
|
-
const { minimized, visibleWidget, drawerWidth, activeWidgets, views, drawerPosition, } = session;
|
|
81
|
-
const drawerVisible = visibleWidget && !minimized;
|
|
82
|
-
let grid;
|
|
83
|
-
if (drawerPosition === 'right') {
|
|
84
|
-
grid = [
|
|
85
|
-
`[main] 1fr`,
|
|
86
|
-
drawerVisible ? `[drawer] ${drawerWidth}px` : undefined,
|
|
87
|
-
];
|
|
88
|
-
}
|
|
89
|
-
else if (drawerPosition === 'left') {
|
|
90
|
-
grid = [
|
|
91
|
-
drawerVisible ? `[drawer] ${drawerWidth}px` : undefined,
|
|
92
|
-
`[main] 1fr`,
|
|
93
|
-
];
|
|
94
|
-
}
|
|
95
|
-
return (react_1.default.createElement("div", { className: classes.root, style: {
|
|
96
|
-
gridTemplateColumns: grid === null || grid === void 0 ? void 0 : grid.filter(f => !!f).join(' '),
|
|
97
|
-
} },
|
|
98
|
-
drawerVisible && drawerPosition === 'left' ? (react_1.default.createElement(DrawerWidget_1.default, { session: session })) : null,
|
|
99
|
-
session.DialogComponent ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null) },
|
|
100
|
-
react_1.default.createElement(session.DialogComponent, { ...session.DialogProps }))) : null,
|
|
101
|
-
react_1.default.createElement("div", { className: classes.menuBarAndComponents },
|
|
102
|
-
react_1.default.createElement("div", { className: classes.menuBar },
|
|
103
|
-
react_1.default.createElement(material_1.AppBar, { className: classes.appBar, position: "static" },
|
|
104
|
-
react_1.default.createElement(AppToolbar_1.default, { ...props }))),
|
|
105
|
-
react_1.default.createElement("div", { className: classes.components },
|
|
106
|
-
views.length > 0 ? (views.map(view => (react_1.default.createElement(ViewPanel_1.default, { key: `view-${view.id}`, view: view, session: session })))) : (react_1.default.createElement(ViewLauncher_1.default, { ...props })),
|
|
107
|
-
react_1.default.createElement("div", { style: { height: 300 } }))),
|
|
108
|
-
activeWidgets.size > 0 && minimized ? (react_1.default.createElement(material_1.Tooltip, { title: "Open drawer widget" },
|
|
109
|
-
react_1.default.createElement(material_1.Fab, { className: drawerPosition === 'right' ? classes.fabRight : classes.fabLeft, color: "primary", "data-testid": "drawer-maximize", onClick: () => session.showWidgetDrawer() },
|
|
110
|
-
react_1.default.createElement(Launch_1.default, null)))) : null,
|
|
111
|
-
drawerVisible && drawerPosition === 'right' ? (react_1.default.createElement(DrawerWidget_1.default, { session: session })) : null,
|
|
112
|
-
react_1.default.createElement(Snackbar_1.default, { session: session })));
|
|
113
|
-
});
|
|
114
|
-
exports.default = App;
|
package/ui/AppToolbar.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { NotificationLevel, SessionWithDrawerWidgets, SnackAction } from '../util';
|
|
3
|
-
import { MenuItem as JBMenuItem } from './Menu';
|
|
4
|
-
type SnackbarMessage = [string, NotificationLevel, SnackAction];
|
|
5
|
-
type AppSession = SessionWithDrawerWidgets & {
|
|
6
|
-
savedSessionNames: string[];
|
|
7
|
-
menus: {
|
|
8
|
-
label: string;
|
|
9
|
-
menuItems: JBMenuItem[];
|
|
10
|
-
}[];
|
|
11
|
-
renameCurrentSession: (arg: string) => void;
|
|
12
|
-
snackbarMessages: SnackbarMessage[];
|
|
13
|
-
popSnackbarMessage: () => unknown;
|
|
14
|
-
};
|
|
15
|
-
declare const AppToolbar: ({ session, HeaderButtons, }: {
|
|
16
|
-
HeaderButtons?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
|
|
17
|
-
session: AppSession;
|
|
18
|
-
}) => JSX.Element;
|
|
19
|
-
export default AppToolbar;
|
package/ui/AppToolbar.js
DELETED
|
@@ -1,56 +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
|
-
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const material_1 = require("@mui/material");
|
|
8
|
-
const mui_1 = require("tss-react/mui");
|
|
9
|
-
const mobx_react_1 = require("mobx-react");
|
|
10
|
-
// ui elements
|
|
11
|
-
const DropDownMenu_1 = __importDefault(require("./DropDownMenu"));
|
|
12
|
-
const EditableTypography_1 = __importDefault(require("./EditableTypography"));
|
|
13
|
-
const AppLogo_1 = __importDefault(require("./AppLogo"));
|
|
14
|
-
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
15
|
-
grow: {
|
|
16
|
-
flexGrow: 1,
|
|
17
|
-
},
|
|
18
|
-
inputBase: {
|
|
19
|
-
color: theme.palette.primary.contrastText,
|
|
20
|
-
},
|
|
21
|
-
inputRoot: {
|
|
22
|
-
'&:hover': {
|
|
23
|
-
backgroundColor: theme.palette.primary.light,
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
inputFocused: {
|
|
27
|
-
borderColor: theme.palette.secondary.main,
|
|
28
|
-
backgroundColor: theme.palette.primary.light,
|
|
29
|
-
},
|
|
30
|
-
}));
|
|
31
|
-
const AppToolbar = (0, mobx_react_1.observer)(function ({ session, HeaderButtons = react_1.default.createElement("div", null), }) {
|
|
32
|
-
const { classes } = useStyles();
|
|
33
|
-
const { savedSessionNames, name, menus } = session;
|
|
34
|
-
function handleNameChange(newName) {
|
|
35
|
-
if (savedSessionNames === null || savedSessionNames === void 0 ? void 0 : savedSessionNames.includes(newName)) {
|
|
36
|
-
session.notify(`Cannot rename session to "${newName}", a saved session with that name already exists`, 'warning');
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
session.renameCurrentSession(newName);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return (react_1.default.createElement(material_1.Toolbar, null,
|
|
43
|
-
menus.map(menu => (react_1.default.createElement(DropDownMenu_1.default, { key: menu.label, menuTitle: menu.label, menuItems: menu.menuItems, session: session }))),
|
|
44
|
-
react_1.default.createElement("div", { className: classes.grow }),
|
|
45
|
-
react_1.default.createElement(material_1.Tooltip, { title: "Rename Session", arrow: true },
|
|
46
|
-
react_1.default.createElement(EditableTypography_1.default, { value: name, setValue: handleNameChange, variant: "body1", classes: {
|
|
47
|
-
inputBase: classes.inputBase,
|
|
48
|
-
inputRoot: classes.inputRoot,
|
|
49
|
-
inputFocused: classes.inputFocused,
|
|
50
|
-
} })),
|
|
51
|
-
HeaderButtons,
|
|
52
|
-
react_1.default.createElement("div", { className: classes.grow }),
|
|
53
|
-
react_1.default.createElement("div", { style: { width: 150, maxHeight: 48 } },
|
|
54
|
-
react_1.default.createElement(AppLogo_1.default, { session: session }))));
|
|
55
|
-
});
|
|
56
|
-
exports.default = AppToolbar;
|
package/ui/Drawer.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { SessionWithDrawerWidgets } from '../util/types';
|
|
3
|
-
declare function Drawer({ children, session, }: {
|
|
4
|
-
children: React.ReactNode;
|
|
5
|
-
session: SessionWithDrawerWidgets;
|
|
6
|
-
}): JSX.Element;
|
|
7
|
-
declare const _default: typeof Drawer;
|
|
8
|
-
export default _default;
|