From ee70acfb19e92a6ed0e7d8576f61d9fd77a7877c Mon Sep 17 00:00:00 2001 From: NarrowsProjects Date: Tue, 21 Apr 2026 10:35:20 +0200 Subject: [PATCH 1/2] chore: force all filters managed by FilteringModel to extend FilterModel or SelectionModel --- lib/public/components/Filters/common/FilteringModel.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/public/components/Filters/common/FilteringModel.js b/lib/public/components/Filters/common/FilteringModel.js index e937786456..ac3224ecc4 100644 --- a/lib/public/components/Filters/common/FilteringModel.js +++ b/lib/public/components/Filters/common/FilteringModel.js @@ -12,6 +12,8 @@ */ import { expandQueryLikeNestedKey } from '../../../utilities/expandNestedKey.js'; +import { SelectionModel } from '../../common/selection/SelectionModel.js'; +import { FilterModel } from './FilterModel.js'; import { Observable } from '/js/src/index.js'; /** @@ -118,6 +120,10 @@ export class FilteringModel extends Observable { return; } + if (!(filter instanceof FilterModel || filter instanceof SelectionModel)) { + throw new Error('Filter must extend FilterModel or SelectionModel'); + } + this._filters[key] = filter; this._filterModels.push(filter); filter.bubbleTo(this); From 1f9af448706657cbc7de7844e666aac5dc0e7037 Mon Sep 17 00:00:00 2001 From: NarrowsProjects Date: Tue, 21 Apr 2026 15:42:26 +0200 Subject: [PATCH 2/2] feat: make filteringmodel constructor more efficient --- lib/public/components/Filters/common/FilteringModel.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/public/components/Filters/common/FilteringModel.js b/lib/public/components/Filters/common/FilteringModel.js index ac3224ecc4..828fe55bed 100644 --- a/lib/public/components/Filters/common/FilteringModel.js +++ b/lib/public/components/Filters/common/FilteringModel.js @@ -30,12 +30,9 @@ export class FilteringModel extends Observable { this._visualChange$ = new Observable(); - this._filters = filters; - this._filterModels = Object.values(filters); - for (const model of this._filterModels) { - model.bubbleTo(this); - model.visualChange$?.bubbleTo(this._visualChange$); - } + this._filters = {}; + this._filterModels = []; + Object.entries(filters).forEach(([key, model]) => this.put(key, model)); } /**