diff --git a/readme.hints.md b/readme.hints.md
index 53d3f94..982bc46 100644
--- a/readme.hints.md
+++ b/readme.hints.md
@@ -25,9 +25,11 @@ The properties panel had timing issues detecting rendered elements because:
### Code Flow
1. Dashboard renders element demo into viewport using `render(anonItem.demo(), viewport)`
-2. Properties panel waits, then searches recursively for the element instance
-3. If not found, retries with delays to handle async rendering
-4. Once found, extracts and displays element properties
+2. Properties panel waits 200ms for demo wrappers to run and set initial values
+3. Searches recursively for the element instance
+4. If not found, retries with delays to handle async rendering
+5. Once found, extracts and displays element properties
+6. Uses property binding (`.value=`) instead of attribute binding to prevent input events during initialization
## Demo Tools
diff --git a/readme.plan.md b/readme.plan.md
index a466ac9..2169c7e 100644
--- a/readme.plan.md
+++ b/readme.plan.md
@@ -85,4 +85,16 @@ These test various scenarios:
- Complex data type display and editing
- Element detection inside dees-demowrapper
- Error handling for problematic values
-- Deep nesting and shadow DOM traversal
\ No newline at end of file
+- Deep nesting and shadow DOM traversal
+
+# Fixed Demo Value Overwriting (COMPLETED)
+
+## Issue:
+Properties panel was overwriting values set by demo functions
+
+## Solution:
+1. Changed from attribute binding (`value=`) to property binding (`.value=`)
+2. This prevents browser from firing input events during initialization
+3. Added proper number parsing for number inputs
+4. Increased initial wait to 200ms for demo wrappers to complete
+5. Simplified select element handling to use property binding
\ No newline at end of file
diff --git a/ts_web/elements/wcc-properties.ts b/ts_web/elements/wcc-properties.ts
index 7480b26..dea3409 100644
--- a/ts_web/elements/wcc-properties.ts
+++ b/ts_web/elements/wcc-properties.ts
@@ -309,8 +309,8 @@ export class WccProperties extends DeesElement {
console.log(anonItem.elementProperties);
const wccFrame = await this.dashboardRef.wccFrame;
- // Wait for render to complete
- await new Promise(resolve => setTimeout(resolve, 100));
+ // Wait for render to complete and any demo wrappers to run
+ await new Promise(resolve => setTimeout(resolve, 200));
// Try to find the element with recursive search
const viewport = await wccFrame.getViewportElement();
@@ -370,7 +370,7 @@ export class WccProperties extends DeesElement {
case 'String':
return html` {
firstFoundInstantiatedElement[key] = eventArg.target.value;
}}"
@@ -378,14 +378,15 @@ export class WccProperties extends DeesElement {
case 'Number':
return html` {
- firstFoundInstantiatedElement[key] = eventArg.target.value;
+ firstFoundInstantiatedElement[key] = parseFloat(eventArg.target.value) || 0;
}}"
/>`;
case 'Enum':
const enumValues: any[] = getEnumValues(property);
return html`