!138 fix(no-vdom): modify event

* fix(no-vdom): modify event
* Merge branch 'reactive' of https://gitee.com/openInula/inula into reactive
* fix(no-vdom): modify test code's name rule
* Merge branch 'reactive' of https://gitee.com/openInula/inula into reactive
* fix(no-vdom): delete no-vnode module
* fix(no-vdom): update render function
* Merge branch 'reactive' of https://gitee.com/openInula/inula into reactive
* Merge branch 'reactive' of https://gitee.com/openInula/inula into reactive
* Merge remote-tracking branch 'origin/reactive' into reactive
* fix(no-vdom): add TS
* fix(no-vdom): change js 2 ts
This commit is contained in:
陈超涛 2024-02-07 07:30:29 +00:00
parent c7d039cfe3
commit cf87ab2183
8 changed files with 110 additions and 107 deletions

View File

@ -13,12 +13,12 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
import {insert} from './dom'; import { insert } from './dom';
type ComponentConstructor<T> = (props: T) => any; type ComponentConstructor<T> = (props: T) => any;
type CodeFunction = () => any; type CodeFunction = () => any;
export function createComponent<T>(Comp: ComponentConstructor<T>, props: T = {} as T): any { export function runComponent<T>(Comp: ComponentConstructor<T>, props: T = {} as T): any {
return Comp(props); return Comp(props);
} }

View File

