@jbrowse/plugin-linear-genome-view 2.1.0 → 2.1.2

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 (119) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +27 -54
  2. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -1
  3. package/dist/BaseLinearDisplay/components/Block.js +17 -28
  4. package/dist/BaseLinearDisplay/components/Block.js.map +1 -1
  5. package/dist/BaseLinearDisplay/components/LinearBlocks.js +19 -21
  6. package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +1 -1
  7. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +27 -48
  8. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -1
  9. package/dist/BaseLinearDisplay/components/Tooltip.js +29 -58
  10. package/dist/BaseLinearDisplay/components/Tooltip.js.map +1 -1
  11. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +242 -363
  12. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
  13. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +1 -1
  14. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -1
  15. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +77 -129
  16. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
  17. package/dist/LinearBareDisplay/configSchema.js +2 -2
  18. package/dist/LinearBareDisplay/configSchema.js.map +1 -1
  19. package/dist/LinearBareDisplay/model.js +13 -19
  20. package/dist/LinearBareDisplay/model.js.map +1 -1
  21. package/dist/LinearBasicDisplay/components/SetMaxHeight.js +14 -31
  22. package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -1
  23. package/dist/LinearBasicDisplay/configSchema.js +3 -3
  24. package/dist/LinearBasicDisplay/configSchema.js.map +1 -1
  25. package/dist/LinearBasicDisplay/model.js +119 -147
  26. package/dist/LinearBasicDisplay/model.js.map +1 -1
  27. package/dist/LinearGenomeView/components/CenterLine.js +11 -12
  28. package/dist/LinearGenomeView/components/CenterLine.js.map +1 -1
  29. package/dist/LinearGenomeView/components/ExportSvgDialog.js +30 -96
  30. package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +1 -1
  31. package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +9 -0
  32. package/dist/LinearGenomeView/components/GetSequenceDialog.js +172 -0
  33. package/dist/LinearGenomeView/components/GetSequenceDialog.js.map +1 -0
  34. package/dist/LinearGenomeView/components/Gridlines.js +18 -20
  35. package/dist/LinearGenomeView/components/Gridlines.js.map +1 -1
  36. package/dist/LinearGenomeView/components/Header.js +26 -31
  37. package/dist/LinearGenomeView/components/Header.js.map +1 -1
  38. package/dist/LinearGenomeView/components/HelpDialog.js +10 -11
  39. package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -1
  40. package/dist/LinearGenomeView/components/ImportForm.js +91 -154
  41. package/dist/LinearGenomeView/components/ImportForm.js.map +1 -1
  42. package/dist/LinearGenomeView/components/LinearGenomeView.js +20 -21
  43. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
  44. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +86 -157
  45. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -1
  46. package/dist/LinearGenomeView/components/MiniControls.js +16 -32
  47. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -1
  48. package/dist/LinearGenomeView/components/OverviewRubberBand.d.ts +0 -11
  49. package/dist/LinearGenomeView/components/OverviewRubberBand.js +44 -76
  50. package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -1
  51. package/dist/LinearGenomeView/components/OverviewScaleBar.js +94 -117
  52. package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -1
  53. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +90 -172
  54. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -1
  55. package/dist/LinearGenomeView/components/RubberBand.js +51 -71
  56. package/dist/LinearGenomeView/components/RubberBand.js.map +1 -1
  57. package/dist/LinearGenomeView/components/Ruler.js +17 -18
  58. package/dist/LinearGenomeView/components/Ruler.js.map +1 -1
  59. package/dist/LinearGenomeView/components/ScaleBar.js +37 -58
  60. package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -1
  61. package/dist/LinearGenomeView/components/SearchBox.js +69 -133
  62. package/dist/LinearGenomeView/components/SearchBox.js.map +1 -1
  63. package/dist/LinearGenomeView/components/SearchResultsDialog.js +32 -33
  64. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -1
  65. package/dist/LinearGenomeView/components/{SequenceDialog.d.ts → SequenceSearchDialog.d.ts} +0 -0
  66. package/dist/LinearGenomeView/components/SequenceSearchDialog.js +104 -0
  67. package/dist/LinearGenomeView/components/SequenceSearchDialog.js.map +1 -0
  68. package/dist/LinearGenomeView/components/TrackContainer.js +28 -30
  69. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -1
  70. package/dist/LinearGenomeView/components/TrackLabel.js +37 -71
  71. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -1
  72. package/dist/LinearGenomeView/components/TracksContainer.js +32 -49
  73. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -1
  74. package/dist/LinearGenomeView/components/ZoomControls.js +15 -32
  75. package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -1
  76. package/dist/LinearGenomeView/components/util.js +14 -87
  77. package/dist/LinearGenomeView/components/util.js.map +1 -1
  78. package/dist/LinearGenomeView/index.d.ts +3 -3
  79. package/dist/LinearGenomeView/index.js +380 -430
  80. package/dist/LinearGenomeView/index.js.map +1 -1
  81. package/dist/LinearGenomeView/util.js +17 -36
  82. package/dist/LinearGenomeView/util.js.map +1 -1
  83. package/dist/index.js +75 -146
  84. package/dist/index.js.map +1 -1
  85. package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +9 -0
  86. package/esm/LinearGenomeView/components/{SequenceDialog.js → GetSequenceDialog.js} +4 -7
  87. package/esm/LinearGenomeView/components/GetSequenceDialog.js.map +1 -0
  88. package/esm/LinearGenomeView/components/ImportForm.js +1 -0
  89. package/esm/LinearGenomeView/components/ImportForm.js.map +1 -1
  90. package/esm/LinearGenomeView/components/LinearGenomeView.js +2 -2
  91. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
  92. package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +0 -11
  93. package/esm/LinearGenomeView/components/OverviewRubberBand.js +4 -12
  94. package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -1
  95. package/esm/LinearGenomeView/components/OverviewScaleBar.js +0 -2
  96. package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -1
  97. package/esm/LinearGenomeView/components/RubberBand.js +0 -1
  98. package/esm/LinearGenomeView/components/RubberBand.js.map +1 -1
  99. package/esm/LinearGenomeView/components/SearchBox.js.map +1 -1
  100. package/esm/LinearGenomeView/components/{SequenceDialog.d.ts → SequenceSearchDialog.d.ts} +0 -0
  101. package/esm/LinearGenomeView/components/SequenceSearchDialog.js +76 -0
  102. package/esm/LinearGenomeView/components/SequenceSearchDialog.js.map +1 -0
  103. package/esm/LinearGenomeView/index.d.ts +3 -3
  104. package/esm/LinearGenomeView/index.js +26 -19
  105. package/esm/LinearGenomeView/index.js.map +1 -1
  106. package/package.json +2 -3
  107. package/src/LinearGenomeView/components/{SequenceDialog.tsx → GetSequenceDialog.tsx} +4 -17
  108. package/src/LinearGenomeView/components/ImportForm.tsx +1 -0
  109. package/src/LinearGenomeView/components/LinearGenomeView.tsx +3 -3
  110. package/src/LinearGenomeView/components/OverviewRubberBand.tsx +5 -15
  111. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +0 -2
  112. package/src/LinearGenomeView/components/RubberBand.tsx +0 -1
  113. package/src/LinearGenomeView/components/SearchBox.tsx +1 -1
  114. package/src/LinearGenomeView/components/SequenceSearchDialog.tsx +165 -0
  115. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +14 -14
  116. package/src/LinearGenomeView/index.tsx +32 -25
  117. package/dist/LinearGenomeView/components/SequenceDialog.js +0 -242
  118. package/dist/LinearGenomeView/components/SequenceDialog.js.map +0 -1
  119. package/esm/LinearGenomeView/components/SequenceDialog.js.map +0 -1
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -33,137 +22,54 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
22
  __setModuleDefault(result, mod);
