@@ -19,8 +19,8 @@ export type VisualizeProcessorOptions = {
1919} ;
2020
2121export class VisualizeProcessor < T extends Detail > {
22- #sorter? : Sorter < T > ;
23- #renderer? : Renderer < T > ;
22+ #sorters : Sorter < T > [ ] ;
23+ #renderers : Renderer < T > [ ] ;
2424 #height: number ;
2525 #scrollOffset: number ;
2626 #controller: AbortController = new AbortController ( ) ;
@@ -30,18 +30,62 @@ export class VisualizeProcessor<T extends Detail> {
3030 #itemCount: number = 0 ;
3131 #cursor: number = 0 ;
3232 #offset: number = 0 ;
33+ #sorterIndex: number = 0 ;
34+ #rendererIndex: number = 0 ;
3335
3436 constructor (
35- sorter : Sorter < T > | undefined ,
36- renderer : Renderer < T > | undefined ,
37+ sorters : Sorter < T > [ ] ,
38+ renderers : Renderer < T > [ ] ,
3739 options : VisualizeProcessorOptions = { } ,
3840 ) {
39- this . #sorter = sorter ;
40- this . #renderer = renderer ;
41+ this . #sorters = sorters ;
42+ this . #renderers = renderers ;
4143 this . #height = options . height ?? HEIGHT ;
4244 this . #scrollOffset = options . scrollOffset ?? SCROLL_OFFSET ;
4345 }
4446
47+ get #sorter( ) : Sorter < T > | undefined {
48+ return this . #sorters. at ( this . #sorterIndex) ;
49+ }
50+
51+ get #renderer( ) : Renderer < T > | undefined {
52+ return this . #renderers. at ( this . #rendererIndex) ;
53+ }
54+
55+ get sorterCount ( ) : number {
56+ return this . #sorters. length ;
57+ }
58+
59+ get rendererCount ( ) : number {
60+ return this . #renderers. length ;
61+ }
62+
63+ get sorterIndex ( ) : number {
64+ return this . #sorterIndex;
65+ }
66+
67+ set sorterIndex ( index : number | "$" ) {
68+ if ( index === "$" || index >= this . sorterCount ) {
69+ index = this . sorterCount - 1 ;
70+ } else if ( index < 0 ) {
71+ index = 0 ;
72+ }
73+ this . #sorterIndex = index ;
74+ }
75+
76+ get rendererIndex ( ) : number {
77+ return this . #rendererIndex;
78+ }
79+
80+ set rendererIndex ( index : number | "$" ) {
81+ if ( index === "$" || index >= this . rendererCount ) {
82+ index = this . rendererCount - 1 ;
83+ } else if ( index < 0 ) {
84+ index = 0 ;
85+ }
86+ this . #rendererIndex = index ;
87+ }
88+
4589 get items ( ) {
4690 return this . #items;
4791 }
0 commit comments