ngx-lightweight-charts
Version:
Angular wrapper for Trading View lightweight-charts
1 lines • 99.4 kB
Source Map (JSON)
{"version":3,"file":"ngx-lightweight-charts.mjs","sources":["../../../library/src/lib/core/subscriptions/subscription-stream-handler.ts","../../../library/src/lib/core/chart/chart-streams.ts","../../../library/src/lib/core/timescale/timescale-streams.ts","../../../library/src/lib/core/chart/chart.factory.ts","../../../library/src/lib/core/sync/multi-stream.ts","../../../library/src/lib/core/crosshair/crosshair.service.ts","../../../library/src/lib/core/series/series-streams.ts","../../../library/src/lib/core/series/series.factory.ts","../../../library/src/lib/core/sync/sync.service.ts","../../../library/src/lib/core/tv-chart/tv-chart.ts","../../../library/src/lib/core/tv-chart/tv-chart.factory.ts","../../../library/src/lib/core/utils/utils.ts","../../../library/src/lib/ng/providers.ts","../../../library/src/lib/ng/chart-collector/chart-collector.directive.ts","../../../library/src/lib/ng/chart-crosshair-data/chart-crosshair-data.directive.ts","../../../library/src/lib/ng/chart-sync/chart-sync.directive.ts","../../../library/src/lib/ng/chart-group/chart-group.directive.ts","../../../library/src/lib/ng/providers/tv-chart.provider.ts","../../../library/src/lib/ng/charts/chart-inputs.directive.ts","../../../library/src/lib/ng/charts/charts-outputs.directive.ts","../../../library/src/lib/ng/charts/chart.directive.ts","../../../library/src/lib/ng/charts/custom-chart/custom-chart.component.ts","../../../library/src/lib/ng/charts/custom-chart/custom-chart.component.html","../../../library/src/lib/ng/charts/candle-stick-chart/candle-stick-chart.component.ts","../../../library/src/lib/ng/charts/candle-stick-chart/candlestick-chart.component.html","../../../library/src/lib/ng/charts/histogram-chart/histogram-chart.component.ts","../../../library/src/lib/ng/charts/histogram-chart/histogram-chart.component.html","../../../library/src/lib/ng/charts/line-chart/line-chart.component.ts","../../../library/src/lib/ng/charts/line-chart/line-chart.component.html","../../../library/src/lib/ng/charts/bar-chart/bar-chart.directive.ts","../../../library/src/lib/ng/charts/bar-chart/bar-chart.component.html","../../../library/src/lib/ng/charts/baseline-chart/baseline-chart.component.ts","../../../library/src/lib/ng/charts/baseline-chart/baseline-chart.component.html","../../../library/src/lib/ng/charts/area-chart/area-chart.component.ts","../../../library/src/lib/ng/charts/area-chart/area-chart.component.html","../../../library/src/lib/ng/styles/chart-border/chart-border.directive.ts","../../../library/src/ngx-lightweight-charts.ts"],"sourcesContent":["import {BehaviorSubject, fromEventPattern, map, Observable, share, Subject, switchMap, takeUntil} from \"rxjs\";\n\n\nexport type HandlerCallbackFn<T> = (arg: T) => void;\nexport type SubHandlerFn<T> = (handler: HandlerCallbackFn<T>) => void\n\n\nexport class SubscriptionStreamHandler<Param> {\n\n readonly #subject = new BehaviorSubject<Param | undefined>(undefined);\n\n readonly #destroy = new Subject();\n readonly #destroy$ = this.#destroy.asObservable();\n\n readonly stream$: Observable<Param>;\n\n constructor(\n subscribeFn: SubHandlerFn<Param>,\n unsubscribeFn: SubHandlerFn<Param>\n ) {\n this.stream$ = this.#subject.asObservable().pipe(\n switchMap(() => fromEventPattern<any[]>(\n subscribeFn,\n unsubscribeFn\n )),\n map<any[], Param>((args: any[]) => args[0]),\n takeUntil(this.#destroy$),\n share()\n );\n }\n\n destroy(): void {\n this.#destroy.next(true);\n this.#destroy.complete();\n this.#subject.complete();\n }\n}\n","import {Observable} from \"rxjs\";\nimport {IChartApiBase, MouseEventParams, Time} from \"lightweight-charts\";\nimport {SubscriptionStreamHandler} from \"../subscriptions\";\nimport {ChartSubscriptions} from \"./chart.types\";\n\n\nexport class ChartStreams<HorzScaleItem = Time> implements ChartSubscriptions<HorzScaleItem> {\n readonly #crossHairMove: SubscriptionStreamHandler<MouseEventParams<HorzScaleItem>>;\n readonly #click: SubscriptionStreamHandler<MouseEventParams<HorzScaleItem>>;\n readonly #dblClick: SubscriptionStreamHandler<MouseEventParams<HorzScaleItem>>;\n\n readonly crossHairMove$: Observable<MouseEventParams<HorzScaleItem>>;\n readonly click$: Observable<MouseEventParams<HorzScaleItem>>;\n readonly dblClick$: Observable<MouseEventParams<HorzScaleItem>>;\n\n\n constructor(chart: IChartApiBase<HorzScaleItem>) {\n this.#crossHairMove = new SubscriptionStreamHandler(\n chart.subscribeCrosshairMove.bind(chart),\n chart.unsubscribeCrosshairMove.bind(chart)\n );\n this.#click = new SubscriptionStreamHandler(\n chart.subscribeClick.bind(chart),\n chart.unsubscribeClick.bind(chart)\n );\n this.#dblClick = new SubscriptionStreamHandler(\n chart.subscribeDblClick.bind(chart),\n chart.unsubscribeClick.bind(chart)\n );\n\n this.crossHairMove$ = this.#crossHairMove.stream$;\n this.click$ = this.#click.stream$;\n this.dblClick$ = this.#dblClick.stream$;\n }\n\n destroy(): void {\n this.#crossHairMove.destroy();\n this.#click.destroy();\n this.#dblClick.destroy();\n }\n}\n","import {TimescaleSubscriptions} from \"./timescale.types\";\nimport {ITimeScaleApi, LogicalRange, Range, Time} from \"lightweight-charts\";\nimport {SubscriptionStreamHandler} from \"../subscriptions\";\nimport {Observable} from \"rxjs\";\n\n\nexport class TimescaleStreams<HorzScaleItem = Time> implements TimescaleSubscriptions<HorzScaleItem> {\n readonly #visibleTimeRangeChange: SubscriptionStreamHandler<Range<HorzScaleItem> | null>;\n readonly #visibleLogicalRangeChange: SubscriptionStreamHandler<LogicalRange | null>;\n readonly #sizeChange: SubscriptionStreamHandler<number>;\n\n readonly visibleTimeRangeChange$: Observable<Range<HorzScaleItem> | null>;\n readonly visibleLogicalRangeChange$: Observable<LogicalRange | null>;\n readonly sizeChange$: Observable<number>;\n\n\n constructor(timescale: ITimeScaleApi<HorzScaleItem>) {\n this.#visibleTimeRangeChange = new SubscriptionStreamHandler(\n timescale.subscribeVisibleTimeRangeChange.bind(timescale),\n timescale.unsubscribeVisibleTimeRangeChange.bind(timescale)\n );\n this.#visibleLogicalRangeChange = new SubscriptionStreamHandler(\n timescale.subscribeVisibleLogicalRangeChange.bind(timescale),\n timescale.unsubscribeVisibleLogicalRangeChange.bind(timescale)\n );\n this.#sizeChange = new SubscriptionStreamHandler(\n timescale.subscribeSizeChange.bind(timescale),\n timescale.unsubscribeSizeChange.bind(timescale)\n );\n\n this.visibleTimeRangeChange$ = this.#visibleTimeRangeChange.stream$;\n this.visibleLogicalRangeChange$ = this.#visibleLogicalRangeChange.stream$;\n this.sizeChange$ = this.#sizeChange.stream$;\n }\n\n destroy(): void {\n this.#visibleTimeRangeChange.destroy();\n this.#visibleLogicalRangeChange.destroy();\n this.#sizeChange.destroy();\n }\n}\n","import {\n ChartOptions, ChartOptionsImpl,\n createChart,\n createChartEx,\n DeepPartial,\n IChartApiBase,\n IHorzScaleBehavior,\n Time\n} from \"lightweight-charts\";\nimport {ChartSubscriptions} from \"./chart.types\";\nimport {ChartStreams} from \"./chart-streams\";\nimport {TimescaleStreams, TimescaleSubscriptions} from \"../timescale\";\n\n\nexport type ChartFactoryReturnType<HorzScaleItem = Time> = {\n chart: IChartApiBase<HorzScaleItem>,\n chartSubscriptions: ChartSubscriptions<HorzScaleItem>,\n timescaleSubscriptions: TimescaleSubscriptions<HorzScaleItem>\n};\n\n\ntype getOptionsType<T, HorzScaleItem> = [T] extends [never] ? ChartOptions :\n T extends IHorzScaleBehavior<HorzScaleItem> ? ReturnType<T['options']> : never\n\ntype blah<T> = T extends ChartOptions ? T : never\n\ntype getScaleBehaviorType<T, HorzScaleItem> = T extends IHorzScaleBehavior<HorzScaleItem> ? T : never\n\n\nexport class ChartFactory {\n\n create<\n HorzScaleItem = Time,\n THorzScaleBehavior extends IHorzScaleBehavior<HorzScaleItem> = never\n >(\n container: string | HTMLElement,\n options?: DeepPartial<getOptionsType<THorzScaleBehavior, HorzScaleItem>>,\n horzScaleBehavior?: getScaleBehaviorType<THorzScaleBehavior, HorzScaleItem>\n\n ): ChartFactoryReturnType<HorzScaleItem> {\n\n let chart: IChartApiBase<HorzScaleItem>;\n\n if(!horzScaleBehavior) {\n chart = createChart(container, options as DeepPartial<ChartOptions>) as unknown as IChartApiBase<HorzScaleItem>;\n } else {\n chart = createChartEx(container, horzScaleBehavior, options as any);\n }\n\n const chartSubscriptions = new ChartStreams<HorzScaleItem>(chart),\n timescaleSubscriptions = new TimescaleStreams<HorzScaleItem>(chart.timeScale());\n\n return {\n chart,\n chartSubscriptions,\n timescaleSubscriptions\n }\n }\n}\n","import {BehaviorSubject, map, merge, Observable, Subscription} from \"rxjs\";\n\n\nexport type MultiStreamOutput<T> = {\n source: Observable<T>,\n data: T\n}\n\n\nexport class MultiStream<T> {\n\n readonly #subject = new BehaviorSubject<MultiStreamOutput<T> | undefined>(undefined);\n readonly stream$ = this.#subject.asObservable();\n\n #subscription?: Subscription;\n\n get currentValue(): T | undefined {\n return this.#subject.value?.data;\n }\n\n updateObservables(streams: Observable<T>[]): void {\n\n this.#cleanUp();\n\n if(!streams.length) {\n return;\n }\n\n this.#subscription = merge(...streams.map(arg => arg.pipe(\n map(data => ({source: arg, data}))\n ))).subscribe(this.#subject);\n }\n\n destroy(): void {\n this.#cleanUp();\n }\n\n #cleanUp(): void {\n this.#subscription?.unsubscribe();\n this.#subscription = undefined;\n }\n}\n\n\nexport function isMultiStreamOutput<T>(arg: MultiStreamOutput<T> | undefined): arg is MultiStreamOutput<T> {\n return !!arg && !!arg.data;\n}\n\n\nexport function isOutputWithData<T>(update: MultiStreamOutput<T> | undefined): update is MultiStreamOutput<NonNullable<T>> {\n return !!update && !!update.data;\n}\n","import {filter, map, share, Subject, takeUntil, tap} from \"rxjs\";\nimport {MouseEventParams} from \"lightweight-charts\";\nimport {isMultiStreamOutput, MultiStream} from \"../sync/multi-stream\";\nimport {TVChart} from \"../tv-chart\";\n\n\nexport class CrosshairService<HorzScaleItem> {\n\n #charts?: TVChart<any, HorzScaleItem>[];\n\n readonly #destroy = new Subject<void>();\n readonly #destroyed$ = this.#destroy.asObservable();\n\n readonly #crosshairPosition = new MultiStream<MouseEventParams<HorzScaleItem>>();\n readonly crosshairPosition$ = this.#crosshairPosition.stream$.pipe(\n filter(isMultiStreamOutput),\n map(arg => {\n const data = arg.data,\n result: {[key: string | number]: any} = {};\n\n if (!data.time || !data.logical) {\n return null;\n }\n\n this.#charts?.forEach((chart, index) => {\n result[chart.id || index] = chart.series?.dataByIndex(data.logical as number);\n });\n\n return result;\n }),\n share()\n );\n\n constructor() {\n this.crosshairPosition$.pipe(\n takeUntil(this.#destroyed$),\n ).subscribe();\n }\n\n register(charts: TVChart<any, HorzScaleItem>[], clearExisting: boolean = true) {\n if(clearExisting || !this.#charts) {\n this.#charts = [];\n }\n\n charts = charts.filter(arg => !this.#charts!.includes(arg));\n\n this.#charts = this.#charts.concat(charts);\n this.#updateStream();\n }\n\n deregister(chart: TVChart<any, HorzScaleItem>): void {\n\n if(!this.#charts) {\n return;\n }\n\n const index = this.#charts.indexOf(chart);\n\n if(index === -1) {\n return;\n }\n\n this.#charts.splice(index, 1);\n this.#updateStream();\n }\n\n destroy(): void {\n this.#crosshairPosition.destroy();\n this.#destroy.next();\n this.#destroy.complete();\n }\n\n #updateStream(): void {\n\n if (!this.#charts) {\n return;\n }\n\n this.#crosshairPosition.updateObservables(\n this.#charts.map(chart => chart.crossHairMove$)\n )\n }\n}\n","import {Observable} from \"rxjs\";\nimport {DataChangedScope, ISeriesApi, SeriesType, Time} from \"lightweight-charts\";\nimport {SeriesSubscriptions} from \"./series.types\";\nimport {SubscriptionStreamHandler} from \"../subscriptions\";\n\n\nexport class SeriesStreams<T extends SeriesType, HorzScaleItem = Time> implements SeriesSubscriptions {\n readonly #dataChange: SubscriptionStreamHandler<DataChangedScope>;\n\n readonly dataChange$: Observable<DataChangedScope>;\n\n constructor(series: ISeriesApi<T, HorzScaleItem>) {\n this.#dataChange = new SubscriptionStreamHandler(\n series.subscribeDataChanged.bind(series),\n series.unsubscribeDataChanged.bind(series)\n );\n\n this.dataChange$ = this.#dataChange.stream$;\n }\n\n destroy(): void {\n this.#dataChange.destroy();\n }\n}\n","import {\n CustomData,\n CustomSeriesOptions,\n IChartApiBase,\n ICustomSeriesPaneView,\n ISeriesApi,\n SeriesPartialOptionsMap,\n SeriesType,\n} from \"lightweight-charts\";\nimport {SeriesStreams} from \"./series-streams\";\nimport {SeriesSubscriptions} from \"./series.types\";\n\n\ntype SeriesCreationFn<T extends SeriesType, HorzScaleItem> = (options: SeriesPartialOptionsMap[T]) => ISeriesApi<T, HorzScaleItem>\n\nexport type SeriesFactoryReturnType<T extends SeriesType, HorzScaleItem> = {\n series?: ISeriesApi<T, HorzScaleItem>\n seriesSubscriptions?: SeriesSubscriptions\n}\n\nexport type RequiresCustomData<T extends SeriesType, HorzScaleItem> = T extends 'Custom' ? CustomData<HorzScaleItem> : never\nexport type RequiresCustomSeriesView<T extends SeriesType, HorzScaleItem> = T extends 'Custom' ? [customSeriesView: ICustomSeriesPaneView<HorzScaleItem>] : []\n\n\nfunction isCustomSeriesOptions(type: SeriesType, options: any): options is CustomSeriesOptions {\n return type === 'Custom';\n}\n\nfunction isCustomSeriesView<HorzScaleItem>(view: ReadonlyArray<any>): view is [ICustomSeriesPaneView<HorzScaleItem>] {\n return view.length > 0;\n}\n\n\nexport class SeriesFactory {\n\n create<T extends SeriesType, HorzScaleItem>(\n type: T,\n chart: IChartApiBase<HorzScaleItem>,\n seriesOptions: SeriesPartialOptionsMap[T],\n ...customSeriesView: RequiresCustomSeriesView<T, HorzScaleItem>\n ): SeriesFactoryReturnType<T, HorzScaleItem> {\n\n const series = this.#createSeries(type, chart, seriesOptions, ...customSeriesView),\n seriesSubscriptions = series ? new SeriesStreams(series) : undefined;\n\n if(!series) {\n console.log(`Series of type ${type} could not be created`);\n }\n\n return {\n series,\n seriesSubscriptions\n }\n }\n\n #createSeries<T extends SeriesType, HorzScaleItem>(\n type: T,\n chart: IChartApiBase<HorzScaleItem>,\n seriesOptions: SeriesPartialOptionsMap[T],\n ...customSeriesView: RequiresCustomSeriesView<T, HorzScaleItem>\n ): ISeriesApi<T, HorzScaleItem> | undefined {\n\n if(isCustomSeriesOptions(type, seriesOptions)) {\n\n if(!isCustomSeriesView(customSeriesView)) {\n throw new Error('Custom series requires a custom view');\n }\n\n // TODO - fix narrowing issue to remove as\n return chart.addCustomSeries(customSeriesView[0], seriesOptions) as ISeriesApi<T, HorzScaleItem>;\n\n } else{\n\n const fn: SeriesCreationFn<T, HorzScaleItem> | undefined = this.#getSeriesCreationFn(type, chart);\n\n if(!fn) {\n return;\n }\n\n return fn.call(chart, seriesOptions);\n }\n }\n\n #getSeriesCreationFn<T extends SeriesType, HorzScaleItem>(type: T, chart: IChartApiBase<HorzScaleItem>): SeriesCreationFn<T, HorzScaleItem> | undefined {\n\n let fn: any | undefined;\n\n switch(type) {\n case 'Candlestick':\n fn = chart.addCandlestickSeries;\n break;\n case 'Histogram':\n fn = chart.addHistogramSeries;\n break;\n case 'Line':\n fn = chart.addLineSeries;\n break;\n case 'Area':\n fn = chart.addAreaSeries;\n break;\n case 'Bar':\n fn = chart.addBarSeries;\n break;\n case 'Baseline':\n fn = chart.addBaselineSeries;\n break;\n }\n\n return fn as SeriesCreationFn<T, HorzScaleItem> | undefined;\n }\n}\n","import {LogicalRange, MouseEventParams, Point, Range} from \"lightweight-charts\";\nimport {filter, map, Observable, share, Subject, takeUntil, tap} from \"rxjs\";\nimport {isMultiStreamOutput, isOutputWithData, MultiStream} from \"./multi-stream\";\n\n\nexport type Syncable = {\n setVisibleLogicalRange(range: Range<number>): void\n getVisibleLogicalRange(): LogicalRange | null | undefined\n readonly visibleLogicalRangeChange$: Observable<LogicalRange | null>\n}\n\nexport type SyncableWithCrosshair<HorzScaleItem> = Syncable & {\n setCrossHairPositionByPoint(point: Point, time?: HorzScaleItem): void\n clearCrosshairPosition(): void\n readonly crossHairMove$: Observable<MouseEventParams<HorzScaleItem>>\n}\n\nexport function isSyncableWithCrosshair<HorzScaleItem>(arg: Syncable): arg is SyncableWithCrosshair<HorzScaleItem> {\n return 'setCrosshairPosition' in arg &&\n 'clearCrosshairPosition' in arg &&\n 'crossHairMove$' in arg;\n}\n\n\nexport class SyncService<HorzScaleItem> {\n\n #syncables?: Syncable[];\n\n readonly #destroy = new Subject<void>();\n readonly #destroyed$ = this.#destroy.asObservable();\n\n readonly #visibleLogicalRange = new MultiStream<LogicalRange | null>();\n readonly visibleLogicalRange$ = this.#visibleLogicalRange.stream$.pipe(\n filter(isOutputWithData<LogicalRange | null>),\n tap(arg => {\n this.#syncables\n ?.filter(\n syncable => syncable.visibleLogicalRangeChange$ !== arg?.source\n )\n .forEach(syncable => {\n syncable.setVisibleLogicalRange(arg.data);\n });\n }),\n map(arg => arg.data),\n share()\n );\n\n readonly #crosshairPosition = new MultiStream<MouseEventParams<HorzScaleItem>>();\n readonly crosshairPosition$ = this.#crosshairPosition.stream$.pipe(\n filter(isMultiStreamOutput),\n tap(arg => {\n this.#syncables\n ?.filter(isSyncableWithCrosshair<HorzScaleItem>)\n .filter(syncable => syncable.crossHairMove$ !== arg?.source)\n .forEach(syncable => {\n const data = arg.data;\n\n if (!data.point || !data.time) {\n syncable.clearCrosshairPosition();\n return;\n }\n\n if(!data.sourceEvent) {\n return;\n }\n\n syncable.setCrossHairPositionByPoint(data.point, data.time);\n });\n }),\n map(arg => arg?.data),\n share()\n );\n\n constructor() {\n this.visibleLogicalRange$.pipe(\n takeUntil(this.#destroyed$),\n ).subscribe();\n\n this.crosshairPosition$.pipe(\n takeUntil(this.#destroyed$),\n ).subscribe();\n }\n\n register(arg: Syncable[], clearExisting: boolean = true): void {\n\n if(clearExisting || !this.#syncables) {\n this.#syncables = [];\n }\n\n arg = arg.filter(arg => !this.#syncables!.includes(arg));\n\n this.#syncables = this.#syncables.concat(arg);\n\n this.#updateStreams();\n }\n\n deregister(arg: Syncable): void {\n\n if(!this.#syncables) {\n return;\n }\n\n const index = this.#syncables.indexOf(arg);\n\n if(index === -1) {\n return;\n }\n\n this.#syncables.splice(index, 1);\n this.#updateStreams();\n }\n\n #updateStreams(): void {\n\n if(!this.#syncables) {\n return;\n }\n\n this.#visibleLogicalRange.updateObservables(\n this.#syncables.map(syncable => syncable.visibleLogicalRangeChange$)\n );\n\n const currentLogicalRange = this.#getCurrentVisibleLogicalRange();\n\n if(currentLogicalRange) {\n this.#syncables.forEach(syncable => {\n syncable.setVisibleLogicalRange(currentLogicalRange);\n });\n }\n\n this.#crosshairPosition.updateObservables(\n this.#syncables.filter(isSyncableWithCrosshair<HorzScaleItem>)\n .map(syncable => syncable.crossHairMove$)\n );\n }\n\n destroy(): void {\n this.#visibleLogicalRange.destroy();\n this.#crosshairPosition.destroy();\n this.#destroy.next();\n this.#destroy.complete();\n }\n\n #getCurrentVisibleLogicalRange(): LogicalRange | null | undefined {\n let value = this.#visibleLogicalRange.currentValue;\n\n if(value) {\n return value;\n }\n\n return this.#syncables?.[0]?.getVisibleLogicalRange();\n }\n}\n","import {BehaviorSubject, EMPTY, filter, mergeMap, Observable} from \"rxjs\";\nimport {\n ChartOptions,\n DeepPartial,\n IChartApiBase,\n ISeriesApi,\n SeriesDataItemTypeMap,\n SeriesMarker,\n SeriesPartialOptionsMap,\n SeriesType,\n Time,\n ITimeScaleApi,\n IPriceScaleApi,\n Range,\n LogicalRange,\n MouseEventParams,\n DataChangedScope,\n Point\n} from \"lightweight-charts\";\nimport {SeriesFactory, SeriesFactoryReturnType} from \"../series\";\nimport {ChartFactory, ChartSubscriptions} from \"../chart\";\nimport {TimescaleSubscriptions} from \"../timescale\";\nimport {SeriesSubscriptions} from \"../series/series.types\";\nimport {RequiresCustomSeriesView} from \"../series/series.factory\";\n\n\n\nexport function unInitialisedWarning<TThis extends TVChart<any>, Fn extends (...args: any[]) => any>(\n originalMethod: Fn,\n context: ClassMethodDecoratorContext<ThisParameterType<Fn>, Fn>\n) {\n if (context.kind === \"method\") {\n return function(this: TThis, ...args: any[]) {\n if(!this.isInitialised) {\n console.group('Chart not initialised')\n console.warn(`Call to ${String(context.name)} ignored`);\n console.warn('Arguments', args);\n console.warn('Chart', this);\n console.groupEnd();\n return;\n }\n return originalMethod.apply(this, args)\n }\n }\n return originalMethod;\n}\n\n\n\nexport class TVChart<T extends SeriesType, HorzScaleItem = Time> {\n\n readonly #chartFactory: ChartFactory;\n readonly #seriesFactory: SeriesFactory;\n\n #id?: string;\n #type?: T;\n\n #chart?: IChartApiBase<HorzScaleItem>;\n #series?: ISeriesApi<T, HorzScaleItem>;\n\n #chartSubscriptions?: ChartSubscriptions<HorzScaleItem>;\n #timescaleSubscriptions?: TimescaleSubscriptions<HorzScaleItem>;\n #seriesSubscriptions?: SeriesSubscriptions;\n\n\n readonly #initialised = new BehaviorSubject<undefined | TVChart<T, HorzScaleItem>>(undefined);\n readonly initialised$: Observable<TVChart<T, HorzScaleItem> | undefined> = this.#initialised.asObservable().pipe(\n filter(initialised => !!initialised)\n );\n\n readonly click$: Observable<MouseEventParams<HorzScaleItem>> = this.initialised$.pipe(\n mergeMap(() => this.#chartSubscriptions?.click$ || EMPTY)\n );\n\n readonly dblClick$: Observable<MouseEventParams<HorzScaleItem>> = this.initialised$.pipe(\n mergeMap(() => this.#chartSubscriptions?.dblClick$ || EMPTY)\n );\n\n readonly crossHairMove$: Observable<MouseEventParams<HorzScaleItem>> = this.initialised$.pipe(\n mergeMap(() => this.#chartSubscriptions?.crossHairMove$ || EMPTY)\n );\n\n readonly visibleTimeRangeChange$: Observable<Range<HorzScaleItem> | null> = this.initialised$.pipe(\n mergeMap(() => this.#timescaleSubscriptions?.visibleTimeRangeChange$ || EMPTY)\n );\n\n readonly visibleLogicalRangeChange$: Observable<LogicalRange | null> = this.initialised$.pipe(\n mergeMap(() => this.#timescaleSubscriptions?.visibleLogicalRangeChange$ || EMPTY)\n );\n\n readonly sizeChange$: Observable<number> = this.initialised$.pipe(\n mergeMap(() => this.#timescaleSubscriptions?.sizeChange$ || EMPTY)\n );\n\n readonly dataChange$: Observable<DataChangedScope> = this.initialised$.pipe(\n mergeMap(() => this.#seriesSubscriptions?.dataChange$ || EMPTY)\n );\n\n\n get id(): string | undefined {\n return this.#id;\n }\n\n get type(): T | undefined {\n return this.#type;\n }\n\n get chart(): IChartApiBase<HorzScaleItem> | undefined {\n return this.#chart;\n }\n\n get series(): ISeriesApi<T, HorzScaleItem> | undefined {\n return this.#series;\n }\n\n get options(): DeepPartial<ChartOptions> | undefined {\n return this.#chart?.options();\n }\n\n get timeScale(): ITimeScaleApi<HorzScaleItem> | undefined {\n return this.#chart?.timeScale();\n }\n\n get leftPriceScale(): IPriceScaleApi | undefined {\n return this.#chart?.priceScale('left');\n }\n\n get rightPriceScale(): IPriceScaleApi | undefined {\n return this.#chart?.priceScale('right');\n }\n\n getPriceScale(priceScaleId: 'right' | 'left' | string): IPriceScaleApi | undefined {\n return this.#chart?.priceScale(priceScaleId);\n }\n\n get isInitialised(): boolean {\n return !!this.#initialised.value;\n }\n\n constructor(chartFactory: ChartFactory, seriesFactory: SeriesFactory) {\n this.#chartFactory = chartFactory;\n this.#seriesFactory = seriesFactory;\n }\n\n initialise(\n element: HTMLElement,\n type: T,\n id?: string,\n options: DeepPartial<ChartOptions> = {},\n seriesOptions: SeriesPartialOptionsMap[T] = {},\n ...customSeriesView: RequiresCustomSeriesView<T, HorzScaleItem>\n ): void {\n\n if(this.isInitialised) {\n return;\n }\n\n this.#id = id;\n this.#type = type;\n this.#init(element, type, options, seriesOptions, ...customSeriesView);\n\n if(!this.#chart) {\n return;\n }\n\n this.#initialised.next(this);\n }\n\n @unInitialisedWarning\n applyOptions(options?: DeepPartial<ChartOptions>) {\n this.#chart?.applyOptions(options || {});\n }\n\n @unInitialisedWarning\n applySeriesOptions(seriesOptions?: SeriesPartialOptionsMap[T]) {\n this.#series?.applyOptions(seriesOptions || {});\n }\n\n @unInitialisedWarning\n setData(data: SeriesDataItemTypeMap<HorzScaleItem>[T][]): void {\n this.#series?.setData(data);\n }\n\n @unInitialisedWarning\n setMarkers(markers: SeriesMarker<HorzScaleItem>[]): void {\n this.#series?.setMarkers(markers);\n }\n\n @unInitialisedWarning\n setVisibleLogicalRange(range: Range<number>): void {\n this.#chart?.timeScale().setVisibleLogicalRange(range);\n }\n\n @unInitialisedWarning\n getVisibleLogicalRange(): LogicalRange | undefined | null {\n return this.#chart?.timeScale().getVisibleLogicalRange();\n }\n\n @unInitialisedWarning\n setVisibleRange(range: Range<HorzScaleItem>): void {\n this.#chart?.timeScale().setVisibleRange(range);\n }\n\n @unInitialisedWarning\n setCrosshairPosition(price: number, horizontalPosition: HorzScaleItem, seriesApi: ISeriesApi<SeriesType, HorzScaleItem>): void {\n this.#chart?.setCrosshairPosition(price, horizontalPosition, seriesApi);\n }\n\n @unInitialisedWarning\n setCrossHairPositionByPoint(point: Point, time?: HorzScaleItem): void {\n\n const xValue = time || this.timeScale?.coordinateToTime(point.x),\n yValue = this.#series?.coordinateToPrice(point.y);\n\n if(!xValue || !yValue) {\n return;\n }\n\n this.setCrosshairPosition(yValue, xValue, this.#series!);\n }\n\n @unInitialisedWarning\n clearCrosshairPosition(): void {\n this.#chart?.clearCrosshairPosition();\n }\n\n @unInitialisedWarning\n addAdditionalSeries<ST extends SeriesType>(\n type: ST,\n seriesOptions: SeriesPartialOptionsMap[ST],\n ...customSeriesView: RequiresCustomSeriesView<ST, HorzScaleItem>\n ): SeriesFactoryReturnType<ST, HorzScaleItem> {\n\n if(!this.#chart) {\n return {\n series: undefined,\n seriesSubscriptions: undefined\n };\n }\n\n return this.#seriesFactory.create<ST, HorzScaleItem>(type, this.#chart, seriesOptions, ...(customSeriesView || []));\n }\n\n @unInitialisedWarning\n removeSeries(series?: ISeriesApi<SeriesType, HorzScaleItem>): void {\n if(!series) {\n series = this.#series;\n }\n\n if(!series) {\n return;\n }\n\n this.#chart?.removeSeries(series);\n }\n\n @unInitialisedWarning\n resize(width: number, height: number, forceRepaint?: boolean): void {\n this.#chart?.resize(width, height, forceRepaint);\n }\n\n @unInitialisedWarning\n remove() {\n this.#chart?.remove();\n this.#chartSubscriptions?.destroy();\n this.#timescaleSubscriptions?.destroy();\n this.#seriesSubscriptions?.destroy();\n this.#initialised.complete();\n }\n\n #init(\n element: HTMLElement,\n type: T,\n options: DeepPartial<ChartOptions>,\n seriesOptions: SeriesPartialOptionsMap[T],\n ...customSeriesView: RequiresCustomSeriesView<T, HorzScaleItem>\n ): void {\n ({\n chart: this.#chart,\n chartSubscriptions: this.#chartSubscriptions,\n timescaleSubscriptions: this.#timescaleSubscriptions\n } = this.#chartFactory.create<HorzScaleItem>(element, options));\n\n ({\n series: this.#series,\n seriesSubscriptions: this.#seriesSubscriptions\n } = this.#seriesFactory.create<T, HorzScaleItem>(type, this.#chart, seriesOptions, ...customSeriesView));\n }\n}\n","import {SeriesType} from \"lightweight-charts\";\nimport {TVChart} from \"./tv-chart\";\nimport {ChartFactory} from \"../chart\";\nimport {SeriesFactory} from \"../series\";\n\n\nexport function tvChartFactory<T extends SeriesType>(\n chartFactory: ChartFactory,\n seriesFactory: SeriesFactory\n): TVChart<T> {\n\n return new TVChart<T>(chartFactory, seriesFactory);\n}\n","import {TVChart} from \"../tv-chart\";\nimport {SeriesType} from \"lightweight-charts\";\n\n\nexport function filterChartsByIds<T extends SeriesType, HorxItemScale>(\n ids: string | string[]\n): (chart: TVChart<T, HorxItemScale>) => boolean {\n\n const values = Array.isArray(ids) ? ids : !ids ? [] : [ids];\n\n return (chart: TVChart<T, HorxItemScale>) => {\n return !values.length || !!(chart.id && values.includes(chart.id));\n }\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from \"@angular/core\";\nimport {ChartFactory, SeriesFactory} from \"../core\";\n\n\nexport function getTVChartDefaultProviders(): EnvironmentProviders {\n return makeEnvironmentProviders([{\n provide: ChartFactory,\n useFactory: () => new ChartFactory()\n }, {\n provide: SeriesFactory,\n useFactory: () => new SeriesFactory()\n }]);\n}\n","import {bufferCount, from, map, mergeMap, share, switchMap} from \"rxjs\";\nimport {computed, contentChildren, Directive, inject, input} from '@angular/core';\nimport {takeUntilDestroyed, toObservable, toSignal} from \"@angular/core/rxjs-interop\";\nimport {SeriesType} from \"lightweight-charts\";\nimport {filterChartsByIds, TVChart} from \"../../core\";\n\n\n@Directive({\n selector: '[tvChartCollector]',\n standalone: true\n})\nexport class TVChartCollectorDirective<T extends SeriesType, HorzScaleItem> {\n\n readonly #chart = inject(TVChart<T, HorzScaleItem>, {optional: true});\n\n ids = input<string | string[]>('', {alias: 'tvChartCollector'});\n\n readonly childCharts = contentChildren<TVChart<T, HorzScaleItem>>(TVChart, {descendants: true});\n\n readonly #charts = toSignal(\n toObservable(this.childCharts).pipe(\n takeUntilDestroyed(),\n map(charts => [...(this.#chart ? [this.#chart] : []), ...charts]),\n switchMap(charts => from(charts).pipe(\n mergeMap(chart => chart.initialised$),\n bufferCount(charts.length),\n map(() => charts)\n )),\n share()\n )\n );\n\n readonly charts = computed(() => {\n return this.#charts()?.filter(filterChartsByIds(this.ids()));\n });\n}\n","import {Directive, effect, inject, input, OnDestroy} from '@angular/core';\nimport {CrosshairService, filterChartsByIds} from \"../../core\";\nimport {TVChartCollectorDirective} from \"../chart-collector/chart-collector.directive\";\nimport {outputFromObservable} from \"@angular/core/rxjs-interop\";\n\n\n@Directive({\n selector: '[tvChartCrosshairData]',\n standalone: true,\n providers: [{\n provide: CrosshairService,\n useFactory: () => {\n return new CrosshairService();\n }\n }]\n})\nexport class TVChartCrosshairDataDirective implements OnDestroy {\n\n readonly #collector = inject(TVChartCollectorDirective);\n readonly #crosshairService = inject(CrosshairService);\n\n ids = input<string | string[]>('', {alias: 'tvChartCrosshairDataIds'});\n\n data = outputFromObservable(this.#crosshairService.crosshairPosition$, {alias: 'tvChartCrosshairData'});\n\n constructor() {\n effect(() => {\n this.#crosshairService.register(\n (this.#collector.charts() || []).filter(filterChartsByIds(this.ids()))\n );\n });\n }\n\n ngOnDestroy() {\n this.#crosshairService.destroy();\n }\n}\n","import {Directive, effect, inject, input, OnDestroy} from '@angular/core';\nimport {filterChartsByIds, SyncService} from \"../../core\";\nimport {TVChartCollectorDirective} from \"../chart-collector/chart-collector.directive\";\nimport {outputFromObservable} from \"@angular/core/rxjs-interop\";\n\n\n@Directive({\n selector: '[tvChartSync]',\n standalone: true,\n providers: [{\n provide: SyncService,\n useFactory: () => {\n return new SyncService();\n }\n }]\n})\nexport class TVChartSyncDirective implements OnDestroy {\n\n readonly #collector = inject(TVChartCollectorDirective);\n readonly #syncService = inject(SyncService);\n\n ids = input<string | string[]>('', {alias: 'tvChartSync'});\n\n visibleLogicalRange = outputFromObservable(this.#syncService.visibleLogicalRange$);\n crosshairPosition = outputFromObservable(this.#syncService.crosshairPosition$);\n\n constructor() {\n effect(() => {\n this.#syncService.register(\n (this.#collector.charts() || []).filter(filterChartsByIds(this.ids()))\n );\n });\n }\n\n ngOnDestroy() {\n this.#syncService.destroy();\n }\n}\n","import deepmerge from \"deepmerge\";\nimport {Directive, effect, inject, input} from '@angular/core';\nimport {ChartOptions, DeepPartial, SeriesType} from \"lightweight-charts\";\nimport {TVChartCollectorDirective} from \"../chart-collector/chart-collector.directive\";\nimport {filterChartsByIds} from \"../../core\";\n\n\n@Directive({\n selector: '[tvChartGroup]',\n standalone: true\n})\nexport class TVChartGroupDirective<T extends SeriesType, HorzItemScale> {\n\n ids = input<string | string[]>('', {alias: 'tvChartGroup'});\n groupOptions = input<DeepPartial<ChartOptions>>();\n showAllTimeScales = input<boolean>(false);\n minimumWidth = input<number>(80);\n\n readonly #collector = inject(TVChartCollectorDirective<T, HorzItemScale>);\n\n constructor() {\n effect(() => {\n this.#collector.charts()\n ?.filter(filterChartsByIds(this.ids()))\n .forEach((chart, index, charts) => {\n chart.applyOptions(\n this.#getStyles(index === charts.length - 1)\n );\n })\n });\n }\n\n #getStyles(isBottomTimeScale: boolean): DeepPartial<ChartOptions> {\n const options = this.groupOptions() || {},\n group: DeepPartial<ChartOptions> = {\n timeScale: {\n visible: isBottomTimeScale || this.showAllTimeScales(),\n },\n rightPriceScale: {\n minimumWidth: this.minimumWidth(),\n }\n };\n\n return deepmerge(group, options)\n }\n}\n","import {inject, Provider} from \"@angular/core\";\nimport {SeriesType} from \"lightweight-charts\";\nimport {ChartFactory, SeriesFactory, tvChartFactory, TVChart} from \"../../core\";\n\n\nexport const tvChartProvider: Provider = {\n provide: TVChart,\n useFactory: tvChartProviderFactory\n}\n\n\nexport const tvChartProviderWithExistenceCheck: Provider = {\n provide: TVChart,\n useFactory: () => {\n const parentChart = inject(TVChart, {optional: true, skipSelf: true});\n return parentChart || tvChartProviderFactory();\n }\n}\n\n\nexport function tvChartProviderFactory<T extends SeriesType>(): TVChart<T> {\n const chartFactory = inject(ChartFactory),\n seriesFactory = inject(SeriesFactory);\n\n return tvChartFactory(chartFactory, seriesFactory);\n}\n","import {Directive, input} from \"@angular/core\";\nimport {ChartOptions, DeepPartial, SeriesMarker} from \"lightweight-charts\";\n\n\n@Directive({\n selector: '[tvChartInputs]',\n standalone: true,\n})\nexport class TVChartInputsDirective<HorzScaleItem> {\n id = input<string>();\n options = input<DeepPartial<ChartOptions>>();\n markers = input<SeriesMarker<HorzScaleItem>[]>();\n}\n\n\nexport const tvChartInputsDirectiveHostDef = {\n directive: TVChartInputsDirective,\n inputs: ['id', 'options', 'markers']\n}\n","import {Directive, inject} from \"@angular/core\";\nimport {SeriesType} from \"lightweight-charts\";\nimport {TVChart} from \"../../core\";\nimport {outputFromObservable} from \"@angular/core/rxjs-interop\";\n\n\n@Directive({\n selector: '[tvChartOutputs]',\n standalone: true,\n})\nexport class TVChartOutputsDirective<T extends SeriesType, HorzScaleItem> {\n\n readonly #chart = inject(TVChart<T, HorzScaleItem>);\n\n readonly initialised = outputFromObservable(this.#chart.initialised$);\n readonly chartClick = outputFromObservable(this.#chart.click$);\n readonly chartDBLClick = outputFromObservable(this.#chart.dblClick$);\n readonly crosshairMoved = outputFromObservable(this.#chart.crossHairMove$);\n readonly visibleTimeRangeChanged = outputFromObservable(this.#chart.visibleTimeRangeChange$);\n readonly visibleLogicalRangeChanged = outputFromObservable(this.#chart.visibleLogicalRangeChange$);\n readonly sizeChanged = outputFromObservable(this.#chart.sizeChange$);\n readonly dataChanged = outputFromObservable(this.#chart.dataChange$);\n}\n\n\nexport const tvChartOutputsDirectiveHostDef = {\n directive: TVChartOutputsDirective,\n outputs: [\n 'initialised',\n 'chartClick',\n 'chartDBLClick',\n 'crosshairMoved',\n 'visibleLogicalRangeChanged',\n 'visibleTimeRangeChanged',\n 'sizeChanged',\n 'dataChanged'\n ]\n}\n","import deepmerge from \"deepmerge\";\nimport {\n Directive,\n ElementRef,\n OnInit,\n OnDestroy,\n inject,\n input,\n effect,\n} from '@angular/core';\n\nimport {\n ChartOptions,\n ColorType,\n DeepPartial, ICustomSeriesPaneView,\n LineStyle,\n SeriesDataItemTypeMap,\n SeriesPartialOptionsMap,\n SeriesType\n} from \"lightweight-charts\";\nimport {TVChart} from \"../../core\";\nimport {tvChartProviderWithExistenceCheck} from \"../providers/tv-chart.provider\";\nimport {TVChartInputsDirective, tvChartInputsDirectiveHostDef} from \"./chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"./charts-outputs.directive\";\n\n\nexport const DEFAULT_CHART_OPTIONS: DeepPartial<ChartOptions> = {\n height: 300,\n autoSize: true,\n timeScale: {\n fixRightEdge: true,\n lockVisibleTimeRangeOnResize: true,\n timeVisible: true,\n secondsVisible: false,\n },\n crosshair: {\n vertLine: {\n style: LineStyle.LargeDashed\n },\n horzLine: {\n style: LineStyle.LargeDashed\n },\n }\n}\n\n\nexport const DEFAULT_DARK_CHART_OPTIONS: DeepPartial<ChartOptions> = deepmerge(\n DEFAULT_CHART_OPTIONS, {\n layout: {\n background: { type: ColorType.Solid, color: '#222' },\n textColor: '#DDD',\n },\n grid: {\n vertLines: { color: '#444' },\n horzLines: { color: '#444' },\n },\n timeScale: {\n borderColor: '#555',\n },\n leftPriceScale: {\n borderColor: '#555'\n },\n rightPriceScale: {\n borderColor: '#555'\n },\n crosshair: {\n vertLine: {\n color: '#fff',\n labelBackgroundColor: '#aaa',\n style: LineStyle.SparseDotted\n },\n horzLine: {\n color: '#fff',\n labelBackgroundColor: '#aaa',\n style: LineStyle.SparseDotted\n },\n }\n});\n\n\n\n@Directive({\n selector: '[tvChart]',\n standalone: true,\n providers: [tvChartProviderWithExistenceCheck],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ]\n})\nexport class TVChartDirective<T extends SeriesType, HorzScaleItem> implements OnInit, OnDestroy {\n\n type = input.required<T>({alias: 'tvChart'});\n seriesOptions = input<SeriesPartialOptionsMap[T]>();\n data = input<SeriesDataItemTypeMap<HorzScaleItem>[T][]>();\n customSeriesView = input<ICustomSeriesPaneView<HorzScaleItem>>();\n\n readonly #inputs = inject(TVChartInputsDirective);\n readonly #element = inject(ElementRef<HTMLElement>).nativeElement;\n readonly #chart = inject(TVChart<T, HorzScaleItem>);\n\n constructor() {\n\n effect(() => {\n const options = this.#inputs.options();\n if(!options) {\n return;\n }\n this.#chart.applyOptions(options);\n });\n\n effect(() => {\n const seriesOptions = this.seriesOptions();\n if(!seriesOptions) {\n return;\n }\n this.#chart.applySeriesOptions(seriesOptions);\n });\n\n effect(() => {\n const data = this.data();\n if(!data) {\n return;\n }\n this.#chart.setData(data);\n });\n\n effect(() => {\n const markers = this.#inputs.markers();\n if(!markers) {\n return;\n }\n this.#chart.setMarkers(markers);\n });\n }\n\n ngOnInit() {\n const options = deepmerge(DEFAULT_CHART_OPTIONS, this.#inputs.options() || {});\n this.#chart.initialise(\n this.#element,\n this.type(),\n this.#inputs.id(),\n options,\n this.seriesOptions() || {},\n ...(this.customSeriesView() ? [this.customSeriesView()] : [] as any)\n );\n }\n\n ngOnDestroy() {\n this.#chart.remove();\n }\n}\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {TVChartDirective} from \"../chart.directive\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {TVChartInputsDirective, tvChartInputsDirectiveHostDef} from \"../chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\nimport {CustomData, CustomSeriesPartialOptions, ICustomSeriesPaneView, Time} from \"lightweight-charts\";\n\n\n@Component({\n selector: 'tv-custom-series-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './custom-chart.component.html',\n styleUrl: './custom-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TVChartCustomSeriesComponent<HorzScaleItem = Time> {\n seriesOptions = input<CustomSeriesPartialOptions>({});\n data = input<CustomData<HorzScaleItem>[]>();\n customSeriesView = input<ICustomSeriesPaneView<HorzScaleItem>>();\n\n readonly inputs = inject(TVChartInputsDirective);\n}\n","\n<div tvChart=\"Custom\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [customSeriesView]=\"customSeriesView()\"\n [data]=\"data()\">\n</div>\n","import {Component, effect, inject, input, viewChild} from '@angular/core';\nimport {\n CandlestickData,\n CandlestickSeriesPartialOptions,\n HistogramData,\n HistogramSeriesPartialOptions,\n ISeriesApi\n} from \"lightweight-charts\";\n\nimport {TVChartDirective} from \"../chart.directive\";\nimport {TVChartInputsDirective, tvChartInputsDirectiveHostDef} from \"../chart-inputs.directive\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {TVChart} from \"../../../core\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\n\n\nconst DEFAULT_DARK_SERIES_OPTIONS: CandlestickSeriesPartialOptions = {\n wickUpColor: 'rgb(54, 116, 217)',\n upColor: 'rgb(54, 116, 217)',\n wickDownColor: 'rgb(225, 50, 85)',\n downColor: 'rgb(225, 50, 85)',\n borderVisible: false,\n}\n\n\nconst DEFAULT_HISTOGRAM_SERIES_OPTIONS: HistogramSeriesPartialOptions = {\n color: '#26a69a',\n priceFormat: {\n type: 'volume',\n },\n priceScaleId: ''\n}\n\n\n@Component({\n selector: 'tv-candlestick-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './candlestick-chart.component.html',\n styleUrl: './candlestick-chart.component.scss'\n})\nexport class TVCandleStickChartComponent<HorzScaleItem> {\n\n seriesOptions = input<CandlestickSeriesPartialOptions>({});\n volumeOptions = input<HistogramSeriesPartialOptions>(DEFAULT_HISTOGRAM_SERIES_OPTIONS);\n\n data = input<CandlestickData<HorzScaleItem>[]>();\n volume = input<HistogramData<HorzScaleItem>[]>();\n\n chart = viewChild<TVChartDirective<'Candlestick', HorzScaleItem>, TVChart<'Candlestick', HorzScaleItem>>(\n TVChartDirective<'Candlestick', HorzScaleItem>,\n {read: TVChart}\n );\n\n readonly inputs = inject(TVChartInputsDirective<HorzScaleItem>);\n\n #histogramSeries?: ISeriesApi<'Histogram', HorzScaleItem>;\n\n constructor() {\n\n effect(() => {\n const data = this.volume(),\n chart = this.chart()?.chart;\n\n if(!data || !chart) {\n return;\n }\n this.#setVolume(data);\n });\n }\n\n #setVolume(data: HistogramData<HorzScaleItem>[]): void {\n if(!this.#histogramSeries) {\n this.#initialiseHistogram();\n }\n this.#histogramSeries!.setData(data);\n }\n\n #initialiseHistogram(): void {\n\n const chart = this.chart();\n\n if(!chart) {\n console.warn('TVCandleStickChartComponent::initialiseHistogram - Chart not initialised')\n return;\n }\n\n ({series: this.#histogramSeries} = chart.addAdditionalSeries('Histogram', this.volumeOptions()));\n\n if(!this.#histogramSeries) {\n return;\n }\n\n this.#histogramSeries.priceScale().applyOptions({\n scaleMargins: {\n top: 0.7,\n bottom: 0,\n },\n });\n }\n}\n","\n<div tvChart=\"Candlestick\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [data]=\"data()\">\n</div>\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {HistogramData, HistogramSeriesPartialOptions, Time} from \"lightweight-charts\";\nimport {TVChartDirective} from \"../chart.directive\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {tvChartInputsDirectiveHostDef, TVChartInputsDirective} from \"../chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\n\n\nconst DEFAULT_HISTOGRAM_SERIES_OPTIONS: HistogramSeriesPartialOptions = {\n color: '#26a69a',\n priceFormat: {\n type: 'volume',\n }\n}\n\n\n@Component({\n selector: 'tv-histogram-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './histogram-chart.component.html',\n styleUrl: './histogram-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TVHistogramChartComponent {\n seriesOptions = input<HistogramSeriesPartialOptions>(DEFAULT_HISTOGRAM_SERIES_OPTIONS);\n data = input<HistogramData<Time>[]>();\n\n readonly inputs = inject(TVChartInputsDirective);\n}\n","\n<div tvChart=\"Histogram\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [data]=\"data()\">\n</div>\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {TVChartDirective} from \"../chart.directive\";\nimport {LineData, LineSeriesPartialOptions, Time} from \"lightweight-charts\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {tvChartInputsDirectiveHostDef, TVChartInputsDirective} from \"../chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\n\n\n@Component({\n selector: 'tv-line-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './line-chart.component.html',\n styleUrl: './line-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TVLineChartDirective {\n seriesOptions = input<LineSeriesPartialOptions>({});\n data = input<LineData<Time>[]>();\n\n readonly inputs = inject(TVChartInputsDirective);\n}\n","\n<div tvChart=\"Line\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [data]=\"data()\">\n</div>\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {BarData, BarSeriesPartialOptions, Time} from \"lightweight-charts\";\nimport {TVChartDirective} from \"../chart.directive\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {TVChartInputsDirective, tvChartInputsDirectiveHostDef} from \"../chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\n\n\nconst DEFAULT_BAR_SERIES_OPTIONS: BarSeriesPartialOptions = {\n priceFormat: {\n type: 'volume',\n }\n}\n\n\n@Component({\n selector: 'tv-bar-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './bar-chart.component.html',\n styleUrl: './bar-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TVBarChartDirective {\n seriesOptions = input<BarSeriesPartialOptions>(DEFAULT_BAR_SERIES_OPTIONS);\n data = input<BarData<Time>[]>();\n\n readonly inputs = inject(TVChartInputsDirective);\n}\n","\n<div tvChart=\"Bar\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [data]=\"data()\">\n</div>\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {BaselineData, BaselineSeriesPartialOptions, Time} from \"lightweight-charts\";\nimport {TVChartDirective} from \"../chart.directive\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {TVChartInputsDirective, tvChartInputsDirectiveHostDef} from \"../chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\n\n\n@Component({\n selector: 'tv-baseline-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './baseline-chart.component.html',\n styleUrl: './baseline-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TVBaselineChartComponent {\n seriesOptions = input<BaselineSeriesPartialOptions>({});\n data = input<BaselineData<Time>[]>();\n\n readonly inputs = inject(TVChartInputsDirective);\n}\n","\n<div tvChart=\"Baseline\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [data]=\"data()\">\n</div>\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {AreaData, AreaSeriesPartialOptions, Time} from \"lightweight-charts\";\nimport {TVChartDirective} from \"../chart.directive\";\nimport {tvChartProvider} from \"../../providers/tv-chart.provider\";\nimport {TVChartInputsDirective, tvChartInputsDirectiveHostDef} from \"../chart-inputs.directive\";\nimport {tvChartOutputsDirectiveHostDef} from \"../charts-outputs.directive\";\n\n\n@Component({\n selector: 'tv-area-chart',\n imports: [TVChartDirective],\n providers: [tvChartProvider],\n hostDirectives: [\n tvChartInputsDirectiveHostDef,\n tvChartOutputsDirectiveHostDef\n ],\n templateUrl: './area-chart.component.html',\n styleUrl: './area-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TVAreaChartComponent {\n seriesOptions = input<AreaSeriesPartialOptions>({});\n data = input<AreaData<Time>[]>();\n\n readonly inputs = inject(TVChartInputsDirective);\n}\n","\n<div tvChart=\"Area\"\n class=\"chart\"\n [id]=\"inputs.id()\"\n [options]=\"inputs.options()\"\n [markers]=\"inputs.markers()\"\n [seriesOptions]=\"seriesOptions()\"\n [data]=\"data()\">\n</div>\n","import {Directive, effect, inject, input} from '@angular/core';\nimport {TVChartCollectorDirective} from \"../../chart-collector/chart-collector.directive\";\nimport {TVChart} from \"../../../core\";\nimport {SeriesType} from \"lightweight-charts\";\n\n\nexport type ChartBorderStyles = {\n borderColor?: string\n borderVisible?: boolean\n}\n\n\n@Directive({\n selector: '[tvChartBorder]',\n standalone: true\n})\nexport class TVChartBorderDirective<T extends SeriesType, HorzItemScale> {\n\n borderStyles = input.required<ChartBorderStyles>({alias: 'tvChartBorder'});\n\n readonly #collector = inject(TVChartCollectorDirective<T, HorzItemScale>);\n\n constructor() {\n effect(() => {\n this.#collector.charts()?.forEach(chart => {\n chart.applyOptions(this.#getStyles(chart) || {});\n })\n });\n }\n\n #getStyles(chart: TVChart<T, HorzItemScale>) {\n const borderStyles = this.borderStyles(),\n current = chart.options;\n\n if(!current) {\n return;\n }\n\n return {\n timeScale: {\n borderColor: borderStyles.borderColor || current.timeScale?.borderColor,\n borderVisible: borderStyles.borderVisible || current.timeScale?.borderVisible\n },\n leftPriceScale: {\n borderColor: borderStyles.borderColor || current.leftPriceScale?.borderColor,\n borderVisible: borderStyles.borderVisible || current.leftPriceScale?.borderVisible\n },\n rightPriceScale: {\n borderColor: borderStyles.borderColor || current.rightPriceScale?.borderColor,\n borderVisible: borderStyles.borderVisible || current.rightPriceScale?.borderVisible\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TVChartInputsDirective","i2.TVChartOutputsDirective","DEFAULT_HISTOGRAM_SERIES_OPTIONS"],"mappings":"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"}