34
23
  return result;
35
24
  };
36
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
- return new (P || (P = Promise))(function (resolve, reject) {
39
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
- step((generator = generator.apply(thisArg, _arguments || [])).next());
43
- });
44
- };
45
- var __generator = (this && this.__generator) || function (thisArg, body) {
46
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
- function verb(n) { return function (v) { return step([n, v]); }; }
49
- function step(op) {
50
- if (f) throw new TypeError("Generator is already executing.");
51
- while (_) try {
52
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
- if (y = 0, t) op = [op[0] & 2, t.value];
54
- switch (op[0]) {
55
- case 0: case 1: t = op; break;
56
- case 4: _.label++; return { value: op[1], done: false };
57
- case 5: _.label++; y = op[1]; op = [0]; continue;
58
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
- default:
60
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
- if (t[2]) _.ops.pop();
65
- _.trys.pop(); continue;
66
- }
67
- op = body.call(thisArg, _);
68
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
- }
71
- };
72
- var __rest = (this && this.__rest) || function (s, e) {
73
- var t = {};
74
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
75
- t[p] = s[p];
76
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
77
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
79
- t[p[i]] = s[p[i]];
80
- }
81
- return t;
82
- };
83
- var __values = (this && this.__values) || function(o) {
84
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
85
- if (m) return m.call(o);
86
- if (o && typeof o.length === "number") return {
87
- next: function () {
88
- if (o && i >= o.length) o = void 0;
89
- return { value: o && o[i++], done: !o };
90
- }
91
- };
92
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
93
- };
94
- var __read = (this && this.__read) || function (o, n) {
95
- var m = typeof Symbol === "function" && o[Symbol.iterator];
96
- if (!m) return o;
97
- var i = m.call(o), r, ar = [], e;
98
- try {
99
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
100
- }
101
- catch (error) { e = { error: error }; }
102
- finally {
103
- try {
104
- if (r && !r.done && (m = i["return"])) m.call(i);
105
- }
106
- finally { if (e) throw e.error; }
107
- }
108
- return ar;
109
- };
110
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
111
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
112
- if (ar || !(i in from)) {
113
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
114
- ar[i] = from[i];
115
- }
116
- }
117
- return to.concat(ar || Array.prototype.slice.call(from));
118
- };
119
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
120
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
121
27
  };
122
28
  Object.defineProperty(exports, "__esModule", { value: true });
123
29
  exports.BaseLinearDisplay = void 0;
124
30
  /* eslint-disable @typescript-eslint/no-explicit-any */
125
- var react_1 = __importDefault(require("react"));
126
- var material_1 = require("@mui/material");
127
- var models_1 = require("@jbrowse/core/pluggableElementTypes/models");
128
- var configuration_1 = require("@jbrowse/core/configuration");
129
- var util_1 = require("@jbrowse/core/util");
130
- var compositeMap_1 = __importDefault(require("@jbrowse/core/util/compositeMap"));
131
- var simpleFeature_1 = require("@jbrowse/core/util/simpleFeature");
132
- var tracks_1 = require("@jbrowse/core/util/tracks");
133
- var mobx_1 = require("mobx");
134
- var mobx_state_tree_1 = require("mobx-state-tree");
31
+ const react_1 = __importDefault(require("react"));
32
+ const material_1 = require("@mui/material");
33
+ const models_1 = require("@jbrowse/core/pluggableElementTypes/models");
34
+ const configuration_1 = require("@jbrowse/core/configuration");
35
+ const util_1 = require("@jbrowse/core/util");
36
+ const compositeMap_1 = __importDefault(require("@jbrowse/core/util/compositeMap"));
37
+ const simpleFeature_1 = require("@jbrowse/core/util/simpleFeature");
38
+ const tracks_1 = require("@jbrowse/core/util/tracks");
39
+ const mobx_1 = require("mobx");
40
+ const mobx_state_tree_1 = require("mobx-state-tree");
135
41
  // icons
