@operato/scene-integration 9.0.1 → 10.0.0-beta.1

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.
@@ -1,7 +1,466 @@
1
- import { ComponentNature, Properties, Shape } from '@hatiolab/things-scene';
1
+ import { Component, ComponentNature, Properties, Shape } from '@hatiolab/things-scene';
2
2
  declare const ScenarioRun_base: (new (...args: any[]) => {
3
+ _convertDataFormat(data: any, format: any): any;
3
4
  isDataSource(): boolean;
4
- _convertDataFormat(data: any, format: "json" | "text" | "jsonp" | string): any;
5
+ _app: any;
6
+ _model: any;
7
+ _state: any;
8
+ _delta: any;
9
+ _animation: any;
10
+ _animate: any;
11
+ _parent: any;
12
+ _disposed: any;
13
+ _textHidden: any;
14
+ _text_substitutor: any;
15
+ _value_substitutor: any;
16
+ _mappings: any;
17
+ _realObject: import("@hatiolab/things-scene").IRealObject | undefined;
18
+ _cachedState: any;
19
+ updatedAt: any;
20
+ fontSize: any;
21
+ __cache__: any;
22
+ created(): void;
23
+ added(parent: any): void;
24
+ removed(parent: any): void;
25
+ ready(): Promise<void>;
26
+ touch(): void;
27
+ clearCache(...attrs: any[]): void;
28
+ removeSelf(completely: any): void;
29
+ resetAnimation(): void;
30
+ dispose(): void;
31
+ get nature(): import("@hatiolab/things-scene").ComponentNature;
32
+ get disposed(): boolean;
33
+ isLayer(): boolean;
34
+ isGroup(): boolean;
35
+ isContainer(): this is import("@hatiolab/things-scene/dist-types/types/component.js").Container;
36
+ isLine(): boolean;
37
+ isRoot(): boolean;
38
+ isRootModel(): boolean;
39
+ is3dish(): boolean;
40
+ get is3dMode(): boolean;
41
+ isIn3DSpace(): boolean;
42
+ isTemplate(): boolean;
43
+ isHTMLElement(): boolean;
44
+ isConnectable(): boolean;
45
+ isIdentifiable(): boolean;
46
+ isPositionable(): boolean;
47
+ replaceRefids(replaceMap: any): void;
48
+ get(property: any): any;
49
+ set(props: any, propval?: any): any;
50
+ getState(property: any): any;
51
+ setState(props: any, propval?: any): any;
52
+ get model(): any;
53
+ get state(): any;
54
+ get hierarchy(): any;
55
+ get volatile(): never[];
56
+ _applyProps(target: any, props: any, options: any): any;
57
+ contains(x: number, y: number): boolean;
58
+ move(offset: {
59
+ x: number;
60
+ y: number;
61
+ }, ...args: boolean[]): void;
62
+ symmetryX(x?: number): void;
63
+ symmetryY(y: number): void;
64
+ adjustResize(bounds: import("@hatiolab/things-scene").BOUNDS, origin_bounds: import("@hatiolab/things-scene").BOUNDS, diagonal: boolean): {
65
+ left: any;
66
+ top: any;
67
+ width: any;
68
+ height: any;
69
+ };
70
+ adjustRotation(rotation: number, step: boolean): number;
71
+ outline(progress: number): any;
72
+ get bounds(): import("@hatiolab/things-scene").BOUNDS;
73
+ set bounds(b: import("@hatiolab/things-scene").BOUNDS): any;
74
+ get center(): import("@hatiolab/things-scene").POINT;
75
+ set center(p: import("@hatiolab/things-scene").POINT): any;
76
+ get location(): import("@hatiolab/things-scene").POINT;
77
+ set location(l: import("@hatiolab/things-scene").POINT): any;
78
+ get rotate(): import("@hatiolab/things-scene").POINT;
79
+ set rotate(r: import("@hatiolab/things-scene").POINT): any;
80
+ get dimension(): import("@hatiolab/things-scene").DIMENSION;
81
+ set dimension(d: import("@hatiolab/things-scene").DIMENSION): any;
82
+ get path(): import("@hatiolab/things-scene").POINT[];
83
+ set path(p: import("@hatiolab/things-scene").POINT[]): any;
84
+ get drawPath(): import("@hatiolab/things-scene").POINT[];
85
+ get rotatePoint(): import("@hatiolab/things-scene").POINT;
86
+ get mutable(): boolean;
87
+ get resizable(): boolean;
88
+ get rotatable(): boolean;
89
+ buildRealObject(): import("@hatiolab/things-scene").IRealObject | undefined;
90
+ get realObject(): import("@hatiolab/things-scene").IRealObject | undefined;
91
+ draw(context?: import("@hatiolab/things-scene").SceneRenderContext): void;
92
+ prerender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
93
+ render(context: import("@hatiolab/things-scene").SceneRenderContext): void;
94
+ postrender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
95
+ prepare(resolve: (component: Component) => void, reject: (reason: any) => void): void;
96
+ prepareIf(condition: boolean): void;
97
+ drawText(context: import("@hatiolab/things-scene").SceneRenderContext): void;
98
+ drawStroke(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
99
+ drawFill(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
100
+ get strokeStyle(): any;
101
+ set strokeStyle(v: any): any;
102
+ get fillStyle(): any;
103
+ set fillStyle(v: any): any;
104
+ get fontColor(): string;
105
+ set fontColor(v: string): any;
106
+ get rotation(): number;
107
+ set rotation(v: number): any;
108
+ get decorators(): string[];
109
+ get decotag(): string;
110
+ get hidden(): boolean;
111
+ set hidden(v: boolean): any;
112
+ get tag(): string;
113
+ set tag(v: string): any;
114
+ get appendum(): any;
115
+ set appendum(v: any): any;
116
+ defaultTextSubstitutor(): string;
117
+ textLines(context?: import("@hatiolab/things-scene").SceneRenderContext): any[][];
118
+ get font(): string;
119
+ get lineHeight(): number;
120
+ get textSubstitutor(): () => string;
121
+ get text(): string;
122
+ set text(v: string): any;
123
+ get textBounds(): import("@hatiolab/things-scene").BOUNDS;
124
+ get textRotation(): number;
125
+ get textHidden(): boolean;
126
+ set textHidden(v: boolean): any;
127
+ get hasTextProperty(): boolean;
128
+ animate(opts: import("@hatiolab/things-scene").AnimationConfig): any;
129
+ effect(context: import("@hatiolab/things-scene").SceneRenderContext, model: any): void;
130
+ serialize(...others: any[]): string;
131
+ trim(): void;
132
+ closeScene(data: any): void;
133
+ delta(attr?: string | object, value?: any): any;
134
+ invalidate(): void;
135
+ get value(): any;
136
+ set value(v: any): any;
137
+ get data(): any;
138
+ set data(v: any): any;
139
+ set tap(v: any): any;
140
+ get mappings(): any[];
141
+ get retention(): number;
142
+ get animation(): import("@hatiolab/things-scene").AnimationController | undefined;
143
+ get started(): boolean;
144
+ set started(v: boolean): any;
145
+ get controls(): import("@hatiolab/things-scene").Control[] | undefined;
146
+ findFirst(finder: string | ((c: Component) => boolean), ...others: any[]): Component | undefined;
147
+ findAll(s: string | ((c: Component) => boolean), ...others: any[]): any[] | undefined;
148
+ capture(x: number, y: number, except?: (c: Component) => boolean): any;
149
+ findAnchor(name: string): any;
150
+ isDescendible(container: Component): boolean;
151
+ getContext(component?: unknown): any;
152
+ get root(): Component;
153
+ get rootModel(): Component;
154
+ get parent(): Component;
155
+ set parent(v: Component): any;
156
+ get anchors(): import("@hatiolab/things-scene").Anchor[];
157
+ get scalable(): boolean;
158
+ get stuck(): boolean;
159
+ get capturable(): boolean;
160
+ get position(): string;
161
+ get origin(): string;
162
+ get offset(): import("@hatiolab/things-scene").POINT;
163
+ get app(): import("@hatiolab/things-scene").ApplicationContext;
164
+ drawEffect(context: import("@hatiolab/things-scene").SceneRenderContext): void;
165
+ prepareFill(resolve: Function, reject: Function): void;
166
+ prepareFillIf(condition: boolean): void;
167
+ onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
168
+ drawImage(context: import("@hatiolab/things-scene").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
169
+ mutateBounds(logic: ((bounds: import("@hatiolab/things-scene").BOUNDS) => import("@hatiolab/things-scene").BOUNDS | void) | null, context?: any): void;
170
+ mutatePath(beforeLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, afterLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, context?: any): void;
171
+ access(accessor: string): any;
172
+ substitute(template: string, data: any): string | undefined;
173
+ onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
174
+ onchangeData(after: Record<string, any>, before: Record<string, any>): void;
175
+ buildMappings(): void;
176
+ executeMappings(force?: boolean): void;
177
+ disposeMappings(): void;
178
+ ondropfile(transfered: FileList, files: string[]): void;
179
+ transcoordS2P(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
180
+ transcoordP2S(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
181
+ transcoordS2T(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
182
+ transcoordT2P(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
183
+ transcoordT2S(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
184
+ transcoordS2TR(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
185
+ transcoordS2O(x: number, y: number, target: Component): import("@hatiolab/things-scene").POINT;
186
+ transcoordC2S(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
187
+ transcoordS2C(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
188
+ toParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
189
+ fromParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
190
+ toScene(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
191
+ fromScene(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
192
+ toLocal(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
193
+ toGlobal(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
194
+ toOther(x: number, y: number, target: Component): import("@hatiolab/things-scene").POINT;
195
+ on(name: string | object, callback: Function, context?: any): any;
196
+ off(name?: string | object, callback?: Function, context?: any): any;
197
+ once(name: string | object, callback: Function, context?: any): any;
198
+ trigger(name: string, ...args: any[]): any;
199
+ delegate_on(delegator: any): any;
200
+ delegate_off(delegator: any): any;
201
+ onchange(after: Record<string, any>, before: Record<string, any>): void;
202
+ calculateBounds?(): void;
203
+ oncreate_element?(element: HTMLElement): void;
204
+ removeComponent(component: Component, ghost?: boolean): void;
205
+ addComponent(component: Component, ghost?: boolean): void;
206
+ insertComponentAt(component: Component, index: number, ghost?: boolean): void;
207
+ getOverlay(component: Component): HTMLElement | undefined;
208
+ findById(id: string): Component | undefined;
209
+ findByRefid(ref: string | number): Component | undefined;
210
+ findAllById(id: string): Component[];
211
+ resize(): void;
212
+ fit(type?: string): void;
213
+ get components(): Component[] | undefined;
214
+ get layout(): any;
215
+ get auxOverlay(): HTMLElement | undefined;
216
+ get isReady(): boolean;
217
+ get unitScale(): number;
218
+ get selected(): Component[];
219
+ set selected(_v: Component[]): any;
220
+ get focused(): Component | null;
221
+ set focused(_v: Component | null): any;
222
+ get hasSameParentForAllSelected(): boolean;
223
+ set hasSameParentForAllSelected(_v: boolean): any;
224
+ get fitMode(): string | undefined;
225
+ set fitMode(_v: string | undefined): any;
226
+ get element(): HTMLElement | null;
227
+ set element(_v: HTMLElement | null): any;
228
+ }) & (new (...args: any[]) => {
229
+ contains(x: number, y: number): boolean;
230
+ get path(): {
231
+ x: any;
232
+ y: any;
233
+ }[];
234
+ set path(path: {
235
+ x: any;
236
+ y: any;
237
+ }[]): any;
238
+ get anchors(): {
239
+ name: string;
240
+ position: {
241
+ x: any;
242
+ y: any;
243
+ };
244
+ }[];
245
+ get bounds(): any;
246
+ set bounds(bounds: any): any;
247
+ render(ctx: CanvasRenderingContext2D): void;
248
+ _app: any;
249
+ _model: any;
250
+ _state: any;
251
+ _delta: any;
252
+ _animation: any;
253
+ _animate: any;
254
+ _parent: any;
255
+ _disposed: any;
256
+ _textHidden: any;
257
+ _text_substitutor: any;
258
+ _value_substitutor: any;
259
+ _mappings: any;
260
+ _realObject: import("@hatiolab/things-scene").IRealObject | undefined;
261
+ _cachedState: any;
262
+ updatedAt: any;
263
+ fontSize: any;
264
+ __cache__: any;
265
+ created(): void;
266
+ added(parent: any): void;
267
+ removed(parent: any): void;
268
+ ready(): Promise<void>;
269
+ touch(): void;
270
+ clearCache(...attrs: any[]): void;
271
+ removeSelf(completely: any): void;
272
+ resetAnimation(): void;
273
+ dispose(): void;
274
+ get nature(): import("@hatiolab/things-scene").ComponentNature;
275
+ get disposed(): boolean;
276
+ isLayer(): boolean;
277
+ isGroup(): boolean;
278
+ isContainer(): this is import("@hatiolab/things-scene/dist-types/types/component.js").Container;
279
+ isLine(): boolean;
280
+ isRoot(): boolean;
281
+ isRootModel(): boolean;
282
+ is3dish(): boolean;
283
+ get is3dMode(): boolean;
284
+ isIn3DSpace(): boolean;
285
+ isTemplate(): boolean;
286
+ isHTMLElement(): boolean;
287
+ isConnectable(): boolean;
288
+ isIdentifiable(): boolean;
289
+ isPositionable(): boolean;
290
+ replaceRefids(replaceMap: any): void;
291
+ get(property: any): any;
292
+ set(props: any, propval?: any): any;
293
+ getState(property: any): any;
294
+ setState(props: any, propval?: any): any;
295
+ get model(): any;
296
+ get state(): any;
297
+ get hierarchy(): any;
298
+ get volatile(): never[];
299
+ _applyProps(target: any, props: any, options: any): any;
300
+ move(offset: {
301
+ x: number;
302
+ y: number;
303
+ }, ...args: boolean[]): void;
304
+ symmetryX(x?: number): void;
305
+ symmetryY(y: number): void;
306
+ adjustResize(bounds: import("@hatiolab/things-scene").BOUNDS, origin_bounds: import("@hatiolab/things-scene").BOUNDS, diagonal: boolean): {
307
+ left: any;
308
+ top: any;
309
+ width: any;
310
+ height: any;
311
+ };
312
+ adjustRotation(rotation: number, step: boolean): number;
313
+ outline(progress: number): any;
314
+ get center(): import("@hatiolab/things-scene").POINT;
315
+ set center(p: import("@hatiolab/things-scene").POINT): any;
316
+ get location(): import("@hatiolab/things-scene").POINT;
317
+ set location(l: import("@hatiolab/things-scene").POINT): any;
318
+ get rotate(): import("@hatiolab/things-scene").POINT;
319
+ set rotate(r: import("@hatiolab/things-scene").POINT): any;
320
+ get dimension(): import("@hatiolab/things-scene").DIMENSION;
321
+ set dimension(d: import("@hatiolab/things-scene").DIMENSION): any;
322
+ get drawPath(): import("@hatiolab/things-scene").POINT[];
323
+ get rotatePoint(): import("@hatiolab/things-scene").POINT;
324
+ get mutable(): boolean;
325
+ get resizable(): boolean;
326
+ get rotatable(): boolean;
327
+ buildRealObject(): import("@hatiolab/things-scene").IRealObject | undefined;
328
+ get realObject(): import("@hatiolab/things-scene").IRealObject | undefined;
329
+ draw(context?: import("@hatiolab/things-scene").SceneRenderContext): void;
330
+ prerender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
331
+ postrender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
332
+ prepare(resolve: (component: Component) => void, reject: (reason: any) => void): void;
333
+ prepareIf(condition: boolean): void;
334
+ drawText(context: import("@hatiolab/things-scene").SceneRenderContext): void;
335
+ drawStroke(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
336
+ drawFill(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
337
+ get strokeStyle(): any;
338
+ set strokeStyle(v: any): any;
339
+ get fillStyle(): any;
340
+ set fillStyle(v: any): any;
341
+ get fontColor(): string;
342
+ set fontColor(v: string): any;
343
+ get rotation(): number;
344
+ set rotation(v: number): any;
345
+ get decorators(): string[];
346
+ get decotag(): string;
347
+ get hidden(): boolean;
348
+ set hidden(v: boolean): any;
349
+ get tag(): string;
350
+ set tag(v: string): any;
351
+ get appendum(): any;
352
+ set appendum(v: any): any;
353
+ defaultTextSubstitutor(): string;
354
+ textLines(context?: import("@hatiolab/things-scene").SceneRenderContext): any[][];
355
+ get font(): string;
356
+ get lineHeight(): number;
357
+ get textSubstitutor(): () => string;
358
+ get text(): string;
359
+ set text(v: string): any;
360
+ get textBounds(): import("@hatiolab/things-scene").BOUNDS;
361
+ get textRotation(): number;
362
+ get textHidden(): boolean;
363
+ set textHidden(v: boolean): any;
364
+ get hasTextProperty(): boolean;
365
+ animate(opts: import("@hatiolab/things-scene").AnimationConfig): any;
366
+ effect(context: import("@hatiolab/things-scene").SceneRenderContext, model: any): void;
367
+ serialize(...others: any[]): string;
368
+ trim(): void;
369
+ closeScene(data: any): void;
370
+ delta(attr?: string | object, value?: any): any;
371
+ invalidate(): void;
372
+ get value(): any;
373
+ set value(v: any): any;
374
+ get data(): any;
375
+ set data(v: any): any;
376
+ set tap(v: any): any;
377
+ get mappings(): any[];
378
+ get retention(): number;
379
+ get animation(): import("@hatiolab/things-scene").AnimationController | undefined;
380
+ get started(): boolean;
381
+ set started(v: boolean): any;
382
+ get controls(): import("@hatiolab/things-scene").Control[] | undefined;
383
+ findFirst(finder: string | ((c: Component) => boolean), ...others: any[]): Component | undefined;
384
+ findAll(s: string | ((c: Component) => boolean), ...others: any[]): any[] | undefined;
385
+ capture(x: number, y: number, except?: (c: Component) => boolean): any;
386
+ findAnchor(name: string): any;
387
+ isDescendible(container: Component): boolean;
388
+ getContext(component?: unknown): any;
389
+ get root(): Component;
390
+ get rootModel(): Component;
391
+ get parent(): Component;
392
+ set parent(v: Component): any;
393
+ get scalable(): boolean;
394
+ get stuck(): boolean;
395
+ get capturable(): boolean;
396
+ get position(): string;
397
+ get origin(): string;
398
+ get offset(): import("@hatiolab/things-scene").POINT;
399
+ get app(): import("@hatiolab/things-scene").ApplicationContext;
400
+ drawEffect(context: import("@hatiolab/things-scene").SceneRenderContext): void;
401
+ prepareFill(resolve: Function, reject: Function): void;
402
+ prepareFillIf(condition: boolean): void;
403
+ onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
404
+ drawImage(context: import("@hatiolab/things-scene").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
405
+ mutateBounds(logic: ((bounds: import("@hatiolab/things-scene").BOUNDS) => import("@hatiolab/things-scene").BOUNDS | void) | null, context?: any): void;
406
+ mutatePath(beforeLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, afterLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, context?: any): void;
407
+ access(accessor: string): any;
408
+ substitute(template: string, data: any): string | undefined;
409
+ onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
410
+ onchangeData(after: Record<string, any>, before: Record<string, any>): void;
411
+ buildMappings(): void;
412
+ executeMappings(force?: boolean): void;
413
+ disposeMappings(): void;
414
+ ondropfile(transfered: FileList, files: string[]): void;
415
+ transcoordS2P(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
416
+ transcoordP2S(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
417
+ transcoordS2T(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
418
+ transcoordT2P(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
419
+ transcoordT2S(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
420
+ transcoordS2TR(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
421
+ transcoordS2O(x: number, y: number, target: Component): import("@hatiolab/things-scene").POINT;
422
+ transcoordC2S(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
423
+ transcoordS2C(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
424
+ toParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
425
+ fromParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
426
+ toScene(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
427
+ fromScene(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
428
+ toLocal(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
429
+ toGlobal(x: number, y: number, top?: Component): import("@hatiolab/things-scene").POINT;
430
+ toOther(x: number, y: number, target: Component): import("@hatiolab/things-scene").POINT;
431
+ on(name: string | object, callback: Function, context?: any): any;
432
+ off(name?: string | object, callback?: Function, context?: any): any;
433
+ once(name: string | object, callback: Function, context?: any): any;
434
+ trigger(name: string, ...args: any[]): any;
435
+ delegate_on(delegator: any): any;
436
+ delegate_off(delegator: any): any;
437
+ onchange(after: Record<string, any>, before: Record<string, any>): void;
438
+ calculateBounds?(): void;
439
+ oncreate_element?(element: HTMLElement): void;
440
+ removeComponent(component: Component, ghost?: boolean): void;
441
+ addComponent(component: Component, ghost?: boolean): void;
442
+ insertComponentAt(component: Component, index: number, ghost?: boolean): void;
443
+ getOverlay(component: Component): HTMLElement | undefined;
444
+ findById(id: string): Component | undefined;
445
+ findByRefid(ref: string | number): Component | undefined;
446
+ findAllById(id: string): Component[];
447
+ resize(): void;
448
+ fit(type?: string): void;
449
+ get components(): Component[] | undefined;
450
+ get layout(): any;
451
+ get auxOverlay(): HTMLElement | undefined;
452
+ get isReady(): boolean;
453
+ get unitScale(): number;
454
+ get selected(): Component[];
455
+ set selected(_v: Component[]): any;
456
+ get focused(): Component | null;
457
+ set focused(_v: Component | null): any;
458
+ get hasSameParentForAllSelected(): boolean;
459
+ set hasSameParentForAllSelected(_v: boolean): any;
460
+ get fitMode(): string | undefined;
461
+ set fitMode(_v: string | undefined): any;
462
+ get element(): HTMLElement | null;
463
+ set element(_v: HTMLElement | null): any;
5
464
  }) & typeof Shape;
6
465
  export default class ScenarioRun extends ScenarioRun_base {
7
466
  static _image: HTMLImageElement;
@@ -10,7 +469,7 @@ export default class ScenarioRun extends ScenarioRun_base {
10
469
  private _raf;
11
470
  private _timeout;
12
471
  render(context: CanvasRenderingContext2D): void;
13
- ready(): void;
472
+ ready(): Promise<void>;
14
473
  dispose(): void;
15
474
  get nature(): ComponentNature;
16
475
  onchange(after: Properties): void;
@@ -62,13 +62,9 @@ const NATURE = {
62
62
  'value-property': 'variables',
63
63
  help: 'scene/component/scenario-run'
64
64
  };
65
- let ScenarioRun = ScenarioRun_1 = class ScenarioRun extends DataSource(RectPath(Shape)) {
66
- constructor() {
67
- super(...arguments);
68
- this._started = false;
69
- this._raf = 0;
70
- this._timeout = null;
71
- }
65
+ let ScenarioRun = class ScenarioRun extends DataSource(RectPath(Shape)) {
66
+ static { ScenarioRun_1 = this; }
67
+ static _image;
72
68
  static get image() {
73
69
  if (!ScenarioRun_1._image) {
74
70
  ScenarioRun_1._image = new Image();
@@ -76,13 +72,16 @@ let ScenarioRun = ScenarioRun_1 = class ScenarioRun extends DataSource(RectPath(
76
72
  }
77
73
  return ScenarioRun_1._image;
78
74
  }
75
+ _started = false;
76
+ _raf = 0;
77
+ _timeout = null;
79
78
  render(context) {
80
79
  var { left, top, width, height } = this.bounds;
81
80
  context.beginPath();
82
81
  this.drawImage(context, ScenarioRun_1.image, left, top, width, height);
83
82
  }
84
- ready() {
85
- super.ready();
83
+ async ready() {
84
+ await super.ready();
86
85
  if (this.app.isViewMode) {
87
86
  if (this.state.runOnStart) {
88
87
  this.started = true;
@@ -142,7 +141,6 @@ let ScenarioRun = ScenarioRun_1 = class ScenarioRun extends DataSource(RectPath(
142
141
  this.setState('variables', variables);
143
142
  }
144
143
  async requestData() {
145
- var _a, _b, _c;
146
144
  let { scenarioName, variables, maskOnError } = this.state;
147
145
  if (!scenarioName || !this.app.isViewMode) {
148
146
  return;
@@ -169,11 +167,11 @@ let ScenarioRun = ScenarioRun_1 = class ScenarioRun extends DataSource(RectPath(
169
167
  variables
170
168
  }
171
169
  });
172
- this.data = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.runScenario) === null || _b === void 0 ? void 0 : _b.result;
170
+ this.data = response?.data?.runScenario?.result;
173
171
  this.demask();
174
172
  }
175
173
  catch (e) {
176
- console.error(`calling runScenario mutation error: ${(_c = e === null || e === void 0 ? void 0 : e.message) !== null && _c !== void 0 ? _c : e}`);
174
+ console.error(`calling runScenario mutation error: ${e?.message ?? e}`);
177
175
  this.mask();
178
176
  }
179
177
  finally {
@@ -184,17 +182,19 @@ let ScenarioRun = ScenarioRun_1 = class ScenarioRun extends DataSource(RectPath(
184
182
  }
185
183
  }
186
184
  mask() {
187
- var _a, _b;
188
185
  const { maskOnError } = this.state;
189
186
  if (maskOnError) {
190
- //@ts-ignore
191
- (_b = (_a = this.root) === null || _a === void 0 ? void 0 : _a.target_element) === null || _b === void 0 ? void 0 : _b.style.filter = maskOnError;
187
+ const root = this.root;
188
+ if (root?.target_element?.style) {
189
+ root.target_element.style.filter = maskOnError;
190
+ }
192
191
  }
193
192
  }
194
193
  demask() {
195
- var _a, _b;
196
- //@ts-ignore
197
- (_b = (_a = this.root) === null || _a === void 0 ? void 0 : _a.target_element) === null || _b === void 0 ? void 0 : _b.style.filter = 'none';
194
+ const root = this.root;
195
+ if (root?.target_element?.style) {
196
+ root.target_element.style.filter = 'none';
197
+ }
198
198
  }
199
199
  };
200
200
  ScenarioRun = ScenarioRun_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-run.js","sourceRoot":"","sources":["../src/scenario-run.ts"],"names":[],"mappings":";;AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAGL,UAAU,EAEV,QAAQ,EACR,KAAK,EACL,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE;gBACR,OAAO,EAAE,SAAS;aACnB;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,WAAW;SAClB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,eAAe;SAC7B;QACD;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,YAAY;SACnB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE;gBACR,OAAO,EAAE;oBACP;wBACE,OAAO,EAAE,MAAM;wBACf,KAAK,EAAE,EAAE;qBACV;oBACD;wBACE,OAAO,EAAE,aAAa;wBACtB,KAAK,EAAE,WAAW;qBACnB;oBACD;wBACE,OAAO,EAAE,WAAW;wBACpB,KAAK,EAAE,WAAW;qBACnB;oBACD;wBACE,OAAO,EAAE,WAAW;wBACpB,KAAK,EAAE,cAAc;qBACtB;iBACF;aACF;SACF;KACF;IACD,gBAAgB,EAAE,WAAW;IAC7B,IAAI,EAAE,8BAA8B;CACrC,CAAA;AAGc,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAArD;;QAWL,aAAQ,GAAY,KAAK,CAAA;QACzB,SAAI,GAAW,CAAC,CAAA;QAChB,aAAQ,GAA0B,IAAI,CAAA;IAyIhD,CAAC;IAnJC,MAAM,KAAK,KAAK;QACd,IAAI,CAAC,aAAW,CAAC,MAAM,EAAE,CAAC;YACxB,aAAW,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAA;YAChC,aAAW,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;QAC5F,CAAC;QACD,OAAO,aAAW,CAAC,MAAM,CAAA;IAC3B,CAAC;IAMD,MAAM,CAAC,OAAiC;QACtC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAC9C,OAAO,CAAC,SAAS,EAAE,CAAA;QACnB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACtE,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAA;QACX,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAA;YACX,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,OAAgB;QAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAExB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACf,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACtB,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAA;IAC7B,CAAC;IAED,IAAI,SAAS,CAAC,SAAS;QACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,WAAW;;QACf,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACzD,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,SAAS,GAAG,OAAO,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAChC,KAAK,EAAE,GAAG,CAAA;;;;;;;WAOT;oBACD,SAAS,EAAE;wBACT,YAAY,EAAE,YAAY;wBAC1B,SAAS;qBACV;iBACF,CAAC,CAAA;gBAEF,IAAI,CAAC,IAAI,GAAG,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,WAAW,0CAAE,MAAM,CAAA;gBAC/C,IAAI,CAAC,MAAM,EAAE,CAAA;YACf,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,CAAC,EAAE,CAAC,CAAA;gBACvE,IAAI,CAAC,IAAI,EAAE,CAAA;YACb,CAAC;oBAAS,CAAC;gBACT,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI;;QACF,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAClC,IAAI,WAAW,EAAE,CAAC;YAChB,YAAY;YACZ,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,cAAc,0CAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAA;QACvD,CAAC;IACH,CAAC;IAED,MAAM;;QACJ,YAAY;QACZ,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,cAAc,0CAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAClD,CAAC;CACF,CAAA;AAtJoB,WAAW;IAD/B,cAAc,CAAC,cAAc,CAAC;GACV,WAAW,CAsJ/B;eAtJoB,WAAW","sourcesContent":["import gql from 'graphql-tag'\n\nimport {\n Component,\n ComponentNature,\n DataSource,\n Properties,\n RectPath,\n Shape,\n sceneComponent\n} from '@hatiolab/things-scene'\nimport { client } from '@operato/graphql'\n\nimport { scenarios } from './client-api.js'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'scenario-name',\n name: 'scenarioName',\n property: {\n options: scenarios\n }\n },\n {\n type: 'data',\n label: 'variables',\n name: 'variables'\n },\n {\n type: 'number',\n label: 'repeat-interval',\n name: 'interval',\n placeholder: 'milli-seconds'\n },\n {\n type: 'checkbox',\n label: 'run-on-start',\n name: 'runOnStart'\n },\n {\n type: 'select',\n label: 'mask-on-error',\n name: 'maskOnError',\n property: {\n options: [\n {\n display: 'none',\n value: ''\n },\n {\n display: 'strong-blur',\n value: 'blur(4px)'\n },\n {\n display: 'weak-blur',\n value: 'blur(2px)'\n },\n {\n display: 'grayscale',\n value: 'grayscale(1)'\n }\n ]\n }\n }\n ],\n 'value-property': 'variables',\n help: 'scene/component/scenario-run'\n}\n\n@sceneComponent('scenario-run')\nexport default class ScenarioRun extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n\n static get image() {\n if (!ScenarioRun._image) {\n ScenarioRun._image = new Image()\n ScenarioRun._image.src = new URL('../icons/symbol-scenario-run.png', import.meta.url).href\n }\n return ScenarioRun._image\n }\n\n private _started: boolean = false\n private _raf: number = 0\n private _timeout: NodeJS.Timeout | null = null\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n context.beginPath()\n this.drawImage(context, ScenarioRun.image, left, top, width, height)\n }\n\n ready() {\n super.ready()\n\n if (this.app.isViewMode) {\n if (this.state.runOnStart) {\n this.started = true\n }\n }\n }\n\n dispose(): void {\n this.stop()\n super.dispose()\n }\n\n get nature() {\n return NATURE\n }\n\n onchange(after: Properties) {\n if ('variables' in after) {\n this.stop()\n this.start()\n }\n }\n\n set started(started: boolean) {\n this.setState('started')\n\n if (started) {\n this.start()\n } else {\n this.stop()\n }\n }\n\n get started() {\n return this.state.started\n }\n\n start() {\n if (this._started) {\n return\n }\n\n this._started = true\n\n this._raf = requestAnimationFrame(() => this.requestData())\n }\n\n stop() {\n if (!this._started) {\n return\n }\n\n this._started = false\n\n if (this._raf) {\n cancelAnimationFrame(this._raf)\n this._raf = 0\n }\n if (this._timeout) {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n }\n\n get variables() {\n return this.state.variables\n }\n\n set variables(variables) {\n this.setState('variables', variables)\n }\n\n async requestData() {\n let { scenarioName, variables, maskOnError } = this.state\n if (!scenarioName || !this.app.isViewMode) {\n return\n }\n\n try {\n variables = typeof variables == 'string' ? JSON.parse(variables) : variables\n } catch (e) {\n console.warn('runScenario mutation variable is not an object')\n }\n\n if (client) {\n try {\n var response = await client.query({\n query: gql`\n mutation ($scenarioName: String!, $variables: Object) {\n runScenario(scenarioName: $scenarioName, variables: $variables) {\n message\n result\n }\n }\n `,\n variables: {\n scenarioName: scenarioName,\n variables\n }\n })\n\n this.data = response?.data?.runScenario?.result\n this.demask()\n } catch (e: any) {\n console.error(`calling runScenario mutation error: ${e?.message ?? e}`)\n this.mask()\n } finally {\n if (this._started && this.state.interval > 0) {\n this._timeout = setTimeout(() => this.requestData(), this.state.interval)\n }\n }\n }\n }\n\n mask() {\n const { maskOnError } = this.state\n if (maskOnError) {\n //@ts-ignore\n this.root?.target_element?.style.filter = maskOnError\n }\n }\n\n demask() {\n //@ts-ignore\n this.root?.target_element?.style.filter = 'none'\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-run.js","sourceRoot":"","sources":["../src/scenario-run.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\n\nimport {\n Component,\n ComponentNature,\n DataSource,\n Properties,\n RectPath,\n Shape,\n sceneComponent\n} from '@hatiolab/things-scene'\nimport { client } from '@operato/graphql'\n\nimport { scenarios } from './client-api.js'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'scenario-name',\n name: 'scenarioName',\n property: {\n options: scenarios\n }\n },\n {\n type: 'data',\n label: 'variables',\n name: 'variables'\n },\n {\n type: 'number',\n label: 'repeat-interval',\n name: 'interval',\n placeholder: 'milli-seconds'\n },\n {\n type: 'checkbox',\n label: 'run-on-start',\n name: 'runOnStart'\n },\n {\n type: 'select',\n label: 'mask-on-error',\n name: 'maskOnError',\n property: {\n options: [\n {\n display: 'none',\n value: ''\n },\n {\n display: 'strong-blur',\n value: 'blur(4px)'\n },\n {\n display: 'weak-blur',\n value: 'blur(2px)'\n },\n {\n display: 'grayscale',\n value: 'grayscale(1)'\n }\n ]\n }\n }\n ],\n 'value-property': 'variables',\n help: 'scene/component/scenario-run'\n}\n\n@sceneComponent('scenario-run')\nexport default class ScenarioRun extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n\n static get image() {\n if (!ScenarioRun._image) {\n ScenarioRun._image = new Image()\n ScenarioRun._image.src = new URL('../icons/symbol-scenario-run.png', import.meta.url).href\n }\n return ScenarioRun._image\n }\n\n private _started: boolean = false\n private _raf: number = 0\n private _timeout: NodeJS.Timeout | null = null\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n context.beginPath()\n this.drawImage(context, ScenarioRun.image, left, top, width, height)\n }\n\n async ready() {\n await super.ready()\n\n if (this.app.isViewMode) {\n if (this.state.runOnStart) {\n this.started = true\n }\n }\n }\n\n dispose(): void {\n this.stop()\n super.dispose()\n }\n\n get nature() {\n return NATURE\n }\n\n onchange(after: Properties) {\n if ('variables' in after) {\n this.stop()\n this.start()\n }\n }\n\n set started(started: boolean) {\n this.setState('started')\n\n if (started) {\n this.start()\n } else {\n this.stop()\n }\n }\n\n get started() {\n return this.state.started\n }\n\n start() {\n if (this._started) {\n return\n }\n\n this._started = true\n\n this._raf = requestAnimationFrame(() => this.requestData())\n }\n\n stop() {\n if (!this._started) {\n return\n }\n\n this._started = false\n\n if (this._raf) {\n cancelAnimationFrame(this._raf)\n this._raf = 0\n }\n if (this._timeout) {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n }\n\n get variables() {\n return this.state.variables\n }\n\n set variables(variables) {\n this.setState('variables', variables)\n }\n\n async requestData() {\n let { scenarioName, variables, maskOnError } = this.state\n if (!scenarioName || !this.app.isViewMode) {\n return\n }\n\n try {\n variables = typeof variables == 'string' ? JSON.parse(variables) : variables\n } catch (e) {\n console.warn('runScenario mutation variable is not an object')\n }\n\n if (client) {\n try {\n var response = await client.query({\n query: gql`\n mutation ($scenarioName: String!, $variables: Object) {\n runScenario(scenarioName: $scenarioName, variables: $variables) {\n message\n result\n }\n }\n `,\n variables: {\n scenarioName: scenarioName,\n variables\n }\n })\n\n this.data = response?.data?.runScenario?.result\n this.demask()\n } catch (e: any) {\n console.error(`calling runScenario mutation error: ${e?.message ?? e}`)\n this.mask()\n } finally {\n if (this._started && this.state.interval > 0) {\n this._timeout = setTimeout(() => this.requestData(), this.state.interval)\n }\n }\n }\n }\n\n mask() {\n const { maskOnError } = this.state\n if (maskOnError) {\n const root = this.root as any\n if (root?.target_element?.style) {\n root.target_element.style.filter = maskOnError\n }\n }\n }\n\n demask() {\n const root = this.root as any\n if (root?.target_element?.style) {\n root.target_element.style.filter = 'none'\n }\n }\n}\n"]}