@@ -4,6 +4,8 @@ import type {
44 ChartData ,
55 DefaultDataPoint ,
66 ChartDataset ,
7+ ChartOptions ,
8+ Chart ,
79} from 'chart.js' ;
810
911export function reforwardRef < T > ( ref : ForwardedRef < T > , value : T ) {
@@ -14,7 +16,26 @@ export function reforwardRef<T>(ref: ForwardedRef<T>, value: T) {
1416 }
1517}
1618
17- export function setNextDatasets <
19+ export function setOptions <
20+ TType extends ChartType = ChartType ,
21+ TData = DefaultDataPoint < TType > ,
22+ TLabel = unknown
23+ > ( chart : Chart < TType , TData , TLabel > , nextOptions : ChartOptions < TType > ) {
24+ chart . options = { ...nextOptions } ;
25+ }
26+
27+ export function setLabels <
28+ TType extends ChartType = ChartType ,
29+ TData = DefaultDataPoint < TType > ,
30+ TLabel = unknown
31+ > (
32+ currentData : ChartData < TType , TData , TLabel > ,
33+ nextLabels : TLabel [ ] | undefined
34+ ) {
35+ currentData . labels = nextLabels ;
36+ }
37+
38+ export function setDatasets <
1839 TType extends ChartType = ChartType ,
1940 TData = DefaultDataPoint < TType > ,
2041 TLabel = unknown
@@ -30,10 +51,26 @@ export function setNextDatasets<
3051 ) ;
3152
3253 // There is no original to update, so simply add new one
33- if ( ! currentDataset || ! nextDataset . data ) return nextDataset ;
54+ if ( ! currentDataset || ! nextDataset . data ) return { ... nextDataset } ;
3455
3556 Object . assign ( currentDataset , nextDataset ) ;
3657
3758 return currentDataset ;
3859 } ) ;
3960}
61+
62+ export function cloneData <
63+ TType extends ChartType = ChartType ,
64+ TData = DefaultDataPoint < TType > ,
65+ TLabel = unknown
66+ > ( data : ChartData < TType , TData , TLabel > ) {
67+ const nextData : ChartData < TType , TData , TLabel > = {
68+ labels : [ ] ,
69+ datasets : [ ] ,
70+ } ;
71+
72+ setLabels ( nextData , data . labels ) ;
73+ setDatasets ( nextData , data . datasets ) ;
74+
75+ return nextData ;
76+ }
0 commit comments