From 7ff3bc9b21947497a08cba7e681b5eb29b7e1c83 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 30 Jun 2024 16:33:28 +0400 Subject: [PATCH] Improve isInstanceOf --- src/dom_components/index.ts | 6 +++++- src/dom_components/model/Component.ts | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/dom_components/index.ts b/src/dom_components/index.ts index af41491cb..bece1ad8c 100644 --- a/src/dom_components/index.ts +++ b/src/dom_components/index.ts @@ -522,7 +522,7 @@ export default class ComponentManager extends ItemManagerModule 0), } ); diff --git a/src/dom_components/model/Component.ts b/src/dom_components/model/Component.ts index 1a8d9c028..ff496aa59 100644 --- a/src/dom_components/model/Component.ts +++ b/src/dom_components/model/Component.ts @@ -1771,7 +1771,10 @@ export default class Component extends StyleableModel { if (!cmp) return false; - return this instanceof cmp; + // A tiny hack to make isInstanceOf work properly where there a multiple inheritance + const { typeExtends } = this.constructor as typeof Component; + + return this instanceof cmp || typeExtends.has(type); } /** @@ -1861,6 +1864,8 @@ export default class Component extends StyleableModel { selector && selector.set({ name: id, label: id }); } + static typeExtends = new Set(); + static getDefaults() { return result(this.prototype, 'defaults'); }