stylus/execution-order/execution-order.js
2021-12-09 20:17:23 +08:00

37 lines
913 B
JavaScript

/* global prefs */
/* global API */
(async () => {
const list = (await getOrderedStyles()).map(createLi);
document.querySelector("#main").append(...list.map(l => l.el));
function createLi(style) {
const el = document.createElement("li");
const dragger = document.createElement("span");
dragger.class = "dragger";
el.append(dragger, style.name);
return {el};
}
async function getOrderedStyles() {
const [styles, ] = await Promise.all([
API.styles.getAll(),
prefs.ready
]);
const styleSet = new Set(styles);
const uuidIndex = new Map;
for (const s of styleSet) {
uuidIndex.set(s._id, s);
}
const orderedStyles = [];
for (const uid of prefs.get('styles.order')) {
const s = uuidIndex.get(uid);
if (s) {
orderedStyles.push(s);
}
}
orderedStyles.push(...styleSet);
return orderedStyles;
}
})();