@jbrowse/core 2.0.1 → 2.1.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 (179) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +6 -0
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +313 -592
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -479
  4. package/BaseFeatureWidget/index.js +88 -126
  5. package/BaseFeatureWidget/types.js +1 -4
  6. package/BaseFeatureWidget/util.js +40 -75
  7. package/CorePlugin.js +55 -94
  8. package/Plugin.js +9 -34
  9. package/PluginLoader.js +153 -422
  10. package/PluginManager.d.ts +17 -14
  11. package/PluginManager.js +377 -666
  12. package/ReExports/Attributes.js +3 -10
  13. package/ReExports/BaseCard.js +3 -10
  14. package/ReExports/DataGrid.js +5 -12
  15. package/ReExports/FeatureDetails.js +3 -10
  16. package/ReExports/index.js +6 -12
  17. package/ReExports/list.d.ts +5 -0
  18. package/ReExports/list.js +271 -7
  19. package/ReExports/material-ui-colors.js +15 -16
  20. package/ReExports/modules.d.ts +0 -1
  21. package/ReExports/modules.js +453 -798
  22. package/TextSearch/BaseResults.js +51 -123
  23. package/TextSearch/TextSearchManager.js +66 -144
  24. package/assemblyManager/assembly.js +280 -555
  25. package/assemblyManager/assemblyConfigSchema.js +47 -64
  26. package/assemblyManager/assemblyManager.js +126 -272
  27. package/assemblyManager/index.js +9 -22
  28. package/configuration/configurationSchema.js +167 -203
  29. package/configuration/configurationSlot.js +248 -326
  30. package/configuration/index.js +19 -35
  31. package/configuration/util.js +131 -173
  32. package/data_adapters/BaseAdapter.d.ts +2 -2
  33. package/data_adapters/BaseAdapter.js +132 -521
  34. package/data_adapters/CytobandAdapter.js +40 -126
  35. package/data_adapters/dataAdapterCache.js +77 -158
  36. package/package.json +4 -5
  37. package/pluggableElementTypes/AdapterType.js +24 -79
  38. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +17 -0
  39. package/pluggableElementTypes/AddTrackWorkflowType.js +20 -0
  40. package/pluggableElementTypes/ConnectionType.js +22 -65
  41. package/pluggableElementTypes/DisplayType.js +35 -82
  42. package/pluggableElementTypes/InternetAccountType.js +23 -64
  43. package/pluggableElementTypes/PluggableElementBase.js +8 -20
  44. package/pluggableElementTypes/RpcMethodType.js +85 -427
  45. package/pluggableElementTypes/TextSearchAdapterType.js +16 -55
  46. package/pluggableElementTypes/TrackType.js +26 -70
  47. package/pluggableElementTypes/ViewType.js +21 -63
  48. package/pluggableElementTypes/WidgetType.js +21 -64
  49. package/pluggableElementTypes/index.d.ts +4 -3
  50. package/pluggableElementTypes/index.js +42 -125
  51. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +28 -43
  52. package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
  53. package/pluggableElementTypes/models/BaseTrackModel.js +139 -199
  54. package/pluggableElementTypes/models/BaseViewModel.js +24 -40
  55. package/pluggableElementTypes/models/InternetAccountModel.js +116 -263
  56. package/pluggableElementTypes/models/baseConnectionConfig.js +14 -25
  57. package/pluggableElementTypes/models/baseInternetAccountConfig.js +29 -38
  58. package/pluggableElementTypes/models/baseTrackConfig.js +106 -133
  59. package/pluggableElementTypes/models/index.js +21 -70
  60. package/pluggableElementTypes/renderers/BoxRendererType.js +132 -291
  61. package/pluggableElementTypes/renderers/CircularChordRendererType.js +8 -38
  62. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +60 -192
  63. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -2
  64. package/pluggableElementTypes/renderers/FeatureRendererType.js +89 -264
  65. package/pluggableElementTypes/renderers/RendererType.js +31 -105
  66. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +61 -72
  67. package/pluggableElementTypes/renderers/ServerSideRendererType.js +112 -265
  68. package/pluggableElementTypes/renderers/index.js +19 -62
  69. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +27 -65
  70. package/rpc/BaseRpcDriver.js +169 -405
  71. package/rpc/MainThreadRpcDriver.js +27 -150
  72. package/rpc/RpcManager.js +58 -159
  73. package/rpc/WebWorkerRpcDriver.js +54 -171
  74. package/rpc/configSchema.js +25 -49
  75. package/rpc/coreRpcMethods.js +221 -959
  76. package/rpc/remoteAbortSignals.js +46 -70
  77. package/tsconfig.build.tsbuildinfo +1 -1
  78. package/ui/AboutDialog.js +106 -162
  79. package/ui/App.js +157 -242
  80. package/ui/AssemblySelector.js +59 -120
  81. package/ui/CascadingMenu.js +101 -196
  82. package/ui/ColorPicker.d.ts +16 -0
  83. package/ui/ColorPicker.js +97 -0
  84. package/ui/Drawer.js +28 -61
  85. package/ui/DrawerWidget.js +108 -202
  86. package/ui/DropDownMenu.js +60 -91
  87. package/ui/EditableTypography.js +87 -149
  88. package/ui/ErrorMessage.js +41 -56
  89. package/ui/FactoryResetDialog.js +24 -57
  90. package/ui/FatalErrorDialog.js +59 -91
  91. package/ui/FileSelector/FileSelector.js +123 -189
  92. package/ui/FileSelector/LocalFileChooser.js +44 -75
  93. package/ui/FileSelector/UrlChooser.js +17 -38
  94. package/ui/FileSelector/index.js +6 -12
  95. package/ui/Icons.js +45 -69
  96. package/ui/Logo.js +57 -110
  97. package/ui/Menu.js +232 -354
  98. package/ui/PrerenderedCanvas.js +63 -87
  99. package/ui/ResizeHandle.js +87 -116
  100. package/ui/ReturnToImportFormDialog.js +32 -63
  101. package/ui/SanitizedHTML.js +64 -47
  102. package/ui/Snackbar.js +74 -101
  103. package/ui/SnackbarModel.js +37 -51
  104. package/ui/Tooltip.js +49 -76
  105. package/ui/ViewContainer.js +113 -196
  106. package/ui/colors.d.ts +10 -0
  107. package/ui/colors.js +78 -0
  108. package/ui/index.js +51 -181
  109. package/ui/react-colorful.d.ts +17 -0
  110. package/ui/react-colorful.js +455 -0
  111. package/ui/theme.js +199 -247
  112. package/util/Base1DUtils.js +163 -202
  113. package/util/Base1DViewModel.js +121 -168
  114. package/util/QuickLRU.js +84 -332
  115. package/util/TimeTraveller.d.ts +19 -0
  116. package/util/TimeTraveller.js +86 -0
  117. package/util/aborting.js +49 -127
  118. package/util/analytics.js +91 -154
  119. package/util/blockTypes.js +106 -240
  120. package/util/calculateDynamicBlocks.js +98 -128
  121. package/util/calculateStaticBlocks.js +105 -125
  122. package/util/color/cssColorsLevel4.js +156 -160
  123. package/util/color/index.js +33 -55
  124. package/util/compositeMap.js +49 -333
  125. package/util/formatFastaStrings.js +9 -14
  126. package/util/idMaker.js +18 -31
  127. package/util/index.d.ts +7 -20
  128. package/util/index.js +742 -1188
  129. package/util/io/RemoteFileWithRangeCache.js +88 -257
  130. package/util/io/index.js +95 -169
  131. package/util/jexl.js +60 -115
  132. package/util/jexlStrings.js +24 -29
  133. package/util/layouts/BaseLayout.js +1 -4
  134. package/util/layouts/GranularRectLayout.js +388 -555
  135. package/util/layouts/MultiLayout.js +41 -109
  136. package/util/layouts/PrecomputedLayout.js +56 -112
  137. package/util/layouts/PrecomputedMultiLayout.js +22 -59
  138. package/util/layouts/SceneGraph.js +127 -197
  139. package/util/layouts/index.js +29 -66
  140. package/util/mst-reflection.js +55 -71
  141. package/util/offscreenCanvasPonyfill.js +66 -134
  142. package/util/offscreenCanvasUtils.d.ts +2 -7
  143. package/util/offscreenCanvasUtils.js +49 -146
  144. package/util/range.js +29 -40
  145. package/util/rxjs.js +20 -27
  146. package/util/simpleFeature.js +88 -152
  147. package/util/stats.js +91 -151
  148. package/util/tracks.js +130 -173
  149. package/util/types/index.js +110 -179
  150. package/util/types/mst.js +91 -146
  151. package/util/types/util.js +1 -4
  152. package/util/when.js +54 -101
  153. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +0 -122
  154. package/BaseFeatureWidget/index.test.js +0 -69
  155. package/TextSearch/BaseResults.test.js +0 -42
  156. package/configuration/configurationSchema.test.js +0 -266
  157. package/configuration/configurationSlot.test.js +0 -69
  158. package/configuration/util.test.js +0 -39
  159. package/data_adapters/BaseAdapter.test.js +0 -200
  160. package/declare.d.js +0 -1
  161. package/pluggableElementTypes/RpcMethodType.test.js +0 -118
  162. package/pluggableElementTypes/renderers/declare.d.js +0 -1
  163. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +0 -20
  164. package/rpc/BaseRpcDriver.test.js +0 -540
  165. package/rpc/declaration.d.js +0 -1
  166. package/ui/FatalErrorDialog.test.js +0 -82
  167. package/ui/SanitizedHTML.test.js +0 -36
  168. package/ui/theme.test.js +0 -92
  169. package/util/Base1DViewModel.test.js +0 -130
  170. package/util/calculateDynamicBlocks.test.js +0 -74
  171. package/util/calculateStaticBlocks.test.js +0 -297
  172. package/util/declare.d.js +0 -1
  173. package/util/formatFastaStrings.test.js +0 -40
  174. package/util/index.test.js +0 -213
  175. package/util/jexlStrings.test.js +0 -48
  176. package/util/layouts/GranularRectLayout.test.js +0 -99
  177. package/util/range.test.js +0 -64
  178. package/util/simpleFeature.test.js +0 -34
  179. package/util/stats.test.js +0 -172