136
- var MenuOpen_1 = __importDefault(require("@mui/icons-material/MenuOpen"));
137
- var BaseLinearDisplay_1 = require("../components/BaseLinearDisplay");
138
- var serverSideRenderedBlock_1 = __importStar(require("./serverSideRenderedBlock"));
42
+ const MenuOpen_1 = __importDefault(require("@mui/icons-material/MenuOpen"));
43
+ const BaseLinearDisplay_1 = require("../components/BaseLinearDisplay");
44
+ const serverSideRenderedBlock_1 = __importStar(require("./serverSideRenderedBlock"));
139
45
  // stabilize clipid under test for snapshot
140
46
  function getId(id, index) {
141
- var isJest = typeof jest === 'undefined';
142
- return "clip-".concat(isJest ? id : 'jest', "-").concat(index);
47
+ const isJest = typeof jest === 'undefined';
48
+ return `clip-${isJest ? id : 'jest'}-${index}`;
143
49
  }
144
50
  function getDisplayStr(totalBytes) {
145
- var displayBp;
51
+ let displayBp;
146
52
  if (Math.floor(totalBytes / 1000000) > 0) {
147
- displayBp = "".concat(parseFloat((totalBytes / 1000000).toPrecision(3)), " Mb");
53
+ displayBp = `${parseFloat((totalBytes / 1000000).toPrecision(3))} Mb`;
148
54
  }
149
55
  else if (Math.floor(totalBytes / 1000) > 0) {
150
- displayBp = "".concat(parseFloat((totalBytes / 1000).toPrecision(3)), " Kb");
56
+ displayBp = `${parseFloat((totalBytes / 1000).toPrecision(3))} Kb`;
151
57
  }
152
58
  else {
153
- displayBp = "".concat(Math.floor(totalBytes), " bytes");
59
+ displayBp = `${Math.floor(totalBytes)} bytes`;
154
60
  }
155
61
  return displayBp;
156
62
  }
157
- var minDisplayHeight = 20;
158
- var defaultDisplayHeight = 100;
63
+ const minDisplayHeight = 20;
64
+ const defaultDisplayHeight = 100;
159
65
  exports.BaseLinearDisplay = mobx_state_tree_1.types
160
66
  .compose('BaseLinearDisplay', models_1.BaseDisplay, mobx_state_tree_1.types.model({
161
- height: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.refinement('displayHeight', mobx_state_tree_1.types.number, function (n) { return n >= minDisplayHeight; }), defaultDisplayHeight),
67
+ height: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.refinement('displayHeight', mobx_state_tree_1.types.number, n => n >= minDisplayHeight), defaultDisplayHeight),
162
68
  blockState: mobx_state_tree_1.types.map(serverSideRenderedBlock_1.default),
163
69
  userBpPerPxLimit: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
164
70
  userByteSizeLimit: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
165
71
  }))
