we can now do changed.foo instead of "foo" in changed - is faster and smaller

pull/769/head
Rich Harris 8 years ago
parent 9053e95460
commit 3daa7aa6b3

@ -87,9 +87,7 @@ export default function dom(
generator.readonly.add(key);
const condition = `isInitial || ${deps.map(dep =>
`( '${dep}' in changed )`
).join(' || ')}`;
const condition = `isInitial || ${deps.map(dep => `changed.${dep}`).join(' || ')}`;
const statement = `if ( @differs( ( state.${key} = @template.computed.${key}( ${deps
.map(dep => `state.${dep}`)

@ -89,7 +89,7 @@ export default function visitBinding(
local.update.addBlock(deindent`
if ( !${updating} && ${dependencies
.map(dependency => `'${dependency}' in changed`)
.map(dependency => `changed.${dependency}`)
.join(' || ')} ) {
${updating} = true;
${local.name}._set({ ${attribute.name}: ${snippet} });

@ -195,10 +195,8 @@ export default function visitComponent(
if (attribute.dependencies.length) {
return deindent`
if ( ${attribute.dependencies
.map(dependency => `'${dependency}' in changed`)
.join(
'||'
)} ) ${name}_changes.${attribute.name} = ${attribute.value};
.map(dependency => `changed.${dependency}`)
.join(' || ')} ) ${name}_changes.${attribute.name} = ${attribute.value};
`;
}

@ -409,7 +409,7 @@ function unkeyed(
// TODO do this for keyed blocks as well
const condition = Array.from(allDependencies)
.map(dependency => `'${dependency}' in changed`)
.map(dependency => `changed.${dependency}`)
.join(' || ');
const parentNode = state.parentNode || `${anchor}.parentNode`;

@ -157,7 +157,7 @@ export default function visitAttribute(
const dependencies = Array.from(allDependencies);
const changedCheck = (
( block.hasOutroMethod ? `#outroing || ` : '' ) +
dependencies.map(dependency => `'${dependency}' in changed`).join(' || ')
dependencies.map(dependency => `changed.${dependency}`).join(' || ')
);
const updateCachedValue = `${last} !== ( ${last} = ${value} )`;

@ -30,7 +30,7 @@ export default function visitTag(
if (dependencies.length || hasChangeableIndex) {
const changedCheck = (
( block.hasOutroMethod ? `#outroing || ` : '' ) +
dependencies.map(dependency => `'${dependency}' in changed`).join(' || ')
dependencies.map(dependency => `changed.${dependency}`).join(' || ')
);
const updateCachedValue = `${value} !== ( ${value} = ${snippet} )`;

@ -28,7 +28,7 @@ export function differs(a, b) {
export function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -54,7 +54,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];
@ -204,7 +204,7 @@ function create_main_fragment ( state, component ) {
},
update: function ( changed, state ) {
if ( 'foo' in changed ) {
if ( changed.foo ) {
text.data = state.foo;
}
},

@ -39,7 +39,7 @@ function create_main_fragment ( state, component ) {
},
update: function ( changed, state ) {
if ( 'foo' in changed ) {
if ( changed.foo ) {
text.data = state.foo;
}
},

@ -30,7 +30,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];
@ -191,7 +191,7 @@ function SvelteComponent ( options ) {
assign( SvelteComponent.prototype, proto );
SvelteComponent.prototype._recompute = function _recompute ( changed, state, oldState, isInitial ) {
if ( isInitial || ( 'x' in changed ) ) {
if ( isInitial || changed.x ) {
if ( differs( ( state.a = template.computed.a( state.x ) ), oldState.a ) ) changed.a = true;
if ( differs( ( state.b = template.computed.b( state.x ) ), oldState.b ) ) changed.b = true;
}

@ -50,7 +50,7 @@ function SvelteComponent ( options ) {
assign( SvelteComponent.prototype, proto );
SvelteComponent.prototype._recompute = function _recompute ( changed, state, oldState, isInitial ) {
if ( isInitial || ( 'x' in changed ) ) {
if ( isInitial || changed.x ) {
if ( differs( ( state.a = template.computed.a( state.x ) ), oldState.a ) ) changed.a = true;
if ( differs( ( state.b = template.computed.b( state.x ) ), oldState.b ) ) changed.b = true;
}

@ -50,7 +50,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -63,7 +63,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];
@ -209,7 +209,7 @@ function create_main_fragment ( state, component ) {
update: function ( changed, state ) {
var each_block_value = state.comments;
if ( 'comments' in changed || 'elapsed' in changed || 'time' in changed ) {
if ( changed.comments || changed.elapsed || changed.time ) {
for ( var i = 0; i < each_block_value.length; i += 1 ) {
if ( each_block_iterations[i] ) {
each_block_iterations[i].update( changed, state, each_block_value, each_block_value[i], i );
@ -227,7 +227,7 @@ function create_main_fragment ( state, component ) {
each_block_iterations.length = each_block_value.length;
}
if ( 'foo' in changed ) {
if ( changed.foo ) {
text_1.data = state.foo;
}
},
@ -289,15 +289,15 @@ function create_each_block ( state, each_block_value, comment, i, component ) {
},
update: function ( changed, state, each_block_value, comment, i ) {
if ( ( 'comments' in changed ) && text_2_value !== ( text_2_value = comment.author ) ) {
if ( ( changed.comments ) && text_2_value !== ( text_2_value = comment.author ) ) {
text_2.data = text_2_value;
}
if ( ( 'elapsed' in changed || 'comments' in changed || 'time' in changed ) && text_4_value !== ( text_4_value = state.elapsed(comment.time, state.time) ) ) {
if ( ( changed.elapsed || changed.comments || changed.time ) && text_4_value !== ( text_4_value = state.elapsed(comment.time, state.time) ) ) {
text_4.data = text_4_value;
}
if ( ( 'comments' in changed ) && raw_value !== ( raw_value = comment.html ) ) {
if ( ( changed.comments ) && raw_value !== ( raw_value = comment.html ) ) {
detachBetween( raw_before, raw_after );
raw_before.insertAdjacentHTML( 'afterend', raw_value );
}

@ -35,7 +35,7 @@ function create_main_fragment ( state, component ) {
update: function ( changed, state ) {
var each_block_value = state.comments;
if ( 'comments' in changed || 'elapsed' in changed || 'time' in changed ) {
if ( changed.comments || changed.elapsed || changed.time ) {
for ( var i = 0; i < each_block_value.length; i += 1 ) {
if ( each_block_iterations[i] ) {
each_block_iterations[i].update( changed, state, each_block_value, each_block_value[i], i );
@ -53,7 +53,7 @@ function create_main_fragment ( state, component ) {
each_block_iterations.length = each_block_value.length;
}
if ( 'foo' in changed ) {
if ( changed.foo ) {
text_1.data = state.foo;
}
},
@ -115,15 +115,15 @@ function create_each_block ( state, each_block_value, comment, i, component ) {
},
update: function ( changed, state, each_block_value, comment, i ) {
if ( ( 'comments' in changed ) && text_2_value !== ( text_2_value = comment.author ) ) {
if ( ( changed.comments ) && text_2_value !== ( text_2_value = comment.author ) ) {
text_2.data = text_2_value;
}
if ( ( 'elapsed' in changed || 'comments' in changed || 'time' in changed ) && text_4_value !== ( text_4_value = state.elapsed(comment.time, state.time) ) ) {
if ( ( changed.elapsed || changed.comments || changed.time ) && text_4_value !== ( text_4_value = state.elapsed(comment.time, state.time) ) ) {
text_4.data = text_4_value;
}
if ( ( 'comments' in changed ) && raw_value !== ( raw_value = comment.html ) ) {
if ( ( changed.comments ) && raw_value !== ( raw_value = comment.html ) ) {
detachBetween( raw_before, raw_after );
raw_before.insertAdjacentHTML( 'afterend', raw_value );
}

@ -50,7 +50,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -54,7 +54,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -54,7 +54,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -44,7 +44,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -30,7 +30,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -30,7 +30,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

@ -54,7 +54,7 @@ function differs(a, b) {
function dispatchObservers(component, group, changed, newState, oldState) {
for (var key in group) {
if (!(key in changed)) continue;
if (!changed[key]) continue;
var newValue = newState[key];
var oldValue = oldState[key];

Loading…
Cancel
Save