@@ -1,63 +1,15 @@
1
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 = exports.NewFeatureRendererType = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
21
-
22
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
-
24
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
-
26
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
-
28
- var _operators = require("rxjs/operators");
29
-
30
- var _util = require("../../util");
31
-
32
- var _simpleFeature = _interopRequireDefault(require("../../util/simpleFeature"));
33
-
34
- var _dataAdapterCache = require("../../data_adapters/dataAdapterCache");
35
-
36
- var _ServerSideRendererType = _interopRequireDefault(require("./ServerSideRendererType"));
37
-
38
- var _BaseAdapter = require("../../data_adapters/BaseAdapter");
39
-
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
-
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
43
-
44
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
45
-
46
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
-
48
- var FeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy) {
49
- (0, _inherits2.default)(FeatureRendererType, _ServerSideRendererTy);
50
-
51
- var _super = _createSuper(FeatureRendererType);
52
-
53
- function FeatureRendererType() {
54
- (0, _classCallCheck2.default)(this, FeatureRendererType);
55
- return _super.apply(this, arguments);
56
- }
57
-
58
- (0, _createClass2.default)(FeatureRendererType, [{
59
- key: "serializeArgsInClient",
60
- value:
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 operators_1 = require("rxjs/operators");
7
+ const util_1 = require("../../util");
8
+ const simpleFeature_1 = __importDefault(require("../../util/simpleFeature"));
9
+ const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
10
+ const ServerSideRendererType_1 = __importDefault(require("./ServerSideRendererType"));
11
+ const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
12
+ class FeatureRendererType extends ServerSideRendererType_1.default {
61
13
  /**
62
14
  * replaces the `displayModel` param (which on the client is a MST model) with
63
15
  * a stub that only contains the `selectedFeature`, since this is the only
@@ -66,19 +18,17 @@ var FeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy) {
66
18
  *
67
19
  * @param args - the arguments passed to render
68
20
  */
69
- function serializeArgsInClient(args) {
70
- var displayModel = args.displayModel,
71
- regions = args.regions;
72
-
73
- var serializedArgs = _objectSpread(_objectSpread({}, args), {}, {
74
- displayModel: displayModel && {
75
- id: displayModel.id,
76
- selectedFeatureId: displayModel.selectedFeatureId
77
- },
78
- regions: JSON.parse(JSON.stringify(regions))
79
- });
80
-
81
- return (0, _get2.default)((0, _getPrototypeOf2.default)(FeatureRendererType.prototype), "serializeArgsInClient", this).call(this, serializedArgs);
21
+ serializeArgsInClient(args) {
22
+ const { displayModel, regions } = args;
23
+ const serializedArgs = {
24
+ ...args,
25
+ displayModel: displayModel && {
26
+ id: displayModel.id,
27
+ selectedFeatureId: displayModel.selectedFeatureId,
28
+ },
29
+ regions: JSON.parse(JSON.stringify(regions)),
30
+ };
31
+ return super.serializeArgsInClient(serializedArgs);
82
32
  }
83
33
  /**
84
34
  * Adds feature deserialization to base server-side result deserialization
@@ -86,23 +36,21 @@ var FeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy) {
86
36
  * @param results - the results of the render
87
37
  * @param args - the arguments passed to render
88
38
  */
89
-
90
- }, {
91
- key: "deserializeResultsInClient",
92
- value: function deserializeResultsInClient(result, args) {
93
- var deserializedFeatures = new Map();
94
- result.features.forEach(function (j) {
95
- var f = _simpleFeature.default.fromJSON(j);
96
-
97
- deserializedFeatures.set(String(f.id()), f);
98
- });
99
- var deserialized = (0, _get2.default)((0, _getPrototypeOf2.default)(FeatureRendererType.prototype), "deserializeResultsInClient", this).call(this, _objectSpread(_objectSpread({}, result), {}, {
100
- features: deserializedFeatures
101
- }), args);
102
- return _objectSpread(_objectSpread({}, deserialized), {}, {
103
- blockKey: args.blockKey,
104
- features: deserializedFeatures
105
- });
39
+ deserializeResultsInClient(result, args) {
40
+ const deserializedFeatures = new Map();
41
+ result.features.forEach(j => {
42
+ const f = simpleFeature_1.default.fromJSON(j);
43
+ deserializedFeatures.set(String(f.id()), f);
44
+ });
45
+ const deserialized = super.deserializeResultsInClient({
46
+ ...result,
47
+ features: deserializedFeatures,
48
+ }, args);
49
+ return {
50
+ ...deserialized,
51
+ blockKey: args.blockKey,
52
+ features: deserializedFeatures,
53
+ };
106
54
  }
107
55
  /**
108
56
  * Adds feature serialization to base server-side result serialization
@@ -111,17 +59,13 @@ var FeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy) {
111
59
  * method
112
60
  * @param args - deserialized render args
113
61
  */
114
-
115
- }, {
116
- key: "serializeResultsInWorker",
117
- value: function serializeResultsInWorker(result, args) {
118
- var serialized = (0, _get2.default)((0, _getPrototypeOf2.default)(FeatureRendererType.prototype), "serializeResultsInWorker", this).call(this, result, args);
119
- var features = result.features;
120
- return _objectSpread(_objectSpread({}, serialized), {}, {
121
- features: (0, _util.iterMap)(features.values(), function (f) {
122
- return f.toJSON();
123
- }, features.size)
124
- });
62
+ serializeResultsInWorker(result, args) {
63
+ const serialized = super.serializeResultsInWorker(result, args);
64
+ const { features } = result;
65
+ return {
66
+ ...serialized,
67
+ features: (0, util_1.iterMap)(features.values(), f => f.toJSON(), features.size),
68
+ };
125
69
  }
126
70
  /**
127
71
  * will expand if soft clipping or feature glyphs are shown
@@ -129,11 +73,8 @@ var FeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy) {
129
73
  * @param region - rendering region
130
74
  * @param _renderArgs - render args, unused, may be used in deriving classes
131
75
  */
132
-
133
- }, {
134
- key: "getExpandedRegion",
135
- value: function getExpandedRegion(region, _renderArgs) {
136
- return region;
76
+ getExpandedRegion(region, _renderArgs) {
77
+ return region;
137
78
  }
138
79
  /**
139
80
  * use the dataAdapter to fetch the features to be rendered
@@ -141,175 +82,59 @@ var FeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy) {
141
82
  * @param renderArgs -
142
83
  * @returns Map of features as `{ id => feature, ... }`
143
84
  */
144
-
145
- }, {
146
- key: "getFeatures",
147
- value: function () {
148
- var _getFeatures = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(renderArgs) {
149
- var _this = this;
150
-
151
- var signal, regions, sessionId, adapterConfig, _yield$getAdapter, dataAdapter, features, requestRegions, region, featureObservable, feats;
152
-
153
- return _regenerator.default.wrap(function _callee$(_context) {
154
- while (1) {
155
- switch (_context.prev = _context.next) {
156
- case 0:
157
- signal = renderArgs.signal, regions = renderArgs.regions, sessionId = renderArgs.sessionId, adapterConfig = renderArgs.adapterConfig;
158
- _context.next = 3;
159
- return (0, _dataAdapterCache.getAdapter)(this.pluginManager, sessionId, adapterConfig);
160
-
161
- case 3:
162
- _yield$getAdapter = _context.sent;
163
- dataAdapter = _yield$getAdapter.dataAdapter;
164
-
165
- if ((0, _BaseAdapter.isFeatureAdapter)(dataAdapter)) {
166
- _context.next = 7;
167
- break;
168
- }
169
-
170
- throw new Error('Adapter does not support retrieving features');
171
-
172
- case 7:
173
- features = new Map();
174
-
175
- if (!(!regions || regions.length === 0)) {
176
- _context.next = 10;
177
- break;
178
- }
179
-
180
- return _context.abrupt("return", features);
181
-
182
- case 10:
183
- requestRegions = regions.map(function (r) {
184
- // make sure the requested region's start and end are integers, if
185
- // there is a region specification.
186
- var requestRegion = _objectSpread({}, r);
187
-
188
- if (requestRegion.start) {
189
- requestRegion.start = Math.floor(requestRegion.start);
190
- }
191
-
192
- if (requestRegion.end) {
193
- requestRegion.end = Math.ceil(requestRegion.end);
194
- }
195
-
196
- return requestRegion;
197
- });
198
- region = requestRegions[0];
199
- featureObservable = requestRegions.length === 1 ? dataAdapter.getFeatures(this.getExpandedRegion(region, renderArgs), renderArgs) : dataAdapter.getFeaturesInMultipleRegions(requestRegions, renderArgs);
200
- _context.next = 15;
201
- return featureObservable.pipe((0, _operators.toArray)()).toPromise();
202
-
203
- case 15:
204
- feats = _context.sent;
205
- (0, _util.checkAbortSignal)(signal);
206
- return _context.abrupt("return", new Map(feats.filter(function (feat) {
207
- return _this.featurePassesFilters(renderArgs, feat);
208
- }).map(function (feat) {
209
- return [feat.id(), feat];
210
- })));
211
-
212
- case 18:
213
- case "end":
214
- return _context.stop();
85
+ async getFeatures(renderArgs) {
86
+ const { signal, regions, sessionId, adapterConfig } = renderArgs;
87
+ const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(this.pluginManager, sessionId, adapterConfig);
88
+ if (!(0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)) {
89
+ throw new Error('Adapter does not support retrieving features');
90
+ }
91
+ const features = new Map();
92
+ if (!regions || regions.length === 0) {
93
+ return features;
94
+ }
95
+ const requestRegions = regions.map((r) => {
96
+ // make sure the requested region's start and end are integers, if
97
+ // there is a region specification.
98
+ const requestRegion = { ...r };
99
+ if (requestRegion.start) {
100
+ requestRegion.start = Math.floor(requestRegion.start);
215
101
  }
216
- }
217
- }, _callee, this);
218
- }));
219
-
220
- function getFeatures(_x) {
221
- return _getFeatures.apply(this, arguments);
222
- }
223
-
224
- return getFeatures;
225
- }()
102
+ if (requestRegion.end) {
103
+ requestRegion.end = Math.ceil(requestRegion.end);
104
+ }
105
+ return requestRegion;
106
+ });
107
+ const region = requestRegions[0];
108
+ const featureObservable = requestRegions.length === 1
109
+ ? dataAdapter.getFeatures(this.getExpandedRegion(region, renderArgs), renderArgs)
110
+ : dataAdapter.getFeaturesInMultipleRegions(requestRegions, renderArgs);
111
+ const feats = await featureObservable.pipe((0, operators_1.toArray)()).toPromise();
112
+ (0, util_1.checkAbortSignal)(signal);
113
+ return new Map(feats
114
+ .filter(feat => this.featurePassesFilters(renderArgs, feat))
115
+ .map(feat => [feat.id(), feat]));
116
+ }
226
117
  /**
227
118
  * @param renderArgs -
228
119
  * @param feature -
229
120
  * @returns true if this feature passes all configured filters
230
121
  */
231
-
232
- }, {
233
- key: "featurePassesFilters",
234
- value: function featurePassesFilters(renderArgs, feature) {
235
- if (!renderArgs.filters) {
236
- return true;
237
- }
238
-
239
- return renderArgs.filters.passes(feature, renderArgs);
122
+ featurePassesFilters(renderArgs, feature) {
123
+ if (!renderArgs.filters) {
124
+ return true;
125
+ }
126
+ return renderArgs.filters.passes(feature, renderArgs);
240
127
  }
241
128
  /**
242
129
  * gets features and renders
243
130
  *
244
131
  * @param props - render args
245
132
  */
246
-
247
- }, {
248
- key: "render",
249
- value: function () {
250
- var _render = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(props) {
251
- var features, result;
252
- return _regenerator.default.wrap(function _callee2$(_context2) {
253
- while (1) {
254
- switch (_context2.prev = _context2.next) {
255
- case 0:
256
- _context2.t0 = props.features;
257
-
258
- if (_context2.t0) {
259
- _context2.next = 5;
260
- break;
261
- }
262
-
263
- _context2.next = 4;
264
- return this.getFeatures(props);
265
-
266
- case 4:
267
- _context2.t0 = _context2.sent;
268
-
269
- case 5:
270
- features = _context2.t0;
271
- _context2.next = 8;
272
- return (0, _get2.default)((0, _getPrototypeOf2.default)(FeatureRendererType.prototype), "render", this).call(this, _objectSpread(_objectSpread({}, props), {}, {
273
- features: features
274
- }));
275
-
276
- case 8:
277
- result = _context2.sent;
278
- return _context2.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
279
- features: features
280
- }));
281
-
282
- case 10:
283
- case "end":
284
- return _context2.stop();
285
- }
286
- }
287
- }, _callee2, this);
288
- }));
289
-
290
- function render(_x2) {
291
- return _render.apply(this, arguments);
292
- }
293
-
294
- return render;
295
- }()
296
- }]);
297
- return FeatureRendererType;
298
- }(_ServerSideRendererType.default);
299
-
133
+ async render(props) {
134
+ const features = props.features ||
135
+ (await this.getFeatures(props));
136
+ const result = await super.render({ ...props, features });
137
+ return { ...result, features };
138
+ }
139
+ }
300
140
  exports.default = FeatureRendererType;
