@@ -54,6 +54,40 @@ export class ArrayType<SerializedValueType, SharkitekValueType> extends Type<Ser
5454 // Reset diff of all elements.
5555 value . forEach ( ( value ) => this . valueDefinition . type . resetDiff ( value ) ) ;
5656 }
57+
58+ propertyHasChanged ( originalValue : SharkitekValueType [ ] | null | undefined , currentValue : SharkitekValueType [ ] | null | undefined ) : boolean
59+ {
60+ // If any array length is different, arrays are different.
61+ if ( originalValue ?. length != currentValue ?. length ) return true ;
62+ // If length is undefined, values are probably not arrays.
63+ if ( originalValue ?. length == undefined ) return false ;
64+
65+ for ( const key of originalValue . keys ( ) )
66+ { // Check for any change for each value in the array.
67+ if ( this . valueDefinition . type . propertyHasChanged ( originalValue [ key ] , currentValue [ key ] ) )
68+ // The value has changed, the array is different.
69+ return true ;
70+ }
71+
72+ return false ; // No change detected.
73+ }
74+
75+ serializedPropertyHasChanged ( originalValue : SerializedValueType [ ] | null | undefined , currentValue : SerializedValueType [ ] | null | undefined ) : boolean
76+ {
77+ // If any array length is different, arrays are different.
78+ if ( originalValue ?. length != currentValue ?. length ) return true ;
79+ // If length is undefined, values are probably not arrays.
80+ if ( originalValue ?. length == undefined ) return false ;
81+
82+ for ( const key of originalValue . keys ( ) )
83+ { // Check for any change for each value in the array.
84+ if ( this . valueDefinition . type . serializedPropertyHasChanged ( originalValue [ key ] , currentValue [ key ] ) )
85+ // The value has changed, the array is different.
86+ return true ;
87+ }
88+
89+ return false ; // No change detected.
90+ }
5791}
5892
5993/**
0 commit comments