@ -290,7 +290,7 @@ export function setAttribute(node: Element, name: string, value: string | null):
} }
} }
export function className(node: Element, value: string | Record<string, boolean> | null): void { export function className(node: Element, value: string | string[] | Record<string, boolean> | null): void {
if (value == null) { if (value == null) {
node.removeAttribute('class'); node.removeAttribute('class');
} else { } else {

View File

@ -13,41 +13,45 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
const $$EVENTS = '_$DX_DELEGATE'; const DELEGATE_EVENTS_KEY = '$$DELEGATE_EVENTS';
/** /**
* document上注册事件 * Delegate events on the DOM
* @param eventNames * @param eventNames eventNames Array of event names
* @param document window.documentdocument对象 * @param node node Default is window.document, other document objects can be passed in
*/ */
export function delegateEvents(eventNames: string[], document: Document = window.document): void { export function delegateEvents(eventNames: string[], node: Node = window.document): void {
const e: Set<string> = document[$$EVENTS] || (document[$$EVENTS] = new Set()); const events: Set<string> = node[DELEGATE_EVENTS_KEY] || (node[DELEGATE_EVENTS_KEY] = new Set());
for (let i = 0, l = eventNames.length; i < l; i++) {
const name = eventNames[i]; for (const name of eventNames) {
if (!e.has(name)) { if (!events.has(name)) {
e.add(name); events.add(name);
document.addEventListener(name, eventHandler); node.addEventListener(name, eventHandler);
} }
} }
} }
export function clearDelegatedEvents(document: Document = window.document): void { export function clearDelegatedEvents(node: Node = window.document): void {
const events: Set<string> | undefined = document[$$EVENTS]; const events: Set<string> | undefined = node[DELEGATE_EVENTS_KEY];
if (events) { if (events) {
for (const name of events.keys()) document.removeEventListener(name, eventHandler); for (const name of Array.from(events.keys())) {
delete document[$$EVENTS]; node.removeEventListener(name, eventHandler);
}
delete node[DELEGATE_EVENTS_KEY];
} }
} }
function eventHandler(e: Event) { function eventHandler(e: Event) {
const key = `$$${e.type}`; if (!e.target) {
let node: EventTarget & Element = (e.composedPath && e.composedPath()[0]) || e.target; throw new Error('Event triggered without a target');
if (e.target !== node) {
Object.defineProperty(e, 'target', {
configurable: true,
value: node,
});
} }
const key = `$$DELEGATE_EVENT_${e.type}`;
// target refer to that triggers the event
let node: EventTarget = e.target;
// currentTarget will always refer to the object that registered the event listener
Object.defineProperty(e, 'currentTarget', { Object.defineProperty(e, 'currentTarget', {
configurable: true, configurable: true,
get() { get() {
@ -55,23 +59,22 @@ function eventHandler(e: Event) {
}, },
}); });
// 冒泡执行事件 // bubble execution event handler
while (node) { while (node) {
const handler = node[key] as EventListener | undefined; const handler = node[key] as EventListener | undefined;
if (handler && !node.disabled) { if (handler) {
const data = node[`${key}Data` as keyof typeof node]; handler.call(node, e);
data !== undefined ? handler.call(node, data, e) : handler.call(node, e);
if (e.cancelBubble) { if (e.cancelBubble) {
return; return;
} }
} }
node = (node as any)._$host || node.parentNode || (node as any).host; node = (node as Node).parentNode as Element;
} }
} }
export function addEventListener(node: Element, name: string, handler: EventListener, delegate?: boolean): void { export function addEventListener(node: Element, name: string, handler: EventListener, delegate?: boolean): void {
if (delegate) { if (delegate) {
node[`$$${name}`] = handler; node[`$$DELEGATE_EVENT_${name}`] = handler;
} else { } else {
node.addEventListener(name, handler); node.addEventListener(name, handler);
} }

View File

@ -19,8 +19,8 @@ import {
insert as $$insert, insert as $$insert,
setAttribute as $$setAttribute, setAttribute as $$setAttribute,
} from '../src/dom'; } from '../src/dom';
import { createComponent as $$createComponent, render } from '../src/core'; import { runComponent as $$runComponent, render } from '../src/core';
import { delegateEvents as $$delegateEvents, addEventListener as $$addEventListener } from '../src/event'; import { delegateEvents as $$delegateEvents, addEventListener as $$on } from '../src/event';
import { For } from '../src/components/For'; import { For } from '../src/components/For';
const container = document.createElement('div'); const container = document.createElement('div');
@ -84,7 +84,7 @@ bench('For', () => {
* <div> * <div>
* <div> * <div>
* <div> * <div>
* <div><h1>Horizon-reactive-novnode</h1></div> * <div><h1>Inula For</h1></div>
* <div> * <div>
* <div> * <div>
* <Button id="run" title="Create 1,000 rows" cb={run}/> * <Button id="run" title="Create 1,000 rows" cb={run}/>
@ -106,7 +106,7 @@ bench('For', () => {
const $tmpl = /*#__PURE__*/ $$template('<tr><td class="col-md-1">'), const $tmpl = /*#__PURE__*/ $$template('<tr><td class="col-md-1">'),
$tmpl_2 = /*#__PURE__*/ $$template('<div class="col-sm-6"><button type="button">'), $tmpl_2 = /*#__PURE__*/ $$template('<div class="col-sm-6"><button type="button">'),
$tmpl_3 = /*#__PURE__*/ $$template( $tmpl_3 = /*#__PURE__*/ $$template(
'<div><div><div><div><h1>Horizon-reactive-novnode</h1></div><div><div></div></div></div></div><table><tbody id="tbody">' '<div><div><div><div><h1>Inula For</h1></div><div><div></div></div></div></div><table><tbody id="tbody">'
); );
const A = [ const A = [
'pretty', 'pretty',
@ -162,12 +162,12 @@ bench('For', () => {
})(); })();
}; };
const RowList = props => { const RowList = props => {
return $$createComponent(For, { return $$runComponent(For, {
get each() { get each() {
return props.list; return props.list;
}, },
children: item => children: item =>
$$createComponent(Row, { $$runComponent(Row, {
item: item, item: item,
}), }),
}); });
@ -176,7 +176,7 @@ bench('For', () => {
(() => { (() => {
const _el$3 = $tmpl_2(), const _el$3 = $tmpl_2(),
_el$4 = _el$3.firstChild; _el$4 = _el$3.firstChild;
$$addEventListener(_el$4, 'click', props.cb, true); $$on(_el$4, 'click', props.cb, true);
$$insert(_el$4, () => props.title); $$insert(_el$4, () => props.title);
watch(() => $$setAttribute(_el$4, 'id', props.id)); watch(() => $$setAttribute(_el$4, 'id', props.id));
return _el$3; return _el$3;
@ -211,7 +211,7 @@ bench('For', () => {
_el$12 = _el$11.firstChild; _el$12 = _el$11.firstChild;
$$insert( $$insert(
_el$10, _el$10,
$$createComponent(Button, { $$runComponent(Button, {
id: 'run', id: 'run',
title: 'Create 1,000 rows', title: 'Create 1,000 rows',
cb: run, cb: run,
@ -219,7 +219,7 @@ bench('For', () => {
); );
$$insert( $$insert(
_el$12, _el$12,
$$createComponent(RowList, { $$runComponent(RowList, {
get list() { get list() {
return state.list; return state.list;
}, },
@ -228,7 +228,7 @@ bench('For', () => {
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(Main, {}), container); render(() => $$runComponent(Main, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
container.querySelector('#run').click(); container.querySelector('#run').click();

View File

@ -21,8 +21,8 @@ import {
insert as $$insert, insert as $$insert,
setAttribute as $$setAttribute, setAttribute as $$setAttribute,
} from '../src/dom'; } from '../src/dom';
import { createComponent as $$createComponent, render } from '../src/core'; import { runComponent as $$runComponent, render } from '../src/core';
import { delegateEvents as $$delegateEvents, addEventListener as $$addEventListener } from '../src/event'; import { delegateEvents as $$delegateEvents, addEventListener as $$on } from '../src/event';
import { describe, expect } from 'vitest'; import { describe, expect } from 'vitest';
import { domTest as it } from './utils'; import { domTest as it } from './utils';
import { For } from '../src/components/For'; import { For } from '../src/components/For';
@ -138,26 +138,26 @@ describe('For', () => {
_el$10 = _el$9.firstChild; _el$10 = _el$9.firstChild;
$$insert( $$insert(
_el$6, _el$6,
$$createComponent(For, { $$runComponent(For, {
get each() { get each() {
return state.todoList; return state.todoList;
}, },
children: todo => [ children: todo => [
$$createComponent(Todo, { $$runComponent(Todo, {
todo: todo, todo: todo,
}), }),
$$createComponent(Todo, { $$runComponent(Todo, {
todo: todo, todo: todo,
}), }),
], ],
}) })
); );
_el$8.$$click = add; $$on(_el$8, 'click', add);
_el$10.$$click = push; $$on(_el$10, 'click', push);
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
expect(container.querySelector('#todos').innerHTML).toEqual( expect(container.querySelector('#todos').innerHTML).toEqual(
@ -313,12 +313,12 @@ describe('For', () => {
})(); })();
}; };
const RowList = props => { const RowList = props => {
return $$createComponent(For, { return $$runComponent(For, {
get each() { get each() {
return props.list; return props.list;
}, },
children: item => children: item =>
$$createComponent(Row, { $$runComponent(Row, {
item: item, item: item,
}), }),
}); });
@ -327,7 +327,7 @@ describe('For', () => {
(() => { (() => {
const _el$3 = $tmpl_2(), const _el$3 = $tmpl_2(),
_el$4 = _el$3.firstChild; _el$4 = _el$3.firstChild;
$$addEventListener(_el$4, 'click', props.cb, true); $$on(_el$4, 'click', props.cb, true);
$$insert(_el$4, () => props.title); $$insert(_el$4, () => props.title);
watch(() => $$setAttribute(_el$4, 'id', props.id)); watch(() => $$setAttribute(_el$4, 'id', props.id));
return _el$3; return _el$3;
@ -362,7 +362,7 @@ describe('For', () => {
_el$12 = _el$11.firstChild; _el$12 = _el$11.firstChild;
$$insert( $$insert(
_el$10, _el$10,
$$createComponent(Button, { $$runComponent(Button, {
id: 'run', id: 'run',
title: 'Create 1,000 rows', title: 'Create 1,000 rows',
cb: run, cb: run,
@ -370,7 +370,7 @@ describe('For', () => {
); );
$$insert( $$insert(
_el$12, _el$12,
$$createComponent(RowList, { $$runComponent(RowList, {
get list() { get list() {
return state.list; return state.list;
}, },
@ -379,7 +379,7 @@ describe('For', () => {
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(Main, {}), container); render(() => $$runComponent(Main, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
expect(container.querySelector('#tbody').innerHTML).toEqual( expect(container.querySelector('#tbody').innerHTML).toEqual(

View File

@ -18,8 +18,8 @@
import { describe, expect, vi } from 'vitest'; import { describe, expect, vi } from 'vitest';
import { domTest as it } from './utils'; import { domTest as it } from './utils';
import { template as $$template } from '../src/dom'; import { template as $$template } from '../src/dom';
import { createComponent as $$createComponent, render } from '../src/core'; import { runComponent as $$runComponent, render } from '../src/core';
import { delegateEvents as $$delegateEvents, addEventListener as $$addEventListener } from '../src/event'; import { delegateEvents as $$delegateEvents, addEventListener as $$on } from '../src/event';
function dispatchMouseEvent(element: HTMLElement, eventType = 'click') { function dispatchMouseEvent(element: HTMLElement, eventType = 'click') {
element.dispatchEvent(new MouseEvent(eventType, { bubbles: true })); element.dispatchEvent(new MouseEvent(eventType, { bubbles: true }));
@ -67,37 +67,37 @@ describe('event', () => {
return [ return [
(() => { (() => {
const _el$ = $tmpl(); const _el$ = $tmpl();
$$addEventListener(_el$, 'change', () => fn('bound')); $$on(_el$, 'change', () => fn('bound'));
return _el$; return _el$;
})(), })(),
(() => { (() => {
const _el$2 = $tmpl_2(); const _el$2 = $tmpl_2();
$$addEventListener(_el$2, 'change', handler); $$on(_el$2, 'change', handler);
return _el$2; return _el$2;
})(), })(),
(() => { (() => {
const _el$3 = $tmpl_3(); const _el$3 = $tmpl_3();
$$addEventListener(_el$3, 'change', fn); $$on(_el$3, 'change', fn);
return _el$3; return _el$3;
})(), })(),
(() => { (() => {
const _el$4 = $tmpl_4(); const _el$4 = $tmpl_4();
$$addEventListener(_el$4, 'click', () => fn('delegated')); $$on(_el$4, 'click', () => fn('delegated'));
return _el$4; return _el$4;
})(), })(),
(() => { (() => {
const _el$5 = $tmpl_5(); const _el$5 = $tmpl_5();
$$addEventListener(_el$5, 'click', handler); $$on(_el$5, 'click', handler);
return _el$5; return _el$5;
})(), })(),
(() => { (() => {
const _el$6 = $tmpl_6(); const _el$6 = $tmpl_6();
$$addEventListener(_el$6, 'click', fn); $$on(_el$6, 'click', fn);
return _el$6; return _el$6;
})(), })(),
]; ];
}; };
render(() => $$createComponent(Comp), container); render(() => $$runComponent(Comp), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
dispatchChangeEvent(document.getElementById('inline-fn-change'), 'change'); dispatchChangeEvent(document.getElementById('inline-fn-change'), 'change');

View File

@ -23,8 +23,8 @@ import {
style as $$style, style as $$style,
className as $$className, className as $$className,
} from '../src/dom'; } from '../src/dom';
import { createComponent as $$createComponent, render } from '../src/core'; import { runComponent as $$runComponent, render } from '../src/core';
import { delegateEvents as $$delegateEvents, addEventListener as $$addEventListener } from '../src/event'; import { delegateEvents as $$delegateEvents, addEventListener as $$on } from '../src/event';
import { describe, expect } from 'vitest'; import { describe, expect } from 'vitest';
import { domTest as it } from './utils'; import { domTest as it } from './utils';
import { Show } from '../src/components/Show'; import { Show } from '../src/components/Show';
@ -46,7 +46,7 @@ describe('render', () => {
const CountingComponent = () => { const CountingComponent = () => {
return $tmpl(); return $tmpl();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
expect(container.querySelector('#count').innerHTML).toEqual('Count value is 0.'); expect(container.querySelector('#count').innerHTML).toEqual('Count value is 0.');
}); });
@ -72,7 +72,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
expect(container.querySelector('#count').innerHTML).toEqual('Count value is 0<!---->.'); expect(container.querySelector('#count').innerHTML).toEqual('Count value is 0<!---->.');
}); });
@ -111,12 +111,12 @@ describe('render', () => {
(() => { (() => {
const _el$5 = $tmpl_2(), const _el$5 = $tmpl_2(),
_el$6 = _el$5.firstChild; _el$6 = _el$5.firstChild;
_el$6.$$click = add; $$on(_el$6, 'click', add, true);
return _el$5; return _el$5;
})(), })(),
]; ];
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
@ -170,16 +170,16 @@ describe('render', () => {
_el$7 = _el$6.firstChild; _el$7 = _el$6.firstChild;
$$insert( $$insert(
_el$5, _el$5,
$$createComponent(CountValue, { $$runComponent(CountValue, {
count: count, count: count,
}), }),
_el$6 _el$6
); );
_el$7.$$click = add; $$on(_el$7, 'click', add, true);
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
container.querySelector('#btn').click(); container.querySelector('#btn').click();
@ -247,17 +247,17 @@ describe('render', () => {
_el$8 = _el$7.firstChild; _el$8 = _el$7.firstChild;
$$insert( $$insert(
_el$6, _el$6,
$$createComponent(CountValue, { $$runComponent(CountValue, {
count: count, count: count,
}), }),
_el$7 _el$7
); );
_el$8.$$click = add; $$on(_el$8, 'click', add, true);
$$insert(_el$6, $$createComponent(Nested, {}), null); $$insert(_el$6, $$runComponent(Nested, {}), null);
return _el$6; return _el$6;
})(); })();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
expect(container.querySelector('h1').innerHTML).toMatchInlineSnapshot('"0"'); expect(container.querySelector('h1').innerHTML).toMatchInlineSnapshot('"0"');
@ -280,7 +280,7 @@ describe('render', () => {
const Comp = () => { const Comp = () => {
return $tmpl(); return $tmpl();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').style.color).toEqual('red'); expect(container.querySelector('div').style.color).toEqual('red');
}); });
@ -302,7 +302,7 @@ describe('render', () => {
return $tmpl(); return $tmpl();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').style.color).toEqual('red'); expect(container.querySelector('div').style.color).toEqual('red');
}); });
@ -323,7 +323,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').style.color).toEqual('red'); expect(container.querySelector('div').style.color).toEqual('red');
}); });
@ -346,7 +346,7 @@ describe('render', () => {
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').style.color).toEqual('red'); expect(container.querySelector('div').style.color).toEqual('red');
}); });
@ -371,7 +371,7 @@ describe('render', () => {
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').style.color).toEqual('red'); expect(container.querySelector('div').style.color).toEqual('red');
container.querySelector('div').style.color = 'green'; container.querySelector('div').style.color = 'green';
expect(container.querySelector('div').style.color).toEqual('green'); expect(container.querySelector('div').style.color).toEqual('green');
@ -396,7 +396,7 @@ describe('render', () => {
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').style.color).toEqual('red'); expect(container.querySelector('div').style.color).toEqual('red');
container.querySelector('div').style.color = 'green'; container.querySelector('div').style.color = 'green';
expect(container.querySelector('div').style.color).toEqual('green'); expect(container.querySelector('div').style.color).toEqual('green');
@ -414,7 +414,7 @@ describe('render', () => {
const Comp = () => { const Comp = () => {
return $tmpl(); return $tmpl();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red'); expect(container.querySelector('div').className).toEqual('red');
}); });
@ -436,7 +436,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red'); expect(container.querySelector('div').className).toEqual('red');
}); });
@ -458,7 +458,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red'); expect(container.querySelector('div').className).toEqual('red');
}); });
@ -478,7 +478,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red green'); expect(container.querySelector('div').className).toEqual('red green');
}); });
@ -500,7 +500,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red'); expect(container.querySelector('div').className).toEqual('red');
container.querySelector('div').className = 'green'; container.querySelector('div').className = 'green';
expect(container.querySelector('div').className).toEqual('green'); expect(container.querySelector('div').className).toEqual('green');
@ -528,7 +528,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red'); expect(container.querySelector('div').className).toEqual('red');
}); });
@ -550,7 +550,7 @@ describe('render', () => {
return _el$; return _el$;
})(); })();
}; };
render(() => $$createComponent(Comp, {}), container); render(() => $$runComponent(Comp, {}), container);
expect(container.querySelector('div').className).toEqual('red green'); expect(container.querySelector('div').className).toEqual('red green');
}); });
@ -601,28 +601,28 @@ describe('render', () => {
_el$7 = _el$6.firstChild; _el$7 = _el$6.firstChild;
$$insert( $$insert(
_el$5, _el$5,
$$createComponent(Show, { $$runComponent(Show, {
get if() { get if() {
return computed(() => count.get() > 0); return computed(() => count.get() > 0);
}, },
get else() { get else() {
return $$createComponent(CountValue, { return $$runComponent(CountValue, {
count: 999, count: 999,
}); });
}, },
get children() { get children() {
return $$createComponent(CountValue, { return $$runComponent(CountValue, {
count: count, count: count,
}); });
}, },
}), }),
_el$6 _el$6
); );
_el$7.$$click = add; $$on(_el$7, 'click', add, true);
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
expect(container.querySelector('#count').innerHTML).toEqual('Count value is 999<!---->.'); expect(container.querySelector('#count').innerHTML).toEqual('Count value is 999<!---->.');
@ -742,26 +742,26 @@ describe('render', () => {
_el$10 = _el$9.firstChild; _el$10 = _el$9.firstChild;
$$insert( $$insert(
_el$6, _el$6,
$$createComponent(For, { $$runComponent(For, {
get each() { get each() {
return state.todoList; return state.todoList;
}, },
children: todo => [ children: todo => [
$$createComponent(Todo, { $$runComponent(Todo, {
todo: todo, todo: todo,
}), }),
$$createComponent(Todo, { $$runComponent(Todo, {
todo: todo, todo: todo,
}), }),
], ],
}) })
); );
_el$8.$$click = add; $$on(_el$8, 'click', add, true);
_el$10.$$click = push; $$on(_el$10, 'click', push, true);
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(CountingComponent, {}), container); render(() => $$runComponent(CountingComponent, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
expect(container.querySelector('#todos').innerHTML).toEqual( expect(container.querySelector('#todos').innerHTML).toEqual(
@ -917,12 +917,12 @@ describe('render', () => {
})(); })();
}; };
const RowList = props => { const RowList = props => {
return $$createComponent(For, { return $$runComponent(For, {
get each() { get each() {
return props.list; return props.list;
}, },
children: item => children: item =>
$$createComponent(Row, { $$runComponent(Row, {
item: item, item: item,
}), }),
}); });
@ -931,7 +931,7 @@ describe('render', () => {
(() => { (() => {
const _el$3 = $tmpl_2(), const _el$3 = $tmpl_2(),
_el$4 = _el$3.firstChild; _el$4 = _el$3.firstChild;
$$addEventListener(_el$4, 'click', props.cb, true); $$on(_el$4, 'click', props.cb, true);
$$insert(_el$4, () => props.title); $$insert(_el$4, () => props.title);
watch(() => $$setAttribute(_el$4, 'id', props.id)); watch(() => $$setAttribute(_el$4, 'id', props.id));
return _el$3; return _el$3;
@ -966,7 +966,7 @@ describe('render', () => {
_el$12 = _el$11.firstChild; _el$12 = _el$11.firstChild;
$$insert( $$insert(
_el$10, _el$10,
$$createComponent(Button, { $$runComponent(Button, {
id: 'run', id: 'run',
title: 'Create 1,000 rows', title: 'Create 1,000 rows',
cb: run, cb: run,
@ -974,7 +974,7 @@ describe('render', () => {
); );
$$insert( $$insert(
_el$12, _el$12,
$$createComponent(RowList, { $$runComponent(RowList, {
get list() { get list() {
return state.list; return state.list;
}, },
@ -983,7 +983,7 @@ describe('render', () => {
return _el$5; return _el$5;
})(); })();
}; };
render(() => $$createComponent(Main, {}), container); render(() => $$runComponent(Main, {}), container);
$$delegateEvents(['click']); $$delegateEvents(['click']);
expect(container.querySelector('#tbody').innerHTML).toEqual( expect(container.querySelector('#tbody').innerHTML).toEqual(