lightweight-charts-react-components 1.2.0 → 1.4.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 CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**!
3
- * lightweight-charts-react-components v1.2.0
3
+ * lightweight-charts-react-components v1.4.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.
@@ -150,9 +150,21 @@ export declare const Chart: ForwardRefExoticComponent<ChartProps & RefAttributes
150
150
  * Chart API reference type that can be used to access the chart plugin API.
151
151
  */
152
152
  export declare type ChartApiRef = {
153
+ /**
154
+ * Internal reference to the chart API instance.
155
+ */
153
156
  _chart: IChartApi | null;
157
+ /**
158
+ * Function to get the chart API instance.
159
+ */
154
160
  api: () => IChartApi | null;
161
+ /**
162
+ * Function to initialize the chart API instance.
163
+ */
155
164
  init: () => IChartApi | null;
165
+ /**
166
+ * Function to clear the chart API instance.
167
+ */
156
168
  clear: () => void;
157
169
  };
158
170
 
@@ -160,12 +172,33 @@ export declare type ChartApiRef = {
160
172
  * Chart component props.
161
173
  */
162
174
  export declare type ChartProps = {
175
+ /**
176
+ * Children of the chart component.
177
+ */
163
178
  children?: ReactNode;
179
+ /**
180
+ * The props for the container element on which the chart will be rendered.
181
+ */
164
182
  containerProps?: JSX.IntrinsicElements["div"];
183
+ /**
184
+ * Callback function that is called when the chart is clicked.
185
+ */
165
186
  onClick?: MouseEventHandler<Time>;
187
+ /**
188
+ * Callback function that is called when the crosshair moves.
189
+ */
166
190
  onCrosshairMove?: MouseEventHandler<Time>;
191
+ /**
192
+ * Callback function that is called when the chart is initialized.
193
+ */
167
194
  onInit?: (chart: IChartApi) => void;
195
+ /**
196
+ * Options for the chart.
197
+ */
168
198
  options?: DeepPartial<ChartOptions>;
199
+ /**
200
+ * Callback function that is called when the chart is double-clicked.
201
+ */
169
202
  onDblClick?: MouseEventHandler<Time>;
170
203
  };
171
204
 
@@ -195,6 +228,9 @@ export declare const CustomSeries: ForwardRefExoticComponent<SeriesProps<"Custom
195
228
  * Unique properties for the custom series component.
196
229
  */
197
230
  declare type CustomSeriesUniqueProps = {
231
+ /**
232
+ * Custom pane view plugin instance that can be used to render custom series.
233
+ */
198
234
  plugin?: ICustomSeriesPaneView;
199
235
  };
200
236
 
@@ -236,7 +272,13 @@ export declare type ImageWatermarkProps = {
236
272
  * Pane context that provides access to the pane API and readiness state.
237
273
  */
238
274
  export declare interface IPaneContext {
275
+ /**
276
+ * Reference to the pane API.
277
+ */
239
278
  paneApiRef?: PaneApiRef;
279
+ /**
280
+ * Readiness state of the pane component.
281
+ */
240
282
  isReady: boolean;
241
283
  }
242
284
 
@@ -267,8 +309,8 @@ export declare const LineSeries: ForwardRefExoticComponent<SeriesProps<"Line"> &
267
309
  * @param props - The properties for the markers.
268
310
  * @param ref - The ref to access the markers API.
269
311
  * @returns A React component that renders the markers.
270
- * @see {@link https://tradingview.github.io/lightweight-charts/tutorials/how_to/series-markers | Markers documentation}
271
- * @see {@link https://tradingview.github.io/lightweight-charts/docs/markers | TradingView documentation for markers}
312
+ * @see {@link https://ukorvl.github.io/lightweight-charts-react-components/docs/markers | Documentation for Markers}
313
+ * @see {@link https://tradingview.github.io/lightweight-charts/tutorials/how_to/series-markers | TradingView documentation for markers}
272
314
  * @example
273
315
  * ```tsx
274
316
  * <Markers
@@ -285,9 +327,21 @@ export declare const Markers: ForwardRefExoticComponent<MarkersProps & RefAttrib
285
327
  * Markers API reference type that can be used to access the series markers plugin API.
286
328
  */
287
329
  export declare type MarkersApiRef = {
330
+ /**
331
+ * Internal reference to the series markers API instance.
332
+ */
288
333
  _markers: ISeriesMarkersPluginApi<Time> | null;
334
+ /**
335
+ * Function to get the series markers API instance.
336
+ */
289
337
  api: () => ISeriesMarkersPluginApi<Time> | null;
338
+ /**
339
+ * Function to initialize the series markers API instance.
340
+ */
290
341
  init: () => ISeriesMarkersPluginApi<Time> | null;
342
+ /**
343
+ * Function to clear the series markers API instance.
344
+ */
291
345
  clear: () => void;
292
346
  };
293
347
 
@@ -295,7 +349,13 @@ export declare type MarkersApiRef = {
295
349
  * Markers component properties that can be used to create a series markers component.
296
350
  */
297
351
  export declare type MarkersProps = {
352
+ /**
353
+ * List of markers to be displayed on the series.
354
+ */
298
355
  markers: SeriesMarker<Time>[];
356
+ /**
357
+ * Options for the markers.
358
+ */
299
359
  reactive?: boolean;
300
360
  };
301
361
 
@@ -320,9 +380,21 @@ export declare const Pane: ForwardRefExoticComponent<PaneProps & RefAttributes<P
320
380
  * Pane API reference type that can be used to access the pane plugin API.
321
381
  */
322
382
  export declare type PaneApiRef = {
383
+ /**
384
+ * Reference to the pane API.
385
+ */
323
386
  _pane: IPaneApi<Time> | null;
387
+ /**
388
+ * Function to get the pane API.
389
+ */
324
390
  api: () => IPaneApi<Time> | null;
391
+ /**
392
+ * Function to initialize the pane API.
393
+ */
325
394
  init: () => IPaneApi<Time> | null;
395
+ /**
396
+ * Function to clear the pane API.
397
+ */
326
398
  clear: () => void;
327
399
  };
328
400
 
@@ -330,7 +402,13 @@ export declare type PaneApiRef = {
330
402
  * Pane component props.
331
403
  */
332
404
  export declare type PaneProps = {
405
+ /**
406
+ * Children of the pane component.
407
+ */
333
408
  children?: ReactNode;
409
+ /**
410
+ * Stretch factor for the pane, which determines how much space the pane should take relative to other panes.
411
+ */
334
412
  stretchFactor?: number;
335
413
  };
336
414
 
@@ -353,9 +431,21 @@ export declare const PriceLine: ForwardRefExoticComponent<PriceLineProps & RefAt
353
431
  * PriceLine API reference type that can be used to access the price line plugin API.
354
432
  */
355
433
  export declare type PriceLineApiRef = {
434
+ /**
435
+ * Reference to the price line API.
436
+ */
356
437
  _priceLine: IPriceLine | null;
438
+ /**
439
+ * Function to get the price line API.
440
+ */
357
441
  api: () => IPriceLine | null;
442
+ /**
443
+ * Function to initialize the price line API.
444
+ */
358
445
  init: () => IPriceLine | null;
446
+ /**
447
+ * Function to clear the price line API.
448
+ */
359
449
  clear: () => void;
360
450
  };
361
451
 
@@ -363,7 +453,13 @@ export declare type PriceLineApiRef = {
363
453
  * PriceLine component props.
364
454
  */
365
455
  export declare type PriceLineProps = {
456
+ /**
457
+ * The price at which the price line should be drawn.
458
+ */
366
459
  price: number;
460
+ /**
461
+ * Options for the price line.
462
+ */
367
463
  options?: Omit<Partial<PriceLineOptions>, "price">;
368
464
  };
369
465
 
@@ -386,10 +482,25 @@ export declare const PriceScale: ForwardRefExoticComponent<PriceScaleProps & Ref
386
482
  * Price scale API reference type that can be used to access the price scale plugin API.
387
483
  */
388
484
  export declare type PriceScaleApiRef = {
485
+ /**
486
+ * Reference to the price scale API.
487
+ */
389
488
  _priceScale: IPriceScaleApi | null;
489
+ /**
490
+ * Function to get the price scale API.
491
+ */
390
492
  api: () => IPriceScaleApi | null;
493
+ /**
494
+ * Function to initialize the price scale API.
495
+ */
391
496
  init: () => IPriceScaleApi | null;
497
+ /**
498
+ * Function to set the ID of the price scale.
499
+ */
392
500
  setId: (id: string) => void;
501
+ /**
502
+ * Function to clear the price scale API.
503
+ */
393
504
  clear: () => void;
394
505
  };
395
506
 
@@ -399,7 +510,13 @@ declare type PriceScaleOptions = DeepPartial<PriceScaleOptions_2>;
399
510
  * PriceScale component props.
400
511
  */
401
512
  export declare type PriceScaleProps = {
513
+ /**
514
+ * Options for the price scale.
515
+ */
402
516
  options?: PriceScaleOptions;
517
+ /**
518
+ * The ID of the price scale.
519
+ */
403
520
  id: string;
404
521
  };
405
522
 
@@ -415,9 +532,21 @@ export declare type RenderPrimitive<T extends SeriesType = SeriesType> = ({ char
415
532
  * Series API reference type that can be used to access the series plugin API.
416
533
  */
417
534
  export declare type SeriesApiRef<T extends SeriesType> = {
535
+ /**
536
+ * Internal reference to the series API instance.
537
+ */
418
538
  _series: ISeriesApi<T> | null;
539
+ /**
540
+ * Function to get the series API instance.
541
+ */
419
542
  api: () => ISeriesApi<T> | null;
543
+ /**
544
+ * Function to initialize the series API instance.
545
+ */
420
546
  init: () => ISeriesApi<T> | null;
547
+ /**
548
+ * Function to clear the series API instance.
549
+ */
421
550
  clear: () => void;
422
551
  };
423
552
 
@@ -431,6 +560,13 @@ declare type SeriesParameters<T extends SeriesType> = {
431
560
  reactive?: boolean;
432
561
  options?: SeriesOptions<T>;
433
562
  seriesOrder?: ReturnType<ISeriesApi<T>["seriesOrder"]>;
563
+ /**
564
+ * If true, the series will replace its data on every update.
565
+ * If false, it will try to append data to the existing series, that can be useful for performance.
566
+ *
567
+ * @see {@link https://tradingview.github.io/lightweight-charts/docs#updating-the-data-in-a-series | TradingView documentation for updating series data}
568
+ */
569
+ alwaysReplaceData?: boolean;
434
570
  } & (T extends "Custom" ? CustomSeriesUniqueProps : {});
435
571
 
436
572
  /**
@@ -453,9 +589,21 @@ export declare const SeriesPrimitive: GenericSeriesPrimitiveComponent;
453
589
  * Series primitive API reference type that can be used to access the series primitive plugin API.
454
590
  */
455
591
  export declare type SeriesPrimitiveApiRef = {
592
+ /**
593
+ * Internal reference to the series primitive API instance.
594
+ */
456
595
  _primitive: ISeriesPrimitive | null;
596
+ /**
597
+ * Function to get the series primitive API instance.
598
+ */
457
599
  api(): ISeriesPrimitive | null;
600
+ /**
601
+ * Function to initialize the series primitive API instance.
602
+ */
458
603
  init(): ISeriesPrimitive | null;
604
+ /**
605
+ * Function to clear the series primitive API instance.
606
+ */
459
607
  clear(): void;
460
608
  };
461
609
 
@@ -513,9 +661,21 @@ export declare const TimeScale: ForwardRefExoticComponent<TimeScaleProps & RefAt
513
661
  * Time scale API reference type that can be used to access the time scale plugin API.
514
662
  */
515
663
  export declare type TimeScaleApiRef = {
664
+ /**
665
+ * Reference to the time scale API.
666
+ */
516
667
  _timeScale: ITimeScaleApi<Time> | null;
668
+ /**
669
+ * Function to get the time scale API.
670
+ */
517
671
  api: () => ITimeScaleApi<Time> | null;
672
+ /**
673
+ * Function to initialize the time scale API.
674
+ */
518
675
  init: () => ITimeScaleApi<Time> | null;
676
+ /**
677
+ * Function to clear the time scale API.
678
+ */
519
679
  clear: () => void;
520
680
  };
521
681
 
@@ -536,6 +696,9 @@ export declare const TimeScaleFitContentTrigger: ({ deps, }: TimeScaleFitContent
536
696
  * TimeScaleFitContentTriggerProps component props.
537
697
  */
538
698
  export declare type TimeScaleFitContentTriggerProps = {
699
+ /**
700
+ * List of dependencies that trigger the time scale to fit content.
701
+ */
539
702
  deps: DependencyList;
540
703
  };
541
704
 
@@ -545,12 +708,33 @@ declare type TimeScaleOptions = DeepPartial<TimeScaleOptions_2>;
545
708
  * TimeScale component props.
546
709
  */
547
710
  export declare type TimeScaleProps = {
711
+ /**
712
+ * Callback for when the visible time range changes.
713
+ */
548
714
  onVisibleTimeRangeChange?: TimeRangeChangeEventHandler<Time>;
715
+ /**
716
+ * Callback for when the visible logical range changes.
717
+ */
549
718
  onVisibleLogicalRangeChange?: LogicalRangeChangeEventHandler;
719
+ /**
720
+ * Callback for when the size of the time scale changes.
721
+ */
550
722
  onSizeChange?: SizeChangeEventHandler;
723
+ /**
724
+ * The visible time range for the time scale.
725
+ */
551
726
  visibleRange?: IRange<Time>;
727
+ /**
728
+ * The visible logical range for the time scale.
729
+ */
552
730
  visibleLogicalRange?: IRange<number>;
731
+ /**
732
+ * Options for the time scale.
733
+ */
553
734
  options?: TimeScaleOptions;
735
+ /**
736
+ * Children of the time scale component.
737
+ */
554
738
  children?: ReactNode;
555
739
  };
556
740
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**!
3
- * lightweight-charts-react-components v1.2.0
3
+ * lightweight-charts-react-components v1.4.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"react";import*as t from"lightweight-charts";let i=(0,e.createContext)(null);i.displayName="ChartContext";let r={addDefaultPane:!1},a=({container:i,onClick:a,onCrosshairMove:l,onInit:n,options:s={},onDblClick:u})=>{let[c,f]=(0,e.useState)(!1),o=(0,e.useRef)({_chart:null,api(){return this._chart},init(){if(null===this._chart){let e=(0,t.createChart)(i,{...r,...s});this._chart=e,n&&n(this._chart)}return c||f(!0),this._chart},clear(){null!==this._chart&&(f(!1),this._chart.remove(),this._chart=null)}});return(0,e.useLayoutEffect)(()=>(o.current.init(),()=>{o.current.clear()}),[]),(0,e.useLayoutEffect)(()=>{if(i){if(a){var e;null===(e=o.current.api())||void 0===e||e.subscribeClick(a)}return()=>{if(a){var e;null===(e=o.current.api())||void 0===e||e.unsubscribeClick(a)}}}},[a]),(0,e.useLayoutEffect)(()=>{if(i){if(l){var e;null===(e=o.current.api())||void 0===e||e.subscribeCrosshairMove(l)}return()=>{if(l){var e;null===(e=o.current.api())||void 0===e||e.unsubscribeCrosshairMove(l)}}}},[l]),(0,e.useLayoutEffect)(()=>{if(i){if(u){var e;null===(e=o.current.api())||void 0===e||e.subscribeDblClick(u)}return()=>{if(u){var e;null===(e=o.current.api())||void 0===e||e.unsubscribeDblClick(u)}}}},[u]),(0,e.useLayoutEffect)(()=>{var e;i&&(null===(e=o.current.api())||void 0===e||e.applyOptions({...r,...s}))},[s]),{chartApiRef:o,isReady:c}},l=({children:t,container:r,onClick:l,onCrosshairMove:n,onInit:s,options:u})=>{let{chartApiRef:{current:c},isReady:f}=a({container:r,onClick:l,onCrosshairMove:n,onInit:s,options:u});return e.default.createElement(i.Provider,{value:{chartApiRef:c,isReady:f}},t)},n=(0,e.forwardRef)(({children:t,containerProps:i,...r},a)=>{let[n,s]=(0,e.useState)(),u=(0,e.useCallback)(e=>{s(e),a&&("function"==typeof a?u(e):a.current=e)},[a]);return e.default.createElement("div",{ref:u,...i},!!n&&e.default.createElement(l,{container:n,...r},t))});n.displayName="ChartWrapper";let s=(0,e.createContext)(null);s.displayName="TimeScaleContext";let u="1.2.0";function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class f extends Error{constructor(e,{isOperational:t=!0,cause:i,docsPath:r}={}){super(e),c(this,"isOperational",void 0),c(this,"cause",void 0),this.name=this.constructor.name??"InternalError",this.isOperational=t,this.cause=i,this.message=`${e??"An error occurred"}`,r&&(this.message=`${this.message}
11
+ import*as e from"react";import*as t from"lightweight-charts";let i=(0,e.createContext)(null);i.displayName="ChartContext";let r={addDefaultPane:!1},a=({container:i,onClick:a,onCrosshairMove:l,onInit:n,options:s={},onDblClick:u})=>{let[c,f]=(0,e.useState)(!1),o=(0,e.useRef)({_chart:null,api(){return this._chart},init(){if(null===this._chart){let e=(0,t.createChart)(i,{...r,...s});this._chart=e,n&&n(this._chart)}return c||f(!0),this._chart},clear(){null!==this._chart&&(f(!1),this._chart.remove(),this._chart=null)}});return(0,e.useLayoutEffect)(()=>(o.current.init(),()=>{o.current.clear()}),[]),(0,e.useLayoutEffect)(()=>{if(i){if(a){var e;null===(e=o.current.api())||void 0===e||e.subscribeClick(a)}return()=>{if(a){var e;null===(e=o.current.api())||void 0===e||e.unsubscribeClick(a)}}}},[a]),(0,e.useLayoutEffect)(()=>{if(i){if(l){var e;null===(e=o.current.api())||void 0===e||e.subscribeCrosshairMove(l)}return()=>{if(l){var e;null===(e=o.current.api())||void 0===e||e.unsubscribeCrosshairMove(l)}}}},[l]),(0,e.useLayoutEffect)(()=>{if(i){if(u){var e;null===(e=o.current.api())||void 0===e||e.subscribeDblClick(u)}return()=>{if(u){var e;null===(e=o.current.api())||void 0===e||e.unsubscribeDblClick(u)}}}},[u]),(0,e.useLayoutEffect)(()=>{var e;i&&(null===(e=o.current.api())||void 0===e||e.applyOptions({...r,...s}))},[s]),{chartApiRef:o,isReady:c}},l=({children:t,container:r,onClick:l,onCrosshairMove:n,onInit:s,options:u})=>{let{chartApiRef:{current:c},isReady:f}=a({container:r,onClick:l,onCrosshairMove:n,onInit:s,options:u});return e.default.createElement(i.Provider,{value:{chartApiRef:c,isReady:f}},t)},n=(0,e.forwardRef)(({children:t,containerProps:i,...r},a)=>{let[n,s]=(0,e.useState)(),u=(0,e.useCallback)(e=>{s(e),a&&("function"==typeof a?u(e):a.current=e)},[a]);return e.default.createElement("div",{ref:u,...i},!!n&&e.default.createElement(l,{container:n,...r},t))});n.displayName="ChartWrapper";let s=(0,e.createContext)(null);s.displayName="TimeScaleContext";let u="1.4.0";function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class f extends Error{constructor(e,{isOperational:t=!0,cause:i,docsPath:r}={}){super(e),c(this,"isOperational",void 0),c(this,"cause",void 0),this.name=this.constructor.name??"InternalError",this.isOperational=t,this.cause=i,this.message=`${e??"An error occurred"}`,r&&(this.message=`${this.message}
12
12
 
13
13
  Docs: see ${"https://ukorvl.github.io/lightweight-charts-react-components/docs/"+r}`),u&&(this.message=`${this.message}
14
14
 
15
- Version: lightweight-charts-react-components@${u}`),Object.setPrototypeOf(this,f.prototype)}}let o=(t,i)=>{let r=(0,e.useContext)(t);if(!r){let e=t.name??t.displayName??"Context";throw new f(i??`${e} not found.`,{isOperational:!0})}return r},p=({onVisibleTimeRangeChange:t,onVisibleLogicalRangeChange:r,onSizeChange:a,visibleRange:l,visibleLogicalRange:n,options:s={}})=>{let{isReady:u,chartApiRef:c}=o(i),[f,p]=(0,e.useState)(!1),d=(0,e.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),t&&this._timeScale.subscribeVisibleTimeRangeChange(t),r&&this._timeScale.subscribeVisibleLogicalRangeChange(r),a&&this._timeScale.subscribeSizeChange(a),p(!0),this._timeScale):null},clear(){this._timeScale=null,p(!1)}});return(0,e.useLayoutEffect)(()=>{u&&d.current.init()},[u]),(0,e.useLayoutEffect)(()=>()=>{d.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(c&&s){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.applyOptions(s)}},[s]),(0,e.useLayoutEffect)(()=>{if(c){if(a){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.subscribeSizeChange(a)}return()=>{if(a){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.unsubscribeSizeChange(a)}}}},[a]),(0,e.useLayoutEffect)(()=>{if(c){if(r){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.subscribeVisibleLogicalRangeChange(r)}return()=>{if(r){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.unsubscribeVisibleLogicalRangeChange(r)}}}},[r]),(0,e.useLayoutEffect)(()=>{if(c){if(t){var e,i;null===(i=d.current)||void 0===i||null===(e=i.api())||void 0===e||e.subscribeVisibleTimeRangeChange(t)}return()=>{if(t){var e,i;null===(i=d.current)||void 0===i||null===(e=i.api())||void 0===e||e.unsubscribeVisibleTimeRangeChange(t)}}}},[t]),(0,e.useLayoutEffect)(()=>{if(c&&l){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.setVisibleRange(l)}},[l]),(0,e.useLayoutEffect)(()=>{if(c&&n){var e,t;null===(t=d.current)||void 0===t||null===(e=t.api())||void 0===e||e.setVisibleLogicalRange(n)}},[n]),{timeScaleApiRef:d,isReady:f}},d=(0,e.forwardRef)(({children:t,...i},r)=>{let{timeScaleApiRef:{current:a},isReady:l}=p(i);return(0,e.useImperativeHandle)(r,()=>a,[a]),e.default.createElement(s.Provider,{value:{timeScaleApiRef:a,isReady:l}},t)});d.displayName="TimeScale";let h=(0,e.createContext)(null);h.displayName="PaneContext";let m=()=>{let t=(0,e.useContext)(h),i=!!t;return{isInsidePane:i,isPaneReady:!!(null==t?void 0:t.isReady),paneApiRef:null==t?void 0:t.paneApiRef}},v=({options:t={},id:r})=>{let{isReady:a,chartApiRef:l}=o(i),{isInsidePane:n,isPaneReady:s}=m(),u=(0,e.useRef)({_priceScale:null,api(){return this._priceScale},init(){if(!this._priceScale){let e=null==l?void 0:l.api();if(!e)return null;this._priceScale=e.priceScale(r),this._priceScale.applyOptions(t)}return this._priceScale},setId(e){null!==this._priceScale&&null!==l&&(this._priceScale=l.api().priceScale(e),this._priceScale.applyOptions(t))},clear(){this._priceScale=null}});return(0,e.useLayoutEffect)(()=>{if(a){if(!n)throw new f("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,e.useLayoutEffect)(()=>()=>{u.current.clear()},[]),(0,e.useLayoutEffect)(()=>{var e;l&&(null===(e=u.current)||void 0===e||e.setId(r))},[r]),(0,e.useLayoutEffect)(()=>{if(l&&t){var e,i;null===(i=u.current)||void 0===i||null===(e=i.api())||void 0===e||e.applyOptions(t)}},[t]),u},y=(0,e.forwardRef)((t,i)=>{let r=v(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});y.displayName="PriceScale";let _=({deps:t})=>{let{timeScaleApiRef:i,isReady:r}=o(s);(0,e.useLayoutEffect)(()=>{if(!r||!i)return;let e=i.api();queueMicrotask(()=>{e&&e.fitContent()})},[...t,r])},S=({deps:e})=>(_({deps:e}),null),R=(0,e.createContext)({seriesApiRef:null,isReady:!1});R.displayName="SeriesContext";let L=({type:t,data:r,options:a={},reactive:l=!0,seriesOrder:n,...s})=>{let{isReady:u,chartApiRef:c}=o(i),{isPaneReady:p,isInsidePane:d,paneApiRef:h}=m(),[v,y]=(0,e.useState)(!1),_=(0,e.useRef)({_series:null,api(){return this._series},init(){if(!this._series){var e,i,l;let u=null==c?void 0:c.api();if(!u)return null;let o=d?null==h||null===(e=h.api())||void 0===e?void 0:e.paneIndex():void 0;if("Custom"===t){let e=s.plugin;if(!e)throw new f("Custom series requires a plugin to be defined");this._series=u.addCustomSeries(e,a,o)}else this._series=u.addSeries(E[t],a,o);null===(i=this._series)||void 0===i||i.setData(r),void 0!==n&&(null===(l=this._series)||void 0===l||l.setSeriesOrder(n)),y(!0)}return this._series},clear(){if(null!==this._series){var e;null==c||null===(e=c.api())||void 0===e||e.removeSeries(this._series),this._series=null,y(!1)}}});return(0,e.useLayoutEffect)(()=>{u&&(!d||p)&&_.current.init()},[u,d,p]),(0,e.useLayoutEffect)(()=>()=>{_.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(c&&r&&l){var e;null===(e=_.current.api())||void 0===e||e.setData(r)}},[r,l]),(0,e.useLayoutEffect)(()=>{if(c&&a){var e;null===(e=_.current.api())||void 0===e||e.applyOptions(a)}},[a]),(0,e.useLayoutEffect)(()=>{if(c&&void 0!==n){var e;null===(e=_.current.api())||void 0===e||e.setSeriesOrder(n)}},[n]),{isReady:v,seriesApiRef:_}},E={Line:t.LineSeries,Candlestick:t.CandlestickSeries,Histogram:t.HistogramSeries,Area:t.AreaSeries,Baseline:t.BaselineSeries,Bar:t.BarSeries},b=(0,e.forwardRef)(({children:t,...i},r)=>{let{seriesApiRef:{current:a},isReady:l}=L(i);return(0,e.useImperativeHandle)(r,()=>a,[a]),e.default.createElement(R.Provider,{value:{seriesApiRef:a,isReady:l}},t)});b.displayName="SeriesTemplate";let g=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Line",ref:r,...i},t));g.displayName="LineSeries";let C=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Histogram",ref:r,...i},t));C.displayName="HistogramSeries";let k=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Candlestick",ref:r,...i},t));k.displayName="CandlestickSeries";let w=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Area",ref:r,...i},t));w.displayName="AreaSeries";let P=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Baseline",ref:r,...i},t));P.displayName="BaselineSeries";let A=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Bar",ref:r,...i},t));A.displayName="BarSeries";let N=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(b,{type:"Custom",ref:r,...i},t));N.displayName="CustomSeries";let x=({options:t,price:i})=>{let{isReady:r,seriesApiRef:a}=o(R),l=(0,e.useRef)({_priceLine:null,api(){return this._priceLine},init(){if(!this._priceLine){let e=null==a?void 0:a.api();if(!e)return null;this._priceLine=e.createPriceLine({price:i,...t})}return this._priceLine},clear(){if(null!==this._priceLine){var e;null==a||null===(e=a.api())||void 0===e||e.removePriceLine(this._priceLine),this._priceLine=null}}});return(0,e.useLayoutEffect)(()=>{r&&l.current.init()},[r]),(0,e.useLayoutEffect)(()=>()=>{l.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(a&&t){var e;null===(e=l.current.api())||void 0===e||e.applyOptions(t)}},[t]),(0,e.useLayoutEffect)(()=>{if(a&&i){var e;null===(e=l.current.api())||void 0===e||e.applyOptions({price:i})}},[i]),l},O=(0,e.forwardRef)((t,i)=>{let r=x(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});O.displayName="PriceLine";let I=({reactive:i=!0,markers:r})=>{let{isReady:a,seriesApiRef:l}=o(R),n=(0,e.useRef)({_markers:null,api(){return this._markers},init(){if(null===this._markers){let e=null==l?void 0:l.api();if(!e)return null;this._markers=(0,t.createSeriesMarkers)(e,r)}return this._markers},clear(){null!==this._markers&&(this._markers.detach(),this._markers=null)}});return(0,e.useLayoutEffect)(()=>{a&&n.current.init()},[a]),(0,e.useLayoutEffect)(()=>()=>{n.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(l&&r&&i){var e;null===(e=n.current.api())||void 0===e||e.setMarkers(r)}},[r,i]),n},H=(0,e.forwardRef)(({...t},i)=>{let r=I(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});H.displayName="Markers";let T=r=>{let{isReady:a,chartApiRef:l}=o(i),{isPaneReady:n,isInsidePane:s,paneApiRef:u}=m(),c=(0,e.useRef)({_watermark:null,api(){return this._watermark},init(){if(null===this._watermark){let e=null==l?void 0:l.api(),i=null==u?void 0:u.api();if(!e||!i)return null;if(V(r)){let{type:e,...a}=r;this._watermark=(0,t.createTextWatermark)(i,a)}else{let{type:e,src:a,...l}=r;this._watermark=(0,t.createImageWatermark)(i,a,l)}}return this._watermark},clear(){null!==this._watermark&&(this._watermark.detach(),this._watermark=null)}});return(0,e.useLayoutEffect)(()=>{if(a){if(!s)throw new f("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,e.useLayoutEffect)(()=>()=>{c.current.clear()},[]),(0,e.useLayoutEffect)(()=>{var e;if(!l||!r)return;let{type:t,...i}=r;null===(e=c.current.api())||void 0===e||e.applyOptions(i)},[r]),c},V=e=>"text"===e.type,B=(t,i)=>{let r=T(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null},W=(0,e.forwardRef)((e,t)=>B({...e,type:"text"},t)),M=(0,e.forwardRef)((e,t)=>B({...e,type:"image"},t));W.displayName="WatermarkText",M.displayName="WatermarkImage";let D=({render:t,plugin:r})=>{let{isReady:a,chartApiRef:l}=o(i),{isReady:n,seriesApiRef:s}=o(R),u=(0,e.useRef)({_primitive:null,api(){return this._primitive},init(){if(!this._primitive){let e=null==s?void 0:s.api(),i=null==l?void 0:l.api();if(!i||!e)return null;let a=r||t({chart:i,series:e});e.attachPrimitive(a),this._primitive=a}return this._primitive},clear(){if(null!==this._primitive){var e;null==s||null===(e=s.api())||void 0===e||e.detachPrimitive(this._primitive),this._primitive=null}}});return(0,e.useLayoutEffect)(()=>{a&&n&&u.current.init()},[n,a]),(0,e.useLayoutEffect)(()=>()=>{u.current.clear()},[]),u},$=(0,e.forwardRef)((t,i)=>{let r=D(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});$.displayName="SeriesPrimitive";let z=({stretchFactor:t}={})=>{let{chartApiRef:r,isReady:a}=o(i),[l,n]=(0,e.useState)(!1),s=(0,e.useRef)({_pane:null,api(){return this._pane},init(){let e=null==r?void 0:r.api();if(!e)return null;let i=e.addPane(!0);return this._pane=i,n(!0),void 0!==t&&this._pane.setStretchFactor(t),this._pane},clear(){if(null!==this._pane){var e;null==r||null===(e=r.api())||void 0===e||e.removePane(this._pane.paneIndex()),n(!1),this._pane=null}}});return(0,e.useLayoutEffect)(()=>{a&&s.current.init()},[a]),(0,e.useLayoutEffect)(()=>()=>{s.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(void 0===t)return;let e=s.current.api();e&&e.setStretchFactor(t)},[t]),{paneApiRef:s,isReady:l}},F=(0,e.forwardRef)(({children:t,stretchFactor:i},r)=>{let{paneApiRef:{current:a},isReady:l}=z({stretchFactor:i});return(0,e.useImperativeHandle)(r,()=>a,[a]),e.default.createElement(h.Provider,{value:{paneApiRef:a,isReady:l}},t)});F.displayName="Pane";export{w as AreaSeries,A as BarSeries,P as BaselineSeries,k as CandlestickSeries,n as Chart,N as CustomSeries,C as HistogramSeries,g as LineSeries,H as Markers,F as Pane,O as PriceLine,y as PriceScale,$ as SeriesPrimitive,d as TimeScale,S as TimeScaleFitContentTrigger,M as WatermarkImage,W as WatermarkText};
15
+ Version: lightweight-charts-react-components@${u}`),Object.setPrototypeOf(this,f.prototype)}}let o=(t,i)=>{let r=(0,e.useContext)(t);if(!r){let e=t.name??t.displayName??"Context";throw new f(i??`${e} not found.`,{isOperational:!0})}return r},p=(0,e.createContext)(null);p.displayName="PaneContext";let d=()=>{let t=(0,e.useContext)(p),i=!!t;return{isInsidePane:i,isPaneReady:!!(null==t?void 0:t.isReady),paneApiRef:null==t?void 0:t.paneApiRef}},h=({onVisibleTimeRangeChange:t,onVisibleLogicalRangeChange:r,onSizeChange:a,visibleRange:l,visibleLogicalRange:n,options:s={}})=>{let{isReady:u,chartApiRef:c}=o(i),{isPaneReady:f,isInsidePane:p}=d(),[h,m]=(0,e.useState)(!1),v=(0,e.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),t&&this._timeScale.subscribeVisibleTimeRangeChange(t),r&&this._timeScale.subscribeVisibleLogicalRangeChange(r),a&&this._timeScale.subscribeSizeChange(a),m(!0),this._timeScale):null},clear(){this._timeScale=null,m(!1)}});return(0,e.useLayoutEffect)(()=>{u&&(!p||f)&&v.current.init()},[u,p,f]),(0,e.useLayoutEffect)(()=>()=>{v.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(c&&s){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.applyOptions(s)}},[s]),(0,e.useLayoutEffect)(()=>{if(c){if(a){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.subscribeSizeChange(a)}return()=>{if(a){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.unsubscribeSizeChange(a)}}}},[a]),(0,e.useLayoutEffect)(()=>{if(c){if(r){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.subscribeVisibleLogicalRangeChange(r)}return()=>{if(r){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.unsubscribeVisibleLogicalRangeChange(r)}}}},[r]),(0,e.useLayoutEffect)(()=>{if(c){if(t){var e,i;null===(i=v.current)||void 0===i||null===(e=i.api())||void 0===e||e.subscribeVisibleTimeRangeChange(t)}return()=>{if(t){var e,i;null===(i=v.current)||void 0===i||null===(e=i.api())||void 0===e||e.unsubscribeVisibleTimeRangeChange(t)}}}},[t]),(0,e.useLayoutEffect)(()=>{if(c&&l){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.setVisibleRange(l)}},[l]),(0,e.useLayoutEffect)(()=>{if(c&&n){var e,t;null===(t=v.current)||void 0===t||null===(e=t.api())||void 0===e||e.setVisibleLogicalRange(n)}},[n]),{timeScaleApiRef:v,isReady:h}},m=(0,e.forwardRef)(({children:t,...i},r)=>{let{timeScaleApiRef:{current:a},isReady:l}=h(i);return(0,e.useImperativeHandle)(r,()=>a,[a]),e.default.createElement(s.Provider,{value:{timeScaleApiRef:a,isReady:l}},t)});m.displayName="TimeScale";let v=({options:t={},id:r})=>{let{isReady:a,chartApiRef:l}=o(i),{isInsidePane:n,isPaneReady:s}=d(),u=(0,e.useRef)({_priceScale:null,api(){return this._priceScale},init(){if(!this._priceScale){let e=null==l?void 0:l.api();if(!e)return null;this._priceScale=e.priceScale(r),this._priceScale.applyOptions(t)}return this._priceScale},setId(e){null!==this._priceScale&&null!==l&&(this._priceScale=l.api().priceScale(e),this._priceScale.applyOptions(t))},clear(){this._priceScale=null}});return(0,e.useLayoutEffect)(()=>{if(a){if(!n)throw new f("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,e.useLayoutEffect)(()=>()=>{u.current.clear()},[]),(0,e.useLayoutEffect)(()=>{var e;l&&(null===(e=u.current)||void 0===e||e.setId(r))},[r]),(0,e.useLayoutEffect)(()=>{if(l&&t){var e,i;null===(i=u.current)||void 0===i||null===(e=i.api())||void 0===e||e.applyOptions(t)}},[t]),u},y=(0,e.forwardRef)((t,i)=>{let r=v(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});y.displayName="PriceScale";let _=({deps:t})=>{let{timeScaleApiRef:i,isReady:r}=o(s);(0,e.useLayoutEffect)(()=>{if(!r||!i)return;let e=i.api();queueMicrotask(()=>{e&&e.fitContent()})},[...t,r])},S=({deps:e})=>(_({deps:e}),null),R=(0,e.createContext)({seriesApiRef:null,isReady:!1});R.displayName="SeriesContext";let L=({type:t,data:r,options:a={},reactive:l=!0,seriesOrder:n,alwaysReplaceData:s=!1,...u})=>{let{isReady:c,chartApiRef:p}=o(i),{isPaneReady:h,isInsidePane:m,paneApiRef:v}=d(),[y,_]=(0,e.useState)(!1),S=(0,e.useRef)({_series:null,api(){return this._series},init(){if(!this._series){var e,i,l;let s=null==p?void 0:p.api();if(!s)return null;let c=m?null==v||null===(e=v.api())||void 0===e?void 0:e.paneIndex():void 0;if("Custom"===t){let e=u.plugin;if(!e)throw new f("Custom series requires a plugin to be defined");this._series=s.addCustomSeries(e,a,c)}else this._series=s.addSeries(g[t],a,c);null===(i=this._series)||void 0===i||i.setData(r),void 0!==n&&(null===(l=this._series)||void 0===l||l.setSeriesOrder(n)),_(!0)}return this._series},clear(){if(null!==this._series){var e;null==p||null===(e=p.api())||void 0===e||e.removeSeries(this._series),this._series=null,_(!1)}}});return(0,e.useLayoutEffect)(()=>{c&&(!m||h)&&S.current.init()},[c,m,h]),(0,e.useLayoutEffect)(()=>()=>{S.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(p&&r&&l){let e=S.current.api();if(!e)return;let t=e.data(),i=r.length-t.length;if(s||0===t.length||0===r.length||i<0||i>1){e.setData(r);return}let a=r[r.length-1];e.update(a)}},[r,l,s]),(0,e.useLayoutEffect)(()=>{if(p&&a){var e;null===(e=S.current.api())||void 0===e||e.applyOptions(a)}},[a]),(0,e.useLayoutEffect)(()=>{if(p&&void 0!==n){var e;null===(e=S.current.api())||void 0===e||e.setSeriesOrder(n)}},[n]),{isReady:y,seriesApiRef:S}},g={Line:t.LineSeries,Candlestick:t.CandlestickSeries,Histogram:t.HistogramSeries,Area:t.AreaSeries,Baseline:t.BaselineSeries,Bar:t.BarSeries},E=(0,e.forwardRef)(({children:t,...i},r)=>{let{seriesApiRef:{current:a},isReady:l}=L(i);return(0,e.useImperativeHandle)(r,()=>a,[a]),e.default.createElement(R.Provider,{value:{seriesApiRef:a,isReady:l}},t)});E.displayName="SeriesTemplate";let b=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Line",ref:r,...i},t));b.displayName="LineSeries";let C=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Histogram",ref:r,...i},t));C.displayName="HistogramSeries";let k=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Candlestick",ref:r,...i},t));k.displayName="CandlestickSeries";let w=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Area",ref:r,...i},t));w.displayName="AreaSeries";let P=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Baseline",ref:r,...i},t));P.displayName="BaselineSeries";let A=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Bar",ref:r,...i},t));A.displayName="BarSeries";let N=(0,e.forwardRef)(({children:t,...i},r)=>e.default.createElement(E,{type:"Custom",ref:r,...i},t));N.displayName="CustomSeries";let x=({options:t,price:i})=>{let{isReady:r,seriesApiRef:a}=o(R),l=(0,e.useRef)({_priceLine:null,api(){return this._priceLine},init(){if(!this._priceLine){let e=null==a?void 0:a.api();if(!e)return null;this._priceLine=e.createPriceLine({price:i,...t})}return this._priceLine},clear(){if(null!==this._priceLine){var e;null==a||null===(e=a.api())||void 0===e||e.removePriceLine(this._priceLine),this._priceLine=null}}});return(0,e.useLayoutEffect)(()=>{r&&l.current.init()},[r]),(0,e.useLayoutEffect)(()=>()=>{l.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(a&&t){var e;null===(e=l.current.api())||void 0===e||e.applyOptions(t)}},[t]),(0,e.useLayoutEffect)(()=>{if(a&&i){var e;null===(e=l.current.api())||void 0===e||e.applyOptions({price:i})}},[i]),l},O=(0,e.forwardRef)((t,i)=>{let r=x(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});O.displayName="PriceLine";let I=({reactive:i=!0,markers:r})=>{let{isReady:a,seriesApiRef:l}=o(R),n=(0,e.useRef)({_markers:null,api(){return this._markers},init(){if(null===this._markers){let e=null==l?void 0:l.api();if(!e)return null;this._markers=(0,t.createSeriesMarkers)(e,r)}return this._markers},clear(){null!==this._markers&&(this._markers.detach(),this._markers=null)}});return(0,e.useLayoutEffect)(()=>{a&&n.current.init()},[a]),(0,e.useLayoutEffect)(()=>()=>{n.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(l&&r&&i){var e;null===(e=n.current.api())||void 0===e||e.setMarkers(r)}},[r,i]),n},H=(0,e.forwardRef)(({...t},i)=>{let r=I(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});H.displayName="Markers";let T=r=>{let{isReady:a,chartApiRef:l}=o(i),{isPaneReady:n,isInsidePane:s,paneApiRef:u}=d(),c=(0,e.useRef)({_watermark:null,api(){return this._watermark},init(){if(null===this._watermark){let e=null==l?void 0:l.api(),i=null==u?void 0:u.api();if(!e||!i)return null;if(V(r)){let{type:e,...a}=r;this._watermark=(0,t.createTextWatermark)(i,a)}else{let{type:e,src:a,...l}=r;this._watermark=(0,t.createImageWatermark)(i,a,l)}}return this._watermark},clear(){null!==this._watermark&&(this._watermark.detach(),this._watermark=null)}});return(0,e.useLayoutEffect)(()=>{if(a){if(!s)throw new f("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,e.useLayoutEffect)(()=>()=>{c.current.clear()},[]),(0,e.useLayoutEffect)(()=>{var e;if(!l||!r)return;let{type:t,...i}=r;null===(e=c.current.api())||void 0===e||e.applyOptions(i)},[r]),c},V=e=>"text"===e.type,B=(t,i)=>{let r=T(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null},W=(0,e.forwardRef)((e,t)=>B({...e,type:"text"},t)),M=(0,e.forwardRef)((e,t)=>B({...e,type:"image"},t));W.displayName="WatermarkText",M.displayName="WatermarkImage";let D=({render:t,plugin:r})=>{let{isReady:a,chartApiRef:l}=o(i),{isReady:n,seriesApiRef:s}=o(R),u=(0,e.useRef)({_primitive:null,api(){return this._primitive},init(){if(!this._primitive){let e=null==s?void 0:s.api(),i=null==l?void 0:l.api();if(!i||!e)return null;let a=r||t({chart:i,series:e});e.attachPrimitive(a),this._primitive=a}return this._primitive},clear(){if(null!==this._primitive){var e;null==s||null===(e=s.api())||void 0===e||e.detachPrimitive(this._primitive),this._primitive=null}}});return(0,e.useLayoutEffect)(()=>{a&&n&&u.current.init()},[n,a]),(0,e.useLayoutEffect)(()=>()=>{u.current.clear()},[]),u},$=(0,e.forwardRef)((t,i)=>{let r=D(t);return(0,e.useImperativeHandle)(i,()=>r.current,[r]),null});$.displayName="SeriesPrimitive";let z=({stretchFactor:t}={})=>{let{chartApiRef:r,isReady:a}=o(i),[l,n]=(0,e.useState)(!1),s=(0,e.useRef)({_pane:null,api(){return this._pane},init(){let e=null==r?void 0:r.api();if(!e)return null;let i=e.addPane(!0);return this._pane=i,n(!0),void 0!==t&&this._pane.setStretchFactor(t),this._pane},clear(){if(null!==this._pane){var e;null==r||null===(e=r.api())||void 0===e||e.removePane(this._pane.paneIndex()),n(!1),this._pane=null}}});return(0,e.useLayoutEffect)(()=>{a&&s.current.init()},[a]),(0,e.useLayoutEffect)(()=>()=>{s.current.clear()},[]),(0,e.useLayoutEffect)(()=>{if(void 0===t)return;let e=s.current.api();e&&e.setStretchFactor(t)},[t]),{paneApiRef:s,isReady:l}},F=(0,e.forwardRef)(({children:t,stretchFactor:i},r)=>{let{paneApiRef:{current:a},isReady:l}=z({stretchFactor:i});return(0,e.useImperativeHandle)(r,()=>a,[a]),e.default.createElement(p.Provider,{value:{paneApiRef:a,isReady:l}},t)});F.displayName="Pane";export{w as AreaSeries,A as BarSeries,P as BaselineSeries,k as CandlestickSeries,n as Chart,N as CustomSeries,C as HistogramSeries,b as LineSeries,H as Markers,F as Pane,O as PriceLine,y as PriceScale,$ as SeriesPrimitive,m as TimeScale,S as TimeScaleFitContentTrigger,M as WatermarkImage,W as WatermarkText};
16
16
  //# sourceMappingURL=lightweight-charts-react-components.mjs.map