@@ -494,6 +494,50 @@ export class Realm {
494
494
} )
495
495
}
496
496
497
+ /**
498
+ * Combines the values from multiple nodes into a cell that's an array of the latest values of the nodes.
499
+ */
500
+ combineCells < T1 > ( ...nodes : [ NodeRef < T1 > ] ) : NodeRef < [ T1 ] > // prettier-ignore
501
+ combineCells < T1 , T2 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > ] ) : NodeRef < [ T1 , T2 ] > // prettier-ignore
502
+ combineCells < T1 , T2 , T3 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > ] ) : NodeRef < [ T1 , T2 , T3 ] > // prettier-ignore
503
+ combineCells < T1 , T2 , T3 , T4 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 ] > // prettier-ignore
504
+ combineCells < T1 , T2 , T3 , T4 , T5 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 ] > // prettier-ignore
505
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 ] > // prettier-ignore
506
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 ] > // prettier-ignore
507
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ] > // prettier-ignore
508
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ] > // prettier-ignore
509
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ] > // prettier-ignore
510
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ] > // prettier-ignore
511
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ] > // prettier-ignore
512
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ] > // prettier-ignore
513
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ] > // prettier-ignore
514
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ] > // prettier-ignore
515
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > , NodeRef < T16 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ] > // prettier-ignore
516
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > , NodeRef < T16 > , NodeRef < T17 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ] > // prettier-ignore
517
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > , NodeRef < T16 > , NodeRef < T17 > , NodeRef < T18 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ] > // prettier-ignore
518
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > , NodeRef < T16 > , NodeRef < T17 > , NodeRef < T18 > , NodeRef < T19 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ] > // prettier-ignore
519
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > , NodeRef < T16 > , NodeRef < T17 > , NodeRef < T18 > , NodeRef < T19 > , NodeRef < T20 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ] > // prettier-ignore
520
+ combineCells < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > ( ...nodes : [ NodeRef < T1 > , NodeRef < T2 > , NodeRef < T3 > , NodeRef < T4 > , NodeRef < T5 > , NodeRef < T6 > , NodeRef < T7 > , NodeRef < T8 > , NodeRef < T9 > , NodeRef < T10 > , NodeRef < T11 > , NodeRef < T12 > , NodeRef < T13 > , NodeRef < T14 > , NodeRef < T15 > , NodeRef < T16 > , NodeRef < T17 > , NodeRef < T18 > , NodeRef < T19 > , NodeRef < T20 > , NodeRef < T21 > ] ) : NodeRef < [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ] > // prettier-ignore
521
+ combineCells ( ...sources : Array < NodeRef < unknown > > ) : NodeRef < unknown > {
522
+ return tap (
523
+ this . cellInstance (
524
+ sources . map ( ( source ) => this . getValue ( source ) ) ,
525
+ true
526
+ ) ,
527
+ ( sink ) => {
528
+ this . connect ( {
529
+ map :
530
+ ( done ) =>
531
+ ( ...args ) => {
532
+ done ( args )
533
+ } ,
534
+ sink,
535
+ sources,
536
+ } )
537
+ }
538
+ )
539
+ }
540
+
497
541
/**
498
542
* Gets the current value of a node. The node must be stateful.
499
543
* @remark if possible, use {@link withLatestFrom} or {@link combine}, as getValue will not create a dependency to the passed node,
0 commit comments