Avoid dispatching range changed events if there's nothing to be gained.

This commit is contained in:
Dermot Duffy
2023-01-30 20:21:12 -08:00
parent 93e8a8e71b
commit f9f2a494c6
4 changed files with 47 additions and 7 deletions
+23
View File
@@ -1,4 +1,5 @@
import clone from 'lodash-es/clone.js';
import { isSuperset } from '../utils/basic.js';
import { ViewMedia } from './media.js';
export class MediaQueriesResults {
@@ -21,6 +22,28 @@ export class MediaQueriesResults {
return clone(this);
}
public isSupersetOf(that: MediaQueriesResults): boolean {
if (!this._results || !that._results) {
return false;
}
const thisMediaIDs = new Set(this._results.map((media) => media.getID()));
const thatMediaIDs = new Set(that._results.map((media) => media.getID()));
if (
!thisMediaIDs ||
!thatMediaIDs ||
// If either media sets contain a null identifier (i.e. a media item with
// no ID) we must assume this is not a subset as multiple media items may
// reduce to the same null identifier above.
thisMediaIDs.has(null) ||
thatMediaIDs.has(null)
) {
return false;
}
return isSuperset(thisMediaIDs, thatMediaIDs);
}
public getResults(): ViewMedia[] | null {
return this._results;
}