@jbrowse/core 1.4.4 → 1.5.3
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.d.ts +4 -4
- package/BaseFeatureWidget/BaseFeatureDetail.js +27 -8
- package/BaseFeatureWidget/SequenceFeatureDetails.js +10 -10
- package/BaseFeatureWidget/index.js +1 -1
- package/BaseFeatureWidget/types.d.ts +1 -1
- package/BaseFeatureWidget/util.js +3 -3
- package/CorePlugin.d.ts +0 -1
- package/CorePlugin.js +13 -1
- package/PluginLoader.d.ts +26 -4
- package/PluginLoader.js +337 -51
- package/PluginManager.d.ts +18 -11
- package/PluginManager.js +53 -31
- package/ReExports/list.js +1 -1
- package/ReExports/material-ui-colors.js +38 -38
- package/ReExports/modules.d.ts +19 -20
- package/ReExports/modules.js +10 -3
- package/TextSearch/BaseResults.d.ts +5 -14
- package/TextSearch/BaseResults.js +16 -58
- package/TextSearch/BaseResults.test.js +1 -11
- package/TextSearch/TextSearchManager.d.ts +3 -3
- package/TextSearch/TextSearchManager.js +1 -1
- package/assemblyManager/assembly.d.ts +21 -8
- package/assemblyManager/assembly.js +163 -120
- package/assemblyManager/assemblyConfigSchema.d.ts +3 -0
- package/assemblyManager/{assemblyConfigSchemas.js → assemblyConfigSchema.js} +35 -27
- package/assemblyManager/assemblyManager.d.ts +169 -60
- package/assemblyManager/index.d.ts +1 -1
- package/assemblyManager/index.js +5 -5
- package/configuration/configurationSchema.d.ts +3 -2
- package/configuration/configurationSchema.js +7 -10
- package/configuration/configurationSchema.test.js +4 -2
- package/configuration/configurationSlot.js +5 -4
- package/configuration/index.js +4 -4
- package/configuration/util.js +5 -5
- package/data_adapters/BaseAdapter.d.ts +5 -3
- package/data_adapters/BaseAdapter.js +7 -4
- package/data_adapters/BaseAdapter.test.js +4 -2
- package/data_adapters/CytobandAdapter.d.ts +8 -0
- package/data_adapters/CytobandAdapter.js +128 -0
- package/data_adapters/dataAdapterCache.js +3 -3
- package/package.json +7 -7
- package/pluggableElementTypes/AdapterType.d.ts +9 -1
- package/pluggableElementTypes/AdapterType.js +20 -0
- package/pluggableElementTypes/InternetAccountType.d.ts +12 -0
- package/pluggableElementTypes/InternetAccountType.js +64 -0
- package/pluggableElementTypes/PluggableElementBase.d.ts +1 -2
- package/pluggableElementTypes/PluggableElementBase.js +2 -3
- package/pluggableElementTypes/RpcMethodType.d.ts +3 -0
- package/pluggableElementTypes/RpcMethodType.js +269 -26
- package/pluggableElementTypes/RpcMethodType.test.d.ts +4 -0
- package/pluggableElementTypes/RpcMethodType.test.js +118 -0
- package/pluggableElementTypes/ViewType.d.ts +1 -1
- package/pluggableElementTypes/WidgetType.d.ts +1 -0
- package/pluggableElementTypes/index.d.ts +7 -3
- package/pluggableElementTypes/index.js +127 -1
- package/pluggableElementTypes/models/BaseDisplayModel.d.ts +6 -6
- package/pluggableElementTypes/models/BaseDisplayModel.js +1 -3
- package/pluggableElementTypes/models/BaseViewModel.js +13 -15
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +24 -0
- package/pluggableElementTypes/models/InternetAccountModel.js +85 -0
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +4 -0
- package/pluggableElementTypes/models/baseInternetAccountConfig.js +25 -0
- package/pluggableElementTypes/models/index.d.ts +3 -0
- package/pluggableElementTypes/models/index.js +24 -8
- package/pluggableElementTypes/renderers/BoxRendererType.js +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +15 -6
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +3 -3
- package/pluggableElementTypes/renderers/FeatureRendererType.js +17 -8
- package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
- package/pluggableElementTypes/renderers/RendererType.js +4 -1
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +1 -1
- package/pluggableElementTypes/renderers/index.d.ts +9 -0
- package/pluggableElementTypes/renderers/index.js +63 -0
- package/rpc/BaseRpcDriver.js +5 -9
- package/rpc/BaseRpcDriver.test.js +6 -6
- package/rpc/RpcManager.d.ts +1 -1
- package/rpc/RpcManager.js +44 -16
- package/rpc/WebWorkerRpcDriver.js +3 -3
- package/rpc/coreRpcMethods.d.ts +2 -1
- package/rpc/coreRpcMethods.js +109 -75
- package/rpc/remoteAbortSignals.js +2 -2
- package/ui/App.d.ts +17 -4
- package/ui/App.js +55 -41
- package/ui/Drawer.d.ts +6 -14
- package/ui/Drawer.js +11 -12
- package/ui/DrawerWidget.d.ts +5 -3
- package/ui/DrawerWidget.js +100 -61
- package/ui/ErrorMessage.d.ts +5 -0
- package/ui/ErrorMessage.js +54 -0
- package/ui/FileSelector/FileSelector.d.ts +11 -0
- package/ui/FileSelector/FileSelector.js +198 -0
- package/ui/FileSelector/LocalFileChooser.d.ts +7 -0
- package/ui/FileSelector/LocalFileChooser.js +79 -0
- package/ui/FileSelector/UrlChooser.d.ts +9 -0
- package/ui/FileSelector/UrlChooser.js +41 -0
- package/ui/FileSelector/index.d.ts +2 -0
- package/ui/FileSelector/index.js +13 -0
- package/ui/Icons.d.ts +4 -0
- package/ui/Icons.js +34 -0
- package/ui/Logo.js +1 -1
- package/ui/PrerenderedCanvas.d.ts +1 -0
- package/ui/PrerenderedCanvas.js +4 -1
- package/ui/ResizeHandle.d.ts +2 -3
- package/ui/ResizeHandle.js +6 -7
- package/ui/SanitizedHTML.js +1 -1
- package/ui/Snackbar.js +4 -6
- package/ui/SnackbarModel.d.ts +16 -0
- package/ui/SnackbarModel.js +56 -0
- package/ui/Tooltip.d.ts +1 -1
- package/ui/index.js +24 -24
- package/ui/theme.js +5 -5
- package/util/QuickLRU.d.ts +1 -1
- package/util/QuickLRU.js +3 -3
- package/util/aborting.d.ts +1 -1
- package/util/aborting.js +10 -11
- package/util/analytics.d.ts +2 -2
- package/util/analytics.js +20 -7
- package/util/blockTypes.d.ts +11 -6
- package/util/blockTypes.js +7 -1
- package/util/color/cssColorsLevel4.js +1 -1
- package/util/color/index.js +5 -5
- package/util/compositeMap.js +3 -3
- package/util/index.d.ts +6 -16
- package/util/index.js +76 -100
- package/util/io/RemoteFileWithRangeCache.d.ts +17 -0
- package/util/io/RemoteFileWithRangeCache.js +266 -0
- package/util/io/index.d.ts +4 -2
- package/util/io/index.js +134 -25
- package/util/jexl.js +4 -1
- package/util/layouts/BaseLayout.d.ts +3 -0
- package/util/layouts/GranularRectLayout.d.ts +19 -10
- package/util/layouts/GranularRectLayout.js +459 -100
- package/util/layouts/GranularRectLayout.test.js +57 -10
- package/util/layouts/PrecomputedLayout.js +2 -1
- package/util/layouts/index.d.ts +7 -0
- package/util/layouts/index.js +68 -0
- package/util/mst-reflection.js +3 -3
- package/util/offscreenCanvasPonyfill.js +1 -1
- package/util/range.js +1 -1
- package/util/simpleFeature.js +1 -1
- package/util/stats.js +2 -2
- package/util/tracks.d.ts +31 -362
- package/util/tracks.js +74 -190
- package/util/types/index.d.ts +54 -10
- package/util/types/index.js +110 -8
- package/util/types/mst.d.ts +46 -2
- package/util/types/mst.js +56 -8
- package/util/types/util.d.ts +1 -1
- package/util/when.js +1 -1
- package/assemblyManager/assemblyConfigSchemas.d.ts +0 -7
- package/ui/FileSelector.d.ts +0 -9
- package/ui/FileSelector.js +0 -150
- package/util/io/LocalFile.d.ts +0 -18
- package/util/io/LocalFile.js +0 -220
- package/util/io/rangeFetcher.d.ts +0 -3
- package/util/io/rangeFetcher.js +0 -236
- package/value.d.ts +0 -1
- package/value.js +0 -10
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
|
+
|
|
20
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
21
|
+
|
|
22
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
23
|
+
|
|
24
|
+
var _core = require("@material-ui/core");
|
|
25
|
+
|
|
26
|
+
var _lab = require("@material-ui/lab");
|
|
27
|
+
|
|
28
|
+
var _mobxReact = require("mobx-react");
|
|
29
|
+
|
|
30
|
+
var _types = require("../../util/types");
|
|
31
|
+
|
|
32
|
+
var _ArrowDropDown = _interopRequireDefault(require("@material-ui/icons/ArrowDropDown"));
|
|
33
|
+
|
|
34
|
+
var _LocalFileChooser = _interopRequireDefault(require("./LocalFileChooser"));
|
|
35
|
+
|
|
36
|
+
var _UrlChooser = _interopRequireDefault(require("./UrlChooser"));
|
|
37
|
+
|
|
38
|
+
var _excluded = ["title", "children"];
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
44
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
+
|
|
46
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
47
|
+
|
|
48
|
+
function ToggleButtonWithTooltip(props) {
|
|
49
|
+
var title = props.title,
|
|
50
|
+
children = props.children,
|
|
51
|
+
other = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
|
|
53
|
+
title: title || ''
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(_lab.ToggleButton, other, children));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function shorten(str, len) {
|
|
58
|
+
if (typeof str === 'string' && str.length > len) {
|
|
59
|
+
return "".concat(str.substring(0, len), "\u2026");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return str;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var FileSelector = (0, _mobxReact.observer)(function (props) {
|
|
66
|
+
var location = props.location,
|
|
67
|
+
name = props.name,
|
|
68
|
+
description = props.description,
|
|
69
|
+
rootModel = props.rootModel,
|
|
70
|
+
setLocation = props.setLocation;
|
|
71
|
+
var fileOrUrl = !location || (0, _types.isUriLocation)(location) ? 'url' : 'file';
|
|
72
|
+
|
|
73
|
+
var _useState = (0, _react.useState)(location && 'internetAccountId' in location && location.internetAccountId ? location.internetAccountId : fileOrUrl),
|
|
74
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
75
|
+
toggleButtonValue = _useState2[0],
|
|
76
|
+
setToggleButtonValue = _useState2[1];
|
|
77
|
+
|
|
78
|
+
var accts = (0, _types.isAppRootModel)(rootModel) ? rootModel.internetAccounts.slice() : [];
|
|
79
|
+
var numShown = 2;
|
|
80
|
+
|
|
81
|
+
var _useState3 = (0, _react.useState)(accts.slice(0, numShown)),
|
|
82
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
83
|
+
shownAccts = _useState4[0],
|
|
84
|
+
setShownAccts = _useState4[1];
|
|
85
|
+
|
|
86
|
+
var _useState5 = (0, _react.useState)(accts.slice(numShown)),
|
|
87
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
88
|
+
hiddenAccts = _useState6[0],
|
|
89
|
+
setHiddenAccts = _useState6[1];
|
|
90
|
+
|
|
91
|
+
var _useState7 = (0, _react.useState)(null),
|
|
92
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
93
|
+
anchorEl = _useState8[0],
|
|
94
|
+
setAnchorEl = _useState8[1];
|
|
95
|
+
|
|
96
|
+
var selectedAcct = accts.find(function (ia) {
|
|
97
|
+
return ia.internetAccountId === toggleButtonValue;
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
var setLocationWithAccount = function setLocationWithAccount(location) {
|
|
101
|
+
setLocation(_objectSpread(_objectSpread({}, location), {}, {
|
|
102
|
+
internetAccountId: selectedAcct ? selectedAcct.internetAccountId : undefined
|
|
103
|
+
}));
|
|
104
|
+
}; // if you swap account selection after inputting url
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
if (location && selectedAcct && (0, _types.isUriLocation)(location) && location.internetAccountId !== selectedAcct.internetAccountId) {
|
|
108
|
+
setLocationWithAccount(location);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
var locationInput = /*#__PURE__*/_react.default.createElement(_UrlChooser.default, (0, _extends2.default)({}, props, {
|
|
112
|
+
setLocation: setLocationWithAccount,
|
|
113
|
+
label: selectedAcct === null || selectedAcct === void 0 ? void 0 : selectedAcct.selectorLabel
|
|
114
|
+
}));
|
|
115
|
+
|
|
116
|
+
if (toggleButtonValue === 'file') {
|
|
117
|
+
locationInput = /*#__PURE__*/_react.default.createElement(_LocalFileChooser.default, props);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (selectedAcct !== null && selectedAcct !== void 0 && selectedAcct.SelectorComponent) {
|
|
121
|
+
var SelectorComponent = selectedAcct.SelectorComponent;
|
|
122
|
+
locationInput = /*#__PURE__*/_react.default.createElement(SelectorComponent, (0, _extends2.default)({}, props, {
|
|
123
|
+
setLocation: setLocationWithAccount
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Box, {
|
|
128
|
+
display: "flex"
|
|
129
|
+
}, /*#__PURE__*/_react.default.createElement(_core.InputLabel, {
|
|
130
|
+
shrink: true
|
|
131
|
+
}, name)), /*#__PURE__*/_react.default.createElement(_core.Box, {
|
|
132
|
+
display: "flex",
|
|
133
|
+
flexDirection: "row"
|
|
134
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Box, null, /*#__PURE__*/_react.default.createElement(_lab.ToggleButtonGroup, {
|
|
135
|
+
value: toggleButtonValue,
|
|
136
|
+
exclusive: true,
|
|
137
|
+
onChange: function onChange(_event, newState) {
|
|
138
|
+
if (newState) {
|
|
139
|
+
setToggleButtonValue(newState);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if ((0, _types.isUriLocation)(location)) {
|
|
143
|
+
setLocationWithAccount(location);
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"aria-label": "file, url, or account picker"
|
|
147
|
+
}, new URLSearchParams(window.location.search).get('adminKey') ? null : /*#__PURE__*/_react.default.createElement(_lab.ToggleButton, {
|
|
148
|
+
value: "file",
|
|
149
|
+
"aria-label": "local file"
|
|
150
|
+
}, "File"), /*#__PURE__*/_react.default.createElement(_lab.ToggleButton, {
|
|
151
|
+
value: "url",
|
|
152
|
+
"aria-label": "url"
|
|
153
|
+
}, "URL"), shownAccts.map(function (_ref) {
|
|
154
|
+
var internetAccountId = _ref.internetAccountId,
|
|
155
|
+
toggleContents = _ref.toggleContents,
|
|
156
|
+
name = _ref.name;
|
|
157
|
+
return /*#__PURE__*/_react.default.createElement(ToggleButtonWithTooltip, {
|
|
158
|
+
key: internetAccountId,
|
|
159
|
+
value: internetAccountId,
|
|
160
|
+
"aria-label": name,
|
|
161
|
+
title: name
|
|
162
|
+
}, shorten(toggleContents || name, 5));
|
|
163
|
+
}), hiddenAccts.length ? /*#__PURE__*/_react.default.createElement(_lab.ToggleButton, {
|
|
164
|
+
onClick: function onClick(event) {
|
|
165
|
+
return setAnchorEl(event.target);
|
|
166
|
+
},
|
|
167
|
+
selected: false
|
|
168
|
+
}, "More", /*#__PURE__*/_react.default.createElement(_ArrowDropDown.default, null)) : null), /*#__PURE__*/_react.default.createElement(_core.Menu, {
|
|
169
|
+
open: Boolean(anchorEl),
|
|
170
|
+
anchorEl: anchorEl,
|
|
171
|
+
onClose: function onClose() {
|
|
172
|
+
return setAnchorEl(null);
|
|
173
|
+
},
|
|
174
|
+
getContentAnchorEl: null,
|
|
175
|
+
anchorOrigin: {
|
|
176
|
+
vertical: 'bottom',
|
|
177
|
+
horizontal: 'center'
|
|
178
|
+
},
|
|
179
|
+
transformOrigin: {
|
|
180
|
+
vertical: 'top',
|
|
181
|
+
horizontal: 'center'
|
|
182
|
+
}
|
|
183
|
+
}, hiddenAccts === null || hiddenAccts === void 0 ? void 0 : hiddenAccts.map(function (acct, idx) {
|
|
184
|
+
return /*#__PURE__*/_react.default.createElement(_core.MenuItem, {
|
|
185
|
+
key: acct.internetAccountId,
|
|
186
|
+
value: acct.internetAccountId,
|
|
187
|
+
onClick: function onClick() {
|
|
188
|
+
var prev = shownAccts[shownAccts.length - 1];
|
|
189
|
+
setShownAccts([].concat((0, _toConsumableArray2.default)(shownAccts.slice(0, shownAccts.length - 1)), [acct]));
|
|
190
|
+
setHiddenAccts([prev].concat((0, _toConsumableArray2.default)(hiddenAccts.slice(0, idx)), (0, _toConsumableArray2.default)(hiddenAccts.slice(idx + 1))));
|
|
191
|
+
setToggleButtonValue(acct.internetAccountId);
|
|
192
|
+
setAnchorEl(null);
|
|
193
|
+
}
|
|
194
|
+
}, acct.name);
|
|
195
|
+
})))), locationInput, /*#__PURE__*/_react.default.createElement(_core.FormHelperText, null, description));
|
|
196
|
+
});
|
|
197
|
+
var _default = FileSelector;
|
|
198
|
+
exports.default = _default;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@material-ui/core");
|
|
13
|
+
|
|
14
|
+
var _util = require("../../util");
|
|
15
|
+
|
|
16
|
+
var _tracks = require("../../util/tracks");
|
|
17
|
+
|
|
18
|
+
function isLocalPathLocation(location) {
|
|
19
|
+
return 'localPath' in location;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function isBlobLocation(location) {
|
|
23
|
+
return 'blobId' in location;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
27
|
+
return {
|
|
28
|
+
filename: {
|
|
29
|
+
marginLeft: theme.spacing(1)
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
function LocalFileChooser(props) {
|
|
35
|
+
var classes = useStyles();
|
|
36
|
+
var location = props.location,
|
|
37
|
+
setLocation = props.setLocation;
|
|
38
|
+
var filename = location && (isBlobLocation(location) && location.name || isLocalPathLocation(location) && location.localPath);
|
|
39
|
+
var needToReload = location && isBlobLocation(location) && !(0, _tracks.getBlob)(location.blobId);
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(_core.Box, {
|
|
41
|
+
display: "flex",
|
|
42
|
+
flexDirection: "row",
|
|
43
|
+
alignItems: "center"
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Box, null, /*#__PURE__*/_react.default.createElement(_core.FormControl, {
|
|
45
|
+
fullWidth: true
|
|
46
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
47
|
+
variant: "outlined",
|
|
48
|
+
component: "label"
|
|
49
|
+
}, "Choose File", /*#__PURE__*/_react.default.createElement("input", {
|
|
50
|
+
type: "file",
|
|
51
|
+
hidden: true,
|
|
52
|
+
onChange: function onChange(_ref) {
|
|
53
|
+
var target = _ref.target;
|
|
54
|
+
var file = target && target.files && target.files[0];
|
|
55
|
+
|
|
56
|
+
if (file) {
|
|
57
|
+
if (_util.isElectron) {
|
|
58
|
+
setLocation({
|
|
59
|
+
localPath: file.path,
|
|
60
|
+
locationType: 'LocalPathLocation'
|
|
61
|
+
});
|
|
62
|
+
} else {
|
|
63
|
+
setLocation((0, _tracks.storeBlobLocation)({
|
|
64
|
+
blob: file
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
})))), /*#__PURE__*/_react.default.createElement(_core.Box, null, /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
70
|
+
component: "span",
|
|
71
|
+
className: classes.filename,
|
|
72
|
+
color: filename ? 'initial' : 'textSecondary'
|
|
73
|
+
}, filename || 'No file chosen'), needToReload ? /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
74
|
+
color: "error"
|
|
75
|
+
}, "(need to reload)") : null));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
var _default = LocalFileChooser;
|
|
79
|
+
exports.default = _default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FileLocation } from '../../util/types';
|
|
3
|
+
declare function UrlChooser(props: {
|
|
4
|
+
location?: FileLocation;
|
|
5
|
+
setLocation: Function;
|
|
6
|
+
label?: string;
|
|
7
|
+
}): JSX.Element;
|
|
8
|
+
declare const _default: typeof UrlChooser;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@material-ui/core");
|
|
13
|
+
|
|
14
|
+
var _mobxReact = require("mobx-react");
|
|
15
|
+
|
|
16
|
+
var _types = require("../../util/types");
|
|
17
|
+
|
|
18
|
+
function UrlChooser(props) {
|
|
19
|
+
var location = props.location,
|
|
20
|
+
setLocation = props.setLocation,
|
|
21
|
+
label = props.label;
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.TextField, {
|
|
23
|
+
fullWidth: true,
|
|
24
|
+
variant: "outlined",
|
|
25
|
+
inputProps: {
|
|
26
|
+
'data-testid': 'urlInput'
|
|
27
|
+
},
|
|
28
|
+
defaultValue: location && (0, _types.isUriLocation)(location) ? location.uri : '',
|
|
29
|
+
label: label || 'Enter URL',
|
|
30
|
+
onChange: function onChange(event) {
|
|
31
|
+
setLocation({
|
|
32
|
+
uri: event.target.value.trim(),
|
|
33
|
+
locationType: 'UriLocation'
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var _default = (0, _mobxReact.observer)(UrlChooser);
|
|
40
|
+
|
|
41
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _FileSelector = _interopRequireDefault(require("./FileSelector"));
|
|
11
|
+
|
|
12
|
+
var _default = _FileSelector.default;
|
|
13
|
+
exports.default = _default;
|
package/ui/Icons.d.ts
CHANGED
|
@@ -4,3 +4,7 @@ export declare function ContentCopy(props: SvgIconProps): JSX.Element;
|
|
|
4
4
|
export declare function ContentCut(props: SvgIconProps): JSX.Element;
|
|
5
5
|
export declare function ContentPaste(props: SvgIconProps): JSX.Element;
|
|
6
6
|
export declare function TrackSelector(props: SvgIconProps): JSX.Element;
|
|
7
|
+
export declare function SaveAs(props: SvgIconProps): JSX.Element;
|
|
8
|
+
export declare function Save(props: SvgIconProps): JSX.Element;
|
|
9
|
+
export declare function DNA(props: SvgIconProps): JSX.Element;
|
|
10
|
+
export declare function Cable(props: SvgIconProps): JSX.Element;
|
package/ui/Icons.js
CHANGED
|
@@ -5,9 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.Cable = Cable;
|
|
8
9
|
exports.ContentCopy = ContentCopy;
|
|
9
10
|
exports.ContentCut = ContentCut;
|
|
10
11
|
exports.ContentPaste = ContentPaste;
|
|
12
|
+
exports.DNA = DNA;
|
|
13
|
+
exports.Save = Save;
|
|
14
|
+
exports.SaveAs = SaveAs;
|
|
11
15
|
exports.TrackSelector = TrackSelector;
|
|
12
16
|
|
|
13
17
|
var _SvgIcon = _interopRequireDefault(require("@material-ui/core/SvgIcon"));
|
|
@@ -38,4 +42,34 @@ function TrackSelector(props) {
|
|
|
38
42
|
return /*#__PURE__*/_react.default.createElement(_SvgIcon.default, props, /*#__PURE__*/_react.default.createElement("path", {
|
|
39
43
|
d: "M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z"
|
|
40
44
|
}));
|
|
45
|
+
} // content-save-edit from https://materialdesignicons.com/
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
function SaveAs(props) {
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_SvgIcon.default, props, /*#__PURE__*/_react.default.createElement("path", {
|
|
50
|
+
fill: "currentColor",
|
|
51
|
+
d: "M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z"
|
|
52
|
+
}));
|
|
53
|
+
} // content-save from https://materialdesignicons.com/
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
function Save(props) {
|
|
57
|
+
return /*#__PURE__*/_react.default.createElement(_SvgIcon.default, props, /*#__PURE__*/_react.default.createElement("path", {
|
|
58
|
+
fill: "currentColor",
|
|
59
|
+
d: "M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z"
|
|
60
|
+
}));
|
|
61
|
+
} // dna from https://materialdesignicons.com/
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
function DNA(props) {
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(_SvgIcon.default, props, /*#__PURE__*/_react.default.createElement("path", {
|
|
66
|
+
fill: "currentColor",
|
|
67
|
+
d: "M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z"
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function Cable(props) {
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement(_SvgIcon.default, props, /*#__PURE__*/_react.default.createElement("path", {
|
|
73
|
+
d: "M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z"
|
|
74
|
+
}));
|
|
41
75
|
}
|
package/ui/Logo.js
CHANGED
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.Logomark = Logomark;
|
|
9
8
|
exports.LogoFull = LogoFull;
|
|
9
|
+
exports.Logomark = Logomark;
|
|
10
10
|
|
|
11
11
|
var _react = _interopRequireDefault(require("react"));
|
|
12
12
|
|
package/ui/PrerenderedCanvas.js
CHANGED
|
@@ -33,6 +33,7 @@ function PrerenderedCanvas(props) {
|
|
|
33
33
|
highResolutionScaling = props.highResolutionScaling,
|
|
34
34
|
style = props.style,
|
|
35
35
|
imageData = props.imageData,
|
|
36
|
+
blockKey = props.blockKey,
|
|
36
37
|
showSoftClip = props.showSoftClip;
|
|
37
38
|
var featureCanvas = (0, _react.useRef)(null);
|
|
38
39
|
(0, _react.useEffect)(function () {
|
|
@@ -78,8 +79,10 @@ function PrerenderedCanvas(props) {
|
|
|
78
79
|
}
|
|
79
80
|
}, [imageData]);
|
|
80
81
|
var softClipString = showSoftClip ? '_softclipped' : '';
|
|
82
|
+
var blockKeyStr = blockKey ? '_' + blockKey : '';
|
|
83
|
+
var testId = "prerendered_canvas".concat(softClipString).concat(blockKeyStr);
|
|
81
84
|
return /*#__PURE__*/_react.default.createElement("canvas", {
|
|
82
|
-
"data-testid":
|
|
85
|
+
"data-testid": testId,
|
|
83
86
|
ref: featureCanvas,
|
|
84
87
|
width: width * highResolutionScaling,
|
|
85
88
|
height: height * highResolutionScaling,
|
package/ui/ResizeHandle.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
declare function ResizeHandle({ onDrag, vertical, flexbox, className: originalClassName, ...props }: {
|
|
3
3
|
onDrag: (arg: number) => number;
|
|
4
4
|
vertical?: boolean;
|
|
5
5
|
flexbox?: boolean;
|
|
6
6
|
className?: string;
|
|
7
7
|
[props: string]: unknown;
|
|
8
|
-
}
|
|
9
|
-
declare function ResizeHandle({ onDrag, vertical, flexbox, className: originalClassName, ...props }: ResizeHandleProps): JSX.Element;
|
|
8
|
+
}): JSX.Element;
|
|
10
9
|
export default ResizeHandle;
|
package/ui/ResizeHandle.js
CHANGED
|
@@ -15,12 +15,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
15
15
|
|
|
16
16
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
17
17
|
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
18
20
|
var _styles = require("@material-ui/core/styles");
|
|
19
21
|
|
|
20
22
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
21
23
|
|
|
22
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
23
|
-
|
|
24
24
|
var _excluded = ["onDrag", "vertical", "flexbox", "className"];
|
|
25
25
|
|
|
26
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -67,12 +67,12 @@ function ResizeHandle(_ref) {
|
|
|
67
67
|
(0, _react.useEffect)(function () {
|
|
68
68
|
function mouseMove(event) {
|
|
69
69
|
event.preventDefault();
|
|
70
|
-
var pos =
|
|
70
|
+
var pos = vertical ? event.clientX : event.clientY;
|
|
71
71
|
var distance = pos - prevPos.current;
|
|
72
72
|
|
|
73
73
|
if (distance) {
|
|
74
|
-
|
|
75
|
-
prevPos.current
|
|
74
|
+
onDrag(distance);
|
|
75
|
+
prevPos.current = pos;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
@@ -109,8 +109,7 @@ function ResizeHandle(_ref) {
|
|
|
109
109
|
"data-resizer": "true",
|
|
110
110
|
onMouseDown: function onMouseDown(event) {
|
|
111
111
|
event.preventDefault();
|
|
112
|
-
|
|
113
|
-
prevPos.current = pos;
|
|
112
|
+
prevPos.current = vertical ? event.clientX : event.clientY;
|
|
114
113
|
setMouseDragging(true);
|
|
115
114
|
},
|
|
116
115
|
role: "presentation",
|
package/ui/SanitizedHTML.js
CHANGED
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.isHTML = isHTML;
|
|
9
8
|
exports.default = SanitizedHTML;
|
|
9
|
+
exports.isHTML = isHTML;
|
|
10
10
|
|
|
11
11
|
var _react = _interopRequireDefault(require("react"));
|
|
12
12
|
|
package/ui/Snackbar.js
CHANGED
|
@@ -11,9 +11,9 @@ exports.default = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _core = require("@material-ui/core");
|
|
17
17
|
|
|
18
18
|
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
19
19
|
|
|
@@ -21,8 +21,6 @@ var _Alert = _interopRequireDefault(require("@material-ui/lab/Alert"));
|
|
|
21
21
|
|
|
22
22
|
var _mobxReact = require("mobx-react");
|
|
23
23
|
|
|
24
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
25
|
-
|
|
26
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
25
|
|
|
28
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -80,10 +78,10 @@ function MessageSnackbar(_ref) {
|
|
|
80
78
|
message = _ref3[0],
|
|
81
79
|
level = _ref3[1];
|
|
82
80
|
|
|
83
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
81
|
+
return /*#__PURE__*/_react.default.createElement(_core.Snackbar, {
|
|
84
82
|
open: open && !!message,
|
|
85
83
|
onClose: handleClose,
|
|
86
|
-
action: /*#__PURE__*/_react.default.createElement(
|
|
84
|
+
action: /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
87
85
|
"aria-label": "close",
|
|
88
86
|
color: "inherit",
|
|
89
87
|
onClick: handleClose
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IModelType, ModelProperties } from 'mobx-state-tree';
|
|
2
|
+
import { IObservableArray } from 'mobx';
|
|
3
|
+
import { NotificationLevel } from '../util/types';
|
|
4
|
+
declare function makeExtension(snackbarMessages: IObservableArray<any>): {
|
|
5
|
+
views: {
|
|
6
|
+
readonly snackbarMessages: IObservableArray<any>;
|
|
7
|
+
};
|
|
8
|
+
actions: {
|
|
9
|
+
notify(message: string, level?: NotificationLevel | undefined): void;
|
|
10
|
+
pushSnackbarMessage(message: string, level?: NotificationLevel | undefined): number;
|
|
11
|
+
popSnackbarMessage(): any;
|
|
12
|
+
removeSnackbarMessage(message: string): void;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export default function addSnackbarToModel<PROPS extends ModelProperties, OTHERS>(tree: IModelType<PROPS, OTHERS>): IModelType<PROPS, OTHERS & ReturnType<typeof makeExtension>['actions'] & ReturnType<typeof makeExtension>['views']>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = addSnackbarToModel;
|
|
7
|
+
|
|
8
|
+
var _mobx = require("mobx");
|
|
9
|
+
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
function makeExtension(snackbarMessages) {
|
|
12
|
+
return {
|
|
13
|
+
views: {
|
|
14
|
+
get snackbarMessages() {
|
|
15
|
+
return snackbarMessages;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
},
|
|
19
|
+
actions: {
|
|
20
|
+
notify: function notify(message, level) {
|
|
21
|
+
var _this = this;
|
|
22
|
+
|
|
23
|
+
this.pushSnackbarMessage(message, level);
|
|
24
|
+
|
|
25
|
+
if (level === 'info' || level === 'success') {
|
|
26
|
+
setTimeout(function () {
|
|
27
|
+
_this.removeSnackbarMessage(message);
|
|
28
|
+
}, 5000);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
pushSnackbarMessage: function pushSnackbarMessage(message, level) {
|
|
32
|
+
return snackbarMessages.push([message, level]);
|
|
33
|
+
},
|
|
34
|
+
popSnackbarMessage: function popSnackbarMessage() {
|
|
35
|
+
return snackbarMessages.pop();
|
|
36
|
+
},
|
|
37
|
+
removeSnackbarMessage: function removeSnackbarMessage(message) {
|
|
38
|
+
var element = snackbarMessages.find(function (f) {
|
|
39
|
+
return f[0] === message;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (element) {
|
|
43
|
+
snackbarMessages.remove(element);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function addSnackbarToModel(tree) {
|
|
51
|
+
return tree.extend(function () {
|
|
52
|
+
var snackbarMessages = _mobx.observable.array();
|
|
53
|
+
|
|
54
|
+
return makeExtension(snackbarMessages);
|
|
55
|
+
});
|
|
56
|
+
}
|
package/ui/Tooltip.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ declare const _default: ({ offsetX, offsetY, configuration, feature, timeout, }:
|
|
|
4
4
|
offsetX: number;
|
|
5
5
|
offsetY: number;
|
|
6
6
|
configuration: import("mobx-state-tree").ModelInstanceTypeProps<Record<string, any>> & {
|
|
7
|
-
setSubschema(slotName: string, data:
|
|
7
|
+
setSubschema(slotName: string, data: unknown): any;
|
|
8
8
|
} & import("mobx-state-tree").IStateTreeNode<import("../configuration/configurationSchema").AnyConfigurationSchemaType>;
|
|
9
9
|
feature?: Feature | undefined;
|
|
10
10
|
timeout?: number | undefined;
|