@@ -50,12 +50,19 @@ import {
5050 useGoForwardCallback ,
5151 useGoToCallback ,
5252 useHasCell ,
53+ useHasCellListener ,
5354 useHasRow ,
55+ useHasRowListener ,
5456 useHasTable ,
5557 useHasTableCell ,
58+ useHasTableCellListener ,
59+ useHasTableListener ,
5660 useHasTables ,
61+ useHasTablesListener ,
5762 useHasValue ,
63+ useHasValueListener ,
5864 useHasValues ,
65+ useHasValuesListener ,
5966 useIndexIds ,
6067 useIndexes ,
6168 useIndexesIds ,
@@ -3046,6 +3053,38 @@ describe('Write Hooks', () => {
30463053} ) ;
30473054
30483055describe ( 'Listener Hooks' , ( ) => {
3056+ test ( 'useHasTablesListener' , ( ) => {
3057+ expect . assertions ( 4 ) ;
3058+ const Test = ( { value} : { readonly value : number } ) => {
3059+ useHasTablesListener (
3060+ ( store ) => expect ( store ?. getCell ( 't1' , 'r1' , 'c1' ) ) . toEqual ( value ) ,
3061+ [ value ] ,
3062+ false ,
3063+ store ,
3064+ ) ;
3065+ return < div /> ;
3066+ } ;
3067+ expect ( store . getListenerStats ( ) . hasTables ) . toEqual ( 0 ) ;
3068+ act ( ( ) => {
3069+ renderer = create ( < Test value = { 2 } /> ) ;
3070+ } ) ;
3071+ expect ( store . getListenerStats ( ) . hasTables ) . toEqual ( 1 ) ;
3072+ act ( ( ) => {
3073+ store . setCell ( 't1' , 'r1' , 'c1' , 2 ) ;
3074+ } ) ;
3075+ act ( ( ) => {
3076+ renderer . update ( < Test value = { 3 } /> ) ;
3077+ } ) ;
3078+ expect ( store . getListenerStats ( ) . hasTables ) . toEqual ( 1 ) ;
3079+ act ( ( ) => {
3080+ store . setCell ( 't1' , 'r1' , 'c1' , 3 ) ;
3081+ } ) ;
3082+ act ( ( ) => {
3083+ renderer . update ( < div /> ) ;
3084+ } ) ;
3085+ expect ( store . getListenerStats ( ) . hasTables ) . toEqual ( 0 ) ;
3086+ } ) ;
3087+
30493088 test ( 'useTablesListener' , ( ) => {
30503089 expect . assertions ( 6 ) ;
30513090 const Test = ( { value} : { readonly value : number } ) => {
@@ -3112,6 +3151,39 @@ describe('Listener Hooks', () => {
31123151 expect ( store . getListenerStats ( ) . tableIds ) . toEqual ( 0 ) ;
31133152 } ) ;
31143153
3154+ test ( 'useHasTableListener' , ( ) => {
3155+ expect . assertions ( 4 ) ;
3156+ const Test = ( { value} : { readonly value : number } ) => {
3157+ useHasTableListener (
3158+ 't1' ,
3159+ ( store ) => expect ( store ?. getCell ( 't1' , 'r1' , 'c1' ) ) . toEqual ( value ) ,
3160+ [ value ] ,
3161+ false ,
3162+ store ,
3163+ ) ;
3164+ return < div /> ;
3165+ } ;
3166+ expect ( store . getListenerStats ( ) . hasTable ) . toEqual ( 0 ) ;
3167+ act ( ( ) => {
3168+ renderer = create ( < Test value = { 2 } /> ) ;
3169+ } ) ;
3170+ expect ( store . getListenerStats ( ) . hasTable ) . toEqual ( 1 ) ;
3171+ act ( ( ) => {
3172+ store . setCell ( 't1' , 'r1' , 'c1' , 2 ) ;
3173+ } ) ;
3174+ act ( ( ) => {
3175+ renderer . update ( < Test value = { 3 } /> ) ;
3176+ } ) ;
3177+ expect ( store . getListenerStats ( ) . hasTable ) . toEqual ( 1 ) ;
3178+ act ( ( ) => {
3179+ store . setCell ( 't1' , 'r1' , 'c1' , 3 ) ;
3180+ } ) ;
3181+ act ( ( ) => {
3182+ renderer . update ( < div /> ) ;
3183+ } ) ;
3184+ expect ( store . getListenerStats ( ) . hasTable ) . toEqual ( 0 ) ;
3185+ } ) ;
3186+
31153187 test ( 'useTableListener' , ( ) => {
31163188 expect . assertions ( 6 ) ;
31173189 const Test = ( { value} : { readonly value : number } ) => {
@@ -3180,6 +3252,40 @@ describe('Listener Hooks', () => {
31803252 expect ( store . getListenerStats ( ) . tableCellIds ) . toEqual ( 0 ) ;
31813253 } ) ;
31823254
3255+ test ( 'useHasTableCellListener' , ( ) => {
3256+ expect . assertions ( 4 ) ;
3257+ const Test = ( { value} : { readonly value : number } ) => {
3258+ useHasTableCellListener (
3259+ 't1' ,
3260+ 'c1' ,
3261+ ( store ) => expect ( store ?. getCell ( 't1' , 'r1' , 'c1' ) ) . toEqual ( value ) ,
3262+ [ value ] ,
3263+ false ,
3264+ store ,
3265+ ) ;
3266+ return < div /> ;
3267+ } ;
3268+ expect ( store . getListenerStats ( ) . hasTableCell ) . toEqual ( 0 ) ;
3269+ act ( ( ) => {
3270+ renderer = create ( < Test value = { 2 } /> ) ;
3271+ } ) ;
3272+ expect ( store . getListenerStats ( ) . hasTableCell ) . toEqual ( 1 ) ;
3273+ act ( ( ) => {
3274+ store . setCell ( 't1' , 'r1' , 'c1' , 2 ) ;
3275+ } ) ;
3276+ act ( ( ) => {
3277+ renderer . update ( < Test value = { 3 } /> ) ;
3278+ } ) ;
3279+ expect ( store . getListenerStats ( ) . hasTableCell ) . toEqual ( 1 ) ;
3280+ act ( ( ) => {
3281+ store . setCell ( 't1' , 'r1' , 'c1' , 3 ) ;
3282+ } ) ;
3283+ act ( ( ) => {
3284+ renderer . update ( < div /> ) ;
3285+ } ) ;
3286+ expect ( store . getListenerStats ( ) . hasTableCell ) . toEqual ( 0 ) ;
3287+ } ) ;
3288+
31833289 test ( 'useRowCountListener' , ( ) => {
31843290 expect . assertions ( 6 ) ;
31853291 const Test = ( { value} : { readonly value : number } ) => {
@@ -3289,6 +3395,40 @@ describe('Listener Hooks', () => {
32893395 expect ( store . getListenerStats ( ) . sortedRowIds ) . toEqual ( 0 ) ;
32903396 } ) ;
32913397
3398+ test ( 'useHasRowListener' , ( ) => {
3399+ expect . assertions ( 4 ) ;
3400+ const Test = ( { value} : { readonly value : number } ) => {
3401+ useHasRowListener (
3402+ 't1' ,
3403+ 'r1' ,
3404+ ( store ) => expect ( store ?. getCell ( 't1' , 'r1' , 'c1' ) ) . toEqual ( value ) ,
3405+ [ value ] ,
3406+ false ,
3407+ store ,
3408+ ) ;
3409+ return < div /> ;
3410+ } ;
3411+ expect ( store . getListenerStats ( ) . hasRow ) . toEqual ( 0 ) ;
3412+ act ( ( ) => {
3413+ renderer = create ( < Test value = { 2 } /> ) ;
3414+ } ) ;
3415+ expect ( store . getListenerStats ( ) . hasRow ) . toEqual ( 1 ) ;
3416+ act ( ( ) => {
3417+ store . setCell ( 't1' , 'r1' , 'c1' , 2 ) ;
3418+ } ) ;
3419+ act ( ( ) => {
3420+ renderer . update ( < Test value = { 3 } /> ) ;
3421+ } ) ;
3422+ expect ( store . getListenerStats ( ) . hasRow ) . toEqual ( 1 ) ;
3423+ act ( ( ) => {
3424+ store . setCell ( 't1' , 'r1' , 'c1' , 3 ) ;
3425+ } ) ;
3426+ act ( ( ) => {
3427+ renderer . update ( < div /> ) ;
3428+ } ) ;
3429+ expect ( store . getListenerStats ( ) . hasRow ) . toEqual ( 0 ) ;
3430+ } ) ;
3431+
32923432 test ( 'useRowListener' , ( ) => {
32933433 expect . assertions ( 6 ) ;
32943434 const Test = ( { value} : { readonly value : number } ) => {
@@ -3359,6 +3499,41 @@ describe('Listener Hooks', () => {
33593499 expect ( store . getListenerStats ( ) . cellIds ) . toEqual ( 0 ) ;
33603500 } ) ;
33613501
3502+ test ( 'useHasCellListener' , ( ) => {
3503+ expect . assertions ( 4 ) ;
3504+ const Test = ( { value} : { readonly value : number } ) => {
3505+ useHasCellListener (
3506+ 't1' ,
3507+ 'r1' ,
3508+ 'c1' ,
3509+ ( store ) => expect ( store ?. getCell ( 't1' , 'r1' , 'c1' ) ) . toEqual ( value ) ,
3510+ [ value ] ,
3511+ false ,
3512+ store ,
3513+ ) ;
3514+ return < div /> ;
3515+ } ;
3516+ expect ( store . getListenerStats ( ) . hasCell ) . toEqual ( 0 ) ;
3517+ act ( ( ) => {
3518+ renderer = create ( < Test value = { 2 } /> ) ;
3519+ } ) ;
3520+ expect ( store . getListenerStats ( ) . hasCell ) . toEqual ( 1 ) ;
3521+ act ( ( ) => {
3522+ store . setCell ( 't1' , 'r1' , 'c1' , 2 ) ;
3523+ } ) ;
3524+ act ( ( ) => {
3525+ renderer . update ( < Test value = { 3 } /> ) ;
3526+ } ) ;
3527+ expect ( store . getListenerStats ( ) . hasCell ) . toEqual ( 1 ) ;
3528+ act ( ( ) => {
3529+ store . setCell ( 't1' , 'r1' , 'c1' , 3 ) ;
3530+ } ) ;
3531+ act ( ( ) => {
3532+ renderer . update ( < div /> ) ;
3533+ } ) ;
3534+ expect ( store . getListenerStats ( ) . hasCell ) . toEqual ( 0 ) ;
3535+ } ) ;
3536+
33623537 test ( 'useCellListener' , ( ) => {
33633538 expect . assertions ( 6 ) ;
33643539 const Test = ( { value} : { readonly value : number } ) => {
@@ -3394,6 +3569,38 @@ describe('Listener Hooks', () => {
33943569 expect ( store . getListenerStats ( ) . cell ) . toEqual ( 0 ) ;
33953570 } ) ;
33963571
3572+ test ( 'useHasValuesListener' , ( ) => {
3573+ expect . assertions ( 4 ) ;
3574+ const Test = ( { value} : { readonly value : number } ) => {
3575+ useHasValuesListener (
3576+ ( store ) => expect ( store ?. getValue ( 'v1' ) ) . toEqual ( value ) ,
3577+ [ value ] ,
3578+ false ,
3579+ store ,
3580+ ) ;
3581+ return < div /> ;
3582+ } ;
3583+ expect ( store . getListenerStats ( ) . hasValues ) . toEqual ( 0 ) ;
3584+ act ( ( ) => {
3585+ renderer = create ( < Test value = { 2 } /> ) ;
3586+ } ) ;
3587+ expect ( store . getListenerStats ( ) . hasValues ) . toEqual ( 1 ) ;
3588+ act ( ( ) => {
3589+ store . setValue ( 'v1' , 2 ) ;
3590+ } ) ;
3591+ act ( ( ) => {
3592+ renderer . update ( < Test value = { 3 } /> ) ;
3593+ } ) ;
3594+ expect ( store . getListenerStats ( ) . hasValues ) . toEqual ( 1 ) ;
3595+ act ( ( ) => {
3596+ store . setValue ( 'v1' , 3 ) ;
3597+ } ) ;
3598+ act ( ( ) => {
3599+ renderer . update ( < div /> ) ;
3600+ } ) ;
3601+ expect ( store . getListenerStats ( ) . hasValues ) . toEqual ( 0 ) ;
3602+ } ) ;
3603+
33973604 test ( 'useValuesListener' , ( ) => {
33983605 expect . assertions ( 6 ) ;
33993606 const Test = ( { value} : { readonly value : number } ) => {
@@ -3460,6 +3667,39 @@ describe('Listener Hooks', () => {
34603667 expect ( store . getListenerStats ( ) . valueIds ) . toEqual ( 0 ) ;
34613668 } ) ;
34623669
3670+ test ( 'useHasValueListener' , ( ) => {
3671+ expect . assertions ( 4 ) ;
3672+ const Test = ( { value} : { readonly value : number } ) => {
3673+ useHasValueListener (
3674+ 'v1' ,
3675+ ( store ) => expect ( store ?. getValue ( 'v1' ) ) . toEqual ( value ) ,
3676+ [ value ] ,
3677+ false ,
3678+ store ,
3679+ ) ;
3680+ return < div /> ;
3681+ } ;
3682+ expect ( store . getListenerStats ( ) . hasValue ) . toEqual ( 0 ) ;
3683+ act ( ( ) => {
3684+ renderer = create ( < Test value = { 2 } /> ) ;
3685+ } ) ;
3686+ expect ( store . getListenerStats ( ) . hasValue ) . toEqual ( 1 ) ;
3687+ act ( ( ) => {
3688+ store . setValue ( 'v1' , 2 ) ;
3689+ } ) ;
3690+ act ( ( ) => {
3691+ renderer . update ( < Test value = { 3 } /> ) ;
3692+ } ) ;
3693+ expect ( store . getListenerStats ( ) . hasValue ) . toEqual ( 1 ) ;
3694+ act ( ( ) => {
3695+ store . setValue ( 'v1' , 3 ) ;
3696+ } ) ;
3697+ act ( ( ) => {
3698+ renderer . update ( < div /> ) ;
3699+ } ) ;
3700+ expect ( store . getListenerStats ( ) . hasValue ) . toEqual ( 0 ) ;
3701+ } ) ;
3702+
34633703 test ( 'useValueListener' , ( ) => {
34643704 expect . assertions ( 6 ) ;
34653705 const Test = ( { value} : { readonly value : number } ) => {
0 commit comments