Add folder image loader node
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
export const COMFY_CLASS = "DumasLoadImagesFolder";
|
||||
export const STATE_PROP = "loadImagesFolderState";
|
||||
export const HIDDEN_INPUT_NAME = "LoadImagesFolderState";
|
||||
|
||||
export const DEFAULT_STATE = {
|
||||
version: 1,
|
||||
folder: "",
|
||||
recursive: false,
|
||||
sort: "name",
|
||||
sort_dir: "asc",
|
||||
selected: [],
|
||||
selection_mode: "selected",
|
||||
first_n: 5,
|
||||
};
|
||||
|
||||
export function readState(node) {
|
||||
const value = node.properties?.[STATE_PROP];
|
||||
if (typeof value === "string" && value) {
|
||||
try {
|
||||
return { ...DEFAULT_STATE, ...JSON.parse(value) };
|
||||
} catch (_error) {
|
||||
return { ...DEFAULT_STATE };
|
||||
}
|
||||
}
|
||||
return { ...DEFAULT_STATE };
|
||||
}
|
||||
|
||||
export function writeState(node, state) {
|
||||
if (!node.properties) node.properties = {};
|
||||
node.properties[STATE_PROP] = JSON.stringify({ ...DEFAULT_STATE, ...(state || {}) });
|
||||
}
|
||||
|
||||
export function sortFiles(files, sort, dir) {
|
||||
const ordered = [...(files || [])];
|
||||
ordered.sort((a, b) => {
|
||||
if (sort === "date") {
|
||||
const delta = (a?.mtime || 0) - (b?.mtime || 0);
|
||||
if (delta !== 0) return dir === "desc" ? -delta : delta;
|
||||
}
|
||||
const delta = String(a?.file || "").localeCompare(String(b?.file || ""), undefined, {
|
||||
numeric: true,
|
||||
sensitivity: "base",
|
||||
});
|
||||
return dir === "desc" ? -delta : delta;
|
||||
});
|
||||
return ordered;
|
||||
}
|
||||
Reference in New Issue
Block a user