UNPKG

ngx-lightweight-charts

Version:
1 lines 99.4 kB
{"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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"}