joining without newlines seems to work better in common cases

pull/13362/head
Rich Harris 2 years ago
parent 56edbbfcbe
commit 46c103d7c9

@ -786,29 +786,28 @@ function handle_events(element, state) {
state.str.remove(needs_line_delete ? new_line_index : node.start, node.end);
}
const first_node = nodes[0];
const first = nodes[0];
if (first_node) {
const indent = get_indent(state, first_node, element);
let handlers_body = '';
for (const handler of handlers) {
handlers_body += `${handler.needs_line_delete || nodes.length > 1 ? `\n${indent}` : ''}${handler.handler},`;
}
handlers_body = handlers_body.substring(0, handlers_body.length - 1);
if (handlers_body) {
if (handlers_body === name) {
state.str.overwrite(first_node.start, first_node.end, `{${name}}`);
if (first) {
const indent = get_indent(state, first, element);
let singular = handlers.map((handler) => handler.handler).join(', ');
if (singular) {
if (singular === name) {
state.str.overwrite(first.start, first.end, `{${name}}`);
} else {
state.str.overwrite(
first_node.start,
first_node.end,
`${name}={${nodes.length > 1 ? `${state.names.handlers}(` : ''}${handlers_body}${nodes.length > 1 ? ')' : ''}}`
);
if (nodes.length > 1) {
singular = `${state.names.handlers}(${singular})`;
}
state.str.overwrite(first.start, first.end, `${name}={${singular}}`);
}
}
for (const passive_handler of explicit_passive_handlers) {
state.str.appendRight(
first_node.end,
first.end,
`${passive_handler.needs_line_delete || nodes.length > 1 ? `\n${indent}` : ''}${passive_handler.handler}`
);
}
@ -822,21 +821,16 @@ function handle_events(element, state) {
* @param {Array<{start: number; end: number}>} nodes
*/
function get_indent(state, ...nodes) {
let indent = state.indent;
for (const node of nodes) {
const line_start = state.str.original.lastIndexOf('\n', node.start);
indent = state.str.original.substring(line_start + 1, node.start);
const indent = state.str.original.substring(line_start + 1, node.start);
if (indent.trim() === '') {
indent = state.indent + indent;
return indent;
} else {
indent = state.indent;
}
}
return indent;
return '';
}
/**

@ -15,21 +15,12 @@
let nonpassive;
</script>
<button onclick={handlers_1(
() => console.log('hi'),
bubble_1('click'))} >click me</button>
<button onclick={handlers_1(
function(){ console.log('hi') },
bubble_1('click'))} >click me</button>
<button onclick={handlers_1(
() => console.log('before'),
bubble_1('click'),
() => console.log('after'))}
<button onclick={handlers_1(() => console.log('hi'), bubble_1('click'))} >click me</button>
<button onclick={handlers_1(function(){ console.log('hi') }, bubble_1('click'))} >click me</button>
<button onclick={handlers_1(() => console.log('before'), bubble_1('click'), () => console.log('after'))}
>click me</button
>
<button onclick={handlers_1(
bubble_1('click'),
foo)} >click me</button>
<button onclick={handlers_1(bubble_1('click'), foo)} >click me</button>
<button onclick={bubble_1('click')}>click me</button>
<button ondblclick={() => console.log('hi')}>click me</button>
@ -63,29 +54,19 @@
<button use:nonpassive_1={['click', () => trusted_1(()=>'')]}>click me</button>
<button
onclick={handlers_1(
bubble_1('click'),
()=>'')}
use:passive_1={['click', () => ()=>'']}
onclick={handlers_1(bubble_1('click'), ()=>'')}
use:passive_1={['click', () => ()=>'']}
>click me</button>
<button
onclick={handlers_1(
bubble_1('click'),
()=>'')}
use:nonpassive_1={['click', () => ()=>'']}
onclick={handlers_1(bubble_1('click'), ()=>'')}
use:nonpassive_1={['click', () => ()=>'']}
>click me</button>
<button
onclick={handlers_1(
bubble_1('click'),
foo,
()=>'',
once_1(trusted_1(preventDefault_1(()=>''))))}
onblur={handlers_1(
foo,
once_1(trusted_1(preventDefault_1(bubble_1('blur')))))}
onclick={handlers_1(bubble_1('click'), foo, ()=>'', once_1(trusted_1(preventDefault_1(()=>''))))}
onblur={handlers_1(foo, once_1(trusted_1(preventDefault_1(bubble_1('blur')))))}
>
click me
</button>

@ -46,7 +46,9 @@
<button
on:click|nonpassive={()=>''}
on:click
on:click={()=>''}
on:click={()=>{
return 'multiline';
}}
>click me</button>

@ -4,21 +4,12 @@
const bubble = createBubbler();
</script>
<button onclick={handlers(
() => console.log('hi'),
bubble('click'))} >click me</button>
<button onclick={handlers(
function(){ console.log('hi') },
bubble('click'))} >click me</button>
<button onclick={handlers(
() => console.log('before'),
bubble('click'),
() => console.log('after'))}
<button onclick={handlers(() => console.log('hi'), bubble('click'))} >click me</button>
<button onclick={handlers(function(){ console.log('hi') }, bubble('click'))} >click me</button>
<button onclick={handlers(() => console.log('before'), bubble('click'), () => console.log('after'))}
>click me</button
>
<button onclick={handlers(
bubble('click'),
foo)} >click me</button>
<button onclick={handlers(bubble('click'), foo)} >click me</button>
<button onclick={bubble('click')}>click me</button>
<button ondblclick={() => console.log('hi')}>click me</button>
@ -53,29 +44,21 @@
<button use:nonpassive={['click', () => trusted(()=>'')]}>click me</button>
<button
onclick={handlers(
bubble('click'),
()=>'')}
use:passive={['click', () => ()=>'']}
onclick={handlers(bubble('click'), ()=>'')}
use:passive={['click', () => ()=>'']}
>click me</button>
<button
onclick={handlers(
bubble('click'),
()=>'')}
use:nonpassive={['click', () => ()=>'']}
onclick={handlers(bubble('click'), ()=>{
return 'multiline';
})}
use:nonpassive={['click', () => ()=>'']}
>click me</button>
<button
onclick={handlers(
bubble('click'),
foo,
()=>'',
once(trusted(preventDefault(()=>''))))}
onblur={handlers(
foo,
once(trusted(preventDefault(bubble('blur')))))}
onclick={handlers(bubble('click'), foo, ()=>'', once(trusted(preventDefault(()=>''))))}
onblur={handlers(foo, once(trusted(preventDefault(bubble('blur')))))}
>
click me
</button>

Loading…
Cancel
Save