From fedde43a3b6eac5f71ebaa6b00a3f90b52dcdea4 Mon Sep 17 00:00:00 2001 From: mohamedsalem401 Date: Thu, 16 Jan 2025 12:52:53 +0200 Subject: [PATCH] Exclude "components" property from being dynamic --- .../core/src/dom_components/model/Component.ts | 14 +++++++------- .../model/ComponentDynamicValueWatcher.ts | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/core/src/dom_components/model/Component.ts b/packages/core/src/dom_components/model/Component.ts index 08421aff2..f111e26f1 100644 --- a/packages/core/src/dom_components/model/Component.ts +++ b/packages/core/src/dom_components/model/Component.ts @@ -57,9 +57,9 @@ import { ComponentDynamicValueWatcher } from './ComponentDynamicValueWatcher'; import { DynamicWatchersOptions } from './DynamicValueWatcher'; import { keyIsCollectionItem } from '../../data_sources/model/data_collection/constants'; -export interface IComponent extends ExtractMethods {} -export interface SetAttrOptions extends SetOptions, UpdateStyleOptions, DynamicWatchersOptions {} -export interface ComponentSetOptions extends SetOptions, DynamicWatchersOptions {} +export interface IComponent extends ExtractMethods { } +export interface SetAttrOptions extends SetOptions, UpdateStyleOptions, DynamicWatchersOptions { } +export interface ComponentSetOptions extends SetOptions, DynamicWatchersOptions { } const escapeRegExp = (str: string) => { return str.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); @@ -229,12 +229,12 @@ export default class Component extends StyleableModel { return this.frame?.getPage(); } - preInit() {} + preInit() { } /** * Hook method, called once the model is created */ - init() {} + init() { } /** * Hook method, called when the model has been updated (eg. updated some model's property) @@ -242,12 +242,12 @@ export default class Component extends StyleableModel { * @param {*} value Property value, if triggered after some property update * @param {*} previous Property previous value, if triggered after some property update */ - updated(property: string, value: any, previous: any) {} + updated(property: string, value: any, previous: any) { } /** * Hook method, called once the model has been removed */ - removed() {} + removed() { } em!: EditorModel; opt!: ComponentOptions; diff --git a/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts b/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts index 02464764e..bbee5e838 100644 --- a/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts +++ b/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts @@ -50,14 +50,23 @@ export class ComponentDynamicValueWatcher extends Model { } addProps(props: ObjectAny, options: DynamicWatchersOptions = {}) { - const evaluatedProps = this.propertyWatcher.addDynamicValues(props, options); + const excludedFromEvaluation = ['components']; + + const evaluatedProps = Object.fromEntries( + Object.entries(props).map(([key, value]) => + excludedFromEvaluation.includes(key) + ? [key, value] // Return excluded keys as they are + : [key, this.propertyWatcher.addDynamicValues({ [key]: value }, options)[key]] + ) + ); + if (props.attributes) { const evaluatedAttributes = this.attributeWatcher.setDynamicValues(props.attributes, options); evaluatedProps['attributes'] = evaluatedAttributes; } - const skipOverridUpdates = options.skipWatcherUpdates || options.fromDataSource; - if (!skipOverridUpdates) { + const skipOverrideUpdates = options.skipWatcherUpdates || options.fromDataSource; + if (!skipOverrideUpdates) { this.updateSymbolOverride(); }