@@ -207,6 +207,8 @@ export class GraphController extends ScatterController {
207207 this . stopLayout ( ) ;
208208 }
209209
210+ declare getContext : ( index : number , active : boolean , mode : UpdateMode ) => unknown ;
211+
210212 /**
211213 * @hidden
212214 */
@@ -215,14 +217,33 @@ export class GraphController extends ScatterController {
215217 _cachedDataOpts : this . _cachedDataOpts ,
216218 dataElementType : this . dataElementType ,
217219 _sharedOptions : this . _sharedOptions ,
220+ // getDataset: this.getDataset,
221+ // getParsed: this.getParsed,
218222 } ;
219223 this . _cachedDataOpts = { } ;
220224 this . dataElementType = this . edgeElementType ;
221225 this . _sharedOptions = this . _edgeSharedOptions ;
226+
227+ const dataset = this . getDataset ( ) ;
222228 const meta = this . _cachedMeta ;
223- const nodes = meta . data ;
229+ const nodeElements = meta . data ;
224230 const data = ( this . _cachedMeta as unknown as IExtendedChartMeta ) . _parsedEdges ;
225231
232+ // get generic context to prefill cache
233+ this . getContext ( - 1 , false , mode ) ;
234+ this . getDataset = ( ) => {
235+ return new Proxy ( dataset , {
236+ get ( obj : any , prop : string ) {
237+ return prop === 'data' ? obj . edges ?? [ ] : obj [ prop ] ;
238+ } ,
239+ } ) ;
240+ } ;
241+ this . getParsed = ( index : number ) => {
242+ return data [ index ] as any ;
243+ } ;
244+ // patch meta to store edges
245+ meta . data = ( meta as any ) . edges ;
246+
226247 const reset = mode === 'reset' ;
227248
228249 const firstOpts = this . resolveDataElementOptions ( start , mode ) ;
@@ -253,11 +274,11 @@ export class GraphController extends ScatterController {
253274 const parsed = data [ index ] ;
254275
255276 const properties : any = {
256- source : nodes [ parsed . source ] ,
257- target : nodes [ parsed . target ] ,
277+ source : nodeElements [ parsed . source ] ,
278+ target : nodeElements [ parsed . target ] ,
258279 points : Array . isArray ( parsed . points ) ? parsed . points . map ( ( p ) => copyPoint ( p ) ) : [ ] ,
259280 } ;
260- properties . points . _source = nodes [ parsed . source ] ;
281+ properties . points . _source = nodeElements [ parsed . source ] ;
261282 if ( includeOptions ) {
262283 if ( sharedOptions !== dummyShared ) {
263284 properties . options = sharedOptions ;
@@ -271,6 +292,10 @@ export class GraphController extends ScatterController {
271292
272293 this . _edgeSharedOptions = this . _sharedOptions ;
273294 Object . assign ( this , bak ) ;
295+ delete ( this as any ) . getDataset ;
296+ delete ( this as any ) . getParsed ;
297+ // patch meta to store edges
298+ meta . data = nodeElements ;
274299 }
275300
276301 /**
0 commit comments