Files
matrix-screen-controller/核桃派软件源代码/app/static/wifi-draft-state.js
T

26 lines
560 B
JavaScript

export function createLatchedDraftState(allowedKeys) {
const allowed = new Set(allowedKeys);
const modified = new Set();
return Object.freeze({
mark(key) {
if (!allowed.has(key)) throw new Error(`Unknown draft field: ${key}`);
const wasModified = modified.has(key);
modified.add(key);
return !wasModified;
},
clear() {
modified.clear();
},
has(key) {
return modified.has(key);
},
get dirty() {
return modified.size > 0;
},
keys() {
return [...modified];
},
});
}