a whole load of work in progress
This commit is contained in:
parent
caec0b8ac9
commit
26ba098183
63 changed files with 3234 additions and 321 deletions
30
static/framework.js
Normal file
30
static/framework.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
export function listen(...listenerSpecs) {
|
||||
return new Promise((resolve) => {
|
||||
let removeAllEventListeners;
|
||||
|
||||
let listeners = listenerSpecs.map(([element, eventName]) => {
|
||||
let listener = (event) => {
|
||||
removeAllEventListeners();
|
||||
resolve(event);
|
||||
};
|
||||
element.addEventListener(eventName, listener);
|
||||
return { element, eventName, func: listener };
|
||||
});
|
||||
|
||||
removeAllEventListeners = () => {
|
||||
for (let listener of listeners) {
|
||||
listener.element.removeEventListener(listener.eventName, listener.func);
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export function debounce(time, fn) {
|
||||
let timeout = null;
|
||||
return (...args) => {
|
||||
if (timeout == null) {
|
||||
fn(...args);
|
||||
timeout = setTimeout(() => (timeout = null), time);
|
||||
}
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue