Skip to content

Instantly share code, notes, and snippets.

@imkost
imkost / m_2.jsx
Last active April 23, 2018 18:13
<div class="Page">
<h2 class="Page__title">IT Company</h2>
<div class="Page__content">We develop apps</div>
</div>
{
class: 'Page',
inner: [
{
tag: 'h2',
<div class="Page">
<h2 class="Page__title">IT Company</h2>
<div class="Page__content">We develop apps</div>
</div>
NameEditor.onKeyUp = changeInnerText('nameEditor__name');
const nameElems = watchClass(id => `nameEditor__name-${id}`);
NameEditor.onKeyUp = (input, id) => {
nameElems(id, elem => elem.innerText = input.value);
};
const nameElems = {};
function getNameElems(id) {
return nameElems[id] || (
nameElems[id] = document.getElementsByClassName(`nameEditor__name-${id}`)
);
}
NameEditor.onKeyUp = (input, id) => {
for (const elem of getNameElems(id)) {
const Box = () => '<div class="box"></div>';
const boxes = document.getElementsByClassName('box');
document.body.innerHTML = `${Box()}${Box()}${Box()}`;
console.log(boxes.length); // 3
document.body.innerHTML = `${Box()}`;
console.log(boxes.length); // 1
function NameEditor({ id }) {
// Add color to distinguish name editors
const color = {
0: '#b6e1c1',
1: '#b7c4ed',
}[id];
return `
<div class="nameEditor" style="background: ${color}">
...
function App({ url }) {
return `
...
${NameEditor({ id: 0 })}
${NameEditor({ id: 1 })}
${NameEditor({ id: 2 })}
...
`
}
function Box({ text }) {
return `
<div class="box" onClick="Box.onClick()">
${text}
</div>
`;
}
Box.onClick = () => {
alert('box was clicked');
function NameEditor({ instanceIndex }) {
return `
<div class="nameEditor">
<div>Enter you name:</div>
<input onKeyUp="NameEditor.onKeyUp(this, ${instanceIndex})" />
<div>
Hello, <span id="nameEditor__name-${instanceIndex}"></span>
</div>
</div>
`;