301
-
302
- var NewFeatureRendererType = /*#__PURE__*/function (_ServerSideRendererTy2) {
303
- (0, _inherits2.default)(NewFeatureRendererType, _ServerSideRendererTy2);
304
-
305
- var _super2 = _createSuper(NewFeatureRendererType);
306
-
307
- function NewFeatureRendererType() {
308
- (0, _classCallCheck2.default)(this, NewFeatureRendererType);
309
- return _super2.apply(this, arguments);
310
- }
311
-
312
- return (0, _createClass2.default)(NewFeatureRendererType);
313
- }(_ServerSideRendererType.default);
314
-
315
- exports.NewFeatureRendererType = NewFeatureRendererType;
@@ -1,113 +1,39 @@
1
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
-
20
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
-
28
- var _react = _interopRequireDefault(require("react"));
29
-
30
- var _mstReflection = require("../../util/mst-reflection");
31
-
32
- var _PluggableElementBase2 = _interopRequireDefault(require("../PluggableElementBase"));
33
-
34
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
35
-
36
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
37
-
38
- var RendererType = /*#__PURE__*/function (_PluggableElementBase) {
39
- (0, _inherits2.default)(RendererType, _PluggableElementBase);
40
-
41
- var _super = _createSuper(RendererType);
42
-
43
- function RendererType(stuff) {
44
- var _this;
45
-
46
- (0, _classCallCheck2.default)(this, RendererType);
47
- _this = _super.call(this, stuff);
48
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ReactComponent", void 0);
49
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "supportsSVG", false);
50
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "configSchema", void 0);
51
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "pluginManager", void 0);
52
- _this.ReactComponent = stuff.ReactComponent;
53
- _this.configSchema = stuff.configSchema;
54
- _this.pluginManager = stuff.pluginManager;
55
-
56
- if (!_this.ReactComponent) {
57
- throw new Error("no ReactComponent defined for renderer ".concat(_this.name));
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 mst_reflection_1 = require("../../util/mst-reflection");
8
+ const PluggableElementBase_1 = __importDefault(require("../PluggableElementBase"));
9
+ class RendererType extends PluggableElementBase_1.default {
10
+ constructor(stuff) {
11
+ super(stuff);
12
+ this.supportsSVG = false;
13
+ this.ReactComponent = stuff.ReactComponent;
14
+ this.configSchema = stuff.configSchema;
15
+ this.pluginManager = stuff.pluginManager;
16
+ if (!this.ReactComponent) {
17
+ throw new Error(`no ReactComponent defined for renderer ${this.name}`);
18
+ }
19
+ if (!(0, mst_reflection_1.getDefaultValue)(this.configSchema).type) {
20
+ throw new Error(`${this.name} config schema ${this.configSchema.name} is not explicitlyTyped`);
21
+ }
22
+ if (!this.pluginManager) {
23
+ throw new Error(`no plugin manager defined for renderer ${this.name}`);
24
+ }
58
25
  }
59
-
60
- if (!(0, _mstReflection.getDefaultValue)(_this.configSchema).type) {
61
- throw new Error("".concat(_this.name, " config schema ").concat(_this.configSchema.name, " is not explicitlyTyped"));
26
+ async render(props) {
27
+ return {
28
+ reactElement: react_1.default.createElement(this.ReactComponent, props, null),
29
+ };
62
30
  }
63
-
64
- if (!_this.pluginManager) {
65
- throw new Error("no plugin manager defined for renderer ".concat(_this.name));
66
- }
67
-
68
- return _this;
69
- }
70
-
71
- (0, _createClass2.default)(RendererType, [{
72
- key: "render",
73
- value: function () {
74
- var _render = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(props) {
75
- return _regenerator.default.wrap(function _callee$(_context) {
76
- while (1) {
77
- switch (_context.prev = _context.next) {
78
- case 0:
79
- return _context.abrupt("return", {
80
- reactElement: /*#__PURE__*/_react.default.createElement(this.ReactComponent, props, null)
81
- });
82
-
83
- case 1:
84
- case "end":
85
- return _context.stop();
86
- }
87
- }
88
- }, _callee, this);
89
- }));
90
-
91
- function render(_x) {
92
- return _render.apply(this, arguments);
93
- }
94
-
95
- return render;
96
- }()
97
31
  /**
98
32
  * frees resources associated with the given range, session, etc.
99
33
  * optionally returns the number of data items deleted
100
34
  */
101
-
102
- }, {
103
- key: "freeResources",
104
- value: function
105
- /* specification: {} */
106
- freeResources() {
107
- return 0;
35
+ freeResources( /* specification: {} */) {
36
+ return 0;
108
37
  }
109
- }]);
110
- return RendererType;
111
- }(_PluggableElementBase2.default);
112
-
113
- exports.default = RendererType;
38
+ }
39
+ exports.default = RendererType;