@@ -6485,6 +6485,262 @@ describe('dockviewComponent', () => {
6485
6485
} ) ;
6486
6486
} ) ;
6487
6487
6488
+ describe ( 'moveGroup' , ( ) => {
6489
+ test ( '#1' , ( ) => {
6490
+ const container = document . createElement ( 'div' ) ;
6491
+
6492
+ const dockview = new DockviewComponent ( container , {
6493
+ createComponent ( options ) {
6494
+ switch ( options . name ) {
6495
+ case 'default' :
6496
+ return new PanelContentPartTest (
6497
+ options . id ,
6498
+ options . name
6499
+ ) ;
6500
+ default :
6501
+ throw new Error ( `unsupported` ) ;
6502
+ }
6503
+ } ,
6504
+ } ) ;
6505
+ const api = new DockviewApi ( dockview ) ;
6506
+
6507
+ dockview . layout ( 1000 , 1000 ) ;
6508
+
6509
+ let panel1 ! : IDockviewPanel ;
6510
+ let panel2 ! : IDockviewPanel ;
6511
+ let panel3 ! : IDockviewPanel ;
6512
+
6513
+ const reset = ( ) => {
6514
+ dockview . clear ( ) ;
6515
+
6516
+ panel1 = api . addPanel ( {
6517
+ id : 'panel_1' ,
6518
+ component : 'default' ,
6519
+ } ) ;
6520
+
6521
+ panel2 = api . addPanel ( {
6522
+ id : 'panel_2' ,
6523
+ component : 'default' ,
6524
+ position : { direction : 'right' } ,
6525
+ } ) ;
6526
+
6527
+ panel3 = api . addPanel ( {
6528
+ id : 'panel_3' ,
6529
+ component : 'default' ,
6530
+ position : { direction : 'right' } ,
6531
+ } ) ;
6532
+
6533
+ panel2 . api . setActive ( ) ;
6534
+ } ;
6535
+
6536
+ // default case
6537
+
6538
+ reset ( ) ;
6539
+ expect ( [
6540
+ panel1 . group . api . isActive ,
6541
+ panel2 . group . api . isActive ,
6542
+ ] ) . toEqual ( [ false , true ] ) ;
6543
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6544
+ false ,
6545
+ true ,
6546
+ ] ) ;
6547
+
6548
+ // move inactive group
6549
+
6550
+ reset ( ) ;
6551
+ panel1 . group . api . moveTo ( { group : panel2 . group , position : 'right' } ) ;
6552
+ expect ( [
6553
+ panel1 . group . api . isActive ,
6554
+ panel2 . group . api . isActive ,
6555
+ ] ) . toEqual ( [ true , false ] ) ;
6556
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6557
+ true ,
6558
+ false ,
6559
+ ] ) ;
6560
+
6561
+ // move active group
6562
+
6563
+ reset ( ) ;
6564
+ panel2 . group . api . moveTo ( { group : panel1 . group , position : 'left' } ) ;
6565
+ expect ( [
6566
+ panel1 . group . api . isActive ,
6567
+ panel2 . group . api . isActive ,
6568
+ ] ) . toEqual ( [ false , true ] ) ;
6569
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6570
+ false ,
6571
+ true ,
6572
+ ] ) ;
6573
+
6574
+ // move inactive group (with inactive flag)
6575
+
6576
+ reset ( ) ;
6577
+ panel1 . group . api . moveTo ( {
6578
+ group : panel2 . group ,
6579
+ position : 'right' ,
6580
+ inactive : true ,
6581
+ } ) ;
6582
+ expect ( [
6583
+ panel1 . group . api . isActive ,
6584
+ panel2 . group . api . isActive ,
6585
+ ] ) . toEqual ( [ false , true ] ) ;
6586
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6587
+ false ,
6588
+ true ,
6589
+ ] ) ;
6590
+
6591
+ // move active group (with inactive flag)
6592
+
6593
+ reset ( ) ;
6594
+ panel2 . group . api . moveTo ( {
6595
+ group : panel1 . group ,
6596
+ position : 'left' ,
6597
+ inactive : true ,
6598
+ } ) ;
6599
+ expect ( [
6600
+ panel1 . group . api . isActive ,
6601
+ panel2 . group . api . isActive ,
6602
+ ] ) . toEqual ( [ false , true ] ) ;
6603
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6604
+ false ,
6605
+ true ,
6606
+ ] ) ;
6607
+
6608
+ // merge inactive group with active group
6609
+
6610
+ reset ( ) ;
6611
+ panel1 . group . api . moveTo ( { group : panel2 . group } ) ;
6612
+ expect ( [
6613
+ panel1 . group . api . isActive ,
6614
+ panel2 . group . api . isActive ,
6615
+ ] ) . toEqual ( [ true , true ] ) ;
6616
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6617
+ true ,
6618
+ false ,
6619
+ ] ) ;
6620
+
6621
+ // merge active group with inactive group
6622
+
6623
+ reset ( ) ;
6624
+ panel2 . group . api . moveTo ( { group : panel1 . group } ) ;
6625
+ expect ( [
6626
+ panel1 . group . api . isActive ,
6627
+ panel2 . group . api . isActive ,
6628
+ ] ) . toEqual ( [ true , true ] ) ;
6629
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6630
+ false ,
6631
+ true ,
6632
+ ] ) ;
6633
+
6634
+ // merge inactive group with active group (with inactive flag)
6635
+
6636
+ reset ( ) ;
6637
+ panel1 . group . api . moveTo ( { group : panel2 . group , inactive : true } ) ;
6638
+ expect ( [
6639
+ panel1 . group . api . isActive ,
6640
+ panel2 . group . api . isActive ,
6641
+ ] ) . toEqual ( [ true , true ] ) ;
6642
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6643
+ false ,
6644
+ true ,
6645
+ ] ) ;
6646
+
6647
+ // merge active group with inactive group (with inactive flag)
6648
+
6649
+ reset ( ) ;
6650
+ panel2 . group . api . moveTo ( { group : panel1 . group , inactive : true } ) ;
6651
+ expect ( [
6652
+ panel1 . group . api . isActive ,
6653
+ panel2 . group . api . isActive ,
6654
+ ] ) . toEqual ( [ true , true ] ) ;
6655
+ expect ( [ panel1 . api . isActive , panel2 . api . isActive ] ) . toEqual ( [
6656
+ false ,
6657
+ true ,
6658
+ ] ) ;
6659
+
6660
+ // merge inactive group with inactive group
6661
+
6662
+ reset ( ) ;
6663
+ panel1 . group . api . moveTo ( { group : panel3 . group } ) ;
6664
+ expect ( [
6665
+ panel1 . group . api . isActive ,
6666
+ panel2 . group . api . isActive ,
6667
+ panel3 . group . api . isActive ,
6668
+ ] ) . toEqual ( [ true , false , true ] ) ;
6669
+ expect ( [
6670
+ panel1 . api . isActive ,
6671
+ panel2 . api . isActive ,
6672
+ panel3 . api . isActive ,
6673
+ ] ) . toEqual ( [ true , false , false ] ) ;
6674
+
6675
+ // merge inactive group with inactive group (with inactive flag)
6676
+
6677
+ reset ( ) ;
6678
+ panel1 . group . api . moveTo ( { group : panel3 . group , inactive : true } ) ;
6679
+ expect ( [
6680
+ panel1 . group . api . isActive ,
6681
+ panel2 . group . api . isActive ,
6682
+ panel3 . group . api . isActive ,
6683
+ ] ) . toEqual ( [ false , true , false ] ) ;
6684
+ expect ( [
6685
+ panel1 . api . isActive ,
6686
+ panel2 . api . isActive ,
6687
+ panel3 . api . isActive ,
6688
+ ] ) . toEqual ( [ false , true , false ] ) ;
6689
+ } ) ;
6690
+ } ) ;
6691
+
6692
+ describe ( 'movePanel' , ( ) => {
6693
+ test ( '#1' , ( ) => {
6694
+ const container = document . createElement ( 'div' ) ;
6695
+
6696
+ const dockview = new DockviewComponent ( container , {
6697
+ createComponent ( options ) {
6698
+ switch ( options . name ) {
6699
+ case 'default' :
6700
+ return new PanelContentPartTest (
6701
+ options . id ,
6702
+ options . name
6703
+ ) ;
6704
+ default :
6705
+ throw new Error ( `unsupported` ) ;
6706
+ }
6707
+ } ,
6708
+ } ) ;
6709
+ const api = new DockviewApi ( dockview ) ;
6710
+
6711
+ dockview . layout ( 1000 , 1000 ) ;
6712
+
6713
+ let panel1 ! : IDockviewPanel ;
6714
+ let panel2 ! : IDockviewPanel ;
6715
+
6716
+ const reset = ( ) => {
6717
+ dockview . clear ( ) ;
6718
+
6719
+ panel1 = api . addPanel ( {
6720
+ id : 'panel_1' ,
6721
+ component : 'default' ,
6722
+ } ) ;
6723
+
6724
+ panel2 = api . addPanel ( {
6725
+ id : 'panel_2' ,
6726
+ component : 'default' ,
6727
+ position : { direction : 'right' } ,
6728
+ } ) ;
6729
+ } ;
6730
+
6731
+ // default case
6732
+ //
6733
+ // last panel of group to within another group
6734
+ //
6735
+ // panel from group of at least 2 panels to within another group
6736
+ //
6737
+ // last panel of group to a new group within same branch
6738
+ //
6739
+ // last panel of group to a new group not within same branch
6740
+ //
6741
+ } ) ;
6742
+ } ) ;
6743
+
6488
6744
test ( 'that `onDidLayoutChange` only subscribes to events after initial subscription time' , ( ) => {
6489
6745
jest . useFakeTimers ( ) ;
6490
6746
0 commit comments