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 +187 -3
- 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 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/**!
|
|
3
|
-
* lightweight-charts-react-components v1.
|
|
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://
|
|
271
|
-
* @see {@link https://tradingview.github.io/lightweight-charts/
|
|
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.
|
|
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.
|
|
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
|