lightweight-charts-react-components 2.0.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/README.md +33 -2
- package/dist/index.d.ts +3 -2
- 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/README.md
CHANGED
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
</picture>
|
|
32
32
|
</a>
|
|
33
33
|
|
|
34
|
+
<a href="https://pkg.pr.new/~/ukorvl/lightweight-charts-react-components">
|
|
35
|
+
<img src="https://pkg.pr.new/badge/ukorvl/lightweight-charts-react-components" alt="pkg.pr.new">
|
|
36
|
+
</a>
|
|
37
|
+
|
|
34
38
|
<a href="https://github.com/ukorvl/lightweight-charts-react-components/blob/main/LICENSE">
|
|
35
39
|
<picture>
|
|
36
40
|
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/lightweight-charts-react-components?colorA=1e2029&colorB=1e2029&style=flat">
|
|
@@ -94,22 +98,49 @@ Check out the [Demo](https://ukorvl.github.io/lightweight-charts-react-component
|
|
|
94
98
|
|
|
95
99
|
## Table of Contents
|
|
96
100
|
|
|
101
|
+
- [Description](#description)
|
|
102
|
+
- [Table of Contents](#table-of-contents)
|
|
97
103
|
- [Installation](#installation)
|
|
104
|
+
- [Stable release](#stable-release)
|
|
105
|
+
- [Preview builds](#preview-builds)
|
|
106
|
+
- [Standalone browser build](#standalone-browser-build)
|
|
98
107
|
- [Usage](#usage)
|
|
108
|
+
- [Chart Container Sizing](#chart-container-sizing)
|
|
99
109
|
- [Examples](#examples)
|
|
100
110
|
- [Contributing](#contributing)
|
|
111
|
+
- [How to Contribute](#how-to-contribute)
|
|
101
112
|
- [Related Projects](#related-projects)
|
|
102
113
|
- [License](#license)
|
|
103
114
|
|
|
104
115
|
## Installation
|
|
105
116
|
|
|
106
|
-
|
|
117
|
+
### Stable release
|
|
118
|
+
|
|
119
|
+
Install the latest published version from npm:
|
|
107
120
|
|
|
108
121
|
```bash
|
|
109
122
|
npm install lightweight-charts-react-components lightweight-charts
|
|
110
123
|
```
|
|
111
124
|
|
|
112
|
-
|
|
125
|
+
### Preview builds
|
|
126
|
+
|
|
127
|
+
To test the latest unreleased version from `main`, install the preview build published via `pkg.pr.new`:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npm install https://pkg.pr.new/lightweight-charts-react-components@main lightweight-charts
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Or choose a specific commit from `main` and install the preview build for that commit:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npm install https://pkg.pr.new/lightweight-charts-react-components@<commit-hash> lightweight-charts
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
For security reasons, preview builds are published only from commits pushed to `main`. Pull request builds are not published.
|
|
140
|
+
|
|
141
|
+
### Standalone browser build
|
|
142
|
+
|
|
143
|
+
The standalone version is also available for use in the browser without a build step. The library expects global `React`, `ReactDOM`, and `LightweightCharts` variables to be available in the global scope.
|
|
113
144
|
|
|
114
145
|
```html
|
|
115
146
|
<head>
|
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.
|
|
@@ -662,7 +662,8 @@ declare type SeriesParameters<T extends SeriesType, HorzScaleItem = Time> = {
|
|
|
662
662
|
seriesOrder?: ReturnType<ISeriesApi<T>["seriesOrder"]>;
|
|
663
663
|
/**
|
|
664
664
|
* If true, the series will replace its data on every update.
|
|
665
|
-
* If false, it will try to
|
|
665
|
+
* If false, it will try to apply incremental updates to the existing series when possible,
|
|
666
|
+
* which can be useful for performance.
|
|
666
667
|
*
|
|
667
668
|
* @see {@link https://tradingview.github.io/lightweight-charts/docs#updating-the-data-in-a-series | TradingView documentation for updating series data}
|
|
668
669
|
*/
|
|
@@ -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
|