reuse timeout function

pull/1072/head
Rich Harris 8 years ago
parent 297ea67ebe
commit 6ccc7b812b

@ -107,6 +107,7 @@ export default class Window extends Node {
}); });
const lock = block.getUniqueName(`window_updating`); const lock = block.getUniqueName(`window_updating`);
const clear = block.getUniqueName(`clear_window_updating`);
const timeout = block.getUniqueName(`window_updating_timeout`); const timeout = block.getUniqueName(`window_updating_timeout`);
Object.keys(events).forEach(event => { Object.keys(events).forEach(event => {
@ -116,7 +117,8 @@ export default class Window extends Node {
if (event === 'scroll') { if (event === 'scroll') {
// TODO other bidirectional bindings... // TODO other bidirectional bindings...
block.addVariable(lock, 'false'); block.addVariable(lock, 'false');
block.addVariable(timeout,); block.addVariable(clear, `function() { ${lock} = false; }`);
block.addVariable(timeout);
} }
const handlerBody = deindent` const handlerBody = deindent`
@ -161,7 +163,7 @@ export default class Window extends Node {
? `#component.get("${bindings.scrollY}")` ? `#component.get("${bindings.scrollY}")`
: `window.scrollY`}; : `window.scrollY`};
window.scrollTo(x, y); window.scrollTo(x, y);
${timeout} = setTimeout(function() { ${lock} = false; }, 100); ${timeout} = setTimeout(${clear}, 100);
} }
`); `);
@ -181,7 +183,7 @@ export default class Window extends Node {
${lock} = true; ${lock} = true;
clearTimeout(${timeout}); clearTimeout(${timeout});
window.scrollTo(${isX ? 'x, window.scrollY' : 'window.scrollX, y'}); window.scrollTo(${isX ? 'x, window.scrollY' : 'window.scrollX, y'});
${timeout} = setTimeout(function() { ${lock} = false; }, 100); ${timeout} = setTimeout(${clear}, 100);
}); });
`); `);
} }

@ -190,7 +190,7 @@ var proto = {
/* generated by Svelte vX.Y.Z */ /* generated by Svelte vX.Y.Z */
function create_main_fragment(state, component) { function create_main_fragment(state, component) {
var window_updating = false, window_updating_timeout, p, text, text_1; var window_updating = false, clear_window_updating = function() { window_updating = false; }, window_updating_timeout, p, text, text_1;
function onwindowscroll(event) { function onwindowscroll(event) {
if (window_updating) return; if (window_updating) return;
@ -207,7 +207,7 @@ function create_main_fragment(state, component) {
window_updating = true; window_updating = true;
clearTimeout(window_updating_timeout); clearTimeout(window_updating_timeout);
window.scrollTo(window.scrollX, y); window.scrollTo(window.scrollX, y);
window_updating_timeout = setTimeout(function() { window_updating = false; }, 100); window_updating_timeout = setTimeout(clear_window_updating, 100);
}); });
return { return {

@ -2,7 +2,7 @@
import { appendNode, assign, createElement, createText, detachNode, init, insertNode, proto } from "svelte/shared.js"; import { appendNode, assign, createElement, createText, detachNode, init, insertNode, proto } from "svelte/shared.js";
function create_main_fragment(state, component) { function create_main_fragment(state, component) {
var window_updating = false, window_updating_timeout, p, text, text_1; var window_updating = false, clear_window_updating = function() { window_updating = false; }, window_updating_timeout, p, text, text_1;
function onwindowscroll(event) { function onwindowscroll(event) {
if (window_updating) return; if (window_updating) return;
@ -19,7 +19,7 @@ function create_main_fragment(state, component) {
window_updating = true; window_updating = true;
clearTimeout(window_updating_timeout); clearTimeout(window_updating_timeout);
window.scrollTo(window.scrollX, y); window.scrollTo(window.scrollX, y);
window_updating_timeout = setTimeout(function() { window_updating = false; }, 100); window_updating_timeout = setTimeout(clear_window_updating, 100);
}); });
return { return {

Loading…
Cancel
Save