lightweight-charts-react-components 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/lightweight-charts-react-components.mjs +3 -3
- package/dist/lightweight-charts-react-components.mjs.map +1 -1
- package/dist/lightweight-charts-react-components.standalone.js +2 -2
- package/dist/lightweight-charts-react-components.standalone.js.map +1 -1
- package/package.json +7 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/**!
|
|
3
|
-
* lightweight-charts-react-components v2.
|
|
3
|
+
* lightweight-charts-react-components v2.2.0
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE.md file in the root directory of this source tree.
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* @license MIT
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import*as e from"lightweight-charts";import*as t from"react";let r=(0,t.createContext)(null);r.displayName="ChartContext";let i={addDefaultPane:!1},a=({container:r,onClick:a,onCrosshairMove:l,onInit:n,options:s={},onDblClick:u,createChartApi:c=e.createChart})=>{let[f,p]=(0,t.useState)(!1),o=(0,t.useRef)({_chart:null,api(){return this._chart},init(){if(null===this._chart){let e=c(r,{...i,...s});this._chart=e,n&&n(this._chart)}return f||p(!0),this._chart},clear(){null!==this._chart&&(p(!1),this._chart.remove(),this._chart=null)}});return(0,t.useLayoutEffect)(()=>(o.current.init(),()=>{o.current.clear()}),[]),(0,t.useLayoutEffect)(()=>{if(r){if(a){var e;null==(e=o.current.api())||e.subscribeClick(a)}return()=>{if(a){var e;null==(e=o.current.api())||e.unsubscribeClick(a)}}}},[a]),(0,t.useLayoutEffect)(()=>{if(r){if(l){var e;null==(e=o.current.api())||e.subscribeCrosshairMove(l)}return()=>{if(l){var e;null==(e=o.current.api())||e.unsubscribeCrosshairMove(l)}}}},[l]),(0,t.useLayoutEffect)(()=>{if(r){if(u){var e;null==(e=o.current.api())||e.subscribeDblClick(u)}return()=>{if(u){var e;null==(e=o.current.api())||e.unsubscribeDblClick(u)}}}},[u]),(0,t.useLayoutEffect)(()=>{var e;r&&(null==(e=o.current.api())||e.applyOptions({...i,...s}))},[s]),{chartApiRef:o,isReady:f}},l=({children:e,container:i,onClick:l,onCrosshairMove:n,onInit:s,options:u,onDblClick:c,chartKind:f="time",createChartApi:p})=>{let{chartApiRef:{current:o},isReady:
|
|
11
|
+
import*as e from"lightweight-charts";import*as t from"react";let r=(0,t.createContext)(null);r.displayName="ChartContext";let i={addDefaultPane:!1},a=({container:r,onClick:a,onCrosshairMove:l,onInit:n,options:s={},onDblClick:u,createChartApi:c=e.createChart})=>{let[f,p]=(0,t.useState)(!1),o=(0,t.useRef)({_chart:null,api(){return this._chart},init(){if(null===this._chart){let e=c(r,{...i,...s});this._chart=e,n&&n(this._chart)}return f||p(!0),this._chart},clear(){null!==this._chart&&(p(!1),this._chart.remove(),this._chart=null)}});return(0,t.useLayoutEffect)(()=>(o.current.init(),()=>{o.current.clear()}),[]),(0,t.useLayoutEffect)(()=>{if(r){if(a){var e;null==(e=o.current.api())||e.subscribeClick(a)}return()=>{if(a){var e;null==(e=o.current.api())||e.unsubscribeClick(a)}}}},[a]),(0,t.useLayoutEffect)(()=>{if(r){if(l){var e;null==(e=o.current.api())||e.subscribeCrosshairMove(l)}return()=>{if(l){var e;null==(e=o.current.api())||e.unsubscribeCrosshairMove(l)}}}},[l]),(0,t.useLayoutEffect)(()=>{if(r){if(u){var e;null==(e=o.current.api())||e.subscribeDblClick(u)}return()=>{if(u){var e;null==(e=o.current.api())||e.unsubscribeDblClick(u)}}}},[u]),(0,t.useLayoutEffect)(()=>{var e;r&&(null==(e=o.current.api())||e.applyOptions({...i,...s}))},[s]),{chartApiRef:o,isReady:f}},l=({children:e,container:i,onClick:l,onCrosshairMove:n,onInit:s,options:u,onDblClick:c,chartKind:f="time",createChartApi:p})=>{let{chartApiRef:{current:o},isReady:d}=a({container:i,onClick:l,onCrosshairMove:n,onInit:s,options:u,onDblClick:c,createChartApi:p});return t.default.createElement(r.Provider,{value:{chartApiRef:o,isReady:d,chartKind:f}},e)},n=(0,t.forwardRef)(({children:r,containerProps:i,...a},n)=>{let[s,u]=(0,t.useState)(),c=(0,t.useCallback)(e=>{u(e??void 0),n&&("function"==typeof n?n(e):n.current=e)},[n]);return t.default.createElement("div",{ref:c,...i},!!s&&t.default.createElement(l,{container:s,createChartApi:e.createChart,chartKind:"time",...a},r))});n.displayName="ChartWrapper";let s=(0,t.forwardRef)(({children:r,containerProps:i,...a},n)=>{let[s,u]=(0,t.useState)(),c=(0,t.useCallback)(e=>{u(e??void 0),n&&("function"==typeof n?n(e):n.current=e)},[n]);return t.default.createElement("div",{ref:c,...i},!!s&&t.default.createElement(l,{container:s,createChartApi:e.createOptionsChart,chartKind:"options",...a},r))});s.displayName="OptionsChart";let u=(0,t.forwardRef)(({children:r,containerProps:i,...a},n)=>{let[s,u]=(0,t.useState)(),c=(0,t.useCallback)(e=>{u(e??void 0),n&&("function"==typeof n?n(e):n.current=e)},[n]);return t.default.createElement("div",{ref:c,...i},!!s&&t.default.createElement(l,{container:s,createChartApi:e.createYieldCurveChart,chartKind:"yield-curve",...a},r))});u.displayName="YieldCurveChart";let c=(0,t.forwardRef)(({children:r,containerProps:i,horzScaleBehavior:a,...n},s)=>{let[u,c]=(0,t.useState)(),f=(0,t.useCallback)(e=>{c(e??void 0),s&&("function"==typeof s?s(e):s.current=e)},[s]),p=(0,t.useCallback)((t,r)=>(0,e.createChartEx)(t,a,r),[a]);return t.default.createElement("div",{ref:f,...i},!!u&&t.default.createElement(l,{container:u,createChartApi:p,chartKind:"custom",...n},r))});c.displayName="CustomChart";let f=(0,t.createContext)(null);f.displayName="TimeScaleContext";let p="2.2.0";function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class d extends Error{constructor(e,{isOperational:t=!0,cause:r,docsPath:i}={}){super(e),o(this,"isOperational",void 0),o(this,"cause",void 0),this.name=this.constructor.name??"InternalError",this.isOperational=t,this.cause=r,this.message=`${e??"An error occurred"}`,i&&(this.message=`${this.message}
|
|
12
12
|
|
|
13
13
|
Docs: see ${"https://ukorvl.github.io/lightweight-charts-react-components/docs/"+i}`),p&&(this.message=`${this.message}
|
|
14
14
|
|
|
15
|
-
Version: lightweight-charts-react-components@${p}`),Object.setPrototypeOf(this,h.prototype)}}let d=(e,r)=>{let i=(0,t.useContext)(e);if(!i){let t=e.name??e.displayName??"Context";throw new h(r??`${t} not found.`,{isOperational:!0})}return i},m=(0,t.createContext)(null);m.displayName="PaneContext";let y=()=>{let e=(0,t.useContext)(m),r=!!e;return{isInsidePane:r,isPaneReady:!!(null==e?void 0:e.isReady),paneApiRef:null==e?void 0:e.paneApiRef}},v=({onVisibleTimeRangeChange:e,onVisibleLogicalRangeChange:i,onSizeChange:a,visibleRange:l,visibleLogicalRange:n,options:s={}})=>{let{isReady:u,chartApiRef:c}=d(r),{isPaneReady:f,isInsidePane:p}=y(),[o,h]=(0,t.useState)(!1),m=(0,t.useRef)({_timeScale:null,api(){return this._timeScale},init(){if(this._timeScale)return this._timeScale;let t=null==c?void 0:c.api();return t?(this._timeScale=t.timeScale(),this._timeScale.applyOptions(s),l&&this._timeScale.setVisibleRange(l),n&&this._timeScale.setVisibleLogicalRange(n),e&&this._timeScale.subscribeVisibleTimeRangeChange(e),i&&this._timeScale.subscribeVisibleLogicalRangeChange(i),a&&this._timeScale.subscribeSizeChange(a),h(!0),this._timeScale):null},clear(){this._timeScale=null,h(!1)}});return(0,t.useLayoutEffect)(()=>{u&&(!p||f)&&m.current.init()},[u,p,f]),(0,t.useLayoutEffect)(()=>()=>{m.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(c&&s){var e,t;null==(t=m.current)||null==(e=t.api())||e.applyOptions(s)}},[s]),(0,t.useLayoutEffect)(()=>{if(c){if(a){var e,t;null==(t=m.current)||null==(e=t.api())||e.subscribeSizeChange(a)}return()=>{if(a){var e,t;null==(t=m.current)||null==(e=t.api())||e.unsubscribeSizeChange(a)}}}},[a]),(0,t.useLayoutEffect)(()=>{if(c){if(i){var e,t;null==(t=m.current)||null==(e=t.api())||e.subscribeVisibleLogicalRangeChange(i)}return()=>{if(i){var e,t;null==(t=m.current)||null==(e=t.api())||e.unsubscribeVisibleLogicalRangeChange(i)}}}},[i]),(0,t.useLayoutEffect)(()=>{if(c){if(e){var t,r;null==(r=m.current)||null==(t=r.api())||t.subscribeVisibleTimeRangeChange(e)}return()=>{if(e){var t,r;null==(r=m.current)||null==(t=r.api())||t.unsubscribeVisibleTimeRangeChange(e)}}}},[e]),(0,t.useLayoutEffect)(()=>{if(c&&l){var e,t;null==(t=m.current)||null==(e=t.api())||e.setVisibleRange(l)}},[l]),(0,t.useLayoutEffect)(()=>{if(c&&n){var e,t;null==(t=m.current)||null==(e=t.api())||e.setVisibleLogicalRange(n)}},[n]),{timeScaleApiRef:m,isReady:o}},_=(0,t.forwardRef)(({children:e,...r},i)=>{let{timeScaleApiRef:{current:a},isReady:l}=v(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(f.Provider,{value:{timeScaleApiRef:a,isReady:l}},e)});_.displayName="TimeScale";let S=({options:e={},id:i})=>{let{isReady:a,chartApiRef:l}=d(r),{isInsidePane:n,isPaneReady:s}=y(),u=(0,t.useRef)({_priceScale:null,api(){return this._priceScale},init(){if(!this._priceScale){let t=null==l?void 0:l.api();if(!t)return null;this._priceScale=t.priceScale(i),this._priceScale.applyOptions(e)}return this._priceScale},setId(t){null!==this._priceScale&&null!==l&&(this._priceScale=l.api().priceScale(t),this._priceScale.applyOptions(e))},clear(){this._priceScale=null}});return(0,t.useLayoutEffect)(()=>{if(a){if(!n)throw new h("PriceScale must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:""});s&&u.current.init()}},[a,n,s]),(0,t.useLayoutEffect)(()=>()=>{u.current.clear()},[]),(0,t.useLayoutEffect)(()=>{var e;l&&(null==(e=u.current)||e.setId(i))},[i]),(0,t.useLayoutEffect)(()=>{if(l&&e){var t,r;null==(r=u.current)||null==(t=r.api())||t.applyOptions(e)}},[e]),u},R=(0,t.forwardRef)((e,r)=>{let i=S(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});R.displayName="PriceScale";let C=({deps:e})=>{let{timeScaleApiRef:r,isReady:i}=d(f);(0,t.useLayoutEffect)(()=>{if(!i||!r)return;let e=r.api();queueMicrotask(()=>{e&&e.fitContent()})},[...e,i])},L=({deps:e})=>(C({deps:e}),null),E=(0,t.createContext)({seriesApiRef:null,isReady:!1});E.displayName="SeriesContext";let b=({type:e,data:i,options:a={},reactive:l=!0,seriesOrder:n,alwaysReplaceData:s=!1,...u})=>{let{isReady:c,chartApiRef:f,chartKind:p}=d(r),{isPaneReady:o,isInsidePane:m,paneApiRef:v}=y(),[_,S]=(0,t.useState)(!1),R=(0,t.useRef)({_series:null,api(){return this._series},init(){if(!this._series){var t,r,l;let s=null==f?void 0:f.api();if(!s)return null;let c=m?null==v||null==(t=v.api())?void 0:t.paneIndex():void 0;if("Custom"===e){let e=u.plugin;if(!e)throw new h("Custom series requires a plugin to be defined");this._series=s.addCustomSeries(e,a,c)}else{if("yield-curve"===p&&"Area"!==e&&"Line"!==e)throw new h("YieldCurveChart only supports LineSeries and AreaSeries.",{isOperational:!0});this._series=s.addSeries(g[e],a,c)}null==(r=this._series)||r.setData(i),void 0!==n&&(null==(l=this._series)||l.setSeriesOrder(n)),S(!0)}return this._series},clear(){if(null!==this._series){var e;null==f||null==(e=f.api())||e.removeSeries(this._series),this._series=null,S(!1)}}});return(0,t.useLayoutEffect)(()=>{c&&(!m||o)&&R.current.init()},[c,m,o]),(0,t.useLayoutEffect)(()=>()=>{R.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(f&&i&&l){let e=R.current.api();if(!e)return;let t=e.data(),r=i.length-t.length;if(s||0===t.length||0===i.length||r<0||r>1)return void e.setData(i);let a=i[i.length-1];e.update(a)}},[i,l,s]),(0,t.useLayoutEffect)(()=>{if(f&&a){var e;null==(e=R.current.api())||e.applyOptions(a)}},[a]),(0,t.useLayoutEffect)(()=>{if(f&&void 0!==n){var e;null==(e=R.current.api())||e.setSeriesOrder(n)}},[n]),{isReady:_,seriesApiRef:R}},g={Line:e.LineSeries,Candlestick:e.CandlestickSeries,Histogram:e.HistogramSeries,Area:e.AreaSeries,Baseline:e.BaselineSeries,Bar:e.BarSeries},w=(0,t.forwardRef)(({children:e,...r},i)=>{let{seriesApiRef:{current:a},isReady:l}=b(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(E.Provider,{value:{seriesApiRef:a,isReady:l}},e)});w.displayName="SeriesTemplate";let k=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Line",ref:i,...r},e));k.displayName="LineSeries";let A=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Histogram",ref:i,...r},e));A.displayName="HistogramSeries";let P=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Candlestick",ref:i,...r},e));P.displayName="CandlestickSeries";let N=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Area",ref:i,...r},e));N.displayName="AreaSeries";let O=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Baseline",ref:i,...r},e));O.displayName="BaselineSeries";let x=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Bar",ref:i,...r},e));x.displayName="BarSeries";let I=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Custom",ref:i,...r},e));I.displayName="CustomSeries";let H=({options:e,price:r})=>{let{isReady:i,seriesApiRef:a}=d(E),l=(0,t.useRef)({_priceLine:null,api(){return this._priceLine},init(){if(!this._priceLine){let t=null==a?void 0:a.api();if(!t)return null;this._priceLine=t.createPriceLine({price:r,...e})}return this._priceLine},clear(){if(null!==this._priceLine){var e;null==a||null==(e=a.api())||e.removePriceLine(this._priceLine),this._priceLine=null}}});return(0,t.useLayoutEffect)(()=>{i&&l.current.init()},[i]),(0,t.useLayoutEffect)(()=>()=>{l.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(a&&e){var t;null==(t=l.current.api())||t.applyOptions(e)}},[e]),(0,t.useLayoutEffect)(()=>{if(a&&r){var e;null==(e=l.current.api())||e.applyOptions({price:r})}},[r]),l},T=(0,t.forwardRef)((e,r)=>{let i=H(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});T.displayName="PriceLine";let V=({reactive:r=!0,markers:i,options:a})=>{let{isReady:l,seriesApiRef:n}=d(E),s=(0,t.useRef)({_markers:null,api(){return this._markers},init(){if(null===this._markers){let t=null==n?void 0:n.api();if(!t)return null;this._markers=(0,e.createSeriesMarkers)(t,i,a)}return this._markers},clear(){null!==this._markers&&(this._markers.detach(),this._markers=null)}});return(0,t.useLayoutEffect)(()=>{l&&s.current.init()},[l]),(0,t.useLayoutEffect)(()=>()=>{s.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(n&&i&&r){var e;null==(e=s.current.api())||e.setMarkers(i)}},[i,r]),s},B=(0,t.forwardRef)(({...e},r)=>{let i=V(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});B.displayName="Markers";let W=i=>{let{isReady:a,chartApiRef:l}=d(r),{isPaneReady:n,isInsidePane:s,paneApiRef:u}=y(),c=(0,t.useRef)({_watermark:null,api(){return this._watermark},init(){if(null===this._watermark){let t=null==l?void 0:l.api(),r=null==u?void 0:u.api();if(!t||!r)return null;if(M(i)){let{type:t,...a}=i;this._watermark=(0,e.createTextWatermark)(r,a)}else{let{type:t,src:a,...l}=i;this._watermark=(0,e.createImageWatermark)(r,a,l)}}return this._watermark},clear(){null!==this._watermark&&(this._watermark.detach(),this._watermark=null)}});return(0,t.useLayoutEffect)(()=>{if(a){if(!s)throw new h("Watermark must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:""});n&&c.current.init()}},[a,n,s]),(0,t.useLayoutEffect)(()=>()=>{c.current.clear()},[]),(0,t.useLayoutEffect)(()=>{var e;if(!l||!i)return;let{type:t,...r}=i;null==(e=c.current.api())||e.applyOptions(r)},[i]),c},M=e=>"text"===e.type,D=(e,r)=>{let i=W(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null},$=(0,t.forwardRef)((e,t)=>D({...e,type:"text"},t)),K=(0,t.forwardRef)((e,t)=>D({...e,type:"image"},t));$.displayName="WatermarkText",K.displayName="WatermarkImage";let Y=({render:e,plugin:i})=>{let{isReady:a,chartApiRef:l}=d(r),{isReady:n,seriesApiRef:s}=d(E),u=(0,t.useRef)({_primitive:null,api(){return this._primitive},init(){if(!this._primitive){let t=null==s?void 0:s.api(),r=null==l?void 0:l.api();if(!r||!t)return null;let a=i||e({chart:r,series:t});t.attachPrimitive(a),this._primitive=a}return this._primitive},clear(){if(null!==this._primitive){var e;null==s||null==(e=s.api())||e.detachPrimitive(this._primitive),this._primitive=null}}});return(0,t.useLayoutEffect)(()=>{a&&n&&u.current.init()},[n,a]),(0,t.useLayoutEffect)(()=>()=>{u.current.clear()},[]),u},z=(0,t.forwardRef)((e,r)=>{let i=Y(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});z.displayName="SeriesPrimitive";let F=({stretchFactor:e}={})=>{let{chartApiRef:i,isReady:a}=d(r),[l,n]=(0,t.useState)(!1),s=(0,t.useRef)({_pane:null,api(){return this._pane},init(){let t=null==i?void 0:i.api();if(!t)return null;let r=t.addPane(!0);return this._pane=r,n(!0),void 0!==e&&this._pane.setStretchFactor(e),this._pane},clear(){if(null!==this._pane){var e;null==i||null==(e=i.api())||e.removePane(this._pane.paneIndex()),n(!1),this._pane=null}}});return(0,t.useLayoutEffect)(()=>{a&&s.current.init()},[a]),(0,t.useEffect)(()=>()=>{s.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(void 0===e)return;let t=s.current.api();t&&t.setStretchFactor(e)},[e]),{paneApiRef:s,isReady:l}},j=(0,t.forwardRef)(({children:e,stretchFactor:r},i)=>{let{paneApiRef:{current:a},isReady:l}=F({stretchFactor:r});return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(m.Provider,{value:{paneApiRef:a,isReady:l}},e)});j.displayName="Pane";export{N as AreaSeries,x as BarSeries,O as BaselineSeries,P as CandlestickSeries,n as Chart,c as CustomChart,I as CustomSeries,A as HistogramSeries,k as LineSeries,B as Markers,s as OptionsChart,j as Pane,T as PriceLine,R as PriceScale,z as SeriesPrimitive,_ as TimeScale,L as TimeScaleFitContentTrigger,K as WatermarkImage,$ as WatermarkText,u as YieldCurveChart};
|
|
15
|
+
Version: lightweight-charts-react-components@${p}`),Object.setPrototypeOf(this,d.prototype)}}let h=(e,r)=>{let i=(0,t.useContext)(e);if(!i){let t=e.name??e.displayName??"Context";throw new d(r??`${t} not found.`,{isOperational:!0})}return i},m=(0,t.createContext)(null);m.displayName="PaneContext";let y=()=>{let e=(0,t.useContext)(m),r=!!e;return{isInsidePane:r,isPaneReady:!!(null==e?void 0:e.isReady),paneApiRef:null==e?void 0:e.paneApiRef}},v=({onVisibleTimeRangeChange:e,onVisibleLogicalRangeChange:i,onSizeChange:a,visibleRange:l,visibleLogicalRange:n,options:s={}})=>{let{isReady:u,chartApiRef:c}=h(r),{isPaneReady:f,isInsidePane:p}=y(),[o,d]=(0,t.useState)(!1),m=(0,t.useRef)({_timeScale:null,api(){return this._timeScale},init(){if(this._timeScale)return this._timeScale;let e=null==c?void 0:c.api();return e?(this._timeScale=e.timeScale(),this._timeScale.applyOptions(s),l&&this._timeScale.setVisibleRange(l),n&&this._timeScale.setVisibleLogicalRange(n),d(!0),this._timeScale):null},clear(){this._timeScale=null,d(!1)}});return(0,t.useLayoutEffect)(()=>{u&&(!p||f)&&m.current.init()},[u,p,f]),(0,t.useLayoutEffect)(()=>()=>{m.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(c&&s){var e,t;null==(t=m.current)||null==(e=t.api())||e.applyOptions(s)}},[s]),(0,t.useLayoutEffect)(()=>{if(!c||!o)return;let e=m.current.api();return a&&e&&e.subscribeSizeChange(a),()=>{a&&e&&e.unsubscribeSizeChange(a)}},[c,o,a]),(0,t.useLayoutEffect)(()=>{if(!c||!o)return;let e=m.current.api();return i&&e&&e.subscribeVisibleLogicalRangeChange(i),()=>{i&&e&&e.unsubscribeVisibleLogicalRangeChange(i)}},[c,o,i]),(0,t.useLayoutEffect)(()=>{if(!c||!o)return;let t=m.current.api();return e&&t&&t.subscribeVisibleTimeRangeChange(e),()=>{e&&t&&t.unsubscribeVisibleTimeRangeChange(e)}},[c,o,e]),(0,t.useLayoutEffect)(()=>{if(c&&l){var e,t;null==(t=m.current)||null==(e=t.api())||e.setVisibleRange(l)}},[l]),(0,t.useLayoutEffect)(()=>{if(c&&n){var e,t;null==(t=m.current)||null==(e=t.api())||e.setVisibleLogicalRange(n)}},[n]),{timeScaleApiRef:m,isReady:o}},_=(0,t.forwardRef)(({children:e,...r},i)=>{let{timeScaleApiRef:{current:a},isReady:l}=v(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(f.Provider,{value:{timeScaleApiRef:a,isReady:l}},e)});_.displayName="TimeScale";let S=({options:e={},id:i})=>{let{isReady:a,chartApiRef:l}=h(r),{isInsidePane:n,isPaneReady:s}=y(),u=(0,t.useRef)({_priceScale:null,api(){return this._priceScale},init(){if(!this._priceScale){let t=null==l?void 0:l.api();if(!t)return null;this._priceScale=t.priceScale(i),this._priceScale.applyOptions(e)}return this._priceScale},setId(t){null!==this._priceScale&&null!==l&&(this._priceScale=l.api().priceScale(t),this._priceScale.applyOptions(e))},clear(){this._priceScale=null}});return(0,t.useLayoutEffect)(()=>{if(a){if(!n)throw new d("PriceScale must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:""});s&&u.current.init()}},[a,n,s]),(0,t.useLayoutEffect)(()=>()=>{u.current.clear()},[]),(0,t.useLayoutEffect)(()=>{var e;l&&(null==(e=u.current)||e.setId(i))},[i]),(0,t.useLayoutEffect)(()=>{if(l&&e){var t,r;null==(r=u.current)||null==(t=r.api())||t.applyOptions(e)}},[e]),u},R=(0,t.forwardRef)((e,r)=>{let i=S(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});R.displayName="PriceScale";let C=({deps:e})=>{let{timeScaleApiRef:r,isReady:i}=h(f);(0,t.useLayoutEffect)(()=>{if(!i||!r)return;let e=r.api();queueMicrotask(()=>{e&&e.fitContent()})},[...e,i])},E=({deps:e})=>(C({deps:e}),null),L=(0,t.createContext)({seriesApiRef:null,isReady:!1});L.displayName="SeriesContext";let g=({type:e,data:i,options:a={},reactive:l=!0,seriesOrder:n,alwaysReplaceData:s=!1,...u})=>{let{isReady:c,chartApiRef:f,chartKind:p}=h(r),{isPaneReady:o,isInsidePane:m,paneApiRef:v}=y(),[_,S]=(0,t.useState)(!1),R=(0,t.useRef)({_series:null,api(){return this._series},init(){if(!this._series){var t,r,l;let s=null==f?void 0:f.api();if(!s)return null;let c=m?null==v||null==(t=v.api())?void 0:t.paneIndex():void 0;if("Custom"===e){let e=u.plugin;if(!e)throw new d("Custom series requires a plugin to be defined");this._series=s.addCustomSeries(e,a,c)}else{if("yield-curve"===p&&"Area"!==e&&"Line"!==e)throw new d("YieldCurveChart only supports LineSeries and AreaSeries.",{isOperational:!0});this._series=s.addSeries(b[e],a,c)}null==(r=this._series)||r.setData(i),void 0!==n&&(null==(l=this._series)||l.setSeriesOrder(n)),S(!0)}return this._series},clear(){if(null!==this._series){var e;null==f||null==(e=f.api())||e.removeSeries(this._series),this._series=null,S(!1)}}});return(0,t.useLayoutEffect)(()=>{c&&(!m||o)&&R.current.init()},[c,m,o]),(0,t.useLayoutEffect)(()=>()=>{R.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(f&&i&&l){let e=R.current.api();if(!e)return;let t=e.data(),r=i.length-t.length;if(s||0===t.length||0===i.length||r<0||r>1)return void e.setData(i);let a=i[i.length-1];e.update(a)}},[i,l,s]),(0,t.useLayoutEffect)(()=>{if(f&&a){var e;null==(e=R.current.api())||e.applyOptions(a)}},[a]),(0,t.useLayoutEffect)(()=>{if(f&&void 0!==n){var e;null==(e=R.current.api())||e.setSeriesOrder(n)}},[n]),{isReady:_,seriesApiRef:R}},b={Line:e.LineSeries,Candlestick:e.CandlestickSeries,Histogram:e.HistogramSeries,Area:e.AreaSeries,Baseline:e.BaselineSeries,Bar:e.BarSeries},w=(0,t.forwardRef)(({children:e,...r},i)=>{let{seriesApiRef:{current:a},isReady:l}=g(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(L.Provider,{value:{seriesApiRef:a,isReady:l}},e)});w.displayName="SeriesTemplate";let k=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Line",ref:i,...r},e));k.displayName="LineSeries";let A=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Histogram",ref:i,...r},e));A.displayName="HistogramSeries";let P=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Candlestick",ref:i,...r},e));P.displayName="CandlestickSeries";let N=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Area",ref:i,...r},e));N.displayName="AreaSeries";let O=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Baseline",ref:i,...r},e));O.displayName="BaselineSeries";let x=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Bar",ref:i,...r},e));x.displayName="BarSeries";let I=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Custom",ref:i,...r},e));I.displayName="CustomSeries";let H=({options:e,price:r})=>{let{isReady:i,seriesApiRef:a}=h(L),l=(0,t.useRef)({_priceLine:null,api(){return this._priceLine},init(){if(!this._priceLine){let t=null==a?void 0:a.api();if(!t)return null;this._priceLine=t.createPriceLine({price:r,...e})}return this._priceLine},clear(){if(null!==this._priceLine){var e;null==a||null==(e=a.api())||e.removePriceLine(this._priceLine),this._priceLine=null}}});return(0,t.useLayoutEffect)(()=>{i&&l.current.init()},[i]),(0,t.useLayoutEffect)(()=>()=>{l.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(a&&e){var t;null==(t=l.current.api())||t.applyOptions(e)}},[e]),(0,t.useLayoutEffect)(()=>{if(a&&r){var e;null==(e=l.current.api())||e.applyOptions({price:r})}},[r]),l},T=(0,t.forwardRef)((e,r)=>{let i=H(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});T.displayName="PriceLine";let B=({reactive:r=!0,markers:i,options:a})=>{let{isReady:l,seriesApiRef:n}=h(L),s=(0,t.useRef)({_markers:null,api(){return this._markers},init(){if(null===this._markers){let t=null==n?void 0:n.api();if(!t)return null;this._markers=(0,e.createSeriesMarkers)(t,i,a)}return this._markers},clear(){null!==this._markers&&(this._markers.detach(),this._markers=null)}});return(0,t.useLayoutEffect)(()=>{l&&s.current.init()},[l]),(0,t.useLayoutEffect)(()=>()=>{s.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(n&&i&&r){var e;null==(e=s.current.api())||e.setMarkers(i)}},[i,r]),s},V=(0,t.forwardRef)(({...e},r)=>{let i=B(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});V.displayName="Markers";let W=i=>{let{isReady:a,chartApiRef:l}=h(r),{isPaneReady:n,isInsidePane:s,paneApiRef:u}=y(),c=(0,t.useRef)({_watermark:null,api(){return this._watermark},init(){if(null===this._watermark){let t=null==l?void 0:l.api(),r=null==u?void 0:u.api();if(!t||!r)return null;if(M(i)){let{type:t,...a}=i;this._watermark=(0,e.createTextWatermark)(r,a)}else{let{type:t,src:a,...l}=i;this._watermark=(0,e.createImageWatermark)(r,a,l)}}return this._watermark},clear(){null!==this._watermark&&(this._watermark.detach(),this._watermark=null)}});return(0,t.useLayoutEffect)(()=>{if(a){if(!s)throw new d("Watermark must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:""});n&&c.current.init()}},[a,n,s]),(0,t.useLayoutEffect)(()=>()=>{c.current.clear()},[]),(0,t.useLayoutEffect)(()=>{var e;if(!l||!i)return;let{type:t,...r}=i;null==(e=c.current.api())||e.applyOptions(r)},[i]),c},M=e=>"text"===e.type,D=(e,r)=>{let i=W(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null},$=(0,t.forwardRef)((e,t)=>D({...e,type:"text"},t)),K=(0,t.forwardRef)((e,t)=>D({...e,type:"image"},t));$.displayName="WatermarkText",K.displayName="WatermarkImage";let Y=({render:e,plugin:i})=>{let{isReady:a,chartApiRef:l}=h(r),{isReady:n,seriesApiRef:s}=h(L),u=(0,t.useRef)({_primitive:null,api(){return this._primitive},init(){if(!this._primitive){let t=null==s?void 0:s.api(),r=null==l?void 0:l.api();if(!r||!t)return null;let a=i||e({chart:r,series:t});t.attachPrimitive(a),this._primitive=a}return this._primitive},clear(){if(null!==this._primitive){var e;null==s||null==(e=s.api())||e.detachPrimitive(this._primitive),this._primitive=null}}});return(0,t.useLayoutEffect)(()=>{a&&n&&u.current.init()},[n,a]),(0,t.useLayoutEffect)(()=>()=>{u.current.clear()},[]),u},F=(0,t.forwardRef)((e,r)=>{let i=Y(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});F.displayName="SeriesPrimitive";let j=({stretchFactor:e}={})=>{let{chartApiRef:i,isReady:a}=h(r),[l,n]=(0,t.useState)(!1),s=(0,t.useRef)({_pane:null,api(){return this._pane},init(){let t=null==i?void 0:i.api();if(!t)return null;let r=t.addPane(!0);return this._pane=r,n(!0),void 0!==e&&this._pane.setStretchFactor(e),this._pane},clear(){if(null!==this._pane){var e;null==i||null==(e=i.api())||e.removePane(this._pane.paneIndex()),n(!1),this._pane=null}}});return(0,t.useLayoutEffect)(()=>{a&&s.current.init()},[a]),(0,t.useEffect)(()=>()=>{s.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(void 0===e)return;let t=s.current.api();t&&t.setStretchFactor(e)},[e]),{paneApiRef:s,isReady:l}},q=(0,t.forwardRef)(({children:e,stretchFactor:r},i)=>{let{paneApiRef:{current:a},isReady:l}=j({stretchFactor:r});return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(m.Provider,{value:{paneApiRef:a,isReady:l}},e)});q.displayName="Pane";export{N as AreaSeries,x as BarSeries,O as BaselineSeries,P as CandlestickSeries,n as Chart,c as CustomChart,I as CustomSeries,A as HistogramSeries,k as LineSeries,V as Markers,s as OptionsChart,q as Pane,T as PriceLine,R as PriceScale,F as SeriesPrimitive,_ as TimeScale,E as TimeScaleFitContentTrigger,K as WatermarkImage,$ as WatermarkText,u as YieldCurveChart};
|
|
16
16
|
//# sourceMappingURL=lightweight-charts-react-components.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/watermark/useWatermark.ts","webpack://lightweight-charts-react-components/./src/watermark/Watermark.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 ref={containerRef} {...containerProps}>\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 ref={containerRef} {...containerProps}>\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 ref={containerRef} {...containerProps}>\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 ref={containerRef} {...containerProps}>\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.1.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 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 if (onVisibleTimeRangeChange) {\n this._timeScale.subscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);\n }\n\n if (onVisibleLogicalRangeChange) {\n this._timeScale.subscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);\n }\n\n if (onSizeChange) {\n this._timeScale.subscribeSizeChange(onSizeChange);\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) return;\n\n if (onSizeChange) {\n timeScaleApiRef.current?.api()?.subscribeSizeChange(onSizeChange);\n }\n\n return () => {\n if (onSizeChange) {\n timeScaleApiRef.current?.api()?.unsubscribeSizeChange(onSizeChange);\n }\n };\n }, [onSizeChange]);\n\n useLayoutEffect(() => {\n if (!chart) return;\n\n if (onVisibleLogicalRangeChange) {\n timeScaleApiRef.current\n ?.api()\n ?.subscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);\n }\n\n return () => {\n if (onVisibleLogicalRangeChange) {\n timeScaleApiRef.current\n ?.api()\n ?.unsubscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);\n }\n };\n }, [onVisibleLogicalRangeChange]);\n\n useLayoutEffect(() => {\n if (!chart) return;\n\n if (onVisibleTimeRangeChange) {\n timeScaleApiRef.current\n ?.api()\n ?.subscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);\n }\n\n return () => {\n if (onVisibleTimeRangeChange) {\n timeScaleApiRef.current\n ?.api()\n ?.unsubscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);\n }\n };\n }, [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 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 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 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 if (price) {\n priceLineApiRef.current.api()?.applyOptions({ price });\n }\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 { createTextWatermark, createImageWatermark } from \"lightweight-charts\";\nimport { 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 type { WatermarkApiRef, WatermarkProps, WatermarkType } from \"./types\";\nimport type { IChartApiBase, Time } from \"lightweight-charts\";\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\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 = chart?.api();\n\n const pane = paneApiRef?.api();\n\n if (!chartApi || !pane) return null;\n\n if (isTextWatermark(props)) {\n const { type: _, ...rest } = props;\n this._watermark = createTextWatermark(pane, rest);\n } else {\n const { type: _, src, ...rest } = props 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 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.init();\n }, [chartIsReady, isPaneReady, isInsidePane]);\n\n useLayoutEffect(() => {\n return () => {\n watermarkApiRef.current.clear();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (!chart || !props) return;\n\n const { type: _, ...rest } = props;\n watermarkApiRef.current.api()?.applyOptions(rest);\n }, [props]);\n\n return watermarkApiRef;\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\";\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 type { SeriesPrimitiveApiRef, SeriesPrimitiveProps } from \"./types\";\nimport type { IChartApiBase, SeriesType, Time } from \"lightweight-charts\";\nimport type { ISeriesApi } from \"lightweight-charts\";\n\nexport const useSeriesPrimitive = <T extends SeriesType, HorzScaleItem = Time>({\n render,\n plugin,\n}: SeriesPrimitiveProps<T, 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\n const seriesPrimitiveApiRef = useRef<SeriesPrimitiveApiRef<HorzScaleItem>>({\n _primitive: null,\n api() {\n return this._primitive;\n },\n init() {\n if (!this._primitive) {\n const seriesApi = series?.api();\n const chartApi = chart?.api();\n\n if (!chartApi || !seriesApi) {\n return null;\n }\n\n const primitive = plugin\n ? plugin\n : render({\n chart: chartApi,\n series: seriesApi as ISeriesApi<T, HorzScaleItem>,\n });\n\n seriesApi.attachPrimitive(primitive);\n this._primitive = primitive;\n }\n\n return this._primitive;\n },\n clear() {\n if (this._primitive !== null) {\n series?.api()?.detachPrimitive(this._primitive);\n this._primitive = null;\n }\n },\n });\n\n useLayoutEffect(() => {\n if (!isChartReady || !seriesIsReady) return;\n\n seriesPrimitiveApiRef.current.init();\n }, [seriesIsReady, isChartReady]);\n\n useLayoutEffect(() => {\n return () => {\n seriesPrimitiveApiRef.current.clear();\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","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","useWatermark","watermarkApiRef","pane","isTextWatermark","_","createTextWatermark","src","createImageWatermark","_watermarkApiRef_current_api","WatermarkRenderFunction","watermarkApi","WatermarkText","WatermarkImage","useSeriesPrimitive","render","isChartReady","seriesPrimitiveApiRef","primitive","SeriesPrimitive","usePane","stretchFactor","useEffect","Pane"],"mappings":"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"}
|
|
1
|
+
{"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/watermark/useWatermark.ts","webpack://lightweight-charts-react-components/./src/watermark/Watermark.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 ref={containerRef} {...containerProps}>\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 ref={containerRef} {...containerProps}>\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 ref={containerRef} {...containerProps}>\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 ref={containerRef} {...containerProps}>\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.2.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 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 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 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 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 if (price) {\n priceLineApiRef.current.api()?.applyOptions({ price });\n }\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 { createTextWatermark, createImageWatermark } from \"lightweight-charts\";\nimport { 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 type { WatermarkApiRef, WatermarkProps, WatermarkType } from \"./types\";\nimport type { IChartApiBase, Time } from \"lightweight-charts\";\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\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 = chart?.api();\n\n const pane = paneApiRef?.api();\n\n if (!chartApi || !pane) return null;\n\n if (isTextWatermark(props)) {\n const { type: _, ...rest } = props;\n this._watermark = createTextWatermark(pane, rest);\n } else {\n const { type: _, src, ...rest } = props 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 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.init();\n }, [chartIsReady, isPaneReady, isInsidePane]);\n\n useLayoutEffect(() => {\n return () => {\n watermarkApiRef.current.clear();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (!chart || !props) return;\n\n const { type: _, ...rest } = props;\n watermarkApiRef.current.api()?.applyOptions(rest);\n }, [props]);\n\n return watermarkApiRef;\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\";\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 type { SeriesPrimitiveApiRef, SeriesPrimitiveProps } from \"./types\";\nimport type { IChartApiBase, SeriesType, Time } from \"lightweight-charts\";\nimport type { ISeriesApi } from \"lightweight-charts\";\n\nexport const useSeriesPrimitive = <T extends SeriesType, HorzScaleItem = Time>({\n render,\n plugin,\n}: SeriesPrimitiveProps<T, 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\n const seriesPrimitiveApiRef = useRef<SeriesPrimitiveApiRef<HorzScaleItem>>({\n _primitive: null,\n api() {\n return this._primitive;\n },\n init() {\n if (!this._primitive) {\n const seriesApi = series?.api();\n const chartApi = chart?.api();\n\n if (!chartApi || !seriesApi) {\n return null;\n }\n\n const primitive = plugin\n ? plugin\n : render({\n chart: chartApi,\n series: seriesApi as ISeriesApi<T, HorzScaleItem>,\n });\n\n seriesApi.attachPrimitive(primitive);\n this._primitive = primitive;\n }\n\n return this._primitive;\n },\n clear() {\n if (this._primitive !== null) {\n series?.api()?.detachPrimitive(this._primitive);\n this._primitive = null;\n }\n },\n });\n\n useLayoutEffect(() => {\n if (!isChartReady || !seriesIsReady) return;\n\n seriesPrimitiveApiRef.current.init();\n }, [seriesIsReady, isChartReady]);\n\n useLayoutEffect(() => {\n return () => {\n seriesPrimitiveApiRef.current.clear();\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","useWatermark","watermarkApiRef","pane","isTextWatermark","_","createTextWatermark","src","createImageWatermark","_watermarkApiRef_current_api","WatermarkRenderFunction","watermarkApi","WatermarkText","WatermarkImage","useSeriesPrimitive","render","isChartReady","seriesPrimitiveApiRef","primitive","SeriesPrimitive","usePane","stretchFactor","useEffect","Pane"],"mappings":"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"}
|