chartgpu-angular 18.0.0 → 20.0.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/fesm2022/chartgpu-angular.mjs +27 -27
- package/fesm2022/chartgpu-angular.mjs.map +1 -1
- package/index.d.ts +220 -3
- package/package.json +3 -5
- package/esm2022/chartgpu-angular.mjs +0 -5
- package/esm2022/lib/chartgpu-angular.component.mjs +0 -288
- package/esm2022/lib/chartgpu-angular.types.mjs +0 -2
- package/esm2022/lib/connect-charts.directive.mjs +0 -64
- package/esm2022/lib/gpu-context.provider.mjs +0 -6
- package/esm2022/lib/gpu-context.service.mjs +0 -78
- package/esm2022/public-api.mjs +0 -6
- package/lib/chartgpu-angular.component.d.ts +0 -103
- package/lib/chartgpu-angular.types.d.ts +0 -89
- package/lib/connect-charts.directive.d.ts +0 -16
- package/lib/gpu-context.provider.d.ts +0 -1
- package/lib/gpu-context.service.d.ts +0 -20
- package/public-api.d.ts +0 -5
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import { NgStyle } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, afterNextRender, effect, input, output, signal, untracked, viewChild, } from '@angular/core';
|
|
3
|
-
import { ChartGPU, } from 'chartgpu';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class ChartGpuAngularComponent {
|
|
6
|
-
destroyRef;
|
|
7
|
-
options = input.required();
|
|
8
|
-
gpuContext = input(null);
|
|
9
|
-
theme = input(undefined);
|
|
10
|
-
className = input();
|
|
11
|
-
style = input();
|
|
12
|
-
ready = output();
|
|
13
|
-
chartReady = output();
|
|
14
|
-
chartDispose = output();
|
|
15
|
-
resize = output();
|
|
16
|
-
click = output();
|
|
17
|
-
chartClick = output();
|
|
18
|
-
mouseOver = output();
|
|
19
|
-
mouseOut = output();
|
|
20
|
-
crosshairMove = output();
|
|
21
|
-
dataAppend = output();
|
|
22
|
-
zoomChange = output();
|
|
23
|
-
zoomRangeChange = output();
|
|
24
|
-
deviceLost = output();
|
|
25
|
-
chartError = output();
|
|
26
|
-
host = viewChild('host');
|
|
27
|
-
canvasHost = viewChild('canvasHost');
|
|
28
|
-
chartInstance = signal(null);
|
|
29
|
-
initializationError = signal(null);
|
|
30
|
-
chartContainer;
|
|
31
|
-
createdWithOptions;
|
|
32
|
-
resizeTimeout;
|
|
33
|
-
resizeObserver;
|
|
34
|
-
removeChartListeners;
|
|
35
|
-
destroying = false;
|
|
36
|
-
constructor(destroyRef) {
|
|
37
|
-
this.destroyRef = destroyRef;
|
|
38
|
-
this.destroyRef.onDestroy(() => {
|
|
39
|
-
this.resizeObserver?.disconnect();
|
|
40
|
-
if (this.resizeTimeout !== undefined) {
|
|
41
|
-
clearTimeout(this.resizeTimeout);
|
|
42
|
-
}
|
|
43
|
-
this.disposeChart();
|
|
44
|
-
});
|
|
45
|
-
afterNextRender(() => {
|
|
46
|
-
const container = this.host()?.nativeElement;
|
|
47
|
-
if (container) {
|
|
48
|
-
this.observeResize(container);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
effect(onCleanup => {
|
|
52
|
-
const container = this.canvasHost()?.nativeElement;
|
|
53
|
-
const options = this.options();
|
|
54
|
-
const gpuContext = this.gpuContext();
|
|
55
|
-
const theme = this.theme();
|
|
56
|
-
this.initializationError.set(null);
|
|
57
|
-
if (!container) {
|
|
58
|
-
this.disposeChart();
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
if (typeof navigator === 'undefined' || !('gpu' in navigator)) {
|
|
62
|
-
this.reportError(new Error('WebGPU not supported in this browser'));
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (untracked(() => this.chartInstance()) && this.chartContainer === container) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
let cancelled = false;
|
|
69
|
-
let createdInstance;
|
|
70
|
-
const initialOptions = this.getEffectiveOptions(options, theme);
|
|
71
|
-
void (gpuContext
|
|
72
|
-
? ChartGPU.create(container, initialOptions, gpuContext)
|
|
73
|
-
: ChartGPU.create(container, initialOptions)).then(instance => {
|
|
74
|
-
createdInstance = instance;
|
|
75
|
-
if (cancelled) {
|
|
76
|
-
instance.dispose();
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
try {
|
|
80
|
-
const latest = untracked(() => ({
|
|
81
|
-
options: this.options(),
|
|
82
|
-
theme: this.theme(),
|
|
83
|
-
}));
|
|
84
|
-
if (latest.options !== options || latest.theme !== theme) {
|
|
85
|
-
instance.setOption(this.getEffectiveOptions(latest.options, latest.theme));
|
|
86
|
-
}
|
|
87
|
-
this.createdWithOptions = latest;
|
|
88
|
-
this.chartContainer = container;
|
|
89
|
-
this.chartInstance.set(instance);
|
|
90
|
-
this.removeChartListeners = this.listenToChart(instance);
|
|
91
|
-
this.ready.emit({ container });
|
|
92
|
-
this.chartReady.emit(instance);
|
|
93
|
-
const range = instance.getZoomRange();
|
|
94
|
-
if (range) {
|
|
95
|
-
this.emitZoomRange(range);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (cause) {
|
|
99
|
-
instance.dispose();
|
|
100
|
-
throw cause;
|
|
101
|
-
}
|
|
102
|
-
}).catch((cause) => {
|
|
103
|
-
if (cancelled) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (createdInstance && this.chartInstance() !== createdInstance && !createdInstance.disposed) {
|
|
107
|
-
createdInstance.dispose();
|
|
108
|
-
}
|
|
109
|
-
this.reportError(cause);
|
|
110
|
-
});
|
|
111
|
-
onCleanup(() => {
|
|
112
|
-
cancelled = true;
|
|
113
|
-
if (this.chartContainer === container) {
|
|
114
|
-
this.disposeChart();
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}, { allowSignalWrites: true });
|
|
118
|
-
effect(() => {
|
|
119
|
-
const options = this.options();
|
|
120
|
-
const theme = this.theme();
|
|
121
|
-
const instance = this.chartInstance();
|
|
122
|
-
if (!instance || instance.disposed) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (this.createdWithOptions?.options === options && this.createdWithOptions.theme === theme) {
|
|
126
|
-
this.createdWithOptions = undefined;
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
instance.setOption(this.getEffectiveOptions(options, theme));
|
|
131
|
-
}
|
|
132
|
-
catch (cause) {
|
|
133
|
-
this.reportError(cause);
|
|
134
|
-
}
|
|
135
|
-
}, { allowSignalWrites: true });
|
|
136
|
-
}
|
|
137
|
-
emitClick(event) {
|
|
138
|
-
this.click.emit({ x: event.offsetX, y: event.offsetY });
|
|
139
|
-
}
|
|
140
|
-
ngOnDestroy() {
|
|
141
|
-
this.destroying = true;
|
|
142
|
-
}
|
|
143
|
-
getChart() {
|
|
144
|
-
const instance = this.chartInstance();
|
|
145
|
-
return instance && !instance.disposed ? instance : null;
|
|
146
|
-
}
|
|
147
|
-
getContainer() {
|
|
148
|
-
return this.canvasHost()?.nativeElement ?? null;
|
|
149
|
-
}
|
|
150
|
-
appendData(seriesIndex, newPoints, options) {
|
|
151
|
-
this.getChart()?.appendData(seriesIndex, newPoints, options);
|
|
152
|
-
}
|
|
153
|
-
renderFrame() {
|
|
154
|
-
return this.getChart()?.renderFrame() ?? false;
|
|
155
|
-
}
|
|
156
|
-
needsRender() {
|
|
157
|
-
return this.getChart()?.needsRender() ?? false;
|
|
158
|
-
}
|
|
159
|
-
getRenderMode() {
|
|
160
|
-
return this.getChart()?.getRenderMode() ?? 'auto';
|
|
161
|
-
}
|
|
162
|
-
setRenderMode(mode) {
|
|
163
|
-
this.getChart()?.setRenderMode(mode);
|
|
164
|
-
}
|
|
165
|
-
setOption(options) {
|
|
166
|
-
this.getChart()?.setOption(options);
|
|
167
|
-
}
|
|
168
|
-
setZoomRange(start, end, source) {
|
|
169
|
-
this.getChart()?.setZoomRange(start, end, source);
|
|
170
|
-
}
|
|
171
|
-
setInteractionX(x, source) {
|
|
172
|
-
this.getChart()?.setInteractionX(x, source);
|
|
173
|
-
}
|
|
174
|
-
getInteractionX() {
|
|
175
|
-
return this.getChart()?.getInteractionX() ?? null;
|
|
176
|
-
}
|
|
177
|
-
hitTest(event) {
|
|
178
|
-
return this.getChart()?.hitTest(event) ?? null;
|
|
179
|
-
}
|
|
180
|
-
getEffectiveOptions(options, theme) {
|
|
181
|
-
return theme !== undefined ? { ...options, theme } : options;
|
|
182
|
-
}
|
|
183
|
-
listenToChart(instance) {
|
|
184
|
-
const click = (payload) => this.chartClick.emit(payload);
|
|
185
|
-
const mouseOver = (payload) => this.mouseOver.emit(payload);
|
|
186
|
-
const mouseOut = (payload) => this.mouseOut.emit(payload);
|
|
187
|
-
const crosshairMove = (payload) => this.crosshairMove.emit(payload);
|
|
188
|
-
const dataAppend = (payload) => this.dataAppend.emit(payload);
|
|
189
|
-
const zoomChange = (payload) => this.emitZoomRange(payload);
|
|
190
|
-
const deviceLost = (payload) => this.deviceLost.emit(payload);
|
|
191
|
-
instance.on('click', click);
|
|
192
|
-
instance.on('mouseover', mouseOver);
|
|
193
|
-
instance.on('mouseout', mouseOut);
|
|
194
|
-
instance.on('crosshairMove', crosshairMove);
|
|
195
|
-
instance.on('dataAppend', dataAppend);
|
|
196
|
-
instance.on('zoomRangeChange', zoomChange);
|
|
197
|
-
instance.on('deviceLost', deviceLost);
|
|
198
|
-
return () => {
|
|
199
|
-
if (instance.disposed) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
instance.off('click', click);
|
|
203
|
-
instance.off('mouseover', mouseOver);
|
|
204
|
-
instance.off('mouseout', mouseOut);
|
|
205
|
-
instance.off('crosshairMove', crosshairMove);
|
|
206
|
-
instance.off('dataAppend', dataAppend);
|
|
207
|
-
instance.off('zoomRangeChange', zoomChange);
|
|
208
|
-
instance.off('deviceLost', deviceLost);
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
emitZoomRange(range) {
|
|
212
|
-
this.zoomChange.emit({ range: { start: range.start, end: range.end } });
|
|
213
|
-
this.zoomRangeChange.emit({ start: range.start, end: range.end });
|
|
214
|
-
}
|
|
215
|
-
observeResize(container) {
|
|
216
|
-
if (typeof ResizeObserver === 'undefined') {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
this.resizeObserver = new ResizeObserver(entries => {
|
|
220
|
-
const entry = entries[0];
|
|
221
|
-
if (!entry) {
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
const { width, height } = entry.contentRect;
|
|
225
|
-
this.resize.emit({ width, height, container });
|
|
226
|
-
if (this.resizeTimeout !== undefined) {
|
|
227
|
-
clearTimeout(this.resizeTimeout);
|
|
228
|
-
}
|
|
229
|
-
this.resizeTimeout = setTimeout(() => {
|
|
230
|
-
this.chartInstance()?.resize();
|
|
231
|
-
this.resizeTimeout = undefined;
|
|
232
|
-
}, 100);
|
|
233
|
-
});
|
|
234
|
-
this.resizeObserver.observe(container);
|
|
235
|
-
}
|
|
236
|
-
reportError(cause) {
|
|
237
|
-
const error = cause instanceof Error ? cause : new Error(String(cause));
|
|
238
|
-
this.initializationError.set(error);
|
|
239
|
-
this.chartError.emit(error);
|
|
240
|
-
}
|
|
241
|
-
disposeChart() {
|
|
242
|
-
const instance = this.chartInstance();
|
|
243
|
-
this.removeChartListeners?.();
|
|
244
|
-
this.removeChartListeners = undefined;
|
|
245
|
-
if (instance && !instance.disposed) {
|
|
246
|
-
instance.dispose();
|
|
247
|
-
if (!this.destroying) {
|
|
248
|
-
this.chartDispose.emit();
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
this.chartInstance.set(null);
|
|
252
|
-
this.chartContainer = undefined;
|
|
253
|
-
this.createdWithOptions = undefined;
|
|
254
|
-
}
|
|
255
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartGpuAngularComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
256
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChartGpuAngularComponent, isStandalone: true, selector: "lib-chartgpu-angular", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, gpuContext: { classPropertyName: "gpuContext", publicName: "gpuContext", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ready: "ready", chartReady: "chartReady", chartDispose: "chartDispose", resize: "resize", click: "click", chartClick: "chartClick", mouseOver: "mouseOver", mouseOut: "mouseOut", crosshairMove: "crosshairMove", dataAppend: "dataAppend", zoomChange: "zoomChange", zoomRangeChange: "zoomRangeChange", deviceLost: "deviceLost", chartError: "chartError" }, host: { classAttribute: "chartgpu-angular" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, isSignal: true }, { propertyName: "canvasHost", first: true, predicate: ["canvasHost"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
257
|
-
<div
|
|
258
|
-
#host
|
|
259
|
-
class="chartgpu-host"
|
|
260
|
-
[class]="className() ?? ''"
|
|
261
|
-
[ngStyle]="style()"
|
|
262
|
-
(click)="emitClick($event)"
|
|
263
|
-
>
|
|
264
|
-
<div #canvasHost class="chartgpu-canvas-host"></div>
|
|
265
|
-
@if (initializationError(); as error) {
|
|
266
|
-
<div class="chartgpu-error" role="alert">{{ error.message }}</div>
|
|
267
|
-
}
|
|
268
|
-
</div>
|
|
269
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%}.chartgpu-host{position:relative;width:100%;height:100%}.chartgpu-canvas-host{position:absolute;inset:0}.chartgpu-error{position:absolute;inset:0;display:grid;place-items:center;padding:1rem;text-align:center}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
270
|
-
}
|
|
271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartGpuAngularComponent, decorators: [{
|
|
272
|
-
type: Component,
|
|
273
|
-
args: [{ selector: 'lib-chartgpu-angular', standalone: true, imports: [NgStyle], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'chartgpu-angular' }, template: `
|
|
274
|
-
<div
|
|
275
|
-
#host
|
|
276
|
-
class="chartgpu-host"
|
|
277
|
-
[class]="className() ?? ''"
|
|
278
|
-
[ngStyle]="style()"
|
|
279
|
-
(click)="emitClick($event)"
|
|
280
|
-
>
|
|
281
|
-
<div #canvasHost class="chartgpu-canvas-host"></div>
|
|
282
|
-
@if (initializationError(); as error) {
|
|
283
|
-
<div class="chartgpu-error" role="alert">{{ error.message }}</div>
|
|
284
|
-
}
|
|
285
|
-
</div>
|
|
286
|
-
`, styles: [":host{display:block;width:100%;height:100%}.chartgpu-host{position:relative;width:100%;height:100%}.chartgpu-canvas-host{position:absolute;inset:0}.chartgpu-error{position:absolute;inset:0;display:grid;place-items:center;padding:1rem;text-align:center}\n"] }]
|
|
287
|
-
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRncHUtYW5ndWxhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFydGdwdS1hbmd1bGFyL3NyYy9saWIvY2hhcnRncHUtYW5ndWxhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUlULGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsUUFBUSxHQU9ULE1BQU0sVUFBVSxDQUFDOztBQWdFbEIsTUFBTSxPQUFPLHdCQUF3QjtJQXFDTjtJQXBDcEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7SUFDNUMsVUFBVSxHQUFHLEtBQUssQ0FBNEIsSUFBSSxDQUFDLENBQUM7SUFDcEQsS0FBSyxHQUFHLEtBQUssQ0FBdUMsU0FBUyxDQUFDLENBQUM7SUFDL0QsU0FBUyxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN4QyxLQUFLLEdBQUcsS0FBSyxFQUE2QixDQUFDO0lBRTNDLEtBQUssR0FBRyxNQUFNLEVBQXNCLENBQUM7SUFDckMsVUFBVSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztJQUN4QyxZQUFZLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDOUIsTUFBTSxHQUFHLE1BQU0sRUFBdUIsQ0FBQztJQUN2QyxLQUFLLEdBQUcsTUFBTSxFQUFzQixDQUFDO0lBQ3JDLFVBQVUsR0FBRyxNQUFNLEVBQXdCLENBQUM7SUFDNUMsU0FBUyxHQUFHLE1BQU0sRUFBd0IsQ0FBQztJQUMzQyxRQUFRLEdBQUcsTUFBTSxFQUF3QixDQUFDO0lBQzFDLGFBQWEsR0FBRyxNQUFNLEVBQWdDLENBQUM7SUFD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Q0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7SUFDdEMsQ0FBQzt3R0F4U1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IsczBDQTFDekI7Ozs7Ozs7Ozs7Ozs7R0FhVCx3VUFoQlMsT0FBTzs7NEZBNkNOLHdCQUF3QjtrQkFoRHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQyxtQkFDRCx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFlBQ3pCOzs7Ozs7Ozs7Ozs7O0dBYVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhcnRHUFUsXG4gIHR5cGUgQ2hhcnRHUFVDcm9zc2hhaXJNb3ZlUGF5bG9hZCxcbiAgdHlwZSBDaGFydEdQVURldmljZUxvc3RQYXlsb2FkLFxuICB0eXBlIENoYXJ0R1BVRXZlbnRQYXlsb2FkLFxuICB0eXBlIENoYXJ0R1BVSW5zdGFuY2UsXG4gIHR5cGUgQ2hhcnRHUFVab29tUmFuZ2VDaGFuZ2VQYXlsb2FkLFxuICB0eXBlIE9ITENEYXRhUG9pbnQsXG59IGZyb20gJ2NoYXJ0Z3B1JztcbmltcG9ydCB0eXBlIHtcbiAgQ2hhcnRncHVBcHBlbmREYXRhT3B0aW9ucyxcbiAgQ2hhcnRncHVDYXJ0ZXNpYW5TZXJpZXNEYXRhLFxuICBDaGFydGdwdUNoYXJ0SGFuZGxlLFxuICBDaGFydGdwdUNsaWNrRXZlbnQsXG4gIENoYXJ0Z3B1RGF0YUFwcGVuZEV2ZW50LFxuICBDaGFydGdwdUdQVUNvbnRleHQsXG4gIENoYXJ0Z3B1T3B0aW9ucyxcbiAgQ2hhcnRncHVSZWFkeUV2ZW50LFxuICBDaGFydGdwdVJlc2l6ZUV2ZW50LFxuICBDaGFydGdwdVN0eWxlLFxuICBDaGFydGdwdVpvb21DaGFuZ2VFdmVudCxcbiAgQ2hhcnRncHVab29tUmFuZ2VDaGFuZ2VFdmVudCxcbn0gZnJvbSAnLi9jaGFydGdwdS1hbmd1bGFyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0Z3B1LWFuZ3VsYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdTdHlsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY2hhcnRncHUtYW5ndWxhcicgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICAjaG9zdFxuICAgICAgY2xhc3M9XCJjaGFydGdwdS1ob3N0XCJcbiAgICAgIFtjbGFzc109XCJjbGFzc05hbWUoKSA/PyAnJ1wiXG4gICAgICBbbmdTdHlsZV09XCJzdHlsZSgpXCJcbiAgICAgIChjbGljayk9XCJlbWl0Q2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdiAjY2FudmFzSG9zdCBjbGFzcz1cImNoYXJ0Z3B1LWNhbnZhcy1ob3N0XCI+PC9kaXY+XG4gICAgICBAaWYgKGluaXRpYWxpemF0aW9uRXJyb3IoKTsgYXMgZXJyb3IpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0Z3B1LWVycm9yXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3IubWVzc2FnZSB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuY2hhcnRncHUtaG9zdCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuY2hhcnRncHUtY2FudmFzLWhvc3Qge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgaW5zZXQ6IDA7XG4gICAgfVxuXG4gICAgLmNoYXJ0Z3B1LWVycm9yIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGluc2V0OiAwO1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0R3B1QW5ndWxhckNvbXBvbmVudCBpbXBsZW1lbnRzIENoYXJ0Z3B1Q2hhcnRIYW5kbGUsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IG9wdGlvbnMgPSBpbnB1dC5yZXF1aXJlZDxDaGFydGdwdU9wdGlvbnM+KCk7XG4gIHJlYWRvbmx5IGdwdUNvbnRleHQgPSBpbnB1dDxDaGFydGdwdUdQVUNvbnRleHQgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdGhlbWUgPSBpbnB1dDxDaGFydGdwdU9wdGlvbnNbJ3RoZW1lJ10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNsYXNzTmFtZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgc3R5bGUgPSBpbnB1dDxDaGFydGdwdVN0eWxlIHwgdW5kZWZpbmVkPigpO1xuXG4gIHJlYWRvbmx5IHJlYWR5ID0gb3V0cHV0PENoYXJ0Z3B1UmVhZHlFdmVudD4oKTtcbiAgcmVhZG9ubHkgY2hhcnRSZWFkeSA9IG91dHB1dDxDaGFydEdQVUluc3RhbmNlPigpO1xuICByZWFkb25seSBjaGFydERpc3Bvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgcmVzaXplID0gb3V0cHV0PENoYXJ0Z3B1UmVzaXplRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGNsaWNrID0gb3V0cHV0PENoYXJ0Z3B1Q2xpY2tFdmVudD4oKTtcbiAgcmVhZG9ubHkgY2hhcnRDbGljayA9IG91dHB1dDxDaGFydEdQVUV2ZW50UGF5bG9hZD4oKTtcbiAgcmVhZG9ubHkgbW91c2VPdmVyID0gb3V0cHV0PENoYXJ0R1BVRXZlbnRQYXlsb2FkPigpO1xuICByZWFkb25seSBtb3VzZU91dCA9IG91dHB1dDxDaGFydEdQVUV2ZW50UGF5bG9hZD4oKTtcbiAgcmVhZG9ubHkgY3Jvc3NoYWlyTW92ZSA9IG91dHB1dDxDaGFydEdQVUNyb3NzaGFpck1vdmVQYXlsb2FkPigpO1xuICByZWFkb25seSBkYXRhQXBwZW5kID0gb3V0cHV0PENoYXJ0Z3B1RGF0YUFwcGVuZEV2ZW50PigpO1xuICByZWFkb25seSB6b29tQ2hhbmdlID0gb3V0cHV0PENoYXJ0Z3B1Wm9vbUNoYW5nZUV2ZW50PigpO1xuICByZWFkb25seSB6b29tUmFuZ2VDaGFuZ2UgPSBvdXRwdXQ8Q2hhcnRncHVab29tUmFuZ2VDaGFuZ2VFdmVudD4oKTtcbiAgcmVhZG9ubHkgZGV2aWNlTG9zdCA9IG91dHB1dDxDaGFydEdQVURldmljZUxvc3RQYXlsb2FkPigpO1xuICByZWFkb25seSBjaGFydEVycm9yID0gb3V0cHV0PEVycm9yPigpO1xuXG4gIHJlYWRvbmx5IGhvc3QgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdob3N0Jyk7XG4gIHJlYWRvbmx5IGNhbnZhc0hvc3QgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjYW52YXNIb3N0Jyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydEluc3RhbmNlID0gc2lnbmFsPENoYXJ0R1BVSW5zdGFuY2UgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgaW5pdGlhbGl6YXRpb25FcnJvciA9IHNpZ25hbDxFcnJvciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGNoYXJ0Q29udGFpbmVyPzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgY3JlYXRlZFdpdGhPcHRpb25zPzoge1xuICAgIG9wdGlvbnM6IENoYXJ0Z3B1T3B0aW9ucztcbiAgICB0aGVtZTogQ2hhcnRncHVPcHRpb25zWyd0aGVtZSddIHwgdW5kZWZpbmVkO1xuICB9O1xuICBwcml2YXRlIHJlc2l6ZVRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIHJlbW92ZUNoYXJ0TGlzdGVuZXJzPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBkZXN0cm95aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmKSB7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc3Bvc2VDaGFydCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuaG9zdCgpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLm9ic2VydmVSZXNpemUoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGVmZmVjdChvbkNsZWFudXAgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jYW52YXNIb3N0KCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG4gICAgICBjb25zdCBncHVDb250ZXh0ID0gdGhpcy5ncHVDb250ZXh0KCk7XG4gICAgICBjb25zdCB0aGVtZSA9IHRoaXMudGhlbWUoKTtcblxuICAgICAgdGhpcy5pbml0aWFsaXphdGlvbkVycm9yLnNldChudWxsKTtcbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMuZGlzcG9zZUNoYXJ0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJyB8fCAhKCdncHUnIGluIG5hdmlnYXRvcikpIHtcbiAgICAgICAgdGhpcy5yZXBvcnRFcnJvcihuZXcgRXJyb3IoJ1dlYkdQVSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlcicpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodW50cmFja2VkKCgpID0+IHRoaXMuY2hhcnRJbnN0YW5jZSgpKSAmJiB0aGlzLmNoYXJ0Q29udGFpbmVyID09PSBjb250YWluZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICBsZXQgY3JlYXRlZEluc3RhbmNlOiBDaGFydEdQVUluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaW5pdGlhbE9wdGlvbnMgPSB0aGlzLmdldEVmZmVjdGl2ZU9wdGlvbnMob3B0aW9ucywgdGhlbWUpO1xuXG4gICAgICB2b2lkIChncHVDb250ZXh0XG4gICAgICAgID8gQ2hhcnRHUFUuY3JlYXRlKGNvbnRhaW5lciwgaW5pdGlhbE9wdGlvbnMsIGdwdUNvbnRleHQpXG4gICAgICAgIDogQ2hhcnRHUFUuY3JlYXRlKGNvbnRhaW5lciwgaW5pdGlhbE9wdGlvbnMpXG4gICAgICApLnRoZW4oaW5zdGFuY2UgPT4ge1xuICAgICAgICBjcmVhdGVkSW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgIGluc3RhbmNlLmRpc3Bvc2UoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGxhdGVzdCA9IHVudHJhY2tlZCgoKSA9PiAoe1xuICAgICAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zKCksXG4gICAgICAgICAgICB0aGVtZTogdGhpcy50aGVtZSgpLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBpZiAobGF0ZXN0Lm9wdGlvbnMgIT09IG9wdGlvbnMgfHwgbGF0ZXN0LnRoZW1lICE9PSB0aGVtZSkge1xuICAgICAgICAgICAgaW5zdGFuY2Uuc2V0T3B0aW9uKHRoaXMuZ2V0RWZmZWN0aXZlT3B0aW9ucyhsYXRlc3Qub3B0aW9ucywgbGF0ZXN0LnRoZW1lKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jcmVhdGVkV2l0aE9wdGlvbnMgPSBsYXRlc3Q7XG4gICAgICAgICAgdGhpcy5jaGFydENvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICAgICAgICB0aGlzLmNoYXJ0SW5zdGFuY2Uuc2V0KGluc3RhbmNlKTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUNoYXJ0TGlzdGVuZXJzID0gdGhpcy5saXN0ZW5Ub0NoYXJ0KGluc3RhbmNlKTtcbiAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoeyBjb250YWluZXIgfSk7XG4gICAgICAgICAgdGhpcy5jaGFydFJlYWR5LmVtaXQoaW5zdGFuY2UpO1xuXG4gICAgICAgICAgY29uc3QgcmFuZ2UgPSBpbnN0YW5jZS5nZXRab29tUmFuZ2UoKTtcbiAgICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdFpvb21SYW5nZShyYW5nZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChjYXVzZTogdW5rbm93bikge1xuICAgICAgICAgIGluc3RhbmNlLmRpc3Bvc2UoKTtcbiAgICAgICAgICB0aHJvdyBjYXVzZTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKGNhdXNlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNyZWF0ZWRJbnN0YW5jZSAmJiB0aGlzLmNoYXJ0SW5zdGFuY2UoKSAhPT0gY3JlYXRlZEluc3RhbmNlICYmICFjcmVhdGVkSW5zdGFuY2UuZGlzcG9zZWQpIHtcbiAgICAgICAgICBjcmVhdGVkSW5zdGFuY2UuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVwb3J0RXJyb3IoY2F1c2UpO1xuICAgICAgfSk7XG5cbiAgICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmNoYXJ0Q29udGFpbmVyID09PSBjb250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLmRpc3Bvc2VDaGFydCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZSgpO1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNoYXJ0SW5zdGFuY2UoKTtcbiAgICAgIGlmICghaW5zdGFuY2UgfHwgaW5zdGFuY2UuZGlzcG9zZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jcmVhdGVkV2l0aE9wdGlvbnM/Lm9wdGlvbnMgPT09IG9wdGlvbnMgJiYgdGhpcy5jcmVhdGVkV2l0aE9wdGlvbnMudGhlbWUgPT09IHRoZW1lKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlZFdpdGhPcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGluc3RhbmNlLnNldE9wdGlvbih0aGlzLmdldEVmZmVjdGl2ZU9wdGlvbnMob3B0aW9ucywgdGhlbWUpKTtcbiAgICAgIH0gY2F0Y2ggKGNhdXNlOiB1bmtub3duKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RXJyb3IoY2F1c2UpO1xuICAgICAgfVxuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbGljay5lbWl0KHsgeDogZXZlbnQub2Zmc2V0WCwgeTogZXZlbnQub2Zmc2V0WSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWluZyA9IHRydWU7XG4gIH1cblxuICBnZXRDaGFydCgpOiBDaGFydEdQVUluc3RhbmNlIHwgbnVsbCB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNoYXJ0SW5zdGFuY2UoKTtcbiAgICByZXR1cm4gaW5zdGFuY2UgJiYgIWluc3RhbmNlLmRpc3Bvc2VkID8gaW5zdGFuY2UgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q29udGFpbmVyKCk6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FudmFzSG9zdCgpPy5uYXRpdmVFbGVtZW50ID8/IG51bGw7XG4gIH1cblxuICBhcHBlbmREYXRhKFxuICAgIHNlcmllc0luZGV4OiBudW1iZXIsXG4gICAgbmV3UG9pbnRzOiBDaGFydGdwdUNhcnRlc2lhblNlcmllc0RhdGEgfCBPSExDRGF0YVBvaW50W10sXG4gICAgb3B0aW9ucz86IENoYXJ0Z3B1QXBwZW5kRGF0YU9wdGlvbnMsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Q2hhcnQoKT8uYXBwZW5kRGF0YShzZXJpZXNJbmRleCwgbmV3UG9pbnRzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbmRlckZyYW1lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENoYXJ0KCk/LnJlbmRlckZyYW1lKCkgPz8gZmFsc2U7XG4gIH1cblxuICBuZWVkc1JlbmRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGFydCgpPy5uZWVkc1JlbmRlcigpID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0UmVuZGVyTW9kZSgpOiAnYXV0bycgfCAnZXh0ZXJuYWwnIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGFydCgpPy5nZXRSZW5kZXJNb2RlKCkgPz8gJ2F1dG8nO1xuICB9XG5cbiAgc2V0UmVuZGVyTW9kZShtb2RlOiAnYXV0bycgfCAnZXh0ZXJuYWwnKTogdm9pZCB7XG4gICAgdGhpcy5nZXRDaGFydCgpPy5zZXRSZW5kZXJNb2RlKG1vZGUpO1xuICB9XG5cbiAgc2V0T3B0aW9uKG9wdGlvbnM6IENoYXJ0Z3B1T3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Q2hhcnQoKT8uc2V0T3B0aW9uKG9wdGlvbnMpO1xuICB9XG5cbiAgc2V0Wm9vbVJhbmdlKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBzb3VyY2U/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5nZXRDaGFydCgpPy5zZXRab29tUmFuZ2Uoc3RhcnQsIGVuZCwgc291cmNlKTtcbiAgfVxuXG4gIHNldEludGVyYWN0aW9uWCh4OiBudW1iZXIgfCBudWxsLCBzb3VyY2U/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5nZXRDaGFydCgpPy5zZXRJbnRlcmFjdGlvblgoeCwgc291cmNlKTtcbiAgfVxuXG4gIGdldEludGVyYWN0aW9uWCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGFydCgpPy5nZXRJbnRlcmFjdGlvblgoKSA/PyBudWxsO1xuICB9XG5cbiAgaGl0VGVzdChldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xuICAgIHJldHVybiB0aGlzLmdldENoYXJ0KCk/LmhpdFRlc3QoZXZlbnQpID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZU9wdGlvbnMoXG4gICAgb3B0aW9uczogQ2hhcnRncHVPcHRpb25zLFxuICAgIHRoZW1lOiBDaGFydGdwdU9wdGlvbnNbJ3RoZW1lJ10gfCB1bmRlZmluZWQsXG4gICk6IENoYXJ0Z3B1T3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoZW1lICE9PSB1bmRlZmluZWQgPyB7IC4uLm9wdGlvbnMsIHRoZW1lIH0gOiBvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NoYXJ0KGluc3RhbmNlOiBDaGFydEdQVUluc3RhbmNlKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgY2xpY2sgPSAocGF5bG9hZDogQ2hhcnRHUFVFdmVudFBheWxvYWQpID0+IHRoaXMuY2hhcnRDbGljay5lbWl0KHBheWxvYWQpO1xuICAgIGNvbnN0IG1vdXNlT3ZlciA9IChwYXlsb2FkOiBDaGFydEdQVUV2ZW50UGF5bG9hZCkgPT4gdGhpcy5tb3VzZU92ZXIuZW1pdChwYXlsb2FkKTtcbiAgICBjb25zdCBtb3VzZU91dCA9IChwYXlsb2FkOiBDaGFydEdQVUV2ZW50UGF5bG9hZCkgPT4gdGhpcy5tb3VzZU91dC5lbWl0KHBheWxvYWQpO1xuICAgIGNvbnN0IGNyb3NzaGFpck1vdmUgPSAocGF5bG9hZDogQ2hhcnRHUFVDcm9zc2hhaXJNb3ZlUGF5bG9hZCkgPT4gdGhpcy5jcm9zc2hhaXJNb3ZlLmVtaXQocGF5bG9hZCk7XG4gICAgY29uc3QgZGF0YUFwcGVuZCA9IChwYXlsb2FkOiBDaGFydGdwdURhdGFBcHBlbmRFdmVudCkgPT4gdGhpcy5kYXRhQXBwZW5kLmVtaXQocGF5bG9hZCk7XG4gICAgY29uc3Qgem9vbUNoYW5nZSA9IChwYXlsb2FkOiBDaGFydEdQVVpvb21SYW5nZUNoYW5nZVBheWxvYWQpID0+IHRoaXMuZW1pdFpvb21SYW5nZShwYXlsb2FkKTtcbiAgICBjb25zdCBkZXZpY2VMb3N0ID0gKHBheWxvYWQ6IENoYXJ0R1BVRGV2aWNlTG9zdFBheWxvYWQpID0+IHRoaXMuZGV2aWNlTG9zdC5lbWl0KHBheWxvYWQpO1xuXG4gICAgaW5zdGFuY2Uub24oJ2NsaWNrJywgY2xpY2spO1xuICAgIGluc3RhbmNlLm9uKCdtb3VzZW92ZXInLCBtb3VzZU92ZXIpO1xuICAgIGluc3RhbmNlLm9uKCdtb3VzZW91dCcsIG1vdXNlT3V0KTtcbiAgICBpbnN0YW5jZS5vbignY3Jvc3NoYWlyTW92ZScsIGNyb3NzaGFpck1vdmUpO1xuICAgIGluc3RhbmNlLm9uKCdkYXRhQXBwZW5kJywgZGF0YUFwcGVuZCk7XG4gICAgaW5zdGFuY2Uub24oJ3pvb21SYW5nZUNoYW5nZScsIHpvb21DaGFuZ2UpO1xuICAgIGluc3RhbmNlLm9uKCdkZXZpY2VMb3N0JywgZGV2aWNlTG9zdCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGluc3RhbmNlLmRpc3Bvc2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGluc3RhbmNlLm9mZignY2xpY2snLCBjbGljayk7XG4gICAgICBpbnN0YW5jZS5vZmYoJ21vdXNlb3ZlcicsIG1vdXNlT3Zlcik7XG4gICAgICBpbnN0YW5jZS5vZmYoJ21vdXNlb3V0JywgbW91c2VPdXQpO1xuICAgICAgaW5zdGFuY2Uub2ZmKCdjcm9zc2hhaXJNb3ZlJywgY3Jvc3NoYWlyTW92ZSk7XG4gICAgICBpbnN0YW5jZS5vZmYoJ2RhdGFBcHBlbmQnLCBkYXRhQXBwZW5kKTtcbiAgICAgIGluc3RhbmNlLm9mZignem9vbVJhbmdlQ2hhbmdlJywgem9vbUNoYW5nZSk7XG4gICAgICBpbnN0YW5jZS5vZmYoJ2RldmljZUxvc3QnLCBkZXZpY2VMb3N0KTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Wm9vbVJhbmdlKHJhbmdlOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdCh7IHJhbmdlOiB7IHN0YXJ0OiByYW5nZS5zdGFydCwgZW5kOiByYW5nZS5lbmQgfSB9KTtcbiAgICB0aGlzLnpvb21SYW5nZUNoYW5nZS5lbWl0KHsgc3RhcnQ6IHJhbmdlLnN0YXJ0LCBlbmQ6IHJhbmdlLmVuZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVJlc2l6ZShjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xuICAgICAgdGhpcy5yZXNpemUuZW1pdCh7IHdpZHRoLCBoZWlnaHQsIGNvbnRhaW5lciB9KTtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYXJ0SW5zdGFuY2UoKT8ucmVzaXplKCk7XG4gICAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcik7XG4gIH1cblxuICBwcml2YXRlIHJlcG9ydEVycm9yKGNhdXNlOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3IgPSBjYXVzZSBpbnN0YW5jZW9mIEVycm9yID8gY2F1c2UgOiBuZXcgRXJyb3IoU3RyaW5nKGNhdXNlKSk7XG4gICAgdGhpcy5pbml0aWFsaXphdGlvbkVycm9yLnNldChlcnJvcik7XG4gICAgdGhpcy5jaGFydEVycm9yLmVtaXQoZXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwb3NlQ2hhcnQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNoYXJ0SW5zdGFuY2UoKTtcbiAgICB0aGlzLnJlbW92ZUNoYXJ0TGlzdGVuZXJzPy4oKTtcbiAgICB0aGlzLnJlbW92ZUNoYXJ0TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuICAgIGlmIChpbnN0YW5jZSAmJiAhaW5zdGFuY2UuZGlzcG9zZWQpIHtcbiAgICAgIGluc3RhbmNlLmRpc3Bvc2UoKTtcbiAgICAgIGlmICghdGhpcy5kZXN0cm95aW5nKSB7XG4gICAgICAgIHRoaXMuY2hhcnREaXNwb3NlLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFydEluc3RhbmNlLnNldChudWxsKTtcbiAgICB0aGlzLmNoYXJ0Q29udGFpbmVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3JlYXRlZFdpdGhPcHRpb25zID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRncHUtYW5ndWxhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXJ0Z3B1LWFuZ3VsYXIvc3JjL2xpYi9jaGFydGdwdS1hbmd1bGFyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYXJ0R1BVT3B0aW9ucyB9IGZyb20gJ2NoYXJ0Z3B1JztcbmltcG9ydCB0eXBlIHtcbiAgQW5pbWF0aW9uQ29uZmlnLFxuICBBbm5vdGF0aW9uQ29uZmlnLFxuICBBeGlzQ29uZmlnLFxuICBDaGFydEdQVUNyZWF0ZUNvbnRleHQsXG4gIENoYXJ0R1BVQ3Jvc3NoYWlyTW92ZVBheWxvYWQsXG4gIENoYXJ0R1BVRXZlbnRQYXlsb2FkLFxuICBDaGFydEdQVUhpdFRlc3RSZXN1bHQsXG4gIENoYXJ0R1BVSW5zdGFuY2UsXG4gIENoYXJ0R1BVRGV2aWNlTG9zdFBheWxvYWQsXG4gIENoYXJ0U3luY09wdGlvbnMsXG4gIERhdGFab29tQ29uZmlnLFxuICBEYXRhUG9pbnQsXG4gIE9ITENEYXRhUG9pbnQsXG4gIFBpcGVsaW5lQ2FjaGUsXG4gIFJlbmRlck1vZGUsXG4gIFNlcmllc0NvbmZpZyxcbiAgU2VyaWVzVHlwZSxcbiAgVGhlbWVDb25maWcsXG4gIFRvb2x0aXBDb25maWcsXG59IGZyb20gJ2NoYXJ0Z3B1JztcblxuZXhwb3J0IHR5cGUgQ2hhcnRncHVPcHRpb25zID0gQ2hhcnRHUFVPcHRpb25zO1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVTZXJpZXNUeXBlID0gU2VyaWVzVHlwZTtcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1U2VyaWVzRGF0YSA9IEV4dHJhY3Q8U2VyaWVzQ29uZmlnLCB7IHR5cGU6ICdsaW5lJyB9PlsnZGF0YSddO1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVTZXJpZXNPcHRpb25zID0gU2VyaWVzQ29uZmlnO1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVBeGlzT3B0aW9ucyA9IEF4aXNDb25maWc7XG5leHBvcnQgdHlwZSBDaGFydGdwdVpvb21PcHRpb25zID0gRGF0YVpvb21Db25maWc7XG5leHBvcnQgdHlwZSBDaGFydGdwdVRvb2x0aXBPcHRpb25zID0gVG9vbHRpcENvbmZpZztcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1QW5pbWF0aW9uT3B0aW9ucyA9IEFuaW1hdGlvbkNvbmZpZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBDaGFydGdwdVRoZW1lT3B0aW9ucyA9IFRoZW1lQ29uZmlnIHwgJ2xpZ2h0JyB8ICdkYXJrJztcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1QW5ub3RhdGlvbk9wdGlvbnMgPSBBbm5vdGF0aW9uQ29uZmlnO1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVUaHJlZURPcHRpb25zID0gUGljazxDaGFydEdQVU9wdGlvbnMsICdjb29yZGluYXRlU3lzdGVtJyB8ICdjYW1lcmEnIHwgJ2ludGVyYWN0aW9uM2QnIHwgJ2F4ZXMzZCc+O1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVTdHJlYW1pbmdPcHRpb25zID0gUGljazxDaGFydEdQVU9wdGlvbnMsICdhdXRvU2Nyb2xsJz47XG5leHBvcnQgdHlwZSBDaGFydGdwdUludGVyYWN0aW9uT3B0aW9ucyA9IFBpY2s8Q2hhcnRHUFVPcHRpb25zLCAnZGF0YVpvb20nIHwgJ3Rvb2x0aXAnPjtcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1Q2hhcnRJbnN0YW5jZSA9IENoYXJ0R1BVSW5zdGFuY2U7XG5leHBvcnQgdHlwZSBDaGFydGdwdUdQVUNvbnRleHQgPSBDaGFydEdQVUNyZWF0ZUNvbnRleHQ7XG5leHBvcnQgdHlwZSBDaGFydGdwdVN0eWxlID0gUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZD47XG5leHBvcnQgdHlwZSBDaGFydGdwdVpvb21SYW5nZSA9IE5vbk51bGxhYmxlPFJldHVyblR5cGU8Q2hhcnRHUFVJbnN0YW5jZVsnZ2V0Wm9vbVJhbmdlJ10+PjtcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1Q2xpY2tQYXJhbXMgPSBDaGFydEdQVUV2ZW50UGF5bG9hZDtcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1TW91c2VPdmVyUGFyYW1zID0gQ2hhcnRHUFVFdmVudFBheWxvYWQ7XG5leHBvcnQgdHlwZSBDaGFydGdwdUNyb3NzaGFpck1vdmVQYXJhbXMgPSBDaGFydEdQVUNyb3NzaGFpck1vdmVQYXlsb2FkO1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVIaXRUZXN0UmVzdWx0ID0gQ2hhcnRHUFVIaXRUZXN0UmVzdWx0O1xuZXhwb3J0IHR5cGUgQ2hhcnRncHVSZW5kZXJNb2RlID0gUmVuZGVyTW9kZTtcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1U3luY09wdGlvbnMgPSBDaGFydFN5bmNPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBDaGFydGdwdVhZQXJyYXlzRGF0YSA9IFJlYWRvbmx5PHtcbiAgeDogQXJyYXlMaWtlPG51bWJlcj47XG4gIHk6IEFycmF5TGlrZTxudW1iZXI+O1xuICBzaXplPzogQXJyYXlMaWtlPG51bWJlcj47XG59PjtcbmV4cG9ydCB0eXBlIENoYXJ0Z3B1SW50ZXJsZWF2ZWRYWURhdGEgPSBBcnJheUJ1ZmZlclZpZXc7XG5leHBvcnQgdHlwZSBDaGFydGdwdUNhcnRlc2lhblNlcmllc0RhdGEgPVxuICB8IFJlYWRvbmx5QXJyYXk8RGF0YVBvaW50IHwgbnVsbD5cbiAgfCBDaGFydGdwdVhZQXJyYXlzRGF0YVxuICB8IENoYXJ0Z3B1SW50ZXJsZWF2ZWRYWURhdGE7XG5leHBvcnQgdHlwZSBDaGFydGdwdUFwcGVuZERhdGFPcHRpb25zID0gUmVhZG9ubHk8eyBtYXhQb2ludHM/OiBudW1iZXIgfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRncHVEYXRhQXBwZW5kRXZlbnQge1xuICBzZXJpZXNJbmRleDogbnVtYmVyO1xuICBjb3VudDogbnVtYmVyO1xuICB4RXh0ZW50OiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Z3B1UmVhZHlFdmVudCB7XG4gIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRncHVSZXNpemVFdmVudCB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Z3B1Q2xpY2tFdmVudCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Z3B1Wm9vbUNoYW5nZUV2ZW50IHtcbiAgcmFuZ2U6IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFydGdwdVpvb21SYW5nZUNoYW5nZUV2ZW50IHtcbiAgc3RhcnQ6IG51bWJlcjtcbiAgZW5kOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRncHVHUFVDb250ZXh0U3RhdGUge1xuICBhZGFwdGVyOiBDaGFydEdQVUNyZWF0ZUNvbnRleHRbJ2FkYXB0ZXInXSB8IG51bGw7XG4gIGRldmljZTogQ2hhcnRHUFVDcmVhdGVDb250ZXh0WydkZXZpY2UnXSB8IG51bGw7XG4gIHBpcGVsaW5lQ2FjaGU6IFBpcGVsaW5lQ2FjaGUgfCBudWxsO1xuICBlcnJvcjogRXJyb3IgfCBudWxsO1xuICBpc1JlYWR5OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Z3B1Q2hhcnRIYW5kbGUge1xuICBnZXRDaGFydCgpOiBDaGFydEdQVUluc3RhbmNlIHwgbnVsbDtcbiAgZ2V0Q29udGFpbmVyKCk6IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcbiAgYXBwZW5kRGF0YShcbiAgICBzZXJpZXNJbmRleDogbnVtYmVyLFxuICAgIG5ld1BvaW50czogQ2hhcnRncHVDYXJ0ZXNpYW5TZXJpZXNEYXRhIHwgT0hMQ0RhdGFQb2ludFtdLFxuICAgIG9wdGlvbnM/OiBDaGFydGdwdUFwcGVuZERhdGFPcHRpb25zLFxuICApOiB2b2lkO1xuICByZW5kZXJGcmFtZSgpOiBib29sZWFuO1xuICBuZWVkc1JlbmRlcigpOiBib29sZWFuO1xuICBnZXRSZW5kZXJNb2RlKCk6IFJlbmRlck1vZGU7XG4gIHNldFJlbmRlck1vZGUobW9kZTogUmVuZGVyTW9kZSk6IHZvaWQ7XG4gIHNldE9wdGlvbihvcHRpb25zOiBDaGFydGdwdU9wdGlvbnMpOiB2b2lkO1xuICBzZXRab29tUmFuZ2Uoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHNvdXJjZT86IHVua25vd24pOiB2b2lkO1xuICBzZXRJbnRlcmFjdGlvblgoeDogbnVtYmVyIHwgbnVsbCwgc291cmNlPzogdW5rbm93bik6IHZvaWQ7XG4gIGdldEludGVyYWN0aW9uWCgpOiBudW1iZXIgfCBudWxsO1xuICBoaXRUZXN0KGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KTogQ2hhcnRHUFVIaXRUZXN0UmVzdWx0IHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUge1xuICBDaGFydEdQVUNyZWF0ZUNvbnRleHQsXG4gIENoYXJ0R1BVQ3Jvc3NoYWlyTW92ZVBheWxvYWQsXG4gIENoYXJ0R1BVRGV2aWNlTG9zdFBheWxvYWQsXG4gIENoYXJ0R1BVRXZlbnRQYXlsb2FkLFxuICBDaGFydEdQVUhpdFRlc3RSZXN1bHQsXG4gIENoYXJ0R1BVSW5zdGFuY2UsXG4gIENoYXJ0U3luY09wdGlvbnMsXG4gIERhdGFQb2ludCxcbiAgT0hMQ0RhdGFQb2ludCxcbiAgUGlwZWxpbmVDYWNoZSxcbiAgUmVuZGVyTW9kZSxcbn07XG4iXX0=
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Directive, effect, input, output } from '@angular/core';
|
|
2
|
-
import { connectCharts } from 'chartgpu';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class ChartgpuConnectChartsDirective {
|
|
5
|
-
charts = input([], {
|
|
6
|
-
alias: 'libChartgpuConnectCharts',
|
|
7
|
-
});
|
|
8
|
-
syncOptions = input();
|
|
9
|
-
connectionError = output();
|
|
10
|
-
ids = new WeakMap();
|
|
11
|
-
nextId = 1;
|
|
12
|
-
signature;
|
|
13
|
-
constructor() {
|
|
14
|
-
effect(onCleanup => {
|
|
15
|
-
const charts = this.charts();
|
|
16
|
-
const options = this.syncOptions();
|
|
17
|
-
const optionsSignature = options
|
|
18
|
-
? `crosshair=${options.syncCrosshair ?? ''},zoom=${options.syncZoom ?? ''}`
|
|
19
|
-
: '';
|
|
20
|
-
const signature = `${charts.map(chart => {
|
|
21
|
-
if (!chart) {
|
|
22
|
-
return 'null';
|
|
23
|
-
}
|
|
24
|
-
let id = this.ids.get(chart);
|
|
25
|
-
if (id === undefined) {
|
|
26
|
-
id = this.nextId++;
|
|
27
|
-
this.ids.set(chart, id);
|
|
28
|
-
}
|
|
29
|
-
return `${id}:${chart.disposed ? 1 : 0}`;
|
|
30
|
-
}).join('|')}|${optionsSignature}`;
|
|
31
|
-
if (signature === this.signature) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
this.signature = signature;
|
|
35
|
-
if (charts.length === 0 || charts.some(chart => !chart || chart.disposed)) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const resolved = [];
|
|
39
|
-
for (const chart of charts) {
|
|
40
|
-
if (!chart || chart.disposed) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
resolved.push(chart);
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
const disconnect = connectCharts(resolved, options);
|
|
47
|
-
onCleanup(disconnect);
|
|
48
|
-
}
|
|
49
|
-
catch (cause) {
|
|
50
|
-
this.connectionError.emit(cause instanceof Error ? cause : new Error(String(cause)));
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartgpuConnectChartsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: ChartgpuConnectChartsDirective, isStandalone: true, selector: "[libChartgpuConnectCharts]", inputs: { charts: { classPropertyName: "charts", publicName: "libChartgpuConnectCharts", isSignal: true, isRequired: false, transformFunction: null }, syncOptions: { classPropertyName: "syncOptions", publicName: "syncOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { connectionError: "connectionError" }, ngImport: i0 });
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartgpuConnectChartsDirective, decorators: [{
|
|
58
|
-
type: Directive,
|
|
59
|
-
args: [{
|
|
60
|
-
selector: '[libChartgpuConnectCharts]',
|
|
61
|
-
standalone: true,
|
|
62
|
-
}]
|
|
63
|
-
}], ctorParameters: () => [] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1jaGFydHMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhcnRncHUtYW5ndWxhci9zcmMvbGliL2Nvbm5lY3QtY2hhcnRzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBT3pDLE1BQU0sT0FBTyw4QkFBOEI7SUFDaEMsTUFBTSxHQUFHLEtBQUssQ0FBcUQsRUFBRSxFQUFFO1FBQzlFLEtBQUssRUFBRSwwQkFBMEI7S0FDbEMsQ0FBQyxDQUFDO0lBQ00sV0FBVyxHQUFHLEtBQUssRUFBZ0MsQ0FBQztJQUNwRCxlQUFlLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFMUIsR0FBRyxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO0lBQzdDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxTQUFTLENBQXFCO0lBRXRDO1FBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPO2dCQUM5QixDQUFDLENBQUMsYUFBYSxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsU0FBUyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRTtnQkFDM0UsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLE1BQU0sU0FBUyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDO2dCQUVELElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDckIsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO2dCQUNELE9BQU8sR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUVuQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFFM0IsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzFFLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQXVCLEVBQUUsQ0FBQztZQUN4QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDN0IsT0FBTztnQkFDVCxDQUFDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUVELElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNwRCxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEIsQ0FBQztZQUFDLE9BQU8sS0FBYyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXZEVSw4QkFBOEI7NEZBQTlCLDhCQUE4Qjs7NEZBQTlCLDhCQUE4QjtrQkFKMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29ubmVjdENoYXJ0cyB9IGZyb20gJ2NoYXJ0Z3B1JztcbmltcG9ydCB0eXBlIHsgQ2hhcnRHUFVJbnN0YW5jZSwgQ2hhcnRTeW5jT3B0aW9ucyB9IGZyb20gJ2NoYXJ0Z3B1JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2xpYkNoYXJ0Z3B1Q29ubmVjdENoYXJ0c10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydGdwdUNvbm5lY3RDaGFydHNEaXJlY3RpdmUge1xuICByZWFkb25seSBjaGFydHMgPSBpbnB1dDxSZWFkb25seUFycmF5PENoYXJ0R1BVSW5zdGFuY2UgfCBudWxsIHwgdW5kZWZpbmVkPj4oW10sIHtcbiAgICBhbGlhczogJ2xpYkNoYXJ0Z3B1Q29ubmVjdENoYXJ0cycsXG4gIH0pO1xuICByZWFkb25seSBzeW5jT3B0aW9ucyA9IGlucHV0PENoYXJ0U3luY09wdGlvbnMgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25FcnJvciA9IG91dHB1dDxFcnJvcj4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlkcyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgbnVtYmVyPigpO1xuICBwcml2YXRlIG5leHRJZCA9IDE7XG4gIHByaXZhdGUgc2lnbmF0dXJlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KG9uQ2xlYW51cCA9PiB7XG4gICAgICBjb25zdCBjaGFydHMgPSB0aGlzLmNoYXJ0cygpO1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuc3luY09wdGlvbnMoKTtcbiAgICAgIGNvbnN0IG9wdGlvbnNTaWduYXR1cmUgPSBvcHRpb25zXG4gICAgICAgID8gYGNyb3NzaGFpcj0ke29wdGlvbnMuc3luY0Nyb3NzaGFpciA/PyAnJ30sem9vbT0ke29wdGlvbnMuc3luY1pvb20gPz8gJyd9YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlID0gYCR7Y2hhcnRzLm1hcChjaGFydCA9PiB7XG4gICAgICAgIGlmICghY2hhcnQpIHtcbiAgICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlkID0gdGhpcy5pZHMuZ2V0KGNoYXJ0KTtcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZCA9IHRoaXMubmV4dElkKys7XG4gICAgICAgICAgdGhpcy5pZHMuc2V0KGNoYXJ0LCBpZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke2lkfToke2NoYXJ0LmRpc3Bvc2VkID8gMSA6IDB9YDtcbiAgICAgIH0pLmpvaW4oJ3wnKX18JHtvcHRpb25zU2lnbmF0dXJlfWA7XG5cbiAgICAgIGlmIChzaWduYXR1cmUgPT09IHRoaXMuc2lnbmF0dXJlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuXG4gICAgICBpZiAoY2hhcnRzLmxlbmd0aCA9PT0gMCB8fCBjaGFydHMuc29tZShjaGFydCA9PiAhY2hhcnQgfHwgY2hhcnQuZGlzcG9zZWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzb2x2ZWQ6IENoYXJ0R1BVSW5zdGFuY2VbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjaGFydCBvZiBjaGFydHMpIHtcbiAgICAgICAgaWYgKCFjaGFydCB8fCBjaGFydC5kaXNwb3NlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlZC5wdXNoKGNoYXJ0KTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGlzY29ubmVjdCA9IGNvbm5lY3RDaGFydHMocmVzb2x2ZWQsIG9wdGlvbnMpO1xuICAgICAgICBvbkNsZWFudXAoZGlzY29ubmVjdCk7XG4gICAgICB9IGNhdGNoIChjYXVzZTogdW5rbm93bikge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25FcnJvci5lbWl0KGNhdXNlIGluc3RhbmNlb2YgRXJyb3IgPyBjYXVzZSA6IG5ldyBFcnJvcihTdHJpbmcoY2F1c2UpKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { makeEnvironmentProviders } from '@angular/core';
|
|
2
|
-
import { ChartgpuGPUContextService } from './gpu-context.service';
|
|
3
|
-
export function provideChartGpuContext() {
|
|
4
|
-
return makeEnvironmentProviders([ChartgpuGPUContextService]);
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3B1LWNvbnRleHQucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFydGdwdS1hbmd1bGFyL3NyYy9saWIvZ3B1LWNvbnRleHQucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydGdwdUdQVUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9ncHUtY29udGV4dC5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVDaGFydEdwdUNvbnRleHQoKSB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW0NoYXJ0Z3B1R1BVQ29udGV4dFNlcnZpY2VdKTtcbn0iXX0=
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Injectable, computed, signal } from '@angular/core';
|
|
2
|
-
import { createPipelineCache } from 'chartgpu';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
const INITIAL_STATE = {
|
|
5
|
-
adapter: null,
|
|
6
|
-
device: null,
|
|
7
|
-
pipelineCache: null,
|
|
8
|
-
error: null,
|
|
9
|
-
isReady: false,
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Creates one shared WebGPU context and pipeline cache for charts in a dashboard.
|
|
13
|
-
* The device is intentionally not destroyed with the service so charts can share it
|
|
14
|
-
* for the lifetime of the application.
|
|
15
|
-
*/
|
|
16
|
-
export class ChartgpuGPUContextService {
|
|
17
|
-
state = signal(INITIAL_STATE);
|
|
18
|
-
context = computed(() => {
|
|
19
|
-
const state = this.state();
|
|
20
|
-
if (!state.adapter || !state.device || !state.pipelineCache) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return {
|
|
24
|
-
adapter: state.adapter,
|
|
25
|
-
device: state.device,
|
|
26
|
-
pipelineCache: state.pipelineCache,
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
initialization;
|
|
30
|
-
initialize() {
|
|
31
|
-
if (!this.initialization) {
|
|
32
|
-
this.initialization = this.createContext();
|
|
33
|
-
}
|
|
34
|
-
return this.initialization;
|
|
35
|
-
}
|
|
36
|
-
async createContext() {
|
|
37
|
-
try {
|
|
38
|
-
if (typeof navigator === 'undefined' || !('gpu' in navigator)) {
|
|
39
|
-
throw new Error('WebGPU not supported in this browser');
|
|
40
|
-
}
|
|
41
|
-
const gpu = navigator.gpu;
|
|
42
|
-
if (!gpu) {
|
|
43
|
-
throw new Error('WebGPU not supported in this browser');
|
|
44
|
-
}
|
|
45
|
-
const adapter = await gpu.requestAdapter({ powerPreference: 'high-performance' });
|
|
46
|
-
if (!adapter) {
|
|
47
|
-
const error = new Error('WebGPU is not available. No compatible GPUAdapter was found.');
|
|
48
|
-
const state = { ...INITIAL_STATE, error };
|
|
49
|
-
this.state.set(state);
|
|
50
|
-
return state;
|
|
51
|
-
}
|
|
52
|
-
const device = await adapter.requestDevice();
|
|
53
|
-
const pipelineCache = createPipelineCache(device);
|
|
54
|
-
const state = {
|
|
55
|
-
adapter,
|
|
56
|
-
device,
|
|
57
|
-
pipelineCache,
|
|
58
|
-
error: null,
|
|
59
|
-
isReady: true,
|
|
60
|
-
};
|
|
61
|
-
this.state.set(state);
|
|
62
|
-
return state;
|
|
63
|
-
}
|
|
64
|
-
catch (cause) {
|
|
65
|
-
const error = cause instanceof Error ? cause : new Error(String(cause));
|
|
66
|
-
const state = { ...INITIAL_STATE, error };
|
|
67
|
-
this.state.set(state);
|
|
68
|
-
return state;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartgpuGPUContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartgpuGPUContextService, providedIn: 'root' });
|
|
73
|
-
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartgpuGPUContextService, decorators: [{
|
|
75
|
-
type: Injectable,
|
|
76
|
-
args: [{ providedIn: 'root' }]
|
|
77
|
-
}] });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3B1LWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXJ0Z3B1LWFuZ3VsYXIvc3JjL2xpYi9ncHUtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBSS9DLE1BQU0sYUFBYSxHQUE0QjtJQUM3QyxPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxJQUFJO0lBQ1osYUFBYSxFQUFFLElBQUk7SUFDbkIsS0FBSyxFQUFFLElBQUk7SUFDWCxPQUFPLEVBQUUsS0FBSztDQUNmLENBQUM7QUFFRjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHlCQUF5QjtJQUMzQixLQUFLLEdBQUcsTUFBTSxDQUEwQixhQUFhLENBQUMsQ0FBQztJQUN2RCxPQUFPLEdBQUcsUUFBUSxDQUErQixHQUFHLEVBQUU7UUFDN0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7U0FDbkMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUssY0FBYyxDQUFvQztJQUUxRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYTtRQUN6QixJQUFJLENBQUM7WUFDSCxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBRUQsTUFBTSxHQUFHLEdBQUksU0FNWCxDQUFDLEdBQUcsQ0FBQztZQUNQLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7Z0JBQ3hGLE1BQU0sS0FBSyxHQUE0QixFQUFFLEdBQUcsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsTUFBTSxLQUFLLEdBQTRCO2dCQUNyQyxPQUFPO2dCQUNQLE1BQU07Z0JBQ04sYUFBYTtnQkFDYixLQUFLLEVBQUUsSUFBSTtnQkFDWCxPQUFPLEVBQUUsSUFBSTthQUNkLENBQUM7WUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEUsTUFBTSxLQUFLLEdBQTRCLEVBQUUsR0FBRyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzt3R0FsRVUseUJBQXlCOzRHQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZVBpcGVsaW5lQ2FjaGUgfSBmcm9tICdjaGFydGdwdSc7XG5pbXBvcnQgdHlwZSB7IENoYXJ0R1BVQ3JlYXRlQ29udGV4dCB9IGZyb20gJ2NoYXJ0Z3B1JztcbmltcG9ydCB0eXBlIHsgQ2hhcnRncHVHUFVDb250ZXh0U3RhdGUgfSBmcm9tICcuL2NoYXJ0Z3B1LWFuZ3VsYXIudHlwZXMnO1xuXG5jb25zdCBJTklUSUFMX1NUQVRFOiBDaGFydGdwdUdQVUNvbnRleHRTdGF0ZSA9IHtcbiAgYWRhcHRlcjogbnVsbCxcbiAgZGV2aWNlOiBudWxsLFxuICBwaXBlbGluZUNhY2hlOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgaXNSZWFkeTogZmFsc2UsXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgb25lIHNoYXJlZCBXZWJHUFUgY29udGV4dCBhbmQgcGlwZWxpbmUgY2FjaGUgZm9yIGNoYXJ0cyBpbiBhIGRhc2hib2FyZC5cbiAqIFRoZSBkZXZpY2UgaXMgaW50ZW50aW9uYWxseSBub3QgZGVzdHJveWVkIHdpdGggdGhlIHNlcnZpY2Ugc28gY2hhcnRzIGNhbiBzaGFyZSBpdFxuICogZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ2hhcnRncHVHUFVDb250ZXh0U2VydmljZSB7XG4gIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsPENoYXJ0Z3B1R1BVQ29udGV4dFN0YXRlPihJTklUSUFMX1NUQVRFKTtcbiAgcmVhZG9ubHkgY29udGV4dCA9IGNvbXB1dGVkPENoYXJ0R1BVQ3JlYXRlQ29udGV4dCB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGUoKTtcbiAgICBpZiAoIXN0YXRlLmFkYXB0ZXIgfHwgIXN0YXRlLmRldmljZSB8fCAhc3RhdGUucGlwZWxpbmVDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFkYXB0ZXI6IHN0YXRlLmFkYXB0ZXIsXG4gICAgICBkZXZpY2U6IHN0YXRlLmRldmljZSxcbiAgICAgIHBpcGVsaW5lQ2FjaGU6IHN0YXRlLnBpcGVsaW5lQ2FjaGUsXG4gICAgfTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXphdGlvbj86IFByb21pc2U8Q2hhcnRncHVHUFVDb250ZXh0U3RhdGU+O1xuXG4gIGluaXRpYWxpemUoKTogUHJvbWlzZTxDaGFydGdwdUdQVUNvbnRleHRTdGF0ZT4ge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXphdGlvbikge1xuICAgICAgdGhpcy5pbml0aWFsaXphdGlvbiA9IHRoaXMuY3JlYXRlQ29udGV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ29udGV4dCgpOiBQcm9taXNlPENoYXJ0Z3B1R1BVQ29udGV4dFN0YXRlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJyB8fCAhKCdncHUnIGluIG5hdmlnYXRvcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJHUFUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXInKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ3B1ID0gKG5hdmlnYXRvciBhcyBOYXZpZ2F0b3IgJiB7XG4gICAgICAgIGdwdT86IHtcbiAgICAgICAgICByZXF1ZXN0QWRhcHRlcihvcHRpb25zOiB7XG4gICAgICAgICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJztcbiAgICAgICAgICB9KTogUHJvbWlzZTxDaGFydEdQVUNyZWF0ZUNvbnRleHRbJ2FkYXB0ZXInXSB8IG51bGw+O1xuICAgICAgICB9O1xuICAgICAgfSkuZ3B1O1xuICAgICAgaWYgKCFncHUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJHUFUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXInKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IGdwdS5yZXF1ZXN0QWRhcHRlcih7IHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnIH0pO1xuICAgICAgaWYgKCFhZGFwdGVyKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdXZWJHUFUgaXMgbm90IGF2YWlsYWJsZS4gTm8gY29tcGF0aWJsZSBHUFVBZGFwdGVyIHdhcyBmb3VuZC4nKTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IENoYXJ0Z3B1R1BVQ29udGV4dFN0YXRlID0geyAuLi5JTklUSUFMX1NUQVRFLCBlcnJvciB9O1xuICAgICAgICB0aGlzLnN0YXRlLnNldChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7XG4gICAgICBjb25zdCBwaXBlbGluZUNhY2hlID0gY3JlYXRlUGlwZWxpbmVDYWNoZShkZXZpY2UpO1xuICAgICAgY29uc3Qgc3RhdGU6IENoYXJ0Z3B1R1BVQ29udGV4dFN0YXRlID0ge1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBkZXZpY2UsXG4gICAgICAgIHBpcGVsaW5lQ2FjaGUsXG4gICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICBpc1JlYWR5OiB0cnVlLFxuICAgICAgfTtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KHN0YXRlKTtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9IGNhdGNoIChjYXVzZTogdW5rbm93bikge1xuICAgICAgY29uc3QgZXJyb3IgPSBjYXVzZSBpbnN0YW5jZW9mIEVycm9yID8gY2F1c2UgOiBuZXcgRXJyb3IoU3RyaW5nKGNhdXNlKSk7XG4gICAgICBjb25zdCBzdGF0ZTogQ2hhcnRncHVHUFVDb250ZXh0U3RhdGUgPSB7IC4uLklOSVRJQUxfU1RBVEUsIGVycm9yIH07XG4gICAgICB0aGlzLnN0YXRlLnNldChzdGF0ZSk7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './lib/chartgpu-angular.component';
|
|
2
|
-
export * from './lib/chartgpu-angular.types';
|
|
3
|
-
export * from './lib/connect-charts.directive';
|
|
4
|
-
export * from './lib/gpu-context.provider';
|
|
5
|
-
export * from './lib/gpu-context.service';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NoYXJ0Z3B1LWFuZ3VsYXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnRncHUtYW5ndWxhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnRncHUtYW5ndWxhci50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25uZWN0LWNoYXJ0cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3B1LWNvbnRleHQucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3B1LWNvbnRleHQuc2VydmljZSc7XG4iXX0=
|