166
- .volatile(function () { return ({
72
+ .volatile(() => ({
167
73
  currBpPerPx: 0,
168
74
  message: '',
169
75
  featureIdUnderMouse: undefined,
@@ -171,21 +77,21 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
171
77
  scrollTop: 0,
172
78
  estimatedRegionStatsP: undefined,
173
79
  estimatedRegionStats: undefined,
174
- }); })
175
- .views(function (self) { return ({
80
+ }))
81
+ .views(self => ({
176
82
  get blockType() {
177
83
  return 'staticBlocks';
178
84
  },
179
85
  get blockDefinitions() {
180
- var blockType = this.blockType;
181
- var view = (0, util_1.getContainingView)(self);
86
+ const { blockType } = this;
87
+ const view = (0, util_1.getContainingView)(self);
182
88
  if (!view.initialized) {
183
89
  throw new Error('view not initialized yet');
184
90
  }
185
91
  return view[blockType];
186
92
  },
187
- }); })
188
- .views(function (self) { return ({
93
+ }))
94
+ .views(self => ({
189
95
  /**
190
96
  * how many milliseconds to wait for the display to
191
97
  * "settle" before re-rendering a block
@@ -202,7 +108,7 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
202
108
  */
203
109
  get selectedFeatureId() {
204
110
  if ((0, mobx_state_tree_1.isAlive)(self)) {
205
- var selection = (0, util_1.getSession)(self).selection;
111
+ const { selection } = (0, util_1.getSession)(self);
206
112
  // does it quack like a feature?
207
113
  if ((0, simpleFeature_1.isFeature)(selection)) {
208
114
  return selection.id();
@@ -217,50 +123,39 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
217
123
  get DisplayMessageComponent() {
218
124
  return undefined;
219
125
  },
220
- }); })
221
- .views(function (self) { return ({
126
+ }))
127
+ .views(self => ({
222
128
  /**
223
129
  * a CompositeMap of `featureId -> feature obj` that
224
130
  * just looks in all the block data for that feature
225
131
  */
226
132
  get features() {
227
- var e_1, _a;
228
- var featureMaps = [];
229
- try {
230
- for (var _b = __values(self.blockState.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
231
- var block = _c.value;
232
- if (block && block.features) {
233
- featureMaps.push(block.features);
234
- }
133
+ const featureMaps = [];
134
+ for (const block of self.blockState.values()) {
135
+ if (block && block.features) {
136
+ featureMaps.push(block.features);
235
137
  }
236
138
  }
237
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
238
- finally {
239
- try {
240
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
241
- }
242
- finally { if (e_1) throw e_1.error; }
243
- }
244
139
  return new compositeMap_1.default(featureMaps);
245
140
  },
246
141
  get featureUnderMouse() {
247
- var feat = self.featureIdUnderMouse;
142
+ const feat = self.featureIdUnderMouse;
248
143
  return feat ? this.features.get(feat) : undefined;
249
144
  },
250
- getFeatureOverlapping: function (blockKey, x, y) {
145
+ getFeatureOverlapping(blockKey, x, y) {
251
146
  var _a, _b;
252
147
  return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByCoord(x, y);
253
148
  },
254
- getFeatureByID: function (blockKey, id) {
149
+ getFeatureByID(blockKey, id) {
255
150
  var _a, _b;
256
151
  return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByID(id);
257
152
  },
258
153
  // if block key is not supplied, can look at all blocks
259
- searchFeatureByID: function (id) {
260
- var ret;
261
- self.blockState.forEach(function (block) {
154
+ searchFeatureByID(id) {
155
+ let ret;
156
+ self.blockState.forEach(block => {
262
157
  var _a;
263
- var val = (_a = block === null || block === void 0 ? void 0 : block.layout) === null || _a === void 0 ? void 0 : _a.getByID(id);
158
+ const val = (_a = block === null || block === void 0 ? void 0 : block.layout) === null || _a === void 0 ? void 0 : _a.getByID(id);
264
159
  if (val) {
265
160
  ret = val;
266
161
  }
@@ -273,7 +168,7 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
273
168
  },
274
169
  get currentFeatureScreenDensity() {
275
170
  var _a;
276
- var view = (0, util_1.getContainingView)(self);
171
+ const view = (0, util_1.getContainingView)(self);
277
172
  return (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) || 0) * view.bpPerPx;
278
173
  },
279
174
  get maxFeatureScreenDensity() {
@@ -288,73 +183,77 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
288
183
  ((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.fetchSizeLimit) ||
289
184
  (0, configuration_1.getConf)(self, 'fetchSizeLimit'));
290
185
  },
291
- }); })
292
- .actions(function (self) { return ({
186
+ }))
187
+ .actions(self => ({
293
188
  // base display reload does nothing, see specialized displays for details
294
- setMessage: function (message) {
189
+ setMessage(message) {
295
190
  self.message = message;
296
191
  },
297
- afterAttach: function () {
298
- var _this = this;
192
+ afterAttach() {
299
193
  // watch the parent's blocks to update our block state when they change,
300
194
  // then we recreate the blocks on our own model (creating and deleting to
301
195
  // match the parent blocks)
302
- var blockWatchDisposer = (0, mobx_1.autorun)(function () {
303
- var blocksPresent = {};
304
- var view = (0, util_1.getContainingView)(self);
196
+ const blockWatchDisposer = (0, mobx_1.autorun)(() => {
197
+ const blocksPresent = {};
198
+ const view = (0, util_1.getContainingView)(self);
305
199
  if (view.initialized) {
306
- self.blockDefinitions.contentBlocks.forEach(function (block) {
200
+ self.blockDefinitions.contentBlocks.forEach(block => {
307
201
  blocksPresent[block.key] = true;
308
202
  if (!self.blockState.has(block.key)) {
309
- _this.addBlock(block.key, block);
203
+ this.addBlock(block.key, block);
310
204
  }
311
205
  });
312
- self.blockState.forEach(function (_, key) {
206
+ self.blockState.forEach((_, key) => {
313
207
  if (!blocksPresent[key]) {
314
- _this.deleteBlock(key);
208
+ this.deleteBlock(key);
315
209
  }
316
210
  });
317
211
  }
318
212
  });
319
213
  (0, mobx_state_tree_1.addDisposer)(self, blockWatchDisposer);
320
214
  },
321
- estimateRegionsStats: function (regions, opts) {
322
- var _this = this;
215
+ estimateRegionsStats(regions, opts) {
323
216
  if (self.estimatedRegionStatsP) {
324
217
  return self.estimatedRegionStatsP;
325
218
  }
326
- var rpcManager = (0, util_1.getSession)(self).rpcManager;
327
- var adapterConfig = self.adapterConfig;
219
+ const { rpcManager } = (0, util_1.getSession)(self);
220
+ const { adapterConfig } = self;
328
221
  if (!adapterConfig) {
329
222
  // A track extending the base track might not have an adapter config
330
223
  // e.g. Apollo tracks don't use adapters
331
224
  return Promise.resolve({});
332
225
  }
333
- var sessionId = (0, tracks_1.getRpcSessionId)(self);
334
- var params = __assign({ sessionId: sessionId, regions: regions, adapterConfig: adapterConfig, statusCallback: function (message) {
226
+ const sessionId = (0, tracks_1.getRpcSessionId)(self);
227
+ const params = {
228
+ sessionId,
229
+ regions,
230
+ adapterConfig,
231
+ statusCallback: (message) => {
335
232
  if ((0, mobx_state_tree_1.isAlive)(self)) {
336
- _this.setMessage(message);
233
+ this.setMessage(message);
337
234
  }
338
- } }, opts);
235
+ },
236
+ ...opts,
237
+ };
339
238
  self.estimatedRegionStatsP = rpcManager
340
239
  .call(sessionId, 'CoreEstimateRegionStats', params)
341
- .catch(function (e) {
342
- _this.setRegionStatsP(undefined);
240
+ .catch(e => {
241
+ this.setRegionStatsP(undefined);
343
242
  throw e;
344
243
  });
345
244
  return self.estimatedRegionStatsP;
346
245
  },
347
- setRegionStatsP: function (p) {
246
+ setRegionStatsP(p) {
348
247
  self.estimatedRegionStatsP = p;
349
248
  },
350
- setRegionStats: function (estimatedRegionStats) {
249
+ setRegionStats(estimatedRegionStats) {
351
250
  self.estimatedRegionStats = estimatedRegionStats;
352
251
  },
353
- clearRegionStats: function () {
252
+ clearRegionStats() {
354
253
  self.estimatedRegionStatsP = undefined;
355
254
  self.estimatedRegionStats = undefined;
356
255
  },
357
- setHeight: function (displayHeight) {
256
+ setHeight(displayHeight) {
358
257
  if (displayHeight > minDisplayHeight) {
359
258
  self.height = displayHeight;
360
259
  }
@@ -363,16 +262,16 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
363
262
  }
364
263
  return self.height;
365
264
  },
366
- resizeHeight: function (distance) {
367
- var oldHeight = self.height;
368
- var newHeight = this.setHeight(self.height + distance);
265
+ resizeHeight(distance) {
266
+ const oldHeight = self.height;
267
+ const newHeight = this.setHeight(self.height + distance);
369
268
  return newHeight - oldHeight;
370
269
  },
371
- setScrollTop: function (scrollTop) {
270
+ setScrollTop(scrollTop) {
372
271
  self.scrollTop = scrollTop;
373
272
  },
374
- updateStatsLimit: function (stats) {
375
- var view = (0, util_1.getContainingView)(self);
273
+ updateStatsLimit(stats) {
274
+ const view = (0, util_1.getContainingView)(self);
376
275
  if (stats.bytes) {
377
276
  self.userByteSizeLimit = stats.bytes;
378
277
  }
@@ -380,22 +279,22 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
380
279
  self.userBpPerPxLimit = view.bpPerPx;
381
280
  }
382
281
  },
383
- addBlock: function (key, block) {
282
+ addBlock(key, block) {
384
283
  self.blockState.set(key, serverSideRenderedBlock_1.default.create({
385
- key: key,
284
+ key,
386
285
  region: block.toRegion(),
387
286
  }));
388
287
  },
389
- setCurrBpPerPx: function (n) {
288
+ setCurrBpPerPx(n) {
390
289
  self.currBpPerPx = n;
391
290
  },
392
- deleteBlock: function (key) {
291
+ deleteBlock(key) {
393
292
  self.blockState.delete(key);
394
293
  },
395
- selectFeature: function (feature) {
396
- var session = (0, util_1.getSession)(self);
294
+ selectFeature(feature) {
295
+ const session = (0, util_1.getSession)(self);
397
296
  if ((0, util_1.isSessionModelWithWidgets)(session)) {
398
- var featureWidget = session.addWidget('BaseFeatureWidget', 'baseFeature', {
297
+ const featureWidget = session.addWidget('BaseFeatureWidget', 'baseFeature', {
399
298
  view: (0, util_1.getContainingView)(self),
400
299
  track: (0, util_1.getContainingTrack)(self),
401
300
  featureData: feature.toJSON(),
@@ -406,32 +305,32 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
406
305
  session.setSelection(feature);
407
306
  }
408
307
  },
409
- clearFeatureSelection: function () {
410
- var session = (0, util_1.getSession)(self);
308
+ clearFeatureSelection() {
309
+ const session = (0, util_1.getSession)(self);
411
310
  session.clearSelection();
412
311
  },
413
- setFeatureIdUnderMouse: function (feature) {
312
+ setFeatureIdUnderMouse(feature) {
414
313
  self.featureIdUnderMouse = feature;
415
314
  },
416
- reload: function () {
315
+ reload() {
417
316
  ;
418
- __spreadArray([], __read(self.blockState.values()), false).map(function (val) { return val.doReload(); });
317
+ [...self.blockState.values()].map(val => val.doReload());
419
318
  },
420
- setContextMenuFeature: function (feature) {
319
+ setContextMenuFeature(feature) {
421
320
  self.contextMenuFeature = feature;
422
321
  },
423
- }); })
424
- .views(function (self) { return ({
322
+ }))
323
+ .views(self => ({
425
324
  // region is too large if:
426
325
  // - stats are ready
427
326
  // - region is greater than 20kb (don't warn when zoomed in less than that)
428
327
  // - and bytes > max allowed bytes || curr density>max density
429
328
  get regionTooLarge() {
430
- var view = (0, util_1.getContainingView)(self);
329
+ const view = (0, util_1.getContainingView)(self);
431
330
  if (!self.estimatedStatsReady || view.dynamicBlocks.totalBp < 20000) {
432
331
  return false;
433
332
  }
434
- var bpLimitOrDensity = self.userBpPerPxLimit
333
+ const bpLimitOrDensity = self.userBpPerPxLimit
435
334
  ? view.bpPerPx > self.userBpPerPxLimit
436
335
  : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity;
437
336
  return (self.currentBytesRequested > self.maxAllowableBytes || bpLimitOrDensity);
@@ -439,115 +338,90 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
439
338
  // only shows a message of bytes requested is defined, the feature density
440
339
  // based stats don't produce any helpful message besides to zoom in
441
340
  get regionTooLargeReason() {
442
- var req = self.currentBytesRequested;
443
- var max = self.maxAllowableBytes;
341
+ const req = self.currentBytesRequested;
342
+ const max = self.maxAllowableBytes;
444
343
  return req && req > max
445
- ? "Requested too much data (".concat(getDisplayStr(req), ")")
344
+ ? `Requested too much data (${getDisplayStr(req)})`
446
345
  : '';
447
346
  },
448
- }); })
449
- .actions(function (self) {
450
- var superReload = self.reload;
347
+ }))
348
+ .actions(self => {
349
+ const { reload: superReload } = self;
451
350
  return {
452
- reload: function () {
453
- return __awaiter(this, void 0, void 0, function () {
454
- var aborter, view, estimatedRegionStats, e_2;
455
- return __generator(this, function (_a) {
456
- switch (_a.label) {
457
- case 0:
458
- self.setError();
459
- aborter = new AbortController();
460
- view = (0, util_1.getContainingView)(self);
461
- // extra check for contentBlocks.length
462
- // https://github.com/GMOD/jbrowse-components/issues/2694
463
- if (!view.initialized || !view.staticBlocks.contentBlocks.length) {
464
- return [2 /*return*/];
465
- }
466
- _a.label = 1;
467
- case 1:
468
- _a.trys.push([1, 3, , 4]);
469
- self.estimatedRegionStatsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
470
- return [4 /*yield*/, self.estimatedRegionStatsP];
471
- case 2:
472
- estimatedRegionStats = _a.sent();
473
- if ((0, mobx_state_tree_1.isAlive)(self)) {
474
- self.setRegionStats(estimatedRegionStats);
475
- superReload();
476
- }
477
- else {
478
- return [2 /*return*/];
479
- }
480
- return [3 /*break*/, 4];
481
- case 3:
482
- e_2 = _a.sent();
483
- console.error(e_2);
484
- self.setError(e_2);
485
- return [3 /*break*/, 4];
486
- case 4: return [2 /*return*/];
487
- }
488
- });
489
- });
351
+ async reload() {
352
+ self.setError();
353
+ const aborter = new AbortController();
354
+ const view = (0, util_1.getContainingView)(self);
355
+ // extra check for contentBlocks.length
356
+ // https://github.com/GMOD/jbrowse-components/issues/2694
357
+ if (!view.initialized || !view.staticBlocks.contentBlocks.length) {
358
+ return;
359
+ }
360
+ try {
361
+ self.estimatedRegionStatsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
362
+ const estimatedRegionStats = await self.estimatedRegionStatsP;
363
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
364
+ self.setRegionStats(estimatedRegionStats);
365
+ superReload();
366
+ }
367
+ else {
368
+ return;
369
+ }
370
+ }
371
+ catch (e) {
372
+ console.error(e);
373
+ self.setError(e);
374
+ }
490
375
  },
491
- afterAttach: function () {
492
- var _this = this;
376
+ afterAttach() {
493
377
  // this autorun performs stats estimation
494
378
  //
495
379
  // the chain of events calls estimateRegionsStats against the data
496
380
  // adapter which by default uses featureDensity, but can also respond
497
381
  // with a byte size estimate and fetch size limit (data adapter can
498
382
  // define what is too much data)
499
- (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(function () { return __awaiter(_this, void 0, void 0, function () {
500
- var aborter, view, statsP, estimatedRegionStats, e_3;
383
+ (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(async () => {
501
384
  var _a;
502
- return __generator(this, function (_b) {
503
- switch (_b.label) {
504
- case 0:
505
- _b.trys.push([0, 2, , 3]);
506
- aborter = new AbortController();
507
- view = (0, util_1.getContainingView)(self);
508
- // extra check for contentBlocks.length
509
- // https://github.com/GMOD/jbrowse-components/issues/2694
510
- if (!view.initialized ||
511
- !view.staticBlocks.contentBlocks.length) {
512
- return [2 /*return*/];
513
- }
514
- // don't re-estimate featureDensity even if zoom level changes,
515
- // jbrowse1-style assume it's sort of representative
516
- if (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) !== undefined) {
517
- self.setCurrBpPerPx(view.bpPerPx);
518
- return [2 /*return*/];
519
- }
520
- // we estimate stats once at a given zoom level
521
- if (view.bpPerPx === self.currBpPerPx) {
522
- return [2 /*return*/];
523
- }
524
- self.clearRegionStats();
525
- self.setCurrBpPerPx(view.bpPerPx);
526
- statsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
527
- self.setRegionStatsP(statsP);
528
- return [4 /*yield*/, statsP];
529
- case 1:
530
- estimatedRegionStats = _b.sent();
531
- if ((0, mobx_state_tree_1.isAlive)(self)) {
532
- self.setRegionStats(estimatedRegionStats);
533
- }
534
- return [3 /*break*/, 3];
535
- case 2:
536
- e_3 = _b.sent();
537
- if (!(0, util_1.isAbortException)(e_3) && (0, mobx_state_tree_1.isAlive)(self)) {
538
- console.error(e_3);
539
- self.setError(e_3);
540
- }
541
- return [3 /*break*/, 3];
542
- case 3: return [2 /*return*/];
385
+ try {
386
+ const aborter = new AbortController();
387
+ const view = (0, util_1.getContainingView)(self);
388
+ // extra check for contentBlocks.length
389
+ // https://github.com/GMOD/jbrowse-components/issues/2694
390
+ if (!view.initialized ||
391
+ !view.staticBlocks.contentBlocks.length) {
392
+ return;
543
393
  }
544
- });
545
- }); }, { delay: 500 }));
394
+ // don't re-estimate featureDensity even if zoom level changes,
395
+ // jbrowse1-style assume it's sort of representative
396
+ if (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) !== undefined) {
397
+ self.setCurrBpPerPx(view.bpPerPx);
398
+ return;
399
+ }
400
+ // we estimate stats once at a given zoom level
401
+ if (view.bpPerPx === self.currBpPerPx) {
402
+ return;
403
+ }
404
+ self.clearRegionStats();
405
+ self.setCurrBpPerPx(view.bpPerPx);
406
+ const statsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
407
+ self.setRegionStatsP(statsP);
408
+ const estimatedRegionStats = await statsP;
409
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
410
+ self.setRegionStats(estimatedRegionStats);
411
+ }
412
+ }
413
+ catch (e) {
414
+ if (!(0, util_1.isAbortException)(e) && (0, mobx_state_tree_1.isAlive)(self)) {
415
+ console.error(e);
416
+ self.setError(e);
417
+ }
418
+ }
419
+ }, { delay: 500 }));
546
420
  },
547
421
  };
548
422
  })
549
- .views(function (self) { return ({
550
- regionCannotBeRenderedText: function (_region) {
423
+ .views(self => ({
424
+ regionCannotBeRenderedText(_region) {
551
425
  return self.regionTooLarge ? 'Force load to see features' : '';
552
426
  },
553
427
  /**
@@ -557,15 +431,15 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
557
431
  * string of text describes why it cannot be rendered
558
432
  * react node allows user to force load at current setting
559
433
  */
560
- regionCannotBeRendered: function (_region) {
561
- var regionTooLarge = self.regionTooLarge, regionTooLargeReason = self.regionTooLargeReason;
434
+ regionCannotBeRendered(_region) {
435
+ const { regionTooLarge, regionTooLargeReason } = self;
562
436
  if (regionTooLarge) {
563
437
  return (react_1.default.createElement(react_1.default.Fragment, null,
564
438
  react_1.default.createElement(material_1.Typography, { component: "span", variant: "body2" },
565
439
  regionTooLargeReason ? regionTooLargeReason + '. ' : '',
566
440
  "Zoom in to see features or",
567
441
  ' '),
568
- react_1.default.createElement(material_1.Button, { "data-testid": "force_reload_button", onClick: function () {
442
+ react_1.default.createElement(material_1.Button, { "data-testid": "force_reload_button", onClick: () => {
569
443
  if (!self.estimatedRegionStats) {
570
444
  console.error('No global stats?');
571
445
  }
@@ -578,16 +452,16 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
578
452
  }
579
453
  return undefined;
580
454
  },
581
- trackMenuItems: function () {
455
+ trackMenuItems() {
582
456
  return [];
583
457
  },
584
- contextMenuItems: function () {
458
+ contextMenuItems() {
585
459
  return self.contextMenuFeature
586
460
  ? [
587
461
  {
588
462
  label: 'Open feature details',
589
463
  icon: MenuOpen_1.default,
590
- onClick: function () {
464
+ onClick: () => {
591
465
  if (self.contextMenuFeature) {
592
466
  self.selectFeature(self.contextMenuFeature);
593
467
  }
@@ -596,25 +470,31 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
596
470
  ]
597
471
  : [];
598
472
  },
599
- renderProps: function () {
600
- var view = (0, util_1.getContainingView)(self);
601
- return __assign(__assign({}, (0, tracks_1.getParentRenderProps)(self)), { notReady: self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats, rpcDriverName: self.rpcDriverName, displayModel: self, onFeatureClick: function (_, featureId) {
602
- var f = featureId || self.featureIdUnderMouse;
473
+ renderProps() {
474
+ const view = (0, util_1.getContainingView)(self);
475
+ return {
476
+ ...(0, tracks_1.getParentRenderProps)(self),
477
+ notReady: self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats,
478
+ rpcDriverName: self.rpcDriverName,
479
+ displayModel: self,
480
+ onFeatureClick(_, featureId) {
481
+ const f = featureId || self.featureIdUnderMouse;
603
482
  if (!f) {
604
483
  self.clearFeatureSelection();
605
484
  }
606
485
  else {
607
- var feature = self.features.get(f);
486
+ const feature = self.features.get(f);
608
487
  if (feature) {
609
488
  self.selectFeature(feature);
610
489
  }
611
490
  }
612
- }, onClick: function () {
491
+ },
492
+ onClick() {
613
493
  self.clearFeatureSelection();
614
- },
494
+ },
615
495
  // similar to click but opens a menu with further options
616
- onFeatureContextMenu: function (_, featureId) {
617
- var f = featureId || self.featureIdUnderMouse;
496
+ onFeatureContextMenu(_, featureId) {
497
+ const f = featureId || self.featureIdUnderMouse;
618
498
  if (!f) {
619
499
  self.clearFeatureSelection();
620
500
  }
@@ -622,70 +502,69 @@ exports.BaseLinearDisplay = mobx_state_tree_1.types
622
502
  // feature id under mouse passed to context menu
623
503
  self.setContextMenuFeature(self.features.get(f));
624
504
  }
625
- }, onMouseMove: function (_, featureId) {
505
+ },
506
+ onMouseMove(_, featureId) {
626
507
  self.setFeatureIdUnderMouse(featureId);
627
- }, onMouseLeave: function (_) {
508
+ },
509
+ onMouseLeave(_) {
628
510
  self.setFeatureIdUnderMouse(undefined);
629
- }, onContextMenu: function () {
511
+ },
512
+ onContextMenu() {
630
513
  self.setContextMenuFeature(undefined);
631
514
  self.clearFeatureSelection();
632
- } });
633
- },
634
- }); })
635
- .actions(function (self) { return ({
636
- renderSvg: function (opts) {
637
- return __awaiter(this, void 0, void 0, function () {
638
- var height, id, overrideHeight, view, viewOffsetPx, roundedDynamicBlocks, width, renderings;
639
- return __generator(this, function (_a) {
640
- switch (_a.label) {
641
- case 0:
642
- height = self.height, id = self.id;
643
- overrideHeight = opts.overrideHeight;
644
- view = (0, util_1.getContainingView)(self);
645
- viewOffsetPx = view.offsetPx, roundedDynamicBlocks = view.roundedDynamicBlocks, width = view.width;
646
- return [4 /*yield*/, Promise.all(roundedDynamicBlocks.map(function (block) {
647
- var blockState = serverSideRenderedBlock_1.default.create({
648
- key: block.key,
649
- region: block,
650
- });
651
- // regionCannotBeRendered can return jsx so look for plaintext
652
- // version, or just get the default if none available
653
- var cannotBeRenderedReason = self.regionCannotBeRenderedText(block) ||
654
- self.regionCannotBeRendered(block);
655
- if (cannotBeRenderedReason) {
656
- return {
657
- reactElement: (react_1.default.createElement(react_1.default.Fragment, null,
658
- react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: 20, fill: "#aaa" }),
659
- react_1.default.createElement("text", { x: 0, y: 15 }, cannotBeRenderedReason))),
660
- };
661
- }
662
- var _a = (0, serverSideRenderedBlock_1.renderBlockData)(blockState, self), rpcManager = _a.rpcManager, renderArgs = _a.renderArgs, renderProps = _a.renderProps, rendererType = _a.rendererType;
663
- return rendererType.renderInClient(rpcManager, __assign(__assign(__assign({}, renderArgs), renderProps), { viewParams: (0, util_1.getViewParams)(self, true), exportSVG: opts }));
664
- }))];
665
- case 1:
666
- renderings = _a.sent();
667
- return [2 /*return*/, (react_1.default.createElement(react_1.default.Fragment, null, renderings.map(function (rendering, index) {
668
- var offsetPx = roundedDynamicBlocks[index].offsetPx;
669
- var offset = offsetPx - viewOffsetPx;
670
- var clipid = getId(id, index);
671
- return (react_1.default.createElement(react_1.default.Fragment, { key: "frag-".concat(index) },
672
- react_1.default.createElement("defs", null,
673
- react_1.default.createElement("clipPath", { id: clipid },
674
- react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: overrideHeight || height }))),
675
- react_1.default.createElement("g", { transform: "translate(".concat(offset, " 0)") },
676
- react_1.default.createElement("g", { clipPath: "url(#".concat(clipid, ")") }, react_1.default.isValidElement(rendering.reactElement) ? (rendering.reactElement) : (
677
- // eslint-disable-next-line react/no-danger
678
- react_1.default.createElement("g", { dangerouslySetInnerHTML: { __html: rendering.html } }))))));
679
- })))];
680
- }
515
+ },
516
+ };
517
+ },
518
+ }))
519
+ .actions(self => ({
520
+ async renderSvg(opts) {
521
+ const { height, id } = self;
522
+ const { overrideHeight } = opts;
523
+ const view = (0, util_1.getContainingView)(self);
524
+ const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view;
525
+ const renderings = await Promise.all(roundedDynamicBlocks.map(block => {
526
+ const blockState = serverSideRenderedBlock_1.default.create({
527
+ key: block.key,
528
+ region: block,
681
529
  });
682
- });
530
+ // regionCannotBeRendered can return jsx so look for plaintext
531
+ // version, or just get the default if none available
532
+ const cannotBeRenderedReason = self.regionCannotBeRenderedText(block) ||
533
+ self.regionCannotBeRendered(block);
534
+ if (cannotBeRenderedReason) {
535
+ return {
536
+ reactElement: (react_1.default.createElement(react_1.default.Fragment, null,
537
+ react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: 20, fill: "#aaa" }),
538
+ react_1.default.createElement("text", { x: 0, y: 15 }, cannotBeRenderedReason))),
539
+ };
540
+ }
541
+ const { rpcManager, renderArgs, renderProps, rendererType } = (0, serverSideRenderedBlock_1.renderBlockData)(blockState, self);
542
+ return rendererType.renderInClient(rpcManager, {
543
+ ...renderArgs,
544
+ ...renderProps,
545
+ viewParams: (0, util_1.getViewParams)(self, true),
546
+ exportSVG: opts,
547
+ });
548
+ }));
549
+ return (react_1.default.createElement(react_1.default.Fragment, null, renderings.map((rendering, index) => {
550
+ const { offsetPx } = roundedDynamicBlocks[index];
551
+ const offset = offsetPx - viewOffsetPx;
552
+ const clipid = getId(id, index);
553
+ return (react_1.default.createElement(react_1.default.Fragment, { key: `frag-${index}` },
554
+ react_1.default.createElement("defs", null,
555
+ react_1.default.createElement("clipPath", { id: clipid },
556
+ react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: overrideHeight || height }))),
557
+ react_1.default.createElement("g", { transform: `translate(${offset} 0)` },
558
+ react_1.default.createElement("g", { clipPath: `url(#${clipid})` }, react_1.default.isValidElement(rendering.reactElement) ? (rendering.reactElement) : (
559
+ // eslint-disable-next-line react/no-danger
560
+ react_1.default.createElement("g", { dangerouslySetInnerHTML: { __html: rendering.html } }))))));
561
+ })));
683
562
  },
684
- }); })
685
- .postProcessSnapshot(function (self) {
563
+ }))
564
+ .postProcessSnapshot(self => {
686
565
  // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
687
- var r = self;
688
- var blockState = r.blockState, rest = __rest(r, ["blockState"]);
566
+ const r = self;
567
+ const { blockState, ...rest } = r;
689
568
  return rest;
690
569
  });
691
570
  //# sourceMappingURL=BaseLinearDisplayModel.js.map