@datagrok-libraries/bio 5.40.7 → 5.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/package.json +5 -5
- package/src/helm/helm-helper.d.ts +3 -2
- package/src/helm/helm-helper.d.ts.map +1 -1
- package/src/helm/helm-helper.js.map +1 -1
- package/src/helm/types.d.ts +3 -24
- package/src/helm/types.d.ts.map +1 -1
- package/src/helm/types.js +1 -1
- package/src/helm/types.js.map +1 -1
- package/src/types/dojo.d.ts +4 -0
- package/src/types/dojo.d.ts.map +1 -0
- package/src/types/dojo.js +2 -0
- package/src/types/dojo.js.map +1 -0
- package/src/types/helm.d.ts +83 -0
- package/src/types/helm.d.ts.map +1 -0
- package/src/types/helm.js +2 -0
- package/src/types/helm.js.map +1 -0
- package/src/types/index.d.ts +2 -0
- package/src/types/index.d.ts.map +1 -1
- package/src/types/index.js.map +1 -1
- package/src/types/jsdraw2.d.ts +44 -0
- package/src/types/jsdraw2.d.ts.map +1 -0
- package/src/types/jsdraw2.js +2 -0
- package/src/types/jsdraw2.js.map +1 -0
- package/src/utils/cell-renderer-async-base.d.ts +94 -0
- package/src/utils/cell-renderer-async-base.d.ts.map +1 -0
- package/src/utils/cell-renderer-async-base.js +406 -0
- package/src/utils/cell-renderer-async-base.js.map +1 -0
- package/src/utils/cell-renderer-back-base.d.ts +26 -0
- package/src/utils/cell-renderer-back-base.d.ts.map +1 -0
- package/src/utils/cell-renderer-back-base.js +80 -0
- package/src/utils/cell-renderer-back-base.js.map +1 -0
- package/src/utils/cell-renderer-monomer-placer.d.ts +5 -6
- package/src/utils/cell-renderer-monomer-placer.d.ts.map +1 -1
- package/src/utils/cell-renderer-monomer-placer.js +25 -44
- package/src/utils/cell-renderer-monomer-placer.js.map +1 -1
- package/src/viewers/helm-service.d.ts +17 -0
- package/src/viewers/helm-service.d.ts.map +1 -0
- package/src/viewers/helm-service.js +19 -0
- package/src/viewers/helm-service.js.map +1 -0
- package/src/viewers/ngl-gl-service.d.ts +7 -27
- package/src/viewers/ngl-gl-service.d.ts.map +1 -1
- package/src/viewers/ngl-gl-service.js +8 -1
- package/src/viewers/ngl-gl-service.js.map +1 -1
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import * as ui from 'datagrok-api/ui';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { testEvent } from '@datagrok-libraries/utils/src/test';
|
|
5
|
+
import { errInfo } from './err-info';
|
|
6
|
+
import { CellRendererBackBase } from './cell-renderer-back-base';
|
|
7
|
+
export class PropsBase {
|
|
8
|
+
constructor(backColor, width, height) {
|
|
9
|
+
this.backColor = backColor;
|
|
10
|
+
this.width = width;
|
|
11
|
+
this.height = height;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class RenderTask {
|
|
15
|
+
constructor(name, props, onAfterRender, isPriority) {
|
|
16
|
+
this.name = name;
|
|
17
|
+
this.props = props;
|
|
18
|
+
this.onAfterRender = onAfterRender;
|
|
19
|
+
this.isPriority = isPriority;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class RenderServiceBase {
|
|
23
|
+
constructor(logger, retryLimit = 3, _errorCount = 0, errorLimit = 3, taskTimout = 1000) {
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.retryLimit = retryLimit;
|
|
26
|
+
this._errorCount = _errorCount;
|
|
27
|
+
this.errorLimit = errorLimit;
|
|
28
|
+
this.taskTimout = taskTimout;
|
|
29
|
+
this.consumerCounter = 0;
|
|
30
|
+
/** The flag allows {@link _processQueue}() on add item to the queue with {@link render}() */
|
|
31
|
+
this._busy = false;
|
|
32
|
+
this._sweeperHandle = null;
|
|
33
|
+
this.viewerId = ++RenderServiceBase.viewerCounter;
|
|
34
|
+
this._queue = [];
|
|
35
|
+
this._queueDict = {};
|
|
36
|
+
this._sweepToggle(false);
|
|
37
|
+
}
|
|
38
|
+
toLog() {
|
|
39
|
+
return `${this.constructor.name}<${this.viewerId}>`;
|
|
40
|
+
}
|
|
41
|
+
get errorCount() { return this._errorCount; }
|
|
42
|
+
/** Queues render tasks
|
|
43
|
+
* @param consumerId Identifier of the consumer of this render service
|
|
44
|
+
* @param task Task to render
|
|
45
|
+
* @param key Specify to skip previously queued tasks with the same key
|
|
46
|
+
* @return {@link consumerId} or assigned new if null
|
|
47
|
+
*/
|
|
48
|
+
render(consumerId, task, key, tryCount = 0) {
|
|
49
|
+
const logPrefix = `${this.toLog()}.render()`;
|
|
50
|
+
this.logger.debug(`${logPrefix}, start ` + `key: ${key?.toString()}`);
|
|
51
|
+
if (key !== undefined) {
|
|
52
|
+
if (key in this._queueDict) {
|
|
53
|
+
// remove outdated task from the queue
|
|
54
|
+
const oldTaskI = this._queue.findIndex((item) => item.key === key);
|
|
55
|
+
this._queue.splice(oldTaskI, 1);
|
|
56
|
+
}
|
|
57
|
+
this.logger.debug(`${logPrefix}, _queueDict[ key: ${key?.toString()} ] = <task>`);
|
|
58
|
+
this._queueDict[key] = task;
|
|
59
|
+
}
|
|
60
|
+
this.logger.debug(`${logPrefix}, _queue.push(), ` + `key: ${key?.toString()}`);
|
|
61
|
+
if (consumerId === null)
|
|
62
|
+
consumerId = ++this.consumerCounter;
|
|
63
|
+
this._queue.push({ consumerId, key, task, tryCount, dt: window.performance.now() });
|
|
64
|
+
if (!this._busy) {
|
|
65
|
+
this._sweepToggle(this._busy = true);
|
|
66
|
+
// TODO: Use requestAnimationFrame()
|
|
67
|
+
this.logger.debug(`${logPrefix}, window.setTimeout() -> this._processQueue() `);
|
|
68
|
+
window.setTimeout(() => { this._processQueue(); }, 0 /* next event cycle */);
|
|
69
|
+
}
|
|
70
|
+
return consumerId;
|
|
71
|
+
}
|
|
72
|
+
getTask() {
|
|
73
|
+
if (this._queue.length == 0)
|
|
74
|
+
return undefined;
|
|
75
|
+
let resItem = undefined;
|
|
76
|
+
const head = this._queue[0];
|
|
77
|
+
if (head.task.isPriority && !head.task.isPriority()) {
|
|
78
|
+
let priorityItemIdx = null;
|
|
79
|
+
for (let i = 0; i < this._queue.length; ++i) {
|
|
80
|
+
const item = this._queue[i];
|
|
81
|
+
if (item.consumerId === head.consumerId && item.task.isPriority) {
|
|
82
|
+
if (item.task.isPriority()) {
|
|
83
|
+
priorityItemIdx = i;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Push back not-priority items to the end of the queue
|
|
88
|
+
const deferredItemList = this._queue.splice(i);
|
|
89
|
+
this._queue.push(...deferredItemList);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (priorityItemIdx !== null) {
|
|
94
|
+
resItem = this._queue.splice(priorityItemIdx, 1)[0];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (!resItem)
|
|
98
|
+
resItem = this._queue.shift();
|
|
99
|
+
return resItem;
|
|
100
|
+
}
|
|
101
|
+
_processQueue() {
|
|
102
|
+
const logPrefix = `${this.toLog()}._processQueue()`;
|
|
103
|
+
if (this._queue.length === 0)
|
|
104
|
+
return;
|
|
105
|
+
this.logger.debug(`${logPrefix}, ` +
|
|
106
|
+
`queue: ${JSON.stringify(this._queue.map((t) => t.key))}`);
|
|
107
|
+
let renderSub = null;
|
|
108
|
+
const finallyProcessQueue = (caller) => {
|
|
109
|
+
const logPrefixR = `${logPrefix}.finallyProcessQueue( <- ${caller} )`;
|
|
110
|
+
if (renderSub)
|
|
111
|
+
renderSub.unsubscribe(); // renderSub can be undefined for a sync render service (?)
|
|
112
|
+
if (this._queue.length > 0) {
|
|
113
|
+
// Schedule processQueue the next item only afterRender has asynchronously completed for the previous one
|
|
114
|
+
this.logger.debug(`${logPrefixR}, ` + 'window.setTimeout() -> this._processQueue() ');
|
|
115
|
+
window.setTimeout(() => { this._processQueue(); }, 0 /* next event cycle */);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// release flag allowing _processQueue on add queue item
|
|
119
|
+
this.logger.debug(`${logPrefixR}, ` + 'this._busy = false');
|
|
120
|
+
this._sweepToggle(this._busy = false);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const queueItem = this.getTask();
|
|
124
|
+
if (!queueItem) {
|
|
125
|
+
this.logger.error(`${logPrefix}, queueItem = undefined `);
|
|
126
|
+
finallyProcessQueue('no queue item');
|
|
127
|
+
return;
|
|
128
|
+
} // in case of empty queue
|
|
129
|
+
const { consumerId, key, task, tryCount, dt } = queueItem;
|
|
130
|
+
if (key !== undefined) {
|
|
131
|
+
this.logger.debug(`${logPrefix}, ` + `key: ${key.toString()}`);
|
|
132
|
+
delete this._queueDict[key];
|
|
133
|
+
}
|
|
134
|
+
if (tryCount > this.retryLimit) {
|
|
135
|
+
this.logger.warning(`${logPrefix}, skip task, ` +
|
|
136
|
+
` key: ${key?.toString()}, tryCount: ${tryCount}`);
|
|
137
|
+
finallyProcessQueue('try count limit');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
let emptyCanvasHash;
|
|
141
|
+
let handled = false;
|
|
142
|
+
const timeoutHandle = window.setTimeout(() => {
|
|
143
|
+
if (!handled) {
|
|
144
|
+
this.logger.warning(`${logPrefix}.timeoutHandle(), not handled, ` +
|
|
145
|
+
`key: ${key?.toString()}.` + `\n` +
|
|
146
|
+
` The .requestRender() overridden method must call renderHandler callback from args.`);
|
|
147
|
+
this._errorCount += 1;
|
|
148
|
+
this.render(consumerId, task, key, tryCount + 1); // return task to the queue
|
|
149
|
+
finallyProcessQueue('timeout');
|
|
150
|
+
}
|
|
151
|
+
}, 1000);
|
|
152
|
+
const renderHandler = (aux) => {
|
|
153
|
+
this.logger.debug(`${logPrefix}.renderHandler(), ` + `key: ${key?.toString()}`);
|
|
154
|
+
if (this.onRendered(key, task, emptyCanvasHash, aux)) {
|
|
155
|
+
handled = true;
|
|
156
|
+
window.clearTimeout(timeoutHandle);
|
|
157
|
+
finallyProcessQueue('render');
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
this.requestRender(key, task, renderHandler).then((res) => {
|
|
161
|
+
const logPrefixInt = `${logPrefix}, requestRender().then()`;
|
|
162
|
+
renderSub = res[0];
|
|
163
|
+
emptyCanvasHash = res[1];
|
|
164
|
+
const triggerRender = res[2];
|
|
165
|
+
if (emptyCanvasHash === undefined)
|
|
166
|
+
console.warn(`${logPrefixInt}, this.requestRender.then() emptyCanvasHash undefined`);
|
|
167
|
+
triggerRender();
|
|
168
|
+
})
|
|
169
|
+
.catch((err) => {
|
|
170
|
+
const logPrefixInt = `${logPrefix}, requestRender().catch()`;
|
|
171
|
+
// Not waiting timeout on error
|
|
172
|
+
const [errMsg, errStack] = errInfo(err);
|
|
173
|
+
this.logger.error(errMsg, undefined, errStack);
|
|
174
|
+
window.clearTimeout(timeoutHandle);
|
|
175
|
+
this._errorCount += 1;
|
|
176
|
+
this.render(consumerId, task, key, tryCount + 1); // return task to the queue
|
|
177
|
+
finallyProcessQueue(`${logPrefixInt}`);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/** Sweep queue for stalled tasks */
|
|
181
|
+
_sweepQueue() {
|
|
182
|
+
const logPrefix = `${this.toLog()}._sweepQueue()`;
|
|
183
|
+
const nowDt = window.performance.now();
|
|
184
|
+
let swept = 0;
|
|
185
|
+
for (let qI = this._queue.length - 1; qI >= 0; qI--) {
|
|
186
|
+
const { key, task: _task, dt } = this._queue[qI];
|
|
187
|
+
if ((nowDt - dt) > this.taskTimout) {
|
|
188
|
+
// stalled task
|
|
189
|
+
this.logger.warning(`${logPrefix}, remove task key = ${key?.toString()}`);
|
|
190
|
+
this._queue.splice(qI);
|
|
191
|
+
delete this._queueDict[key];
|
|
192
|
+
++swept;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
this._sweepToggle(this._busy = this._queue.length > 0);
|
|
196
|
+
if (!this._busy && swept)
|
|
197
|
+
this.logger.warning(`${logPrefix}, ${swept} task(s) had been swept`);
|
|
198
|
+
}
|
|
199
|
+
_sweepToggle(busy) {
|
|
200
|
+
const logPrefix = `${this.toLog()}._sweepToggle( busy = ${busy} )`;
|
|
201
|
+
if (busy && this._sweeperHandle !== null) {
|
|
202
|
+
this.logger.debug(`${logPrefix}, disable queue sweeper`);
|
|
203
|
+
window.clearInterval(this._sweeperHandle);
|
|
204
|
+
this._sweeperHandle = null;
|
|
205
|
+
}
|
|
206
|
+
if (!busy && this._sweeperHandle === null) {
|
|
207
|
+
this.logger.debug(`${logPrefix}, enable queue sweeper`);
|
|
208
|
+
this._sweeperHandle = window.setInterval(() => { this._sweepQueue(); }, 500);
|
|
209
|
+
}
|
|
210
|
+
return busy;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
RenderServiceBase.viewerCounter = -1;
|
|
214
|
+
export class CellRendererBackAsyncBase extends CellRendererBackBase {
|
|
215
|
+
constructor(gridCol, tableCol, logger, cacheEnabled = true) {
|
|
216
|
+
super(gridCol, tableCol, logger);
|
|
217
|
+
this.cacheEnabled = cacheEnabled;
|
|
218
|
+
this.taskQueueMap = new Map;
|
|
219
|
+
this.imageCache = new Map();
|
|
220
|
+
/** Consumer identifier of the render service */
|
|
221
|
+
this.consumerId = null;
|
|
222
|
+
// -- IRenderer --
|
|
223
|
+
this._onRendered = new Subject();
|
|
224
|
+
}
|
|
225
|
+
reset() {
|
|
226
|
+
if (this.imageCache) {
|
|
227
|
+
// for (const cellImageData of this.imageCache.values())
|
|
228
|
+
// cellImageData.remove();
|
|
229
|
+
}
|
|
230
|
+
this.imageCache = new Map();
|
|
231
|
+
}
|
|
232
|
+
render(g, x, y, w, h, gridCell, cellStyle) {
|
|
233
|
+
const dpr = window.devicePixelRatio;
|
|
234
|
+
const service = this.getRenderService();
|
|
235
|
+
if (gridCell.tableRowIndex == null)
|
|
236
|
+
return;
|
|
237
|
+
const rowIdx = gridCell.tableRowIndex;
|
|
238
|
+
this.logger.debug('PdbRenderer.render() start ' + `rowIdx=${rowIdx}`);
|
|
239
|
+
g.save();
|
|
240
|
+
try {
|
|
241
|
+
const cellImageData = this.imageCache.has(rowIdx) ? this.imageCache.get(rowIdx) : null;
|
|
242
|
+
const bd = new DG.Rect(x, y, w, h);
|
|
243
|
+
let gridCellWidth;
|
|
244
|
+
let gridCellHeight;
|
|
245
|
+
let backColor;
|
|
246
|
+
if (this.gridCol) {
|
|
247
|
+
// Rendering for a grid
|
|
248
|
+
gridCellWidth = gridCell.gridColumn.width * dpr - 2;
|
|
249
|
+
gridCellHeight = gridCell.grid.props.rowHeight * dpr - 2;
|
|
250
|
+
backColor = cellStyle ? cellStyle.backColor : null;
|
|
251
|
+
backColor = backColor ?? (this.gridCol ? this.gridCol.grid.props.backColor : null);
|
|
252
|
+
backColor = backColor ?? DG.Color.argb(0, 0, 0, 0);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// Rendering probably for row tooltip (scatter plot)
|
|
256
|
+
gridCellWidth = w * dpr - 2;
|
|
257
|
+
gridCellHeight = h * dpr - 2;
|
|
258
|
+
backColor = DG.Color.argb(0, 0, 0, 0);
|
|
259
|
+
}
|
|
260
|
+
if (!this.cacheEnabled || !cellImageData ||
|
|
261
|
+
Math.abs(cellImageData.width / dpr - gridCellWidth) > 0.5 ||
|
|
262
|
+
Math.abs(cellImageData.height / dpr - gridCellHeight) > 0.5) {
|
|
263
|
+
let toUpdate = true;
|
|
264
|
+
if (cellImageData)
|
|
265
|
+
toUpdate = this.renderCellImageData(g, bd, gridCell, cellImageData);
|
|
266
|
+
if (!toUpdate)
|
|
267
|
+
return;
|
|
268
|
+
const task = new RenderTask(gridCell.cell.rowIndex.toString(), this.getRenderTaskProps(gridCell, backColor, gridCellWidth, gridCellHeight),
|
|
269
|
+
/* onAfterRender */ (cellCanvas, aux) => {
|
|
270
|
+
this.storeAux(gridCell, aux);
|
|
271
|
+
g.save();
|
|
272
|
+
try {
|
|
273
|
+
this.logger.debug('PdbRenderer.render() onAfterRender() ' + `rowIdx = ${rowIdx}`);
|
|
274
|
+
let cellCanvasCtx = cellCanvas.getContext('2d');
|
|
275
|
+
if (!cellCanvasCtx) {
|
|
276
|
+
// Fallback for canvas with WebGL context
|
|
277
|
+
const tempCanvas = ui.canvas(cellCanvas.width, cellCanvas.height);
|
|
278
|
+
cellCanvasCtx = tempCanvas.getContext('2d');
|
|
279
|
+
cellCanvasCtx.drawImage(cellCanvas, 0, 0);
|
|
280
|
+
}
|
|
281
|
+
const cellCanvasData = cellCanvasCtx.getImageData(0, 0, cellCanvas.width, cellCanvas.height);
|
|
282
|
+
this.renderOnGrid(g, new DG.Rect(x, y, w, h), gridCell, cellCanvasData);
|
|
283
|
+
this.imageCache.set(rowIdx, cellCanvasData);
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
g.restore();
|
|
287
|
+
this.taskQueueMap.delete(rowIdx);
|
|
288
|
+
if (this.taskQueueMap.size === 0)
|
|
289
|
+
this._onRendered.next();
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
/* isPriority */ !this.gridCol ? undefined : () => {
|
|
293
|
+
const grid = gridCell.grid;
|
|
294
|
+
return (grid.vertScroll.min - 1) <= gridCell.gridRow && gridCell.gridRow <= grid.vertScroll.max;
|
|
295
|
+
});
|
|
296
|
+
this.taskQueueMap.set(rowIdx, task);
|
|
297
|
+
this.consumerId = service.render(this.consumerId, task, rowIdx);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
this.logger.debug('PdbRenderer.render(), ' + `from imageCache[${rowIdx}]`);
|
|
301
|
+
this.renderOnGrid(g, bd, gridCell, cellImageData);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
const errMsg = err instanceof Error ? err.message : err.toString();
|
|
306
|
+
this.logger.error(`BsV:PdbGridCellRenderer.render() no rethrown error: ${errMsg}`, undefined, err instanceof Error ? err.stack : undefined);
|
|
307
|
+
//throw err; // Do not throw to prevent disabling event handler
|
|
308
|
+
}
|
|
309
|
+
finally {
|
|
310
|
+
g.restore();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/** Renders cell from image data (cache)
|
|
314
|
+
* @param {CanvasRenderingContext2D} gCtx Grid canvas context
|
|
315
|
+
* @param {DG.Rect} bd Bound rect to clip drawing
|
|
316
|
+
* @param {DG.GridCell} gridCell Grid cell to draw
|
|
317
|
+
* @param {ImageData} cellImageData Cell image data from cache
|
|
318
|
+
* @return {boolean} true - cell is requiring update by render service
|
|
319
|
+
*/
|
|
320
|
+
renderCellImageData(gCtx, bd, gCell, cellImageData) {
|
|
321
|
+
const dpr = window.devicePixelRatio;
|
|
322
|
+
// Draw cell image data to scale it with drawImage() while transform()
|
|
323
|
+
const cellCanvas = ui.canvas(cellImageData.width, cellImageData.height);
|
|
324
|
+
const cellCtx = cellCanvas.getContext('2d');
|
|
325
|
+
cellCtx.putImageData(cellImageData, 0, 0);
|
|
326
|
+
const fitCanvasWidth = (bd.width - 1) * dpr;
|
|
327
|
+
const fitCanvasHeight = (bd.height - 1) * dpr;
|
|
328
|
+
const fitCanvas = ui.canvas(fitCanvasWidth, fitCanvasHeight);
|
|
329
|
+
const fitScale = Math.min(fitCanvasWidth / cellImageData.width, fitCanvasHeight / cellImageData.height);
|
|
330
|
+
const fitWidth = cellImageData.width * fitScale;
|
|
331
|
+
const fitHeight = cellImageData.height * fitScale;
|
|
332
|
+
const fitLeft = (fitCanvasWidth - fitWidth) / 2;
|
|
333
|
+
const fitTop = (fitCanvasHeight - fitHeight) / 2;
|
|
334
|
+
const fitCtx = fitCanvas.getContext('2d');
|
|
335
|
+
fitCtx.transform(fitScale, 0, 0, fitScale, fitLeft, fitTop);
|
|
336
|
+
fitCtx.drawImage(cellCanvas, 0, 0);
|
|
337
|
+
const fitImageData = fitCtx.getImageData(0, 0, fitCanvasWidth, fitCanvasHeight);
|
|
338
|
+
this.renderOnGrid(gCtx, bd, gCell, fitImageData);
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
341
|
+
/** Default implementation of rendering tree on grid cell
|
|
342
|
+
* @param gCtx Context to draw on grid
|
|
343
|
+
* @param bd Bound rect to clip drawing on task moment
|
|
344
|
+
* @param gCell Grid cell to draw
|
|
345
|
+
* @param cellImageData Image data of the cell to be drawn
|
|
346
|
+
*/
|
|
347
|
+
renderOnGrid(gCtx, bd, gCell, cellImageData) {
|
|
348
|
+
const callLog = `renderOnGridCell( gRow = ${gCell.gridRow} )`;
|
|
349
|
+
const logPrefix = `${this.toLog()}.${callLog}`;
|
|
350
|
+
const dpr = window.devicePixelRatio;
|
|
351
|
+
this.logger.debug(`${logPrefix}, start`);
|
|
352
|
+
gCtx.save();
|
|
353
|
+
try {
|
|
354
|
+
gCtx.resetTransform();
|
|
355
|
+
if (this.gridCol) {
|
|
356
|
+
const grid = this.gridCol.grid;
|
|
357
|
+
const vertScrollMin = Math.floor(grid.vertScroll.min);
|
|
358
|
+
// Correction for vert scrolling happened between task and render, calculate bd.y directly
|
|
359
|
+
bd.y = ((gCell.gridRow - vertScrollMin) * grid.props.rowHeight +
|
|
360
|
+
grid.colHeaderHeight) * dpr;
|
|
361
|
+
// Correction for horz scrolling happened between task and render, calculate bd.x directly
|
|
362
|
+
let left = 0;
|
|
363
|
+
for (let colI = 0; colI < this.gridCol.idx; colI++) {
|
|
364
|
+
const col = grid.columns.byIndex(colI);
|
|
365
|
+
left += col.visible ? col.width : 0;
|
|
366
|
+
}
|
|
367
|
+
bd.x = (left - grid.horzScroll.min) * dpr;
|
|
368
|
+
}
|
|
369
|
+
/** Clip rect*/ const cr = new DG.Rect(bd.x + dpr, bd.y + dpr, (bd.width - 1) * dpr, (bd.height - 1) * dpr);
|
|
370
|
+
// gCtx.beginPath();
|
|
371
|
+
// gCtx.strokeStyle = '#408000';
|
|
372
|
+
// gCtx.rect(cr.x, cr.y, cr.width, cr.height);
|
|
373
|
+
// gCtx.stroke();
|
|
374
|
+
gCtx.beginPath();
|
|
375
|
+
gCtx.rect(cr.x, cr.y, cr.width, cr.height);
|
|
376
|
+
gCtx.clip();
|
|
377
|
+
//gCtx.drawImage(cellImageData, cr.x, cr.y, cr.width, cr.height);
|
|
378
|
+
gCtx.putImageData(cellImageData, bd.x + dpr, bd.y + dpr); // does not respect clip
|
|
379
|
+
}
|
|
380
|
+
finally {
|
|
381
|
+
gCtx.restore();
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
get onRendered() { return this._onRendered; }
|
|
385
|
+
invalidate(caller) {
|
|
386
|
+
this.invalidateGrid();
|
|
387
|
+
}
|
|
388
|
+
async awaitRendered(timeout = 10000, reason = `await rendered ${timeout} timeout`) {
|
|
389
|
+
await testEvent(this._onRendered, () => { }, () => { this.invalidate(); }, timeout, reason);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
async function base64ToImg(base64) {
|
|
393
|
+
return new Promise((resolve, reject) => {
|
|
394
|
+
try {
|
|
395
|
+
const img = new Image();
|
|
396
|
+
img.onload = () => {
|
|
397
|
+
resolve(img);
|
|
398
|
+
};
|
|
399
|
+
img.src = base64;
|
|
400
|
+
}
|
|
401
|
+
catch (err) {
|
|
402
|
+
reject(err);
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=cell-renderer-async-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-renderer-async-base.js","sourceRoot":"","sources":["cell-renderer-async-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { ILogger } from './logger';
|
|
3
|
+
import { Unsubscribable } from 'rxjs';
|
|
4
|
+
type GridCellRendererTemp<TBack> = {
|
|
5
|
+
rendererBack: TBack;
|
|
6
|
+
};
|
|
7
|
+
export declare function getGridCellRendererBack<TValue, TBack extends CellRendererBackBase<TValue>>(gridCell: DG.GridCell): [DG.GridColumn | null, DG.Column<TValue>, GridCellRendererTemp<TBack>];
|
|
8
|
+
export declare abstract class CellRendererBackBase<TValue> {
|
|
9
|
+
/** Not null if rendered on a grid */
|
|
10
|
+
protected readonly gridCol: DG.GridColumn | null;
|
|
11
|
+
protected readonly tableCol: DG.Column<TValue>;
|
|
12
|
+
protected readonly logger: ILogger;
|
|
13
|
+
protected subs: Unsubscribable[];
|
|
14
|
+
protected destroyed: boolean;
|
|
15
|
+
protected constructor(
|
|
16
|
+
/** Not null if rendered on a grid */
|
|
17
|
+
gridCol: DG.GridColumn | null, tableCol: DG.Column<TValue>, logger: ILogger);
|
|
18
|
+
private static viewerCounter;
|
|
19
|
+
private readonly viewerId;
|
|
20
|
+
protected toLog(): string;
|
|
21
|
+
protected destroy(): void;
|
|
22
|
+
protected invalidateGrid(): void;
|
|
23
|
+
protected abstract reset(): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=cell-renderer-back-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-renderer-back-base.d.ts","sourceRoot":"","sources":["cell-renderer-back-base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AACjC,OAAO,EAAC,cAAc,EAAC,MAAM,MAAM,CAAC;AAGpC,KAAK,oBAAoB,CAAC,KAAK,IAAI;IACjC,YAAY,EAAE,KAAK,CAAC;CACrB,CAAA;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,KAAK,SAAS,oBAAoB,CAAC,MAAM,CAAC,EACxF,QAAQ,EAAE,EAAE,CAAC,QAAQ,GACpB,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAcxE;AAED,8BAAsB,oBAAoB,CAAC,MAAM;IAK7C,qCAAqC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IAChD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO;IAPpC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAM;IACtC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAErC,SAAS;IACP,qCAAqC;IAClB,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,EAC7B,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE,OAAO;IAiCpC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IAEzE,SAAS,CAAC,KAAK,IAAI,MAAM;IAIzB,SAAS,CAAC,OAAO,IAAI,IAAI;IAMzB,SAAS,CAAC,cAAc,IAAI,IAAI;IAIhC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI;CACjC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as grok from 'datagrok-api/grok';
|
|
2
|
+
export function getGridCellRendererBack(gridCell) {
|
|
3
|
+
let temp = null;
|
|
4
|
+
let gridCol = null;
|
|
5
|
+
try {
|
|
6
|
+
gridCol = gridCell.dart ? gridCell.gridColumn : null;
|
|
7
|
+
temp = gridCol ? gridCol.temp : null;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
[gridCol, temp] = [null, null];
|
|
11
|
+
}
|
|
12
|
+
const tableCol = gridCell.cell.column;
|
|
13
|
+
temp = temp ?? tableCol.temp;
|
|
14
|
+
if (!temp)
|
|
15
|
+
throw new Error(`Grid cell renderer back store (GridColumn or Column) not found.`);
|
|
16
|
+
return [gridCol, tableCol, temp];
|
|
17
|
+
}
|
|
18
|
+
export class CellRendererBackBase {
|
|
19
|
+
constructor(
|
|
20
|
+
/** Not null if rendered on a grid */
|
|
21
|
+
gridCol, tableCol, logger) {
|
|
22
|
+
this.gridCol = gridCol;
|
|
23
|
+
this.tableCol = tableCol;
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.subs = [];
|
|
26
|
+
this.destroyed = false;
|
|
27
|
+
this.viewerId = ++CellRendererBackBase.viewerCounter;
|
|
28
|
+
this.reset();
|
|
29
|
+
if (this.tableCol && this.tableCol.dataFrame) {
|
|
30
|
+
this.subs.push(this.tableCol.dataFrame.onDataChanged.subscribe(() => {
|
|
31
|
+
try {
|
|
32
|
+
this.reset();
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
this.logger.error(err);
|
|
36
|
+
}
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
if (this.tableCol) {
|
|
40
|
+
this.subs.push(grok.events.onTableRemoved.subscribe((eventData) => {
|
|
41
|
+
try {
|
|
42
|
+
const eventDf = eventData.args.dataFrame;
|
|
43
|
+
if (this.tableCol?.dataFrame.id === eventDf.id && !this.destroyed)
|
|
44
|
+
this.destroy();
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
this.logger.error(err);
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
if (this.gridCol) {
|
|
52
|
+
this.subs.push(grok.events.onViewRemoving.subscribe((eventData) => {
|
|
53
|
+
try {
|
|
54
|
+
const eventView = eventData.args.view;
|
|
55
|
+
if (this.gridCol?.dart &&
|
|
56
|
+
this.gridCol.grid && this.gridCol?.grid?.dart &&
|
|
57
|
+
this.gridCol?.grid?.view?.id === eventView.id && !this.destroyed)
|
|
58
|
+
this.destroy();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
this.logger.error(err);
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
toLog() {
|
|
67
|
+
return `${this.constructor.name}<${this.viewerId}>`;
|
|
68
|
+
}
|
|
69
|
+
destroy() {
|
|
70
|
+
for (const sub of this.subs)
|
|
71
|
+
sub.unsubscribe();
|
|
72
|
+
this.destroyed = true;
|
|
73
|
+
}
|
|
74
|
+
invalidateGrid() {
|
|
75
|
+
if (this.gridCol && this.gridCol.dart)
|
|
76
|
+
this.gridCol.grid?.invalidate();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
CellRendererBackBase.viewerCounter = -1;
|
|
80
|
+
//# sourceMappingURL=cell-renderer-back-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-renderer-back-base.js","sourceRoot":"","sources":["cell-renderer-back-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAY1C,MAAM,UAAU,uBAAuB,CACrC,QAAqB;IAErB,IAAI,IAAI,GAAuC,IAAI,CAAC;IACpD,IAAI,OAAO,GAAyB,IAAI,CAAC;IACzC,IAAI;QACF,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;KACrE;IAAC,MAAM;QAAE,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAAE;IAE3C,MAAM,QAAQ,GAAsB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IACzD,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;IAE7B,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,OAAgB,oBAAoB;IAIxC;IACE,qCAAqC;IAClB,OAA6B,EAC7B,QAA2B,EAC3B,MAAe;QAFf,YAAO,GAAP,OAAO,CAAsB;QAC7B,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,WAAM,GAAN,MAAM,CAAS;QAP1B,SAAI,GAAqB,EAAE,CAAC;QAC5B,cAAS,GAAY,KAAK,CAAC;QAwCpB,aAAQ,GAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC;QAhCvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE;gBAClE,IAAI;oBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;iBAAE;gBAAC,OAAO,GAAG,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC/D,CAAC,CAAC,CAAC,CAAC;SACL;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;gBAChE,IAAI;oBACF,MAAM,OAAO,GAAiB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;oBACvD,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;wBAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;iBAClB;gBAAC,OAAO,GAAG,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC3C,CAAC,CAAC,CAAC,CAAC;SACL;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;gBAChE,IAAI;oBACF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBACtC,IACE,IAAI,CAAC,OAAO,EAAE,IAAI;wBAClB,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI;wBAC7C,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;wBAChE,IAAI,CAAC,OAAO,EAAE,CAAC;iBAClB;gBAAC,OAAO,GAAQ,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAAE;YAChD,CAAC,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAKS,KAAK;QACb,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;IACtD,CAAC;IAES,OAAO;QACf,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI;YACzB,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAES,cAAc;QACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;IACzE,CAAC;;AAfc,kCAAa,GAAW,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,8 @@ import * as DG from 'datagrok-api/dg';
|
|
|
2
2
|
import { SeqHandler } from './seq-handler';
|
|
3
3
|
import { MonomerToShortFunc } from './macromolecule';
|
|
4
4
|
import { IMonomerLib } from '../types';
|
|
5
|
+
import { CellRendererBackBase } from './cell-renderer-back-base';
|
|
6
|
+
import { ILogger } from './logger';
|
|
5
7
|
type MonomerPlacerProps = {
|
|
6
8
|
seqHandler: SeqHandler;
|
|
7
9
|
monomerLib: IMonomerLib;
|
|
@@ -10,9 +12,7 @@ type MonomerPlacerProps = {
|
|
|
10
12
|
monomerToShort: MonomerToShortFunc;
|
|
11
13
|
monomerLengthLimit: number;
|
|
12
14
|
};
|
|
13
|
-
export declare class MonomerPlacer {
|
|
14
|
-
readonly grid: DG.Grid | null;
|
|
15
|
-
readonly col: DG.Column<string>;
|
|
15
|
+
export declare class MonomerPlacer extends CellRendererBackBase<string> {
|
|
16
16
|
private readonly propsProvider;
|
|
17
17
|
private _monomerLengthList;
|
|
18
18
|
private separatorWidth;
|
|
@@ -26,10 +26,9 @@ export declare class MonomerPlacer {
|
|
|
26
26
|
_monomerStructureMap: {
|
|
27
27
|
[key: string]: HTMLElement;
|
|
28
28
|
};
|
|
29
|
-
private readonly subs;
|
|
30
29
|
/** View is required to subscribe and handle for data frame changes */
|
|
31
|
-
constructor(
|
|
32
|
-
|
|
30
|
+
constructor(gridCol: DG.GridColumn | null, tableCol: DG.Column<string>, logger: ILogger, propsProvider: () => MonomerPlacerProps);
|
|
31
|
+
protected reset(): void;
|
|
33
32
|
/** Returns monomers lengths of the {@link rowIdx} and cumulative sums for borders, monomer places */
|
|
34
33
|
getCellMonomerLengths(rowIdx: number): [number[], number[]];
|
|
35
34
|
private getCellMonomerLengthsForSeq;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-renderer-monomer-placer.d.ts","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cell-renderer-monomer-placer.d.ts","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAErC,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAEjC,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IACjD,cAAc,EAAE,kBAAkB,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;CAChE,CAAC;AAEF,qBAAa,aAAc,SAAQ,oBAAoB,CAAC,MAAM,CAAC;IAmB3D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAlBhC,OAAO,CAAC,kBAAkB,CAA2B;IAGrD,OAAO,CAAC,cAAc,CAAK;IACpB,KAAK,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,QAAQ,CAAkB;IAClC,IAAW,OAAO,IAAI,OAAO,CAA0B;IAEhD,iBAAiB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,CAAM;IACvD,oBAAoB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,CAAM;IAEjE,sEAAsE;gBAEpE,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,EAC7B,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE,OAAO,EACE,aAAa,EAAE,MAAM,kBAAkB;cAWvC,KAAK,IAAI,IAAI;IAQhC,qGAAqG;IAC9F,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;IAWlE,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,8BAA8B;IAyCtC,yCAAyC;IAClC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkCrD,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKtC,KAAK,IAAI,OAAO;CAGxB"}
|