初始化奇妙小屏幕控制器项目
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
export function resolveWorkspaceOrder(definitions, savedOrder) {
|
||||
const defaults = Array.from(definitions || []);
|
||||
const byId = new Map(defaults.map((definition) => [definition.id, definition]));
|
||||
const resolved = [];
|
||||
const seen = new Set();
|
||||
|
||||
if (Array.isArray(savedOrder)) {
|
||||
savedOrder.forEach((workspaceId) => {
|
||||
if (seen.has(workspaceId) || !byId.has(workspaceId)) return;
|
||||
seen.add(workspaceId);
|
||||
resolved.push(byId.get(workspaceId));
|
||||
});
|
||||
}
|
||||
|
||||
defaults.forEach((definition) => {
|
||||
if (seen.has(definition.id)) return;
|
||||
seen.add(definition.id);
|
||||
resolved.push(definition);
|
||||
});
|
||||
return resolved;
|
||||
}
|
||||
|
||||
export function moveWorkspaceOrder(workspaceIds, index, offset) {
|
||||
if (!Array.isArray(workspaceIds) || !Number.isInteger(index) || !Number.isInteger(offset)) {
|
||||
return null;
|
||||
}
|
||||
const target = index + offset;
|
||||
if (index < 0 || index >= workspaceIds.length || target < 0 || target >= workspaceIds.length) {
|
||||
return null;
|
||||
}
|
||||
const moved = [...workspaceIds];
|
||||
[moved[index], moved[target]] = [moved[target], moved[index]];
|
||||
return moved;
|
||||
}
|
||||
Reference in New Issue
Block a user