# DISCUSSION: Create a way to separate HTML from Component
```typescript=
const MyComp = component$(({id, title}) => {...})
return (
<>
<MyComp h:id="abc" h:class="bar" id=""/>
<MyComp id="abc" class="bar" prop:id=""/>
<div id="123" class="foo"/>
</>
);
```
Goal:
- Separate out props from html
---
```typescript=
const objA = createStore({mode: true}); // objA
const objB = createStore({b:1}); // objB
const objC = createStore({c:2}); // objC
onWatch$((obs) => { // onWatch123
if (obs(objA).mode) {
objA.result = obs(objB).b;
} else {
objA.result = obs(objC).c;
}
});
return $(() => (
// const [objA, objB, objC] = useLexicalScope()
<div>
{objA.mode ? objB.b : objC.c}
<button on$:click={() => console.log(objA)}>
+
</button>
</div>
));
```
```htmlembedded=
<div q:id="345" q:obj="123">
{store.mode ?
<button on:click="./chunk#symbol[objB]">+</button> :
<button on:click="./chunk#symbol">-</button>
}
</div>
```
string => obj
```typescript=
{
'roots': {
el123 {
qrl: 'onRender',
lexicalCapture: [objA, objB, objC],
watch: [
[objA, 'mode'],
[objC, 'c'],
],
onWatch123: {
qrl: 'onWatchQRL',
lexicalCapture: [objA, objB, objC],
watch: [
[objA, 'mode'],
[objC, 'c'],
]
},
}
},
'objValues': {
objA: {
value: {mode: true},
refCount: 3,
notify: {
onWatch123: ['mode']
el123: ['mode'],
},
},
objB: {
value: {mode: true},
refCount: 2,
notify: {}
}
objC: {
value: {mode: true},
refCount: 3,
notify: {
onWatch123: ['c'],
el123: ['c']
}
}
},
}
```
```typescript=
'obk=js': {
objA: {
value: {mode: true},
subs: [
el123: ['mode']
]
},
objB: {
value: {mode: true},
subs: [
el123: ['mode']
]
},
objC: {
value: {mode: true},
subs: [
el123: ['mode']
]
},
```
---
```htmlembedded=
<div>
<button q:obj="objA, objB, objC"
on:click="./chunk#symbol[0,2]"
on:dblclick="./chunk#symbol[0,1]"
>+</button>
</div>
```
```typescript=
buttonElem['q:obj'] = [objA, objB, objC]
<button on:click={() => {}}>
```
addEvent() {
qURLWrite() keeps in memory
addEventListener()
}