chartgpu-angular 18.0.0 → 19.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 +10 -10
- package/fesm2022/chartgpu-angular.mjs.map +1 -1
- package/lib/chartgpu-angular.component.d.ts +14 -23
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgStyle } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { input, output, viewChild, signal, afterNextRender, effect, untracked,
|
|
3
|
+
import { input, output, viewChild, signal, afterNextRender, effect, untracked, ChangeDetectionStrategy, Component, Directive, computed, Injectable, makeEnvironmentProviders } from '@angular/core';
|
|
4
4
|
import { ChartGPU, connectCharts, createPipelineCache } from 'chartgpu';
|
|
5
5
|
|
|
6
6
|
class ChartGpuAngularComponent {
|
|
@@ -253,8 +253,8 @@ class ChartGpuAngularComponent {
|
|
|
253
253
|
this.chartContainer = undefined;
|
|
254
254
|
this.createdWithOptions = undefined;
|
|
255
255
|
}
|
|
256
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
257
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartGpuAngularComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
257
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", 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: `
|
|
258
258
|
<div
|
|
259
259
|
#host
|
|
260
260
|
class="chartgpu-host"
|
|
@@ -269,7 +269,7 @@ class ChartGpuAngularComponent {
|
|
|
269
269
|
</div>
|
|
270
270
|
`, 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 });
|
|
271
271
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartGpuAngularComponent, decorators: [{
|
|
273
273
|
type: Component,
|
|
274
274
|
args: [{ selector: 'lib-chartgpu-angular', standalone: true, imports: [NgStyle], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'chartgpu-angular' }, template: `
|
|
275
275
|
<div
|
|
@@ -337,10 +337,10 @@ class ChartgpuConnectChartsDirective {
|
|
|
337
337
|
}
|
|
338
338
|
});
|
|
339
339
|
}
|
|
340
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
341
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
340
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartgpuConnectChartsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
341
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", 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 });
|
|
342
342
|
}
|
|
343
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
343
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartgpuConnectChartsDirective, decorators: [{
|
|
344
344
|
type: Directive,
|
|
345
345
|
args: [{
|
|
346
346
|
selector: '[libChartgpuConnectCharts]',
|
|
@@ -415,10 +415,10 @@ class ChartgpuGPUContextService {
|
|
|
415
415
|
return state;
|
|
416
416
|
}
|
|
417
417
|
}
|
|
418
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
419
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
418
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartgpuGPUContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
419
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartgpuGPUContextService, providedIn: 'root' });
|
|
420
420
|
}
|
|
421
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChartgpuGPUContextService, decorators: [{
|
|
422
422
|
type: Injectable,
|
|
423
423
|
args: [{ providedIn: 'root' }]
|
|
424
424
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartgpu-angular.mjs","sources":["../../../projects/chartgpu-angular/src/lib/chartgpu-angular.component.ts","../../../projects/chartgpu-angular/src/lib/connect-charts.directive.ts","../../../projects/chartgpu-angular/src/lib/gpu-context.service.ts","../../../projects/chartgpu-angular/src/lib/gpu-context.provider.ts","../../../projects/chartgpu-angular/src/chartgpu-angular.ts"],"sourcesContent":["import { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n afterNextRender,\n effect,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport {\n ChartGPU,\n type ChartGPUCrosshairMovePayload,\n type ChartGPUDeviceLostPayload,\n type ChartGPUEventPayload,\n type ChartGPUInstance,\n type ChartGPUZoomRangeChangePayload,\n type OHLCDataPoint,\n} from 'chartgpu';\nimport type {\n ChartgpuAppendDataOptions,\n ChartgpuCartesianSeriesData,\n ChartgpuChartHandle,\n ChartgpuClickEvent,\n ChartgpuDataAppendEvent,\n ChartgpuGPUContext,\n ChartgpuOptions,\n ChartgpuReadyEvent,\n ChartgpuResizeEvent,\n ChartgpuStyle,\n ChartgpuZoomChangeEvent,\n ChartgpuZoomRangeChangeEvent,\n} from './chartgpu-angular.types';\n\n@Component({\n selector: 'lib-chartgpu-angular',\n standalone: true,\n imports: [NgStyle],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'chartgpu-angular' },\n template: `\n <div\n #host\n class=\"chartgpu-host\"\n [class]=\"className() ?? ''\"\n [ngStyle]=\"style()\"\n (click)=\"emitClick($event)\"\n >\n <div #canvasHost class=\"chartgpu-canvas-host\"></div>\n @if (initializationError(); as error) {\n <div class=\"chartgpu-error\" role=\"alert\">{{ error.message }}</div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .chartgpu-host {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .chartgpu-canvas-host {\n position: absolute;\n inset: 0;\n }\n\n .chartgpu-error {\n position: absolute;\n inset: 0;\n display: grid;\n place-items: center;\n padding: 1rem;\n text-align: center;\n }\n `],\n})\nexport class ChartGpuAngularComponent implements ChartgpuChartHandle, OnDestroy {\n readonly options = input.required<ChartgpuOptions>();\n readonly gpuContext = input<ChartgpuGPUContext | null>(null);\n readonly theme = input<ChartgpuOptions['theme'] | undefined>(undefined);\n readonly className = input<string | undefined>();\n readonly style = input<ChartgpuStyle | undefined>();\n\n readonly ready = output<ChartgpuReadyEvent>();\n readonly chartReady = output<ChartGPUInstance>();\n readonly chartDispose = output<void>();\n readonly resize = output<ChartgpuResizeEvent>();\n readonly click = output<ChartgpuClickEvent>();\n readonly chartClick = output<ChartGPUEventPayload>();\n readonly mouseOver = output<ChartGPUEventPayload>();\n readonly mouseOut = output<ChartGPUEventPayload>();\n readonly crosshairMove = output<ChartGPUCrosshairMovePayload>();\n readonly dataAppend = output<ChartgpuDataAppendEvent>();\n readonly zoomChange = output<ChartgpuZoomChangeEvent>();\n readonly zoomRangeChange = output<ChartgpuZoomRangeChangeEvent>();\n readonly deviceLost = output<ChartGPUDeviceLostPayload>();\n readonly chartError = output<Error>();\n\n readonly host = viewChild<ElementRef<HTMLDivElement>>('host');\n readonly canvasHost = viewChild<ElementRef<HTMLDivElement>>('canvasHost');\n\n private readonly chartInstance = signal<ChartGPUInstance | null>(null);\n readonly initializationError = signal<Error | null>(null);\n private chartContainer?: HTMLDivElement;\n private createdWithOptions?: {\n options: ChartgpuOptions;\n theme: ChartgpuOptions['theme'] | undefined;\n };\n private resizeTimeout?: ReturnType<typeof setTimeout>;\n private resizeObserver?: ResizeObserver;\n private removeChartListeners?: () => void;\n private destroying = false;\n\n constructor(private readonly destroyRef: DestroyRef) {\n this.destroyRef.onDestroy(() => {\n this.resizeObserver?.disconnect();\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n this.disposeChart();\n });\n\n afterNextRender(() => {\n const container = this.host()?.nativeElement;\n if (container) {\n this.observeResize(container);\n }\n });\n\n effect(onCleanup => {\n const container = this.canvasHost()?.nativeElement;\n const options = this.options();\n const gpuContext = this.gpuContext();\n const theme = this.theme();\n\n this.initializationError.set(null);\n if (!container) {\n this.disposeChart();\n return;\n }\n if (typeof navigator === 'undefined' || !('gpu' in navigator)) {\n this.reportError(new Error('WebGPU not supported in this browser'));\n return;\n }\n\n if (untracked(() => this.chartInstance()) && this.chartContainer === container) {\n return;\n }\n\n let cancelled = false;\n let createdInstance: ChartGPUInstance | undefined;\n const initialOptions = this.getEffectiveOptions(options, theme);\n\n void (gpuContext\n ? ChartGPU.create(container, initialOptions, gpuContext)\n : ChartGPU.create(container, initialOptions)\n ).then(instance => {\n createdInstance = instance;\n if (cancelled) {\n instance.dispose();\n return;\n }\n\n try {\n const latest = untracked(() => ({\n options: this.options(),\n theme: this.theme(),\n }));\n if (latest.options !== options || latest.theme !== theme) {\n instance.setOption(this.getEffectiveOptions(latest.options, latest.theme));\n }\n\n this.createdWithOptions = latest;\n this.chartContainer = container;\n this.chartInstance.set(instance);\n this.removeChartListeners = this.listenToChart(instance);\n this.ready.emit({ container });\n this.chartReady.emit(instance);\n\n const range = instance.getZoomRange();\n if (range) {\n this.emitZoomRange(range);\n }\n } catch (cause: unknown) {\n instance.dispose();\n throw cause;\n }\n }).catch((cause: unknown) => {\n if (cancelled) {\n return;\n }\n if (createdInstance && this.chartInstance() !== createdInstance && !createdInstance.disposed) {\n createdInstance.dispose();\n }\n this.reportError(cause);\n });\n\n onCleanup(() => {\n cancelled = true;\n if (this.chartContainer === container) {\n this.disposeChart();\n }\n });\n }, { allowSignalWrites: true });\n\n effect(() => {\n const options = this.options();\n const theme = this.theme();\n const instance = this.chartInstance();\n if (!instance || instance.disposed) {\n return;\n }\n\n if (this.createdWithOptions?.options === options && this.createdWithOptions.theme === theme) {\n this.createdWithOptions = undefined;\n return;\n }\n\n try {\n instance.setOption(this.getEffectiveOptions(options, theme));\n } catch (cause: unknown) {\n this.reportError(cause);\n }\n }, { allowSignalWrites: true });\n }\n\n protected emitClick(event: MouseEvent): void {\n this.click.emit({ x: event.offsetX, y: event.offsetY });\n }\n\n ngOnDestroy(): void {\n this.destroying = true;\n }\n\n getChart(): ChartGPUInstance | null {\n const instance = this.chartInstance();\n return instance && !instance.disposed ? instance : null;\n }\n\n getContainer(): HTMLDivElement | null {\n return this.canvasHost()?.nativeElement ?? null;\n }\n\n appendData(\n seriesIndex: number,\n newPoints: ChartgpuCartesianSeriesData | OHLCDataPoint[],\n options?: ChartgpuAppendDataOptions,\n ): void {\n this.getChart()?.appendData(seriesIndex, newPoints, options);\n }\n\n renderFrame(): boolean {\n return this.getChart()?.renderFrame() ?? false;\n }\n\n needsRender(): boolean {\n return this.getChart()?.needsRender() ?? false;\n }\n\n getRenderMode(): 'auto' | 'external' {\n return this.getChart()?.getRenderMode() ?? 'auto';\n }\n\n setRenderMode(mode: 'auto' | 'external'): void {\n this.getChart()?.setRenderMode(mode);\n }\n\n setOption(options: ChartgpuOptions): void {\n this.getChart()?.setOption(options);\n }\n\n setZoomRange(start: number, end: number, source?: unknown): void {\n this.getChart()?.setZoomRange(start, end, source);\n }\n\n setInteractionX(x: number | null, source?: unknown): void {\n this.getChart()?.setInteractionX(x, source);\n }\n\n getInteractionX(): number | null {\n return this.getChart()?.getInteractionX() ?? null;\n }\n\n hitTest(event: PointerEvent | MouseEvent) {\n return this.getChart()?.hitTest(event) ?? null;\n }\n\n private getEffectiveOptions(\n options: ChartgpuOptions,\n theme: ChartgpuOptions['theme'] | undefined,\n ): ChartgpuOptions {\n return theme !== undefined ? { ...options, theme } : options;\n }\n\n private listenToChart(instance: ChartGPUInstance): () => void {\n const click = (payload: ChartGPUEventPayload) => this.chartClick.emit(payload);\n const mouseOver = (payload: ChartGPUEventPayload) => this.mouseOver.emit(payload);\n const mouseOut = (payload: ChartGPUEventPayload) => this.mouseOut.emit(payload);\n const crosshairMove = (payload: ChartGPUCrosshairMovePayload) => this.crosshairMove.emit(payload);\n const dataAppend = (payload: ChartgpuDataAppendEvent) => this.dataAppend.emit(payload);\n const zoomChange = (payload: ChartGPUZoomRangeChangePayload) => this.emitZoomRange(payload);\n const deviceLost = (payload: ChartGPUDeviceLostPayload) => this.deviceLost.emit(payload);\n\n instance.on('click', click);\n instance.on('mouseover', mouseOver);\n instance.on('mouseout', mouseOut);\n instance.on('crosshairMove', crosshairMove);\n instance.on('dataAppend', dataAppend);\n instance.on('zoomRangeChange', zoomChange);\n instance.on('deviceLost', deviceLost);\n\n return () => {\n if (instance.disposed) {\n return;\n }\n instance.off('click', click);\n instance.off('mouseover', mouseOver);\n instance.off('mouseout', mouseOut);\n instance.off('crosshairMove', crosshairMove);\n instance.off('dataAppend', dataAppend);\n instance.off('zoomRangeChange', zoomChange);\n instance.off('deviceLost', deviceLost);\n };\n }\n\n private emitZoomRange(range: { start: number; end: number }): void {\n this.zoomChange.emit({ range: { start: range.start, end: range.end } });\n this.zoomRangeChange.emit({ start: range.start, end: range.end });\n }\n\n private observeResize(container: HTMLDivElement): void {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n this.resizeObserver = new ResizeObserver(entries => {\n const entry = entries[0];\n if (!entry) {\n return;\n }\n const { width, height } = entry.contentRect;\n this.resize.emit({ width, height, container });\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.chartInstance()?.resize();\n this.resizeTimeout = undefined;\n }, 100);\n });\n this.resizeObserver.observe(container);\n }\n\n private reportError(cause: unknown): void {\n const error = cause instanceof Error ? cause : new Error(String(cause));\n this.initializationError.set(error);\n this.chartError.emit(error);\n }\n\n private disposeChart(): void {\n const instance = this.chartInstance();\n this.removeChartListeners?.();\n this.removeChartListeners = undefined;\n if (instance && !instance.disposed) {\n instance.dispose();\n if (!this.destroying) {\n this.chartDispose.emit();\n }\n }\n this.chartInstance.set(null);\n this.chartContainer = undefined;\n this.createdWithOptions = undefined;\n }\n}\n","import { Directive, effect, input, output } from '@angular/core';\nimport { connectCharts } from 'chartgpu';\nimport type { ChartGPUInstance, ChartSyncOptions } from 'chartgpu';\n\n@Directive({\n selector: '[libChartgpuConnectCharts]',\n standalone: true,\n})\nexport class ChartgpuConnectChartsDirective {\n readonly charts = input<ReadonlyArray<ChartGPUInstance | null | undefined>>([], {\n alias: 'libChartgpuConnectCharts',\n });\n readonly syncOptions = input<ChartSyncOptions | undefined>();\n readonly connectionError = output<Error>();\n\n private readonly ids = new WeakMap<object, number>();\n private nextId = 1;\n private signature: string | undefined;\n\n constructor() {\n effect(onCleanup => {\n const charts = this.charts();\n const options = this.syncOptions();\n const optionsSignature = options\n ? `crosshair=${options.syncCrosshair ?? ''},zoom=${options.syncZoom ?? ''}`\n : '';\n const signature = `${charts.map(chart => {\n if (!chart) {\n return 'null';\n }\n\n let id = this.ids.get(chart);\n if (id === undefined) {\n id = this.nextId++;\n this.ids.set(chart, id);\n }\n return `${id}:${chart.disposed ? 1 : 0}`;\n }).join('|')}|${optionsSignature}`;\n\n if (signature === this.signature) {\n return;\n }\n this.signature = signature;\n\n if (charts.length === 0 || charts.some(chart => !chart || chart.disposed)) {\n return;\n }\n\n const resolved: ChartGPUInstance[] = [];\n for (const chart of charts) {\n if (!chart || chart.disposed) {\n return;\n }\n resolved.push(chart);\n }\n\n try {\n const disconnect = connectCharts(resolved, options);\n onCleanup(disconnect);\n } catch (cause: unknown) {\n this.connectionError.emit(cause instanceof Error ? cause : new Error(String(cause)));\n }\n });\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { createPipelineCache } from 'chartgpu';\nimport type { ChartGPUCreateContext } from 'chartgpu';\nimport type { ChartgpuGPUContextState } from './chartgpu-angular.types';\n\nconst INITIAL_STATE: ChartgpuGPUContextState = {\n adapter: null,\n device: null,\n pipelineCache: null,\n error: null,\n isReady: false,\n};\n\n/**\n * Creates one shared WebGPU context and pipeline cache for charts in a dashboard.\n * The device is intentionally not destroyed with the service so charts can share it\n * for the lifetime of the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class ChartgpuGPUContextService {\n readonly state = signal<ChartgpuGPUContextState>(INITIAL_STATE);\n readonly context = computed<ChartGPUCreateContext | null>(() => {\n const state = this.state();\n if (!state.adapter || !state.device || !state.pipelineCache) {\n return null;\n }\n\n return {\n adapter: state.adapter,\n device: state.device,\n pipelineCache: state.pipelineCache,\n };\n });\n\n private initialization?: Promise<ChartgpuGPUContextState>;\n\n initialize(): Promise<ChartgpuGPUContextState> {\n if (!this.initialization) {\n this.initialization = this.createContext();\n }\n return this.initialization;\n }\n\n private async createContext(): Promise<ChartgpuGPUContextState> {\n try {\n if (typeof navigator === 'undefined' || !('gpu' in navigator)) {\n throw new Error('WebGPU not supported in this browser');\n }\n\n const gpu = (navigator as Navigator & {\n gpu?: {\n requestAdapter(options: {\n powerPreference: 'high-performance';\n }): Promise<ChartGPUCreateContext['adapter'] | null>;\n };\n }).gpu;\n if (!gpu) {\n throw new Error('WebGPU not supported in this browser');\n }\n\n const adapter = await gpu.requestAdapter({ powerPreference: 'high-performance' });\n if (!adapter) {\n const error = new Error('WebGPU is not available. No compatible GPUAdapter was found.');\n const state: ChartgpuGPUContextState = { ...INITIAL_STATE, error };\n this.state.set(state);\n return state;\n }\n\n const device = await adapter.requestDevice();\n const pipelineCache = createPipelineCache(device);\n const state: ChartgpuGPUContextState = {\n adapter,\n device,\n pipelineCache,\n error: null,\n isReady: true,\n };\n this.state.set(state);\n return state;\n } catch (cause: unknown) {\n const error = cause instanceof Error ? cause : new Error(String(cause));\n const state: ChartgpuGPUContextState = { ...INITIAL_STATE, error };\n this.state.set(state);\n return state;\n }\n }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { ChartgpuGPUContextService } from './gpu-context.service';\n\nexport function provideChartGpuContext() {\n return makeEnvironmentProviders([ChartgpuGPUContextService]);\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chartgpu-angular.mjs","sources":["../../../projects/chartgpu-angular/src/lib/chartgpu-angular.component.ts","../../../projects/chartgpu-angular/src/lib/connect-charts.directive.ts","../../../projects/chartgpu-angular/src/lib/gpu-context.service.ts","../../../projects/chartgpu-angular/src/lib/gpu-context.provider.ts","../../../projects/chartgpu-angular/src/chartgpu-angular.ts"],"sourcesContent":["import { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n afterNextRender,\n effect,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport {\n ChartGPU,\n type ChartGPUCrosshairMovePayload,\n type ChartGPUDeviceLostPayload,\n type ChartGPUEventPayload,\n type ChartGPUInstance,\n type ChartGPUZoomRangeChangePayload,\n type OHLCDataPoint,\n} from 'chartgpu';\nimport type {\n ChartgpuAppendDataOptions,\n ChartgpuCartesianSeriesData,\n ChartgpuChartHandle,\n ChartgpuClickEvent,\n ChartgpuDataAppendEvent,\n ChartgpuGPUContext,\n ChartgpuOptions,\n ChartgpuReadyEvent,\n ChartgpuResizeEvent,\n ChartgpuStyle,\n ChartgpuZoomChangeEvent,\n ChartgpuZoomRangeChangeEvent,\n} from './chartgpu-angular.types';\n\n@Component({\n selector: 'lib-chartgpu-angular',\n standalone: true,\n imports: [NgStyle],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'chartgpu-angular' },\n template: `\n <div\n #host\n class=\"chartgpu-host\"\n [class]=\"className() ?? ''\"\n [ngStyle]=\"style()\"\n (click)=\"emitClick($event)\"\n >\n <div #canvasHost class=\"chartgpu-canvas-host\"></div>\n @if (initializationError(); as error) {\n <div class=\"chartgpu-error\" role=\"alert\">{{ error.message }}</div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .chartgpu-host {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .chartgpu-canvas-host {\n position: absolute;\n inset: 0;\n }\n\n .chartgpu-error {\n position: absolute;\n inset: 0;\n display: grid;\n place-items: center;\n padding: 1rem;\n text-align: center;\n }\n `],\n})\nexport class ChartGpuAngularComponent implements ChartgpuChartHandle, OnDestroy {\n readonly options = input.required<ChartgpuOptions>();\n readonly gpuContext = input<ChartgpuGPUContext | null>(null);\n readonly theme = input<ChartgpuOptions['theme'] | undefined>(undefined);\n readonly className = input<string | undefined>();\n readonly style = input<ChartgpuStyle | undefined>();\n\n readonly ready = output<ChartgpuReadyEvent>();\n readonly chartReady = output<ChartGPUInstance>();\n readonly chartDispose = output<void>();\n readonly resize = output<ChartgpuResizeEvent>();\n readonly click = output<ChartgpuClickEvent>();\n readonly chartClick = output<ChartGPUEventPayload>();\n readonly mouseOver = output<ChartGPUEventPayload>();\n readonly mouseOut = output<ChartGPUEventPayload>();\n readonly crosshairMove = output<ChartGPUCrosshairMovePayload>();\n readonly dataAppend = output<ChartgpuDataAppendEvent>();\n readonly zoomChange = output<ChartgpuZoomChangeEvent>();\n readonly zoomRangeChange = output<ChartgpuZoomRangeChangeEvent>();\n readonly deviceLost = output<ChartGPUDeviceLostPayload>();\n readonly chartError = output<Error>();\n\n readonly host = viewChild<ElementRef<HTMLDivElement>>('host');\n readonly canvasHost = viewChild<ElementRef<HTMLDivElement>>('canvasHost');\n\n private readonly chartInstance = signal<ChartGPUInstance | null>(null);\n readonly initializationError = signal<Error | null>(null);\n private chartContainer?: HTMLDivElement;\n private createdWithOptions?: {\n options: ChartgpuOptions;\n theme: ChartgpuOptions['theme'] | undefined;\n };\n private resizeTimeout?: ReturnType<typeof setTimeout>;\n private resizeObserver?: ResizeObserver;\n private removeChartListeners?: () => void;\n private destroying = false;\n\n constructor(private readonly destroyRef: DestroyRef) {\n this.destroyRef.onDestroy(() => {\n this.resizeObserver?.disconnect();\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n this.disposeChart();\n });\n\n afterNextRender(() => {\n const container = this.host()?.nativeElement;\n if (container) {\n this.observeResize(container);\n }\n });\n\n effect(onCleanup => {\n const container = this.canvasHost()?.nativeElement;\n const options = this.options();\n const gpuContext = this.gpuContext();\n const theme = this.theme();\n\n this.initializationError.set(null);\n if (!container) {\n this.disposeChart();\n return;\n }\n if (typeof navigator === 'undefined' || !('gpu' in navigator)) {\n this.reportError(new Error('WebGPU not supported in this browser'));\n return;\n }\n\n if (untracked(() => this.chartInstance()) && this.chartContainer === container) {\n return;\n }\n\n let cancelled = false;\n let createdInstance: ChartGPUInstance | undefined;\n const initialOptions = this.getEffectiveOptions(options, theme);\n\n void (gpuContext\n ? ChartGPU.create(container, initialOptions, gpuContext)\n : ChartGPU.create(container, initialOptions)\n ).then(instance => {\n createdInstance = instance;\n if (cancelled) {\n instance.dispose();\n return;\n }\n\n try {\n const latest = untracked(() => ({\n options: this.options(),\n theme: this.theme(),\n }));\n if (latest.options !== options || latest.theme !== theme) {\n instance.setOption(this.getEffectiveOptions(latest.options, latest.theme));\n }\n\n this.createdWithOptions = latest;\n this.chartContainer = container;\n this.chartInstance.set(instance);\n this.removeChartListeners = this.listenToChart(instance);\n this.ready.emit({ container });\n this.chartReady.emit(instance);\n\n const range = instance.getZoomRange();\n if (range) {\n this.emitZoomRange(range);\n }\n } catch (cause: unknown) {\n instance.dispose();\n throw cause;\n }\n }).catch((cause: unknown) => {\n if (cancelled) {\n return;\n }\n if (createdInstance && this.chartInstance() !== createdInstance && !createdInstance.disposed) {\n createdInstance.dispose();\n }\n this.reportError(cause);\n });\n\n onCleanup(() => {\n cancelled = true;\n if (this.chartContainer === container) {\n this.disposeChart();\n }\n });\n }, { allowSignalWrites: true });\n\n effect(() => {\n const options = this.options();\n const theme = this.theme();\n const instance = this.chartInstance();\n if (!instance || instance.disposed) {\n return;\n }\n\n if (this.createdWithOptions?.options === options && this.createdWithOptions.theme === theme) {\n this.createdWithOptions = undefined;\n return;\n }\n\n try {\n instance.setOption(this.getEffectiveOptions(options, theme));\n } catch (cause: unknown) {\n this.reportError(cause);\n }\n }, { allowSignalWrites: true });\n }\n\n protected emitClick(event: MouseEvent): void {\n this.click.emit({ x: event.offsetX, y: event.offsetY });\n }\n\n ngOnDestroy(): void {\n this.destroying = true;\n }\n\n getChart(): ChartGPUInstance | null {\n const instance = this.chartInstance();\n return instance && !instance.disposed ? instance : null;\n }\n\n getContainer(): HTMLDivElement | null {\n return this.canvasHost()?.nativeElement ?? null;\n }\n\n appendData(\n seriesIndex: number,\n newPoints: ChartgpuCartesianSeriesData | OHLCDataPoint[],\n options?: ChartgpuAppendDataOptions,\n ): void {\n this.getChart()?.appendData(seriesIndex, newPoints, options);\n }\n\n renderFrame(): boolean {\n return this.getChart()?.renderFrame() ?? false;\n }\n\n needsRender(): boolean {\n return this.getChart()?.needsRender() ?? false;\n }\n\n getRenderMode(): 'auto' | 'external' {\n return this.getChart()?.getRenderMode() ?? 'auto';\n }\n\n setRenderMode(mode: 'auto' | 'external'): void {\n this.getChart()?.setRenderMode(mode);\n }\n\n setOption(options: ChartgpuOptions): void {\n this.getChart()?.setOption(options);\n }\n\n setZoomRange(start: number, end: number, source?: unknown): void {\n this.getChart()?.setZoomRange(start, end, source);\n }\n\n setInteractionX(x: number | null, source?: unknown): void {\n this.getChart()?.setInteractionX(x, source);\n }\n\n getInteractionX(): number | null {\n return this.getChart()?.getInteractionX() ?? null;\n }\n\n hitTest(event: PointerEvent | MouseEvent) {\n return this.getChart()?.hitTest(event) ?? null;\n }\n\n private getEffectiveOptions(\n options: ChartgpuOptions,\n theme: ChartgpuOptions['theme'] | undefined,\n ): ChartgpuOptions {\n return theme !== undefined ? { ...options, theme } : options;\n }\n\n private listenToChart(instance: ChartGPUInstance): () => void {\n const click = (payload: ChartGPUEventPayload) => this.chartClick.emit(payload);\n const mouseOver = (payload: ChartGPUEventPayload) => this.mouseOver.emit(payload);\n const mouseOut = (payload: ChartGPUEventPayload) => this.mouseOut.emit(payload);\n const crosshairMove = (payload: ChartGPUCrosshairMovePayload) => this.crosshairMove.emit(payload);\n const dataAppend = (payload: ChartgpuDataAppendEvent) => this.dataAppend.emit(payload);\n const zoomChange = (payload: ChartGPUZoomRangeChangePayload) => this.emitZoomRange(payload);\n const deviceLost = (payload: ChartGPUDeviceLostPayload) => this.deviceLost.emit(payload);\n\n instance.on('click', click);\n instance.on('mouseover', mouseOver);\n instance.on('mouseout', mouseOut);\n instance.on('crosshairMove', crosshairMove);\n instance.on('dataAppend', dataAppend);\n instance.on('zoomRangeChange', zoomChange);\n instance.on('deviceLost', deviceLost);\n\n return () => {\n if (instance.disposed) {\n return;\n }\n instance.off('click', click);\n instance.off('mouseover', mouseOver);\n instance.off('mouseout', mouseOut);\n instance.off('crosshairMove', crosshairMove);\n instance.off('dataAppend', dataAppend);\n instance.off('zoomRangeChange', zoomChange);\n instance.off('deviceLost', deviceLost);\n };\n }\n\n private emitZoomRange(range: { start: number; end: number }): void {\n this.zoomChange.emit({ range: { start: range.start, end: range.end } });\n this.zoomRangeChange.emit({ start: range.start, end: range.end });\n }\n\n private observeResize(container: HTMLDivElement): void {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n this.resizeObserver = new ResizeObserver(entries => {\n const entry = entries[0];\n if (!entry) {\n return;\n }\n const { width, height } = entry.contentRect;\n this.resize.emit({ width, height, container });\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.chartInstance()?.resize();\n this.resizeTimeout = undefined;\n }, 100);\n });\n this.resizeObserver.observe(container);\n }\n\n private reportError(cause: unknown): void {\n const error = cause instanceof Error ? cause : new Error(String(cause));\n this.initializationError.set(error);\n this.chartError.emit(error);\n }\n\n private disposeChart(): void {\n const instance = this.chartInstance();\n this.removeChartListeners?.();\n this.removeChartListeners = undefined;\n if (instance && !instance.disposed) {\n instance.dispose();\n if (!this.destroying) {\n this.chartDispose.emit();\n }\n }\n this.chartInstance.set(null);\n this.chartContainer = undefined;\n this.createdWithOptions = undefined;\n }\n}\n","import { Directive, effect, input, output } from '@angular/core';\nimport { connectCharts } from 'chartgpu';\nimport type { ChartGPUInstance, ChartSyncOptions } from 'chartgpu';\n\n@Directive({\n selector: '[libChartgpuConnectCharts]',\n standalone: true,\n})\nexport class ChartgpuConnectChartsDirective {\n readonly charts = input<ReadonlyArray<ChartGPUInstance | null | undefined>>([], {\n alias: 'libChartgpuConnectCharts',\n });\n readonly syncOptions = input<ChartSyncOptions | undefined>();\n readonly connectionError = output<Error>();\n\n private readonly ids = new WeakMap<object, number>();\n private nextId = 1;\n private signature: string | undefined;\n\n constructor() {\n effect(onCleanup => {\n const charts = this.charts();\n const options = this.syncOptions();\n const optionsSignature = options\n ? `crosshair=${options.syncCrosshair ?? ''},zoom=${options.syncZoom ?? ''}`\n : '';\n const signature = `${charts.map(chart => {\n if (!chart) {\n return 'null';\n }\n\n let id = this.ids.get(chart);\n if (id === undefined) {\n id = this.nextId++;\n this.ids.set(chart, id);\n }\n return `${id}:${chart.disposed ? 1 : 0}`;\n }).join('|')}|${optionsSignature}`;\n\n if (signature === this.signature) {\n return;\n }\n this.signature = signature;\n\n if (charts.length === 0 || charts.some(chart => !chart || chart.disposed)) {\n return;\n }\n\n const resolved: ChartGPUInstance[] = [];\n for (const chart of charts) {\n if (!chart || chart.disposed) {\n return;\n }\n resolved.push(chart);\n }\n\n try {\n const disconnect = connectCharts(resolved, options);\n onCleanup(disconnect);\n } catch (cause: unknown) {\n this.connectionError.emit(cause instanceof Error ? cause : new Error(String(cause)));\n }\n });\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { createPipelineCache } from 'chartgpu';\nimport type { ChartGPUCreateContext } from 'chartgpu';\nimport type { ChartgpuGPUContextState } from './chartgpu-angular.types';\n\nconst INITIAL_STATE: ChartgpuGPUContextState = {\n adapter: null,\n device: null,\n pipelineCache: null,\n error: null,\n isReady: false,\n};\n\n/**\n * Creates one shared WebGPU context and pipeline cache for charts in a dashboard.\n * The device is intentionally not destroyed with the service so charts can share it\n * for the lifetime of the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class ChartgpuGPUContextService {\n readonly state = signal<ChartgpuGPUContextState>(INITIAL_STATE);\n readonly context = computed<ChartGPUCreateContext | null>(() => {\n const state = this.state();\n if (!state.adapter || !state.device || !state.pipelineCache) {\n return null;\n }\n\n return {\n adapter: state.adapter,\n device: state.device,\n pipelineCache: state.pipelineCache,\n };\n });\n\n private initialization?: Promise<ChartgpuGPUContextState>;\n\n initialize(): Promise<ChartgpuGPUContextState> {\n if (!this.initialization) {\n this.initialization = this.createContext();\n }\n return this.initialization;\n }\n\n private async createContext(): Promise<ChartgpuGPUContextState> {\n try {\n if (typeof navigator === 'undefined' || !('gpu' in navigator)) {\n throw new Error('WebGPU not supported in this browser');\n }\n\n const gpu = (navigator as Navigator & {\n gpu?: {\n requestAdapter(options: {\n powerPreference: 'high-performance';\n }): Promise<ChartGPUCreateContext['adapter'] | null>;\n };\n }).gpu;\n if (!gpu) {\n throw new Error('WebGPU not supported in this browser');\n }\n\n const adapter = await gpu.requestAdapter({ powerPreference: 'high-performance' });\n if (!adapter) {\n const error = new Error('WebGPU is not available. No compatible GPUAdapter was found.');\n const state: ChartgpuGPUContextState = { ...INITIAL_STATE, error };\n this.state.set(state);\n return state;\n }\n\n const device = await adapter.requestDevice();\n const pipelineCache = createPipelineCache(device);\n const state: ChartgpuGPUContextState = {\n adapter,\n device,\n pipelineCache,\n error: null,\n isReady: true,\n };\n this.state.set(state);\n return state;\n } catch (cause: unknown) {\n const error = cause instanceof Error ? cause : new Error(String(cause));\n const state: ChartgpuGPUContextState = { ...INITIAL_STATE, error };\n this.state.set(state);\n return state;\n }\n }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { ChartgpuGPUContextService } from './gpu-context.service';\n\nexport function provideChartGpuContext() {\n return makeEnvironmentProviders([ChartgpuGPUContextService]);\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -19,28 +19,28 @@ export declare class ChartGpuAngularComponent implements ChartgpuChartHandle, On
|
|
|
19
19
|
readonly resize: import("@angular/core").OutputEmitterRef<ChartgpuResizeEvent>;
|
|
20
20
|
readonly click: import("@angular/core").OutputEmitterRef<ChartgpuClickEvent>;
|
|
21
21
|
readonly chartClick: import("@angular/core").OutputEmitterRef<Readonly<{
|
|
22
|
-
readonly seriesIndex: number;
|
|
23
|
-
readonly dataIndex: number;
|
|
24
|
-
readonly value: readonly [number, number];
|
|
25
|
-
readonly seriesName: string;
|
|
22
|
+
readonly seriesIndex: number | null;
|
|
23
|
+
readonly dataIndex: number | null;
|
|
24
|
+
readonly value: readonly [number, number] | null;
|
|
25
|
+
readonly seriesName: string | null;
|
|
26
26
|
readonly event: PointerEvent;
|
|
27
27
|
}>>;
|
|
28
28
|
readonly mouseOver: import("@angular/core").OutputEmitterRef<Readonly<{
|
|
29
|
-
readonly seriesIndex: number;
|
|
30
|
-
readonly dataIndex: number;
|
|
31
|
-
readonly value: readonly [number, number];
|
|
32
|
-
readonly seriesName: string;
|
|
29
|
+
readonly seriesIndex: number | null;
|
|
30
|
+
readonly dataIndex: number | null;
|
|
31
|
+
readonly value: readonly [number, number] | null;
|
|
32
|
+
readonly seriesName: string | null;
|
|
33
33
|
readonly event: PointerEvent;
|
|
34
34
|
}>>;
|
|
35
35
|
readonly mouseOut: import("@angular/core").OutputEmitterRef<Readonly<{
|
|
36
|
-
readonly seriesIndex: number;
|
|
37
|
-
readonly dataIndex: number;
|
|
38
|
-
readonly value: readonly [number, number];
|
|
39
|
-
readonly seriesName: string;
|
|
36
|
+
readonly seriesIndex: number | null;
|
|
37
|
+
readonly dataIndex: number | null;
|
|
38
|
+
readonly value: readonly [number, number] | null;
|
|
39
|
+
readonly seriesName: string | null;
|
|
40
40
|
readonly event: PointerEvent;
|
|
41
41
|
}>>;
|
|
42
42
|
readonly crosshairMove: import("@angular/core").OutputEmitterRef<Readonly<{
|
|
43
|
-
readonly x: number;
|
|
43
|
+
readonly x: number | null;
|
|
44
44
|
readonly source?: unknown;
|
|
45
45
|
}>>;
|
|
46
46
|
readonly dataAppend: import("@angular/core").OutputEmitterRef<ChartgpuDataAppendEvent>;
|
|
@@ -81,16 +81,7 @@ export declare class ChartGpuAngularComponent implements ChartgpuChartHandle, On
|
|
|
81
81
|
readonly canvasY: number;
|
|
82
82
|
readonly gridX: number;
|
|
83
83
|
readonly gridY: number;
|
|
84
|
-
readonly match:
|
|
85
|
-
readonly kind: "pie" | "candlestick" | "ohlc" | "errorBar" | "impulse" | "pointCloud3d" | "surface3d" | "cartesian";
|
|
86
|
-
readonly seriesIndex: number;
|
|
87
|
-
readonly dataIndex: number;
|
|
88
|
-
readonly value: readonly [number, number] | readonly [number, number, number];
|
|
89
|
-
readonly valueChannel?: number;
|
|
90
|
-
readonly i?: number;
|
|
91
|
-
readonly j?: number;
|
|
92
|
-
readonly height?: number;
|
|
93
|
-
}>;
|
|
84
|
+
readonly match: import("chartgpu").ChartGPUHitTestMatch | null;
|
|
94
85
|
}>;
|
|
95
86
|
private getEffectiveOptions;
|
|
96
87
|
private listenToChart;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chartgpu-angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0",
|
|
4
4
|
"description": "Unnofficial Angular bindings for ChartGPU — WebGPU-powered high-performance charts",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"author": "Naren",
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@angular/common": "^
|
|
27
|
-
"@angular/core": "^
|
|
26
|
+
"@angular/common": "^19.0.0",
|
|
27
|
+
"@angular/core": "^19.0.0",
|
|
28
28
|
"chartgpu": "^0.4.0"
|
|
29
29
|
},
|
|
30
30
|
"module": "fesm2022/chartgpu-angular.mjs",
|
|
@@ -35,8 +35,6 @@
|
|
|
35
35
|
},
|
|
36
36
|
".": {
|
|
37
37
|
"types": "./index.d.ts",
|
|
38
|
-
"esm2022": "./esm2022/chartgpu-angular.mjs",
|
|
39
|
-
"esm": "./esm2022/chartgpu-angular.mjs",
|
|
40
38
|
"default": "./fesm2022/chartgpu-angular.mjs"
|
|
41
39
|
}
|
|
42
40
|
},
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRncHUtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NoYXJ0Z3B1LWFuZ3VsYXIvc3JjL2NoYXJ0Z3B1LWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -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=
|