{"version":3,"file":"lightweight-charts-react-components.mjs","sources":["webpack://lightweight-charts-react-components/./src/chart/ChartContext.ts","webpack://lightweight-charts-react-components/./src/chart/defaultChartOptions.ts","webpack://lightweight-charts-react-components/./src/chart/useChart.ts","webpack://lightweight-charts-react-components/./src/chart/ChartComponent.tsx","webpack://lightweight-charts-react-components/./src/chart/ChartWrapper.tsx","webpack://lightweight-charts-react-components/./src/chart/OptionsChart.tsx","webpack://lightweight-charts-react-components/./src/chart/YieldCurveChart.tsx","webpack://lightweight-charts-react-components/./src/chart/CustomChart.tsx","webpack://lightweight-charts-react-components/./src/scales/TimeScaleContext.ts","webpack://lightweight-charts-react-components/./src/version.ts","webpack://lightweight-charts-react-components/./src/_shared/InternalError.ts","webpack://lightweight-charts-react-components/./src/_shared/docsBaseUrl.ts","webpack://lightweight-charts-react-components/./src/_shared/useSafeContext.ts","webpack://lightweight-charts-react-components/./src/pane/PaneContext.ts","webpack://lightweight-charts-react-components/./src/pane/usePaneContext.ts","webpack://lightweight-charts-react-components/./src/scales/useTimeScale.ts","webpack://lightweight-charts-react-components/./src/scales/TimeScale.tsx","webpack://lightweight-charts-react-components/./src/scales/usePriceScale.ts","webpack://lightweight-charts-react-components/./src/scales/PriceScale.tsx","webpack://lightweight-charts-react-components/./src/scales/useTimeScaleFitContentTrigger.ts","webpack://lightweight-charts-react-components/./src/scales/TimeScaleFitContentTrigger.tsx","webpack://lightweight-charts-react-components/./src/series/SeriesContext.ts","webpack://lightweight-charts-react-components/./src/series/useSeries.ts","webpack://lightweight-charts-react-components/./src/series/SeriesTemplate.tsx","webpack://lightweight-charts-react-components/./src/series/LineSeries.tsx","webpack://lightweight-charts-react-components/./src/series/HistogramSeries.tsx","webpack://lightweight-charts-react-components/./src/series/CandlestickSeries.tsx","webpack://lightweight-charts-react-components/./src/series/AreaSeries.tsx","webpack://lightweight-charts-react-components/./src/series/BaselineSeries.tsx","webpack://lightweight-charts-react-components/./src/series/BarSeries.tsx","webpack://lightweight-charts-react-components/./src/series/CustomSeries.tsx","webpack://lightweight-charts-react-components/./src/priceLine/usePriceLine.ts","webpack://lightweight-charts-react-components/./src/priceLine/PriceLine.tsx","webpack://lightweight-charts-react-components/./src/markers/useMarkers.ts","webpack://lightweight-charts-react-components/./src/markers/Markers.tsx","webpack://lightweight-charts-react-components/./src/_shared/useLatestRef.ts","webpack://lightweight-charts-react-components/./src/watermark/useWatermark.ts","webpack://lightweight-charts-react-components/./src/watermark/Watermark.tsx","webpack://lightweight-charts-react-components/./src/primitives/useReactivePrimitive.ts","webpack://lightweight-charts-react-components/./src/primitives/usePanePrimitive.ts","webpack://lightweight-charts-react-components/./src/primitives/PanePrimitive.tsx","webpack://lightweight-charts-react-components/./src/primitives/useSeriesPrimitive.ts","webpack://lightweight-charts-react-components/./src/primitives/SeriesPrimitive.tsx","webpack://lightweight-charts-react-components/./src/pane/usePane.ts","webpack://lightweight-charts-react-components/./src/pane/Pane.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { type IChartContext } from \"./types\";\nimport type { IChartApiBase } from \"lightweight-charts\";\n\nconst ChartContext = createContext<IChartContext<unknown, IChartApiBase<unknown>> | null>(\n  null\n);\n\nChartContext.displayName = \"ChartContext\";\nexport { ChartContext };\n","import type { DefaultChartOptions } from \"./types\";\n\nconst defaultChartOptions: DefaultChartOptions = {\n  addDefaultPane: false,\n};\n\nexport { defaultChartOptions };\n","import {\n  createChart,\n  type ChartOptionsImpl,\n  type DeepPartial,\n  type Time,\n} from \"lightweight-charts\";\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport { defaultChartOptions } from \"./defaultChartOptions\";\nimport type {\n  ChartApiInstance,\n  ChartApiRef,\n  CreateChartApi,\n  UseChartOptions,\n} from \"./types\";\n\nexport const useChart = <\n  HorzScaleItem = Time,\n  TChartApi extends ChartApiInstance<HorzScaleItem> = ChartApiInstance<HorzScaleItem>,\n  TOptions extends ChartOptionsImpl<HorzScaleItem> = ChartOptionsImpl<HorzScaleItem>,\n>({\n  container,\n  onClick,\n  onCrosshairMove,\n  onInit,\n  options = {},\n  onDblClick,\n  createChartApi = createChart as unknown as CreateChartApi<\n    HorzScaleItem,\n    TChartApi,\n    TOptions\n  >,\n}: UseChartOptions<HorzScaleItem, TChartApi, TOptions>) => {\n  const [isReady, setIsReady] = useState(false);\n\n  const chartApiRef = useRef<ChartApiRef<HorzScaleItem, TChartApi>>({\n    _chart: null,\n    api() {\n      return this._chart;\n    },\n    init() {\n      if (this._chart === null) {\n        const chart = createChartApi(container, {\n          ...defaultChartOptions,\n          ...options,\n        } as DeepPartial<TOptions>);\n        this._chart = chart;\n\n        if (onInit) {\n          onInit(this._chart);\n        }\n      }\n\n      if (!isReady) {\n        setIsReady(true);\n      }\n\n      return this._chart;\n    },\n    clear() {\n      if (this._chart !== null) {\n        setIsReady(false);\n        this._chart.remove();\n        this._chart = null;\n      }\n    },\n  });\n\n  useLayoutEffect(() => {\n    chartApiRef.current.init();\n\n    return () => {\n      chartApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!container) return;\n\n    if (onClick) {\n      chartApiRef.current.api()?.subscribeClick(onClick);\n    }\n\n    return () => {\n      if (onClick) {\n        chartApiRef.current.api()?.unsubscribeClick(onClick);\n      }\n    };\n  }, [onClick]);\n\n  useLayoutEffect(() => {\n    if (!container) return;\n\n    if (onCrosshairMove) {\n      chartApiRef.current.api()?.subscribeCrosshairMove(onCrosshairMove);\n    }\n\n    return () => {\n      if (onCrosshairMove) {\n        chartApiRef.current.api()?.unsubscribeCrosshairMove(onCrosshairMove);\n      }\n    };\n  }, [onCrosshairMove]);\n\n  useLayoutEffect(() => {\n    if (!container) return;\n\n    if (onDblClick) {\n      chartApiRef.current.api()?.subscribeDblClick(onDblClick);\n    }\n\n    return () => {\n      if (onDblClick) {\n        chartApiRef.current.api()?.unsubscribeDblClick(onDblClick);\n      }\n    };\n  }, [onDblClick]);\n\n  useLayoutEffect(() => {\n    if (!container) return;\n\n    chartApiRef.current.api()?.applyOptions({\n      ...defaultChartOptions,\n      ...options,\n    } as DeepPartial<TOptions>);\n  }, [options]);\n\n  return { chartApiRef, isReady };\n};\n","import React from \"react\";\nimport { ChartContext } from \"./ChartContext\";\nimport { useChart } from \"./useChart\";\nimport type { ChartApiInstance, ChartComponentProps } from \"./types\";\nimport type { ChartOptionsImpl } from \"lightweight-charts\";\n\nconst ChartComponent = <\n  HorzScaleItem,\n  TChartApi extends ChartApiInstance<HorzScaleItem> = ChartApiInstance<HorzScaleItem>,\n  TOptions extends ChartOptionsImpl<HorzScaleItem> = ChartOptionsImpl<HorzScaleItem>,\n>({\n  children,\n  container,\n  onClick,\n  onCrosshairMove,\n  onInit,\n  options,\n  onDblClick,\n  chartKind = \"time\",\n  createChartApi,\n}: ChartComponentProps<HorzScaleItem, TChartApi, TOptions>) => {\n  const {\n    chartApiRef: { current: chartApiRef },\n    isReady,\n  } = useChart({\n    container,\n    onClick,\n    onCrosshairMove,\n    onInit,\n    options,\n    onDblClick,\n    createChartApi,\n  });\n\n  return (\n    <ChartContext.Provider\n      value={{\n        chartApiRef: chartApiRef as never,\n        isReady,\n        chartKind,\n      }}\n    >\n      {children}\n    </ChartContext.Provider>\n  );\n};\n\nexport { ChartComponent };\n","import { createChart } from \"lightweight-charts\";\nimport { forwardRef, useCallback, useState } from \"react\";\nimport React from \"react\";\nimport { ChartComponent } from \"./ChartComponent\";\nimport type { ChartProps } from \"./types\";\nimport type {\n  ForwardRefExoticComponent,\n  ForwardRefRenderFunction,\n  RefAttributes,\n} from \"react\";\n\nconst ChartRenderFunction: ForwardRefRenderFunction<HTMLDivElement, ChartProps> = (\n  { children, containerProps, ...rest },\n  ref\n) => {\n  const [container, setContainer] = useState<HTMLDivElement>();\n  const containerRef = useCallback(\n    (node: HTMLDivElement | null) => {\n      setContainer(node ?? undefined);\n\n      if (ref) {\n        if (typeof ref === \"function\") {\n          ref(node);\n        } else {\n          ref.current = node;\n        }\n      }\n    },\n    [ref]\n  );\n\n  return (\n    <div\n      ref={containerRef}\n      aria-hidden={containerProps?.[\"aria-hidden\"] ?? true}\n      {...containerProps}\n    >\n      {!!container && (\n        <ChartComponent\n          container={container}\n          createChartApi={createChart}\n          chartKind=\"time\"\n          {...rest}\n        >\n          {children}\n        </ChartComponent>\n      )}\n    </div>\n  );\n};\n\n/**\n * Chart component that can be used to create a chart.\n *\n * @param props - The properties for the chart.\n * @param ref - The ref to access the chart API.\n * @returns A React component that renders the chart.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/chart | Chart documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/chart-types | TradingView documentation for charts}\n * @example\n * ```tsx\n * <Chart>\n *   <Pane stretchFactor={2}>\n *     ...\n *   </Pane>\n * </Chart>\n * ```\n */\nexport const ChartWrapper: ForwardRefExoticComponent<\n  ChartProps & RefAttributes<HTMLDivElement>\n> = forwardRef(ChartRenderFunction);\nChartWrapper.displayName = \"ChartWrapper\";\n","import {\n  createOptionsChart,\n  type IChartApiBase,\n  type PriceChartOptions,\n} from \"lightweight-charts\";\nimport { forwardRef, useCallback, useState } from \"react\";\nimport React from \"react\";\nimport { ChartComponent } from \"./ChartComponent\";\nimport type { OptionsChartProps } from \"./types\";\nimport type {\n  ForwardRefExoticComponent,\n  ForwardRefRenderFunction,\n  RefAttributes,\n} from \"react\";\n\nconst OptionsChartRenderFunction: ForwardRefRenderFunction<\n  HTMLDivElement,\n  OptionsChartProps\n> = ({ children, containerProps, ...rest }, ref) => {\n  const [container, setContainer] = useState<HTMLDivElement>();\n  const containerRef = useCallback(\n    (node: HTMLDivElement | null) => {\n      setContainer(node ?? undefined);\n\n      if (ref) {\n        if (typeof ref === \"function\") {\n          ref(node);\n        } else {\n          ref.current = node;\n        }\n      }\n    },\n    [ref]\n  );\n\n  return (\n    <div\n      ref={containerRef}\n      aria-hidden={containerProps?.[\"aria-hidden\"] ?? true}\n      {...containerProps}\n    >\n      {!!container && (\n        <ChartComponent<number, IChartApiBase<number>, PriceChartOptions>\n          container={container}\n          createChartApi={createOptionsChart}\n          chartKind=\"options\"\n          {...rest}\n        >\n          {children}\n        </ChartComponent>\n      )}\n    </div>\n  );\n};\n\n/**\n * OptionsChart component that can be used to create a price-based horizontal scale chart.\n *\n * @param props - The properties for the options chart.\n * @param ref - The ref to access the chart container.\n * @returns A React component that renders the options chart.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/chart | Chart documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/chart-types#options-chart-price-based | TradingView documentation for options charts}\n * @example\n * ```tsx\n * <OptionsChart>\n *   <LineSeries data={[{ time: 95, value: 1.2 }, { time: 100, value: 2.8 }]} />\n * </OptionsChart>\n * ```\n */\nexport const OptionsChart: ForwardRefExoticComponent<\n  OptionsChartProps & RefAttributes<HTMLDivElement>\n> = forwardRef(OptionsChartRenderFunction);\nOptionsChart.displayName = \"OptionsChart\";\n","import {\n  createYieldCurveChart,\n  type IYieldCurveChartApi,\n  type YieldCurveChartOptions,\n} from \"lightweight-charts\";\nimport { forwardRef, useCallback, useState } from \"react\";\nimport React from \"react\";\nimport { ChartComponent } from \"./ChartComponent\";\nimport type { YieldCurveChartProps } from \"./types\";\nimport type {\n  ForwardRefExoticComponent,\n  ForwardRefRenderFunction,\n  RefAttributes,\n} from \"react\";\n\nconst YieldCurveChartRenderFunction: ForwardRefRenderFunction<\n  HTMLDivElement,\n  YieldCurveChartProps\n> = ({ children, containerProps, ...rest }, ref) => {\n  const [container, setContainer] = useState<HTMLDivElement>();\n  const containerRef = useCallback(\n    (node: HTMLDivElement | null) => {\n      setContainer(node ?? undefined);\n\n      if (ref) {\n        if (typeof ref === \"function\") {\n          ref(node);\n        } else {\n          ref.current = node;\n        }\n      }\n    },\n    [ref]\n  );\n\n  return (\n    <div\n      ref={containerRef}\n      aria-hidden={containerProps?.[\"aria-hidden\"] ?? true}\n      {...containerProps}\n    >\n      {!!container && (\n        <ChartComponent<number, IYieldCurveChartApi, YieldCurveChartOptions>\n          container={container}\n          createChartApi={createYieldCurveChart}\n          chartKind=\"yield-curve\"\n          {...rest}\n        >\n          {children}\n        </ChartComponent>\n      )}\n    </div>\n  );\n};\n\n/**\n * YieldCurveChart component that can be used to create a yield curve chart.\n *\n * @param props - The properties for the yield curve chart.\n * @param ref - The ref to access the chart container.\n * @returns A React component that renders the yield curve chart.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/chart | Chart documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/chart-types#yield-curve-chart | TradingView documentation for yield curve charts}\n * @example\n * ```tsx\n * <YieldCurveChart>\n *   <LineSeries data={[{ time: 1, value: 5.2 }, { time: 12, value: 4.7 }]} />\n * </YieldCurveChart>\n * ```\n */\nexport const YieldCurveChart: ForwardRefExoticComponent<\n  YieldCurveChartProps & RefAttributes<HTMLDivElement>\n> = forwardRef(YieldCurveChartRenderFunction);\nYieldCurveChart.displayName = \"YieldCurveChart\";\n","import {\n  createChartEx,\n  type DeepPartial,\n  type IChartApiBase,\n  type IHorzScaleBehavior,\n} from \"lightweight-charts\";\nimport { forwardRef, useCallback, useState } from \"react\";\nimport React from \"react\";\nimport { ChartComponent } from \"./ChartComponent\";\nimport type { CustomChartProps } from \"./types\";\nimport type { ForwardedRef, JSX, RefAttributes } from \"react\";\n\ntype CustomChartForwardRefComponent = (<\n  HorzScaleItem,\n  THorzScaleBehavior extends IHorzScaleBehavior<HorzScaleItem>,\n>(\n  props: CustomChartProps<HorzScaleItem, THorzScaleBehavior> &\n    RefAttributes<HTMLDivElement>\n) => JSX.Element) & {\n  displayName: string;\n};\n\nconst CustomChartRenderFunction = <\n  HorzScaleItem,\n  THorzScaleBehavior extends IHorzScaleBehavior<HorzScaleItem>,\n>(\n  {\n    children,\n    containerProps,\n    horzScaleBehavior,\n    ...rest\n  }: CustomChartProps<HorzScaleItem, THorzScaleBehavior>,\n  ref: ForwardedRef<HTMLDivElement>\n): JSX.Element => {\n  const [container, setContainer] = useState<HTMLDivElement>();\n  const containerRef = useCallback(\n    (node: HTMLDivElement | null) => {\n      setContainer(node ?? undefined);\n\n      if (ref) {\n        if (typeof ref === \"function\") {\n          ref(node);\n        } else {\n          ref.current = node;\n        }\n      }\n    },\n    [ref]\n  );\n\n  const createCustomChart = useCallback(\n    (\n      chartContainer: HTMLElement,\n      options?: DeepPartial<ReturnType<THorzScaleBehavior[\"options\"]>>\n    ) => {\n      return createChartEx<HorzScaleItem, THorzScaleBehavior>(\n        chartContainer,\n        horzScaleBehavior,\n        options\n      );\n    },\n    [horzScaleBehavior]\n  );\n\n  return (\n    <div\n      ref={containerRef}\n      aria-hidden={containerProps?.[\"aria-hidden\"] ?? true}\n      {...containerProps}\n    >\n      {!!container && (\n        <ChartComponent<\n          HorzScaleItem,\n          IChartApiBase<HorzScaleItem>,\n          ReturnType<THorzScaleBehavior[\"options\"]>\n        >\n          container={container}\n          createChartApi={createCustomChart}\n          chartKind=\"custom\"\n          {...rest}\n        >\n          {children}\n        </ChartComponent>\n      )}\n    </div>\n  );\n};\n\n/**\n * CustomChart component that can be used to create a chart with a custom horizontal scale behavior.\n *\n * @param props - The properties for the custom chart.\n * @param ref - The ref to access the chart container.\n * @returns A React component that renders the custom chart.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/chart | Chart documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/chart-types#custom-horizontal-scale-chart | TradingView documentation for custom horizontal scale charts}\n * @example\n * ```tsx\n * <CustomChart horzScaleBehavior={new (defaultHorzScaleBehavior())()}>\n *   <LineSeries data={[{ time: \"2025-01-01\", value: 100 }]} />\n * </CustomChart>\n * ```\n */\nexport const CustomChart = forwardRef(\n  CustomChartRenderFunction\n) as CustomChartForwardRefComponent;\nCustomChart.displayName = \"CustomChart\";\n","import { createContext } from \"react\";\nimport { type ITimeScaleContext } from \"./types\";\n\nconst TimeScaleContext = createContext<ITimeScaleContext<unknown> | null>(null);\nTimeScaleContext.displayName = \"TimeScaleContext\";\nexport { TimeScaleContext };\n","export const version = \"2.5.0\";\n","import { version } from \"../version\";\nimport { docsBaseUrl } from \"./docsBaseUrl\";\n\ntype IBaseErrorParameters = {\n  /**\n   * An operational error refers to an error that occurs during normal program operation\n   * due to external factors or expected failures, not due to bugs in the code itself.\n   */\n  isOperational?: boolean;\n  /**\n   * The cause of the error, if any.\n   * This can be used to provide additional context or information about the error.\n   */\n  cause?: Error | BaseInternalError;\n  /**\n   * A path to the documentation that can help resolve the error.\n   * This is useful for providing users with guidance on how to fix or understand the error.\n   */\n  docsPath?: string;\n};\n\nclass BaseInternalError extends Error {\n  public isOperational: boolean;\n  public override cause?: Error | BaseInternalError;\n\n  constructor(\n    message?: string,\n    { isOperational = true, cause, docsPath }: IBaseErrorParameters = {}\n  ) {\n    super(message);\n\n    this.name = this.constructor.name ?? \"InternalError\";\n    this.isOperational = isOperational;\n    this.cause = cause;\n\n    this.message = `${message ?? \"An error occurred\"}`;\n\n    if (docsPath) {\n      this.message = `${this.message}\\n\\nDocs: see ${docsBaseUrl + docsPath}`;\n    }\n\n    if (version) {\n      this.message = `${this.message}\\n\\nVersion: lightweight-charts-react-components@${version}`;\n    }\n\n    Object.setPrototypeOf(this, BaseInternalError.prototype);\n  }\n}\n\nexport { BaseInternalError };\n","const docsBaseUrl = \"https://ukorvl.github.io/lightweight-charts-react-components/docs/\";\nexport { docsBaseUrl };\n","import { type Context, useContext } from \"react\";\nimport { BaseInternalError } from \"./InternalError\";\n\nconst useSafeContext = <T>(context: Context<T>, errorMessage?: string) => {\n  const currentContextValue = useContext(context);\n\n  if (!currentContextValue) {\n    const ctxName = context.name ?? context.displayName ?? \"Context\";\n    // TODO: Accept a docsPath so missing-context errors can link to the relevant docs.\n    throw new BaseInternalError(errorMessage ?? `${ctxName} not found.`, {\n      isOperational: true,\n    });\n  }\n\n  return currentContextValue;\n};\n\nexport { useSafeContext };\n","import { createContext } from \"react\";\nimport { type IPaneContext } from \"./types\";\n\nconst PaneContext = createContext<IPaneContext<unknown> | null>(null);\n\nPaneContext.displayName = \"PaneContext\";\nexport { PaneContext };\n","import { useContext } from \"react\";\nimport { PaneContext } from \"./PaneContext\";\nimport type { IPaneContext } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\n\nconst usePaneContext = <HorzScaleItem = Time>() => {\n  const paneContext = useContext(PaneContext) as IPaneContext<HorzScaleItem> | null;\n\n  const isInsidePane = !!paneContext;\n  const isPaneReady = !!paneContext?.isReady;\n  const paneApiRef = paneContext?.paneApiRef;\n\n  return { isInsidePane, isPaneReady, paneApiRef };\n};\n\nexport { usePaneContext };\n","import { useLayoutEffect, useRef, useState } from \"react\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport type { IChartContext } from \"@/chart/types\";\nimport { usePaneContext } from \"@/pane/usePaneContext\";\nimport type { TimeScaleApiRef, TimeScaleProps } from \"./types\";\nimport type { IChartApiBase, Time } from \"lightweight-charts\";\n\nexport const useTimeScale = <HorzScaleItem = Time>({\n  onVisibleTimeRangeChange,\n  onVisibleLogicalRangeChange,\n  onSizeChange,\n  visibleRange,\n  visibleLogicalRange,\n  options = {},\n}: Omit<TimeScaleProps<HorzScaleItem>, \"children\">) => {\n  const { isReady: chartIsReady, chartApiRef: chart } = useSafeContext(\n    ChartContext\n  ) as IChartContext<HorzScaleItem, IChartApiBase<HorzScaleItem>>;\n  const { isPaneReady, isInsidePane } = usePaneContext<HorzScaleItem>();\n  const [isReady, setIsReady] = useState(false);\n\n  const timeScaleApiRef = useRef<TimeScaleApiRef<HorzScaleItem>>({\n    _timeScale: null,\n    api() {\n      return this._timeScale;\n    },\n    init() {\n      if (this._timeScale) {\n        return this._timeScale;\n      }\n\n      const chartApi = chart?.api();\n\n      if (!chartApi) {\n        return null;\n      }\n\n      this._timeScale = chartApi.timeScale();\n\n      this._timeScale.applyOptions(options);\n\n      if (visibleRange) {\n        this._timeScale.setVisibleRange(visibleRange);\n      }\n\n      if (visibleLogicalRange) {\n        this._timeScale.setVisibleLogicalRange(visibleLogicalRange);\n      }\n\n      setIsReady(true);\n\n      return this._timeScale;\n    },\n    clear() {\n      this._timeScale = null;\n      setIsReady(false);\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!chartIsReady) return;\n\n    if (isInsidePane && !isPaneReady) {\n      return;\n    }\n\n    timeScaleApiRef.current.init();\n  }, [chartIsReady, isInsidePane, isPaneReady]);\n\n  useLayoutEffect(() => {\n    return () => {\n      timeScaleApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (options) {\n      timeScaleApiRef.current?.api()?.applyOptions(options);\n    }\n  }, [options]);\n\n  useLayoutEffect(() => {\n    if (!chart || !isReady) return;\n\n    const timeScaleApi = timeScaleApiRef.current.api();\n\n    if (onSizeChange && timeScaleApi) {\n      timeScaleApi.subscribeSizeChange(onSizeChange);\n    }\n\n    return () => {\n      if (onSizeChange && timeScaleApi) {\n        timeScaleApi.unsubscribeSizeChange(onSizeChange);\n      }\n    };\n  }, [chart, isReady, onSizeChange]);\n\n  useLayoutEffect(() => {\n    if (!chart || !isReady) return;\n\n    const timeScaleApi = timeScaleApiRef.current.api();\n\n    if (onVisibleLogicalRangeChange && timeScaleApi) {\n      timeScaleApi.subscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);\n    }\n\n    return () => {\n      if (onVisibleLogicalRangeChange && timeScaleApi) {\n        timeScaleApi.unsubscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);\n      }\n    };\n  }, [chart, isReady, onVisibleLogicalRangeChange]);\n\n  useLayoutEffect(() => {\n    if (!chart || !isReady) return;\n\n    const timeScaleApi = timeScaleApiRef.current.api();\n\n    if (onVisibleTimeRangeChange && timeScaleApi) {\n      timeScaleApi.subscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);\n    }\n\n    return () => {\n      if (onVisibleTimeRangeChange && timeScaleApi) {\n        timeScaleApi.unsubscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);\n      }\n    };\n  }, [chart, isReady, onVisibleTimeRangeChange]);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (visibleRange) {\n      timeScaleApiRef.current?.api()?.setVisibleRange(visibleRange);\n    }\n  }, [visibleRange]);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (visibleLogicalRange) {\n      timeScaleApiRef.current?.api()?.setVisibleLogicalRange(visibleLogicalRange);\n    }\n  }, [visibleLogicalRange]);\n\n  return { timeScaleApiRef, isReady };\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport React from \"react\";\nimport { TimeScaleContext } from \"./TimeScaleContext\";\nimport { useTimeScale } from \"./useTimeScale\";\nimport type { TimeScaleApiRef, TimeScaleProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\ntype GenericTimeScaleComponent = (<HorzScaleItem = Time>(\n  props: TimeScaleProps<HorzScaleItem> & {\n    ref?: ForwardedRef<TimeScaleApiRef<HorzScaleItem>>;\n  }\n) => JSX.Element) & {\n  displayName: string;\n};\n\nconst TimeScaleRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...props }: TimeScaleProps<HorzScaleItem>,\n  ref: ForwardedRef<TimeScaleApiRef<HorzScaleItem>>\n): JSX.Element => {\n  const {\n    timeScaleApiRef: { current: timeScaleApiRef },\n    isReady,\n  } = useTimeScale(props);\n  useImperativeHandle(ref, () => timeScaleApiRef, [timeScaleApiRef]);\n\n  return (\n    <TimeScaleContext.Provider\n      value={{\n        timeScaleApiRef: timeScaleApiRef as never,\n        isReady,\n      }}\n    >\n      {children}\n    </TimeScaleContext.Provider>\n  );\n};\n\n/**\n * TimeScale component that can be used to create/customize time scale in a chart.\n *\n * @param props - The properties for the time scale.\n * @param ref - The ref to access the time scale API.\n * @returns A React component that renders the time scale.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/time-scale | Time Scale documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/time-scale | TradingView documentation for time scale}\n * @example\n * ```tsx\n * <TimeScale\n *   visibleRange={{ from: 0, to: 100 }}\n *   onVisibleTimeRangeChange={() => {}}\n * />\n * ```\n */\nexport const TimeScale = forwardRef(TimeScaleRenderFunction) as GenericTimeScaleComponent;\nTimeScale.displayName = \"TimeScale\";\n","import { useLayoutEffect, useRef } from \"react\";\nimport { BaseInternalError } from \"@/_shared/InternalError\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport { usePaneContext } from \"@/pane/usePaneContext\";\nimport type { PriceScaleProps, PriceScaleApiRef } from \"./types\";\n\nexport const usePriceScale = ({ options = {}, id }: PriceScaleProps) => {\n  const { isReady: chartIsReady, chartApiRef: chart } = useSafeContext(ChartContext);\n  const { isInsidePane, isPaneReady } = usePaneContext();\n\n  const priceScaleApiRef = useRef<PriceScaleApiRef>({\n    _priceScale: null,\n    api() {\n      return this._priceScale;\n    },\n    init() {\n      if (!this._priceScale) {\n        const chartApi = chart?.api();\n\n        if (!chartApi) {\n          return null;\n        }\n\n        this._priceScale = chartApi.priceScale(id);\n\n        this._priceScale.applyOptions(options);\n      }\n\n      return this._priceScale;\n    },\n    setId(idToSet) {\n      if (this._priceScale === null || chart === null) {\n        return;\n      }\n\n      this._priceScale = chart.api()!.priceScale(idToSet);\n      this._priceScale.applyOptions(options);\n    },\n    clear() {\n      this._priceScale = null;\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!chartIsReady) return;\n\n    if (!isInsidePane) {\n      // TODO: Replace the empty docsPath with the published price scale docs route.\n      throw new BaseInternalError(\n        \"PriceScale must be used inside a pane. Please ensure that the component is wrapped in a pane component.\",\n        {\n          isOperational: true,\n          docsPath: \"\",\n        }\n      );\n    }\n\n    if (!isPaneReady) {\n      return;\n    }\n\n    priceScaleApiRef.current.init();\n  }, [chartIsReady, isInsidePane, isPaneReady]);\n\n  useLayoutEffect(() => {\n    return () => {\n      priceScaleApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    priceScaleApiRef.current?.setId(id);\n  }, [id]);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (options) {\n      priceScaleApiRef.current?.api()?.applyOptions(options);\n    }\n  }, [options]);\n\n  return priceScaleApiRef;\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport { usePriceScale } from \"./usePriceScale\";\nimport type { PriceScaleApiRef, PriceScaleProps } from \"./types\";\nimport type { ForwardedRef, ForwardRefExoticComponent, JSX, RefAttributes } from \"react\";\n\nconst PriceScaleRenderFunction = (\n  props: PriceScaleProps,\n  ref: ForwardedRef<PriceScaleApiRef>\n): JSX.Element | null => {\n  const priceScaleApiRef = usePriceScale(props);\n  useImperativeHandle(ref, () => priceScaleApiRef.current, [priceScaleApiRef]);\n\n  return null;\n};\n\n/**\n * PriceScale component that can be used to create/customize price scale in a chart.\n *\n * @param props - The properties for the price scale.\n * @param ref - The ref to access the price scale API.\n * @returns A React component that renders the price scale.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/price-scale | Price Scale documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/price-scale | TradingView documentation for price scale}\n * @example\n * ```tsx\n * <PriceScale id=\"right\" options={{}} />\n * ```\n */\nexport const PriceScale: ForwardRefExoticComponent<\n  PriceScaleProps & RefAttributes<PriceScaleApiRef>\n> = forwardRef(PriceScaleRenderFunction);\nPriceScale.displayName = \"PriceScale\";\n","import { useLayoutEffect } from \"react\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { TimeScaleContext } from \"./TimeScaleContext\";\nimport type { TimeScaleFitContentTriggerProps } from \"./types\";\n\nconst useTimeScaleFitContentTrigger = ({ deps }: TimeScaleFitContentTriggerProps) => {\n  const timeScaleContext = useSafeContext(TimeScaleContext);\n  const { timeScaleApiRef, isReady } = timeScaleContext;\n\n  useLayoutEffect(() => {\n    if (!isReady || !timeScaleApiRef) {\n      return;\n    }\n\n    const timeScale = timeScaleApiRef.api();\n    queueMicrotask(() => {\n      if (timeScale) {\n        timeScale.fitContent();\n      }\n    });\n  }, [...deps, isReady]);\n};\n\nexport { useTimeScaleFitContentTrigger };\n","import { useTimeScaleFitContentTrigger } from \"./useTimeScaleFitContentTrigger\";\nimport type { TimeScaleFitContentTriggerProps } from \"./types\";\nimport type { JSX } from \"react\";\n\n/**\n * TimeScaleFitContentTrigger component that triggers a fit content operation on the time scale.\n *\n * @param props - The properties for the time scale fit content trigger.\n * @returns A React component that triggers a fit content operation on the time scale.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/time-scale-fit-content-trigger | Time Scale Fit Content Trigger documentation}\n * @example\n * ```tsx\n * <TimeScaleFitContentTrigger deps={[...]} />\n * ```\n */\nexport const TimeScaleFitContentTrigger = ({\n  deps,\n}: TimeScaleFitContentTriggerProps): JSX.Element | null => {\n  useTimeScaleFitContentTrigger({ deps });\n\n  return null;\n};\n","import { createContext } from \"react\";\nimport { type ISeriesContext } from \"./types\";\n\nconst SeriesContext = createContext<ISeriesContext<unknown>>({\n  seriesApiRef: null,\n  isReady: false,\n});\nSeriesContext.displayName = \"SeriesContext\";\nexport { SeriesContext };\n","import {\n  LineSeries,\n  CandlestickSeries,\n  HistogramSeries,\n  AreaSeries,\n  BaselineSeries,\n  BarSeries,\n  type IChartApiBase,\n  type Time,\n} from \"lightweight-charts\";\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport { BaseInternalError } from \"@/_shared/InternalError\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport type { IChartContext } from \"@/chart/types\";\nimport { usePaneContext } from \"@/pane/usePaneContext\";\nimport type { CustomSeriesUniqueProps, SeriesApiRef, SeriesTemplateProps } from \"./types\";\nimport type { SeriesDefinition, ISeriesApi, SeriesType } from \"lightweight-charts\";\n\ntype SeriesTypeWithoutCustom = Exclude<SeriesType, \"Custom\">;\n\nexport const useSeries = <T extends SeriesType, HorzScaleItem = Time>({\n  type,\n  data,\n  options = {},\n  reactive = true,\n  seriesOrder,\n  alwaysReplaceData = false,\n  ...rest\n}: Omit<SeriesTemplateProps<T, HorzScaleItem>, \"children\">) => {\n  const {\n    isReady: chartIsReady,\n    chartApiRef: chart,\n    chartKind,\n  } = useSafeContext(ChartContext) as IChartContext<\n    HorzScaleItem,\n    IChartApiBase<HorzScaleItem>\n  >;\n  const { isPaneReady, isInsidePane, paneApiRef } = usePaneContext<HorzScaleItem>();\n  const [isReady, setIsReady] = useState(false);\n\n  const seriesApiRef = useRef<SeriesApiRef<T, HorzScaleItem>>({\n    _series: null,\n    api() {\n      return this._series;\n    },\n    init() {\n      if (!this._series) {\n        const chartApi = chart?.api();\n\n        if (!chartApi) {\n          return null;\n        }\n\n        const paneIndex = isInsidePane ? paneApiRef?.api()?.paneIndex() : undefined;\n\n        if (type === \"Custom\") {\n          const plugin = (rest as CustomSeriesUniqueProps<HorzScaleItem>).plugin;\n          if (!plugin) {\n            // TODO: Link this error to docs covering custom series plugin requirements.\n            throw new BaseInternalError(\"Custom series requires a plugin to be defined\");\n          }\n\n          // TODO: Fix this type cast and infer the correct type\n          (this._series as unknown as ISeriesApi<\"Custom\", HorzScaleItem>) =\n            chartApi.addCustomSeries(plugin, options, paneIndex);\n        } else {\n          if (chartKind === \"yield-curve\" && type !== \"Area\" && type !== \"Line\") {\n            // TODO: Link this error to docs covering YieldCurveChart series constraints.\n            throw new BaseInternalError(\n              \"YieldCurveChart only supports LineSeries and AreaSeries.\",\n              {\n                isOperational: true,\n              }\n            );\n          }\n\n          this._series = chartApi.addSeries(\n            seriesMap[type as SeriesTypeWithoutCustom] as SeriesDefinition<T>,\n            options,\n            paneIndex\n          );\n        }\n\n        this._series?.setData(data);\n        if (seriesOrder !== undefined) {\n          this._series?.setSeriesOrder(seriesOrder);\n        }\n        setIsReady(true);\n      }\n\n      return this._series;\n    },\n    clear() {\n      if (this._series !== null) {\n        chart?.api()?.removeSeries(this._series);\n        this._series = null;\n        setIsReady(false);\n      }\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!chartIsReady) return;\n\n    if (isInsidePane && !isPaneReady) {\n      return;\n    }\n\n    seriesApiRef.current.init();\n  }, [chartIsReady, isInsidePane, isPaneReady]);\n\n  useLayoutEffect(() => {\n    return () => {\n      seriesApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (data && reactive) {\n      const seriesApi = seriesApiRef.current.api();\n\n      if (!seriesApi) {\n        return;\n      }\n\n      const currentData = seriesApi.data();\n      const dataLengthDifference = data.length - currentData.length;\n      const maxIncrementalUpdateThreshold = 1;\n      const shouldReplaceData =\n        alwaysReplaceData ||\n        currentData.length === 0 ||\n        data.length === 0 ||\n        dataLengthDifference < 0 ||\n        dataLengthDifference > maxIncrementalUpdateThreshold;\n\n      if (shouldReplaceData) {\n        seriesApi.setData(data);\n        return;\n      }\n\n      const lastDataPoint = data[data.length - 1];\n      seriesApi.update(lastDataPoint);\n    }\n  }, [data, reactive, alwaysReplaceData]);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (options) {\n      seriesApiRef.current.api()?.applyOptions(options);\n    }\n  }, [options]);\n\n  useLayoutEffect(() => {\n    if (!chart) return;\n\n    if (seriesOrder !== undefined) {\n      seriesApiRef.current.api()?.setSeriesOrder(seriesOrder);\n    }\n  }, [seriesOrder]);\n\n  return { isReady, seriesApiRef };\n};\n\nconst seriesMap: Record<\n  SeriesTypeWithoutCustom,\n  SeriesDefinition<SeriesTypeWithoutCustom>\n> = {\n  Line: LineSeries,\n  Candlestick: CandlestickSeries,\n  Histogram: HistogramSeries,\n  Area: AreaSeries,\n  Baseline: BaselineSeries,\n  Bar: BarSeries,\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport React from \"react\";\nimport { SeriesContext } from \"./SeriesContext\";\nimport { useSeries } from \"./useSeries\";\nimport type { SeriesTemplateProps, SeriesApiRef } from \"./types\";\nimport type { SeriesType, Time } from \"lightweight-charts\";\nimport type { ForwardedRef } from \"react\";\n\ntype GenericSeriesComponent = (<T extends SeriesType, HorzScaleItem = Time>(\n  props: SeriesTemplateProps<T, HorzScaleItem> & {\n    ref?: ForwardedRef<SeriesApiRef<T, HorzScaleItem>>;\n  }\n) => ReturnType<typeof SeriesTemplateRenderFunction>) & {\n  displayName: string;\n};\n\nconst SeriesTemplateRenderFunction = <T extends SeriesType, HorzScaleItem = Time>(\n  { children, ...rest }: SeriesTemplateProps<T, HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<T, HorzScaleItem>>\n) => {\n  const {\n    seriesApiRef: { current: seriesApiRef },\n    isReady,\n  } = useSeries(rest);\n  useImperativeHandle(ref, () => seriesApiRef, [seriesApiRef]);\n\n  return (\n    <SeriesContext.Provider\n      value={{\n        seriesApiRef: seriesApiRef as never,\n        isReady,\n      }}\n    >\n      {children}\n    </SeriesContext.Provider>\n  );\n};\n\nconst SeriesTemplate = forwardRef(SeriesTemplateRenderFunction) as GenericSeriesComponent;\nSeriesTemplate.displayName = \"SeriesTemplate\";\nexport { SeriesTemplate };\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst LineSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Line\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Line\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Line\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * LineSeries component that can be used to create a line series in a chart.\n *\n * @param props - The properties for the line series.\n * @param ref - The ref to access the line series API.\n * @returns A React component that renders the line series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#line | TradingView documentation for line series}\n * @example\n * ```tsx\n * <LineSeries\n *  data={[\n *    { time: '2021-01-01', value: 100 },\n *    { time: '2021-01-02', value: 200 }\n *  ]}\n *  options={{}}\n * />\n * ```\n */\nexport const LineSeries = forwardRef(\n  LineSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Line\">;\nLineSeries.displayName = \"LineSeries\";\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst HistogramSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Histogram\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Histogram\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Histogram\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * HistogramSeries component that can be used to create a histogram series in a chart.\n *\n * @param props - The properties for the histogram series.\n * @param ref - The ref to access the histogram series API.\n * @returns A React component that renders the histogram series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#histogram | TradingView documentation for histogram series}\n * @example\n * ```tsx\n * <HistogramSeries\n *  data={[\n *    { time: '2021-01-01', value: 100 },\n *    { time: '2021-01-02', value: 200 }\n *  ]}\n *  options={{}}\n * />\n * ```\n */\nexport const HistogramSeries = forwardRef(\n  HistogramSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Histogram\">;\nHistogramSeries.displayName = \"HistogramSeries\";\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst CandlestickSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Candlestick\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Candlestick\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Candlestick\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * CandlestickSeries component that can be used to create a candlestick series in a chart.\n *\n * @param props - The properties for the candlestick series.\n * @param ref - The ref to access the candlestick series API.\n * @returns A React component that renders the candlestick series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#candlestick | TradingView documentation for candlestick series}\n * @example\n * ```tsx\n * <CandlestickSeries\n *  data={[\n *    { time: '2021-01-01', open: 100, high: 110, low: 90, close: 105 },\n *    { time: '2021-01-02', open: 105, high: 115, low: 95, close: 110 }\n *  ]}\n *  options={{}}\n * />\n * ```\n */\nexport const CandlestickSeries = forwardRef(\n  CandlestickSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Candlestick\">;\nCandlestickSeries.displayName = \"CandlestickSeries\";\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst AreaSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Area\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Area\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Area\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * AreaSeries component that can be used to create an area series in a chart.\n *\n * @param props - The properties for the area series.\n * @param ref - The ref to access the area series API.\n * @returns A React component that renders the area series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#area | TradingView documentation for area series}\n * @example\n * ```tsx\n * <AreaSeries\n *  data={[\n *    { time: '2021-01-01', value: 100 },\n *    { time: '2021-01-02', value: 200 }\n *  ]}\n *  options={{}}\n * />\n * ```\n */\nexport const AreaSeries = forwardRef(\n  AreaSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Area\">;\nAreaSeries.displayName = \"AreaSeries\";\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst BaselineSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Baseline\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Baseline\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Baseline\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * BaselineSeries component that can be used to create a baseline series in a chart.\n *\n * @param props - The properties for the baseline series.\n * @param ref - The ref to access the baseline series API.\n * @returns A React component that renders the baseline series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#baseline | TradingView documentation for baseline series}\n * @example\n * ```tsx\n * <BaselineSeries\n *  data={[\n *    { time: '2021-01-01', value: 100 },\n *    { time: '2021-01-02', value: 200 }\n *  ]}\n *  options={{}}\n * />\n * ```\n */\nexport const BaselineSeries = forwardRef(\n  BaselineSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Baseline\">;\nBaselineSeries.displayName = \"BaselineSeries\";\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst BarSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Bar\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Bar\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Bar\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * BarSeries component that can be used to create a bar series in a chart.\n *\n * @param props - The properties for the bar series.\n * @param ref - The ref to access the bar series API.\n * @returns A React component that renders the bar series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#bar | TradingView documentation for bar series}\n * @example\n * ```tsx\n * <BarSeries\n *  data={[\n *    { time: '2021-01-01', open: 100, high: 110, low: 90, close: 105 },\n *    { time: '2021-01-02', open: 105, high: 115, low: 95, close: 110 }\n *  ]}\n *  options={{}}\n * />\n * ```\n */\nexport const BarSeries = forwardRef(\n  BarSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Bar\">;\nBarSeries.displayName = \"BarSeries\";\n","import { forwardRef } from \"react\";\nimport React from \"react\";\nimport { SeriesTemplate } from \"./SeriesTemplate\";\nimport type { SeriesApiRef, SeriesForwardRefComponent, SeriesProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\nconst CustomSeriesRenderFunction = <HorzScaleItem = Time,>(\n  { children, ...rest }: SeriesProps<\"Custom\", HorzScaleItem>,\n  ref: ForwardedRef<SeriesApiRef<\"Custom\", HorzScaleItem>>\n): JSX.Element => {\n  return (\n    <SeriesTemplate type=\"Custom\" ref={ref} {...rest}>\n      {children}\n    </SeriesTemplate>\n  );\n};\n\n/**\n * CustomSeries component that can be used to create a custom series in a chart.\n *\n * @param props - The properties for the custom series.\n * @param ref - The ref to access the custom series API.\n * @returns A React component that renders the custom series.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series | Series documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/series-types#custom-series-plugins | TradingView documentation for custom series}\n * @example\n * ```tsx\n * <CustomSeries\n *  data={[\n *    { time: '2021-01-01', value: 100 },\n *    { time: '2021-01-02', value: 200 }\n *  ]}\n *  options={{}}\n *  plugin={{}}\n * />\n * ```\n */\nexport const CustomSeries = forwardRef(\n  CustomSeriesRenderFunction\n) as SeriesForwardRefComponent<\"Custom\">;\nCustomSeries.displayName = \"CustomSeries\";\n","import { useLayoutEffect, useRef } from \"react\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { SeriesContext } from \"@/series/SeriesContext\";\nimport type { PriceLineApiRef, PriceLineProps } from \"./types\";\n\nexport const usePriceLine = ({ options, price }: PriceLineProps) => {\n  const { isReady: seriesIsReady, seriesApiRef: series } = useSafeContext(SeriesContext);\n\n  const priceLineApiRef = useRef<PriceLineApiRef>({\n    _priceLine: null,\n    api() {\n      return this._priceLine;\n    },\n    init() {\n      if (!this._priceLine) {\n        const seriesApi = series?.api();\n\n        if (!seriesApi) {\n          return null;\n        }\n\n        this._priceLine = seriesApi.createPriceLine({\n          price,\n          ...options,\n        });\n      }\n\n      return this._priceLine;\n    },\n    clear() {\n      if (this._priceLine !== null) {\n        series?.api()?.removePriceLine(this._priceLine);\n        this._priceLine = null;\n      }\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!seriesIsReady) return;\n\n    priceLineApiRef.current.init();\n  }, [seriesIsReady]);\n\n  useLayoutEffect(() => {\n    return () => {\n      priceLineApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!series) return;\n\n    if (options) {\n      priceLineApiRef.current.api()?.applyOptions(options);\n    }\n  }, [options]);\n\n  useLayoutEffect(() => {\n    if (!series) return;\n\n    priceLineApiRef.current.api()?.applyOptions({ price });\n  }, [price]);\n\n  return priceLineApiRef;\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport { usePriceLine } from \"./usePriceLine\";\nimport type { PriceLineApiRef, PriceLineProps } from \"./types\";\nimport type { ForwardedRef, ForwardRefExoticComponent, JSX, RefAttributes } from \"react\";\n\nconst PriceLineRenderFunction = (\n  props: PriceLineProps,\n  ref: ForwardedRef<PriceLineApiRef>\n): JSX.Element | null => {\n  const priceLineApiRef = usePriceLine(props);\n  useImperativeHandle(ref, () => priceLineApiRef.current, [priceLineApiRef]);\n\n  return null;\n};\n\n/**\n * PriceLine component that can be used to add a price line to a chart pane.\n *\n * @param props - The properties for the price line.\n * @param ref - The ref to access the price line API.\n * @returns A React component that renders the price line.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/price-lines | Price Lines documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/tutorials/how_to/price-line | TradingView documentation for price lines}\n * @example\n * ```tsx\n * <PriceLine price={100} options={{}} />\n * ```\n */\nexport const PriceLine: ForwardRefExoticComponent<\n  PriceLineProps & RefAttributes<PriceLineApiRef>\n> = forwardRef(PriceLineRenderFunction);\nPriceLine.displayName = \"PriceLine\";\n","import { createSeriesMarkers } from \"lightweight-charts\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { SeriesContext } from \"@/series/SeriesContext\";\nimport type { ISeriesContext } from \"@/series/types\";\nimport type { MarkersApiRef, MarkersProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\n\nexport const useMarkers = <HorzScaleItem = Time>({\n  reactive = true,\n  markers,\n  options,\n}: MarkersProps<HorzScaleItem>) => {\n  const { isReady: seriesIsReady, seriesApiRef: series } = useSafeContext(\n    SeriesContext\n  ) as ISeriesContext<HorzScaleItem>;\n\n  const markersApiRef = useRef<MarkersApiRef<HorzScaleItem>>({\n    _markers: null,\n    api() {\n      return this._markers;\n    },\n    init() {\n      if (this._markers === null) {\n        const seriesApi = series?.api();\n\n        if (!seriesApi) {\n          return null;\n        }\n\n        this._markers = createSeriesMarkers(seriesApi, markers, options);\n      }\n\n      return this._markers;\n    },\n    clear() {\n      if (this._markers !== null) {\n        this._markers.detach();\n        this._markers = null;\n      }\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!seriesIsReady) return;\n\n    markersApiRef.current.init();\n  }, [seriesIsReady]);\n\n  useLayoutEffect(() => {\n    return () => {\n      markersApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!series) return;\n\n    if (markers && reactive) {\n      markersApiRef.current.api()?.setMarkers(markers);\n    }\n  }, [markers, reactive]);\n\n  return markersApiRef;\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport { useMarkers } from \"./useMarkers\";\nimport type { MarkersApiRef, MarkersProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\ntype GenericMarkersComponent = (<HorzScaleItem = Time>(\n  props: MarkersProps<HorzScaleItem> & {\n    ref?: ForwardedRef<MarkersApiRef<HorzScaleItem>>;\n  }\n) => JSX.Element | null) & {\n  displayName: string;\n};\n\nconst MarkersRenderFunction = <HorzScaleItem = Time,>(\n  { ...rest }: MarkersProps<HorzScaleItem>,\n  ref: ForwardedRef<MarkersApiRef<HorzScaleItem>>\n): JSX.Element | null => {\n  const markersApiRef = useMarkers(rest);\n  useImperativeHandle(ref, () => markersApiRef.current, [markersApiRef]);\n\n  return null;\n};\n\n/**\n * Markers component that can be used to add markers to a chart pane.\n *\n * @param props - The properties for the markers.\n * @param ref - The ref to access the markers API.\n * @returns A React component that renders the markers.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/markers | Documentation for Markers}\n * @see {@link https://tradingview.github.io/lightweight-charts/tutorials/how_to/series-markers | TradingView documentation for markers}\n * @example\n * ```tsx\n * <Markers\n *  markers={[\n *    { time: 1622548800, position: \"aboveBar\", color: \"red\", shape: \"arrowUp\" },\n *    { time: 1622548800, position: \"belowBar\", color: \"green\", shape: \"arrowDown\" },\n *  ]}\n * />\n * ```\n */\nexport const Markers = forwardRef(MarkersRenderFunction) as GenericMarkersComponent;\nMarkers.displayName = \"Markers\";\n","import { useRef } from \"react\";\nimport type { MutableRefObject } from \"react\";\n\nexport const useLatestRef = <T>(value: T): MutableRefObject<T> => {\n  const ref = useRef(value);\n  ref.current = value;\n\n  return ref;\n};\n","import { createTextWatermark, createImageWatermark } from \"lightweight-charts\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport { BaseInternalError } from \"@/_shared/InternalError\";\nimport { useLatestRef } from \"@/_shared/useLatestRef\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport type { IChartContext } from \"@/chart/types\";\nimport { usePaneContext } from \"@/pane/usePaneContext\";\nimport type {\n  ImageWatermarkProps,\n  TextWatermarkProps,\n  WatermarkApiRef,\n  WatermarkProps,\n  WatermarkType,\n} from \"./types\";\nimport type { IChartApiBase, Time } from \"lightweight-charts\";\n\ntype WatermarkUpdateOptions<T extends WatermarkType> = T extends \"text\"\n  ? TextWatermarkProps\n  : Omit<ImageWatermarkProps, \"src\">;\n\nconst useWatermark = <T extends WatermarkType, HorzScaleItem = Time>(\n  props: WatermarkProps<T>\n) => {\n  const { isReady: chartIsReady, chartApiRef: chart } = useSafeContext(\n    ChartContext\n  ) as IChartContext<HorzScaleItem, IChartApiBase<HorzScaleItem>>;\n  const { isPaneReady, isInsidePane, paneApiRef } = usePaneContext<HorzScaleItem>();\n  const propsRef = useLatestRef(props);\n  const chartRef = useLatestRef(chart);\n  const paneApiRefRef = useLatestRef(paneApiRef);\n  const imageSrc = getImageWatermarkSrc(props);\n\n  const watermarkApiRef = useRef<WatermarkApiRef<T, HorzScaleItem>>({\n    _watermark: null,\n    api() {\n      return this._watermark;\n    },\n    init() {\n      if (this._watermark === null) {\n        const chartApi = chartRef.current?.api();\n\n        const pane = paneApiRefRef.current?.api();\n        const currentProps = propsRef.current;\n\n        if (!chartApi || !pane) return null;\n\n        if (isTextWatermark(currentProps)) {\n          const { type: _, ...rest } = currentProps;\n          this._watermark = createTextWatermark(pane, rest);\n        } else {\n          const { type: _, src, ...rest } = currentProps as WatermarkProps<\"image\">;\n          this._watermark = createImageWatermark(pane, src, rest);\n        }\n      }\n\n      return this._watermark;\n    },\n    clear() {\n      if (this._watermark !== null) {\n        this._watermark.detach();\n        this._watermark = null;\n      }\n    },\n  } as WatermarkApiRef<T, HorzScaleItem>);\n\n  useLayoutEffect(() => {\n    if (!chartIsReady) return;\n\n    if (!isInsidePane) {\n      // TODO: Replace the empty docsPath with the published watermarks docs route.\n      throw new BaseInternalError(\n        \"Watermark must be used inside a pane. Please ensure that the component is wrapped in a pane component.\",\n        {\n          isOperational: true,\n          docsPath: \"\",\n        }\n      );\n    }\n\n    if (!isPaneReady) {\n      return;\n    }\n\n    watermarkApiRef.current.clear();\n    watermarkApiRef.current.init();\n  }, [chartIsReady, isPaneReady, isInsidePane, imageSrc]);\n\n  useLayoutEffect(() => {\n    return () => {\n      watermarkApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!chart || !props) return;\n\n    watermarkApiRef.current.api()?.applyOptions(getWatermarkUpdateOptions(props));\n  }, [props]);\n\n  return watermarkApiRef;\n};\n\nconst getWatermarkUpdateOptions = <T extends WatermarkType>(\n  props: WatermarkProps<T>\n): WatermarkUpdateOptions<T> => {\n  if (isTextWatermark(props)) {\n    const { type: _, ...rest } = props;\n    return rest as WatermarkUpdateOptions<T>;\n  }\n\n  const { type: _, src: __, ...rest } = props as WatermarkProps<\"image\">;\n  return rest as WatermarkUpdateOptions<T>;\n};\n\nconst getImageWatermarkSrc = <T extends WatermarkType>(\n  props: WatermarkProps<T>\n): string | undefined => {\n  if (isTextWatermark(props)) {\n    return undefined;\n  }\n\n  return (props as WatermarkProps<\"image\">).src;\n};\n\nconst isTextWatermark = (\n  props: WatermarkProps<WatermarkType>\n): props is WatermarkProps<\"text\"> => {\n  return props.type === \"text\";\n};\n\nexport { useWatermark };\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport { useWatermark } from \"./useWatermark\";\nimport type {\n  ImageWatermarkProps,\n  TextWatermarkProps,\n  WatermarkApiRef,\n  WatermarkProps,\n  WatermarkType,\n} from \"./types\";\nimport type { ForwardedRef, ForwardRefExoticComponent, RefAttributes } from \"react\";\n\nconst WatermarkRenderFunction = <T extends WatermarkType>(\n  props: WatermarkProps<T>,\n  ref: ForwardedRef<WatermarkApiRef<T>>\n) => {\n  const watermarkApi = useWatermark(props);\n  useImperativeHandle(ref, () => watermarkApi.current, [watermarkApi]);\n\n  return null;\n};\n\n/**\n * Watermark component that can be used to add a text or image watermark to a chart pane.\n *\n * @param props - The properties for the watermark.\n * @param ref - The ref to access the watermark API.\n * @returns A React component that renders the watermark.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/watermarks | Watermarks documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/tutorials/how_to/watermark | TradingView documentation for watermarks}\n * @example\n * ```tsx\n * <WatermarkText\n *  lines={[\n *    { text: \"Your chart name\", color: \"blue\", fontSize: 24 },\n *    { text: \"Some other text\", color: \"pink\", fontSize: 16 },\n *  ]}\n *  horzAlign=\"center\"\n * />\n * ```\n */\nexport const WatermarkText: ForwardRefExoticComponent<\n  TextWatermarkProps & RefAttributes<WatermarkApiRef<\"text\">>\n> = forwardRef<WatermarkApiRef<\"text\">, TextWatermarkProps>((props, ref) => {\n  return WatermarkRenderFunction({ ...props, type: \"text\" }, ref);\n});\n\n/**\n * Watermark component that can be used to add an image watermark to a chart pane.\n *\n * @param props - The properties for the image watermark.\n * @param ref - The ref to access the watermark API.\n * @returns A React component that renders the image watermark.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/watermarks | Watermarks documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/tutorials/how_to/watermark | TradingView documentation for watermarks}\n * @example\n * ```tsx\n * <WatermarkImage\n *  src=\"data:image/svg+xml;base64,...\"\n *  alpha={0.5}\n *  padding={20}\n * />\n * ```\n */\nexport const WatermarkImage: ForwardRefExoticComponent<\n  ImageWatermarkProps & RefAttributes<WatermarkApiRef<\"image\">>\n> = forwardRef<WatermarkApiRef<\"image\">, ImageWatermarkProps>((props, ref) => {\n  return WatermarkRenderFunction({ ...props, type: \"image\" }, ref);\n});\n\nWatermarkText.displayName = \"WatermarkText\";\nWatermarkImage.displayName = \"WatermarkImage\";\n","import { useLayoutEffect, useRef } from \"react\";\n\ntype ReactivePrimitiveApiRef<TPrimitive> = {\n  _primitive: TPrimitive | null;\n  api(): TPrimitive | null;\n  init(): TPrimitive | null;\n  clear(): void;\n};\n\ntype PrimitiveAttachment<TPrimitive> = {\n  primitive: TPrimitive;\n  detach: () => void;\n};\n\ntype UseReactivePrimitiveOptions<TPrimitive, TProps> = {\n  isReady: boolean;\n  props: TProps;\n  primitiveIdentity: unknown;\n  mountPrimitive: (props: TProps) => PrimitiveAttachment<TPrimitive> | null;\n};\n\nexport const useReactivePrimitive = <TPrimitive, TProps>({\n  isReady,\n  props,\n  primitiveIdentity,\n  mountPrimitive,\n}: UseReactivePrimitiveOptions<TPrimitive, TProps>) => {\n  const propsRef = useRef(props);\n  const primitiveIdentityRef = useRef(primitiveIdentity);\n  const mountPrimitiveRef = useRef(mountPrimitive);\n  const detachCurrentPrimitiveRef = useRef<(() => void) | null>(null);\n\n  propsRef.current = props;\n  mountPrimitiveRef.current = mountPrimitive;\n\n  const primitiveApiRef = useRef<ReactivePrimitiveApiRef<TPrimitive>>({\n    _primitive: null,\n    api() {\n      return this._primitive;\n    },\n    init() {\n      if (!this._primitive) {\n        const attachment = mountPrimitiveRef.current(propsRef.current);\n\n        if (!attachment) {\n          return null;\n        }\n\n        detachCurrentPrimitiveRef.current = attachment.detach;\n        this._primitive = attachment.primitive;\n      }\n\n      return this._primitive;\n    },\n    clear() {\n      if (this._primitive !== null) {\n        detachCurrentPrimitiveRef.current?.();\n        detachCurrentPrimitiveRef.current = null;\n        this._primitive = null;\n      }\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!isReady) {\n      return;\n    }\n\n    if (primitiveIdentityRef.current !== primitiveIdentity) {\n      primitiveApiRef.current.clear();\n      primitiveIdentityRef.current = primitiveIdentity;\n    }\n\n    primitiveApiRef.current.init();\n  }, [isReady, primitiveIdentity]);\n\n  useLayoutEffect(() => {\n    return () => {\n      primitiveApiRef.current.clear();\n    };\n  }, []);\n\n  return primitiveApiRef;\n};\n","import { useLayoutEffect, useRef } from \"react\";\nimport { BaseInternalError } from \"@/_shared/InternalError\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport type { IChartContext } from \"@/chart/types\";\nimport { usePaneContext } from \"@/pane/usePaneContext\";\nimport { useReactivePrimitive } from \"./useReactivePrimitive\";\nimport type { PanePrimitiveApiRef, PanePrimitiveProps } from \"./types\";\nimport type { IChartApiBase, Time } from \"lightweight-charts\";\nimport type { RefObject } from \"react\";\n\nexport const usePanePrimitive = <HorzScaleItem = Time>(\n  props: PanePrimitiveProps<HorzScaleItem>\n): RefObject<PanePrimitiveApiRef<HorzScaleItem>> => {\n  const { isReady: isChartReady, chartApiRef: chart } = useSafeContext(\n    ChartContext\n  ) as IChartContext<HorzScaleItem, IChartApiBase<HorzScaleItem>>;\n  const { isInsidePane, isPaneReady, paneApiRef: pane } = usePaneContext<HorzScaleItem>();\n  const chartApiRef = useRef(chart);\n  const paneApiRef = useRef(pane);\n\n  chartApiRef.current = chart;\n  paneApiRef.current = pane;\n  const panePrimitiveApiRef = useReactivePrimitive({\n    isReady: isChartReady && isInsidePane && isPaneReady,\n    props,\n    primitiveIdentity: props.plugin ?? props.render,\n    mountPrimitive(currentProps) {\n      const chartApi = chartApiRef.current?.api();\n      const paneApi = paneApiRef.current?.api();\n\n      if (!chartApi || !paneApi) {\n        return null;\n      }\n\n      const primitive =\n        currentProps.plugin !== undefined\n          ? currentProps.plugin\n          : currentProps.render({\n              chart: chartApi,\n              pane: paneApi,\n            });\n\n      paneApi.attachPrimitive(primitive);\n\n      return {\n        primitive,\n        detach: () => paneApi.detachPrimitive(primitive),\n      };\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!isChartReady) {\n      return;\n    }\n\n    if (!isInsidePane) {\n      throw new BaseInternalError(\n        \"PanePrimitive must be used inside a pane. Please ensure that the component is wrapped in a pane component.\",\n        {\n          isOperational: true,\n          docsPath: \"pane-primitives\",\n        }\n      );\n    }\n  }, [isChartReady, isInsidePane]);\n\n  return panePrimitiveApiRef;\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport { usePanePrimitive } from \"./usePanePrimitive\";\nimport type { PanePrimitiveApiRef, PanePrimitiveProps } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\ntype GenericPanePrimitiveComponent = (<HorzScaleItem = Time>(\n  props: PanePrimitiveProps<HorzScaleItem> & {\n    ref?: ForwardedRef<PanePrimitiveApiRef<HorzScaleItem>>;\n  }\n) => ReturnType<typeof PanePrimitiveRenderFunction>) & {\n  displayName: string;\n};\n\nconst PanePrimitiveRenderFunction = <HorzScaleItem = Time,>(\n  props: PanePrimitiveProps<HorzScaleItem>,\n  ref: ForwardedRef<PanePrimitiveApiRef<HorzScaleItem>>\n): JSX.Element | null => {\n  const panePrimitiveApiRef = usePanePrimitive(props);\n  useImperativeHandle(ref, () => panePrimitiveApiRef.current, [panePrimitiveApiRef]);\n\n  return null;\n};\n\n/**\n * PanePrimitive component that can be used to create a primitive on a pane.\n *\n * @param props - The properties for the pane primitive.\n * @param ref - The ref to access the pane primitive API.\n * @returns A React component that renders the pane primitive.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/pane-primitives | Pane primitives documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/plugins/pane-primitives | TradingView documentation for pane primitive}\n * @example\n * ```tsx\n * <Pane>\n *   <PanePrimitive render={({ chart, pane }) => new MyPanePrimitive(chart, pane)} />\n * </Pane>\n * ```\n */\nexport const PanePrimitive = forwardRef(\n  PanePrimitiveRenderFunction\n) as GenericPanePrimitiveComponent;\nPanePrimitive.displayName = \"PanePrimitive\";\n","import { useRef } from \"react\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport type { IChartContext } from \"@/chart/types\";\nimport { SeriesContext } from \"@/series/SeriesContext\";\nimport type { ISeriesContext } from \"@/series/types\";\nimport { useReactivePrimitive } from \"./useReactivePrimitive\";\nimport type { SeriesPrimitiveApiRef, SeriesPrimitiveProps } from \"./types\";\nimport type { IChartApiBase, SeriesType, Time } from \"lightweight-charts\";\nimport type { ISeriesApi } from \"lightweight-charts\";\nimport type { RefObject } from \"react\";\n\nexport const useSeriesPrimitive = <T extends SeriesType, HorzScaleItem = Time>(\n  props: SeriesPrimitiveProps<T, HorzScaleItem>\n): RefObject<SeriesPrimitiveApiRef<HorzScaleItem>> => {\n  const { isReady: isChartReady, chartApiRef: chart } = useSafeContext(\n    ChartContext\n  ) as IChartContext<HorzScaleItem, IChartApiBase<HorzScaleItem>>;\n  const { isReady: seriesIsReady, seriesApiRef: series } = useSafeContext(\n    SeriesContext\n  ) as ISeriesContext<HorzScaleItem>;\n  const chartApiRef = useRef(chart);\n  const seriesApiRef = useRef(series);\n\n  chartApiRef.current = chart;\n  seriesApiRef.current = series;\n  const seriesPrimitiveApiRef = useReactivePrimitive({\n    isReady: isChartReady && seriesIsReady,\n    props,\n    primitiveIdentity: props.plugin ?? props.render,\n    mountPrimitive(currentProps) {\n      const seriesApi = seriesApiRef.current?.api();\n      const chartApi = chartApiRef.current?.api();\n\n      if (!chartApi || !seriesApi) {\n        return null;\n      }\n\n      const primitive =\n        currentProps.plugin !== undefined\n          ? currentProps.plugin\n          : currentProps.render({\n              chart: chartApi,\n              series: seriesApi as ISeriesApi<T, HorzScaleItem>,\n            });\n\n      seriesApi.attachPrimitive(primitive);\n\n      return {\n        primitive,\n        detach: () => seriesApi.detachPrimitive(primitive),\n      };\n    },\n  });\n\n  return seriesPrimitiveApiRef;\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport { useSeriesPrimitive } from \"./useSeriesPrimitive\";\nimport type { SeriesPrimitiveApiRef, SeriesPrimitiveProps } from \"./types\";\nimport type { SeriesType, Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\ntype GenericSeriesPrimitiveComponent = (<T extends SeriesType, HorzScaleItem = Time>(\n  props: SeriesPrimitiveProps<T, HorzScaleItem> & {\n    ref?: ForwardedRef<SeriesPrimitiveApiRef<HorzScaleItem>>;\n  }\n) => ReturnType<typeof SeriesPrimitiveRenderFunction>) & {\n  displayName: string;\n};\n\nconst SeriesPrimitiveRenderFunction = <T extends SeriesType, HorzScaleItem = Time>(\n  props: SeriesPrimitiveProps<T, HorzScaleItem>,\n  ref: ForwardedRef<SeriesPrimitiveApiRef<HorzScaleItem>>\n): JSX.Element | null => {\n  const seriesPrimitiveApiRef = useSeriesPrimitive(props);\n  useImperativeHandle(ref, () => seriesPrimitiveApiRef.current, [seriesPrimitiveApiRef]);\n\n  return null;\n};\n\n/**\n * SeriesPrimitive component that can be used to create a primitive on series.\n *\n * @param props - The properties for the series primitive.\n * @param ref - The ref to access the series primitive API.\n * @returns A React component that renders the series primitive.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/series-primitives | Series primitives documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/plugins/series-primitives | TradingView documentation for series primitive}\n * @example\n * ```tsx\n * <SeriesPrimitive render={{}} />\n * <SeriesPrimitive plugin={{}} />\n * ```\n */\nexport const SeriesPrimitive = forwardRef(\n  SeriesPrimitiveRenderFunction\n) as GenericSeriesPrimitiveComponent;\nSeriesPrimitive.displayName = \"SeriesPrimitive\";\n","import { useLayoutEffect, useRef, useState, useEffect } from \"react\";\nimport { useSafeContext } from \"@/_shared/useSafeContext\";\nimport { ChartContext } from \"@/chart/ChartContext\";\nimport type { IChartContext } from \"@/chart/types\";\nimport type { PaneApiRef, PaneProps } from \"./types\";\nimport type { IChartApiBase, Time } from \"lightweight-charts\";\n\nexport const usePane = <HorzScaleItem = Time>({\n  stretchFactor,\n}: Omit<PaneProps, \"children\"> = {}) => {\n  const { chartApiRef: chart, isReady: chartIsReady } = useSafeContext(\n    ChartContext\n  ) as IChartContext<HorzScaleItem, IChartApiBase<HorzScaleItem>>;\n  const [isReady, setIsReady] = useState(false);\n\n  const paneApiRef = useRef<PaneApiRef<HorzScaleItem>>({\n    _pane: null,\n    api() {\n      return this._pane;\n    },\n    init() {\n      const chartApi = chart?.api();\n      if (!chartApi) return null;\n\n      const pane = chartApi.addPane(true);\n      this._pane = pane;\n\n      setIsReady(true);\n\n      if (stretchFactor !== undefined) {\n        this._pane.setStretchFactor(stretchFactor);\n      }\n\n      return this._pane;\n    },\n    clear() {\n      if (this._pane !== null) {\n        chart?.api()?.removePane(this._pane.paneIndex());\n        setIsReady(false);\n\n        this._pane = null;\n      }\n    },\n  });\n\n  useLayoutEffect(() => {\n    if (!chartIsReady) return;\n\n    paneApiRef.current.init();\n  }, [chartIsReady]);\n\n  useEffect(() => {\n    return () => {\n      paneApiRef.current.clear();\n    };\n  }, []);\n\n  useLayoutEffect(() => {\n    if (stretchFactor === undefined) return;\n\n    const pane = paneApiRef.current.api();\n    if (pane) {\n      pane.setStretchFactor(stretchFactor);\n    }\n  }, [stretchFactor]);\n\n  return { paneApiRef, isReady };\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\nimport React from \"react\";\nimport { PaneContext } from \"./PaneContext\";\nimport { usePane } from \"./usePane\";\nimport type { PaneProps, PaneApiRef } from \"./types\";\nimport type { Time } from \"lightweight-charts\";\nimport type { ForwardedRef, JSX } from \"react\";\n\ntype GenericPaneComponent = (<HorzScaleItem = Time>(\n  props: PaneProps & {\n    ref?: ForwardedRef<PaneApiRef<HorzScaleItem>>;\n  }\n) => JSX.Element) & {\n  displayName: string;\n};\n\nconst PaneRenderFunction = <HorzScaleItem = Time,>(\n  { children, stretchFactor }: PaneProps,\n  ref: ForwardedRef<PaneApiRef<HorzScaleItem>>\n): JSX.Element => {\n  const {\n    paneApiRef: { current: paneApiRef },\n    isReady,\n  } = usePane<HorzScaleItem>({\n    stretchFactor,\n  });\n  useImperativeHandle(ref, () => paneApiRef, [paneApiRef]);\n\n  return (\n    <PaneContext.Provider\n      value={{\n        paneApiRef: paneApiRef as never,\n        isReady,\n      }}\n    >\n      {children}\n    </PaneContext.Provider>\n  );\n};\n\n/**\n * Pane component that can be used to create a pane in a chart.\n *\n * @param props - The properties for the pane.\n * @param ref - The ref to access the pane API.\n * @returns A React component that renders the pane.\n * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/panes | Panes documentation}\n * @see {@link https://tradingview.github.io/lightweight-charts/docs/panes | TradingView documentation for panes}\n * @example\n * ```tsx\n * <Pane stretchFactor={2}>\n * ...\n * </Pane>\n * ```\n */\nexport const Pane = forwardRef(PaneRenderFunction) as GenericPaneComponent;\nPane.displayName = \"Pane\";\n"],"names":["ChartContext","createContext","defaultChartOptions","useChart","container","onClick","onCrosshairMove","onInit","options","onDblClick","createChartApi","createChart","isReady","setIsReady","useState","chartApiRef","useRef","chart","useLayoutEffect","_chartApiRef_current_api","ChartComponent","children","chartKind","ChartWrapper","forwardRef","containerProps","rest","ref","setContainer","containerRef","useCallback","node","undefined","OptionsChart","createOptionsChart","YieldCurveChart","createYieldCurveChart","CustomChart","horzScaleBehavior","createCustomChart","chartContainer","createChartEx","TimeScaleContext","version","BaseInternalError","Error","message","isOperational","cause","docsPath","docsBaseUrl","Object","useSafeContext","context","errorMessage","currentContextValue","useContext","ctxName","PaneContext","usePaneContext","paneContext","isInsidePane","isPaneReady","paneApiRef","useTimeScale","onVisibleTimeRangeChange","onVisibleLogicalRangeChange","onSizeChange","visibleRange","visibleLogicalRange","chartIsReady","timeScaleApiRef","chartApi","_timeScaleApiRef_current_api","timeScaleApi","TimeScale","props","useImperativeHandle","usePriceScale","id","priceScaleApiRef","idToSet","_priceScaleApiRef_current","_priceScaleApiRef_current_api","PriceScale","useTimeScaleFitContentTrigger","deps","timeScale","queueMicrotask","TimeScaleFitContentTrigger","SeriesContext","useSeries","type","data","reactive","seriesOrder","alwaysReplaceData","seriesApiRef","_paneApiRef_api","_this__series","_this__series1","paneIndex","plugin","seriesMap","_chart_api","seriesApi","currentData","dataLengthDifference","lastDataPoint","_seriesApiRef_current_api","LineSeries","CandlestickSeries","HistogramSeries","AreaSeries","BaselineSeries","BarSeries","SeriesTemplate","CustomSeries","usePriceLine","price","seriesIsReady","series","priceLineApiRef","_series_api","_priceLineApiRef_current_api","PriceLine","useMarkers","markers","markersApiRef","createSeriesMarkers","_markersApiRef_current_api","Markers","useLatestRef","value","useWatermark","propsRef","chartRef","paneApiRefRef","imageSrc","getImageWatermarkSrc","watermarkApiRef","_chartRef_current","_paneApiRefRef_current","pane","currentProps","isTextWatermark","_","createTextWatermark","src","createImageWatermark","_watermarkApiRef_current_api","getWatermarkUpdateOptions","__","WatermarkRenderFunction","watermarkApi","WatermarkText","WatermarkImage","useReactivePrimitive","primitiveIdentity","mountPrimitive","primitiveIdentityRef","mountPrimitiveRef","detachCurrentPrimitiveRef","primitiveApiRef","attachment","usePanePrimitive","isChartReady","panePrimitiveApiRef","_chartApiRef_current","_paneApiRef_current","paneApi","primitive","PanePrimitive","useSeriesPrimitive","_seriesApiRef_current","SeriesPrimitive","seriesPrimitiveApiRef","usePane","stretchFactor","useEffect","Pane"],"mappings":"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"}