lightweight-charts-react-components 2.3.0 → 2.5.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 +35 -59
- package/dist/lightweight-charts-react-components.mjs +4 -4
- 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 +8 -6
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.5.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.
|
|
@@ -521,39 +521,12 @@ export declare const PanePrimitive: GenericPanePrimitiveComponent;
|
|
|
521
521
|
/**
|
|
522
522
|
* Pane primitive API reference type that can be used to access the pane primitive plugin API.
|
|
523
523
|
*/
|
|
524
|
-
export declare type PanePrimitiveApiRef<HorzScaleItem = Time> =
|
|
525
|
-
/**
|
|
526
|
-
* Internal reference to the pane primitive API instance.
|
|
527
|
-
*/
|
|
528
|
-
_primitive: IPanePrimitive<HorzScaleItem> | null;
|
|
529
|
-
/**
|
|
530
|
-
* Function to get the pane primitive API instance.
|
|
531
|
-
*/
|
|
532
|
-
api(): IPanePrimitive<HorzScaleItem> | null;
|
|
533
|
-
/**
|
|
534
|
-
* Function to initialize the pane primitive API instance.
|
|
535
|
-
*/
|
|
536
|
-
init(): IPanePrimitive<HorzScaleItem> | null;
|
|
537
|
-
/**
|
|
538
|
-
* Function to clear the pane primitive API instance.
|
|
539
|
-
*/
|
|
540
|
-
clear(): void;
|
|
541
|
-
};
|
|
524
|
+
export declare type PanePrimitiveApiRef<HorzScaleItem = Time> = ReactivePrimitiveApiRef<IPanePrimitive<HorzScaleItem>>;
|
|
542
525
|
|
|
543
526
|
/**
|
|
544
527
|
* Pane primitive properties that can be used to create a pane primitive.
|
|
545
528
|
*/
|
|
546
|
-
export declare type PanePrimitiveProps<HorzScaleItem = Time> =
|
|
547
|
-
|
|
548
|
-
declare type PanePrimitivePropsWithPlugin<HorzScaleItem = Time> = {
|
|
549
|
-
plugin: IPanePrimitive<HorzScaleItem>;
|
|
550
|
-
render?: never;
|
|
551
|
-
};
|
|
552
|
-
|
|
553
|
-
declare type PanePrimitivePropsWithRender<HorzScaleItem = Time> = {
|
|
554
|
-
render: RenderPanePrimitive<HorzScaleItem>;
|
|
555
|
-
plugin?: never;
|
|
556
|
-
};
|
|
529
|
+
export declare type PanePrimitiveProps<HorzScaleItem = Time> = ReactivePrimitiveProps<IPanePrimitive<HorzScaleItem>, RenderPanePrimitive<HorzScaleItem>>;
|
|
557
530
|
|
|
558
531
|
declare const PanePrimitiveRenderFunction: <HorzScaleItem = Time>(props: PanePrimitiveProps<HorzScaleItem>, ref: ForwardedRef<PanePrimitiveApiRef<HorzScaleItem>>) => JSX.Element | null;
|
|
559
532
|
|
|
@@ -679,6 +652,36 @@ export declare type PriceScaleProps = {
|
|
|
679
652
|
id: string;
|
|
680
653
|
};
|
|
681
654
|
|
|
655
|
+
/**
|
|
656
|
+
* Shared API reference shape for reactive primitives.
|
|
657
|
+
*/
|
|
658
|
+
declare type ReactivePrimitiveApiRef<TPrimitive> = {
|
|
659
|
+
/**
|
|
660
|
+
* Internal reference to the primitive API instance.
|
|
661
|
+
*/
|
|
662
|
+
_primitive: TPrimitive | null;
|
|
663
|
+
/**
|
|
664
|
+
* Function to get the primitive API instance.
|
|
665
|
+
*/
|
|
666
|
+
api(): TPrimitive | null;
|
|
667
|
+
/**
|
|
668
|
+
* Function to initialize the primitive API instance.
|
|
669
|
+
*/
|
|
670
|
+
init(): TPrimitive | null;
|
|
671
|
+
/**
|
|
672
|
+
* Function to clear the primitive API instance.
|
|
673
|
+
*/
|
|
674
|
+
clear(): void;
|
|
675
|
+
};
|
|
676
|
+
|
|
677
|
+
declare type ReactivePrimitiveProps<TPrimitive, TRender> = {
|
|
678
|
+
render: TRender;
|
|
679
|
+
plugin?: never;
|
|
680
|
+
} | {
|
|
681
|
+
plugin: TPrimitive;
|
|
682
|
+
render?: never;
|
|
683
|
+
};
|
|
684
|
+
|
|
682
685
|
/**
|
|
683
686
|
* Render function type for pane primitives.
|
|
684
687
|
*/
|
|
@@ -763,39 +766,12 @@ export declare const SeriesPrimitive: GenericSeriesPrimitiveComponent;
|
|
|
763
766
|
/**
|
|
764
767
|
* Series primitive API reference type that can be used to access the series primitive plugin API.
|
|
765
768
|
*/
|
|
766
|
-
export declare type SeriesPrimitiveApiRef<HorzScaleItem = Time> =
|
|
767
|
-
/**
|
|
768
|
-
* Internal reference to the series primitive API instance.
|
|
769
|
-
*/
|
|
770
|
-
_primitive: ISeriesPrimitive<HorzScaleItem> | null;
|
|
771
|
-
/**
|
|
772
|
-
* Function to get the series primitive API instance.
|
|
773
|
-
*/
|
|
774
|
-
api(): ISeriesPrimitive<HorzScaleItem> | null;
|
|
775
|
-
/**
|
|
776
|
-
* Function to initialize the series primitive API instance.
|
|
777
|
-
*/
|
|
778
|
-
init(): ISeriesPrimitive<HorzScaleItem> | null;
|
|
779
|
-
/**
|
|
780
|
-
* Function to clear the series primitive API instance.
|
|
781
|
-
*/
|
|
782
|
-
clear(): void;
|
|
783
|
-
};
|
|
769
|
+
export declare type SeriesPrimitiveApiRef<HorzScaleItem = Time> = ReactivePrimitiveApiRef<ISeriesPrimitive<HorzScaleItem>>;
|
|
784
770
|
|
|
785
771
|
/**
|
|
786
772
|
* Series primitive properties that can be used to create a series primitive.
|
|
787
773
|
*/
|
|
788
|
-
export declare type SeriesPrimitiveProps<T extends SeriesType = SeriesType, HorzScaleItem = Time> =
|
|
789
|
-
|
|
790
|
-
declare type SeriesPrimitivePropsWithPlugin<HorzScaleItem = Time> = {
|
|
791
|
-
plugin: ISeriesPrimitive<HorzScaleItem>;
|
|
792
|
-
render?: never;
|
|
793
|
-
};
|
|
794
|
-
|
|
795
|
-
declare type SeriesPrimitivePropsWithRender<T extends SeriesType, HorzScaleItem = Time> = {
|
|
796
|
-
render: RenderPrimitive<T, HorzScaleItem>;
|
|
797
|
-
plugin?: never;
|
|
798
|
-
};
|
|
774
|
+
export declare type SeriesPrimitiveProps<T extends SeriesType = SeriesType, HorzScaleItem = Time> = ReactivePrimitiveProps<ISeriesPrimitive<HorzScaleItem>, RenderPrimitive<T, HorzScaleItem>>;
|
|
799
775
|
|
|
800
776
|
declare const SeriesPrimitiveRenderFunction: <T extends SeriesType, HorzScaleItem = Time>(props: SeriesPrimitiveProps<T, HorzScaleItem>, ref: ForwardedRef<SeriesPrimitiveApiRef<HorzScaleItem>>) => JSX.Element | null;
|
|
801
777
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/**!
|
|
3
|
-
* lightweight-charts-react-components v2.
|
|
3
|
+
* lightweight-charts-react-components v2.5.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:
|
|
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:n,onInit:l,options:u={},onDblClick:s,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,...u});this._chart=e,l&&l(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(n){var e;null==(e=o.current.api())||e.subscribeCrosshairMove(n)}return()=>{if(n){var e;null==(e=o.current.api())||e.unsubscribeCrosshairMove(n)}}}},[n]),(0,t.useLayoutEffect)(()=>{if(r){if(s){var e;null==(e=o.current.api())||e.subscribeDblClick(s)}return()=>{if(s){var e;null==(e=o.current.api())||e.unsubscribeDblClick(s)}}}},[s]),(0,t.useLayoutEffect)(()=>{var e;r&&(null==(e=o.current.api())||e.applyOptions({...i,...u}))},[u]),{chartApiRef:o,isReady:f}},n=({children:e,container:i,onClick:n,onCrosshairMove:l,onInit:u,options:s,onDblClick:c,chartKind:f="time",createChartApi:p})=>{let{chartApiRef:{current:o},isReady:d}=a({container:i,onClick:n,onCrosshairMove:l,onInit:u,options:s,onDblClick:c,createChartApi:p});return t.default.createElement(r.Provider,{value:{chartApiRef:o,isReady:d,chartKind:f}},e)},l=(0,t.forwardRef)(({children:r,containerProps:i,...a},l)=>{let[u,s]=(0,t.useState)(),c=(0,t.useCallback)(e=>{s(e??void 0),l&&("function"==typeof l?l(e):l.current=e)},[l]);return t.default.createElement("div",{ref:c,"aria-hidden":(null==i?void 0:i["aria-hidden"])??!0,...i},!!u&&t.default.createElement(n,{container:u,createChartApi:e.createChart,chartKind:"time",...a},r))});l.displayName="ChartWrapper";let u=(0,t.forwardRef)(({children:r,containerProps:i,...a},l)=>{let[u,s]=(0,t.useState)(),c=(0,t.useCallback)(e=>{s(e??void 0),l&&("function"==typeof l?l(e):l.current=e)},[l]);return t.default.createElement("div",{ref:c,"aria-hidden":(null==i?void 0:i["aria-hidden"])??!0,...i},!!u&&t.default.createElement(n,{container:u,createChartApi:e.createOptionsChart,chartKind:"options",...a},r))});u.displayName="OptionsChart";let s=(0,t.forwardRef)(({children:r,containerProps:i,...a},l)=>{let[u,s]=(0,t.useState)(),c=(0,t.useCallback)(e=>{s(e??void 0),l&&("function"==typeof l?l(e):l.current=e)},[l]);return t.default.createElement("div",{ref:c,"aria-hidden":(null==i?void 0:i["aria-hidden"])??!0,...i},!!u&&t.default.createElement(n,{container:u,createChartApi:e.createYieldCurveChart,chartKind:"yield-curve",...a},r))});s.displayName="YieldCurveChart";let c=(0,t.forwardRef)(({children:r,containerProps:i,horzScaleBehavior:a,...l},u)=>{let[s,c]=(0,t.useState)(),f=(0,t.useCallback)(e=>{c(e??void 0),u&&("function"==typeof u?u(e):u.current=e)},[u]),p=(0,t.useCallback)((t,r)=>(0,e.createChartEx)(t,a,r),[a]);return t.default.createElement("div",{ref:f,"aria-hidden":(null==i?void 0:i["aria-hidden"])??!0,...i},!!s&&t.default.createElement(n,{container:s,createChartApi:p,chartKind:"custom",...l},r))});c.displayName="CustomChart";let f=(0,t.createContext)(null);f.displayName="TimeScaleContext";let p="2.5.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
|
-
Docs: see ${"https://ukorvl.github.io/lightweight-charts-react-components/docs/"+i}`),
|
|
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@${f}`),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 v=()=>{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}},y=({onVisibleTimeRangeChange:e,onVisibleLogicalRangeChange:i,onSizeChange:a,visibleRange:l,visibleLogicalRange:n,options:s={}})=>{let{isReady:u,chartApiRef:c}=h(r),{isPaneReady:p,isInsidePane:f}=v(),[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&&(!f||p)&&m.current.init()},[u,f,p]),(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}=y(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(p.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}=v(),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(p);(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 b=({type:e,data:i,options:a={},reactive:l=!0,seriesOrder:n,alwaysReplaceData:s=!1,...u})=>{let{isReady:c,chartApiRef:p,chartKind:f}=h(r),{isPaneReady:o,isInsidePane:m,paneApiRef:y}=v(),[_,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==p?void 0:p.api();if(!s)return null;let c=m?null==y||null==(t=y.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"===f&&"Area"!==e&&"Line"!==e)throw new d("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==p||null==(e=p.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(p&&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(p&&a){var e;null==(e=R.current.api())||e.applyOptions(a)}},[a]),(0,t.useLayoutEffect)(()=>{if(p&&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(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 P=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Histogram",ref:i,...r},e));P.displayName="HistogramSeries";let A=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Candlestick",ref:i,...r},e));A.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}=v(),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),{isInsidePane:n,isPaneReady:s,paneApiRef:u}=v(),c=(0,t.useRef)({_primitive:null,api(){return this._primitive},init(){if(!this._primitive){let t=null==l?void 0:l.api(),r=null==u?void 0:u.api();if(!t||!r)return null;let a=i||e({chart:t,pane:r});r.attachPrimitive(a),this._primitive=a}return this._primitive},clear(){if(null!==this._primitive){var e;null==u||null==(e=u.api())||e.detachPrimitive(this._primitive),this._primitive=null}}});return(0,t.useLayoutEffect)(()=>{if(a){if(!n)throw new d("PanePrimitive must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:"pane-primitives"});s&&c.current.init()}},[a,n,s]),(0,t.useLayoutEffect)(()=>()=>{c.current.clear()},[]),c},F=(0,t.forwardRef)((e,r)=>{let i=Y(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});F.displayName="PanePrimitive";let j=({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},q=(0,t.forwardRef)((e,r)=>{let i=j(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});q.displayName="SeriesPrimitive";let z=({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}},G=(0,t.forwardRef)(({children:e,stretchFactor:r},i)=>{let{paneApiRef:{current:a},isReady:l}=z({stretchFactor:r});return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(m.Provider,{value:{paneApiRef:a,isReady:l}},e)});G.displayName="Pane";export{N as AreaSeries,x as BarSeries,O as BaselineSeries,A as CandlestickSeries,n as Chart,c as CustomChart,I as CustomSeries,P as HistogramSeries,k as LineSeries,V as Markers,s as OptionsChart,G as Pane,F as PanePrimitive,T as PriceLine,R as PriceScale,q as SeriesPrimitive,_ as TimeScale,E 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 v=()=>{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}},y=({onVisibleTimeRangeChange:e,onVisibleLogicalRangeChange:i,onSizeChange:a,visibleRange:n,visibleLogicalRange:l,options:u={}})=>{let{isReady:s,chartApiRef:c}=h(r),{isPaneReady:f,isInsidePane:p}=v(),[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(u),n&&this._timeScale.setVisibleRange(n),l&&this._timeScale.setVisibleLogicalRange(l),d(!0),this._timeScale):null},clear(){this._timeScale=null,d(!1)}});return(0,t.useLayoutEffect)(()=>{s&&(!p||f)&&m.current.init()},[s,p,f]),(0,t.useLayoutEffect)(()=>()=>{m.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(c&&u){var e,t;null==(t=m.current)||null==(e=t.api())||e.applyOptions(u)}},[u]),(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&&n){var e,t;null==(t=m.current)||null==(e=t.api())||e.setVisibleRange(n)}},[n]),(0,t.useLayoutEffect)(()=>{if(c&&l){var e,t;null==(t=m.current)||null==(e=t.api())||e.setVisibleLogicalRange(l)}},[l]),{timeScaleApiRef:m,isReady:o}},R=(0,t.forwardRef)(({children:e,...r},i)=>{let{timeScaleApiRef:{current:a},isReady:n}=y(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(f.Provider,{value:{timeScaleApiRef:a,isReady:n}},e)});R.displayName="TimeScale";let _=({options:e={},id:i})=>{let{isReady:a,chartApiRef:n}=h(r),{isInsidePane:l,isPaneReady:u}=v(),s=(0,t.useRef)({_priceScale:null,api(){return this._priceScale},init(){if(!this._priceScale){let t=null==n?void 0:n.api();if(!t)return null;this._priceScale=t.priceScale(i),this._priceScale.applyOptions(e)}return this._priceScale},setId(t){null!==this._priceScale&&null!==n&&(this._priceScale=n.api().priceScale(t),this._priceScale.applyOptions(e))},clear(){this._priceScale=null}});return(0,t.useLayoutEffect)(()=>{if(a){if(!l)throw new d("PriceScale must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:""});u&&s.current.init()}},[a,l,u]),(0,t.useLayoutEffect)(()=>()=>{s.current.clear()},[]),(0,t.useLayoutEffect)(()=>{var e;n&&(null==(e=s.current)||e.setId(i))},[i]),(0,t.useLayoutEffect)(()=>{if(n&&e){var t,r;null==(r=s.current)||null==(t=r.api())||t.applyOptions(e)}},[e]),s},S=(0,t.forwardRef)((e,r)=>{let i=_(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});S.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:n=!0,seriesOrder:l,alwaysReplaceData:u=!1,...s})=>{let{isReady:c,chartApiRef:f,chartKind:p}=h(r),{isPaneReady:o,isInsidePane:m,paneApiRef:y}=v(),[R,_]=(0,t.useState)(!1),S=(0,t.useRef)({_series:null,api(){return this._series},init(){if(!this._series){var t,r,n;let u=null==f?void 0:f.api();if(!u)return null;let c=m?null==y||null==(t=y.api())?void 0:t.paneIndex():void 0;if("Custom"===e){let e=s.plugin;if(!e)throw new d("Custom series requires a plugin to be defined");this._series=u.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=u.addSeries(b[e],a,c)}null==(r=this._series)||r.setData(i),void 0!==l&&(null==(n=this._series)||n.setSeriesOrder(l)),_(!0)}return this._series},clear(){if(null!==this._series){var e;null==f||null==(e=f.api())||e.removeSeries(this._series),this._series=null,_(!1)}}});return(0,t.useLayoutEffect)(()=>{c&&(!m||o)&&S.current.init()},[c,m,o]),(0,t.useLayoutEffect)(()=>()=>{S.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(f&&i&&n){let e=S.current.api();if(!e)return;let t=e.data(),r=i.length-t.length;if(u||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,n,u]),(0,t.useLayoutEffect)(()=>{if(f&&a){var e;null==(e=S.current.api())||e.applyOptions(a)}},[a]),(0,t.useLayoutEffect)(()=>{if(f&&void 0!==l){var e;null==(e=S.current.api())||e.setSeriesOrder(l)}},[l]),{isReady:R,seriesApiRef:S}},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:n}=g(r);return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(L.Provider,{value:{seriesApiRef:a,isReady:n}},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 P=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Histogram",ref:i,...r},e));P.displayName="HistogramSeries";let A=(0,t.forwardRef)(({children:e,...r},i)=>t.default.createElement(w,{type:"Candlestick",ref:i,...r},e));A.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),n=(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&&n.current.init()},[i]),(0,t.useLayoutEffect)(()=>()=>{n.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(a&&e){var t;null==(t=n.current.api())||t.applyOptions(e)}},[e]),(0,t.useLayoutEffect)(()=>{var e;a&&(null==(e=n.current.api())||e.applyOptions({price:r}))},[r]),n},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:n,seriesApiRef:l}=h(L),u=(0,t.useRef)({_markers:null,api(){return this._markers},init(){if(null===this._markers){let t=null==l?void 0:l.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)(()=>{n&&u.current.init()},[n]),(0,t.useLayoutEffect)(()=>()=>{u.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(l&&i&&r){var e;null==(e=u.current.api())||e.setMarkers(i)}},[i,r]),u},V=(0,t.forwardRef)(({...e},r)=>{let i=B(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});V.displayName="Markers";let W=e=>{let r=(0,t.useRef)(e);return r.current=e,r},M=i=>{let{isReady:a,chartApiRef:n}=h(r),{isPaneReady:l,isInsidePane:u,paneApiRef:s}=v(),c=W(i),f=W(n),p=W(s),o=$(i),m=(0,t.useRef)({_watermark:null,api(){return this._watermark},init(){if(null===this._watermark){var t,r;let i=null==(t=f.current)?void 0:t.api(),a=null==(r=p.current)?void 0:r.api(),n=c.current;if(!i||!a)return null;if(K(n)){let{type:t,...r}=n;this._watermark=(0,e.createTextWatermark)(a,r)}else{let{type:t,src:r,...i}=n;this._watermark=(0,e.createImageWatermark)(a,r,i)}}return this._watermark},clear(){null!==this._watermark&&(this._watermark.detach(),this._watermark=null)}});return(0,t.useLayoutEffect)(()=>{if(a){if(!u)throw new d("Watermark must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:""});l&&(m.current.clear(),m.current.init())}},[a,l,u,o]),(0,t.useLayoutEffect)(()=>()=>{m.current.clear()},[]),(0,t.useLayoutEffect)(()=>{var e;n&&i&&(null==(e=m.current.api())||e.applyOptions(D(i)))},[i]),m},D=e=>{if(K(e)){let{type:t,...r}=e;return r}let{type:t,src:r,...i}=e;return i},$=e=>{if(!K(e))return e.src},K=e=>"text"===e.type,Y=(e,r)=>{let i=M(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null},F=(0,t.forwardRef)((e,t)=>Y({...e,type:"text"},t)),j=(0,t.forwardRef)((e,t)=>Y({...e,type:"image"},t));F.displayName="WatermarkText",j.displayName="WatermarkImage";let q=({isReady:e,props:r,primitiveIdentity:i,mountPrimitive:a})=>{let n=(0,t.useRef)(r),l=(0,t.useRef)(i),u=(0,t.useRef)(a),s=(0,t.useRef)(null);n.current=r,u.current=a;let c=(0,t.useRef)({_primitive:null,api(){return this._primitive},init(){if(!this._primitive){let e=u.current(n.current);if(!e)return null;s.current=e.detach,this._primitive=e.primitive}return this._primitive},clear(){if(null!==this._primitive){var e;null==(e=s.current)||e.call(s),s.current=null,this._primitive=null}}});return(0,t.useLayoutEffect)(()=>{e&&(l.current!==i&&(c.current.clear(),l.current=i),c.current.init())},[e,i]),(0,t.useLayoutEffect)(()=>()=>{c.current.clear()},[]),c},z=e=>{let{isReady:i,chartApiRef:a}=h(r),{isInsidePane:n,isPaneReady:l,paneApiRef:u}=v(),s=(0,t.useRef)(a),c=(0,t.useRef)(u);s.current=a,c.current=u;let f=q({isReady:i&&n&&l,props:e,primitiveIdentity:e.plugin??e.render,mountPrimitive(e){var t,r;let i=null==(t=s.current)?void 0:t.api(),a=null==(r=c.current)?void 0:r.api();if(!i||!a)return null;let n=void 0!==e.plugin?e.plugin:e.render({chart:i,pane:a});return a.attachPrimitive(n),{primitive:n,detach:()=>a.detachPrimitive(n)}}});return(0,t.useLayoutEffect)(()=>{if(i&&!n)throw new d("PanePrimitive must be used inside a pane. Please ensure that the component is wrapped in a pane component.",{isOperational:!0,docsPath:"pane-primitives"})},[i,n]),f},G=(0,t.forwardRef)((e,r)=>{let i=z(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});G.displayName="PanePrimitive";let J=e=>{let{isReady:i,chartApiRef:a}=h(r),{isReady:n,seriesApiRef:l}=h(L),u=(0,t.useRef)(a),s=(0,t.useRef)(l);return u.current=a,s.current=l,q({isReady:i&&n,props:e,primitiveIdentity:e.plugin??e.render,mountPrimitive(e){var t,r;let i=null==(t=s.current)?void 0:t.api(),a=null==(r=u.current)?void 0:r.api();if(!a||!i)return null;let n=void 0!==e.plugin?e.plugin:e.render({chart:a,series:i});return i.attachPrimitive(n),{primitive:n,detach:()=>i.detachPrimitive(n)}}})},Q=(0,t.forwardRef)((e,r)=>{let i=J(e);return(0,t.useImperativeHandle)(r,()=>i.current,[i]),null});Q.displayName="SeriesPrimitive";let U=({stretchFactor:e}={})=>{let{chartApiRef:i,isReady:a}=h(r),[n,l]=(0,t.useState)(!1),u=(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,l(!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()),l(!1),this._pane=null}}});return(0,t.useLayoutEffect)(()=>{a&&u.current.init()},[a]),(0,t.useEffect)(()=>()=>{u.current.clear()},[]),(0,t.useLayoutEffect)(()=>{if(void 0===e)return;let t=u.current.api();t&&t.setStretchFactor(e)},[e]),{paneApiRef:u,isReady:n}},X=(0,t.forwardRef)(({children:e,stretchFactor:r},i)=>{let{paneApiRef:{current:a},isReady:n}=U({stretchFactor:r});return(0,t.useImperativeHandle)(i,()=>a,[a]),t.default.createElement(m.Provider,{value:{paneApiRef:a,isReady:n}},e)});X.displayName="Pane";export{N as AreaSeries,x as BarSeries,O as BaselineSeries,A as CandlestickSeries,l as Chart,c as CustomChart,I as CustomSeries,P as HistogramSeries,k as LineSeries,V as Markers,u as OptionsChart,X as Pane,G as PanePrimitive,T as PriceLine,S as PriceScale,Q as SeriesPrimitive,R as TimeScale,E as TimeScaleFitContentTrigger,j as WatermarkImage,F as WatermarkText,s as YieldCurveChart};
|
|
16
16
|
//# sourceMappingURL=lightweight-charts-react-components.mjs.map
|