From f171c25d9fc582674fbf9280ec708e2b8ae67f7d Mon Sep 17 00:00:00 2001
From: Wiley Walarus <2216093+johnbuck@users.noreply.github.com>
Date: Wed, 4 Nov 2026 09:15:24 -0800
Subject: [PATCH] chore(dist): rebuild
---
...D8bHMZQk.js => FloatingViewer-ChLkunrC.js} | 14 +-
...2lOUV.js => LiveStreamTracker-Bm3iSgMa.js} | 4 +-
....js => SidebarWorkflowSection-Il8h_Lxt.js} | 12 +-
...tor-CP5qPOcc.js => TagsEditor-DIWU3BJ3.js} | 6 +-
...{Viewer-DHesfEdb.js => Viewer-CVh8T5Ff.js} | 12 +-
...l-DZOLbwNu.js => ViewerPortal-CYbu70-Q.js} | 10 +-
...{events-tsQFsZrH.js => events-Dsaaq7CE.js} | 1 +
...t.js => floatingViewerManager-DQlULmZ-.js} | 6 +-
...enInfo-C_5G1vVv.js => genInfo-_xs-pT8h.js} | 6 +-
...18R8Ewh.js => model3dRenderer-DNsnm5Az.js} | 2 +-
...HDLb.js => openMajoorSettings-CJdCbICp.js} | 4 +-
...ide-BI1-c6CN.js => sideBySide-CioDf4i3.js} | 2 +-
...Fm-S5.js => viewerOpenRequest-SXvGdj01.js} | 4 +-
...wab-.js => viewerRuntimeHosts-BVuaPEIm.js} | 144 +-
dist/entry.js | 5023 +++++++++--------
15 files changed, 2672 insertions(+), 2578 deletions(-)
rename dist/chunks/{FloatingViewer-D8bHMZQk.js => FloatingViewer-ChLkunrC.js} (99%)
rename dist/chunks/{LiveStreamTracker-CIt2lOUV.js => LiveStreamTracker-Bm3iSgMa.js} (97%)
rename dist/chunks/{SidebarWorkflowSection-CZBV2aho.js => SidebarWorkflowSection-Il8h_Lxt.js} (99%)
rename dist/chunks/{TagsEditor-CP5qPOcc.js => TagsEditor-DIWU3BJ3.js} (97%)
rename dist/chunks/{Viewer-DHesfEdb.js => Viewer-CVh8T5Ff.js} (99%)
rename dist/chunks/{ViewerPortal-DZOLbwNu.js => ViewerPortal-CYbu70-Q.js} (97%)
rename dist/chunks/{events-tsQFsZrH.js => events-Dsaaq7CE.js} (99%)
rename dist/chunks/{floatingViewerManager-DYNfChQt.js => floatingViewerManager-DQlULmZ-.js} (99%)
rename dist/chunks/{genInfo-C_5G1vVv.js => genInfo-_xs-pT8h.js} (99%)
rename dist/chunks/{model3dRenderer-B18R8Ewh.js => model3dRenderer-DNsnm5Az.js} (99%)
rename dist/chunks/{openMajoorSettings-IdB9HDLb.js => openMajoorSettings-CJdCbICp.js} (99%)
rename dist/chunks/{sideBySide-BI1-c6CN.js => sideBySide-CioDf4i3.js} (99%)
rename dist/chunks/{viewerOpenRequest-Bw0Fm-S5.js => viewerOpenRequest-SXvGdj01.js} (90%)
rename dist/chunks/{viewerRuntimeHosts-Ctr8wab-.js => viewerRuntimeHosts-BVuaPEIm.js} (96%)
diff --git a/dist/chunks/FloatingViewer-D8bHMZQk.js b/dist/chunks/FloatingViewer-ChLkunrC.js
similarity index 99%
rename from dist/chunks/FloatingViewer-D8bHMZQk.js
rename to dist/chunks/FloatingViewer-ChLkunrC.js
index a69afb9a..9aa02ae0 100644
--- a/dist/chunks/FloatingViewer-D8bHMZQk.js
+++ b/dist/chunks/FloatingViewer-ChLkunrC.js
@@ -1,12 +1,12 @@
-import { $t as e, g as t, y as n } from "./viewerRuntimeHosts-Ctr8wab-.js";
-import { B as r, C as i, I as a, M as o, O as s, P as c, R as l, V as u, j as d, m as f, o as p, r as m, rt as h, v as g, w as _, x as v } from "./events-tsQFsZrH.js";
+import { $t as e, g as t, y as n } from "./viewerRuntimeHosts-BVuaPEIm.js";
+import { B as r, C as i, I as a, M as o, O as s, P as c, R as l, V as u, j as d, m as f, o as p, r as m, rt as h, v as g, w as _, x as v } from "./events-Dsaaq7CE.js";
import { a as y, i as b, o as x, s as S } from "./graphTraversal-DTdQWkn5.js";
-import { _ as C, g as w, m as T, n as E, p as ee, r as D, w as O } from "./Viewer-DHesfEdb.js";
-import { r as k, v as A } from "./SidebarWorkflowSection-CZBV2aho.js";
-import { _ as j, a as M, c as N, d as P, f as F, g as I, h as L, i as te, l as R, m as z, o as ne, p as B, r as re, s as V, t as ie, u as H, v as U } from "./openMajoorSettings-IdB9HDLb.js";
-import { a as W, n as ae, r as oe } from "./model3dRenderer-B18R8Ewh.js";
+import { _ as C, g as w, m as T, n as E, p as ee, r as D, w as O } from "./Viewer-CVh8T5Ff.js";
+import { r as k, v as A } from "./SidebarWorkflowSection-Il8h_Lxt.js";
+import { _ as j, a as M, c as N, d as P, f as F, g as I, h as L, i as te, l as R, m as z, o as ne, p as B, r as re, s as V, t as ie, u as H, v as U } from "./openMajoorSettings-CJdCbICp.js";
+import { a as W, n as ae, r as oe } from "./model3dRenderer-DNsnm5Az.js";
import { i as se, o as ce, r as le, t as ue } from "./geninfoParser-CgHp-y-n.js";
-import { t as de } from "./genInfo-C_5G1vVv.js";
+import { t as de } from "./genInfo-_xs-pT8h.js";
// ui/features/viewer/floatingViewerConstants.ts
var G = Object.freeze({
SIMPLE: "simple",
diff --git a/dist/chunks/LiveStreamTracker-CIt2lOUV.js b/dist/chunks/LiveStreamTracker-Bm3iSgMa.js
similarity index 97%
rename from dist/chunks/LiveStreamTracker-CIt2lOUV.js
rename to dist/chunks/LiveStreamTracker-Bm3iSgMa.js
index 418e52d1..a2f711d3 100644
--- a/dist/chunks/LiveStreamTracker-CIt2lOUV.js
+++ b/dist/chunks/LiveStreamTracker-Bm3iSgMa.js
@@ -1,5 +1,5 @@
-import { J as e, o as t, r as n } from "./events-tsQFsZrH.js";
-import { t as r } from "./floatingViewerManager-DYNfChQt.js";
+import { J as e, o as t, r as n } from "./events-Dsaaq7CE.js";
+import { t as r } from "./floatingViewerManager-DQlULmZ-.js";
// ui/features/viewer/LiveStreamTracker.ts
var i = !1, a = null, o = null, s = null, c = null, l = null, u = null, d = null, f = null, p = 0, m = 0, h = !1, g = 400, _ = "kj_preview_override", v = /* @__PURE__ */ new Set([
"image/jpeg",
diff --git a/dist/chunks/SidebarWorkflowSection-CZBV2aho.js b/dist/chunks/SidebarWorkflowSection-Il8h_Lxt.js
similarity index 99%
rename from dist/chunks/SidebarWorkflowSection-CZBV2aho.js
rename to dist/chunks/SidebarWorkflowSection-Il8h_Lxt.js
index 8af6d1f8..ae62e944 100644
--- a/dist/chunks/SidebarWorkflowSection-CZBV2aho.js
+++ b/dist/chunks/SidebarWorkflowSection-Il8h_Lxt.js
@@ -1,10 +1,10 @@
-import { $ as e, $t as t, At as n, Bt as r, Ct as i, Dt as a, Et as o, Ft as s, Gt as c, Ht as l, I as u, It as d, K as f, Kt as p, Mt as m, N as h, Nt as g, O as _, Ot as v, Pt as y, Q as b, Qt as x, R as S, Rt as C, S as ee, St as te, T as ne, Tt as w, Ut as T, Vt as E, X as re, Y as D, Yt as ie, Z as ae, Zt as oe, at as se, cn as ce, ct as le, dt as ue, en as de, et as fe, gt as pe, it as me, jt as he, k as ge, kt as _e, lt as ve, nt as ye, ot as be, p as xe, rt as Se, sn as Ce, tt as we, ut as Te, w as Ee, wt as De } from "./viewerRuntimeHosts-Ctr8wab-.js";
-import { Ct as Oe, K as ke, N as Ae, T as je, c as Me, d as Ne, f as Pe, h as Fe, j as Ie, l as Le, m as O, o as k, p as Re, pt as ze, s as A, tt as Be, u as Ve, x as He, y as Ue } from "./events-tsQFsZrH.js";
-import { F as We, K as Ge, P as Ke, Y as qe, f as Je, m as Ye, p as Xe } from "./Viewer-DHesfEdb.js";
-import { t as Ze } from "./floatingViewerManager-DYNfChQt.js";
+import { $ as e, $t as t, At as n, Bt as r, Ct as i, Dt as a, Et as o, Ft as s, Gt as c, Ht as l, I as u, It as d, K as f, Kt as p, Mt as m, N as h, Nt as g, O as _, Ot as v, Pt as y, Q as b, Qt as x, R as S, Rt as C, S as ee, St as te, T as ne, Tt as w, Ut as T, Vt as E, X as re, Y as D, Yt as ie, Z as ae, Zt as oe, at as se, cn as ce, ct as le, dt as ue, en as de, et as fe, gt as pe, it as me, jt as he, k as ge, kt as _e, lt as ve, nt as ye, ot as be, p as xe, rt as Se, sn as Ce, tt as we, ut as Te, w as Ee, wt as De } from "./viewerRuntimeHosts-BVuaPEIm.js";
+import { Ct as Oe, K as ke, N as Ae, T as je, c as Me, d as Ne, f as Pe, h as Fe, j as Ie, l as Le, m as O, o as k, p as Re, pt as ze, s as A, tt as Be, u as Ve, x as He, y as Ue } from "./events-Dsaaq7CE.js";
+import { F as We, K as Ge, P as Ke, Y as qe, f as Je, m as Ye, p as Xe } from "./Viewer-CVh8T5Ff.js";
+import { t as Ze } from "./floatingViewerManager-DQlULmZ-.js";
import { A as Qe, C as j, D as $e, E as M, G as et, J as tt, K as nt, N as rt, O as N, R as it, S as at, T as P, U as F, V as I, Y as ot, _ as st, a as ct, b as lt, c as ut, d as dt, dt as L, f as ft, ft as R, g as pt, h as mt, i as ht, j as gt, k as z, l as _t, lt as B, m as vt, n as yt, nt as bt, o as xt, p as St, r as Ct, rt as V, s as wt, t as Tt, u as Et, ut as Dt, y as Ot, z as kt } from "./mjr-primevue-BRqtdXzb.js";
import { t as At } from "./mjr-vue-vendor-mHY_eIVE.js";
-import { t as jt } from "./viewerOpenRequest-Bw0Fm-S5.js";
+import { t as jt } from "./viewerOpenRequest-SXvGdj01.js";
import { a as Mt, i as Nt, n as Pt, o as Ft, r as It, t as Lt } from "./geninfoParser-CgHp-y-n.js";
// ui/app/settings/settingsUtils.ts
var H = (e, t) => {
@@ -5119,7 +5119,7 @@ var Do = ["title"], Oo = ["src"], ko = {
setup(e) {
let n = e, r = V(0), i = V(!1), a = null;
function o() {
- return a ||= import("./floatingViewerManager-DYNfChQt.js").then((e) => e.n), a;
+ return a ||= import("./floatingViewerManager-DQlULmZ-.js").then((e) => e.n), a;
}
function s() {
return (Array.isArray(n.inputFile?.previewCandidates) ? n.inputFile.previewCandidates : [])[r.value] || "";
diff --git a/dist/chunks/TagsEditor-CP5qPOcc.js b/dist/chunks/TagsEditor-DIWU3BJ3.js
similarity index 97%
rename from dist/chunks/TagsEditor-CP5qPOcc.js
rename to dist/chunks/TagsEditor-DIWU3BJ3.js
index 44e09da5..461ab26b 100644
--- a/dist/chunks/TagsEditor-CP5qPOcc.js
+++ b/dist/chunks/TagsEditor-DIWU3BJ3.js
@@ -1,6 +1,6 @@
-import { $t as e, F as t, v as n } from "./viewerRuntimeHosts-Ctr8wab-.js";
-import { St as r, m as i, n as a } from "./events-tsQFsZrH.js";
-import { Y as o } from "./Viewer-DHesfEdb.js";
+import { $t as e, F as t, v as n } from "./viewerRuntimeHosts-BVuaPEIm.js";
+import { St as r, m as i, n as a } from "./events-Dsaaq7CE.js";
+import { Y as o } from "./Viewer-CVh8T5Ff.js";
import { A as s, C as c, E as l, G as u, J as d, K as f, L as ee, N as p, R as te, T as m, U as ne, V as h, Y as g, b as _, ft as v, j as y, k as b, lt as x, rt as S, ut as C, z as w } from "./mjr-primevue-BRqtdXzb.js";
// ui/vue/components/common/TagsEditor.vue?vue&type=script&setup=true&lang.ts
var T = ["aria-busy"], E = ["aria-label"], re = {
diff --git a/dist/chunks/Viewer-DHesfEdb.js b/dist/chunks/Viewer-CVh8T5Ff.js
similarity index 99%
rename from dist/chunks/Viewer-DHesfEdb.js
rename to dist/chunks/Viewer-CVh8T5Ff.js
index 899be768..3759dcc9 100644
--- a/dist/chunks/Viewer-DHesfEdb.js
+++ b/dist/chunks/Viewer-CVh8T5Ff.js
@@ -1,9 +1,9 @@
-import { $t as e, H as t, P as n, _ as r, c as i, d as a, g as o, gt as s, n as c, o as l, r as u, s as d, vt as f, x as p, y as m } from "./viewerRuntimeHosts-Ctr8wab-.js";
-import { Ct as h, D as g, a as _, ct as v, h as y, i as b, j as x, k as S, m as C, n as w, o as T, pt as E, r as D, rt as O, t as k } from "./events-tsQFsZrH.js";
+import { $t as e, H as t, P as n, _ as r, c as i, d as a, g as o, gt as s, n as c, o as l, r as u, s as d, vt as f, x as p, y as m } from "./viewerRuntimeHosts-BVuaPEIm.js";
+import { Ct as h, D as g, a as _, ct as v, h as y, i as b, j as x, k as S, m as C, n as w, o as T, pt as E, r as D, rt as O, t as k } from "./events-Dsaaq7CE.js";
import { T as A, nt as j, rt as M } from "./mjr-primevue-BRqtdXzb.js";
import { n as N, r as ee } from "./mjr-vue-vendor-mHY_eIVE.js";
import { n as P, r as te, t as F } from "./state-D0Gu1AgG.js";
-import { a as ne, c as re, i as ie, o as ae, r as oe, s as se } from "./model3dRenderer-B18R8Ewh.js";
+import { a as ne, c as re, i as ie, o as ae, r as oe, s as se } from "./model3dRenderer-DNsnm5Az.js";
// ui/utils/events.ts
function ce(e, t, { target: n = null, warnPrefix: r = "[Majoor]" } = {}) {
let i = n || (typeof window < "u" ? window : null);
@@ -9619,13 +9619,13 @@ var Wr = null, Gr = null, Kr = null, qr = null, Jr = null, Yr = null;
function Xr() {
Wr || import("./abCompare-BUrGm4-x.js").then((e) => {
Wr = e;
- }), Gr || import("./sideBySide-BI1-c6CN.js").then((e) => {
+ }), Gr || import("./sideBySide-CioDf4i3.js").then((e) => {
Gr = e;
- }), Kr || import("./model3dRenderer-B18R8Ewh.js").then((e) => e.t).then((e) => {
+ }), Kr || import("./model3dRenderer-DNsnm5Az.js").then((e) => e.t).then((e) => {
Kr = e;
}), qr || import("./scopes-bvTRS68K.js").then((e) => {
qr = e;
- }), Jr || import("./genInfo-C_5G1vVv.js").then((e) => e.n).then((e) => {
+ }), Jr || import("./genInfo-_xs-pT8h.js").then((e) => e.n).then((e) => {
Jr = e;
}), Yr || import("./frameExport-CnNO7oN6.js").then((e) => {
Yr = e;
diff --git a/dist/chunks/ViewerPortal-DZOLbwNu.js b/dist/chunks/ViewerPortal-CYbu70-Q.js
similarity index 97%
rename from dist/chunks/ViewerPortal-DZOLbwNu.js
rename to dist/chunks/ViewerPortal-CYbu70-Q.js
index 2249ad12..0ee2b1a8 100644
--- a/dist/chunks/ViewerPortal-DZOLbwNu.js
+++ b/dist/chunks/ViewerPortal-CYbu70-Q.js
@@ -1,9 +1,9 @@
-import { a as e, i as t } from "./viewerRuntimeHosts-Ctr8wab-.js";
-import { r as n } from "./events-tsQFsZrH.js";
-import { a as r, c as i, i as a, l as o, o as s, s as c, t as l, u } from "./Viewer-DHesfEdb.js";
-import { i as d, r as f } from "./floatingViewerManager-DYNfChQt.js";
+import { a as e, i as t } from "./viewerRuntimeHosts-BVuaPEIm.js";
+import { r as n } from "./events-Dsaaq7CE.js";
+import { a as r, c as i, i as a, l as o, o as s, s as c, t as l, u } from "./Viewer-CVh8T5Ff.js";
+import { i as d, r as f } from "./floatingViewerManager-DQlULmZ-.js";
import { B as p, C as m, D as h, E as g, G as _, J as v, K as y, L as b, N as x, O as S, T as C, U as w, V as T, dt as E, ft as D, j as O, k, lt as A, rt as j, ut as M, w as N, z as P } from "./mjr-primevue-BRqtdXzb.js";
-import { t as F } from "./TagsEditor-CP5qPOcc.js";
+import { t as F } from "./TagsEditor-DIWU3BJ3.js";
// ui/vue/components/viewer/FloatingViewerHost.vue
var I = /* @__PURE__ */ x({
__name: "FloatingViewerHost",
diff --git a/dist/chunks/events-tsQFsZrH.js b/dist/chunks/events-Dsaaq7CE.js
similarity index 99%
rename from dist/chunks/events-tsQFsZrH.js
rename to dist/chunks/events-Dsaaq7CE.js
index ce5c2cab..29451ba4 100644
--- a/dist/chunks/events-tsQFsZrH.js
+++ b/dist/chunks/events-Dsaaq7CE.js
@@ -2310,6 +2310,7 @@ var G = {
"toast.filesDeletedPartial": "{success} files deleted, {failed} failed.",
"toast.filesDeletedShort": "{n} files deleted",
"toast.filesDeletedShortPartial": "{success} deleted, {failed} failed",
+ "toast.filesDeletingProgress": "Deleting files... ({done}/{total})",
"toast.copiedToClipboardNamed": "{name} copied to clipboard!",
"toast.rescanningFile": "Rescanning file",
"toast.failedToggleWatcher": "Failed to toggle watcher",
diff --git a/dist/chunks/floatingViewerManager-DYNfChQt.js b/dist/chunks/floatingViewerManager-DQlULmZ-.js
similarity index 99%
rename from dist/chunks/floatingViewerManager-DYNfChQt.js
rename to dist/chunks/floatingViewerManager-DQlULmZ-.js
index 875b9478..40c031c4 100644
--- a/dist/chunks/floatingViewerManager-DYNfChQt.js
+++ b/dist/chunks/floatingViewerManager-DQlULmZ-.js
@@ -1,6 +1,6 @@
import { t as e } from "./rolldown-runtime-CGnMp29N.js";
-import { _ as t, d as n, o as r, s as i, t as a } from "./viewerRuntimeHosts-Ctr8wab-.js";
-import { o, r as s, z as c } from "./events-tsQFsZrH.js";
+import { _ as t, d as n, o as r, s as i, t as a } from "./viewerRuntimeHosts-BVuaPEIm.js";
+import { o, r as s, z as c } from "./events-Dsaaq7CE.js";
// ui/features/panel/panelRuntimeRefs.ts
var l = null;
function u(e) {
@@ -96,7 +96,7 @@ var te = /* @__PURE__ */ e({
teardownFloatingViewerManager: () => we
}), v = null, y = null;
async function ne() {
- return v || (y ||= import("./FloatingViewer-D8bHMZQk.js").then((e) => (v = e.FloatingViewer, v)), y);
+ return v || (y ||= import("./FloatingViewer-ChLkunrC.js").then((e) => (v = e.FloatingViewer, v)), y);
}
var b = null, re = null;
async function ie() {
diff --git a/dist/chunks/genInfo-C_5G1vVv.js b/dist/chunks/genInfo-_xs-pT8h.js
similarity index 99%
rename from dist/chunks/genInfo-C_5G1vVv.js
rename to dist/chunks/genInfo-_xs-pT8h.js
index 1388bc9f..429b62e9 100644
--- a/dist/chunks/genInfo-C_5G1vVv.js
+++ b/dist/chunks/genInfo-_xs-pT8h.js
@@ -1,7 +1,7 @@
import { t as e } from "./rolldown-runtime-CGnMp29N.js";
-import { m as t, o as n } from "./events-tsQFsZrH.js";
-import { h as r } from "./Viewer-DHesfEdb.js";
-import { i, n as a, r as o, t as s, u as c } from "./SidebarWorkflowSection-CZBV2aho.js";
+import { m as t, o as n } from "./events-Dsaaq7CE.js";
+import { h as r } from "./Viewer-CVh8T5Ff.js";
+import { i, n as a, r as o, t as s, u as c } from "./SidebarWorkflowSection-Il8h_Lxt.js";
import { D as l, E as u, N as d, O as f, T as p, V as m, dt as h, ft as g, k as _, lt as v } from "./mjr-primevue-BRqtdXzb.js";
// ui/vue/components/viewer/ViewerMetadataBlock.vue?vue&type=script&setup=true&lang.ts
var y = { style: {
diff --git a/dist/chunks/model3dRenderer-B18R8Ewh.js b/dist/chunks/model3dRenderer-DNsnm5Az.js
similarity index 99%
rename from dist/chunks/model3dRenderer-B18R8Ewh.js
rename to dist/chunks/model3dRenderer-DNsnm5Az.js
index 4ea97062..aa6380c6 100644
--- a/dist/chunks/model3dRenderer-B18R8Ewh.js
+++ b/dist/chunks/model3dRenderer-DNsnm5Az.js
@@ -1,5 +1,5 @@
import { t as e } from "./rolldown-runtime-CGnMp29N.js";
-import { m as t, mt as n, o as r, r as i } from "./events-tsQFsZrH.js";
+import { m as t, mt as n, o as r, r as i } from "./events-Dsaaq7CE.js";
import { n as a } from "./state-D0Gu1AgG.js";
// ui/features/viewer/model3dCore.ts
function o(e, t) {
diff --git a/dist/chunks/openMajoorSettings-IdB9HDLb.js b/dist/chunks/openMajoorSettings-CJdCbICp.js
similarity index 99%
rename from dist/chunks/openMajoorSettings-IdB9HDLb.js
rename to dist/chunks/openMajoorSettings-CJdCbICp.js
index 20f8ca1f..ab593279 100644
--- a/dist/chunks/openMajoorSettings-IdB9HDLb.js
+++ b/dist/chunks/openMajoorSettings-CJdCbICp.js
@@ -1,6 +1,6 @@
-import { A as e, E as t, J as n, R as r, S as i, Y as a, b as o, j as s, m as c } from "./events-tsQFsZrH.js";
+import { A as e, E as t, J as n, R as r, S as i, Y as a, b as o, j as s, m as c } from "./events-Dsaaq7CE.js";
import { a as l, n as u } from "./graphTraversal-DTdQWkn5.js";
-import { S as d, Y as f, b as p, x as m, y as h } from "./SidebarWorkflowSection-CZBV2aho.js";
+import { S as d, Y as f, b as p, x as m, y as h } from "./SidebarWorkflowSection-Il8h_Lxt.js";
// ui/features/viewer/floatingViewerProgress.ts
var g = "progress-update", _ = "__MJR_MFV_PROGRESS_SERVICE__";
function ee() {
diff --git a/dist/chunks/sideBySide-BI1-c6CN.js b/dist/chunks/sideBySide-CioDf4i3.js
similarity index 99%
rename from dist/chunks/sideBySide-BI1-c6CN.js
rename to dist/chunks/sideBySide-CioDf4i3.js
index ad59c54a..6b280ebd 100644
--- a/dist/chunks/sideBySide-BI1-c6CN.js
+++ b/dist/chunks/sideBySide-CioDf4i3.js
@@ -1,4 +1,4 @@
-import { i as e } from "./model3dRenderer-B18R8Ewh.js";
+import { i as e } from "./model3dRenderer-DNsnm5Az.js";
import { i as t, o as n } from "./geninfoParser-CgHp-y-n.js";
// ui/features/viewer/sideBySide.ts
function r(e) {
diff --git a/dist/chunks/viewerOpenRequest-Bw0Fm-S5.js b/dist/chunks/viewerOpenRequest-SXvGdj01.js
similarity index 90%
rename from dist/chunks/viewerOpenRequest-Bw0Fm-S5.js
rename to dist/chunks/viewerOpenRequest-SXvGdj01.js
index 305f02c5..b7ce562b 100644
--- a/dist/chunks/viewerOpenRequest-Bw0Fm-S5.js
+++ b/dist/chunks/viewerOpenRequest-SXvGdj01.js
@@ -1,6 +1,6 @@
import { t as e } from "./rolldown-runtime-CGnMp29N.js";
-import { r as t } from "./events-tsQFsZrH.js";
-import { t as n } from "./Viewer-DHesfEdb.js";
+import { r as t } from "./events-Dsaaq7CE.js";
+import { t as n } from "./Viewer-CVh8T5Ff.js";
// ui/features/viewer/viewerOpenRequest.ts
var r = /* @__PURE__ */ e({ requestViewerOpen: () => o });
function i(e) {
diff --git a/dist/chunks/viewerRuntimeHosts-Ctr8wab-.js b/dist/chunks/viewerRuntimeHosts-BVuaPEIm.js
similarity index 96%
rename from dist/chunks/viewerRuntimeHosts-Ctr8wab-.js
rename to dist/chunks/viewerRuntimeHosts-BVuaPEIm.js
index e846913a..9deb5998 100644
--- a/dist/chunks/viewerRuntimeHosts-Ctr8wab-.js
+++ b/dist/chunks/viewerRuntimeHosts-BVuaPEIm.js
@@ -1,4 +1,4 @@
-import { Ct as e, St as t, _t as n, gt as r, ht as i, k as a, m as o, nt as s, o as c, tt as l, vt as u, xt as d } from "./events-tsQFsZrH.js";
+import { Ct as e, St as t, _t as n, gt as r, ht as i, k as a, m as o, nt as s, o as c, tt as l, vt as u, xt as d } from "./events-Dsaaq7CE.js";
// ui/app/settingsStore.ts
var f = "mjrSettings", p = "mjrMinimapSettings", m = /* @__PURE__ */ new Set([
"POST",
@@ -1151,13 +1151,17 @@ async function Jt(e) {
r = n ? { asset_id: n } : { filepath: i };
} else n = t(e), r = { asset_id: n };
let i = await Y("/mjr/am/asset/delete", r);
- return i?.ok && n && Xt([n]), i;
+ return i?.ok && n && H([n]), i;
}
async function Yt(e) {
let n = Array.isArray(e) ? e.map((e) => t(e)).filter(Boolean) : [], r = await Y("/mjr/am/assets/delete", { ids: n });
- return r?.ok && Xt(n), r;
+ if (r?.ok) {
+ let e = r?.data || {}, t = Array.isArray(e?.failed_ids) ? e.failed_ids : [];
+ Array.isArray(e?.deleted_ids) ? H(e.deleted_ids) : t.length || H(n);
+ }
+ return r;
}
-function Xt(e) {
+function H(e) {
try {
let t = (Array.isArray(e) ? e : [e]).map((e) => String(e || "").trim()).filter(Boolean);
if (!t.length) return;
@@ -1166,7 +1170,7 @@ function Xt(e) {
console.debug?.(e);
}
}
-async function Zt(e, n) {
+async function Xt(e, n) {
let r;
if (e && typeof e == "object") {
r = t(e.id);
@@ -1204,7 +1208,7 @@ async function Zt(e, n) {
}
return i;
}
-async function Qt() {
+async function Zt() {
let e = typeof AbortController < "u" ? new AbortController() : null, t = null;
try {
return e && (t = setTimeout(() => e.abort(), 1e4)), await J("/mjr/am/collections", e ? { signal: e.signal } : {});
@@ -1212,26 +1216,26 @@ async function Qt() {
t && clearTimeout(t);
}
}
-async function $t(e) {
+async function Qt(e) {
return Y("/mjr/am/collections", { name: String(e || "").trim() });
}
-async function en(e) {
+async function $t(e) {
let t = String(e || "").trim();
return Y(`/mjr/am/collections/${encodeURIComponent(t)}/delete`, {});
}
-async function tn(e, t) {
+async function en(e, t) {
let n = String(e || "").trim(), r = Array.isArray(t) ? t : [];
return Y(`/mjr/am/collections/${encodeURIComponent(n)}/add`, { assets: r });
}
-async function nn(e, t) {
+async function tn(e, t) {
let n = String(e || "").trim(), r = Array.isArray(t) ? t : [];
return Y(`/mjr/am/collections/${encodeURIComponent(n)}/remove`, { filepaths: r });
}
-async function rn(e) {
+async function nn(e) {
let t = String(e || "").trim();
return J(`/mjr/am/collections/${encodeURIComponent(t)}/assets`);
}
-async function an(e, t = 20) {
+async function rn(e, t = 20) {
let n = String(e || "").trim();
if (!n) return {
ok: !1,
@@ -1255,7 +1259,7 @@ async function an(e, t = 20) {
dateExact: r?.dateExact ?? null
}), J(c, { timeoutMs: 12e4 });
}
-async function on(e, t = 20) {
+async function an(e, t = 20) {
let n = String(e || "").trim();
if (!n) return {
ok: !1,
@@ -1264,24 +1268,24 @@ async function on(e, t = 20) {
let r = t && typeof t == "object" ? t : { topK: Number(t) }, i = Math.max(1, Math.min(200, Number(r?.topK ?? 20) || 20)), a = String(r?.scope || "").trim(), o = String(r?.customRootId || "").trim(), s = `${l.VECTOR_SIMILAR}/${encodeURIComponent(n)}?top_k=${i}`;
return a && (s += `&scope=${encodeURIComponent(a)}`), o && (s += `&custom_root_id=${encodeURIComponent(o)}`), J(s, { dedupeKey: `vec:${n}:${i}:${a}:${o}` });
}
-async function sn(e) {
+async function on(e) {
let t = String(e || "").trim();
return t ? J(`${l.VECTOR_ALIGNMENT}/${encodeURIComponent(t)}`) : {
ok: !1,
error: "Missing asset ID"
};
}
-async function cn(e) {
+async function sn(e) {
let t = String(e || "").trim();
return t ? Y(`${l.VECTOR_INDEX}/${encodeURIComponent(t)}`, {}) : {
ok: !1,
error: "Missing asset ID"
};
}
-async function ln() {
+async function cn() {
return J(l.VECTOR_STATS);
}
-async function un(e = 64, t = {}) {
+async function ln(e = 64, t = {}) {
let n = Math.max(1, Math.min(200, e)), r = typeof t?.onProgress == "function" ? t.onProgress : null, i = String(t?.scope || "").trim().toLowerCase(), a = String(t?.customRootId ?? t?.custom_root_id ?? "").trim(), o = `${l.VECTOR_BACKFILL}?batch_size=${n}&async=1`;
i && (o += `&scope=${encodeURIComponent(i)}`), a && (o += `&custom_root_id=${encodeURIComponent(a)}`);
let s = await Y(o, {}, { timeoutMs: 3e4 });
@@ -1297,7 +1301,7 @@ async function un(e = 64, t = {}) {
"running",
"pending"
].includes(u)) return s;
- let f = Number(t?.pollIntervalMs), p = Number(t?.pollTimeoutMs), m = Number.isFinite(f) ? Math.max(500, Math.min(1e4, Math.floor(f))) : vn, h = Number.isFinite(p) ? Math.max(1e4, Math.min(bn, Math.floor(p))) : yn, ee = Date.now(), g = null;
+ let f = Number(t?.pollIntervalMs), p = Number(t?.pollTimeoutMs), m = Number.isFinite(f) ? Math.max(500, Math.min(1e4, Math.floor(f))) : _n, h = Number.isFinite(p) ? Math.max(1e4, Math.min(yn, Math.floor(p))) : vn, ee = Date.now(), g = null;
for (; Date.now() - ee < h;) {
await S(m);
let e = await J(`${l.VECTOR_BACKFILL_STATUS}?backfill_id=${encodeURIComponent(d)}`, { timeoutMs: 3e4 });
@@ -1366,14 +1370,14 @@ async function un(e = 64, t = {}) {
status: 408
};
}
-async function dn(e) {
+async function un(e) {
let t = String(e || "").trim();
return t ? Y(`${l.VECTOR_CAPTION}/${encodeURIComponent(t)}`, {}) : {
ok: !1,
error: "Missing asset ID"
};
}
-async function fn(e, { topK: t = 50, scope: n = "output", customRootId: r = "", subfolder: i = null, kind: a = null, hasWorkflow: o = null, minRating: c = null, minSizeMB: u = null, maxSizeMB: d = null, minWidth: f = null, minHeight: p = null, maxWidth: m = null, maxHeight: h = null, workflowType: ee = null, workflowId: g = null, dateRange: _ = null, dateExact: v = null } = {}) {
+async function dn(e, { topK: t = 50, scope: n = "output", customRootId: r = "", subfolder: i = null, kind: a = null, hasWorkflow: o = null, minRating: c = null, minSizeMB: u = null, maxSizeMB: d = null, minWidth: f = null, minHeight: p = null, maxWidth: m = null, maxHeight: h = null, workflowType: ee = null, workflowId: g = null, dateRange: _ = null, dateExact: v = null } = {}) {
let y = String(e || "").trim();
if (!y) return {
ok: !1,
@@ -1397,122 +1401,122 @@ async function fn(e, { topK: t = 50, scope: n = "output", customRootId: r = "",
dateExact: v
}), J(b, { timeoutMs: 12e4 });
}
-async function pn(e = 8) {
+async function fn(e = 8) {
return Y(l.VECTOR_SUGGEST_COLLECTIONS, { k: Math.max(2, Math.min(20, e)) });
}
// ui/api/client.ts
-var mn = 3e4, hn = "__MJR_API_CLIENT__", gn = 2e3, _n = 200, vn = 1e3, yn = 18e5, bn = 432e5, H = "settings", xn = "available-tags", U = E({
- ttlMs: gn,
- maxSize: 1
-}), W = E({
- ttlMs: gn,
+var pn = 3e4, mn = "__MJR_API_CLIENT__", hn = 2e3, gn = 200, _n = 1e3, vn = 18e5, yn = 432e5, U = "settings", bn = "available-tags", W = E({
+ ttlMs: hn,
maxSize: 1
}), G = E({
- ttlMs: () => Tn(),
+ ttlMs: hn,
maxSize: 1
-}), Sn = /* @__PURE__ */ new Set([
+}), K = E({
+ ttlMs: () => wn(),
+ maxSize: 1
+}), xn = /* @__PURE__ */ new Set([
"1",
"true",
"yes",
"on"
-]), Cn = /* @__PURE__ */ new Set([
+]), Sn = /* @__PURE__ */ new Set([
"0",
"false",
"no",
"off"
]);
-function wn(e, t = !1) {
+function Cn(e, t = !1) {
if (typeof e == "boolean") return e;
if (typeof e == "number") return e !== 0;
if (typeof e == "string") {
let t = e.trim().toLowerCase();
- if (Sn.has(t)) return !0;
- if (Cn.has(t)) return !1;
+ if (xn.has(t)) return !0;
+ if (Sn.has(t)) return !1;
}
return !!t;
}
-function Tn() {
+function wn() {
try {
let e = localStorage?.getItem?.("mjrSettings") || "{}", t = JSON.parse(e), n = t?.cache?.tagsTTLms ?? t?.cache?.tagsTTL ?? t?.cache?.tags_ttl_ms ?? null, r = Number(n);
- return Number.isFinite(r) ? Math.max(1e3, Math.min(6e5, Math.floor(r))) : mn;
+ return Number.isFinite(r) ? Math.max(1e3, Math.min(6e5, Math.floor(r))) : pn;
} catch {
- return mn;
+ return pn;
}
}
-function En() {
- U.clear();
-}
-function Dn() {
+function Tn() {
W.clear();
}
-function K() {
+function En() {
G.clear();
}
-function On(e) {
+function q() {
+ K.clear();
+}
+function Dn(e) {
return String(e ?? "").trim().toLowerCase() || "";
}
-function kn(e) {
+function On(e) {
let t = [], n = /* @__PURE__ */ new Set();
for (let r of Array.isArray(e) ? e : []) {
let e = String(r ?? "").trim();
if (!e) continue;
- let i = On(e);
+ let i = Dn(e);
i && !n.has(i) && (n.add(i), t.push(e));
}
return t;
}
try {
let e = typeof window < "u" ? window : null;
- e && !e[hn] && (e[hn] = { initialized: !0 }, e.addEventListener?.("storage", (e) => {
+ e && !e[mn] && (e[mn] = { initialized: !0 }, e.addEventListener?.("storage", (e) => {
try {
- e?.key === "mjrSettings" && (En(), Dn(), K(), Ze());
+ e?.key === "mjrSettings" && (Tn(), En(), q(), Ze());
} catch (e) {
console.debug?.(e);
}
}), e.addEventListener?.("mjr-settings-changed", () => {
- En(), Dn(), K(), Ze();
+ Tn(), En(), q(), Ze();
}));
} catch (e) {
console.debug?.(e);
}
-var An = () => {
- let e = U.get(H);
+var kn = () => {
+ let e = W.get(U);
if (e !== void 0) return e;
let t = Date.now();
try {
let e = localStorage?.getItem?.(f);
- if (!e) return U.set(H, !1, { at: t }), !1;
+ if (!e) return W.set(U, !1, { at: t }), !1;
let n = !!JSON.parse(e)?.observability?.enabled;
- return U.set(H, n, { at: t }), n;
+ return W.set(U, n, { at: t }), n;
} catch {
- return U.set(H, !1, { at: t }), !1;
+ return W.set(U, !1, { at: t }), !1;
}
-}, jn = () => {
- let e = W.get(H);
+}, An = () => {
+ let e = G.get(U);
if (e !== void 0) return e;
let t = Date.now();
try {
let e = localStorage?.getItem?.(f);
- if (!e) return W.set(H, !0, { at: t }), !0;
- let n = JSON.parse(e)?.ratingTagsSync?.enabled, r = n == null || wn(n, !0);
- return W.set(H, r, { at: t }), r;
+ if (!e) return G.set(U, !0, { at: t }), !0;
+ let n = JSON.parse(e)?.ratingTagsSync?.enabled, r = n == null || Cn(n, !0);
+ return G.set(U, r, { at: t }), r;
} catch {
- return W.set(H, !0, { at: t }), !0;
+ return G.set(U, !0, { at: t }), !0;
}
-}, q = fe({
- readObsEnabled: An,
+}, jn = fe({
+ readObsEnabled: kn,
readAuthToken: z,
ensureWriteAuthToken: Xe,
normalizeWriteAuthFailure: Je
-}), Mn = q.fetchAPI;
+}), Mn = jn.fetchAPI;
async function J(e, t = {}) {
- return q.get(e, t);
+ return jn.get(e, t);
}
async function Y(e, t, n = {}) {
- return q.post(e, t, n);
+ return jn.post(e, t, n);
}
async function Nn(n, r, i = {}) {
- let a = jn(), o = n && typeof n == "object" ? n : null, s = o ? o.id : n, c = t(s), l = { rating: Math.max(0, Math.min(5, Number(r) || 0)) };
+ let a = An(), o = n && typeof n == "object" ? n : null, s = o ? o.id : n, c = t(s), l = { rating: Math.max(0, Math.min(5, Number(r) || 0)) };
return c ? l.asset_id = c : o && (l.filepath = o.filepath || o.path || o?.file_info?.filepath || "", l.type = o.type || "output", l.root_id = e(o)), Mn("/mjr/am/asset/rating", {
...i,
method: "POST",
@@ -1524,7 +1528,7 @@ async function Nn(n, r, i = {}) {
});
}
async function Pn(n, r, i = {}) {
- let a = jn(), o = n && typeof n == "object" ? n : null, s = o ? o.id : n, c = t(s), u = String(o?.kind || o?.type || "").trim().toLowerCase() === "workflow", d = String(o?.filepath || o?.path || o?.file_info?.filepath || "").trim(), f = { tags: Array.isArray(r) ? r : [] };
+ let a = An(), o = n && typeof n == "object" ? n : null, s = o ? o.id : n, c = t(s), u = String(o?.kind || o?.type || "").trim().toLowerCase() === "workflow", d = String(o?.filepath || o?.path || o?.file_info?.filepath || "").trim(), f = { tags: Array.isArray(r) ? r : [] };
u && d ? f.filepath = d : c ? f.asset_id = c : o && (f.filepath = o.filepath || o.path || o?.file_info?.filepath || "", f.type = o.type || "output", f.root_id = e(o));
let p = await Mn(u && d ? l.WORKFLOWS_TAGS : "/mjr/am/asset/tags", {
...i,
@@ -1535,10 +1539,10 @@ async function Pn(n, r, i = {}) {
},
body: JSON.stringify(f)
});
- return p?.ok && K(), p;
+ return p?.ok && q(), p;
}
async function Fn() {
- let e = G.get(xn);
+ let e = K.get(bn);
if (Array.isArray(e)) return {
ok: !0,
data: e,
@@ -1548,8 +1552,8 @@ async function Fn() {
};
let t = await J("/mjr/am/tags");
if (t?.ok && Array.isArray(t.data)) {
- let e = kn(t.data);
- return G.set(xn, e), {
+ let e = On(t.data);
+ return K.set(bn, e), {
...t,
data: e
};
@@ -1580,7 +1584,7 @@ async function Rn(e, t = {}) {
let n = Array.isArray(e) ? e : [], r = [];
for (let e of n) {
let t = Number(e);
- if (Number.isFinite(t) && (r.push(Math.trunc(t)), r.length >= _n)) break;
+ if (Number.isFinite(t) && (r.push(Math.trunc(t)), r.length >= gn)) break;
}
return r.length ? Y("/mjr/am/assets/batch", { asset_ids: r }, t) : {
ok: !0,
@@ -1858,4 +1862,4 @@ function Cr(e) {
function wr() {
return gr(cr, Z);
}
-export { _t as $, N as $t, Un as A, et as At, jt as B, It as Bt, Zn as C, ot as Ct, qn as D, xt as Dt, Qn as E, wt as Et, Pn as F, mt as Ft, Vt as G, dn as Gt, Jt as H, Rt as Ht, Bn as I, nt as It, Kt as J, an as Jt, lt as K, sn as Kt, tn as L, Pt as Lt, Yn as M, Qe as Mt, $n as N, ft as Nt, Gn as O, vt as Ot, Nn as P, Ot as Pt, bt as Q, Ue as Qt, kt as R, Et as Rt, zn as S, ut as St, Vn as T, ct as Tt, Yt as U, un as Ut, $t as V, rt as Vt, en as W, on as Wt, st as X, pn as Xt, it as Y, ln as Yt, Ct as Z, We as Zt, Rn as _, nn as _t, vr as a, De as an, Dt as at, tr as b, Wt as bt, ar as c, f as cn, tt as ct, rr as d, Tt as dt, je as en, ht as et, Kn as f, fn as ft, In as g, At as gt, J as h, qt as ht, br as i, Te as in, Bt as it, Jn as j, St as jt, Y as k, gt as kt, sr as l, Lt as lt, Wn as m, Ht as mt, Sr as n, Oe as nn, yt as nt, ir as o, E as on, pt as ot, Hn as p, Qt as pt, rn as q, cn as qt, wr as r, Ee as rn, dt as rt, or as s, p as sn, zt as st, Cr as t, ge as tn, $e as tt, nr as u, Ft as ut, Fn as v, Zt as vt, Xn as w, at as wt, Ln as x, Ut as xt, er as y, Nt as yt, Mt as z, Gt as zt };
+export { _t as $, N as $t, Un as A, et as At, jt as B, It as Bt, Zn as C, ot as Ct, qn as D, xt as Dt, Qn as E, wt as Et, Pn as F, mt as Ft, Vt as G, un as Gt, Jt as H, Rt as Ht, Bn as I, nt as It, Kt as J, rn as Jt, lt as K, on as Kt, en as L, Pt as Lt, Yn as M, Qe as Mt, $n as N, ft as Nt, Gn as O, vt as Ot, Nn as P, Ot as Pt, bt as Q, Ue as Qt, kt as R, Et as Rt, zn as S, ut as St, Vn as T, ct as Tt, Yt as U, ln as Ut, Qt as V, rt as Vt, $t as W, an as Wt, st as X, fn as Xt, it as Y, cn as Yt, Ct as Z, We as Zt, Rn as _, tn as _t, vr as a, De as an, Dt as at, tr as b, Wt as bt, ar as c, f as cn, tt as ct, rr as d, Tt as dt, je as en, ht as et, Kn as f, dn as ft, In as g, At as gt, J as h, qt as ht, br as i, Te as in, Bt as it, Jn as j, St as jt, Y as k, gt as kt, sr as l, Lt as lt, Wn as m, Ht as mt, Sr as n, Oe as nn, yt as nt, ir as o, E as on, pt as ot, Hn as p, Zt as pt, nn as q, sn as qt, wr as r, Ee as rn, dt as rt, or as s, p as sn, zt as st, Cr as t, ge as tn, $e as tt, nr as u, Ft as ut, Fn as v, Xt as vt, Xn as w, at as wt, Ln as x, Ut as xt, er as y, Nt as yt, Mt as z, Gt as zt };
diff --git a/dist/entry.js b/dist/entry.js
index 768afc88..e754e7a3 100644
--- a/dist/entry.js
+++ b/dist/entry.js
@@ -1,13 +1,13 @@
-import { $t as e, A as t, B as n, Bt as r, C as i, D as a, E as o, Et as s, G as c, H as l, J as u, Jt as d, L as f, Lt as p, M as m, N as h, O as g, P as _, Rt as v, S as y, U as b, Ut as x, V as S, Vt as C, W as w, Wt as T, Xt as E, Yt as D, _ as O, _t as k, an as A, b as j, bt as M, c as N, d as P, en as ee, f as te, ft as F, g as I, gt as ne, h as re, ht as ie, in as ae, j as oe, jt as se, k as L, l as ce, m as le, mt as ue, nn as de, o as fe, on as pe, pt as me, q as he, qt as ge, rn as _e, s as ve, st as ye, tn as be, u as xe, ut as Se, vt as Ce, w as we, xt as Te, y as Ee, yt as De, z as Oe, zt as ke } from "./chunks/viewerRuntimeHosts-Ctr8wab-.js";
-import { $ as Ae, A as je, Ct as Me, F as Ne, G as Pe, H as Fe, K as Ie, L as Le, Q as Re, St as ze, U as Be, W as Ve, X as He, Z as Ue, _ as We, at as Ge, bt as Ke, ct as qe, dt as Je, et as Ye, ft as Xe, g as Ze, it as Qe, j as $e, lt as et, m as R, n as z, o as B, ot as tt, pt as nt, q as rt, r as V, rt as it, st as at, t as ot, tt as st, ut as ct, xt as lt, yt as ut } from "./chunks/events-tsQFsZrH.js";
+import { $t as e, A as t, B as n, Bt as r, C as i, D as a, E as o, Et as s, G as c, H as l, J as u, Jt as d, L as f, Lt as p, M as m, N as h, O as g, P as _, Rt as v, S as y, U as b, Ut as x, V as S, Vt as C, W as w, Wt as T, Xt as E, Yt as D, _ as O, _t as k, an as A, b as j, bt as M, c as N, d as P, en as ee, f as te, ft as F, g as I, gt as ne, h as re, ht as ie, in as ae, j as oe, jt as se, k as L, l as ce, m as le, mt as ue, nn as de, o as fe, on as pe, pt as me, q as he, qt as ge, rn as _e, s as ve, st as ye, tn as be, u as xe, ut as Se, vt as Ce, w as we, xt as Te, y as Ee, yt as De, z as Oe, zt as ke } from "./chunks/viewerRuntimeHosts-BVuaPEIm.js";
+import { $ as Ae, A as je, Ct as Me, F as Ne, G as Pe, H as Fe, K as Ie, L as Le, Q as Re, St as ze, U as Be, W as Ve, X as He, Z as Ue, _ as We, at as Ge, bt as Ke, ct as qe, dt as Je, et as Ye, ft as Xe, g as Ze, it as Qe, j as $e, lt as et, m as R, n as z, o as B, ot as tt, pt as nt, q as rt, r as V, rt as it, st as at, t as ot, tt as st, ut as ct, xt as lt, yt as ut } from "./chunks/events-Dsaaq7CE.js";
import { a as dt, i as ft, n as pt, t as mt } from "./chunks/graphTraversal-DTdQWkn5.js";
-import { A as ht, B as gt, C as _t, D as vt, E as yt, F as bt, G as xt, H as St, I as Ct, J as wt, L as Tt, M as Et, N as Dt, O as Ot, P as kt, R as At, S as jt, T as Mt, U as Nt, V as Pt, W as Ft, Y as It, _ as Lt, b as Rt, d as zt, g as Bt, j as Vt, k as Ht, q as Ut, v as Wt, x as Gt, y as Kt, z as qt } from "./chunks/Viewer-DHesfEdb.js";
-import { $ as Jt, A as Yt, B as Xt, C as Zt, D as Qt, E as $t, F as en, G as tn, H as nn, I as rn, J as an, K as on, L as sn, M as cn, N as ln, O as un, P as dn, Q as fn, R as pn, T as mn, U as hn, V as gn, W as _n, X as vn, Y as yn, Z as bn, _ as xn, a as Sn, c as Cn, d as wn, et as Tn, f as En, g as Dn, h as On, i as kn, j as An, k as jn, l as Mn, m as Nn, n as Pn, o as Fn, p as In, q as Ln, s as Rn, t as zn, u as Bn, w as Vn, z as Hn } from "./chunks/SidebarWorkflowSection-CZBV2aho.js";
-import { _ as Un, i as Wn, n as Gn, p as Kn, t as qn } from "./chunks/openMajoorSettings-IdB9HDLb.js";
-import { a as Jn, c as Yn, l as Xn, o as Zn, s as Qn, u as $n } from "./chunks/floatingViewerManager-DYNfChQt.js";
+import { A as ht, B as gt, C as _t, D as vt, E as yt, F as bt, G as xt, H as St, I as Ct, J as wt, L as Tt, M as Et, N as Dt, O as Ot, P as kt, R as At, S as jt, T as Mt, U as Nt, V as Pt, W as Ft, Y as It, _ as Lt, b as Rt, d as zt, g as Bt, j as Vt, k as Ht, q as Ut, v as Wt, x as Gt, y as Kt, z as qt } from "./chunks/Viewer-CVh8T5Ff.js";
+import { $ as Jt, A as Yt, B as Xt, C as Zt, D as Qt, E as $t, F as en, G as tn, H as nn, I as rn, J as an, K as on, L as sn, M as cn, N as ln, O as un, P as dn, Q as fn, R as pn, T as mn, U as hn, V as gn, W as _n, X as vn, Y as yn, Z as bn, _ as xn, a as Sn, c as Cn, d as wn, et as Tn, f as En, g as Dn, h as On, i as kn, j as An, k as jn, l as Mn, m as Nn, n as Pn, o as Fn, p as In, q as Ln, s as Rn, t as zn, u as Bn, w as Vn, z as Hn } from "./chunks/SidebarWorkflowSection-Il8h_Lxt.js";
+import { _ as Un, i as Wn, n as Gn, p as Kn, t as qn } from "./chunks/openMajoorSettings-CJdCbICp.js";
+import { a as Jn, c as Yn, l as Xn, o as Zn, s as Qn, u as $n } from "./chunks/floatingViewerManager-DQlULmZ-.js";
import { A as er, B as tr, C as H, D as nr, E as U, G as rr, H as ir, I as ar, J as W, K as or, L as sr, M as cr, N as lr, O as G, P as ur, R as dr, S as fr, T as K, U as pr, V as q, W as mr, Y as hr, at as gr, b as _r, ct as vr, dt as yr, ft as J, it as br, j as Y, k as X, lt as Z, nt as xr, q as Sr, rt as Q, tt as Cr, ut as wr, v as Tr, w as Er, x as Dr, y as Or, z as kr } from "./chunks/mjr-primevue-BRqtdXzb.js";
import { n as Ar, r as jr } from "./chunks/mjr-vue-vendor-mHY_eIVE.js";
-import { t as Mr } from "./chunks/TagsEditor-CP5qPOcc.js";
+import { t as Mr } from "./chunks/TagsEditor-DIWU3BJ3.js";
import { app as Nr } from "../../scripts/app.js";
function Pr(e = null) {
return null;
@@ -750,8 +750,93 @@ function Di(e) {
}
};
}
+// ui/features/grid/bulkDelete.ts
+var Oi = 3;
+async function ki(e, { chunkSize: t = 500, onProgress: n = null } = {}) {
+ let r = Array.isArray(e) ? e.filter((e) => e && typeof e == "object") : [], i = [], a = [], o = /* @__PURE__ */ new Set();
+ for (let e of r) {
+ let t = ze(e?.id);
+ t && !o.has(t) ? (o.add(t), i.push({
+ asset: e,
+ id: t
+ })) : t || a.push(e);
+ }
+ let s = [], c = 0, u = 0;
+ for (let e of a) try {
+ (await l(e))?.ok ? u += 1 : c += 1;
+ } catch {
+ c += 1;
+ }
+ let d = i.length;
+ if (!d) return {
+ deletedIds: s,
+ failedCount: c,
+ deletedByFilepath: u
+ };
+ let f = Math.max(1, Math.floor(Number(t) || 500)), p = 0, m = (e, t) => {
+ if (e?.ok) {
+ let n = e.data || {};
+ if (Array.isArray(n?.deleted_ids)) {
+ for (let e of n.deleted_ids) s.push(String(e));
+ c += Math.max(0, t.length - n.deleted_ids.length);
+ } else {
+ let e = Array.isArray(n?.failed_ids) ? n.failed_ids.map((e) => String(e)) : [], r = new Set(e);
+ for (let e of t) r.has(e) ? c += 1 : s.push(e);
+ }
+ return "ok";
+ }
+ return String(e?.code || "") === "RATE_LIMITED" ? "rate-limited" : "rejected";
+ }, h = async (e) => {
+ for (let t of e) try {
+ (await l(t))?.ok ? s.push(t) : c += 1;
+ } catch {
+ c += 1;
+ }
+ }, g = (e, t) => {
+ let n = e?.meta || {}, r = new Set([...Array.isArray(n?.missing_ids) ? n.missing_ids : [], ...Array.isArray(n?.rejected_ids) ? n.rejected_ids : []].map((e) => String(e)));
+ for (let e of t) if (r.has(e)) return r;
+ return null;
+ };
+ for (let e = 0; e < d; e += f) {
+ let t = i.slice(e, e + f).map((e) => e.id), r = t;
+ try {
+ for (let e = 0; e < Oi && r.length; e++) {
+ let e = await b(r), t = m(e, r);
+ if (t === "ok") r = [];
+ else if (t === "rate-limited") c += r.length, r = [];
+ else {
+ let t = g(e, r);
+ if (!t) await h(r), r = [];
+ else {
+ for (let e of r) t.has(e) && (c += 1);
+ r = r.filter((e) => !t.has(e));
+ }
+ }
+ }
+ r.length && await h(r);
+ } catch {
+ c += r.length;
+ }
+ p += t.length;
+ try {
+ n?.({
+ done: p,
+ total: d,
+ deleted: s.length,
+ failed: c
+ });
+ } catch (e) {
+ console.debug?.(e);
+ }
+ }
+ return {
+ deletedIds: s,
+ failedCount: c,
+ deletedByFilepath: u
+ };
+}
// ui/features/grid/GridKeyboard.ts
-var Oi = {
+var Ai = {
OPEN_VIEWER: {
key: "Enter",
description: "Open selected in viewer"
@@ -867,29 +952,29 @@ var Oi = {
key: "ArrowRight",
description: "Navigate right"
}
-}, ki = null;
-function Ai() {
- return ki ||= import("./chunks/viewerOpenRequest-Bw0Fm-S5.js").then((e) => e.n), ki;
+}, ji = null;
+function Mi() {
+ return ji ||= import("./chunks/viewerOpenRequest-SXvGdj01.js").then((e) => e.n), ji;
}
-function ji(e) {
+function Ni(e) {
if (!e) return "";
let t = [];
e.ctrl && t.push("Ctrl"), e.shift && t.push("Shift"), e.alt && t.push("Alt");
let n = e.key;
return n === " " && (n = "Space"), n === "Delete" && (n = "Del"), n === "ArrowUp" && (n = "<-‘"), n === "ArrowDown" && (n = "<-“"), n === "ArrowLeft" && (n = "<-"), n === "ArrowRight" && (n = "->"), t.push(n.length === 1 ? n.toUpperCase() : n), t.join("+");
}
-function Mi(e, t) {
+function Pi(e, t) {
if (!t || !e) return !1;
let n = e.key.toLowerCase() === t.key.toLowerCase() || e.key === t.key, r = !!t.ctrl === (e.ctrlKey || e.metaKey), i = !!t.shift === e.shiftKey, a = !!t.alt === e.altKey;
return n && r && i && a;
}
-var Ni = /* @__PURE__ */ new Map();
-function Pi(t, n, r) {
+var Fi = /* @__PURE__ */ new Map();
+function Ii(t, n, r) {
let i = t?.id;
if (!i) return;
let a = String(i);
try {
- let e = Ni.get(a);
+ let e = Fi.get(a);
e && clearTimeout(e);
} catch (e) {
console.debug?.(e);
@@ -901,7 +986,7 @@ function Pi(t, n, r) {
}
let o = setTimeout(async () => {
try {
- Ni.delete(a);
+ Fi.delete(a);
let t = await _(i, n);
if (!t?.ok) {
e(t?.error || R("toast.ratingUpdateFailed"), "error");
@@ -915,21 +1000,21 @@ function Pi(t, n, r) {
console.error("[GridKeyboard] Rating update failed:", t), e(R("toast.ratingUpdateError"), "error");
}
}, 350);
- Ni.set(a, o);
+ Fi.set(a, o);
}
-function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r = () => [], getActiveAsset: i = () => null, onOpenDetails: a = () => {}, onOpenTagsEditor: o = () => {}, onSelectionChanged: s = () => {}, onAssetChanged: c = () => {} } = {}) {
+function Li({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r = () => [], getActiveAsset: i = () => null, onOpenDetails: a = () => {}, onOpenTagsEditor: o = () => {}, onSelectionChanged: s = () => {}, onAssetChanged: c = () => {} } = {}) {
if (!t) return {
bind: () => {},
unbind: () => {},
dispose: () => {}
};
- let u = null, d = null, f = null, p = null, m = !1, h = !1, g = ({ assets: e = [], index: t = 0, mode: n = "" } = {}) => {
- Ai().then((r) => r.requestViewerOpen({
+ let l = null, u = null, d = null, f = null, p = !1, m = !1, h = ({ assets: e = [], index: t = 0, mode: n = "" } = {}) => {
+ Mi().then((r) => r.requestViewerOpen({
assets: e,
index: t,
mode: n
})).catch((e) => console.debug?.(e));
- }, _ = () => {
+ }, g = () => {
try {
$n(t);
} catch (e) {
@@ -940,13 +1025,13 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
} catch (e) {
console.debug?.(e);
}
- }, v = () => {
+ }, _ = () => {
try {
return r() || [];
} catch {
return [];
}
- }, y = () => {
+ }, v = () => {
try {
if (typeof t?._mjrGetRenderedCards == "function") {
let e = t._mjrGetRenderedCards();
@@ -960,17 +1045,17 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
} catch {
return [];
}
- }, b = () => {
+ }, y = () => {
try {
- return i() || v()[0] || null;
+ return i() || _()[0] || null;
} catch {
return null;
}
- }, x = (t) => {
+ }, b = (t) => {
if (!t?.filepath) return !1;
let n = qe(t.filepath), r = document.createElement("a");
return r.href = n, r.download = t.filename || "download", document.body.appendChild(r), r.click(), document.body.removeChild(r), e(R("toast.downloadingFile", "Downloading {filename}...", { filename: t.filename }), "info", 3e3), !0;
- }, S = () => {
+ }, x = () => {
try {
if (Array.isArray(n?.()?.assets) && n().assets.length) return n().assets;
} catch (e) {
@@ -985,13 +1070,13 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
console.debug?.(e);
}
try {
- return y().map((e) => e?._mjrAsset).filter(Boolean);
+ return v().map((e) => e?._mjrAsset).filter(Boolean);
} catch {
return [];
}
- }, C = () => {
+ }, S = () => {
try {
- let e = y();
+ let e = v();
if (e.length >= 2) {
let t = Math.round(e[0].getBoundingClientRect().top), n = e.filter((e) => {
try {
@@ -1010,14 +1095,14 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
console.debug?.(e);
}
return 1;
- }, w = (e, n) => {
+ }, C = (e, n) => {
let r = Array.isArray(e) ? e.map(String).filter(Boolean) : [], i = String(n || r[0] || "");
try {
typeof t?._mjrSetSelection == "function" ? t._mjrSetSelection(r, i) : (t.dataset.mjrSelectedAssetIds = JSON.stringify(r), t.dataset.mjrSelectedAssetId = i);
} catch (e) {
console.debug?.(e);
}
- }, T = (e) => {
+ }, w = (e) => {
let n = String(e || "").trim();
if (n) {
try {
@@ -1038,31 +1123,31 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
console.debug?.(e);
}
}
- }, E = (e) => {
+ }, T = (e) => {
let n = String(e.key || "");
if (n !== "ArrowLeft" && n !== "ArrowRight" && n !== "ArrowUp" && n !== "ArrowDown" && n !== "Home" && n !== "End" || e.ctrlKey || e.altKey || e.metaKey) return !1;
- let r = S();
+ let r = x();
if (!Array.isArray(r) || r.length === 0) return !1;
- let i = b(), a = String(i?.id || t?.dataset?.mjrSelectedAssetId || ""), o = r.findIndex((e) => String(e?.id || "") === a), c = o >= 0;
+ let i = y(), a = String(i?.id || t?.dataset?.mjrSelectedAssetId || ""), o = r.findIndex((e) => String(e?.id || "") === a), c = o >= 0;
o < 0 && (o = 0);
- let l = Math.max(1, C()), u = o;
+ let l = Math.max(1, S()), u = o;
if (n === "ArrowLeft" ? --u : n === "ArrowRight" ? u += 1 : n === "ArrowUp" ? u -= l : n === "ArrowDown" ? u += l : n === "Home" ? u = 0 : n === "End" && (u = r.length - 1), u = Math.max(0, Math.min(r.length - 1, u)), c && u === o && n !== "Home" && n !== "End") return !1;
let d = String(r[u]?.id || "");
if (!d) return !1;
- if (_(), e.shiftKey) {
+ if (g(), e.shiftKey) {
let e = String(t?._mjrSelectionAnchorId || "");
e ||= a || d;
let n = r.findIndex((t) => String(t?.id || "") === e), i = n >= 0 ? n : o, s = Math.min(i, u), c = Math.max(i, u), l = r.slice(s, c + 1).map((e) => String(e?.id || "")).filter(Boolean);
- w(l, d);
- } else t._mjrSelectionAnchorId = d, w([d], d);
- T(d);
+ C(l, d);
+ } else t._mjrSelectionAnchorId = d, C([d], d);
+ w(d);
try {
s?.();
} catch (e) {
console.debug?.(e);
}
return !0;
- }, D = async (r) => {
+ }, E = async (r) => {
let i = r.target;
if (i && (i.tagName === "INPUT" || i.tagName === "TEXTAREA" || i.isContentEditable) || ve() || fe().scope === "viewer") return;
if (document.activeElement !== document.body) {
@@ -1072,65 +1157,65 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
let e = Xn();
if (e && e !== t) return;
}
- let u = () => {
+ let l = () => {
r.preventDefault(), r.stopPropagation();
};
try {
- if (E(r)) {
- u();
+ if (T(r)) {
+ l();
return;
}
} catch (e) {
console.debug?.(e);
}
- let d = v(), f = b(), p = n();
- if (Mi(r, Oi.DOWNLOAD) && f?.filepath) {
- u(), h = !0;
+ let u = _(), d = y(), f = n();
+ if (Pi(r, Ai.DOWNLOAD) && d?.filepath) {
+ l(), m = !0;
return;
}
- let m = !!fe().ratingHotkeysActive;
+ let p = !!fe().ratingHotkeysActive;
if (!r.ctrlKey && !r.altKey && !r.metaKey && !r.shiftKey) {
- if (!m && Mi(r, Oi.RATING_1) && f?.id) {
- u(), Pi(f, 1, c);
+ if (!p && Pi(r, Ai.RATING_1) && d?.id) {
+ l(), Ii(d, 1, c);
return;
}
- if (!m && Mi(r, Oi.RATING_2) && f?.id) {
- u(), Pi(f, 2, c);
+ if (!p && Pi(r, Ai.RATING_2) && d?.id) {
+ l(), Ii(d, 2, c);
return;
}
- if (!m && Mi(r, Oi.RATING_3) && f?.id) {
- u(), Pi(f, 3, c);
+ if (!p && Pi(r, Ai.RATING_3) && d?.id) {
+ l(), Ii(d, 3, c);
return;
}
- if (!m && Mi(r, Oi.RATING_4) && f?.id) {
- u(), Pi(f, 4, c);
+ if (!p && Pi(r, Ai.RATING_4) && d?.id) {
+ l(), Ii(d, 4, c);
return;
}
- if (!m && Mi(r, Oi.RATING_5) && f?.id) {
- u(), Pi(f, 5, c);
+ if (!p && Pi(r, Ai.RATING_5) && d?.id) {
+ l(), Ii(d, 5, c);
return;
}
- if (!m && Mi(r, Oi.RATING_RESET) && f?.id) {
- u(), Pi(f, 0, c);
+ if (!p && Pi(r, Ai.RATING_RESET) && d?.id) {
+ l(), Ii(d, 0, c);
return;
}
}
- if ((Mi(r, Oi.OPEN_VIEWER) || Mi(r, Oi.OPEN_VIEWER_ALT)) && d.length > 0) {
- u();
+ if ((Pi(r, Ai.OPEN_VIEWER) || Pi(r, Ai.OPEN_VIEWER_ALT)) && u.length > 0) {
+ l();
try {
- if (d.length >= 2 && d.length <= 4) g({
- assets: d,
+ if (u.length >= 2 && u.length <= 4) h({
+ assets: u,
index: 0
});
else {
let e = [];
- if (Array.isArray(p?.assets) && p.assets.length) e = p.assets;
+ if (Array.isArray(f?.assets) && f.assets.length) e = f.assets;
else if (typeof t?._mjrGetAssets == "function") {
let n = t._mjrGetAssets();
Array.isArray(n) && n.length && (e = n);
- } else e = y().map((e) => e._mjrAsset).filter(Boolean);
- let n = e.findIndex((e) => String(e?.id) === String(f?.id));
- g({
+ } else e = v().map((e) => e._mjrAsset).filter(Boolean);
+ let n = e.findIndex((e) => String(e?.id) === String(d?.id));
+ h({
assets: e,
index: Math.max(0, n)
});
@@ -1138,45 +1223,45 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
} catch (e) {
console.error("[GridKeyboard] Open viewer failed:", e);
}
- } else if (Mi(r, Oi.METADATA_PANEL) && f) u(), a(f);
- else if (Mi(r, Oi.COMPARE_AB) && d.length === 2) {
- u();
+ } else if (Pi(r, Ai.METADATA_PANEL) && d) l(), a(d);
+ else if (Pi(r, Ai.COMPARE_AB) && u.length === 2) {
+ l();
try {
- g({
- assets: d,
+ h({
+ assets: u,
index: 0,
mode: "ab"
});
} catch (e) {
console.debug?.(e);
}
- } else if (Mi(r, Oi.SIDE_BY_SIDE) && d.length >= 2 && d.length <= 4) {
- u();
+ } else if (Pi(r, Ai.SIDE_BY_SIDE) && u.length >= 2 && u.length <= 4) {
+ l();
try {
- g({
- assets: d,
+ h({
+ assets: u,
index: 0,
mode: "sidebyside"
});
} catch (e) {
console.debug?.(e);
}
- } else if (Mi(r, Oi.EDIT_TAGS) && f?.id) u(), o(f);
- else if (Mi(r, Oi.ADD_TO_COLLECTION) && (d.length > 0 || f)) {
- u();
- let e = d.length > 0 ? d : [f], n = t.getBoundingClientRect();
+ } else if (Pi(r, Ai.EDIT_TAGS) && d?.id) l(), o(d);
+ else if (Pi(r, Ai.ADD_TO_COLLECTION) && (u.length > 0 || d)) {
+ l();
+ let e = u.length > 0 ? u : [d], n = t.getBoundingClientRect();
await Rt({
x: n.left + n.width / 2,
y: n.top + n.height / 2,
assets: e
});
} else {
- if (Mi(r, Oi.REMOVE_FROM_COLLECTION)) {
- let t = p?.collectionId;
- if (t && (d.length > 0 || f)) {
- u();
+ if (Pi(r, Ai.REMOVE_FROM_COLLECTION)) {
+ let t = f?.collectionId;
+ if (t && (u.length > 0 || d)) {
+ l();
try {
- let n = (d.length > 0 ? d : [f]).map((e) => String(e?.filepath || e?.path || e?.file_info?.filepath || "").trim()).filter(Boolean);
+ let n = (u.length > 0 ? u : [d]).map((e) => String(e?.filepath || e?.path || e?.file_info?.filepath || "").trim()).filter(Boolean);
if (!n.length) {
e(R("toast.removeFromCollectionFailed", "No valid files to remove from collection"), "warning");
return;
@@ -1198,20 +1283,20 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
return;
}
}
- if (Mi(r, Oi.COPY_PATH) && f?.filepath) {
- u();
+ if (Pi(r, Ai.COPY_PATH) && d?.filepath) {
+ l();
try {
- await navigator.clipboard.writeText(f.filepath), e(R("toast.pathCopied"), "success", 2e3);
+ await navigator.clipboard.writeText(d.filepath), e(R("toast.pathCopied"), "success", 2e3);
} catch {
e(R("toast.pathCopyFailed"), "error");
}
- } else if (Mi(r, Oi.OPEN_IN_FOLDER) && f?.id) {
- u();
- let t = await ne(f.id);
+ } else if (Pi(r, Ai.OPEN_IN_FOLDER) && d?.id) {
+ l();
+ let t = await ne(d.id);
t?.ok ? e(R("toast.openedInFolder"), "info", 2e3) : e(t?.error || R("toast.openFolderFailed"), "error");
- } else if (Mi(r, Oi.RENAME) && f?.id) {
- u();
- let t = f.filename || "", n = await wt(R("dialog.rename.title", "Rename file"), t), r = vt(n, t);
+ } else if (Pi(r, Ai.RENAME) && d?.id) {
+ l();
+ let t = d.filename || "", n = await wt(R("dialog.rename.title", "Rename file"), t), r = vt(n, t);
if (r && r !== t) {
let t = Ot(r);
if (!t.valid) {
@@ -1219,10 +1304,10 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
return;
}
try {
- let t = await Ce(f, r);
+ let t = await Ce(d, r);
if (t?.ok) {
let n = t?.data?.asset;
- n && typeof n == "object" ? Object.assign(f, n) : (f.filename = r, f.filepath = f.filepath?.replace(/[^\\/]+$/, r), f.path &&= String(f.path).replace(/[^\\/]+$/, r), f.file_info && typeof f.file_info == "object" && (f.file_info.filename = r, f.file_info.filepath && (f.file_info.filepath = String(f.file_info.filepath).replace(/[^\\/]+$/, r)), f.file_info.path && (f.file_info.path = String(f.file_info.path).replace(/[^\\/]+$/, r)))), e(R("toast.fileRenamedSuccess"), "success");
+ n && typeof n == "object" ? Object.assign(d, n) : (d.filename = r, d.filepath = d.filepath?.replace(/[^\\/]+$/, r), d.path &&= String(d.path).replace(/[^\\/]+$/, r), d.file_info && typeof d.file_info == "object" && (d.file_info.filename = r, d.file_info.filepath && (d.file_info.filepath = String(d.file_info.filepath).replace(/[^\\/]+$/, r)), d.file_info.path && (d.file_info.path = String(d.file_info.path).replace(/[^\\/]+$/, r)))), e(R("toast.fileRenamedSuccess"), "success");
try {
window.dispatchEvent(new CustomEvent("mjr:reload-grid", { detail: { reason: "rename-keyboard" } }));
} catch (e) {
@@ -1234,39 +1319,39 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
e(R("toast.errorRenaming", "Error renaming file: {error}", { error: t?.message || String(t || "") }), "error");
}
}
- } else if ((Mi(r, Oi.DELETE) || Mi(r, Oi.DELETE_ALT)) && (f?.id || d.length > 0)) {
- u();
- let n = d.length > 0 ? d : [f], r = 0, i = 0, a = [];
- for (let e of n) if (e?.id) try {
- (await l(e.id))?.ok ? (r++, a.push(String(e.id))) : i++;
- } catch {
- i++;
- }
- if (a.length) try {
+ } else if ((Pi(r, Ai.DELETE) || Pi(r, Ai.DELETE_ALT)) && (d?.id || u.length > 0)) {
+ l();
+ let { deletedIds: n, failedCount: r } = await ki((u.length > 0 ? u : [d]).filter((e) => e?.id), { onProgress: ({ done: t, total: n }) => {
+ t < n && e(R("toast.filesDeletingProgress", "Deleting files... ({done}/{total})", {
+ done: t,
+ total: n
+ }), "info", 1600);
+ } }), i = n.length, a = r;
+ if (n.length) try {
let e = t?._mjrRemoveAssets;
- if (typeof e == "function") e(a);
- else for (let e of a) t.querySelector(`[data-mjr-asset-id="${e}"]`)?.remove?.();
+ if (typeof e == "function") e(n);
+ else for (let e of n) t.querySelector(`[data-mjr-asset-id="${e}"]`)?.remove?.();
} catch (e) {
console.debug?.(e);
}
- i === 0 ? e(R("toast.filesDeletedShort", "{n} files deleted", { n: r }), "success") : e(R("toast.filesDeletedShortPartial", "{success} deleted, {failed} failed", {
- success: r,
- failed: i
+ a === 0 ? e(R("toast.filesDeletedShort", "{n} files deleted", { n: i }), "success") : e(R("toast.filesDeletedShortPartial", "{success} deleted, {failed} failed", {
+ success: i,
+ failed: a
}), "warning");
try {
if (typeof t?._mjrSetSelection == "function") {
- let e = d.filter((e) => !a.includes(String(e?.id || ""))).map((e) => String(e?.id || "")).filter(Boolean);
+ let e = u.filter((e) => !n.includes(String(e?.id || ""))).map((e) => String(e?.id || "")).filter(Boolean);
t._mjrSetSelection(e, e[0] || "");
}
} catch (e) {
console.debug?.(e);
}
s();
- } else if (Mi(r, Oi.SELECT_ALL)) {
- u();
+ } else if (Pi(r, Ai.SELECT_ALL)) {
+ l();
let e = [];
try {
- if (Array.isArray(p?.assets) && p.assets.length) e = p.assets.map((e) => String(e?.id || "")).filter(Boolean);
+ if (Array.isArray(f?.assets) && f.assets.length) e = f.assets.map((e) => String(e?.id || "")).filter(Boolean);
else if (typeof t?._mjrGetAssets == "function") {
let n = t._mjrGetAssets();
Array.isArray(n) && (e = n.map((e) => String(e?.id || "")).filter(Boolean));
@@ -1275,22 +1360,22 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
console.debug?.(e);
}
if (!e.length) try {
- e = y().map((e) => String(e?._mjrAsset?.id || "")).filter(Boolean);
+ e = v().map((e) => String(e?._mjrAsset?.id || "")).filter(Boolean);
} catch (e) {
console.debug?.(e);
}
try {
- typeof t?._mjrSetSelection == "function" ? t._mjrSetSelection(e, e[0] || "") : (y().forEach((e) => {
+ typeof t?._mjrSetSelection == "function" ? t._mjrSetSelection(e, e[0] || "") : (v().forEach((e) => {
e.classList.add("is-selected"), e.setAttribute("aria-selected", "true");
}), t.dataset.mjrSelectedAssetIds = JSON.stringify(e), t.dataset.mjrSelectedAssetId = String(e[0] || ""));
} catch (e) {
console.debug?.(e);
}
s();
- } else if (Mi(r, Oi.DESELECT_ALL)) {
- u();
+ } else if (Pi(r, Ai.DESELECT_ALL)) {
+ l();
try {
- typeof t?._mjrSetSelection == "function" ? t._mjrSetSelection([], "") : (y().filter((e) => e?.classList?.contains?.("is-selected")).forEach((e) => {
+ typeof t?._mjrSetSelection == "function" ? t._mjrSetSelection([], "") : (v().filter((e) => e?.classList?.contains?.("is-selected")).forEach((e) => {
e.classList.remove("is-selected"), e.setAttribute("aria-selected", "false");
}), delete t.dataset.mjrSelectedAssetIds, delete t.dataset.mjrSelectedAssetId);
} catch (e) {
@@ -1299,17 +1384,17 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
s();
}
}
- }, O = (e) => {
- if (String(e?.key || "").toLowerCase() !== "s" || !h || (h = !1, ve()) || fe().scope === "viewer") return;
- let t = b();
- t?.filepath && (e.preventDefault?.(), e.stopPropagation?.(), e.stopImmediatePropagation?.(), x(t));
+ }, D = (e) => {
+ if (String(e?.key || "").toLowerCase() !== "s" || !m || (m = !1, ve()) || fe().scope === "viewer") return;
+ let t = y();
+ t?.filepath && (e.preventDefault?.(), e.stopPropagation?.(), e.stopImmediatePropagation?.(), b(t));
+ }, O = () => {
+ m = !1;
}, A = () => {
- h = !1;
+ p ||= (l = E, u = D, d = O, f = () => g(), document.addEventListener("keydown", l, !0), document.addEventListener("keyup", u, !0), document.addEventListener("dragstart", d, !0), t.addEventListener("pointerdown", f, !0), t.addEventListener("focusin", f, !0), !0);
}, j = () => {
- m ||= (u = D, d = O, f = A, p = () => _(), document.addEventListener("keydown", u, !0), document.addEventListener("keyup", d, !0), document.addEventListener("dragstart", f, !0), t.addEventListener("pointerdown", p, !0), t.addEventListener("focusin", p, !0), !0);
- }, M = () => {
- if (m && u) {
- document.removeEventListener("keydown", u, !0), d && document.removeEventListener("keyup", d, !0), f && document.removeEventListener("dragstart", f, !0), p && (t.removeEventListener("pointerdown", p, !0), t.removeEventListener("focusin", p, !0)), u = null, d = null, f = null, p = null, h = !1;
+ if (p && l) {
+ document.removeEventListener("keydown", l, !0), u && document.removeEventListener("keyup", u, !0), d && document.removeEventListener("dragstart", d, !0), f && (t.removeEventListener("pointerdown", f, !0), t.removeEventListener("focusin", f, !0)), l = null, u = null, d = null, f = null, m = !1;
try {
Yn(t);
} catch (e) {
@@ -1320,77 +1405,77 @@ function Fi({ gridContainer: t, getState: n = () => ({}), getSelectedAssets: r =
} catch (e) {
console.debug?.(e);
}
- m = !1;
- for (let e of Ni.values()) try {
+ p = !1;
+ for (let e of Fi.values()) try {
clearTimeout(e);
} catch (e) {
console.debug?.(e);
}
- Ni.clear();
+ Fi.clear();
}
};
return {
- bind: j,
- unbind: M,
+ bind: A,
+ unbind: j,
dispose: () => {
- M();
- for (let e of Ni.values()) try {
+ j();
+ for (let e of Fi.values()) try {
clearTimeout(e);
} catch (e) {
console.debug?.(e);
}
- Ni.clear();
+ Fi.clear();
}
};
}
-function Ii(e) {
- let t = Oi[e];
- return t ? ji(t) : "";
+function Ri(e) {
+ let t = Ai[e];
+ return t ? Ni(t) : "";
}
// ui/features/workflows/workflowInfoState.ts
-var Li = xr({
+var zi = xr({
open: !1,
workflow: null
});
-function Ri(e) {
- Li.workflow = e || null, Li.open = !0;
+function Bi(e) {
+ zi.workflow = e || null, zi.open = !0;
}
-function zi() {
- Li.open = !1, Li.workflow = null;
+function Vi() {
+ zi.open = !1, zi.workflow = null;
}
// ui/features/contextmenu/GridContextMenu.ts
-var Bi = 1, Vi = null, Hi = null;
-function Ui() {
- return Vi ||= import("./chunks/viewerOpenRequest-Bw0Fm-S5.js").then((e) => e.n), Vi;
+var Hi = 1, Ui = null, Wi = null;
+function Gi() {
+ return Ui ||= import("./chunks/viewerOpenRequest-SXvGdj01.js").then((e) => e.n), Ui;
}
-function Wi() {
- return Hi ||= import("./chunks/floatingViewerManager-DYNfChQt.js").then((e) => e.n), Hi;
+function Ki() {
+ return Wi ||= import("./chunks/floatingViewerManager-DQlULmZ-.js").then((e) => e.n), Wi;
}
-function Gi(e) {
+function qi(e) {
let t = String(e || "").trim().toLowerCase();
return t ? t.includes("open graph map") ? "graph-map" : t.includes("open in floating viewer") || t.includes("open floating viewer") ? "floating-viewer" : t.includes("rename") ? "rename" : t.includes("delete") ? "delete" : "" : "";
}
function $(e, t, n, r, { disabled: i = !1, closeOnSelect: a = !0, submenu: o = null } = {}) {
return {
- id: `mjr-grid-menu-item-${Bi++}`,
+ id: `mjr-grid-menu-item-${Hi++}`,
type: "item",
label: String(e || ""),
iconClass: t ? String(t) : "",
rightHint: n ? String(n) : "",
- tone: Gi(e),
+ tone: qi(e),
disabled: !!i,
closeOnSelect: a,
submenu: Array.isArray(o) && o.length ? o : null,
action: typeof r == "function" ? r : null
};
}
-function Ki() {
+function Ji() {
return {
- id: `mjr-grid-menu-separator-${Bi++}`,
+ id: `mjr-grid-menu-separator-${Hi++}`,
type: "separator"
};
}
-var qi = (e) => {
+var Yi = (e) => {
let t = /* @__PURE__ */ new Set();
if (!e) return t;
try {
@@ -1412,7 +1497,7 @@ var qi = (e) => {
console.debug?.(e);
}
return t;
-}, Ji = (e) => {
+}, Xi = (e) => {
let t = [];
if (!e) return t;
try {
@@ -1448,7 +1533,7 @@ var qi = (e) => {
}
return t;
};
-async function Yi(e) {
+async function Zi(e) {
let t = String(e?.filepath || e?.path || e?.full_path || "").trim();
if (!t) return e;
try {
@@ -1467,14 +1552,14 @@ async function Yi(e) {
return console.debug?.(t), e;
}
}
-var Xi = (e) => {
+var Qi = (e) => {
try {
let t = e?.filepath || e?.path || e?.file_info?.filepath || "";
return t ? String(t) : "";
} catch {
return "";
}
-}, Zi = (e) => {
+}, $i = (e) => {
if (!e || typeof e != "object") return null;
let t = String(e.filename || "").trim();
return t ? {
@@ -1484,7 +1569,7 @@ var Xi = (e) => {
root_id: Me(e) || void 0,
kind: String(e.kind || "").toLowerCase()
} : null;
-}, Qi = (e) => {
+}, ea = (e) => {
if (!e || typeof e != "object") return null;
let t = String(e.filename || e.name || "").trim();
return t ? {
@@ -1494,13 +1579,13 @@ var Xi = (e) => {
root_id: Me(e) || void 0
} : null;
};
-function $i(e, t = "") {
+function ta(e, t = "") {
if (!e) return;
let n = document.createElement("a");
n.href = e, t && (n.download = t), document.body.appendChild(n), n.click(), document.body.removeChild(n);
}
-async function ea(t) {
- let n = (Array.isArray(t) ? t.filter((e) => !ma(e)) : []).map(Qi).filter(Boolean);
+async function na(t) {
+ let n = (Array.isArray(t) ? t.filter((e) => !ga(e)) : []).map(ea).filter(Boolean);
if (n.length < 2) {
e("Select at least two files to download a ZIP.", "warning", 2600);
return;
@@ -1523,11 +1608,11 @@ async function ea(t) {
return;
}
let a = i?.data?.filename || `Majoor_Batch_${n.length}.zip`;
- $i(Qe(r), a), e(`Downloading ${a}...`, "info", 3e3);
+ ta(Qe(r), a), e(`Downloading ${a}...`, "info", 3e3);
}
-async function ta(e) {
+async function ra(e) {
let t = Array.isArray(e) ? e.filter(Boolean) : [], n = await Promise.all(t.map(async (e) => {
- let t = Zi(e);
+ let t = $i(e);
if (!t) return null;
let n = (await Vn({
post: L,
@@ -1547,7 +1632,7 @@ async function ta(e) {
event: null
});
}
-var na = (e) => {
+var ia = (e) => {
if (e) {
try {
if (typeof e?._mjrSetSelection == "function") e._mjrSetSelection([], "");
@@ -1564,10 +1649,10 @@ var na = (e) => {
warnPrefix: "[GridContextMenu]"
});
}
-}, ra = (e, t, n, r) => {
+}, aa = (e, t, n, r) => {
if (!e) return;
try {
- na(e);
+ ia(e);
} catch (e) {
console.debug?.(e);
}
@@ -1587,7 +1672,7 @@ var na = (e) => {
} catch (e) {
console.debug?.(e);
}
-}, ia = (e) => {
+}, oa = (e) => {
let t = [];
if (!e) return t;
try {
@@ -1609,7 +1694,7 @@ var na = (e) => {
console.debug?.(e);
}
return t;
-}, aa = (e, t) => {
+}, sa = (e, t) => {
try {
let n = String(t ?? "");
return (e || []).findIndex((e) => String(e?.id ?? "") === n);
@@ -1617,7 +1702,7 @@ var na = (e) => {
return -1;
}
};
-function oa(e) {
+function ca(e) {
if (e == null) return null;
try {
return document.querySelector(`[data-mjr-asset-id="${yt(e)}"]`);
@@ -1625,8 +1710,8 @@ function oa(e) {
return console.debug?.(e), null;
}
}
-function sa(e, t = null) {
- let n = oa(e?.id);
+function la(e, t = null) {
+ let n = ca(e?.id);
if (!n || !n._mjrAsset || typeof n._mjrAsset != "object") return n;
try {
t && typeof t == "object" ? Object.assign(n._mjrAsset, t) : e && typeof e == "object" && Object.assign(n._mjrAsset, e);
@@ -1635,7 +1720,7 @@ function sa(e, t = null) {
}
return n;
}
-var ca = (e) => {
+var ua = (e) => {
try {
let t = e ? "grid-contextmenu" : "grid-contextmenu-global";
window?.dispatchEvent?.(new CustomEvent("mjr:reload-grid", { detail: { reason: t } }));
@@ -1643,7 +1728,7 @@ var ca = (e) => {
console.debug?.(e);
}
};
-async function la(e, t) {
+async function da(e, t) {
if (!e) return {
ok: !1,
error: "Missing asset"
@@ -1670,7 +1755,7 @@ async function la(e, t) {
let t = await I(e.id);
if (t?.ok && t?.data && typeof t.data == "object") {
Object.assign(e, t.data);
- let n = sa(e, t.data), r = n?.querySelector?.(".mjr-workflow-dot");
+ let n = la(e, t.data), r = n?.querySelector?.(".mjr-workflow-dot");
if (r) {
let e = Et(n._mjrAsset);
e && r.replaceWith(e);
@@ -1679,12 +1764,12 @@ async function la(e, t) {
} catch (e) {
console.debug?.(e);
}
- return ca(t), {
+ return ua(t), {
ok: !0,
data: { refreshed: !0 }
};
}
-function ua(e, t, n) {
+function fa(e, t, n) {
let r = e?.id;
try {
e.rating = t;
@@ -1713,29 +1798,29 @@ function ua(e, t, n) {
P(e, "[GridContextMenu] Rating update", { showToast: B.DEBUG_VERBOSE_ERRORS });
});
}
-function da(e) {
+function pa(e) {
let t = String(e?.scope || "").toLowerCase();
return t === "custom" || t === "input" || t === "output";
}
-function fa() {
+function ma() {
try {
return !!(Jt()?.browser?.showFolders ?? !1);
} catch {
return !1;
}
}
-function pa(e) {
+function ha(e) {
return String(e?.scope || "").toLowerCase() === "workflow";
}
-function ma(e) {
+function ga(e) {
return String(e?.kind || "").toLowerCase() === "folder";
}
-function ha(e) {
+function _a(e) {
return String(e?.kind || "").toLowerCase() === "workflow";
}
-function ga(e) {
- if (!e || ma(e) || ha(e)) return !1;
- let t = Xi(e);
+function va(e) {
+ if (!e || ga(e) || _a(e)) return !1;
+ let t = Qi(e);
if (!t) return !1;
let n = String(e?.kind || "").toLowerCase();
if (n === "image" || n === "video") return !0;
@@ -1754,8 +1839,8 @@ function ga(e) {
"m4v"
].includes(r);
}
-async function _a(e) {
- if (!e || ma(e)) return null;
+async function ya(e) {
+ if (!e || ga(e)) return null;
let t = Kn(e);
if (t) return t;
let n = e?.id;
@@ -1768,8 +1853,8 @@ async function _a(e) {
}
return null;
}
-async function va(t) {
- let n = await _a(t);
+async function ba(t) {
+ let n = await ya(t);
if (!n || typeof n != "object") {
e(R("toast.assetWorkflowMissing", "No embedded ComfyUI workflow was found for this asset."), "warn", 2600);
return;
@@ -1782,7 +1867,7 @@ async function va(t) {
let a = i.mode === "new-tab" ? R("toast.workflowLoadedNewTab", "Workflow loaded in a new ComfyUI tab.") : R("toast.workflowLoaded", "Workflow loaded");
e(a, "success", 1800);
}
-async function ya(t) {
+async function xa(t) {
let n = String(t?.filepath || t?.path || t?.full_path || "").trim();
if (!n) {
e(R("toast.workflowMissingPath", "Workflow file path is missing."), "error");
@@ -1813,36 +1898,36 @@ async function ya(t) {
e(R("toast.workflowImportFallback", "ComfyUI workflow import is unavailable in this frontend. Opened workflow JSON for manual import."), "warn"), s.mode === "new-tab" && e(R("toast.workflowLoadedNewTab", "Workflow loaded in a new ComfyUI tab."), "success");
}
}
-function ba(e) {
+function Sa(e) {
try {
window.dispatchEvent(new CustomEvent("mjr:reload-grid", { detail: { reason: e } }));
} catch (e) {
console.debug?.(e);
}
}
-async function xa(t) {
+async function Ca(t) {
let n = String(t?.filepath || "").trim(), r = await le({ filepath: n }, { timeoutMs: 3e4 });
- r?.ok ? (e(R("toast.workflowSaved", "Workflow saved"), "success", 1800), ba("workflow-duplicate")) : e(r?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
+ r?.ok ? (e(R("toast.workflowSaved", "Workflow saved"), "success", 1800), Sa("workflow-duplicate")) : e(r?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
}
-async function Sa(t) {
+async function wa(t) {
let n = String(t?.filepath || "").trim(), r = String(t?.display_name || t?.filename || "").replace(/\.json$/i, ""), i = await wt(R("ctx.renameWorkflow", "Rename workflow"), r, R("tab.workflow", "Workflow")), a = String(i || "").trim();
if (!a) return;
let o = await g({
filepath: n,
name: a
}, { timeoutMs: 3e4 });
- o?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), ba("workflow-rename")) : e(o?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
+ o?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), Sa("workflow-rename")) : e(o?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
}
-async function Ca(t) {
+async function Ta(t) {
let n = String(t?.filepath || "").trim(), r = String(t?.subfolder || "").trim(), i = await wt(R("dialog.workflowCategory", "Workflow category"), r, R("tab.workflow", "Workflow"));
if (i == null) return;
let a = await g({
filepath: n,
category: String(i || "")
}, { timeoutMs: 3e4 });
- a?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), ba("workflow-categorize")) : e(a?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
+ a?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), Sa("workflow-categorize")) : e(a?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
}
-async function wa(t) {
+async function Ea(t) {
let n = String(t?.filepath || "").trim();
if (!n) {
e(R("toast.noFilePath"), "error");
@@ -1871,9 +1956,9 @@ async function wa(t) {
filepath: n,
source_filepath: a.filepath
}, { timeoutMs: 3e4 });
- o?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), ba("workflow-thumbnail")) : e(o?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
+ o?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), Sa("workflow-thumbnail")) : e(o?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
}
-async function Ta(t) {
+async function Da(t) {
let n = String(t?.filepath || "").trim();
if (!n) {
e(R("toast.workflowMissingPath", "Workflow file path is missing."), "error");
@@ -1897,7 +1982,7 @@ async function Ta(t) {
setTimeout(() => URL.revokeObjectURL(s), 5e3);
}
}
-async function Ea(t) {
+async function Oa(t) {
let n = String(t?.filepath || "").trim();
if (!n) {
e(R("toast.workflowMissingPath", "Workflow file path is missing."), "error");
@@ -1906,8 +1991,8 @@ async function Ea(t) {
let r = await ne({ filepath: n });
r?.ok ? e(R("toast.openedInFolder", "Opened in folder"), "success", 1600) : e(r?.error || R("toast.openFolderFailed", "Failed to open folder."), "error");
}
-async function Da(t) {
- let n = Xi(t);
+async function ka(t) {
+ let n = Qi(t);
if (!n) {
e(R("toast.noFilePath"), "error");
return;
@@ -1923,16 +2008,16 @@ async function Da(t) {
filepath: i,
source_filepath: n
}, { timeoutMs: a ? 75e3 : 3e4 });
- o?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), ba("workflow-thumbnail-assign")) : e(o?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
+ o?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), Sa("workflow-thumbnail-assign")) : e(o?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
}
-async function Oa(t) {
+async function Aa(t) {
let n = String(t?.filepath || "").trim();
if (!await Ut(R("dialog.deleteWorkflowConfirm", "Delete this workflow JSON and its adjacent thumbnail files?"), R("ctx.deleteWorkflow", "Delete workflow"))) return;
let r = await te({ filepath: n }, { timeoutMs: 3e4 });
- r?.ok ? (e(R("toast.workflowDeleted", "Workflow deleted"), "success", 1800), ba("workflow-delete")) : e(r?.error || R("toast.fileDeleteFailed", "Failed to delete file."), "error");
+ r?.ok ? (e(R("toast.workflowDeleted", "Workflow deleted"), "success", 1800), Sa("workflow-delete")) : e(r?.error || R("toast.fileDeleteFailed", "Failed to delete file."), "error");
}
-function ka(e) {
- let t = qi(e), n = Ji(e), r = n.length || t.size;
+function ja(e) {
+ let t = Yi(e), n = Xi(e), r = n.length || t.size;
return {
selectedIds: t,
selectedAssetsNow: n,
@@ -1941,59 +2026,59 @@ function ka(e) {
hasSelection: r > 0
};
}
-function Aa(e, t) {
+function Ma(e, t) {
let n = (e) => "*".repeat(e) + "o".repeat(Math.max(0, 5 - e)), r = (t) => {
- sa(e, { rating: t });
+ la(e, { rating: t });
};
return [
$(n(5), "pi pi-star", null, async () => {
- ua(e, 5, () => r(5));
+ fa(e, 5, () => r(5));
}, { disabled: !t }),
$(n(4), "pi pi-star", null, async () => {
- ua(e, 4, () => r(4));
+ fa(e, 4, () => r(4));
}, { disabled: !t }),
$(n(3), "pi pi-star", null, async () => {
- ua(e, 3, () => r(3));
+ fa(e, 3, () => r(3));
}, { disabled: !t }),
$(n(2), "pi pi-star", null, async () => {
- ua(e, 2, () => r(2));
+ fa(e, 2, () => r(2));
}, { disabled: !t }),
$(n(1), "pi pi-star", null, async () => {
- ua(e, 1, () => r(1));
+ fa(e, 1, () => r(1));
}, { disabled: !t }),
- Ki(),
+ Ji(),
$(R("ctx.resetRating", "Reset rating"), "pi pi-star", "0", async () => {
- ua(e, 0, () => r(0));
+ fa(e, 0, () => r(0));
}, { disabled: !t })
];
}
-function ja(e, t) {
+function Na(e, t) {
let n = String(t?.dataset?.mjrScope || "").toLowerCase();
if (n !== "input" && n !== "output") return e;
let r = String(e || "").trim().replaceAll("\\", "/");
return r ? `mjr://${n}/${r}` : `mjr://${n}`;
}
-function Ma({ currentPath: t, gridContainer: n } = {}) {
+function Pa({ currentPath: t, gridContainer: n } = {}) {
return [$(R("ctx.createFolderHere", "Create folder here..."), "pi pi-plus", null, async () => {
try {
let r = await wt(R("dialog.newFolderName", "New folder name"), ""), i = String(r || "").trim();
if (!i) return;
let a = await Oe({
op: "create",
- path: ja(t, n),
+ path: Na(t, n),
name: i
});
if (!a?.ok) {
e(a?.error || "Failed to create folder", "error");
return;
}
- ca(n), e(R("toast.folderCreated", "Folder created: {name}", { name: i }), "success");
+ ua(n), e(R("toast.folderCreated", "Folder created: {name}", { name: i }), "success");
} catch (t) {
e(R("toast.createFolderFailedDetail", "Create folder failed: {error}", { error: t?.message || String(t || "") }), "error");
}
})];
}
-function Na({ asset: t, gridContainer: n, panelState: r } = {}) {
+function Fa({ asset: t, gridContainer: n, panelState: r } = {}) {
let i = String(t?.filepath || "").trim(), a = [$(R("ctx.openFolder", "Open folder"), "pi pi-folder-open", null, () => {
try {
n.dispatchEvent(new CustomEvent("mjr:open-folder-asset", {
@@ -2022,7 +2107,7 @@ function Na({ asset: t, gridContainer: n, panelState: r } = {}) {
}
}
})];
- return da(r) && i && a.push(Ki(), $(R("ctx.createFolderHere"), "pi pi-plus", null, async () => {
+ return pa(r) && i && a.push(Ji(), $(R("ctx.createFolderHere"), "pi pi-plus", null, async () => {
try {
let t = await wt(R("dialog.newFolderName"), ""), r = String(t || "").trim();
if (!r) return;
@@ -2035,7 +2120,7 @@ function Na({ asset: t, gridContainer: n, panelState: r } = {}) {
e(a?.error || R("toast.createFolderFailed"), "error");
return;
}
- ca(n), e(R("toast.folderCreated", { name: r }), "success");
+ ua(n), e(R("toast.folderCreated", { name: r }), "success");
} catch (t) {
e(R("toast.createFolderFailedDetail", { error: t?.message || String(t || "") }), "error");
}
@@ -2052,7 +2137,7 @@ function Na({ asset: t, gridContainer: n, panelState: r } = {}) {
e(s?.error || R("toast.renameFolderFailed"), "error");
return;
}
- ca(n), e(R("toast.folderRenamed"), "success");
+ ua(n), e(R("toast.folderRenamed"), "success");
} catch (t) {
e(R("toast.renameFolderFailedDetail", { error: t?.message || String(t || "") }), "error");
}
@@ -2069,7 +2154,7 @@ function Na({ asset: t, gridContainer: n, panelState: r } = {}) {
e(a?.error || R("toast.moveFolderFailed"), "error");
return;
}
- ca(n), e(R("toast.folderMoved"), "success");
+ ua(n), e(R("toast.folderMoved"), "success");
} catch (t) {
e(R("toast.moveFolderFailedDetail", { error: t?.message || String(t || "") }), "error");
}
@@ -2086,22 +2171,22 @@ function Na({ asset: t, gridContainer: n, panelState: r } = {}) {
e(a?.error || R("toast.deleteFolderFailed"), "error");
return;
}
- ca(n), e(R("toast.folderDeleted"), "success");
+ ua(n), e(R("toast.folderDeleted"), "success");
} catch (t) {
e(R("toast.deleteFolderFailedDetail", { error: t?.message || String(t || "") }), "error");
}
})), a;
}
-function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, pointerY: s, selection: c } = {}) {
- let { selectedAssetsNow: u, effectiveSelectionCount: d, isMultiSelected: f, hasSelection: p } = c, m = [], h = pa(a), g = ({ assets: e = [], index: t = 0, mode: n = "" } = {}) => Ui().then((r) => r.requestViewerOpen({
+function Ia({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, pointerY: s, selection: c } = {}) {
+ let { selectedAssetsNow: u, effectiveSelectionCount: d, isMultiSelected: f, hasSelection: p } = c, m = [], h = ha(a), g = ({ assets: e = [], index: t = 0, mode: n = "" } = {}) => Gi().then((r) => r.requestViewerOpen({
assets: e,
index: t,
mode: n
})).catch((e) => console.debug?.(e));
- if (ha(t)) {
- if (m.push($(R("ctx.loadWorkflow", "Load workflow"), "pi pi-sitemap", null, () => ya(t)), $(R("ctx.duplicateWorkflow", "Duplicate workflow"), "pi pi-copy", null, () => xa(t)), $(R("ctx.renameWorkflow", "Rename workflow"), "pi pi-pencil", null, () => Sa(t)), $(R("ctx.categorizeWorkflow", "Set workflow category"), "pi pi-folder", null, () => Ca(t)), $(R("ctx.setWorkflowThumbnail", "Set workflow thumbnail"), "pi pi-image", null, () => wa(t)), $(R("ctx.editWorkflowInfo", "Edit infos"), "pi pi-info-circle", null, () => Ri(t)), $(R("ctx.exportWorkflow", "Export workflow"), "pi pi-download", null, () => Ta(t)), $(R("ctx.showInExplorer", "Show in Explorer"), "pi pi-folder-open", null, () => Ea(t)), $(R("ctx.deleteWorkflow", "Delete workflow"), "pi pi-trash", null, () => Oa(t)), Ki()), h) return m.push($("Open Graph Map", "pi pi-sitemap", null, async () => {
+ if (_a(t)) {
+ if (m.push($(R("ctx.loadWorkflow", "Load workflow"), "pi pi-sitemap", null, () => xa(t)), $(R("ctx.duplicateWorkflow", "Duplicate workflow"), "pi pi-copy", null, () => Ca(t)), $(R("ctx.renameWorkflow", "Rename workflow"), "pi pi-pencil", null, () => wa(t)), $(R("ctx.categorizeWorkflow", "Set workflow category"), "pi pi-folder", null, () => Ta(t)), $(R("ctx.setWorkflowThumbnail", "Set workflow thumbnail"), "pi pi-image", null, () => Ea(t)), $(R("ctx.editWorkflowInfo", "Edit infos"), "pi pi-info-circle", null, () => Bi(t)), $(R("ctx.exportWorkflow", "Export workflow"), "pi pi-download", null, () => Da(t)), $(R("ctx.showInExplorer", "Show in Explorer"), "pi pi-folder-open", null, () => Oa(t)), $(R("ctx.deleteWorkflow", "Delete workflow"), "pi pi-trash", null, () => Aa(t)), Ji()), h) return m.push($("Open Graph Map", "pi pi-sitemap", null, async () => {
try {
- let e = await Yi(t), { floatingViewerManager: n } = await Wi();
+ let e = await Zi(t), { floatingViewerManager: n } = await Ki();
await n.openAssets({
assets: [e],
index: 0,
@@ -2112,9 +2197,9 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
}
})), m;
} else if (h) return m;
- m.push($("Open As New Tab", "pi pi-external-link", null, () => va(t)), $("Open Viewer", "pi pi-image", Ii("OPEN_VIEWER"), () => {
+ m.push($("Open As New Tab", "pi pi-external-link", null, () => ba(t)), $("Open Viewer", "pi pi-image", Ri("OPEN_VIEWER"), () => {
try {
- let e = (p ? Ji(i) : []).filter((e) => !ma(e)), n = e.length;
+ let e = (p ? Xi(i) : []).filter((e) => !ga(e)), n = e.length;
if (n >= 2 && n <= 4) {
g({
assets: e,
@@ -2122,7 +2207,7 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
});
return;
}
- let r = ia(i).filter((e) => !ma(e)), a = aa(r, t?.id);
+ let r = oa(i).filter((e) => !ga(e)), a = sa(r, t?.id);
if (!r.length || a < 0) return;
g({
assets: r,
@@ -2131,9 +2216,9 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
} catch (e) {
console.debug?.(e);
}
- }), $("Open in Floating Viewer", "pi pi-window-maximize", Ii("OPEN_FLOATING_VIEWER"), async () => {
+ }), $("Open in Floating Viewer", "pi pi-window-maximize", Ri("OPEN_FLOATING_VIEWER"), async () => {
try {
- let { floatingViewerManager: e } = await Wi(), n = (p ? Ji(i) : []).filter((e) => !ma(e));
+ let { floatingViewerManager: e } = await Ki(), n = (p ? Xi(i) : []).filter((e) => !ga(e));
if (n.length) {
await e.openAssets({
assets: n,
@@ -2149,11 +2234,11 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
console.debug?.(e);
}
}), $("Load Asset", "pi pi-upload", "L / L+Drop", async () => {
- let n = (p ? Ji(i) : []).filter((e) => !ma(e));
- await ta(n.length ? n : [t]) || e("Failed to create a loader node for this asset.", "error");
+ let n = (p ? Xi(i) : []).filter((e) => !ga(e));
+ await ra(n.length ? n : [t]) || e("Failed to create a loader node for this asset.", "error");
}), $("Open Graph Map", "pi pi-sitemap", null, async () => {
try {
- let e = await Yi(t), { floatingViewerManager: n } = await Wi();
+ let e = await Zi(t), { floatingViewerManager: n } = await Ki();
await n.openAssets({
assets: [e],
index: 0,
@@ -2162,17 +2247,17 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
} catch (e) {
console.debug?.(e);
}
- }), $(R("ctx.showMetadataPanel", "Show metadata panel"), "pi pi-info-circle", Ii("METADATA_PANEL"), () => {
+ }), $(R("ctx.showMetadataPanel", "Show metadata panel"), "pi pi-info-circle", Ri("METADATA_PANEL"), () => {
try {
- ra(i, r, t, a);
+ aa(i, r, t, a);
let e = i?._mjrOpenDetails;
typeof e == "function" && e();
} catch (e) {
console.debug?.(e);
}
- })), ga(t) && m.push($(R("ctx.assignAsWorkflowThumbnail", "Use as workflow thumbnail"), "pi pi-image", null, () => Da(t)));
- let _ = (p ? u : []).filter((e) => !ma(e)), v = _.length;
- v === 2 && m.push($("Compare A/B (2 selected)", "pi pi-clone", Ii("COMPARE_AB"), () => {
+ })), va(t) && m.push($(R("ctx.assignAsWorkflowThumbnail", "Use as workflow thumbnail"), "pi pi-image", null, () => ka(t)));
+ let _ = (p ? u : []).filter((e) => !ga(e)), v = _.length;
+ v === 2 && m.push($("Compare A/B (2 selected)", "pi pi-clone", Ri("COMPARE_AB"), () => {
try {
g({
assets: _,
@@ -2182,7 +2267,7 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
} catch (e) {
console.debug?.(e);
}
- })), v >= 2 && v <= 4 && m.push($(`Side-by-side (2x2) (${v} selected)`, "pi pi-table", Ii("SIDE_BY_SIDE"), () => {
+ })), v >= 2 && v <= 4 && m.push($(`Side-by-side (2x2) (${v} selected)`, "pi pi-table", Ri("SIDE_BY_SIDE"), () => {
try {
g({
assets: _,
@@ -2192,10 +2277,10 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
} catch (e) {
console.debug?.(e);
}
- })), m.push($(R("ctx.openInFolder", "Open in folder"), "pi pi-folder-open", Ii("OPEN_IN_FOLDER"), async () => {
+ })), m.push($(R("ctx.openInFolder", "Open in folder"), "pi pi-folder-open", Ri("OPEN_IN_FOLDER"), async () => {
let n = await ne(t);
n?.ok ? e(R("toast.openedInFolder"), "info", 2e3) : e(n?.error || R("toast.openFolderFailed"), "error");
- }, { disabled: !(t?.id || Xi(t)) }), $(R("ctx.collectFiles", "Collect files"), "pi pi-box", null, async () => {
+ }, { disabled: !(t?.id || Qi(t)) }), $(R("ctx.collectFiles", "Collect files"), "pi pi-box", null, async () => {
e(R("toast.collectingFiles", "Collecting files..."), "info", 2500);
let r = await n(t);
if (!r?.ok) {
@@ -2207,7 +2292,7 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
where: o
});
a > 0 && (s += ` — ${a} ${R("toast.collectMissingInputs", "input(s) missing")}`), e(s, a > 0 ? "warning" : "success", 6e3);
- }, { disabled: !Xi(t) }), $(R("ctx.copyPath", "Copy path"), "pi pi-copy", Ii("COPY_PATH"), async () => {
+ }, { disabled: !Qi(t) }), $(R("ctx.copyPath", "Copy path"), "pi pi-copy", Ri("COPY_PATH"), async () => {
let n = t?.filepath ? String(t.filepath) : "";
if (!n) e(R("toast.noFilePath"), "error");
else try {
@@ -2215,14 +2300,14 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
} catch (t) {
console.warn(R("log.clipboardCopyFailed", "Clipboard copy failed"), t), e(R("toast.pathCopyFailed"), "error");
}
- }), $(R("ctx.download", "Download"), "pi pi-download", Ii("DOWNLOAD"), () => {
+ }), $(R("ctx.download", "Download"), "pi pi-download", Ri("DOWNLOAD"), () => {
if (!t?.filepath) return;
let n = qe(t.filepath), r = t.filename || "download";
- $i(n, r), e(R("toast.downloadingFile", "Downloading {filename}...", { filename: r }), "info", 3e3);
+ ta(n, r), e(R("toast.downloadingFile", "Downloading {filename}...", { filename: r }), "info", 3e3);
}, { disabled: !t?.filepath }), $(`Download selected as ZIP (${v})`, "pi pi-file-zip", null, async () => {
- await ea(_);
- }, { disabled: v < 2 }), $("Add to collection...", "pi pi-bookmark", Ii("ADD_TO_COLLECTION"), async () => {
- let e = Ji(i), n = e.length ? e : [t];
+ await na(_);
+ }, { disabled: v < 2 }), $("Add to collection...", "pi pi-bookmark", Ri("ADD_TO_COLLECTION"), async () => {
+ let e = Xi(i), n = e.length ? e : [t];
await Rt({
x: o,
y: s,
@@ -2231,37 +2316,37 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
}));
let y = String(a?.collectionId || "").trim();
if (y) {
- let n = Ji(i), r = (n.length ? n : [t]).map(Xi).filter(Boolean), a = r.length > 1 ? `Remove from collection (${r.length})` : "Remove from collection";
+ let n = Xi(i), r = (n.length ? n : [t]).map(Qi).filter(Boolean), a = r.length > 1 ? `Remove from collection (${r.length})` : "Remove from collection";
m.push($(a, "pi pi-bookmark", null, async () => {
if (!r.length) {
e(R("toast.noFilePath"), "error");
return;
}
let t = await k(y, r);
- t?.ok ? ca(i) : e(t?.error || R("toast.removeFromCollectionFailed"), "error");
+ t?.ok ? ua(i) : e(t?.error || R("toast.removeFromCollectionFailed"), "error");
}));
}
- let b = !!(t?.id || Xi(t));
- return m.push(Ki(), $(R("ctx.editTags", "Edit tags"), "pi pi-tags", Ii("EDIT_TAGS"), () => {
- Fa(o + 6, s + 6, t, () => {
- sa(t, { tags: Array.isArray(t?.tags) ? [...t.tags] : [] });
+ let b = !!(t?.id || Qi(t));
+ return m.push(Ji(), $(R("ctx.editTags", "Edit tags"), "pi pi-tags", Ri("EDIT_TAGS"), () => {
+ La(o + 6, s + 6, t, () => {
+ la(t, { tags: Array.isArray(t?.tags) ? [...t.tags] : [] });
});
- }, { closeOnSelect: !1 }), Ki(), $(R("ctx.setRating", "Set rating"), "pi pi-star", "1-5 >", null, {
+ }, { closeOnSelect: !1 }), Ji(), $(R("ctx.setRating", "Set rating"), "pi pi-star", "1-5 >", null, {
disabled: !b,
closeOnSelect: !1,
- submenu: Aa(t, b)
- }), Ki(), $(R("ctx.resetIndexFile", "Reset index (this file)"), "pi pi-refresh", null, async () => {
+ submenu: Ma(t, b)
+ }), Ji(), $(R("ctx.resetIndexFile", "Reset index (this file)"), "pi pi-refresh", null, async () => {
if (t?.filename || t?.id) {
e(R("toast.rescanningFile", "Rescanning file..."), "info", 1600);
try {
- let n = await la(t, i);
+ let n = await da(t, i);
n?.ok ? e(R("toast.metadataRefreshed", "Metadata refreshed{suffix}", { suffix: "" }), "success", 1800) : e(n?.error || R("toast.resetFailed", "Failed to reset index"), "error");
} catch (t) {
e(`${R("toast.resetFailed", "Failed to reset index")}: ${t?.message || String(t || "")}`, "error");
}
}
- }, { disabled: !(t?.filename || t?.id) }), $("Rename...", "pi pi-pencil", Ii("RENAME"), async () => {
- if (!(t?.id || Xi(t))) return;
+ }, { disabled: !(t?.filename || t?.id) }), $("Rename...", "pi pi-pencil", Ri("RENAME"), async () => {
+ if (!(t?.id || Qi(t))) return;
let n = t.filename || "", r = await wt(R("dialog.rename.title", "Rename file"), n), a = vt(r, n);
if (!a || a === n) return;
let o = Ot(a);
@@ -2273,33 +2358,37 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
return;
}
let r = n?.data?.asset;
- r && typeof r == "object" ? (Object.assign(t, r), sa(t, r)) : (t.filename = a, t.filepath &&= String(t.filepath).replace(/[^\\/]+$/, a), t.path &&= String(t.path).replace(/[^\\/]+$/, a), t.file_info && typeof t.file_info == "object" && (t.file_info.filename = a, t.file_info.filepath && (t.file_info.filepath = String(t.file_info.filepath).replace(/[^\\/]+$/, a)), t.file_info.path && (t.file_info.path = String(t.file_info.path).replace(/[^\\/]+$/, a))), sa(t, {
+ r && typeof r == "object" ? (Object.assign(t, r), la(t, r)) : (t.filename = a, t.filepath &&= String(t.filepath).replace(/[^\\/]+$/, a), t.path &&= String(t.path).replace(/[^\\/]+$/, a), t.file_info && typeof t.file_info == "object" && (t.file_info.filename = a, t.file_info.filepath && (t.file_info.filepath = String(t.file_info.filepath).replace(/[^\\/]+$/, a)), t.file_info.path && (t.file_info.path = String(t.file_info.path).replace(/[^\\/]+$/, a))), la(t, {
filename: t.filename,
filepath: t.filepath,
path: t.path,
file_info: t.file_info
}));
- let o = oa(t.id)?.querySelector?.(".mjr-filename");
- o && (o.textContent = t.filename || a), e(R("toast.fileRenamedSuccess"), "success"), ca(i);
+ let o = ca(t.id)?.querySelector?.(".mjr-filename");
+ o && (o.textContent = t.filename || a), e(R("toast.fileRenamedSuccess"), "success"), ua(i);
} catch (t) {
e(R("toast.errorRenaming", "Error renaming file: {error}", { error: t?.message || String(t || "") }), "error");
}
- }, { disabled: !(t?.id || Xi(t)) })), f ? m.push($(`Delete ${d} files...`, "pi pi-trash", Ii("DELETE"), async () => {
+ }, { disabled: !(t?.id || Qi(t)) })), f ? m.push($(`Delete ${d} files...`, "pi pi-trash", Ri("DELETE"), async () => {
if (await _t(Number(d) || 0)) try {
- let n = 0, r = 0, o = [], s = 0, c = u.length ? u : [t];
- for (let e of c) (await l(e))?.ok ? (n += 1, e?.id == null ? s += 1 : o.push(String(e.id))) : r += 1;
- if (o.length) {
- let e = Si(i, o);
+ let { deletedIds: n, failedCount: r, deletedByFilepath: o } = await ki(u.length ? u : [t], { onProgress: ({ done: t, total: n }) => {
+ t < n && e(R("toast.filesDeletingProgress", "Deleting files... ({done}/{total})", {
+ done: t,
+ total: n
+ }), "info", 1600);
+ } }), s = n.length + o, c = r;
+ if (n.length) {
+ let e = Si(i, n);
a && Array.isArray(e?.selectedIds) && (a.selectedAssetIds = e.selectedIds, a.activeAssetId = e.selectedIds[0] || "");
}
- s > 0 && ca(i), r === 0 ? e(R("toast.filesDeletedSuccessN", "{n} files deleted successfully!", { n }), "success") : e(R("toast.filesDeletedPartial", "{success} files deleted, {failed} failed.", {
- success: n,
- failed: r
+ o > 0 && ua(i), c === 0 ? e(R("toast.filesDeletedSuccessN", "{n} files deleted successfully!", { n: s }), "success") : e(R("toast.filesDeletedPartial", "{success} files deleted, {failed} failed.", {
+ success: s,
+ failed: c
}), "warning");
} catch (t) {
e(R("toast.errorDeleting", "Error deleting file: {error}", { error: t?.message || String(t || "") }), "error");
}
- })) : m.push($(R("ctx.delete", "Delete"), "pi pi-trash", Ii("DELETE"), async () => {
+ })) : m.push($(R("ctx.delete", "Delete"), "pi pi-trash", Ri("DELETE"), async () => {
if (await _t(1, t?.filename)) try {
let n = await l(t);
if (!n?.ok) {
@@ -2309,14 +2398,14 @@ function Pa({ asset: t, card: r, gridContainer: i, panelState: a, pointerX: o, p
if (t?.id) {
let e = Si(i, [String(t.id)]);
a && Array.isArray(e?.selectedIds) && (a.selectedAssetIds = e.selectedIds, a.activeAssetId = e.selectedIds[0] || "");
- } else ca(i);
+ } else ua(i);
e(R("toast.fileDeletedSuccess"), "success");
} catch (t) {
e(R("toast.errorDeleting", "Error deleting file: {error}", { error: t?.message || String(t || "") }), "error");
}
- }, { disabled: !(t?.id || Xi(t)) })), m;
+ }, { disabled: !(t?.id || Qi(t)) })), m;
}
-function Fa(e, t, n, r) {
+function La(e, t, n, r) {
n && Ln({
x: e,
y: t,
@@ -2324,7 +2413,7 @@ function Fa(e, t, n, r) {
onChanged: r
});
}
-function Ia({ gridContainer: e, getState: t = () => ({}) } = {}) {
+function Ra({ gridContainer: e, getState: t = () => ({}) } = {}) {
if (!e) return;
if (e._mjrGridContextMenuBound && typeof e._mjrGridContextMenuUnbind == "function") return e._mjrGridContextMenuUnbind;
let n = async (n) => {
@@ -2336,13 +2425,13 @@ function Ia({ gridContainer: e, getState: t = () => ({}) } = {}) {
}
})(), i = Mt(n.target, ".mjr-asset-card");
if (!i) {
- if (!da(r)) return;
- let t = String(e?.dataset?.mjrScope || "").toLowerCase(), i = String(e?.dataset?.mjrSubfolder || "").trim(), a = (t === "input" || t === "output") && fa();
+ if (!pa(r)) return;
+ let t = String(e?.dataset?.mjrScope || "").toLowerCase(), i = String(e?.dataset?.mjrSubfolder || "").trim(), a = (t === "input" || t === "output") && ma();
if (!i && !a) return;
n.preventDefault(), n.stopPropagation(), tn({
x: n.clientX,
y: n.clientY,
- items: Ma({
+ items: Pa({
currentPath: i,
gridContainer: e
})
@@ -2352,11 +2441,11 @@ function Ia({ gridContainer: e, getState: t = () => ({}) } = {}) {
n.preventDefault(), n.stopPropagation();
let a = i._mjrAsset;
if (!a) return;
- let o = ka(e), s = ma(a) ? Na({
+ let o = ja(e), s = ga(a) ? Fa({
asset: a,
gridContainer: e,
panelState: r
- }) : Pa({
+ }) : Ia({
asset: a,
card: i,
gridContainer: e,
@@ -2407,8 +2496,8 @@ function Ia({ gridContainer: e, getState: t = () => ({}) } = {}) {
return e._mjrGridContextMenuUnbind = r, r;
}
// ui/features/panel/controllers/ratingHotkeysController.ts
-var La = ot;
-function Ra(e) {
+var za = ot;
+function Ba(e) {
let t = String(e ?? "");
try {
if (typeof CSS < "u" && typeof CSS.escape == "function") return CSS.escape(t);
@@ -2417,7 +2506,7 @@ function Ra(e) {
}
return t.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
}
-function za(e, t = null) {
+function Va(e, t = null) {
if (!e) return [];
try {
let t = Array.from(Jn(e));
@@ -2433,14 +2522,14 @@ function za(e, t = null) {
}
return [];
}
-function Ba(e, t) {
+function Ha(e, t) {
try {
- return e?.querySelector?.(`.mjr-asset-card[data-mjr-asset-id="${Ra(t)}"]`);
+ return e?.querySelector?.(`.mjr-asset-card[data-mjr-asset-id="${Ba(t)}"]`);
} catch (e) {
return console.debug?.(e), null;
}
}
-function Va(e, t, n) {
+function Ua(e, t, n) {
if (!e) return;
let r = e._mjrAsset;
r && (r.rating = n);
@@ -2453,7 +2542,7 @@ function Va(e, t, n) {
console.debug?.(e);
}
}
-async function Ha(e, t, n = 5) {
+async function Wa(e, t, n = 5) {
let r = Math.max(1, Number(n) || 1), i = 0, a = [], o = async () => {
for (; i < e.length;) {
let n = i;
@@ -2468,7 +2557,7 @@ async function Ha(e, t, n = 5) {
for (let t = 0; t < Math.min(r, e.length); t += 1) a.push(o());
await Promise.all(a);
}
-function Ua({ gridContainer: t, createRatingBadge: n } = {}) {
+function Ga({ gridContainer: t, createRatingBadge: n } = {}) {
let r = !1, i = null, a = null, o = async (t, n) => {
if (t != null) {
try {
@@ -2483,7 +2572,7 @@ function Ua({ gridContainer: t, createRatingBadge: n } = {}) {
return;
}
try {
- window.dispatchEvent(new CustomEvent(La, { detail: {
+ window.dispatchEvent(new CustomEvent(za, { detail: {
assetId: String(t),
rating: n
} }));
@@ -2507,13 +2596,13 @@ function Ua({ gridContainer: t, createRatingBadge: n } = {}) {
if (!a && !s && !c) return;
let l = r === "0" ? 0 : Number(r);
if (!Number.isFinite(l)) return;
- let u = za(t, e.target);
- u.length && (e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation?.(), await Ha(u, (e) => o(e, l), 5));
+ let u = Va(t, e.target);
+ u.length && (e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation?.(), await Wa(u, (e) => o(e, l), 5));
}, a = (e) => {
let r = e?.detail || {}, i = r.assetId ?? r.id ?? null, a = Number(r.rating);
if (!i || !Number.isFinite(a)) return;
- let o = Ba(t, i);
- o && Va(o, n, a);
+ let o = Ha(t, i);
+ o && Ua(o, n, a);
};
try {
window.addEventListener("keydown", i, { capture: !0 });
@@ -2521,7 +2610,7 @@ function Ua({ gridContainer: t, createRatingBadge: n } = {}) {
console.debug?.(e);
}
try {
- window.addEventListener(La, a);
+ window.addEventListener(za, a);
} catch (e) {
console.debug?.(e);
}
@@ -2536,7 +2625,7 @@ function Ua({ gridContainer: t, createRatingBadge: n } = {}) {
console.debug?.(e);
}
try {
- window.removeEventListener(La, a);
+ window.removeEventListener(za, a);
} catch (e) {
console.debug?.(e);
}
@@ -2546,7 +2635,7 @@ function Ua({ gridContainer: t, createRatingBadge: n } = {}) {
};
}
// ui/features/grid/StackGroupCards.ts
-function Wa(e) {
+function Ka(e) {
if (!e || e.dataset?.mjrOverlayButtonBound === "1") return e;
try {
e.dataset.mjrOverlayButtonBound = "1";
@@ -2565,7 +2654,7 @@ function Wa(e) {
};
return e.addEventListener("pointerdown", t), e.addEventListener("mousedown", n), e.addEventListener("touchstart", t, { passive: !0 }), e.addEventListener("dblclick", t), e.addEventListener("keydown", t), e.addEventListener("dragstart", n), e;
}
-function Ga(e, t, n = null, r = "mjr-stack-group-button-count") {
+function qa(e, t, n = null, r = "mjr-stack-group-button-count") {
e.textContent = "";
let i = document.createElement("span");
if (i.className = t, e.appendChild(i), n != null) {
@@ -2573,24 +2662,24 @@ function Ga(e, t, n = null, r = "mjr-stack-group-button-count") {
t.className = r, t.textContent = String(n), e.appendChild(t);
}
}
-function Ka(e) {
+function Ja(e) {
return String(e?.dataset?.mjrGroupStacks || "") === "1";
}
-function qa(e) {
+function Ya(e) {
let t = String(e?.stack_id || "").trim();
return t ? `stack:${t}` : "";
}
-function Ja(e, t, n) {
- return Ka(e) && qa(t) || n;
+function Xa(e, t, n) {
+ return Ja(e) && Ya(t) || n;
}
-function Ya(e) {
+function Za(e) {
try {
e._mjrStackMembersCache?.clear?.();
} catch (e) {
console.debug?.(e);
}
}
-function Xa(e, t, n) {
+function Qa(e, t, n) {
if (!t || !n || t._mjrIsVue) return;
let r = !!n._mjrDupStack, i = Number(n._mjrDupCount || 0) || 0;
if (!r || i < 2) {
@@ -2600,7 +2689,7 @@ function Xa(e, t, n) {
}
t.dataset.mjrDupStacked = "true", t.dataset.mjrDupCount = String(i);
let a = t.querySelector(".mjr-dup-stack-button");
- a || (a = document.createElement("button"), a.type = "button", a.className = "mjr-dup-stack-button", a.setAttribute("aria-label", "Show all duplicates"), Wa(a), a.addEventListener("click", (e) => {
+ a || (a = document.createElement("button"), a.type = "button", a.className = "mjr-dup-stack-button", a.setAttribute("aria-label", "Show all duplicates"), Ka(a), a.addEventListener("click", (e) => {
if (e.preventDefault(), e.stopPropagation(), a.dataset?.mjrStackOpening !== "1") try {
a.dataset.mjrStackOpening = "1", a.disabled = !0;
let e = a?._mjrGridContainer, t = a?._mjrAsset;
@@ -2626,21 +2715,21 @@ function Xa(e, t, n) {
}
}), t.appendChild(a)), a._mjrGridContainer = e, a._mjrAsset = n;
let o = `${i} duplicate${i > 1 ? "s" : ""}`;
- a.title = `${o} - click to compare all copies`, Ga(a, "pi pi-copy", i, "mjr-dup-stack-count");
+ a.title = `${o} - click to compare all copies`, qa(a, "pi pi-copy", i, "mjr-dup-stack-count");
}
// ui/features/dnd/utils/log.ts
-var Za = () => {
+var $a = () => {
try {
return !!window?.MJR_DND_DEBUG;
} catch {
return !1;
}
-}, Qa = (...e) => {
- Za() && console.debug("[Majoor.DnD]", ...e);
-}, $a = (e, { buildCustomViewURL: t, buildViewURL: n }) => {
+}, eo = (...e) => {
+ $a() && console.debug("[Majoor.DnD]", ...e);
+}, to = (e, { buildCustomViewURL: t, buildViewURL: n }) => {
let r = String(e?.type || "output").toLowerCase();
return r === "custom" ? t(e?.filename || "", e?.subfolder || "", Me(e)) : r === "input" ? n(e?.filename || "", e?.subfolder || "", "input") : r === "temp" ? n(e?.filename || "", e?.subfolder || "", "temp") : n(e?.filename || "", e?.subfolder || "", "output");
-}, eo = (e) => {
+}, no = (e) => {
if (!e || typeof e != "object") return null;
let t = String(e.filename || "").trim();
if (!t || t.includes("/") || t.includes("\\") || t.includes("\0")) return null;
@@ -2653,41 +2742,41 @@ var Za = () => {
kind: o || void 0,
filepath: o === "workflow" && s ? s : void 0
};
-}, to = eo, no = (e, t) => {
+}, ro = no, io = (e, t) => {
let n = e?.dataTransfer?.getData?.(t);
if (!n) return null;
try {
- return eo(JSON.parse(n));
+ return no(JSON.parse(n));
} catch {
return null;
}
-}, ro = /* @__PURE__ */ new WeakMap(), io = !1;
-function ao(e) {
- return e && ro.get(e) || null;
-}
-function oo(e, t) {
- return e ? typeof t == "function" ? (ro.set(e, t), t) : (ro.delete(e), null) : null;
-}
+}, ao = /* @__PURE__ */ new WeakMap(), oo = !1;
function so(e) {
- e && ro.delete(e);
+ return e && ao.get(e) || null;
}
-function co() {
- io = !0;
+function co(e, t) {
+ return e ? typeof t == "function" ? (ao.set(e, t), t) : (ao.delete(e), null) : null;
}
-function lo() {
- return io ? (io = !1, !0) : !1;
+function lo(e) {
+ e && ao.delete(e);
}
function uo() {
- io = !1;
+ oo = !0;
+}
+function fo() {
+ return oo ? (oo = !1, !0) : !1;
+}
+function po() {
+ oo = !1;
}
// ui/features/dnd/out/DragOut.ts
-var fo = (e) => {
+var mo = (e) => {
try {
return new URL(String(e || ""), window.location.href).href;
} catch {
return String(e || "");
}
-}, po = () => Ke("mjr_", 24), mo = (e) => {
+}, ho = () => Ke("mjr_", 24), go = (e) => {
let t = e && typeof e == "object" ? e : null;
if (!t) return null;
let n = t.filename || t.name;
@@ -2697,7 +2786,7 @@ var fo = (e) => {
type: String(t.type || "output").toLowerCase(),
root_id: Me(t) || void 0
} : null;
-}, ho = (e, t) => {
+}, _o = (e, t) => {
let n = [];
if (!e || !t) return n;
let r = t?.dataset?.mjrAssetId ? String(t.dataset.mjrAssetId) : "";
@@ -2747,19 +2836,19 @@ var fo = (e) => {
t && typeof t == "object" && n.push(t);
}
return n;
-}, go = (e) => {
+}, vo = (e) => {
if (!e || typeof e != "object") return "";
let t = e.filepath || e.path || e?.file_info?.filepath || "";
return t ? String(t) : "";
-}, _o = ({ dt: e, asset: t, containerEl: n, card: r, viewUrl: i, stripMetadata: a = !1 }) => {
+}, yo = ({ dt: e, asset: t, containerEl: n, card: r, viewUrl: i, stripMetadata: a = !1 }) => {
if (!e || !t) return;
- let o = ho(n, r);
+ let o = _o(n, r);
if (Array.isArray(o) && o.length > 1) {
- let t = o.map(mo).filter(Boolean);
+ let t = o.map(go).filter(Boolean);
if (t.length > 1) {
let n = "";
try {
- n = po();
+ n = ho();
} catch (e) {
console.warn("[DragOut] failed to create secure batch token", e);
}
@@ -2773,7 +2862,7 @@ var fo = (e) => {
} catch (e) {
console.debug?.(e);
}
- let r = fo(Qe(n)), i = a ? `Majoor_Clean_Batch_${t.length}.zip` : `Majoor_Batch_${t.length}.zip`;
+ let r = mo(Qe(n)), i = a ? `Majoor_Clean_Batch_${t.length}.zip` : `Majoor_Batch_${t.length}.zip`;
try {
e.setData("text/uri-list", r), e.setData("DownloadURL", `application/zip:${i}:${r}`), e.effectAllowed = "copyMove";
} catch (e) {
@@ -2785,38 +2874,38 @@ var fo = (e) => {
}
let s = t.filename || t.name;
if (!s) return;
- let c = a ? go(t) : "", l = fo((c ? Ge(c) : "") || i), u = en(s);
+ let c = a ? vo(t) : "", l = mo((c ? Ge(c) : "") || i), u = en(s);
try {
e.setData("text/uri-list", l), e.setData("DownloadURL", `${u}:${s}:${l}`), e.effectAllowed = "copyMove";
} catch (e) {
console.debug?.(e);
}
-}, vo = (e, { asset: t, containerEl: n, card: r }) => {
+}, bo = (e, { asset: t, containerEl: n, card: r }) => {
if (e && t) try {
let t = e?.dataTransfer?.dropEffect;
- !t || t === "none" || lo();
+ !t || t === "none" || fo();
return;
} catch (e) {
console.debug?.(e);
}
-}, yo = () => {
+}, xo = () => {
let e = $e();
return e && typeof e == "object" ? e : null;
-}, bo = (e) => $a(e, {
+}, So = (e) => to(e, {
buildCustomViewURL: tt,
buildViewURL: nt
-}), xo = !1, So = !1, Co = (e) => {
+}), Co = !1, wo = !1, To = (e) => {
try {
return !!e?.closest?.("input, textarea, select, [contenteditable='true']");
} catch {
return !1;
}
-}, wo = () => xo === !0, To = () => So === !0, Eo = (e) => [
+}, Eo = () => Co === !0, Do = () => wo === !0, Oo = (e) => [
String(e?.type || "output"),
String(e?.filename || ""),
String(e?.subfolder || ""),
String(Me(e) || "")
-].join("\n"), Do = (e, t) => {
+].join("\n"), ko = (e, t) => {
if (String(e?.type || e?.file_info?.type || "").toLowerCase() === "custom") return null;
let n = ut(String(e?.filepath || e?.path || e?.fullpath || e?.full_path || e?.file_info?.filepath || e?.file_info?.path || "")).trim();
if (!n || !t) return null;
@@ -2846,11 +2935,11 @@ var fo = (e) => {
};
}
return null;
-}, Oo = (e) => {
+}, Ao = (e) => {
if (!e || typeof e != "object") return null;
let t = String(e.filename || "").trim();
if (!t) return null;
- let n = Do(e, t);
+ let n = ko(e, t);
return {
filename: t,
subfolder: n?.subfolder ?? e.subfolder ?? "",
@@ -2859,7 +2948,7 @@ var fo = (e) => {
kind: String(e.kind || "").toLowerCase(),
filepath: String(e.filepath || e.path || e?.file_info?.filepath || "").trim() || void 0
};
-}, ko = (e, t, n) => {
+}, jo = (e, t, n) => {
if (!e || !t || n == null) return !1;
let r = String(n);
try {
@@ -2873,10 +2962,10 @@ var fo = (e) => {
console.debug?.(e);
}
return !1;
-}, Ao = ({ dt: e, asset: t, payload: n, viewUrl: r }) => {
+}, Mo = ({ dt: e, asset: t, payload: n, viewUrl: r }) => {
if (!e || !t || !n) return;
let i = String(n.kind || "").toLowerCase() === "model3d" ? "3D" : n.kind, a = {
- id: t.id == null ? Eo(n) : String(t.id),
+ id: t.id == null ? Oo(n) : String(t.id),
name: t.filename || n.filename,
display_name: t.filename || n.filename,
filename: n.filename,
@@ -2892,41 +2981,41 @@ var fo = (e) => {
},
tags: Array.isArray(t.tags) ? t.tags : []
};
- ko(e, sn, JSON.stringify(a)), r && ko(e, "text/uri-list", r);
-}, jo = (e) => {
+ jo(e, sn, JSON.stringify(a)), r && jo(e, "text/uri-list", r);
+}, No = (e) => {
let t = e && typeof e == "object" ? e : null;
if (!t) return [];
try {
let e = window?.__MJR_LAST_SELECTION_GRID__, n = typeof e?._mjrGetSelectedAssets == "function" ? e._mjrGetSelectedAssets() : [];
if (Array.isArray(n) && n.length > 1) {
- let e = n.map(Oo).filter(rn), r = Eo(t);
- if (e.some((e) => Eo(e) === r)) return e;
+ let e = n.map(Ao).filter(rn), r = Oo(t);
+ if (e.some((e) => Oo(e) === r)) return e;
}
} catch (e) {
console.debug?.(e);
}
return [t];
-}, Mo = (e, t) => {
+}, Po = (e, t) => {
try {
let n = typeof e?._mjrGetSelectedAssets == "function" ? e._mjrGetSelectedAssets() : [];
if (!Array.isArray(n) || n.length <= 1) return [];
- let r = n.map(Oo).filter(rn), i = Eo(t);
- return r.some((e) => Eo(e) === i) ? r : [];
+ let r = n.map(Ao).filter(rn), i = Oo(t);
+ return r.some((e) => Oo(e) === i) ? r : [];
} catch (e) {
return console.debug?.(e), [];
}
-}, No = (e, t) => {
+}, Fo = (e, t) => {
try {
let t = e?.dataTransfer?.getData?.("application/x-mjr-assets") || "";
if (t) {
- let e = JSON.parse(t), n = (Array.isArray(e?.items) ? e.items : Array.isArray(e) ? e : []).map(to).filter(rn);
+ let e = JSON.parse(t), n = (Array.isArray(e?.items) ? e.items : Array.isArray(e) ? e : []).map(ro).filter(rn);
if (n.length) return n;
}
} catch (e) {
console.debug?.(e);
}
- return jo(t);
-}, Po = async (e) => {
+ return No(t);
+}, Io = async (e) => {
let t = Array.isArray(e) ? e.filter(Boolean) : [];
return t.length ? (await Promise.all(t.map(async (e) => {
let t = (await Vn({
@@ -2941,43 +3030,43 @@ var fo = (e) => {
droppedExt: String(e?.filename || "").split(".").pop() || ""
} : null;
}))).filter(Boolean) : [];
-}, Fo = /* @__PURE__ */ new Map(), Io = 6e4, Lo = 20, Ro = 5242880, zo = 5e3, Bo = 2e4, Vo = 256, Ho = 5e5, Uo = /[\u0000-\u001f\u007f]/, Wo = /\u0000/, Go = (e) => Uo.test(String(e || "")), Ko = (e) => Wo.test(String(e || "")), qo = (e) => {
+}, Lo = /* @__PURE__ */ new Map(), Ro = 6e4, zo = 20, Bo = 5242880, Vo = 5e3, Ho = 2e4, Uo = 256, Wo = 5e5, Go = /[\u0000-\u001f\u007f]/, Ko = /\u0000/, qo = (e) => Go.test(String(e || "")), Jo = (e) => Ko.test(String(e || "")), Yo = (e) => {
if (!e || typeof e != "object" || Array.isArray(e)) return !1;
let t = Number(e.id);
if (!Number.isFinite(t)) return !1;
let n = e.type == null ? "" : String(e.type);
- if (n && (n.length > Vo || Go(n))) return !1;
+ if (n && (n.length > Uo || qo(n))) return !1;
let r = e.widgets_values;
if (Array.isArray(r)) {
- for (let e of r) if (typeof e == "string" && (e.length > Ho || Ko(e))) return !1;
+ for (let e of r) if (typeof e == "string" && (e.length > Wo || Jo(e))) return !1;
}
return !0;
-}, Jo = (e) => {
+}, Xo = (e) => {
if (Array.isArray(e)) return e.length >= 4;
if (e && typeof e == "object") {
let t = Number(e.id);
return !!Number.isFinite(t);
}
return !1;
-}, Yo = (e) => {
- if (!e || typeof e != "object" || !Array.isArray(e.nodes) || !Array.isArray(e.links) || e.nodes.length > zo || e.links.length > Bo || !e.nodes.every(qo) || !e.links.every(Jo)) return !1;
+}, Zo = (e) => {
+ if (!e || typeof e != "object" || !Array.isArray(e.nodes) || !Array.isArray(e.links) || e.nodes.length > Vo || e.links.length > Ho || !e.nodes.every(Yo) || !e.links.every(Xo)) return !1;
try {
let t = JSON.stringify(e).length;
- if (!Number.isFinite(t) || t <= 0 || t > Ro) return !1;
+ if (!Number.isFinite(t) || t <= 0 || t > Bo) return !1;
} catch {
return !1;
}
return !0;
-}, Xo = () => {
+}, Qo = () => {
let e = Date.now();
- for (let [t, n] of Fo.entries()) e - (n?.at || 0) > Io && Fo.delete(t);
- Fo.size > Lo && Array.from(Fo.entries()).sort((e, t) => (e[1]?.at || 0) - (t[1]?.at || 0)).slice(0, Fo.size - Lo).forEach(([e]) => Fo.delete(e));
-}, Zo = async (e, t = null) => {
- let n = e && typeof e == "object" ? e : null, r = Me(n), i = yo(), a = n?.filename ? `${n.type || "output"}:${n.filename}:${n.subfolder || ""}:${r}` : t ? `path:${t}` : null;
+ for (let [t, n] of Lo.entries()) e - (n?.at || 0) > Ro && Lo.delete(t);
+ Lo.size > zo && Array.from(Lo.entries()).sort((e, t) => (e[1]?.at || 0) - (t[1]?.at || 0)).slice(0, Lo.size - zo).forEach(([e]) => Lo.delete(e));
+}, $o = async (e, t = null) => {
+ let n = e && typeof e == "object" ? e : null, r = Me(n), i = xo(), a = n?.filename ? `${n.type || "output"}:${n.filename}:${n.subfolder || ""}:${r}` : t ? `path:${t}` : null;
if (a) {
- let e = Fo.get(a);
- if (e && Date.now() - (e.at || 0) < Io) {
- if (e.workflow && Yo(e.workflow)) try {
+ let e = Lo.get(a);
+ if (e && Date.now() - (e.at || 0) < Ro) {
+ if (e.workflow && Zo(e.workflow)) try {
if (typeof i?.loadGraphData == "function") return i.loadGraphData(e.workflow), !0;
if (typeof i?.canvas?.graph?.configure == "function") {
i.canvas.graph.configure(e.workflow);
@@ -3009,11 +3098,11 @@ var fo = (e) => {
if (!t?.ok || !t.data) return !1;
o = t.data?.workflow;
}
- if (!Yo(o)) return !1;
- if (a && (Fo.set(a, {
+ if (!Zo(o)) return !1;
+ if (a && (Lo.set(a, {
workflow: o,
at: Date.now()
- }), Xo()), typeof i?.loadGraphData == "function") return i.loadGraphData(o), !0;
+ }), Qo()), typeof i?.loadGraphData == "function") return i.loadGraphData(o), !0;
if (typeof i?.canvas?.graph?.configure == "function") {
i.canvas.graph.configure(o);
try {
@@ -3029,7 +3118,7 @@ var fo = (e) => {
}
return !1;
};
-function Qo(e) {
+function es(e) {
return (t) => {
let n = t?.dataTransfer;
if (!n) return;
@@ -3037,7 +3126,7 @@ function Qo(e) {
if (!r) return;
let i = r._mjrAsset;
if (!i || typeof i != "object") return;
- let a = String(i?.kind || "").toLowerCase(), o = Do(i, String(i.filename || "")), s = o?.type ?? String(i?.type || "output").toLowerCase(), c = {
+ let a = String(i?.kind || "").toLowerCase(), o = ko(i, String(i.filename || "")), s = o?.type ?? String(i?.type || "output").toLowerCase(), c = {
filename: i.filename,
subfolder: o?.subfolder ?? i.subfolder ?? "",
type: s,
@@ -3046,17 +3135,17 @@ function Qo(e) {
filepath: String(i.filepath || i.path || i?.file_info?.filepath || "").trim() || void 0
};
try {
- let t = wo();
- ko(n, pn, JSON.stringify(c));
- let o = Mo(e, c);
- o.length > 1 && ko(n, Hn, JSON.stringify({ items: o })), ko(n, "text/plain", String(i.filename || ""));
- let s = a === "workflow" ? "" : bo(c);
- Ao({
+ let t = Eo();
+ jo(n, pn, JSON.stringify(c));
+ let o = Po(e, c);
+ o.length > 1 && jo(n, Hn, JSON.stringify({ items: o })), jo(n, "text/plain", String(i.filename || ""));
+ let s = a === "workflow" ? "" : So(c);
+ Mo({
dt: n,
asset: i,
payload: c,
viewUrl: s
- }), _o({
+ }), yo({
dt: n,
asset: i,
containerEl: e,
@@ -3069,7 +3158,7 @@ function Qo(e) {
}
try {
r.addEventListener("dragend", (t) => {
- vo(t, {
+ bo(t, {
asset: i,
containerEl: e,
card: r
@@ -3086,30 +3175,30 @@ function Qo(e) {
}
};
}
-var $o = (e) => {
+var ts = (e) => {
if (!e) return () => {};
- let t = ao(e);
+ let t = so(e);
if (typeof t == "function") return t;
- let n = Qo(e);
- return e.addEventListener("dragstart", n, !0), oo(e, () => {
+ let n = es(e);
+ return e.addEventListener("dragstart", n, !0), co(e, () => {
try {
e.removeEventListener("dragstart", n, !0);
} catch (e) {
console.debug?.(e);
}
- so(e);
+ lo(e);
});
-}, es = null, ts = 0;
-function ns() {
+}, ns = null, rs = 0;
+function is() {
let t = (e) => {
- if (Co(e?.target)) return;
+ if (To(e?.target)) return;
let t = String(e?.key || "").toLowerCase();
- t === "s" ? xo = !0 : t === "l" && (So = !0);
+ t === "s" ? Co = !0 : t === "l" && (wo = !0);
}, n = (e) => {
let t = String(e?.key || "").toLowerCase();
- t === "s" ? xo = !1 : t === "l" && (So = !1);
+ t === "s" ? Co = !1 : t === "l" && (wo = !1);
}, r = () => {
- xo = !1, So = !1;
+ Co = !1, wo = !1;
}, i = /* @__PURE__ */ new Set([
"mp3",
"wav",
@@ -3228,10 +3317,10 @@ function ns() {
waveformPeaks: u
};
if (!t.timeline?.audioSegments) {
- Qa("ltxdirector inject: no audioSegments", {});
+ eo("ltxdirector inject: no audioSegments", {});
return;
}
- t.timeline.audioSegments.push(g), t.timeline.audioSegments.sort((e, t) => e.start - t.start), t.selectionType = "audio", t.selectedIndex = t.timeline.audioSegments.findIndex((e) => e.id === h), t.updateUIFromSelection?.(), t.commitChanges?.(!0), t.render?.(), e(`Added audio to LTX Director: ${d}`, "success", 3e3), Qa("drop ltxdirector inject audio", {
+ t.timeline.audioSegments.push(g), t.timeline.audioSegments.sort((e, t) => e.start - t.start), t.selectionType = "audio", t.selectedIndex = t.timeline.audioSegments.findIndex((e) => e.id === h), t.updateUIFromSelection?.(), t.commitChanges?.(!0), t.render?.(), e(`Added audio to LTX Director: ${d}`, "success", 3e3), eo("drop ltxdirector inject audio", {
file: d,
start: f
});
@@ -3274,7 +3363,7 @@ function ns() {
imageB64: m
};
if (!t.timeline?.segments) {
- Qa("ltxdirector inject: no timeline", {});
+ eo("ltxdirector inject: no timeline", {});
return;
}
if (t.timeline.segments.push(b), t.timeline.segments.sort((e, t) => e.start - t.start), g) try {
@@ -3289,7 +3378,7 @@ function ns() {
}, e.src = m;
}
let x = t.timeline.segments.findIndex((e) => e.id === y), S = g ? t.timeline.segments.findIndex((e) => e.id === b.id) : x;
- S >= 0 && (t.selectionType = "image", t.selectedIndex = S, t.updateUIFromSelection?.()), t.commitChanges?.(!0), t.render?.(), e(`Added ${g ? "video" : "image"} to LTX Director: ${d}`, "success", 3e3), Qa("drop ltxdirector inject", {
+ S >= 0 && (t.selectionType = "image", t.selectedIndex = S, t.updateUIFromSelection?.()), t.commitChanges?.(!0), t.render?.(), e(`Added ${g ? "video" : "image"} to LTX Director: ${d}`, "success", 3e3), eo("drop ltxdirector inject", {
file: d,
start: v,
ext: c,
@@ -3301,29 +3390,29 @@ function ns() {
onKeyUp: n,
onWindowBlur: r,
onDragOver: (e) => {
- let t = yo();
+ let t = xo();
if (!Array.from(e?.dataTransfer?.types || []).includes("application/x-mjr-asset")) return;
- let n = no(e, pn);
+ let n = io(e, pn);
if (!rn(n)) return;
let r = ln(t, e.clientX, e.clientY), i = r ? cn(t, r, e.clientX, e.clientY) : null, a = String(n?.filename || "").split(".").pop() || "", o = r && !i ? dn(r, n, a) : null, s = r && !i && !o && !!r._timelineEditor;
- r && (i || o || s) ? (e.preventDefault(), s || (e.stopImmediatePropagation?.(), e.stopPropagation()), Yt(t, r, jn), e.dataTransfer.dropEffect = "copy", i ? Qa("dragover slot", {
+ r && (i || o || s) ? (e.preventDefault(), s || (e.stopImmediatePropagation?.(), e.stopPropagation()), Yt(t, r, jn), e.dataTransfer.dropEffect = "copy", i ? eo("dragover slot", {
node: r?.title,
slot: i.input?.name
- }) : s ? Qa("dragover ltxdirector", { node: r?.title }) : Qa("dragover widget", {
+ }) : s ? eo("dragover ltxdirector", { node: r?.title }) : eo("dragover widget", {
node: r?.title,
widget: o?.name
})) : (An(t, jn), un(t, e) && (e.preventDefault(), e.dataTransfer.dropEffect = "copy"));
},
onDrop: async (t) => {
- let n = yo();
+ let n = xo();
if (!Array.from(t?.dataTransfer?.types || []).includes("application/x-mjr-asset")) return;
try {
if ((t?.target)?.closest?.(".mjr-folder-card")) return;
} catch {}
- let r = no(t, pn);
+ let r = io(t, pn);
if (!rn(r) || !un(n, t)) return;
- co();
- let i = To(), a = i ? No(t, r) : [r], o = ln(n, t.clientX, t.clientY), s = o ? cn(n, o, t.clientX, t.clientY) : null, l = String(r?.filename || "").split(".").pop() || "", u = o && !s ? dn(o, r, l) : null;
+ uo();
+ let i = Do(), a = i ? Fo(t, r) : [r], o = ln(n, t.clientX, t.clientY), s = o ? cn(n, o, t.clientX, t.clientY) : null, l = String(r?.filename || "").split(".").pop() || "", u = o && !s ? dn(o, r, l) : null;
if (o && s) {
t.preventDefault(), t.stopImmediatePropagation?.(), t.stopPropagation(), An(n, jn);
let i = await Zt({
@@ -3341,7 +3430,7 @@ function ns() {
inputSlotIndex: s.index,
event: t
})) {
- Qa("drop slot created and connected loader", {
+ eo("drop slot created and connected loader", {
node: o?.title,
slot: s.input?.name,
value: i
@@ -3357,21 +3446,21 @@ function ns() {
}
if (!o || !u) {
if (An(n, jn), t.preventDefault(), t.stopImmediatePropagation?.(), t.stopPropagation(), i) {
- let i = await Po(a), o = mn({
+ let i = await Io(a), o = mn({
app: n,
items: i,
event: t
});
if (o > 0) {
- Qa("drop canvas created loaders", { count: o });
+ eo("drop canvas created loaders", { count: o });
return;
}
e(`Failed to load file: "${r?.filename}". Staging failed.`, "error");
return;
}
if (String(r?.kind || "").toLowerCase() === "workflow") {
- if (await Zo(r)) {
- Qa("drop canvas loaded workflow", { file: r?.filename });
+ if (await $o(r)) {
+ eo("drop canvas loaded workflow", { file: r?.filename });
return;
}
e(`Failed to load workflow: "${r?.filename}".`, "error");
@@ -3382,17 +3471,17 @@ function ns() {
endpoint: st.STAGE_TO_INPUT,
payload: r,
index: !1
- }), u = s ? Zo(r) : Promise.resolve(!1), [d, f] = await Promise.all([u, c]);
+ }), u = s ? $o(r) : Promise.resolve(!1), [d, f] = await Promise.all([u, c]);
if (d) {
- Qa("drop canvas loaded workflow", { file: r?.filename });
+ eo("drop canvas loaded workflow", { file: r?.filename });
return;
}
let p = f?.relativePath;
if (!p) {
- Qa("drop canvas stage failed"), e(`Failed to load file: "${r?.filename}". Staging failed.`, "error");
+ eo("drop canvas stage failed"), e(`Failed to load file: "${r?.filename}". Staging failed.`, "error");
return;
}
- if (Qa("drop canvas staged", { value: p }), mn({
+ if (eo("drop canvas staged", { value: p }), mn({
app: n,
items: [{
payload: r,
@@ -3401,7 +3490,7 @@ function ns() {
}],
event: t
})) {
- Qa("drop canvas created loader", { value: p });
+ eo("drop canvas created loader", { value: p });
return;
}
e(`Staged to input: ${p}`, "success", 4e3);
@@ -3414,58 +3503,58 @@ function ns() {
payload: r,
index: !1
});
- d && (Qt(u, d), jn(n), Qa("drop inject", {
+ d && (Qt(u, d), jn(n), eo("drop inject", {
node: o?.title,
widget: u?.name,
value: d
}));
},
onDragLeave: () => {
- let e = yo();
- An(e, jn), Qa("dragleave");
+ let e = xo();
+ An(e, jn), eo("dragleave");
}
};
}
-function rs() {
+function as() {
if (typeof window > "u" || !window?.addEventListener) return { dispose() {} };
- let { onKeyDown: e, onKeyUp: t, onWindowBlur: n, onDragOver: r, onDrop: i, onDragLeave: a } = ns();
+ let { onKeyDown: e, onKeyUp: t, onWindowBlur: n, onDragOver: r, onDrop: i, onDragLeave: a } = is();
return window.addEventListener("keydown", e, !0), window.addEventListener("keyup", t, !0), window.addEventListener("blur", n, !0), window.addEventListener("dragover", r, !0), window.addEventListener("drop", i, !0), window.addEventListener("dragleave", a, !0), { dispose: () => {
try {
window.removeEventListener("keydown", e, !0), window.removeEventListener("keyup", t, !0), window.removeEventListener("blur", n, !0), window.removeEventListener("dragover", r, !0), window.removeEventListener("drop", i, !0), window.removeEventListener("dragleave", a, !0);
} catch (e) {
console.debug?.(e);
}
- xo = !1, So = !1;
+ Co = !1, wo = !1;
try {
- An(yo(), jn);
+ An(xo(), jn);
} catch (e) {
console.debug?.(e);
}
} };
}
-function is() {
- es || (es = rs(), ts = 0), ts += 1;
+function os() {
+ ns || (ns = as(), rs = 0), rs += 1;
let e = !1;
return ({ force: t = !1 } = {}) => {
- e || (e = !0, as({ force: t }));
+ e || (e = !0, ss({ force: t }));
};
}
-function as({ force: e = !1 } = {}) {
- if (!es) ts = 0, uo();
- else if (!e && ts > 1) --ts;
+function ss({ force: e = !1 } = {}) {
+ if (!ns) rs = 0, po();
+ else if (!e && rs > 1) --rs;
else {
- ts = 0;
+ rs = 0;
try {
- es.dispose?.();
+ ns.dispose?.();
} catch (e) {
console.debug?.(e);
}
- es = null, uo();
+ ns = null, po();
}
}
// ui/features/grid/MediaBlobCache.ts
-var os = "__MJR_MEDIA_BLOB_CACHE__", ss = 384, cs = 3e5, ls = 3e4, us = 15e3, ds = 6, fs = 192, ps = 3;
-function ms() {
+var cs = "__MJR_MEDIA_BLOB_CACHE__", ls = 384, us = 3e5, ds = 3e4, fs = 15e3, ps = 6, ms = 192, hs = 3;
+function gs() {
let e = /* @__PURE__ */ new Map(), t = null, n = 0, r = [];
function i() {
try {
@@ -3477,10 +3566,10 @@ function ms() {
return !1;
}
function a() {
- return i() ? fs : ss;
+ return i() ? ms : ls;
}
function o() {
- return i() ? ps : ds;
+ return i() ? hs : ps;
}
async function s(e) {
n >= o() && await new Promise((e) => r.push(e)), n += 1;
@@ -3493,7 +3582,7 @@ function ms() {
}
}
function c() {
- t ||= setInterval(l, us);
+ t ||= setInterval(l, fs);
}
function l() {
try {
@@ -3515,7 +3604,7 @@ function ms() {
for (let [r, i] of e) i.refcount > 0 || i.expiresAt < n && (n = i.expiresAt, t = r);
t && (u(e.get(t)), e.delete(t));
}
- function f(e, t = cs) {
+ function f(e, t = us) {
e.expiresAt = Date.now() + t;
}
function p() {
@@ -3539,7 +3628,7 @@ function ms() {
r ? (r.hasError = !0, f(r)) : (e.size >= a() && d(), e.set(n, {
blobUrl: null,
refcount: 0,
- expiresAt: Date.now() + ls,
+ expiresAt: Date.now() + ds,
hasError: !0
}), p(), c());
} catch (e) {
@@ -3573,7 +3662,7 @@ function ms() {
return e.size >= a() && d(), e.set(r, {
blobUrl: g,
refcount: 1,
- expiresAt: Date.now() + cs,
+ expiresAt: Date.now() + us,
hasError: !1
}), p(), c(), g;
} catch (e) {
@@ -3585,7 +3674,7 @@ function ms() {
let n = m(t);
if (!n) return;
let r = e.get(n);
- r && (r.refcount = Math.max(0, r.refcount - 1), r.refcount <= 0 && f(r, ls)), l(), p();
+ r && (r.refcount = Math.max(0, r.refcount - 1), r.refcount <= 0 && f(r, ds)), l(), p();
} catch (e) {
console.debug?.(e);
}
@@ -3612,26 +3701,26 @@ function ms() {
dispose: y
};
}
-function hs() {
+function _s() {
try {
- if (window[os]) return window[os];
+ if (window[cs]) return window[cs];
} catch (e) {
console.debug?.(e);
}
try {
- window[os]?.dispose?.();
+ window[cs]?.dispose?.();
} catch (e) {
console.debug?.(e);
}
- let e = ms();
+ let e = gs();
try {
- window[os] = e;
+ window[cs] = e;
} catch (e) {
console.debug?.(e);
}
return e;
}
-var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
+var vs = _s(), ys = ["title"], bs = /* @__PURE__ */ lr({
__name: "RatingBadge",
props: { rating: {
type: [Number, String],
@@ -3653,9 +3742,9 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
color: "var(--mjr-rating-color, var(--mjr-star-active, #FFD45A))",
marginRight: e < n.value ? "2px" : "0"
})
- }, " ★ ", 4))), 128))], 8, _s)) : G("", !0);
+ }, " ★ ", 4))), 128))], 8, ys)) : G("", !0);
}
-}), ys = ["title"], bs = /* @__PURE__ */ lr({
+}), xs = ["title"], Ss = /* @__PURE__ */ lr({
__name: "TagsBadge",
props: { tags: {
type: [Array, String],
@@ -3684,9 +3773,9 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
class: "mjr-tags-badge",
title: i.value,
style: { color: "var(--mjr-tag-color, #90CAF9)" }
- }, J(a.value), 9, ys)) : G("", !0);
+ }, J(a.value), 9, xs)) : G("", !0);
}
-}), xs = ["title"], Ss = /* @__PURE__ */ lr({
+}), Cs = ["title"], ws = /* @__PURE__ */ lr({
__name: "GenTimeBadge",
props: { genTimeMs: { default: 0 } },
setup(e) {
@@ -3696,22 +3785,22 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
class: "mjr-gentime-badge",
title: i.value.title,
style: yr({ color: a.value })
- }, J(i.value.text), 13, xs)) : G("", !0);
+ }, J(i.value.text), 13, Cs)) : G("", !0);
}
-}), Cs = {
+}), Ts = {
key: 0,
class: "mjr-live-placeholder-wash",
"aria-hidden": "true"
-}, ws = ["title", "aria-label"], Ts = ["alt", "src"], Es = { class: "mjr-workflow-thumb-title" }, Ds = { class: "mjr-workflow-thumb-meta" }, Os = { key: 0 }, ks = { key: 1 }, As = { key: 2 }, js = {
+}, Es = ["title", "aria-label"], Ds = ["alt", "src"], Os = { class: "mjr-workflow-thumb-title" }, ks = { class: "mjr-workflow-thumb-meta" }, As = { key: 0 }, js = { key: 1 }, Ms = { key: 2 }, Ns = {
key: 3,
class: "mjr-workflow-missing-chip"
-}, Ms = ["alt", "src"], Ns = {
+}, Ps = ["alt", "src"], Fs = {
key: 1,
class: "mjr-media-error-placeholder"
-}, Ps = ["data-src", "poster"], Fs = ["src"], Is = { class: "mjr-audio-thumb-head" }, Ls = { class: "mjr-audio-thumb-kind" }, Rs = {
+}, Is = ["data-src", "poster"], Ls = ["src"], Rs = { class: "mjr-audio-thumb-head" }, zs = { class: "mjr-audio-thumb-kind" }, Bs = {
class: "mjr-audio-thumb-waveform",
"aria-hidden": "true"
-}, zs = { class: "mjr-audio-thumb-meta" }, Bs = { class: "mjr-audio-thumb-title" }, Vs = { class: "mjr-audio-thumb-subtitle" }, Hs = ["src", "alt"], Us = {
+}, Vs = { class: "mjr-audio-thumb-meta" }, Hs = { class: "mjr-audio-thumb-title" }, Us = { class: "mjr-audio-thumb-subtitle" }, Ws = ["src", "alt"], Gs = {
key: 1,
class: "mjr-model3d-thumb-icon",
style: {
@@ -3722,23 +3811,23 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
"justify-content": "center",
color: "rgba(255,255,255,0.7)"
}
-}, Ws = [
+}, Ks = [
"data-mjr-ext",
"data-mjr-badge-bg",
"title"
-], Gs = ["title"], Ks = {
+], qs = ["title"], Js = {
key: 7,
class: "mjr-card-hover-info"
-}, qs = {
+}, Ys = {
key: 0,
class: "mjr-hover-prompt"
-}, Js = {
+}, Xs = {
key: 1,
class: "mjr-hover-prompt mjr-hover-workflow-notes"
-}, Ys = {
+}, Zs = {
key: 2,
class: "mjr-hover-gentime"
-}, Xs = ["data-mjr-kind"], Zs = ["title"], Qs = {
+}, Qs = ["data-mjr-kind"], $s = ["title"], ec = {
class: "mjr-card-meta-row",
style: {
"font-size": "0.85em",
@@ -3749,7 +3838,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
"text-overflow": "ellipsis",
"padding-right": "16px"
}
-}, $s = ["title"], ec = ["title"], tc = ["title"], nc = {
+}, tc = ["title"], nc = ["title"], rc = ["title"], ic = {
key: 0,
class: "mjr-meta-separator",
"aria-hidden": "true",
@@ -3757,7 +3846,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
opacity: "0.55",
margin: "0 3px"
}
-}, rc = ["title"], ic = { class: "mjr-stack-group-button-count" }, ac = { class: "mjr-dup-stack-count" }, oc = /* @__PURE__ */ lr({
+}, ac = ["title"], oc = { class: "mjr-stack-group-button-count" }, sc = { class: "mjr-dup-stack-count" }, cc = /* @__PURE__ */ lr({
__name: "AssetCardInner",
props: { asset: {} },
emits: ["workflow-action"],
@@ -3782,7 +3871,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
async function i(e, t = {}) {
if (!e) return null;
try {
- return gs.hasError(e) ? null : await gs.acquireUrl(e, t) || null;
+ return vs.hasError(e) ? null : await vs.acquireUrl(e, t) || null;
} catch {
return null;
}
@@ -3795,13 +3884,13 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
let t = String(e.dataset?.src || "").trim();
if (!t || e.getAttribute("src")) return;
let n = (Number(e._mjrVideoLoadRequestId || 0) || 0) + 1;
- if (e._mjrVideoLoadRequestId = n, gs.hasError(t)) {
+ if (e._mjrVideoLoadRequestId = n, vs.hasError(t)) {
e.src = t, e._mjrSourceKey = t;
return;
}
- let r = await gs.acquireUrl(t);
+ let r = await vs.acquireUrl(t);
if (e._mjrVideoLoadRequestId !== n || !e.isConnected) {
- r && gs.releaseUrl(t);
+ r && vs.releaseUrl(t);
return;
}
r ? (e.src = r, e._mjrCachedSrc = t, e._mjrSourceKey = t) : (e.src = t, e._mjrSourceKey = t), e.load?.();
@@ -3822,7 +3911,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
}
try {
let t = String(e._mjrCachedSrc || "").trim();
- t && gs.releaseUrl(t), e._mjrCachedSrc = "", e._mjrSourceKey = "";
+ t && vs.releaseUrl(t), e._mjrCachedSrc = "", e._mjrSourceKey = "";
} catch (e) {
console.debug?.(e);
}
@@ -3980,7 +4069,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
let ze = Q(null), Be = Q(null), Ve = Q(null), He = Q(null), Ue = Q(!1), We = Q(!1), Ge = Q(""), Ke = 0, qe = "", Je = "", Ye = "";
function Ze() {
try {
- qe && gs.releaseUrl(qe);
+ qe && vs.releaseUrl(qe);
} catch (e) {
console.debug?.(e);
}
@@ -4003,12 +4092,12 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
if (Ge.value && n === t || (e.dataset.mjrSourceKey = t, await a(), c || o !== Ke || !e.isConnected)) return;
let r = await i(t, { signal: s.signal });
if (c || o !== Ke || !e.isConnected) {
- r && r !== t && gs.releaseUrl(t);
+ r && r !== t && vs.releaseUrl(t);
return;
}
if (r && r !== Ge.value) {
let e = qe;
- Ge.value = r, qe = r === t ? "" : t, e && e !== qe && gs.releaseUrl(e);
+ Ge.value = r, qe = r === t ? "" : t, e && e !== qe && vs.releaseUrl(e);
} else !r && qe && qe !== t && (Ze(), Ge.value = "");
} catch {}
}, { immediate: !0 });
@@ -4055,7 +4144,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
Ue.value = !0;
try {
let e = g.value ? S.value : E.value;
- Je = String(e || "").trim(), gs.markError(e);
+ Je = String(e || "").trim(), vs.markError(e);
} catch {}
}
function R() {
@@ -4095,7 +4184,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
ref_key: "thumbRef",
ref: ze
}, [
- ce.value ? (q(), X("div", Cs)) : G("", !0),
+ ce.value ? (q(), X("div", Ts)) : G("", !0),
g.value ? (q(), X(H, { key: 1 }, [
U("div", {
class: "mjr-workflow-card-actions",
@@ -4107,7 +4196,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
title: _e.value ? "Remove favorite" : "Add favorite",
"aria-label": _e.value ? "Remove favorite" : "Add favorite",
onClick: n[0] ||= (e) => tt("favorite", e)
- }, [U("i", { class: wr(_e.value ? "pi pi-star-fill" : "pi pi-star") }, null, 2)], 10, ws)], 32),
+ }, [U("i", { class: wr(_e.value ? "pi pi-star-fill" : "pi pi-star") }, null, 2)], 10, Es)], 32),
k.value && !Ue.value ? (q(), X("img", {
key: 0,
class: wr(["mjr-thumb-media", { "mjr-workflow-graph-map-preview": w.value }]),
@@ -4116,18 +4205,18 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
loading: "lazy",
src: k.value,
onError: et
- }, null, 42, Ts)) : G("", !0),
+ }, null, 42, Ds)) : G("", !0),
U("div", { class: wr(["mjr-workflow-thumb", {
"has-thumbnail": k.value && !Ue.value,
"has-graph-map": w.value && !Ue.value
}]) }, [
n[15] ||= U("i", { class: "pi pi-sitemap" }, null, -1),
- U("div", Es, J(pe.value || "Workflow"), 1),
- U("div", Ds, [
- me.value ? (q(), X("span", Os, J(me.value), 1)) : G("", !0),
- he.value ? (q(), X("span", ks, J(he.value), 1)) : G("", !0),
- ge.value ? (q(), X("span", As, J(ge.value) + " nodes", 1)) : G("", !0),
- xe.value ? (q(), X("span", js, J(Se.value), 1)) : G("", !0)
+ U("div", Os, J(pe.value || "Workflow"), 1),
+ U("div", ks, [
+ me.value ? (q(), X("span", As, J(me.value), 1)) : G("", !0),
+ he.value ? (q(), X("span", js, J(he.value), 1)) : G("", !0),
+ ge.value ? (q(), X("span", Ms, J(ge.value) + " nodes", 1)) : G("", !0),
+ xe.value ? (q(), X("span", Ns, J(Se.value), 1)) : G("", !0)
])
], 2)
], 64)) : _.value ? (q(), X(H, { key: 2 }, [Ue.value ? G("", !0) : (q(), X("img", {
@@ -4140,7 +4229,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
loading: "lazy",
src: Ge.value || E.value || void 0,
onError: et
- }, null, 40, Ms)), Ue.value ? (q(), X("div", Ns, [...n[16] ||= [U("i", { class: "pi pi-image" }, null, -1)]])) : G("", !0)], 64)) : v.value ? (q(), X(H, { key: 3 }, [U("video", {
+ }, null, 40, Ps)), Ue.value ? (q(), X("div", Fs, [...n[16] ||= [U("i", { class: "pi pi-image" }, null, -1)]])) : G("", !0)], 64)) : v.value ? (q(), X(H, { key: 3 }, [U("video", {
ref_key: "videoRef",
ref: Be,
class: "mjr-thumb-media",
@@ -4154,22 +4243,22 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
draggable: !1,
tabindex: -1,
style: { "pointer-events": "none" }
- }, null, 8, Ps), n[17] ||= U("div", { class: "mjr-thumb-play" }, [U("i", { class: "pi pi-play" })], -1)], 64)) : y.value ? (q(), X(H, { key: 4 }, [k.value ? (q(), X("img", {
+ }, null, 8, Is), n[17] ||= U("div", { class: "mjr-thumb-play" }, [U("i", { class: "pi pi-play" })], -1)], 64)) : y.value ? (q(), X(H, { key: 4 }, [k.value ? (q(), X("img", {
key: 0,
class: "mjr-thumb-media",
src: k.value,
draggable: !1,
alt: ""
- }, null, 8, Fs)) : G("", !0), U("div", { class: wr(["mjr-audio-thumb", { "has-poster": k.value }]) }, [
- U("div", Is, [n[18] ||= U("span", { class: "mjr-audio-thumb-icon" }, [U("i", { class: "pi pi-volume-up" })], -1), U("span", Ls, J(M.value || "AUDIO"), 1)]),
- U("div", Rs, [(q(!0), X(H, null, pr(ee.value, (e, t) => (q(), X("span", {
+ }, null, 8, Ls)) : G("", !0), U("div", { class: wr(["mjr-audio-thumb", { "has-poster": k.value }]) }, [
+ U("div", Rs, [n[18] ||= U("span", { class: "mjr-audio-thumb-icon" }, [U("i", { class: "pi pi-volume-up" })], -1), U("span", zs, J(M.value || "AUDIO"), 1)]),
+ U("div", Bs, [(q(!0), X(H, null, pr(ee.value, (e, t) => (q(), X("span", {
key: t,
style: yr({
height: `${e.height}%`,
opacity: e.opacity
})
}, null, 4))), 128))]),
- U("div", zs, [U("span", Bs, J(te.value), 1), U("span", Vs, J(F.value), 1)])
+ U("div", Vs, [U("span", Hs, J(te.value), 1), U("span", Us, J(F.value), 1)])
], 2)], 64)) : b.value ? (q(), X(H, { key: 5 }, [k.value && !We.value ? (q(), X("img", {
key: 0,
class: "mjr-thumb-media",
@@ -4177,7 +4266,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
draggable: !1,
alt: A.value,
onError: R
- }, null, 40, Hs)) : (q(), X("div", Us, [...n[19] ||= [U("i", {
+ }, null, 40, Ws)) : (q(), X("div", Gs, [...n[19] ||= [U("i", {
class: "pi pi-box",
style: { "font-size": "2.5rem" }
}, null, -1)]]))], 64)) : G("", !0),
@@ -4201,16 +4290,16 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
}),
title: De.value ? `${M.value} - duplicate filename (${e.asset._mjrNameCollisionCount || 2} files)` : `${M.value} file`,
onClick: z
- }, J(M.value) + J(De.value ? "+" : ""), 13, Ws),
- Y(vs, {
+ }, J(M.value) + J(De.value ? "+" : ""), 13, Ks),
+ Y(bs, {
rating: ne.value,
class: "mjr-badge-rating"
}, null, 8, ["rating"]),
- Y(bs, {
+ Y(Ss, {
tags: re.value,
class: "mjr-badge-tags"
}, null, 8, ["tags"]),
- Y(Ss, { "gen-time-ms": ie.value }, null, 8, ["gen-time-ms"]),
+ Y(ws, { "gen-time-ms": ie.value }, null, 8, ["gen-time-ms"]),
ce.value ? (q(), X("div", {
key: 6,
class: "mjr-live-pill",
@@ -4218,11 +4307,11 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
}, [n[20] ||= U("span", {
class: "mjr-live-pill-dot",
"aria-hidden": "true"
- }, null, -1), U("span", null, J(le.value), 1)], 8, Gs)) : G("", !0),
- L.value || g.value && P.value || ae.value ? (q(), X("div", Ks, [
- L.value ? (q(), X("div", qs, J(L.value), 1)) : G("", !0),
- g.value && P.value ? (q(), X("div", Js, J(P.value), 1)) : G("", !0),
- ae.value ? (q(), X("div", Ys, "Time " + J(oe.value.text), 1)) : G("", !0)
+ }, null, -1), U("span", null, J(le.value), 1)], 8, qs)) : G("", !0),
+ L.value || g.value && P.value || ae.value ? (q(), X("div", Js, [
+ L.value ? (q(), X("div", Ys, J(L.value), 1)) : G("", !0),
+ g.value && P.value ? (q(), X("div", Xs, J(P.value), 1)) : G("", !0),
+ ae.value ? (q(), X("div", Zs, "Time " + J(oe.value.text), 1)) : G("", !0)
])) : G("", !0)
], 2),
U("div", {
@@ -4244,28 +4333,28 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
"margin-bottom": "4px",
"padding-right": "12px"
}
- }, J(N.value), 9, Zs),
- U("div", Qs, [g.value ? (q(), X(H, { key: 0 }, [
+ }, J(N.value), 9, $s),
+ U("div", ec, [g.value ? (q(), X(H, { key: 0 }, [
pe.value ? (q(), X("span", {
key: 0,
class: "mjr-meta-workflow-task",
title: `Task: ${pe.value}`
- }, J(pe.value), 9, $s)) : G("", !0),
+ }, J(pe.value), 9, tc)) : G("", !0),
ve.value ? (q(), X("span", {
key: 1,
class: "mjr-meta-workflow-subgraphs",
title: `${ve.value} subgraph${ve.value > 1 ? "s" : ""}`
- }, J(ve.value) + " sub", 9, ec)) : G("", !0),
+ }, J(ve.value) + " sub", 9, nc)) : G("", !0),
xe.value ? (q(), X("span", {
key: 2,
class: "mjr-meta-workflow-missing",
title: Se.value
- }, J(Se.value), 9, tc)) : G("", !0)
- ], 64)) : G("", !0), (q(!0), X(H, null, pr(Ee.value, (e, t) => (q(), X(H, { key: e.key }, [t > 0 ? (q(), X("span", nc, "/")) : G("", !0), U("span", {
+ }, J(Se.value), 9, rc)) : G("", !0)
+ ], 64)) : G("", !0), (q(!0), X(H, null, pr(Ee.value, (e, t) => (q(), X(H, { key: e.key }, [t > 0 ? (q(), X("span", ic, "/")) : G("", !0), U("span", {
class: wr(e.className),
style: yr(e.style || null),
title: e.title
- }, J(e.text), 15, rc)], 64))), 128))]),
+ }, J(e.text), 15, ac)], 64))), 128))]),
U("div", {
ref_key: "dotWrapperRef",
ref: He,
@@ -4277,7 +4366,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
"z-index": "2"
}
}, null, 512)
- ], 8, Xs),
+ ], 8, Qs),
Ae.value ? (q(), nr(r, {
key: 0,
type: "button",
@@ -4297,7 +4386,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
onKeydown: n[7] ||= fr(() => {}, ["stop"]),
onDragstart: n[8] ||= fr(() => {}, ["stop", "prevent"])
}, {
- default: W(() => [n[21] ||= U("span", { class: "pi pi-clone" }, null, -1), U("span", ic, J(je.value), 1)]),
+ default: W(() => [n[21] ||= U("span", { class: "pi pi-clone" }, null, -1), U("span", oc, J(je.value), 1)]),
_: 1
}, 8, [
"disabled",
@@ -4324,7 +4413,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
onKeydown: n[13] ||= fr(() => {}, ["stop"]),
onDragstart: n[14] ||= fr(() => {}, ["stop", "prevent"])
}, {
- default: W(() => [n[22] ||= U("span", { class: "pi pi-copy" }, null, -1), U("span", ac, J(Ne.value), 1)]),
+ default: W(() => [n[22] ||= U("span", { class: "pi pi-copy" }, null, -1), U("span", sc, J(Ne.value), 1)]),
_: 1
}, 8, [
"disabled",
@@ -4335,19 +4424,19 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
], 64);
};
}
-}), sc = [
+}), lc = [
"data-mjr-asset-id",
"data-mjr-filename-key",
"data-mjr-stem",
"aria-label",
"aria-selected"
-], cc = {
+], uc = {
class: "mjr-card-info mjr-card-meta",
style: {
padding: "6px 8px",
"min-width": "0"
}
-}, lc = ["title"], uc = /*#__PURE__*/ ((e, t) => {
+}, dc = ["title"], fc = /*#__PURE__*/ ((e, t) => {
let n = e.__vccOpts || e;
for (let [e, r] of t) n[e] = r;
return n;
@@ -4416,7 +4505,7 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
}), U("path", {
fill: "#D9A730",
d: "M20 6H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z"
- })])], -1), U("div", cc, [U("div", {
+ })])], -1), U("div", uc, [U("div", {
class: "mjr-card-filename",
title: e.asset.filename,
style: {
@@ -4425,14 +4514,14 @@ var gs = hs(), _s = ["title"], vs = /* @__PURE__ */ lr({
"white-space": "nowrap",
"margin-bottom": "4px"
}
- }, J(e.asset.filename), 9, lc), n[0] ||= U("div", { class: "mjr-card-meta-row" }, null, -1)])], 42, sc));
+ }, J(e.asset.filename), 9, dc), n[0] ||= U("div", { class: "mjr-card-meta-row" }, null, -1)])], 42, lc));
}
}), [["__scopeId", "data-v-252fa951"]]);
// ui/vue/composables/useGridState.ts
-function dc(e) {
+function pc(e) {
return Array.from(e || []).map((e) => String(e || "").trim()).filter(Boolean);
}
-function fc() {
+function mc() {
let e = br({
query: "*",
offset: 0,
@@ -4462,7 +4551,7 @@ function fc() {
e.virtualGrid = { setItems(t) {
e.assets = Array.isArray(t) ? t.slice() : [];
} };
- let t = K(() => new Set(dc(e.selectedIds)));
+ let t = K(() => new Set(pc(e.selectedIds)));
function n(t = "", { error: n = !1 } = {}) {
e.statusMessage = String(t || ""), e.statusError = !!n;
}
@@ -4482,14 +4571,14 @@ function fc() {
e.query = String(t || "*") || "*", e.offset = 0, e.cursor = null, e.total = n == null ? null : Number(n) || 0, e.done = !!r, e.assets = [], o();
}
function c(t, n = "", { preserveAnchor: r = !1 } = {}) {
- let i = Array.from(new Set(dc(t))), a = String(n || i[0] || "").trim();
+ let i = Array.from(new Set(pc(t))), a = String(n || i[0] || "").trim();
return e.selectedIds = i, e.activeId = a, r || (a ? e.selectionAnchorId = a : i.length || (e.selectionAnchorId = "")), {
selectedIds: i,
activeId: a
};
}
function l(t, { activeId: n = "" } = {}) {
- let r = new Set(dc(t)), i = dc(e.selectedIds).filter((e) => r.has(e)), a = String(n || e.activeId || i[0] || "").trim();
+ let r = new Set(pc(t)), i = pc(e.selectedIds).filter((e) => r.has(e)), a = String(n || e.activeId || i[0] || "").trim();
return c(i, r.has(a) ? a : i[0] || "", { preserveAnchor: !0 });
}
function u() {
@@ -4520,14 +4609,14 @@ function fc() {
};
}
// ui/vue/composables/gridVisibility.ts
-function pc(e) {
+function hc(e) {
try {
return typeof e?.getClientRects != "function" || e.getClientRects().length > 0;
} catch (e) {
return console.debug?.(e), !1;
}
}
-function mc(e, { requireClientRect: t = !0 } = {}) {
+function gc(e, { requireClientRect: t = !0 } = {}) {
if (!e || typeof e != "object") return !1;
try {
if (typeof document < "u" && document.hidden) return !1;
@@ -4552,14 +4641,14 @@ function mc(e, { requireClientRect: t = !0 } = {}) {
} catch (e) {
console.debug?.(e);
}
- return !t || pc(e);
+ return !t || hc(e);
}
-function hc(e) {
- return mc(e, { requireClientRect: !0 });
+function _c(e) {
+ return gc(e, { requireClientRect: !0 });
}
-function gc(e, t = null) {
+function vc(e, t = null) {
let n = t || e;
- if (!hc(n) || e && e !== n && !mc(e, { requireClientRect: !1 })) return !1;
+ if (!_c(n) || e && e !== n && !gc(e, { requireClientRect: !1 })) return !1;
try {
let e = Number(n?.clientWidth || 0) || 0, t = Number(n?.clientHeight || 0) || 0;
return e > 0 && t > 0;
@@ -4568,50 +4657,50 @@ function gc(e, t = null) {
}
}
// ui/vue/grid/useGridQuery.ts
-function _c(e, t = "") {
+function yc(e, t = "") {
return String(e ?? t).trim() || String(t);
}
-function vc(e, t = 0) {
+function bc(e, t = 0) {
let n = Number(e);
return Number.isFinite(n) ? n : t;
}
-function yc(e) {
+function xc(e) {
return e === !0 || e === 1 || String(e || "") === "1";
}
-function bc(e = {}) {
- let t = _c(e.q ?? e.query, "*") || "*", n = Object.prototype.hasOwnProperty.call(e, "resolutionCompare") ? String(e.resolutionCompare ?? "").trim().toLowerCase() : "gte", r = n === "lte" ? "lte" : n ? "gte" : "";
+function Sc(e = {}) {
+ let t = yc(e.q ?? e.query, "*") || "*", n = Object.prototype.hasOwnProperty.call(e, "resolutionCompare") ? String(e.resolutionCompare ?? "").trim().toLowerCase() : "gte", r = n === "lte" ? "lte" : n ? "gte" : "";
return Object.freeze({
- scope: _c(e.scope, "output").toLowerCase(),
+ scope: yc(e.scope, "output").toLowerCase(),
q: t,
query: t,
- customRootId: _c(e.customRootId),
- subfolder: _c(e.subfolder),
- collectionId: _c(e.collectionId),
- viewScope: _c(e.viewScope),
- kind: _c(e.kind).toLowerCase(),
- workflowOnly: yc(e.workflowOnly),
- minRating: vc(e.minRating, 0),
- minSizeMB: vc(e.minSizeMB, 0),
- maxSizeMB: vc(e.maxSizeMB, 0),
+ customRootId: yc(e.customRootId),
+ subfolder: yc(e.subfolder),
+ collectionId: yc(e.collectionId),
+ viewScope: yc(e.viewScope),
+ kind: yc(e.kind).toLowerCase(),
+ workflowOnly: xc(e.workflowOnly),
+ minRating: bc(e.minRating, 0),
+ minSizeMB: bc(e.minSizeMB, 0),
+ maxSizeMB: bc(e.maxSizeMB, 0),
resolutionCompare: r,
- minWidth: vc(e.minWidth, 0),
- minHeight: vc(e.minHeight, 0),
- maxWidth: vc(e.maxWidth, 0),
- maxHeight: vc(e.maxHeight, 0),
- workflowType: _c(e.workflowType).toUpperCase(),
- workflowId: _c(e.workflowId),
- workflowModel: _c(e.workflowModel),
- workflowRunsOn: _c(e.workflowRunsOn).toLowerCase(),
- dateRange: _c(e.dateRange).toLowerCase(),
- dateExact: _c(e.dateExact),
- metadataSearchMode: _c(e.metadataSearchMode),
- sort: _c(e.sort, "mtime_desc").toLowerCase(),
- semanticMode: e.semanticMode === void 0 || e.semanticMode === null ? void 0 : yc(e.semanticMode),
- groupStacks: e.groupStacks === void 0 || e.groupStacks === null ? void 0 : yc(e.groupStacks)
+ minWidth: bc(e.minWidth, 0),
+ minHeight: bc(e.minHeight, 0),
+ maxWidth: bc(e.maxWidth, 0),
+ maxHeight: bc(e.maxHeight, 0),
+ workflowType: yc(e.workflowType).toUpperCase(),
+ workflowId: yc(e.workflowId),
+ workflowModel: yc(e.workflowModel),
+ workflowRunsOn: yc(e.workflowRunsOn).toLowerCase(),
+ dateRange: yc(e.dateRange).toLowerCase(),
+ dateExact: yc(e.dateExact),
+ metadataSearchMode: yc(e.metadataSearchMode),
+ sort: yc(e.sort, "mtime_desc").toLowerCase(),
+ semanticMode: e.semanticMode === void 0 || e.semanticMode === null ? void 0 : xc(e.semanticMode),
+ groupStacks: e.groupStacks === void 0 || e.groupStacks === null ? void 0 : xc(e.groupStacks)
});
}
-function xc(e = {}, t = {}) {
- return bc({
+function Cc(e = {}, t = {}) {
+ return Sc({
scope: e.mjrScope,
q: e.mjrQuery,
customRootId: e.mjrCustomRootId,
@@ -4641,16 +4730,16 @@ function xc(e = {}, t = {}) {
...t
});
}
-function Sc(e = null, t = "*") {
+function wc(e = null, t = "*") {
let n = e?.dataset || {};
- return xc(n, { q: n.mjrQuery ?? t }).q;
+ return Cc(n, { q: n.mjrQuery ?? t }).q;
}
-function Cc(e = null, t = "mtime_desc") {
+function Tc(e = null, t = "mtime_desc") {
let n = e?.dataset || {};
- return xc(n, { sort: n.mjrSort ?? t }).sort;
+ return Cc(n, { sort: n.mjrSort ?? t }).sort;
}
-function wc(e = {}) {
- let t = bc(e);
+function Ec(e = {}) {
+ let t = Sc(e);
return [
t.scope,
t.q,
@@ -4676,30 +4765,30 @@ function wc(e = {}) {
t.dateExact
].join("|");
}
-function Tc(e = {}) {
- let t = bc(e), n = t.viewScope && t.viewScope !== t.scope ? t.viewScope : "";
+function Dc(e = {}) {
+ let t = Sc(e), n = t.viewScope && t.viewScope !== t.scope ? t.viewScope : "";
return !!(t.subfolder || t.customRootId || t.collectionId || n || t.kind || t.workflowOnly || t.minRating > 0 || t.minSizeMB > 0 || t.maxSizeMB > 0 || t.minWidth > 0 || t.minHeight > 0 || t.maxWidth > 0 || t.maxHeight > 0 || t.workflowType || t.workflowId || t.workflowModel || t.workflowRunsOn || t.dateRange || t.dateExact);
}
-function Ec(e = {}) {
- let t = bc(e);
- return t.scope === "output" && t.q === "*" && t.sort === "mtime_desc" && !Tc(t);
+function Oc(e = {}) {
+ let t = Sc(e);
+ return t.scope === "output" && t.q === "*" && t.sort === "mtime_desc" && !Dc(t);
}
// ui/features/grid/PersistentAssetCache.ts
-var Dc = "mjr-asset-cache", Oc = 1, kc = "snapshots", Ac = 24, jc = 500, Mc = 27e5, Nc = null;
-function Pc() {
- return Nc || (Nc = new Promise((e) => {
+var kc = "mjr-asset-cache", Ac = 1, jc = "snapshots", Mc = 24, Nc = 500, Pc = 27e5, Fc = null;
+function Ic() {
+ return Fc || (Fc = new Promise((e) => {
try {
- let t = indexedDB.open(Dc, Oc);
+ let t = indexedDB.open(kc, Ac);
t.onupgradeneeded = () => {
let e = t.result;
- e.objectStoreNames.contains(kc) || e.createObjectStore(kc, { keyPath: "key" });
+ e.objectStoreNames.contains(jc) || e.createObjectStore(jc, { keyPath: "key" });
}, t.onsuccess = () => e(t.result), t.onerror = () => e(null);
} catch {
e(null);
}
- }), Nc);
+ }), Fc);
}
-function Fc(e) {
+function Lc(e) {
return !e || typeof e != "object" ? null : {
id: e.id,
filename: e.filename,
@@ -4724,39 +4813,39 @@ function Fc(e) {
positive_prompt: e.positive_prompt
};
}
-function Ic(e) {
+function Rc(e) {
if (!e || typeof e != "object") return null;
let t = Number(e.at || 0);
- if (!t || Date.now() - t > Mc) return null;
- let n = Array.isArray(e.assets) ? e.assets.map(Fc).filter(Boolean) : [];
+ if (!t || Date.now() - t > Pc) return null;
+ let n = Array.isArray(e.assets) ? e.assets.map(Lc).filter(Boolean) : [];
return n.length ? {
...e,
assets: n
} : null;
}
-async function Lc(e) {
- let t = await Pc();
+async function zc(e) {
+ let t = await Ic();
if (!t) return null;
try {
- return t.transaction(kc, e).objectStore(kc);
+ return t.transaction(jc, e).objectStore(jc);
} catch {
return null;
}
}
-var Rc = {
+var Bc = {
async get(e) {
- let t = await Lc("readonly");
+ let t = await zc("readonly");
return !t || !e ? null : await new Promise((n) => {
let r = t.get(e);
- r.onsuccess = () => n(Ic(r.result)), r.onerror = () => n(null);
+ r.onsuccess = () => n(Rc(r.result)), r.onerror = () => n(null);
});
},
async put(e, t) {
- let n = await Lc("readwrite"), r = Ic({
+ let n = await zc("readwrite"), r = Rc({
...t,
key: e,
at: t?.at || Date.now(),
- assets: Array.isArray(t?.assets) ? t.assets.slice(0, jc) : []
+ assets: Array.isArray(t?.assets) ? t.assets.slice(0, Nc) : []
});
return !n || !e || !r ? !1 : (await new Promise((e) => {
let t = n.put(r);
@@ -4764,7 +4853,7 @@ var Rc = {
}), this.prune(), !0);
},
async prune() {
- let e = await Lc("readwrite");
+ let e = await zc("readwrite");
if (!e) return;
let t = await new Promise((t) => {
let n = [], r = e.openCursor();
@@ -4773,175 +4862,175 @@ var Rc = {
if (!e) return t(n);
n.push(e.value), e.continue();
}, r.onerror = () => t(n);
- }), n = t.filter((e) => !Ic(e)).map((e) => e.key), r = t.filter((e) => !n.includes(e.key)).sort((e, t) => Number(e.at || 0) - Number(t.at || 0)).slice(0, Math.max(0, t.length - Ac)).map((e) => e.key);
+ }), n = t.filter((e) => !Rc(e)).map((e) => e.key), r = t.filter((e) => !n.includes(e.key)).sort((e, t) => Number(e.at || 0) - Number(t.at || 0)).slice(0, Math.max(0, t.length - Mc)).map((e) => e.key);
for (let t of [...n, ...r]) e.delete(t);
}
-}, zc = /* @__PURE__ */ new Map(), Bc = !0, Vc = 8, Hc = 200, Uc = "mjr_grid_snapshot_cache_v2", Wc = 18e5, Gc = 1500, Kc = !1, qc = null, Jc = !1;
-function Yc() {
- return Bc;
+}, Vc = /* @__PURE__ */ new Map(), Hc = !0, Uc = 8, Wc = 200, Gc = "mjr_grid_snapshot_cache_v2", Kc = 18e5, qc = 1500, Jc = !1, Yc = null, Xc = !1;
+function Zc() {
+ return Hc;
}
-function Xc() {
+function Qc() {
try {
- zc.clear(), nl()?.removeItem?.(Uc), globalThis?.sessionStorage?.removeItem?.(Uc);
+ Vc.clear(), il()?.removeItem?.(Gc), globalThis?.sessionStorage?.removeItem?.(Gc);
} catch (e) {
console.debug?.(e);
}
}
-var Zc = /* @__PURE__ */ "id.filename.name.display_name.filepath.path.fullpath.full_path.file_info.subfolder.source.type.root_id.custom_root_id.kind.ext.size.mtime.generation_time.file_creation_time.created_at.updated_at.indexed_at.width.height.duration.thumbnail_url.thumb_url.preview_url.poster.url.rating.tags.has_workflow.hasWorkflow.has_generation_data.hasGenerationData.workflow_type.workflowType.workflow_id.workflowId.generation_time_ms.positive_prompt.enhanced_caption.auto_tags.has_ai_info.has_ai_vector.has_ai_auto_tags.has_ai_enhanced_caption.job_id.stack_id.source_node_id.source_node_type.date.date_exact".split(".");
-function Qc(e, t = "") {
+var $c = /* @__PURE__ */ "id.filename.name.display_name.filepath.path.fullpath.full_path.file_info.subfolder.source.type.root_id.custom_root_id.kind.ext.size.mtime.generation_time.file_creation_time.created_at.updated_at.indexed_at.width.height.duration.thumbnail_url.thumb_url.preview_url.poster.url.rating.tags.has_workflow.hasWorkflow.has_generation_data.hasGenerationData.workflow_type.workflowType.workflow_id.workflowId.generation_time_ms.positive_prompt.enhanced_caption.auto_tags.has_ai_info.has_ai_vector.has_ai_auto_tags.has_ai_enhanced_caption.job_id.stack_id.source_node_id.source_node_type.date.date_exact".split(".");
+function el(e, t = "") {
try {
return String(e ?? t).trim();
} catch {
return String(t);
}
}
-function $c(e = {}) {
+function tl(e = {}) {
return JSON.stringify({
- scope: Qc(e.scope || "output", "output"),
- query: Qc(e.query || e.q || "*", "*"),
- customRootId: Qc(e.customRootId || ""),
- subfolder: Qc(e.subfolder || ""),
- collectionId: Qc(e.collectionId || ""),
- viewScope: Qc(e.viewScope || ""),
- kind: Qc(e.kind || ""),
- workflowOnly: Qc(e.workflowOnly ? "1" : ""),
- minRating: Qc(e.minRating || ""),
- minSizeMB: Qc(e.minSizeMB || ""),
- maxSizeMB: Qc(e.maxSizeMB || ""),
- resolutionCompare: Qc(e.resolutionCompare || ""),
- minWidth: Qc(e.minWidth || ""),
- minHeight: Qc(e.minHeight || ""),
- maxWidth: Qc(e.maxWidth || ""),
- maxHeight: Qc(e.maxHeight || ""),
- workflowType: Qc(e.workflowType || "").toUpperCase(),
- workflowId: Qc(e.workflowId || ""),
- workflowModel: Qc(e.workflowModel || ""),
- workflowRunsOn: Qc(e.workflowRunsOn || "").toLowerCase(),
- dateRange: Qc(e.dateRange || ""),
- dateExact: Qc(e.dateExact || ""),
- sort: Qc(e.sort || "mtime_desc", "mtime_desc"),
- semanticMode: Qc(e.semanticMode ? "1" : "")
+ scope: el(e.scope || "output", "output"),
+ query: el(e.query || e.q || "*", "*"),
+ customRootId: el(e.customRootId || ""),
+ subfolder: el(e.subfolder || ""),
+ collectionId: el(e.collectionId || ""),
+ viewScope: el(e.viewScope || ""),
+ kind: el(e.kind || ""),
+ workflowOnly: el(e.workflowOnly ? "1" : ""),
+ minRating: el(e.minRating || ""),
+ minSizeMB: el(e.minSizeMB || ""),
+ maxSizeMB: el(e.maxSizeMB || ""),
+ resolutionCompare: el(e.resolutionCompare || ""),
+ minWidth: el(e.minWidth || ""),
+ minHeight: el(e.minHeight || ""),
+ maxWidth: el(e.maxWidth || ""),
+ maxHeight: el(e.maxHeight || ""),
+ workflowType: el(e.workflowType || "").toUpperCase(),
+ workflowId: el(e.workflowId || ""),
+ workflowModel: el(e.workflowModel || ""),
+ workflowRunsOn: el(e.workflowRunsOn || "").toLowerCase(),
+ dateRange: el(e.dateRange || ""),
+ dateExact: el(e.dateExact || ""),
+ sort: el(e.sort || "mtime_desc", "mtime_desc"),
+ semanticMode: el(e.semanticMode ? "1" : "")
});
}
-function el(e) {
+function nl(e) {
if (!e || typeof e != "object") return null;
let t = {};
- for (let n of Zc) e[n] !== void 0 && (t[n] = e[n]);
+ for (let n of $c) e[n] !== void 0 && (t[n] = e[n]);
return !t.type && t.source && (t.type = t.source), !t.source && t.type && (t.source = t.type), t.kind ||= e.kind || "image", Array.isArray(t.tags) && (t.tags = t.tags.slice(0, 80)), Array.isArray(t.auto_tags) && (t.auto_tags = t.auto_tags.slice(0, 80)), t;
}
-function tl(e) {
+function rl(e) {
if (!e || typeof e != "object") return null;
let t = Number(e.at || 0) || 0;
- if (!t || Date.now() - t > Wc) return null;
- let n = Array.isArray(e.assets) ? e.assets.map(el).filter(Boolean) : [];
+ if (!t || Date.now() - t > Kc) return null;
+ let n = Array.isArray(e.assets) ? e.assets.map(nl).filter(Boolean) : [];
if (!n.length) return null;
let r = Number(e.total ?? n.length), i = Number(e.offset ?? n.length);
return {
assets: n,
- title: Qc(e.title || "Cached", "Cached"),
+ title: el(e.title || "Cached", "Cached"),
at: t,
total: Number.isFinite(r) ? Math.max(0, r) : n.length,
offset: Number.isFinite(i) ? Math.max(n.length, i) : n.length,
done: !!e.done,
- query: Qc(e.query || "*", "*")
+ query: el(e.query || "*", "*")
};
}
-function nl() {
+function il() {
try {
return globalThis?.localStorage || null;
} catch {
return null;
}
}
-Yc() || Xc();
-function rl(e) {
+Zc() || Qc();
+function al(e) {
try {
let t = globalThis?.sessionStorage;
if (!t || !e) return;
- let n = t.getItem?.(Uc);
+ let n = t.getItem?.(Gc);
if (!n) return;
- e.getItem?.(Uc) || e.setItem(Uc, n), t.removeItem(Uc);
+ e.getItem?.(Gc) || e.setItem(Gc, n), t.removeItem(Gc);
} catch (e) {
console.debug?.(e);
}
}
-function il() {
+function ol() {
let e = Date.now();
- for (let [t, n] of zc.entries()) {
+ for (let [t, n] of Vc.entries()) {
let r = Number(n?.at || 0) || 0;
- (!r || e - r > Wc) && zc.delete(t);
+ (!r || e - r > Kc) && Vc.delete(t);
}
- for (; zc.size > Vc;) {
- let e = zc.keys().next().value;
+ for (; Vc.size > Uc;) {
+ let e = Vc.keys().next().value;
if (!e) break;
- zc.delete(e);
+ Vc.delete(e);
}
}
-function al() {
- if (!Yc()) Kc = !0, Xc();
- else if (!Kc) {
- Kc = !0;
+function sl() {
+ if (!Zc()) Jc = !0, Qc();
+ else if (!Jc) {
+ Jc = !0;
try {
- let e = nl();
- rl(e);
- let t = e?.getItem?.(Uc);
+ let e = il();
+ al(e);
+ let t = e?.getItem?.(Gc);
if (!t) return;
let n = JSON.parse(t), r = Array.isArray(n?.entries) ? n.entries : [];
for (let e of r) {
if (!Array.isArray(e) || e.length < 2) continue;
- let t = String(e[0] || ""), n = tl(e[1]);
- t && n && zc.set(t, n);
+ let t = String(e[0] || ""), n = rl(e[1]);
+ t && n && Vc.set(t, n);
}
- il();
+ ol();
} catch (e) {
console.debug?.(e);
}
}
}
-function ol() {
- if (!Yc()) Xc();
+function cl() {
+ if (!Zc()) Qc();
else try {
- il();
- let e = nl();
+ ol();
+ let e = il();
if (!e) return;
- let t = Array.from(zc.entries()).map(([e, t]) => [e, {
+ let t = Array.from(Vc.entries()).map(([e, t]) => [e, {
...t,
- assets: Array.isArray(t?.assets) ? t.assets.slice(0, Hc) : []
+ assets: Array.isArray(t?.assets) ? t.assets.slice(0, Wc) : []
}]);
- e.setItem(Uc, JSON.stringify({ entries: t }));
+ e.setItem(Gc, JSON.stringify({ entries: t }));
} catch (e) {
console.debug?.(e);
}
}
-function sl() {
- Yc() ? (Jc = !0, !qc && (qc = setTimeout(() => {
- qc = null, Jc && (Jc = !1, ol());
- }, Gc))) : (Xc(), Jc = !1);
+function ll() {
+ Zc() ? (Xc = !0, !Yc && (Yc = setTimeout(() => {
+ Yc = null, Xc && (Xc = !1, cl());
+ }, qc))) : (Qc(), Xc = !1);
}
-function cl() {
- qc &&= (clearTimeout(qc), null), Jc && (Jc = !1, ol());
+function ul() {
+ Yc &&= (clearTimeout(Yc), null), Xc && (Xc = !1, cl());
}
-function ll(e) {
- if (!Yc()) return null;
- al();
- let t = tl(zc.get(e));
- return t ? (zc.delete(e), zc.set(e, t), sl(), t) : (zc.delete(e), sl(), null);
+function dl(e) {
+ if (!Zc()) return null;
+ sl();
+ let t = rl(Vc.get(e));
+ return t ? (Vc.delete(e), Vc.set(e, t), ll(), t) : (Vc.delete(e), ll(), null);
}
-function ul(e) {
- return Yc() ? (al(), !!tl(zc.get(e))) : !1;
+function fl(e) {
+ return Zc() ? (sl(), !!rl(Vc.get(e))) : !1;
}
-function dl(e, t) {
- if (!Yc() || !e || !t || typeof t != "object") return !1;
- let n = tl({
+function pl(e, t) {
+ if (!Zc() || !e || !t || typeof t != "object") return !1;
+ let n = rl({
...t,
at: t.at || Date.now()
});
- return n ? (zc.delete(e), zc.set(e, n), sl(), Rc.put(String(e || ""), n).catch((e) => {
+ return n ? (Vc.delete(e), Vc.set(e, n), ll(), Bc.put(String(e || ""), n).catch((e) => {
console.debug?.(e);
}), !0) : !1;
}
// ui/vue/grid/useAssetCollection.ts
-function fl(e) {
+function ml(e) {
return !e || typeof e != "object" ? "" : [
e.source || e.type || "output",
e.root_id || e.custom_root_id || "",
@@ -4949,7 +5038,7 @@ function fl(e) {
e.filename || e.filepath || e.path || e.fullpath || e.full_path || ""
].join("|").trim().toLowerCase();
}
-function pl(e = [], { assetKey: t = fl } = {}) {
+function hl(e = [], { assetKey: t = ml } = {}) {
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
for (let i of Array.isArray(e) ? e : []) {
if (!i || typeof i != "object") continue;
@@ -4961,12 +5050,12 @@ function pl(e = [], { assetKey: t = fl } = {}) {
byKey: r
};
}
-function ml(e, { assetKey: t = fl } = {}) {
+function gl(e, { assetKey: t = ml } = {}) {
if (!e || typeof e != "object") return e;
- let n = pl(Array.isArray(e.assets) ? e.assets : [], { assetKey: t });
+ let n = hl(Array.isArray(e.assets) ? e.assets : [], { assetKey: t });
return e.assetIdSet = new Set(n.byId.keys()), e.seenKeys = new Set(n.byKey.keys()), e;
}
-function hl(e, t = [], { assetKey: n = fl } = {}) {
+function _l(e, t = [], { assetKey: n = ml } = {}) {
if (!e || typeof e != "object") return 0;
let r = new Set((Array.isArray(t) ? t : [t]).map((e) => e == null ? "" : typeof e == "object" && e?.id != null ? String(e.id) : String(e)).map((e) => e.trim()).filter(Boolean));
if (!r.size) return 0;
@@ -4974,10 +5063,10 @@ function hl(e, t = [], { assetKey: n = fl } = {}) {
return e.assets = (Array.isArray(e.assets) ? e.assets : []).filter((e) => {
let t = e?.id == null ? "" : String(e.id);
return !t || !r.has(t) || (i += 1, !1);
- }), i > 0 && ml(e, { assetKey: n }), i;
+ }), i > 0 && gl(e, { assetKey: n }), i;
}
// ui/vue/grid/usePagedAssets.ts
-function gl({ assets: e = [], count: t = null, limit: n = 0, offset: r = 0, total: i = null } = {}) {
+function vl({ assets: e = [], count: t = null, limit: n = 0, offset: r = 0, total: i = null } = {}) {
let a = Array.isArray(e) ? e.length : 0, o = t == null ? a : Math.max(0, Number(t) || 0);
if (o <= 0) return 0;
let s = Math.max(0, Number(n) || 0), c = Math.max(0, Number(r) || 0), l = i == null ? null : Math.max(0, Number(i) || 0), u = l == null ? null : Math.max(0, l - c);
@@ -4986,7 +5075,7 @@ function gl({ assets: e = [], count: t = null, limit: n = 0, offset: r = 0, tota
let d = Math.min(s, u ?? 0);
return d <= 0 ? o : Math.max(o, d);
}
-async function _l({ fetchPage: e, applyPage: t, getLimit: n, canContinue: r = null, beforeApplyPage: i = null, onEmptyPage: a = null, maxEmptyPages: o = 6 } = {}) {
+async function yl({ fetchPage: e, applyPage: t, getLimit: n, canContinue: r = null, beforeApplyPage: i = null, onEmptyPage: a = null, maxEmptyPages: o = 6 } = {}) {
if (typeof e != "function" || typeof t != "function") return {
ok: !1,
error: /* @__PURE__ */ Error("fetchPage and applyPage are required")
@@ -5042,7 +5131,7 @@ async function _l({ fetchPage: e, applyPage: t, getLimit: n, canContinue: r = nu
lastResult: l
};
}
-function vl({ query: e, collection: t, fetchPage: n, pageSize: r = 80, getPageSize: i = null } = {}) {
+function bl({ query: e, collection: t, fetchPage: n, pageSize: r = 80, getPageSize: i = null } = {}) {
let a = xr({
offset: 0,
cursor: null,
@@ -5073,7 +5162,7 @@ function vl({ query: e, collection: t, fetchPage: n, pageSize: r = 80, getPageSi
};
}
function f(e, { limit: n = l() } = {}) {
- let r = Array.isArray(e?.assets) ? e.assets : [], i = e?.total == null ? null : Number(e.total) || 0, o = gl({
+ let r = Array.isArray(e?.assets) ? e.assets : [], i = e?.total == null ? null : Number(e.total) || 0, o = vl({
assets: r,
count: e?.count,
limit: Number(e?.limit || n) || n,
@@ -5138,7 +5227,7 @@ function vl({ query: e, collection: t, fetchPage: n, pageSize: r = 80, getPageSi
let u = a.requestId;
a.loading = !0, a.error = null;
try {
- let n = await _l({
+ let n = await yl({
maxEmptyPages: o,
canContinue: t,
getLimit: e,
@@ -5198,12 +5287,12 @@ function vl({ query: e, collection: t, fetchPage: n, pageSize: r = 80, getPageSi
};
}
// ui/vue/composables/useVirtualGrid.ts
-function yl(e, t) {
+function xl(e, t) {
if (!t || typeof t != "object") return !1;
- let n = xc(e?.dataset || {}), r = n.scope, i = n.subfolder.toLowerCase(), a = n.kind, o = n.workflowOnly, s = n.minRating, c = n.workflowType.toLowerCase(), l = String(n.workflowId || "").trim(), u = n.dateExact, d = String(t?.subfolder || "").trim().toLowerCase(), f = String(t?.type || t?.source || "output").trim().toLowerCase(), p = String(t?.kind || "").trim().toLowerCase(), m = String(t?.workflow_type || t?.workflowType || "").trim().toLowerCase(), h = String(t?.workflow_id || t?.workflowId || t?.metadata?.workflow_id || t?.metadata?.workflow?.id || "").trim(), g = String(t?.date_exact || t?.date || "").trim(), _ = t?.has_workflow ?? t?.hasWorkflow ?? null;
+ let n = Cc(e?.dataset || {}), r = n.scope, i = n.subfolder.toLowerCase(), a = n.kind, o = n.workflowOnly, s = n.minRating, c = n.workflowType.toLowerCase(), l = String(n.workflowId || "").trim(), u = n.dateExact, d = String(t?.subfolder || "").trim().toLowerCase(), f = String(t?.type || t?.source || "output").trim().toLowerCase(), p = String(t?.kind || "").trim().toLowerCase(), m = String(t?.workflow_type || t?.workflowType || "").trim().toLowerCase(), h = String(t?.workflow_id || t?.workflowId || t?.metadata?.workflow_id || t?.metadata?.workflow?.id || "").trim(), g = String(t?.date_exact || t?.date || "").trim(), _ = t?.has_workflow ?? t?.hasWorkflow ?? null;
return !(r && r !== "all" && f && f !== r || i && d !== i || a && p && p !== a || o && _ !== null && !_ || s > 0 && (Number(t?.rating || 0) || 0) < s || c && m !== c || l && h && h !== l || u && g && g !== u);
}
-async function bl(e, t, n, r, i, { requestId: a = 0, signal: o = null, cursor: s = null } = {}) {
+async function Sl(e, t, n, r, i, { requestId: a = 0, signal: o = null, cursor: s = null } = {}) {
let c = (e) => {
if (typeof e == "string") return e;
if (e && typeof e == "object") {
@@ -5211,9 +5300,9 @@ async function bl(e, t, n, r, i, { requestId: a = 0, signal: o = null, cursor: s
if (typeof e.target?.value == "string") return e.target.value;
}
return String(e || "");
- }, l = xc(e?.dataset || {}), { scope: u, customRootId: d, subfolder: f, kind: p, workflowOnly: m, minRating: h, minSizeMB: g, maxSizeMB: _, resolutionCompare: v, minWidth: y, minHeight: b, maxWidth: x, maxHeight: S, workflowType: C, workflowId: w, workflowModel: T, workflowRunsOn: E, dateRange: D, dateExact: O, metadataSearchMode: k } = l, A = l.sort || "mtime_desc", j = c(t).trim() || "*", M = /^\[object\s+HTML.*Element\]$/i.test(j) ? "*" : j, N = i.sanitizeQuery(M) || M;
+ }, l = Cc(e?.dataset || {}), { scope: u, customRootId: d, subfolder: f, kind: p, workflowOnly: m, minRating: h, minSizeMB: g, maxSizeMB: _, resolutionCompare: v, minWidth: y, minHeight: b, maxWidth: x, maxHeight: S, workflowType: C, workflowId: w, workflowModel: T, workflowRunsOn: E, dateRange: D, dateExact: O, metadataSearchMode: k } = l, A = l.sort || "mtime_desc", j = c(t).trim() || "*", M = /^\[object\s+HTML.*Element\]$/i.test(j) ? "*" : j, N = i.sanitizeQuery(M) || M;
try {
- let t = String(u || "").toLowerCase() === "output", c = Tc({
+ let t = String(u || "").toLowerCase() === "output", c = Dc({
...l,
q: N
}), j = t && Number(r ?? 0) === 0 && N === "*" && !c && String(A || "mtime_desc").toLowerCase() === "mtime_desc", M = !(t && (Number(r ?? 0) > 0 || j)), P = !!l.groupStacks, ee = Number(r ?? 0) > 0 ? null : s || null, te = i.buildListURL({
@@ -5302,7 +5391,7 @@ async function bl(e, t, n, r, i, { requestId: a = 0, signal: o = null, cursor: s
};
}
}
-function xl(e, t) {
+function Cl(e, t) {
switch (t) {
case "mtime_desc": return -(Number(e?.mtime) || 0);
case "mtime_asc": return Number(e?.mtime) || 0;
@@ -5311,23 +5400,23 @@ function xl(e, t) {
default: return -(Number(e?.mtime) || 0);
}
}
-function Sl(e, t, n) {
+function wl(e, t, n) {
if (n === "name_desc") {
let n = String(e?.filename || "").toLowerCase(), r = String(t?.filename || "").toLowerCase();
return n > r ? -1 : +(n < r);
}
- let r = xl(e, n), i = xl(t, n);
+ let r = Cl(e, n), i = Cl(t, n);
return r < i ? -1 : +(r > i);
}
-function Cl(e, t, n) {
+function Tl(e, t, n) {
return n === "name_asc" ? String(e) < String(t) : n === "name_desc" ? String(e) > String(t) : Number(e) < Number(t);
}
-function wl(e, t, n) {
- let r = xl(t, n);
- for (let t = 0; t < e.length; t++) if (Cl(r, xl(e[t], n), n)) return t;
+function El(e, t, n) {
+ let r = Cl(t, n);
+ for (let t = 0; t < e.length; t++) if (Tl(r, Cl(e[t], n), n)) return t;
return e.length;
}
-function Tl(e, t) {
+function Dl(e, t) {
let n = t.get(e);
return n || (n = {
pending: /* @__PURE__ */ new Map(),
@@ -5335,13 +5424,13 @@ function Tl(e, t) {
flushing: !1
}, t.set(e, n)), n;
}
-function El(e) {
+function Ol(e) {
return String(e ?? "").trim().toLowerCase();
}
-function Dl(e) {
+function kl(e) {
return e?._mjrLivePlaceholder === !0 || e?.is_live_placeholder === !0 || String(e?.id || "").trim().toLowerCase().startsWith("live:");
}
-function Ol(e) {
+function Al(e) {
if (!e || typeof e != "object") return e;
try {
delete e._mjrLivePlaceholder, delete e._mjrLiveStatus, delete e._mjrLiveLabel, delete e.is_live_placeholder;
@@ -5350,24 +5439,24 @@ function Ol(e) {
}
return e;
}
-function kl(e) {
+function jl(e) {
if (!e || typeof e != "object") return "";
- let t = El(e?.type || e?.source || "output"), n = El(e?.root_id || e?.custom_root_id || ""), r = El(e?.subfolder || ""), i = El(e?.filename || "");
+ let t = Ol(e?.type || e?.source || "output"), n = Ol(e?.root_id || e?.custom_root_id || ""), r = Ol(e?.subfolder || ""), i = Ol(e?.filename || "");
if (i) return `${t}|${n}|${r}|${i}`;
- let a = El(e?.filepath || e?.path || e?.fullpath || e?.full_path || "");
+ let a = Ol(e?.filepath || e?.path || e?.fullpath || e?.full_path || "");
return a ? `${t}|${n}|path|${a}` : "";
}
-function Al(e, t, n) {
+function Ml(e, t, n) {
let r = Array.isArray(e?.assets) ? e.assets : [];
if (t) {
let e = r.findIndex((e) => String(e?.id || "") === t);
if (e > -1) return e;
}
- let i = kl(n);
- return i ? r.findIndex((e) => kl(e) === i) : -1;
+ let i = jl(n);
+ return i ? r.findIndex((e) => jl(e) === i) : -1;
}
-function jl(e, t) {
- return !t || typeof t != "object" || !e || typeof e != "object" ? !1 : Dl(t) ? !0 : ![
+function Nl(e, t) {
+ return !t || typeof t != "object" || !e || typeof e != "object" ? !1 : kl(t) ? !0 : ![
"filename",
"filepath",
"path",
@@ -5386,7 +5475,7 @@ function jl(e, t) {
"date"
].some((t) => Object.prototype.hasOwnProperty.call(e, t));
}
-function Ml(e, t) {
+function Pl(e, t) {
let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Map(), a = [];
for (let o of Array.isArray(e?.assets) ? e.assets : []) {
let e = o?.id == null ? "" : String(o.id), s = t.assetKey(o), c = At(o?.filename);
@@ -5402,9 +5491,9 @@ function Ml(e, t) {
e && n.add(e), s && r.add(s), c && i.set(c, o), o._mjrNameCollision = !1, delete o._mjrNameCollisionCount, delete o._mjrNameCollisionPaths, a.push(o);
}
}
- e.assets = a, ml(e, { assetKey: t.assetKey });
+ e.assets = a, gl(e, { assetKey: t.assetKey });
}
-function Nl(e, t) {
+function Fl(e, t) {
let n = t.upsertState.get(e);
if (!n || n.pending.size === 0 || n.flushing) return;
n.flushing = !0, n.timer &&= (clearTimeout(n.timer), null);
@@ -5414,7 +5503,7 @@ function Nl(e, t) {
try {
let n = !1;
for (let [a, o] of r.entries()) {
- let r = Dl(o);
+ let r = kl(o);
i.assetKeyFn = t.assetKey;
let s = St(o, i, t.loadMajoorSettings);
if (Array.isArray(s?.removed) && s.removed.length) {
@@ -5441,14 +5530,14 @@ function Nl(e, t) {
let c = i.assets.findIndex((e) => String(e.id) === a), l = c > -1 ? i.assets[c] : null, u = l ? {
...l,
...o
- } : o, d = c > -1 ? c : Al(i, a, u), f = d > -1 ? i.assets[d] : null, p = f ? {
+ } : o, d = c > -1 ? c : Ml(i, a, u), f = d > -1 ? i.assets[d] : null, p = f ? {
...f,
...o
} : u, m = t.assetKey(u);
- if (!yl(e, p)) {
+ if (!xl(e, p)) {
if (d > -1) {
- if (jl(o, f)) {
- Object.assign(f, o), r || Ol(f), i.assets[d] = { ...f }, n = !0;
+ if (Nl(o, f)) {
+ Object.assign(f, o), r || Al(f), i.assets[d] = { ...f }, n = !0;
continue;
}
let [e] = i.assets.splice(d, 1);
@@ -5456,16 +5545,16 @@ function Nl(e, t) {
}
} else if (d > -1) {
let e = t.assetKey(f);
- Object.assign(f, o), r || Ol(f);
+ Object.assign(f, o), r || Al(f);
let a = { ...f }, s = t.assetKey(a);
i.assets[d] = a, e && e !== s && (i.seenKeys?.delete?.(e), s && i.seenKeys?.add?.(s)), n = !0;
} else if (!(i.seenKeys.has(m) || o.id != null && i.assetIdSet?.has?.(a))) {
- let t = xc(e?.dataset || {}).sort || "mtime_desc", s = r ? u : Ol({ ...u }), c = wl(i.assets, s, t);
+ let t = Cc(e?.dataset || {}).sort || "mtime_desc", s = r ? u : Al({ ...u }), c = El(i.assets, s, t);
i.seenKeys.add(m), o.id != null && i.assetIdSet?.add?.(a), i.assets.splice(c, 0, s), n = !0;
}
}
if (n && a) {
- Ml(i, t);
+ Pl(i, t);
try {
e.dataset.mjrHiddenPngSiblings = String(Number(i.hiddenPngSiblings || 0) || 0);
} catch (e) {
@@ -5477,22 +5566,22 @@ function Nl(e, t) {
if (n.flushing = !1, n.pending.size > 0 && !n.timer) {
let r = Math.min(16, t.debounceMs);
n.timer = setTimeout(() => {
- n.timer = null, Nl(e, t);
+ n.timer = null, Fl(e, t);
}, r);
}
}
}
-function Pl(e, t, n) {
+function Il(e, t, n) {
if (!t || !t.id) return !1;
let r = n.getOrCreateState(e), i = String(t.id);
if (!n.ensureVirtualGrid(e, r)) return !1;
- let a = Tl(e, n.upsertState);
- return a.pending.set(i, t), a.pending.size >= n.maxBatchSize ? Nl(e, n) : !a.timer && !a.flushing && (a.timer = setTimeout(() => {
- a.timer = null, Nl(e, n);
+ let a = Dl(e, n.upsertState);
+ return a.pending.set(i, t), a.pending.size >= n.maxBatchSize ? Fl(e, n) : !a.timer && !a.flushing && (a.timer = setTimeout(() => {
+ a.timer = null, Fl(e, n);
}, n.debounceMs)), !0;
}
// ui/vue/components/grid/gridDomBridge.ts
-function Fl(e) {
+function Ll(e) {
let t = String(e ?? "");
try {
if (typeof CSS < "u" && typeof CSS.escape == "function") return CSS.escape(t);
@@ -5501,7 +5590,7 @@ function Fl(e) {
}
return t.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
}
-function Il(e) {
+function Rl(e) {
if (!e) return [];
try {
return Array.from(e.querySelectorAll?.(".mjr-asset-card") || []);
@@ -5509,7 +5598,7 @@ function Il(e) {
return console.debug?.(e), [];
}
}
-function Ll(e) {
+function zl(e) {
if (!e) return null;
try {
return e.querySelector?.(".mjr-asset-card.is-selected") || null;
@@ -5517,33 +5606,33 @@ function Ll(e) {
return console.debug?.(e), null;
}
}
-function Rl(e, t) {
+function Bl(e, t) {
if (!e) return null;
let n = String(t || "").trim();
if (!n) return null;
try {
- return e.querySelector?.(`.mjr-asset-card[data-mjr-asset-id="${Fl(n)}"]`) || null;
+ return e.querySelector?.(`.mjr-asset-card[data-mjr-asset-id="${Ll(n)}"]`) || null;
} catch (e) {
return console.debug?.(e), null;
}
}
-function zl(e, t = 0) {
+function Vl(e, t = 0) {
let n = e?.dataset?.mjrShown, r = Number(n);
return Number.isFinite(r) ? Math.max(0, r) : Math.max(0, Number(t) || 0);
}
// ui/vue/composables/useGridLoader.ts
-var Bl = 200, Vl = 50, Hl = /* @__PURE__ */ new WeakMap(), Ul = /* @__PURE__ */ new Set([
+var Hl = 200, Ul = 50, Wl = /* @__PURE__ */ new WeakMap(), Gl = /* @__PURE__ */ new Set([
"collection",
"filter",
"initial",
"scope",
"search",
"sort"
-]), Wl = 0;
-function Gl(e) {
+]), Kl = 0;
+function ql(e) {
return new Promise((t) => setTimeout(t, Math.max(0, Number(e) || 0)));
}
-function Kl(e) {
+function Jl(e) {
if (!e || typeof e != "object") return "";
if (e.id != null && String(e.id).trim()) return `id:${String(e.id).trim()}`;
let t = String(e?.type || e?.source || "output").trim().toLowerCase(), n = String(Me(e) || "").trim().toLowerCase(), r = String(e?.subfolder || "").trim().toLowerCase(), i = String(e?.filename || "").trim().toLowerCase();
@@ -5551,12 +5640,12 @@ function Kl(e) {
let a = String(e?.filepath || e?.path || e?.fullpath || e?.full_path || "").trim().toLowerCase();
return a ? `${t}|${n}|path|${a}` : "";
}
-function ql(e) {
+function Yl(e) {
if (e == null) return e;
let t = String(e);
return t.trim() === "" ? t : t.trim() === "*" ? "*" : t.replace(/[\u0000-\u001f\u007f]+/g, " ").replace(/[<>]/g, " ").replace(/\s+/g, " ").trim() || t;
}
-function Jl(e) {
+function Xl(e) {
if (typeof e == "string") return e;
if (e && typeof e == "object") {
if (typeof e.value == "string") return e.value;
@@ -5572,13 +5661,13 @@ function Jl(e) {
}
return String(e || "");
}
-function Yl(e) {
+function Zl(e) {
return e ? typeof e == "object" && "value" in e ? e.value || null : e : null;
}
-async function Xl() {
+async function Ql() {
await sr();
}
-function Zl(e, t) {
+function $l(e, t) {
let n = String(e || "Failed to load");
try {
let e = String(t?.message || t || "").trim(), r = e.toLowerCase();
@@ -5587,13 +5676,13 @@ function Zl(e, t) {
return n;
}
}
-function Ql(e, t) {
+function eu(e, t) {
let n = Math.max(1, Math.min(B.MAX_PAGE_SIZE, Number(e) || 1)), r = Math.max(0, Number(t) || 0);
if (r <= 0) return n;
let i = 2 ** Math.min(r, 5);
return Math.max(1, Math.min(B.MAX_PAGE_SIZE, n * i));
}
-function $l() {
+function tu() {
try {
let e = typeof navigator < "u" ? navigator : null, t = Number(e?.deviceMemory || 0) || 0;
if (t > 0 && t <= 4 || e?.connection?.saveData === !0) return !0;
@@ -5602,10 +5691,10 @@ function $l() {
}
return !1;
}
-function eu() {
- return B.PREFETCH_NEXT_PAGE ? !$l() : !1;
+function nu() {
+ return B.PREFETCH_NEXT_PAGE ? !tu() : !1;
}
-function tu(e, t = {}) {
+function ru(e, t = {}) {
let n = Array.isArray(e.assets) ? e.assets : [];
t.rebuildFromVisible && n.length ? gt(e, n, {
assetKey: t.assetKey || e.assetKeyFn,
@@ -5615,7 +5704,7 @@ function tu(e, t = {}) {
preserveHiddenCount: !1
});
}
-function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingMessage: r, setStatusMessage: i, clearStatusMessage: a, resetAssets: o, setSelection: s, reconcileSelection: c, readScrollElement: l = () => null, readRenderedCards: u = () => [], scrollToAssetId: d = () => {}, canLoadMore: f = null } = {}) {
+function iu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingMessage: r, setStatusMessage: i, clearStatusMessage: a, resetAssets: o, setSelection: s, reconcileSelection: c, readScrollElement: l = () => null, readRenderedCards: u = () => [], scrollToAssetId: d = () => {}, canLoadMore: f = null } = {}) {
let p = !1, m = null, h = null, g = {
pagesRequested: 0,
assetsReceived: 0,
@@ -5642,7 +5731,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
g.lastOperation = String(e || ""), t.reloadReason && (g.lastReloadReason = String(t.reloadReason || "")), t.appendReason && (g.lastAppendReason = String(t.appendReason || ""));
}
function y() {
- return Yl(e);
+ return Zl(e);
}
function b() {
return C();
@@ -5678,7 +5767,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
...e,
counts: {
loaded: e.assets.length,
- visible: zl(y(), e.assets.length),
+ visible: Vl(y(), e.assets.length),
total: e.pagination.total
},
metrics: { ...g }
@@ -5686,8 +5775,8 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
}
function C() {
let e = y();
- return xc(e?.dataset || {}, {
- q: Sc(e, t.query || "*"),
+ return Cc(e?.dataset || {}, {
+ q: wc(e, t.query || "*"),
resolutionCompare: e?.dataset?.mjrFilterResolutionCompare || ""
});
}
@@ -5725,7 +5814,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
};
}
function D(e) {
- return Ul.has(String(e || "").toLowerCase());
+ return Gl.has(String(e || "").toLowerCase());
}
function O(e = null) {
try {
@@ -5743,7 +5832,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
} catch (e) {
console.debug?.(e);
}
- return gc(y(), l());
+ return vc(y(), l());
}
function j() {
if (!B.DEFER_GRID_FETCH_DURING_EXECUTION) return !1;
@@ -5780,7 +5869,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
h = null;
}
function P(e, n = B.PREFETCH_NEXT_PAGE_DELAY_MS) {
- if (!eu()) return;
+ if (!nu()) return;
N();
let r = Math.max(0, Number(n) || 0);
h = setTimeout(() => {
@@ -5793,7 +5882,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
M();
let n = (() => {
try {
- return $c(C());
+ return tl(C());
} catch (e) {
return console.debug?.(e), null;
}
@@ -5814,7 +5903,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
if (n) {
let e = null;
try {
- e = $c(C());
+ e = tl(C());
} catch (e) {
console.debug?.(e);
}
@@ -5823,7 +5912,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
return;
}
}
- let a = Sc(i, e);
+ let a = wc(i, e);
Promise.resolve().then(() => _e(a, {
...t || {},
reset: !0,
@@ -5846,7 +5935,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
if (!e || typeof e != "object") return "";
let n = e.id == null ? `${e.type || ""}|${Me(e)}|${e.filepath || ""}|${e.subfolder || ""}|${e.filename || ""}` : `id:${e.id}`;
try {
- return Ja(t || y() || globalThis?.__MJR_LAST_ASSETKEY_GRID__, e, n);
+ return Xa(t || y() || globalThis?.__MJR_LAST_ASSETKEY_GRID__, e, n);
} catch (e) {
return console.debug?.(e), n;
}
@@ -5864,14 +5953,14 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
if (!F()) return;
let n = y(), r = Array.isArray(t.assets) ? t.assets : [];
if (!n || !r.length) return;
- let i = r.map(el).filter(Boolean);
+ let i = r.map(nl).filter(Boolean);
if (!i.length) return;
- let a = i.length < r.length, o = Number(t.offset || i.length) || i.length, s = Number(t.total ?? i.length), c = xc(n.dataset || {}, {
- q: Sc(n, t.query || "*"),
+ let a = i.length < r.length, o = Number(t.offset || i.length) || i.length, s = Number(t.total ?? i.length), c = Cc(n.dataset || {}, {
+ q: wc(n, t.query || "*"),
resolutionCompare: n.dataset?.mjrFilterResolutionCompare || ""
- }), l = $c(c);
+ }), l = tl(c);
if (!l) return;
- dl(l, {
+ pl(l, {
assets: i,
title: String(e || "").trim(),
query: String(t.query || c.query || "*").trim() || "*",
@@ -5886,7 +5975,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
function ne() {
let e = y();
if (e) try {
- let t = Hl.get(e);
+ let t = Wl.get(e);
if (!t) return;
t.timer &&= (clearTimeout(t.timer), null), t.pending.clear(), t.flushing = !1;
} catch (e) {
@@ -5902,17 +5991,17 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
ensureVirtualGrid: () => t.virtualGrid,
setFileBadgeCollision: Ct,
assetKey: (t) => te(t, e),
- ensureDupStackCard: (e, t, n) => Xa(e, t, n)
+ ensureDupStackCard: (e, t, n) => Qa(e, t, n)
});
return g.renderTimeMs += Math.max(0, _() - r), g.assetsReceived += i, g.visibleAssetsAdded += Number(o || 0) || 0, g.hiddenOrDedupedAssets += Math.max(0, i - (Number(o || 0) || 0)), o;
}
function ae(e, t) {
let n = String(t || "*").trim() || "*";
- return wc(xc(e?.dataset || {}, { q: n }));
+ return Ec(Cc(e?.dataset || {}, { q: n }));
}
function oe(e) {
- let t = C(), n = ql(Jl(e).trim() || "*") || "*";
- return Ec({
+ let t = C(), n = Yl(Xl(e).trim() || "*") || "*";
+ return Oc({
...t,
q: n
});
@@ -5970,8 +6059,8 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
}
}
}
- return se(await bl(o, e, n, r, {
- sanitizeQuery: ql,
+ return se(await Sl(o, e, n, r, {
+ sanitizeQuery: Yl,
buildListURL: et,
get: re,
getGridState: () => t
@@ -5985,7 +6074,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
offset: r
});
}
- let ce = vl({
+ let ce = bl({
query: {
get value() {
return t.query || "*";
@@ -6056,7 +6145,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
console.debug?.(e);
}
let f = Array.isArray(t.selectedIds) ? t.selectedIds.join("|") : "", m = String(t.activeId || "");
- if (v("appendNextPage", { appendReason: "pagination" }), !A()) return !t.assets.length && !t.loading && eu() && P(t.requestId, 400), {
+ if (v("appendNextPage", { appendReason: "pagination" }), !A()) return !t.assets.length && !t.loading && nu() && P(t.requestId, 400), {
ok: !0,
skipped: !0,
hidden: !0
@@ -6079,7 +6168,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
let n = t.requestId, r = await ce.loadUntilVisible({
maxEmptyPages: 6,
canContinue: () => A(),
- getLimit: (e) => Ql(h, e),
+ getLimit: (e) => eu(h, e),
beforeApplyPage: (e) => {
if (t.requestId !== n) return {
ok: !1,
@@ -6097,7 +6186,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
cursor: null,
total: null,
done: !1
- }), tu(t), g.resetCount += 1, p = !1, null) : Array.isArray(t.assets) && t.assets.length ? (xe("[Grid LoadPage] empty response with cached visible assets - preserving cached view", {
+ }), ru(t), g.resetCount += 1, p = !1, null) : Array.isArray(t.assets) && t.assets.length ? (xe("[Grid LoadPage] empty response with cached visible assets - preserving cached view", {
offset: t.offset,
query: t.query
}), {
@@ -6111,15 +6200,15 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
e.emptyPageIndex <= 0 || xe(`[Grid LoadPage] fetched adaptive page with no visible additions: offset=${t.offset}, fetched=${e.count}, consumed=${e.advanced}, added=${e.added}, limit=${e.limit}, done=${t.done}, visibleCount=${t.assets.length}, total=${t.total}`);
}
});
- if (de(), fe(), !r.ok) return r.aborted || r.stale || (ue({ done: !0 }), i(Zl("Failed to load assets", r?.error || "Unknown error"), { error: !0 })), r;
+ if (de(), fe(), !r.ok) return r.aborted || r.stale || (ue({ done: !0 }), i($l("Failed to load assets", r?.error || "Unknown error"), { error: !0 })), r;
if (r.preservedCached) return r;
- if (t.done || r.added > 0) return I(t.query || Sc(e, "*")), {
+ if (t.done || r.added > 0) return I(t.query || wc(e, "*")), {
ok: !0,
count: r.count,
total: t.total
};
let a = r.lastResult || r.firstResult || r;
- return xe(`[Grid LoadPage] fetched one page with no visible additions: offset=${t.offset}, fetched=${r.count}, consumed=${a.advanced}, added=${a.added}, limit=${a.limit || h}, done=${t.done}, visibleCount=${t.assets.length}, total=${t.total}`), !t.done && eu() && P(Number(t.requestId ?? 0) || 0, Math.min(B.PREFETCH_NEXT_PAGE_DELAY_MS ?? 700, 250)), {
+ return xe(`[Grid LoadPage] fetched one page with no visible additions: offset=${t.offset}, fetched=${r.count}, consumed=${a.advanced}, added=${a.added}, limit=${a.limit || h}, done=${t.done}, visibleCount=${t.assets.length}, total=${t.total}`), !t.done && nu() && P(Number(t.requestId ?? 0) || 0, Math.min(B.PREFETCH_NEXT_PAGE_DELAY_MS ?? 700, 250)), {
ok: !0,
count: r.count,
total: t.total,
@@ -6141,7 +6230,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
} catch (e) {
console.debug?.(e);
}
- return i(Zl("Failed to load assets", e), { error: !0 }), {
+ return i($l("Failed to load assets", e), { error: !0 }), {
ok: !1,
error: e?.message || String(e)
};
@@ -6163,7 +6252,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
}
try {
let e = Date.now() - _;
- e < Wl && await Gl(Wl - e);
+ e < Kl && await ql(Kl - e);
} catch (e) {
console.debug?.(e);
}
@@ -6180,7 +6269,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
}
let n = t.requestId, r = null;
try {
- r = $c(C());
+ r = tl(C());
} catch (e) {
console.debug?.(e);
}
@@ -6189,7 +6278,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
if (r) {
let e = null;
try {
- e = $c(C());
+ e = tl(C());
} catch (e) {
console.debug?.(e);
}
@@ -6208,7 +6297,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
if (r) {
let e = null;
try {
- e = $c(C());
+ e = tl(C());
} catch (e) {
console.debug?.(e);
}
@@ -6243,7 +6332,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
} catch (e) {
console.debug?.(e);
}
- let d = Jl(e).trim() || "*", f = /^\[object\s+HTML.*Element\]$/i.test(d) ? "*" : d, m = ql(f) || f;
+ let d = Xl(e).trim() || "*", f = /^\[object\s+HTML.*Element\]$/i.test(d) ? "*" : d, m = Yl(f) || f;
t.query = m;
let h = c ? E(m, i) : {
reason: "append",
@@ -6254,8 +6343,8 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
try {
let n = C();
n.query = m;
- let r = $c(n);
- if (F() && ul(r) && (e = await Te(n, { allowReplaceExisting: !0 }), t.requestId > s + +!!e)) return console.debug?.("[Grid] loadAssets aborted during deferral due to scope switch"), {
+ let r = tl(n);
+ if (F() && fl(r) && (e = await Te(n, { allowReplaceExisting: !0 }), t.requestId > s + +!!e)) return console.debug?.("[Grid] loadAssets aborted during deferral due to scope switch"), {
ok: !1,
aborted: !0
};
@@ -6294,7 +6383,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
cursor: null,
total: null,
done: !1
- }), tu(t, {
+ }), ru(t, {
rebuildFromVisible: !0,
preserveHiddenCount: !0,
assetKey: (e) => te(e, u)
@@ -6307,10 +6396,10 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
cursor: null,
total: null,
done: !1
- }), tu(t), g.resetCount += 1), n(m === "*" ? "Loading assets..." : `Searching for "${m}"...`);
+ }), ru(t), g.resetCount += 1), n(m === "*" ? "Loading assets..." : `Searching for "${m}"...`);
}
let _ = await me();
- return fe(), eu() && _?.ok && !_?.skipped && !t.done && !_?.aborted && P(t.requestId), c && (pe({
+ return fe(), nu() && _?.ok && !_?.skipped && !t.done && !_?.aborted && P(t.requestId), c && (pe({
title: m,
showEmptyMessage: !(_?.skipped || _?.hidden || _?.aborted || _?.stale || _?.preservedCached || _?.busy)
}), O(h.nextContext)), {
@@ -6359,15 +6448,15 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
cursor: null,
total: p.length,
done: !0
- }), tu(t), g.resetCount += 1), u ? (n(p.length ? `Loading ${c}...` : `${c} is empty`), t.loading = !0) : (r(), t.loading = !1);
+ }), ru(t), g.resetCount += 1), u ? (n(p.length ? `Loading ${c}...` : `${c} is empty`), t.loading = !0) : (r(), t.loading = !1);
}
try {
- let e = Cc(f, "mtime_desc"), n = p.sort((t, n) => Sl(t, n, e));
+ let e = Tc(f, "mtime_desc"), n = p.sort((t, n) => wl(t, n, e));
return l && h && (o({
query: String(c || "Collection"),
total: p.length,
done: !0
- }), tu(t), g.resetCount += 1), ie(f, n), ue({
+ }), ru(t), g.resetCount += 1), ie(f, n), ue({
offset: n.length,
cursor: null,
total: n.length,
@@ -6378,14 +6467,14 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
total: n.length
};
} catch (e) {
- return i(Zl("Failed to load collection", e), { error: !0 }), {
+ return i($l("Failed to load collection", e), { error: !0 }), {
ok: !1,
error: e?.message || String(e)
};
} finally {
if (u) try {
let e = Date.now() - m;
- e < Wl && await Gl(Wl - e);
+ e < Kl && await ql(Kl - e);
} catch (e) {
console.debug?.(e);
}
@@ -6395,7 +6484,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
function ye() {
v("reload", { reloadReason: "scopeSwitch" });
try {
- Ya(y());
+ Za(y());
} catch (e) {
console.debug?.(e);
}
@@ -6415,7 +6504,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
t.virtualGrid?.setItems?.(t.assets || []);
}
function Se(e, { updateSelection: n = !0 } = {}) {
- let r = hl(t, e, { assetKey: (e) => te(e, y()) });
+ let r = _l(t, e, { assetKey: (e) => te(e, y()) });
return r ? (Number.isFinite(Number(t.total)) && ue({ total: Math.max(0, Number(t.total || 0) - r) }), n && c(t.assets.map((e) => String(e?.id || "")).filter(Boolean), { activeId: t.activeId }), !t.assets.length && !t.loading && i("No assets found"), {
ok: !0,
removed: r,
@@ -6437,7 +6526,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
} catch {
return !1;
}
- }, r = Ll(e), i = u(), a = i.find((e) => n(e)) || i[0] || null, o = n(r) ? r : a;
+ }, r = zl(e), i = u(), a = i.find((e) => n(e)) || i[0] || null, o = n(r) ? r : a;
if (!o) return null;
try {
let e = o.getBoundingClientRect(), n = t.getBoundingClientRect();
@@ -6453,14 +6542,14 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
async function we(e) {
let t = y(), n = l();
if (!t || !n || !e) return;
- await Xl();
+ await Ql();
let r = String(e.id || "").trim();
if (!r) {
n.scrollTop = Number(e.scrollTop || 0) || 0, g.scrollRestoreCount += 1;
return;
}
- d(r, { align: "start" }), await Xl();
- let i = Rl(t, r);
+ d(r, { align: "start" }), await Ql();
+ let i = Bl(t, r);
if (!i) n.scrollTop = Number(e.scrollTop || 0) || 0, g.scrollRestoreCount += 1;
else try {
let t = i.getBoundingClientRect(), r = n.getBoundingClientRect(), a = t.top - r.top - Number(e.top || 0);
@@ -6472,7 +6561,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
async function Te(e = {}, n = {}) {
let i = y();
if (!i || !F()) return !1;
- let s = $c(e), c = ll(s);
+ let s = tl(e), c = dl(s);
if (!c || !Array.isArray(c.assets) || !c.assets.length || !n.allowReplaceExisting && Array.isArray(t.assets) && t.assets.length) return !1;
g.lastResetReason = "snapshot";
try {
@@ -6489,7 +6578,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
query: c.query || n.title || "Cached",
total: Number(c.total ?? c.assets.length) || c.assets.length,
done: !!c.done
- }), tu(t), g.resetCount += 1, a(), r(), t.loading = !1, ie(i, c.assets), ue({
+ }), ru(t), g.resetCount += 1, a(), r(), t.loading = !1, ie(i, c.assets), ue({
offset: Math.max(Number(c.assets.length || 0) || 0, Number(c.offset || c.assets.length) || c.assets.length),
cursor: c.cursor || null,
total: Number(c.total ?? c.assets.length) || c.assets.length,
@@ -6503,34 +6592,34 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
return {
getOrCreateState: () => t,
ensureVirtualGrid: () => t.virtualGrid,
- upsertState: Hl,
- maxBatchSize: Vl,
- debounceMs: Bl,
- assetKey: (t) => Kl(t) || te(t, e),
+ upsertState: Wl,
+ maxBatchSize: Ul,
+ debounceMs: Hl,
+ assetKey: (t) => Jl(t) || te(t, e),
loadMajoorSettings: Jt
};
}
function De(e) {
v("upsertRealtime", { appendReason: "realtime" });
let t = y();
- return !t || !e || !e.id ? !1 : Pl(t, e, Ee(t));
+ return !t || !e || !e.id ? !1 : Il(t, e, Ee(t));
}
let Oe = !1;
function ke(e) {
v("upsertRealtime", { appendReason: "realtimeImmediate" });
let t = y();
if (!t || !e || !e.id) return !1;
- let n = Pl(t, e, Ee(t));
+ let n = Il(t, e, Ee(t));
return n && !Oe && (Oe = !0, queueMicrotask(() => {
Oe = !1;
let e = y();
- e && Nl(e, Ee(e));
+ e && Fl(e, Ee(e));
})), n;
}
function Ae() {
I(t.query || "Cached");
try {
- cl();
+ ul();
} catch (e) {
console.debug?.(e);
}
@@ -6542,7 +6631,7 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
}
let e = y();
if (e) try {
- let t = Tl(e, Hl);
+ let t = Dl(e, Wl);
t?.timer && (clearTimeout(t.timer), t.timer = null), t?.pending?.clear?.();
} catch (e) {
console.debug?.(e);
@@ -6580,10 +6669,10 @@ function nu({ gridContainerRef: e, state: t, setLoadingMessage: n, clearLoadingM
};
}
// node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js
-function ru(e) {
+function au(e) {
return typeof e == "object" ? e.key : e;
}
-function iu(e, t) {
+function ou(e, t) {
let n = e.length;
return new Proxy(e, { get(e, r, i) {
if (typeof r == "string") {
@@ -6612,7 +6701,7 @@ function iu(e, t) {
} });
}
// node_modules/@tanstack/virtual-core/dist/esm/utils.js
-function au(e, t, n) {
+function su(e, t, n) {
let r = n.initialDeps ?? [], i, a = !0;
function o() {
let o = e();
@@ -6622,34 +6711,34 @@ function au(e, t, n) {
r = e;
}, o;
}
-function ou(e, t) {
+function cu(e, t) {
if (e === void 0) throw Error(`Unexpected undefined${t ? `: ${t}` : ""}`);
return e;
}
-var su = (e, t) => Math.abs(e - t) < 1.01, cu = (e, t, n) => {
+var lu = (e, t) => Math.abs(e - t) < 1.01, uu = (e, t, n) => {
let r;
return Object.assign(function(...i) {
e.clearTimeout(r), r = e.setTimeout(() => t.apply(this, i), n);
}, { cancel: () => {
e.clearTimeout(r);
} });
-}, lu, uu = () => {
- if (lu !== void 0) return lu;
- if (typeof navigator > "u") return lu = !1;
- if (/iP(hone|od|ad)/.test(navigator.userAgent)) return lu = !0;
+}, du, fu = () => {
+ if (du !== void 0) return du;
+ if (typeof navigator > "u") return du = !1;
+ if (/iP(hone|od|ad)/.test(navigator.userAgent)) return du = !0;
let e = navigator.maxTouchPoints;
- return lu = navigator.platform === "MacIntel" && e !== void 0 && e > 0;
-}, du = (e) => {
+ return du = navigator.platform === "MacIntel" && e !== void 0 && e > 0;
+}, pu = (e) => {
let { offsetWidth: t, offsetHeight: n } = e;
return {
width: t,
height: n
};
-}, fu = (e) => e, pu = (e) => {
+}, mu = (e) => e, hu = (e) => {
let t = Math.max(e.startIndex - e.overscan, 0), n = Math.min(e.endIndex + e.overscan, e.count - 1) - t + 1, r = Array(n);
for (let e = 0; e < n; e++) r[e] = t + e;
return r;
-}, mu = (e, t) => {
+}, gu = (e, t) => {
let n = e.scrollElement;
if (!n) return;
let r = e.targetWindow;
@@ -6661,7 +6750,7 @@ var su = (e, t) => Math.abs(e - t) < 1.01, cu = (e, t, n) => {
height: Math.round(r)
});
};
- if (i(du(n)), !r.ResizeObserver) return () => {};
+ if (i(pu(n)), !r.ResizeObserver) return () => {};
let a = new r.ResizeObserver((t) => {
let r = () => {
let e = t[0];
@@ -6675,28 +6764,28 @@ var su = (e, t) => Math.abs(e - t) < 1.01, cu = (e, t, n) => {
return;
}
}
- i(du(n));
+ i(pu(n));
};
e.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(r) : r();
});
return a.observe(n, { box: "border-box" }), () => {
a.unobserve(n);
};
-}, hu = { passive: !0 }, gu = typeof window > "u" || "onscrollend" in window, _u = (e, t, n) => {
+}, _u = { passive: !0 }, vu = typeof window > "u" || "onscrollend" in window, yu = (e, t, n) => {
let r = e.scrollElement;
if (!r) return;
let i = e.targetWindow;
if (!i) return;
- let a = e.options.useScrollendEvent && gu, o = 0, s = a ? null : cu(i, () => t(n(r), !1), e.options.isScrollingResetDelay), c = (e) => () => {
+ let a = e.options.useScrollendEvent && vu, o = 0, s = a ? null : uu(i, () => t(n(r), !1), e.options.isScrollingResetDelay), c = (e) => () => {
o = n(r), s?.(), t(o, e);
}, l = c(!0), u = c(!1);
- return r.addEventListener("scroll", l, hu), a && r.addEventListener("scrollend", u, hu), () => {
+ return r.addEventListener("scroll", l, _u), a && r.addEventListener("scrollend", u, _u), () => {
r.removeEventListener("scroll", l), a && r.removeEventListener("scrollend", u), s?.cancel();
};
-}, vu = (e, t) => _u(e, t, (t) => {
+}, bu = (e, t) => yu(e, t, (t) => {
let { horizontal: n, isRtl: r } = e.options;
return n ? t.scrollLeft * (r && -1 || 1) : t.scrollTop;
-}), yu = (e, t, n) => {
+}), xu = (e, t, n) => {
if (n.options.useCachedMeasurements) {
let t = n.indexFromElement(e), r = n.options.getItemKey(t);
return n.itemSizeCache.get(r) ?? n.options.estimateSize(t);
@@ -6710,14 +6799,14 @@ var su = (e, t) => Math.abs(e - t) < 1.01, cu = (e, t, n) => {
if (i !== void 0) return i;
}
return e[n.options.horizontal ? "offsetWidth" : "offsetHeight"];
-}, bu = (e, { adjustments: t = 0, behavior: n }, r) => {
+}, Su = (e, { adjustments: t = 0, behavior: n }, r) => {
var i, a;
(a = (i = r.scrollElement)?.scrollTo) == null || a.call(i, {
[r.options.horizontal ? "left" : "top"]: e + t,
behavior: n
});
};
-function xu(e, t, n, r) {
+function Cu(e, t, n, r) {
if (t === 0) return !1;
let i = r(0), a = /* @__PURE__ */ new Set(), o = 0;
for (; o < e;) {
@@ -6731,7 +6820,7 @@ function xu(e, t, n, r) {
for (let e = s; e < t; e++) if (a.has(r(e))) return !1;
return !0;
}
-var Su = class {
+var wu = class {
constructor(e) {
this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.scrollState = null, this.measurementsCache = [], this._singleLaneMeasurements = null, this.itemSizeCache = /* @__PURE__ */ new Map(), this.itemSizeCacheVersion = 0, this.laneAssignments = /* @__PURE__ */ new Map(), this.pendingMin = null, this.prevLanes = void 0, this.lanesChangedFlag = !1, this.lanesSettling = !1, this.pendingScrollAnchor = null, this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this._iosDeferredAdjustment = 0, this._iosTouching = !1, this._iosJustTouchEnded = !1, this._iosTouchEndTimerId = null, this._intendedScrollOffset = null, this._clampedAdjustment = null, this.elementsCache = /* @__PURE__ */ new Map(), this.now = () => {
var e;
@@ -6771,10 +6860,10 @@ var Su = class {
scrollPaddingStart: 0,
scrollPaddingEnd: 0,
horizontal: !1,
- getItemKey: fu,
- rangeExtractor: pu,
+ getItemKey: mu,
+ rangeExtractor: hu,
onChange: () => {},
- measureElement: yu,
+ measureElement: xu,
initialRect: {
width: 0,
height: 0
@@ -6801,13 +6890,13 @@ var Su = class {
}
let n = this.options, r = null, i = null, a = !1;
if (n !== void 0 && n.enabled && t.enabled && t.anchorTo === "end" && this.scrollElement !== null) {
- let e = n.count, o = t.count, s = this.getMeasurements(), c = this._singleLaneMeasurements?.items ?? s, l = (e) => ru(c[e]), u = e > 0 ? l(0) : null, d = e > 0 ? l(e - 1) : null;
+ let e = n.count, o = t.count, s = this.getMeasurements(), c = this._singleLaneMeasurements?.items ?? s, l = (e) => au(c[e]), u = e > 0 ? l(0) : null, d = e > 0 ? l(e - 1) : null;
if (o !== e || e > 0 && o > 0 && (t.getItemKey(0) !== u || t.getItemKey(o - 1) !== d)) {
a = !0;
let c = e > 0 ? this.getVirtualItemForOffset(this.getScrollOffset()) ?? s[0] : null;
c && (r = [c.key, this.getScrollOffset() - c.start]);
let u = t.followOnAppend === !0 ? "auto" : t.followOnAppend || null;
- u && o > 0 && this.isAtEnd(n.scrollEndThreshold) && (e === 0 || t.getItemKey(o - 1) !== d) && (o > e || xu(e, o, l, t.getItemKey)) && (i = u);
+ u && o > 0 && this.isAtEnd(n.scrollEndThreshold) && (e === 0 || t.getItemKey(o - 1) !== d) && (o > e || Cu(e, o, l, t.getItemKey)) && (i = u);
}
}
this.options = t, a && (this.pendingMin = 0, this.itemSizeCacheVersion++);
@@ -6832,7 +6921,7 @@ var Su = class {
}, this.notify = (e) => {
var t, n;
(n = (t = this.options).onChange) == null || n.call(t, this, e);
- }, this.maybeNotify = au(() => (this.calculateRange(), [
+ }, this.maybeNotify = su(() => (this.calculateRange(), [
this.isScrolling,
this.range ? this.range.startIndex : null,
this.range ? this.range.endIndex : null
@@ -6870,11 +6959,11 @@ var Su = class {
let e = this.scrollElement, t = () => {
this._iosTouching = !0, this._iosJustTouchEnded = !1, this._iosTouchEndTimerId !== null && this.targetWindow != null && (this.targetWindow.clearTimeout(this._iosTouchEndTimerId), this._iosTouchEndTimerId = null);
}, n = () => {
- this._iosTouching = !1, uu() && this.targetWindow != null && (this._iosJustTouchEnded = !0, this._iosTouchEndTimerId = this.targetWindow.setTimeout(() => {
+ this._iosTouching = !1, fu() && this.targetWindow != null && (this._iosJustTouchEnded = !0, this._iosTouchEndTimerId = this.targetWindow.setTimeout(() => {
this._iosJustTouchEnded = !1, this._iosTouchEndTimerId = null, this._flushIosDeferredIfReady();
}, 150));
};
- e.addEventListener("touchstart", t, hu), e.addEventListener("touchend", n, hu), this.unsubs.push(() => {
+ e.addEventListener("touchstart", t, _u), e.addEventListener("touchend", n, _u), this.unsubs.push(() => {
e.removeEventListener("touchstart", t), e.removeEventListener("touchend", n), this._iosTouchEndTimerId !== null && this.targetWindow != null && (this.targetWindow.clearTimeout(this._iosTouchEndTimerId), this._iosTouchEndTimerId = null);
});
}
@@ -6886,7 +6975,7 @@ var Su = class {
let t = this.pendingScrollAnchor;
if (this.pendingScrollAnchor = null, t && this.scrollElement && this.options.enabled) {
let [e, n, r, i] = t;
- e !== null && !r && (uu() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded) ? i !== 0 && (this._iosDeferredAdjustment += i) : this.scrollState?.behavior === "smooth" && !su(this.getScrollOffset() - i, this.scrollState.lastTargetOffset) || this._scrollToOffset(this.getScrollOffset(), {
+ e !== null && !r && (fu() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded) ? i !== 0 && (this._iosDeferredAdjustment += i) : this.scrollState?.behavior === "smooth" && !lu(this.getScrollOffset() - i, this.scrollState.lastTargetOffset) || this._scrollToOffset(this.getScrollOffset(), {
adjustments: void 0,
behavior: void 0
})), r && this.scrollToEnd({ behavior: r });
@@ -6915,7 +7004,7 @@ var Su = class {
adjustments: this.scrollAdjustments += n,
behavior: void 0
});
- }, this.rafId = null, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getMeasurementOptions = au(() => [
+ }, this.rafId = null, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getMeasurementOptions = su(() => [
this.options.count,
this.options.paddingStart,
this.options.scrollMargin,
@@ -6933,7 +7022,7 @@ var Su = class {
lanes: a,
laneAssignmentMode: o,
gap: s
- }), { key: !1 }), this.isIndexInRange = (e) => e >= 0 && e < this.options.count, this.getMeasurements = au(() => [this.getMeasurementOptions(), this.itemSizeCacheVersion], ({ count: e, paddingStart: t, scrollMargin: n, getItemKey: r, enabled: i, lanes: a, laneAssignmentMode: o, gap: s }, c) => {
+ }), { key: !1 }), this.isIndexInRange = (e) => e >= 0 && e < this.options.count, this.getMeasurements = su(() => [this.getMeasurementOptions(), this.itemSizeCacheVersion], ({ count: e, paddingStart: t, scrollMargin: n, getItemKey: r, enabled: i, lanes: a, laneAssignmentMode: o, gap: s }, c) => {
let l = this.itemSizeCache;
if (!i) return this.measurementsCache = [], this._singleLaneMeasurements = null, this.itemSizeCache.clear(), this.laneAssignments.clear(), [];
if (this.laneAssignments.size > e) for (let t of this.laneAssignments.keys()) t >= e && this.laneAssignments.delete(t);
@@ -6963,7 +7052,7 @@ var Su = class {
flat: a,
items: o
};
- let d = iu(o, a);
+ let d = ou(o, a);
return this.measurementsCache = d, d;
}
let d = this.measurementsCache.slice(0, u), f = Array(a).fill(void 0), p = new Float64Array(a), m = 0;
@@ -6999,15 +7088,15 @@ var Su = class {
}, {
key: !1,
debug: () => this.options.debug
- }), this.calculateRange = au(() => [
+ }), this.calculateRange = su(() => [
this.getMeasurements(),
this.getSize(),
this.getScrollOffset(),
this.options.lanes
- ], (e, t, n, r) => e.length === 0 || t === 0 ? (this.range = null, null) : (this.range = Tu(e, t, n, r, r === 1 && this._singleLaneMeasurements !== null ? this._singleLaneMeasurements.flat : null), this.range), {
+ ], (e, t, n, r) => e.length === 0 || t === 0 ? (this.range = null, null) : (this.range = Du(e, t, n, r, r === 1 && this._singleLaneMeasurements !== null ? this._singleLaneMeasurements.flat : null), this.range), {
key: !1,
debug: () => this.options.debug
- }), this.getVirtualIndexes = au(() => {
+ }), this.getVirtualIndexes = su(() => {
let e = null, t = null, n = this.calculateRange();
return n && (e = n.startIndex, t = n.endIndex), this.maybeNotify.updateDeps([
this.isScrolling,
@@ -7073,7 +7162,7 @@ var Su = class {
let f = !1;
a ? f = this.applyScrollAdjustment(this.getTotalSize() - c) : d && (f = this.applyScrollAdjustment(s)), this.notify(f), this._retryClampedAdjustment();
}
- }, this.getVirtualItems = au(() => [this.getVirtualIndexes(), this.getMeasurements()], (e, t) => {
+ }, this.getVirtualItems = su(() => [this.getVirtualIndexes(), this.getMeasurements()], (e, t) => {
let n = [];
for (let r = 0, i = e.length; r < i; r++) {
let i = t[e[r]];
@@ -7087,7 +7176,7 @@ var Su = class {
let t = this.getMeasurements();
if (t.length === 0) return;
let n = this._singleLaneMeasurements?.flat, r = this.options.lanes === 1 && n != null;
- return ou(t[Cu(0, t.length - 1, r ? (e) => n[e * 2] : (e) => ou(t[e]).start, e)]);
+ return cu(t[Tu(0, t.length - 1, r ? (e) => n[e * 2] : (e) => cu(t[e]).start, e)]);
}, this.getMaxScrollOffset = () => {
if (!this.scrollElement) return 0;
if ("scrollHeight" in this.scrollElement) return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;
@@ -7200,7 +7289,7 @@ var Su = class {
}
applyScrollAdjustment(e, t) {
if (e === 0) return !1;
- if (uu() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded)) return this._iosDeferredAdjustment += e, !1;
+ if (fu() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded)) return this._iosDeferredAdjustment += e, !1;
{
let n = this.getScrollOffset() + this.scrollAdjustments + e, r = this.scrollElement, i = r !== null && ("scrollHeight" in r || "document" in r) ? this.getMaxScrollOffset() : null;
return this._clampedAdjustment = i !== null && n > i + .5 ? {
@@ -7224,7 +7313,7 @@ var Su = class {
return;
}
let e = this.scrollState.index == null ? void 0 : this.getOffsetForIndex(this.scrollState.index, this.scrollState.align), t = e ? e[0] : this.scrollState.lastTargetOffset, n = t !== this.scrollState.lastTargetOffset;
- if (!n && su(t, this.getScrollOffset())) {
+ if (!n && lu(t, this.getScrollOffset())) {
if (this.scrollState.stableFrames++, this.scrollState.stableFrames >= 1) {
this.getScrollOffset() !== t && this._scrollToOffset(t, {
adjustments: void 0,
@@ -7241,7 +7330,7 @@ var Su = class {
}
this.scheduleScrollReconcile();
}
-}, Cu = (e, t, n, r) => {
+}, Tu = (e, t, n, r) => {
for (; e <= t;) {
let i = (e + t) / 2 | 0, a = n(i);
if (a < r) e = i + 1;
@@ -7250,7 +7339,7 @@ var Su = class {
}
return e > 0 ? e - 1 : 0;
};
-function wu(e, t, n) {
+function Eu(e, t, n) {
let r = 0;
for (; r <= t;) {
let i = (r + t) / 2 | 0, a = e[i * 2];
@@ -7260,21 +7349,21 @@ function wu(e, t, n) {
}
return r > 0 ? r - 1 : 0;
}
-function Tu(e, t, n, r, i) {
+function Du(e, t, n, r, i) {
let a = e.length - 1;
if (e.length <= r) return {
startIndex: 0,
endIndex: a
};
if (r === 1 && i !== null) {
- let e = wu(i, a, n), r = e, o = n + t;
+ let e = Eu(i, a, n), r = e, o = n + t;
for (; r < a && i[r * 2] + i[r * 2 + 1] < o;) r++;
return {
startIndex: e,
endIndex: r
};
}
- let o = Cu(0, a, (t) => e[t].start, n), s = o;
+ let o = Tu(0, a, (t) => e[t].start, n), s = o;
if (r === 1) for (; s < a && e[s].end < n + t;) s++;
else if (r > 1) {
let i = Array(r).fill(0);
@@ -7295,8 +7384,8 @@ function Tu(e, t, n, r, i) {
};
}
// node_modules/@tanstack/vue-virtual/dist/esm/index.js
-function Eu(e) {
- let t = new Su(Z(e)), n = gr(t), r = t._didMount();
+function Ou(e) {
+ let t = new wu(Z(e)), n = gr(t), r = t._didMount();
return or(() => Z(e).getScrollElement(), (e) => {
e && t._willUpdate();
}, { immediate: !0 }), or(() => Z(e), (e) => {
@@ -7309,20 +7398,20 @@ function Eu(e) {
}), t._willUpdate(), vr(n);
}, { immediate: !0 }), Cr(r), n;
}
-function Du(e) {
- return Eu(K(() => ({
- observeElementRect: mu,
- observeElementOffset: vu,
- scrollToFn: bu,
+function ku(e) {
+ return Ou(K(() => ({
+ observeElementRect: gu,
+ observeElementOffset: bu,
+ scrollToFn: Su,
...Z(e)
})));
}
// ui/vue/grid/useGridVirtualRows.ts
-function Ou(e, t = 0) {
+function Au(e, t = 0) {
let n = Number(Z(e));
return Number.isFinite(n) ? n : t;
}
-function ku(e = [], t = 1) {
+function ju(e = [], t = 1) {
let n = Array.isArray(e) ? e : [], r = Math.max(1, Number(t) || 1), i = [];
for (let e = 0; e < n.length; e += r) i.push({
index: Math.floor(e / r),
@@ -7330,22 +7419,22 @@ function ku(e = [], t = 1) {
});
return i;
}
-function Au(e = [], t = 0, n = 1) {
+function Mu(e = [], t = 0, n = 1) {
let r = Array.isArray(e) ? e : [], i = Math.max(1, Number(n) || 1), a = Math.max(0, Number(t) || 0) * i;
return r.slice(a, a + i);
}
-function ju({ scrollRef: e, items: t, rows: n, columnCount: r, estimateRowHeight: i, overscan: a = 8, enabled: o = !0, measure: s = yu } = {}) {
+function Nu({ scrollRef: e, items: t, rows: n, columnCount: r, estimateRowHeight: i, overscan: a = 8, enabled: o = !0, measure: s = xu } = {}) {
let c = K(() => {
if (!Z(o)) return 0;
let e = Z(n);
if (Array.isArray(e)) return e.length;
- let i = Z(t) || [], a = Math.max(1, Ou(r, 1));
+ let i = Z(t) || [], a = Math.max(1, Au(r, 1));
return Math.ceil((Array.isArray(i) ? i.length : 0) / a);
- }), l = Du(K(() => ({
+ }), l = ku(K(() => ({
count: c.value,
getScrollElement: () => Z(e) || null,
- estimateSize: () => Math.max(1, Ou(i, 120)),
- overscan: Math.max(0, Ou(a, 8)),
+ estimateSize: () => Math.max(1, Au(i, 120)),
+ overscan: Math.max(0, Au(a, 8)),
measureElement: s
})));
return {
@@ -7365,27 +7454,27 @@ function ju({ scrollRef: e, items: t, rows: n, columnCount: r, estimateRowHeight
groupKey: String(n?.groupKey || "")
};
});
- let i = Z(t) || [], a = Math.max(1, Ou(r, 1));
+ let i = Z(t) || [], a = Math.max(1, Au(r, 1));
return l.value.getVirtualItems().map((e) => ({
key: e.key,
index: e.index,
virtual: e,
- items: Au(i, e.index, a),
+ items: Mu(i, e.index, a),
kind: "assets",
title: "",
groupKey: ""
}));
}),
totalSize: K(() => l.value.getTotalSize()),
- getRowItems: (e) => Au(Z(t) || [], e, Ou(r, 1))
+ getRowItems: (e) => Mu(Z(t) || [], e, Au(r, 1))
};
}
// ui/vue/grid/useInfiniteTrigger.ts
-function Mu(e, t = !0) {
+function Pu(e, t = !0) {
let n = Z(e);
return n == null ? t : !!n;
}
-function Nu({ rootRef: e, enabled: t = !0, canLoad: n = !0, loadMore: r, rootMargin: i = "900px", threshold: a = .01 } = {}) {
+function Fu({ rootRef: e, enabled: t = !0, canLoad: n = !0, loadMore: r, rootMargin: i = "900px", threshold: a = .01 } = {}) {
let o = Q(null), s = null, c = !1;
function l() {
try {
@@ -7396,7 +7485,7 @@ function Nu({ rootRef: e, enabled: t = !0, canLoad: n = !0, loadMore: r, rootMar
s = null;
}
async function u() {
- if (!c && Mu(t, !0) && Mu(n, !0) && typeof r == "function") {
+ if (!c && Pu(t, !0) && Pu(n, !0) && typeof r == "function") {
c = !0;
try {
await r();
@@ -7424,18 +7513,18 @@ function Nu({ rootRef: e, enabled: t = !0, canLoad: n = !0, loadMore: r, rootMar
};
}
// ui/vue/grid/useGridDisplayAssets.ts
-function Pu(e) {
+function Iu(e) {
let t = At(e?.filename);
return t ? `${String(e?.source || e?.type || "").trim().toLowerCase()}|${String(e?.root_id || e?.custom_root_id || "").trim().toLowerCase()}|${String(e?.subfolder || "").trim().toLowerCase()}|${t}` : "";
}
-function Fu(e) {
+function Lu(e) {
return !!e;
}
-function Iu(e) {
+function Ru(e) {
let t = Array.isArray(e) ? e : [], n = /* @__PURE__ */ new Map(), r = [];
for (let e of t) {
if (!e) continue;
- let t = Pu(e);
+ let t = Iu(e);
if (!t) {
e._mjrNameCollision = !1, delete e._mjrNameCollisionCount, delete e._mjrNameCollisionPaths, e._mjrDupStack = !1, e._mjrDupMembers = null, e._mjrDupCount = 0, r.push(e);
continue;
@@ -7453,7 +7542,7 @@ function Iu(e) {
return r;
}
// ui/vue/components/grid/VirtualAssetGridHost.vue?vue&type=script&setup=true&lang.ts
-var Lu = {
+var zu = {
key: 0,
class: "mjr-grid-loading-overlay",
style: {
@@ -7468,19 +7557,19 @@ var Lu = {
background: "rgba(20,22,28,0.55)",
"backdrop-filter": "blur(2px)"
}
-}, Ru = { style: { width: "100%" } }, zu = { style: {
+}, Bu = { style: { width: "100%" } }, Vu = { style: {
"margin-top": "10px",
"font-size": "12px",
opacity: "0.68",
"text-align": "center"
-} }, Bu = ["data-index"], Vu = [
+} }, Hu = ["data-index"], Uu = [
"aria-expanded",
"title",
"onClick"
-], Hu = {
+], Wu = {
class: "mjr-grid-group-separator-chevron",
"aria-hidden": "true"
-}, Uu = { class: "mjr-grid-group-separator-title" }, Wu = [
+}, Gu = { class: "mjr-grid-group-separator-title" }, Ku = [
"data-mjr-asset-id",
"data-mjr-filename-key",
"data-mjr-ext",
@@ -7496,21 +7585,21 @@ var Lu = {
"onMousedown",
"onClick",
"onDblclick"
-], Gu = {
+], qu = {
key: 3,
style: {
display: "flex",
"flex-direction": "column",
width: "100%"
}
-}, Ku = [
+}, Ju = [
"aria-expanded",
"title",
"onClick"
-], qu = {
+], Yu = {
class: "mjr-grid-group-separator-chevron",
"aria-hidden": "true"
-}, Ju = { class: "mjr-grid-group-separator-title" }, Yu = [
+}, Xu = { class: "mjr-grid-group-separator-title" }, Zu = [
"data-mjr-asset-id",
"data-mjr-filename-key",
"data-mjr-ext",
@@ -7526,7 +7615,7 @@ var Lu = {
"onMousedown",
"onClick",
"onDblclick"
-], Xu = 501, Zu = /* @__PURE__ */ lr({
+], Qu = 501, $u = /* @__PURE__ */ lr({
__name: "VirtualAssetGridHost",
props: {
scrollElement: { default: null },
@@ -7556,10 +7645,10 @@ var Lu = {
Q(!0);
let s = Q(0), c = Q(0), l = /* @__PURE__ */ new WeakMap(), u = 0, d = 0, f = 0, p = 0, m = 0, h = /* @__PURE__ */ new Map(), g = null, _ = null;
function v() {
- return g ||= import("./chunks/viewerOpenRequest-Bw0Fm-S5.js").then((e) => e.n), g;
+ return g ||= import("./chunks/viewerOpenRequest-SXvGdj01.js").then((e) => e.n), g;
}
function b() {
- return _ ||= import("./chunks/floatingViewerManager-DYNfChQt.js").then((e) => e.n), _;
+ return _ ||= import("./chunks/floatingViewerManager-DQlULmZ-.js").then((e) => e.n), _;
}
function x(e) {
return (Array.isArray(e) ? e : []).slice().sort((e, t) => {
@@ -7578,7 +7667,7 @@ var Lu = {
let a = t._mjrStackMembersCache.get(r);
if (!Array.isArray(a)) {
let e = h.get(r);
- e || (e = re(Je(n, { limit: Xu }), { timeoutMs: 3e4 }).finally(() => {
+ e || (e = re(Je(n, { limit: Qu }), { timeoutMs: 3e4 }).finally(() => {
h.delete(r);
}), h.set(r, e));
let i = await e;
@@ -7611,13 +7700,13 @@ var Lu = {
}));
}
});
- let { state: S, selectedIdSet: C, setLoadingMessage: w, clearLoadingMessage: T, setStatusMessage: E, clearStatusMessage: D, resetAssets: O, setSelection: k, reconcileSelection: A, getSelectedAssets: j, getActiveAsset: M } = fc();
+ let { state: S, selectedIdSet: C, setLoadingMessage: w, clearLoadingMessage: T, setStatusMessage: E, clearStatusMessage: D, resetAssets: O, setSelection: k, reconcileSelection: A, getSelectedAssets: j, getActiveAsset: M } = mc();
function N(e) {
return e ? typeof e == "object" && "value" in e ? e.value || null : e : null;
}
let P = K(() => N(r.scrollElement));
function ee() {
- return Il(i.value);
+ return Rl(i.value);
}
function te(e, { align: t = "auto" } = {}) {
let n = String(e || "").trim();
@@ -7642,9 +7731,9 @@ var Lu = {
}
}
function F() {
- return gc(i.value, P.value);
+ return vc(i.value, P.value);
}
- let I = nu({
+ let I = iu({
gridContainerRef: i,
state: S,
setLoadingMessage: w,
@@ -7658,7 +7747,7 @@ var Lu = {
readRenderedCards: ee,
scrollToAssetId: te,
canLoadMore: F
- }), { sentinelRef: ne } = Nu({
+ }), { sentinelRef: ne } = Fu({
rootRef: P,
enabled: !0,
canLoad: K(() => !S.loading && !S.done && F()),
@@ -7781,7 +7870,7 @@ var Lu = {
}
}
ve._lastSelectionKey = "";
- let ye = K(() => Iu(S.assets)), be = K(() => (Array.isArray(ye.value) ? ye.value : []).filter((e) => Fu(e))), xe = Q(/* @__PURE__ */ new Set()), Se = Q(""), Ce = K(() => {
+ let ye = K(() => Ru(S.assets)), be = K(() => (Array.isArray(ye.value) ? ye.value : []).filter((e) => Lu(e))), xe = Q(/* @__PURE__ */ new Set()), Se = Q(""), Ce = K(() => {
s.value;
let e = ue(B.WORKFLOW_GRID_GROUP_BY);
return e === "none" || Se.value !== "workflow" ? "none" : e;
@@ -7822,7 +7911,7 @@ var Lu = {
let ke = K(() => {
let e = Array.isArray(be.value) ? be.value : [];
if (!e.length) return [];
- if (Ce.value === "none") return ku(e, ze.value);
+ if (Ce.value === "none") return ju(e, ze.value);
let t = Array.isArray(we.value) ? we.value : [], n = [];
for (let e of t) e?.kind === "header" ? n.push(e) : Te(String(e?.groupKey || "")) || n.push(e);
return n;
@@ -7889,7 +7978,7 @@ var Lu = {
}
fi(e, { applySettingsClasses: r.applyDefaultSettingsClasses });
try {
- pt = $o(e);
+ pt = ts(e);
} catch (e) {
console.debug?.(e), pt = null;
}
@@ -7987,7 +8076,7 @@ var Lu = {
}
c.value = 0;
}
- let qe = ju({
+ let qe = Nu({
scrollRef: P,
items: be,
rows: ke,
@@ -8645,7 +8734,7 @@ var Lu = {
"min-height": "100%"
}
}, [
- Z(S).loading && !Z(S).assets.length ? (q(), X("div", Lu, [U("div", Ru, [U("div", {
+ Z(S).loading && !Z(S).assets.length ? (q(), X("div", zu, [U("div", Bu, [U("div", {
class: "mjr-grid-skeleton-layout",
style: yr(it.value)
}, [(q(!0), X(H, null, pr(nt.value, (e) => (q(), X("div", {
@@ -8661,7 +8750,7 @@ var Lu = {
}, null, 4), U("div", {
class: "mjr-grid-skeleton-line mjr-grid-skeleton-line--meta mjr-grid-skeleton-shimmer",
style: yr(ct.value)
- }, null, 4)], 4)], 4))), 128))], 4), U("div", zu, J(Z(S).loadingMessage || "Loading assets..."), 1)])])) : G("", !0),
+ }, null, 4)], 4)], 4))), 128))], 4), U("div", Vu, J(Z(S).loadingMessage || "Loading assets..."), 1)])])) : G("", !0),
Z(S).statusMessage && !Z(S).assets.length && !Z(S).loading ? (q(), X("div", {
key: 1,
class: "mjr-grid-message",
@@ -8702,7 +8791,7 @@ var Lu = {
"aria-expanded": Te(e.groupKey) ? "false" : "true",
title: `${Te(e.groupKey) ? "Open" : "Close"} group`,
onClick: (t) => Ee(e.groupKey)
- }, [U("span", Hu, [U("i", { class: wr(["pi", Te(e.groupKey) ? "pi-chevron-down" : "pi-chevron-up"]) }, null, 2)]), U("span", Uu, J(e.title), 1)], 10, Vu)) : e.items.length ? (q(!0), X(H, { key: 1 }, pr(e.items, (e) => (q(), X(H, { key: String(e.id) }, [L(e) ? (q(), nr(uc, {
+ }, [U("span", Wu, [U("i", { class: wr(["pi", Te(e.groupKey) ? "pi-chevron-down" : "pi-chevron-up"]) }, null, 2)]), U("span", Gu, J(e.title), 1)], 10, Uu)) : e.items.length ? (q(!0), X(H, { key: 1 }, pr(e.items, (e) => (q(), X(H, { key: String(e.id) }, [L(e) ? (q(), nr(fc, {
key: 0,
ref_for: !0,
ref: St(e),
@@ -8747,10 +8836,10 @@ var Lu = {
onMousedown: fr((t) => Et(t, e), ["left"]),
onClick: (t) => Tt(t, e),
onDblclick: fr((t) => Mt(e), ["stop"])
- }, [Y(oc, {
+ }, [Y(cc, {
asset: e,
onWorkflowAction: (t) => At(t, e)
- }, null, 8, ["asset", "onWorkflowAction"])], 46, Wu))], 64))), 128)) : G("", !0)], 12, Bu))), 128))], 4)) : (q(), X("div", Gu, [(q(!0), X(H, null, pr(We.value, (e) => (q(), X("div", {
+ }, null, 8, ["asset", "onWorkflowAction"])], 46, Ku))], 64))), 128)) : G("", !0)], 12, Hu))), 128))], 4)) : (q(), X("div", qu, [(q(!0), X(H, null, pr(We.value, (e) => (q(), X("div", {
key: `${e.kind || "assets"}-${e.groupKey || ""}-${e.index ?? ""}`,
style: yr(Zt())
}, [e.kind === "header" ? (q(), X("button", {
@@ -8760,7 +8849,7 @@ var Lu = {
"aria-expanded": Te(e.groupKey) ? "false" : "true",
title: `${Te(e.groupKey) ? "Open" : "Close"} group`,
onClick: (t) => Ee(e.groupKey)
- }, [U("span", qu, [U("i", { class: wr(["pi", Te(e.groupKey) ? "pi-chevron-down" : "pi-chevron-up"]) }, null, 2)]), U("span", Ju, J(e.title), 1)], 10, Ku)) : (q(!0), X(H, { key: 1 }, pr(e.items, (e) => (q(), X(H, { key: String(e.id) }, [L(e) ? (q(), nr(uc, {
+ }, [U("span", Yu, [U("i", { class: wr(["pi", Te(e.groupKey) ? "pi-chevron-down" : "pi-chevron-up"]) }, null, 2)]), U("span", Xu, J(e.title), 1)], 10, Ju)) : (q(!0), X(H, { key: 1 }, pr(e.items, (e) => (q(), X(H, { key: String(e.id) }, [L(e) ? (q(), nr(fc, {
key: 0,
ref_for: !0,
ref: St(e),
@@ -8805,10 +8894,10 @@ var Lu = {
onMousedown: fr((t) => Et(t, e), ["left"]),
onClick: (t) => Tt(t, e),
onDblclick: fr((t) => Mt(e), ["stop"])
- }, [Y(oc, {
+ }, [Y(cc, {
asset: e,
onWorkflowAction: (t) => At(t, e)
- }, null, 8, ["asset", "onWorkflowAction"])], 46, Yu))], 64))), 128))], 4))), 128))])),
+ }, null, 8, ["asset", "onWorkflowAction"])], 46, Zu))], 64))), 128))], 4))), 128))])),
U("div", {
ref_key: "infiniteSentinelRef",
ref: ne,
@@ -8822,14 +8911,14 @@ var Lu = {
}, null, 512)
], 512));
}
-}), Qu = 240, $u = 120, ed = 80, td = null, nd = null;
-function rd() {
- return td ||= import("./chunks/viewerOpenRequest-Bw0Fm-S5.js").then((e) => e.n), td;
+}), ed = 240, td = 120, nd = 80, rd = null, id = null;
+function ad() {
+ return rd ||= import("./chunks/viewerOpenRequest-SXvGdj01.js").then((e) => e.n), rd;
}
-function id() {
- return nd ||= import("./chunks/floatingViewerManager-DYNfChQt.js").then((e) => e.n), nd;
+function od() {
+ return id ||= import("./chunks/floatingViewerManager-DQlULmZ-.js").then((e) => e.n), id;
}
-function ad(e) {
+function sd(e) {
let t = document.createElement("button");
t.type = "button", t.className = "mjr-asset-card mjr-card mjr-feed-group-member-card", t.style.cssText = "display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;min-height:110px;padding:8px;border:1px solid var(--mjr-border,#444);border-radius:8px;background:var(--mjr-surface,#202020);color:inherit;text-align:left;overflow:hidden;";
try {
@@ -8840,7 +8929,7 @@ function ad(e) {
let n = document.createElement("div");
return n.className = "mjr-feed-group-member-name", n.style.cssText = "font-size:11px;font-weight:600;line-height:1.3;word-break:break-word;", n.textContent = String(e?.filename || "Asset"), t.appendChild(n), t;
}
-function od(e) {
+function cd(e) {
try {
if (typeof e?._mjrGetRenderedCards == "function") {
let t = e._mjrGetRenderedCards();
@@ -8855,11 +8944,11 @@ function od(e) {
return console.debug?.(e), [];
}
}
-function sd(e, t, n = "") {
+function ld(e, t, n = "") {
let r = Array.isArray(t) ? t.map(String).filter(Boolean) : [];
- return Qn(e, r, { activeId: n || r[0] || "" }, od);
+ return Qn(e, r, { activeId: n || r[0] || "" }, cd);
}
-function cd(e) {
+function ud(e) {
let t = e?.grid;
if (!t) return;
let n = (e) => {
@@ -8875,16 +8964,16 @@ function cd(e) {
} catch (e) {
console.debug?.(e);
}
- let a = od(t), o = a.indexOf(n), s = Jn(t);
+ let a = cd(t), o = a.indexOf(n), s = Jn(t);
if (e.shiftKey && o >= 0) {
let n = Number.isFinite(Number(t._mjrLastSelectedIndex)) ? Number(t._mjrLastSelectedIndex) : o, r = Math.min(n, o), s = Math.max(n, o), c = a.slice(r, s + 1).map((e) => String(e?.dataset?.mjrAssetId || "").trim()).filter(Boolean);
- sd(t, c, i), t._mjrLastSelectedIndex = o, e.preventDefault(), e.stopPropagation();
+ ld(t, c, i), t._mjrLastSelectedIndex = o, e.preventDefault(), e.stopPropagation();
} else if (e.ctrlKey || e.metaKey) {
s.has(i) ? s.delete(i) : s.add(i);
let n = Array.from(s);
- sd(t, n, s.has(i) ? i : n[0] || ""), o >= 0 && (t._mjrLastSelectedIndex = o), e.preventDefault(), e.stopPropagation();
+ ld(t, n, s.has(i) ? i : n[0] || ""), o >= 0 && (t._mjrLastSelectedIndex = o), e.preventDefault(), e.stopPropagation();
} else {
- sd(t, [i], i), o >= 0 && (t._mjrLastSelectedIndex = o);
+ ld(t, [i], i), o >= 0 && (t._mjrLastSelectedIndex = o);
try {
n.focus?.({ preventScroll: !0 });
} catch (e) {
@@ -8901,23 +8990,23 @@ function cd(e) {
}
};
}
-var ld = {
+var dd = {
hosts: /* @__PURE__ */ new Set(),
pendingAssets: /* @__PURE__ */ new Map()
};
-function ud(e) {
- if (!B.EXECUTION_GROUPING_ENABLED) return Td(e);
+function fd(e) {
+ if (!B.EXECUTION_GROUPING_ENABLED) return Dd(e);
let t = String(e?.stack_id || "").trim();
if (t) return `stack:${t}`;
let n = String(e?.job_id || "").trim();
- return n ? `job:${n}` : Td(e);
+ return n ? `job:${n}` : Dd(e);
}
-function dd(e) {
+function pd(e) {
let t = /* @__PURE__ */ new Map();
for (let n of Array.isArray(e) ? e : []) {
- let e = Dd(n);
+ let e = kd(n);
if (!e) continue;
- let r = ud(e), i = t.get(r);
+ let r = fd(e), i = t.get(r);
i || (i = {
key: r,
members: []
@@ -8942,16 +9031,16 @@ function dd(e) {
return (Number(t?.mtime || t?.created_at || 0) || 0) - n;
}), n;
}
-function fd(e) {
+function md(e) {
return Array.from(e?.assetsByKey?.values?.() || []);
}
-function pd(e) {
+function hd(e) {
return String(e ?? "").trim().toLowerCase();
}
-function md(e) {
+function gd(e) {
return e?._mjrLivePlaceholder === !0 || e?.is_live_placeholder === !0 || String(e?.id || "").trim().toLowerCase().startsWith("live:");
}
-function hd(e) {
+function _d(e) {
if (!e || typeof e != "object") return e;
try {
delete e._mjrLivePlaceholder, delete e._mjrLiveStatus, delete e._mjrLiveLabel, delete e.is_live_placeholder;
@@ -8960,19 +9049,19 @@ function hd(e) {
}
return e;
}
-function gd(e) {
+function vd(e) {
if (!e || typeof e != "object") return "";
- let t = pd(e?.type || e?.source || "output"), n = pd(e?.root_id || e?.custom_root_id || ""), r = pd(e?.subfolder || ""), i = pd(e?.filename || "");
+ let t = hd(e?.type || e?.source || "output"), n = hd(e?.root_id || e?.custom_root_id || ""), r = hd(e?.subfolder || ""), i = hd(e?.filename || "");
if (i) return `${t}|${n}|${r}|${i}`;
- let a = pd(e?.filepath || e?.path || e?.fullpath || e?.full_path || "");
+ let a = hd(e?.filepath || e?.path || e?.fullpath || e?.full_path || "");
return a ? `${t}|${n}|path|${a}` : "";
}
-function _d(e, t) {
- let n = Dd(t);
+function yd(e, t) {
+ let n = kd(t);
if (!e || typeof e.set != "function" || !n) return null;
- let r = Td(n), i = gd(n), a = "";
+ let r = Dd(n), i = vd(n), a = "";
if (i) {
- for (let [t, n] of e.entries()) if (gd(n) === i) {
+ for (let [t, n] of e.entries()) if (vd(n) === i) {
a = t;
break;
}
@@ -8981,17 +9070,17 @@ function _d(e, t) {
...o,
...n
} : n;
- return md(n) || hd(s), a && a !== r && e.delete(a), e.set(r, s), s;
+ return gd(n) || _d(s), a && a !== r && e.delete(a), e.set(r, s), s;
}
-function vd(e, t) {
- return e ? (e.assetsByKey ||= /* @__PURE__ */ new Map(), _d(e.assetsByKey, t)) : null;
+function bd(e, t) {
+ return e ? (e.assetsByKey ||= /* @__PURE__ */ new Map(), yd(e.assetsByKey, t)) : null;
}
-function yd(e) {
+function xd(e) {
e?.grid && e.loaded && (e._renderTimer ||= setTimeout(() => {
- e._renderTimer = null, wd(e);
- }, ed));
+ e._renderTimer = null, Ed(e);
+ }, nd));
}
-function bd(e, t, n = 0) {
+function Sd(e, t, n = 0) {
let r = Array.isArray(t?._mjrFeedGroupAssets) ? t._mjrFeedGroupAssets.filter(Boolean) : [t].filter(Boolean);
if (!r.length) return;
let i = Math.max(0, Math.min(n, r.length - 1)), a = r[i] || null, o = String(a?.id || "").trim();
@@ -9001,14 +9090,14 @@ function bd(e, t, n = 0) {
} catch (e) {
console.debug?.(e);
}
- sd(e.grid, [o], o);
+ ld(e.grid, [o], o);
}
- rd().then((e) => e.requestViewerOpen({
+ ad().then((e) => e.requestViewerOpen({
assets: r,
index: i
})).catch((e) => console.debug?.(e));
}
-function xd(e, t) {
+function Cd(e, t) {
let n = document.createElement("div");
n.className = "mjr-popover mjr-feed-group-popover", n.style.cssText = "display:none; width:min(440px, 92vw); padding:10px;";
let r = document.createElement("div");
@@ -9017,14 +9106,14 @@ function xd(e, t) {
i.className = "mjr-feed-group-popover-grid", i.style.cssText = "display:grid; grid-template-columns:repeat(auto-fill, minmax(110px, 1fr)); gap:8px; max-height:360px; overflow-y:auto; overscroll-behavior:contain;";
let a = Array.isArray(t?._mjrFeedGroupAssets) ? t._mjrFeedGroupAssets : [];
for (let r = 0; r < a.length; r += 1) {
- let o = a[r], s = ad(o);
+ let o = a[r], s = sd(o);
s.classList.add("mjr-feed-group-member-card"), r === 0 && s.classList.add("mjr-feed-group-member-card--cover"), s.addEventListener("click", (i) => {
- i.preventDefault(), i.stopPropagation(), e.popoverManager?.close?.(n), bd(e, t, r);
+ i.preventDefault(), i.stopPropagation(), e.popoverManager?.close?.(n), Sd(e, t, r);
}), i.appendChild(s);
}
return n.appendChild(i), e.root.appendChild(n), n;
}
-function Sd(e, t, n) {
+function wd(e, t, n) {
if (!t || !n) return;
let r = Number(n?._mjrFeedGroupCount || 0) || 0;
if (r <= 1 || (t.dataset.mjrFeedGrouped = "true", t.dataset.mjrFeedGroupCount = String(r), t.dataset.mjrStacked = "true", t.dataset.mjrStackCount = String(r), t.querySelector(".mjr-feed-group-button"))) return;
@@ -9033,20 +9122,20 @@ function Sd(e, t, n) {
let a = document.createElement("span");
a.className = "mjr-feed-group-button-icon pi pi-clone", i.appendChild(a);
let o = document.createElement("span");
- o.className = "mjr-feed-group-button-count", o.textContent = String(r), i.appendChild(o), i.style.cssText = "position:absolute; top:34px; right:6px; z-index:11;", Wa(i);
- let s = xd(e, n);
+ o.className = "mjr-feed-group-button-count", o.textContent = String(r), i.appendChild(o), i.style.cssText = "position:absolute; top:34px; right:6px; z-index:11;", Ka(i);
+ let s = Cd(e, n);
i.addEventListener("click", (t) => {
t.preventDefault(), t.stopPropagation(), e.popoverManager?.toggle?.(s, i);
}), t.appendChild(i);
}
-function Cd(e, t) {
+function Td(e, t) {
let n = new Map((Array.isArray(t) ? t : []).map((e) => [String(e?.id || "").trim(), e]).filter(([e]) => !!e));
- for (let t of od(e?.grid)) {
+ for (let t of cd(e?.grid)) {
let r = String(t?.dataset?.mjrAssetId || "").trim(), i = n.get(r);
- i && Sd(e, t, i);
+ i && wd(e, t, i);
}
}
-async function wd(e) {
+async function Ed(e) {
if (!e?.grid) return;
try {
e.popoverManager?.closeAll?.();
@@ -9059,19 +9148,19 @@ async function wd(e) {
} catch (e) {
console.debug?.(e);
}
- let t = dd(fd(e)), n = await gi(e.grid, t, {
+ let t = pd(md(e)), n = await gi(e.grid, t, {
title: R("bottomFeed.title", "Generated Feed"),
reset: !0
});
- Cd(e, t), Number(n?.count || 0) <= 0 ? (e.empty.textContent = R("bottomFeed.empty", "No generated assets yet."), e.empty.style.display = "") : e.empty.style.display = "none";
+ Td(e, t), Number(n?.count || 0) <= 0 ? (e.empty.textContent = R("bottomFeed.empty", "No generated assets yet."), e.empty.style.display = "") : e.empty.style.display = "none";
}
-function Td(e) {
+function Dd(e) {
let t = String(e?.id || "").trim();
if (t) return `id:${t}`;
let n = String(e?.filename || "").trim(), r = String(e?.subfolder || "").trim();
return `file:${String(e?.source || e?.type || "").trim()}:${r}:${n}`;
}
-function Ed(e) {
+function Od(e) {
let t = String(e || "").split(".").pop()?.toUpperCase() ?? "", n = /* @__PURE__ */ new Set([
"MP4",
"WEBM",
@@ -9098,41 +9187,41 @@ function Ed(e) {
]);
return n.has(t) ? "video" : r.has(t) ? "audio" : i.has(t) ? "model3d" : "image";
}
-function Dd(e) {
+function kd(e) {
if (!e || typeof e != "object") return null;
let t = { ...e };
- return !t.type && t.source && (t.type = t.source), !t.source && t.type && (t.source = t.type), t.kind ||= Ed(t.ext || t.filename || ""), t;
+ return !t.type && t.source && (t.type = t.source), !t.source && t.type && (t.source = t.type), t.kind ||= Od(t.ext || t.filename || ""), t;
}
-function Od(e) {
- let t = Dd(e);
+function Ad(e) {
+ let t = kd(e);
if (!t) return null;
- let n = Td(t);
+ let n = Dd(t);
if (!n) return null;
- let r = gd(t), i = null;
- if (r) for (let [e, t] of ld.pendingAssets.entries()) e !== n && gd(t) === r && (i = t, ld.pendingAssets.delete(e));
- let a = ld.pendingAssets.get(n) || i || null, o = a ? {
+ let r = vd(t), i = null;
+ if (r) for (let [e, t] of dd.pendingAssets.entries()) e !== n && vd(t) === r && (i = t, dd.pendingAssets.delete(e));
+ let a = dd.pendingAssets.get(n) || i || null, o = a ? {
...a,
...t
} : t;
- if (md(t) || hd(o), ld.pendingAssets.set(n, o), ld.pendingAssets.size > 64) {
- let e = ld.pendingAssets.keys().next().value;
- e && ld.pendingAssets.delete(e);
+ if (gd(t) || _d(o), dd.pendingAssets.set(n, o), dd.pendingAssets.size > 64) {
+ let e = dd.pendingAssets.keys().next().value;
+ e && dd.pendingAssets.delete(e);
}
return o;
}
-function kd() {
- return Array.from(ld.pendingAssets.values());
+function jd() {
+ return Array.from(dd.pendingAssets.values());
}
-async function Ad(e) {
+async function Md(e) {
if (e?.grid) {
e.empty.style.display = "none", e.empty.textContent = R("bottomFeed.loading", "Loading recent assets...");
try {
e.assetsByKey = /* @__PURE__ */ new Map();
let t = [], n = 0;
- for (; n < Qu;) {
+ for (; n < ed;) {
let r = et({
q: "*",
- limit: Math.min($u, Qu - n),
+ limit: Math.min(td, ed - n),
offset: n,
scope: "output",
sort: "mtime_desc",
@@ -9142,19 +9231,19 @@ async function Ad(e) {
let a = Array.isArray(i?.data?.assets) ? i.data.assets : [];
if (!a.length) break;
for (let n of a) {
- let r = vd(e, n);
+ let r = bd(e, n);
r && t.push(r);
}
- if (a.length < $u) break;
+ if (a.length < td) break;
n += a.length;
}
- for (let t of kd()) vd(e, t);
- ld.pendingAssets.clear();
- let r = dd(fd(e)), i = await gi(e.grid, r, {
+ for (let t of jd()) bd(e, t);
+ dd.pendingAssets.clear();
+ let r = pd(md(e)), i = await gi(e.grid, r, {
title: R("bottomFeed.title", "Generated Feed"),
reset: !0
});
- Cd(e, r), Number(i?.count || 0) <= 0 ? (e.empty.textContent = R("bottomFeed.empty", "No generated assets yet."), e.empty.style.display = "") : e.empty.style.display = "none";
+ Td(e, r), Number(i?.count || 0) <= 0 ? (e.empty.textContent = R("bottomFeed.empty", "No generated assets yet."), e.empty.style.display = "") : e.empty.style.display = "none";
} catch (t) {
console.debug?.(t), e.empty.textContent = R("bottomFeed.loadFailed", "Failed to load generated assets."), e.empty.style.display = "";
} finally {
@@ -9162,21 +9251,21 @@ async function Ad(e) {
}
}
}
-async function jd() {
- for (let e of Array.from(ld.hosts)) try {
- await Ad(e);
+async function Nd() {
+ for (let e of Array.from(dd.hosts)) try {
+ await Md(e);
} catch (e) {
console.debug?.(e);
}
}
-function Md() {
- jd();
+function Pd() {
+ Nd();
}
-function Nd(e) {
+function Fd(e) {
let t = document.createElement("div");
t.textContent = R("bottomFeed.loading", "Loading recent assets..."), t.style.cssText = "font-size:11px; opacity:0.65; padding:4px 2px 8px 2px;", e.root.appendChild(t), e.empty = t;
}
-function Pd(e) {
+function Id(e) {
if (!e) return;
let t = [
e,
@@ -9194,14 +9283,14 @@ function Pd(e) {
console.debug?.(e);
}
}
-function Fd(e) {
+function Ld(e) {
if (!e) return;
let t = (t, n) => {
n ? e.classList.add(t) : e.classList.remove(t);
};
t("mjr-feed-show-info", B.FEED_SHOW_INFO), t("mjr-feed-show-filename", B.FEED_SHOW_FILENAME), t("mjr-feed-show-dimensions", B.FEED_SHOW_DIMENSIONS), t("mjr-feed-show-date", B.FEED_SHOW_DATE), t("mjr-feed-show-gentime", B.FEED_SHOW_GENTIME), t("mjr-show-hover-info", B.GRID_SHOW_HOVER_INFO), t("mjr-feed-show-dot", B.FEED_SHOW_WORKFLOW_DOT), t("mjr-feed-show-badges-ext", B.FEED_SHOW_BADGES_EXTENSION), t("mjr-feed-show-badges-rating", B.FEED_SHOW_BADGES_RATING), t("mjr-feed-show-badges-tags", B.FEED_SHOW_BADGES_TAGS);
}
-function Id(e, t = null) {
+function Rd(e, t = null) {
let n = t || document.createElement("div");
n.classList.add("mjr-am-grid-scroll"), n.style.position = "relative", n.style.flex = "1 1 auto", n.style.minHeight = "0", n.style.height = "100%", n.style.overflow = "auto", n.style.scrollbarGutter = "stable", n.style.overscrollBehavior = "contain", n.style.webkitOverflowScrolling = "touch";
let r = () => {
@@ -9219,14 +9308,14 @@ function Id(e, t = null) {
}
}, a = document.createElement("div");
n.appendChild(a), e.root.appendChild(n);
- let { app: o } = Bn(Zu, {
+ let { app: o } = Bn($u, {
scrollElement: n,
virtualize: !1,
applyDefaultSettingsClasses: !1,
emitWindowSelectionEvents: !0,
onCardRendered: (t, n) => {
try {
- Sd(e, t, n);
+ wd(e, t, n);
} catch (e) {
console.debug?.(e);
}
@@ -9245,7 +9334,7 @@ function Id(e, t = null) {
else if (t === "c") {
e.preventDefault?.(), e.stopPropagation?.(), r();
try {
- id().then(async ({ floatingViewerManager: e }) => {
+ od().then(async ({ floatingViewerManager: e }) => {
await e.open(), e.toggleCompareAB();
}).catch((e) => console.debug?.(e));
} catch (e) {
@@ -9266,19 +9355,19 @@ function Id(e, t = null) {
}
};
}
-function Ld(e) {
+function zd(e) {
let t = e?.grid;
if (!t) return [];
let n = Jn(t);
- return n.size ? fd(e).filter((e) => n.has(String(e?.id || ""))) : [];
+ return n.size ? md(e).filter((e) => n.has(String(e?.id || ""))) : [];
}
-function Rd(e) {
+function Bd(e) {
let t = e?.grid;
if (!t) return null;
let n = String(t.dataset?.mjrSelectedAssetId || "").trim();
- return n ? fd(e).find((e) => String(e?.id || "") === n) || null : Ld(e)[0] || null;
+ return n ? md(e).find((e) => String(e?.id || "") === n) || null : zd(e)[0] || null;
}
-function zd(e) {
+function Vd(e) {
let t = String(e ?? "");
try {
if (typeof CSS < "u" && typeof CSS.escape == "function") return CSS.escape(t);
@@ -9287,39 +9376,39 @@ function zd(e) {
}
return t.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
}
-function Bd(e) {
+function Hd(e) {
let t = e?.grid;
if (!t) return;
let n = () => {
try {
- yd(e);
+ xd(e);
} catch (e) {
console.debug?.(e);
}
};
- e.keyboard = Fi({
+ e.keyboard = Li({
gridContainer: t,
- getState: () => ({ assets: dd(fd(e)) }),
- getSelectedAssets: () => Ld(e),
- getActiveAsset: () => Rd(e),
+ getState: () => ({ assets: pd(md(e)) }),
+ getSelectedAssets: () => zd(e),
+ getActiveAsset: () => Bd(e),
onOpenTagsEditor: (e) => {
- let r = t.querySelector?.(`.mjr-asset-card[data-mjr-asset-id="${zd(e?.id || "")}"]`) || null, i = null;
+ let r = t.querySelector?.(`.mjr-asset-card[data-mjr-asset-id="${Vd(e?.id || "")}"]`) || null, i = null;
try {
i = r?.getBoundingClientRect?.() || t.getBoundingClientRect();
} catch (e) {
console.debug?.(e);
}
- Fa(Math.round((i?.left || 0) + Math.min((i?.width || 0) * .5, 160)), Math.round((i?.top || 0) + Math.min((i?.height || 0) * .5, 120)), e, n);
+ La(Math.round((i?.left || 0) + Math.min((i?.width || 0) * .5, 160)), Math.round((i?.top || 0) + Math.min((i?.height || 0) * .5, 120)), e, n);
},
onAssetChanged: n
- }), e.keyboard.bind(), e.ratingHotkeys = Ua({
+ }), e.keyboard.bind(), e.ratingHotkeys = Ga({
gridContainer: t,
createRatingBadge: ht
}), e.ratingHotkeys.bind();
}
-var Vd = 60, Hd = 600, Ud = 10;
-function Wd(e, t) {
- let n = Math.max(Vd, Math.min(Hd, Math.round(Number(t) / Ud) * Ud));
+var Ud = 60, Wd = 600, Gd = 10;
+function Kd(e, t) {
+ let n = Math.max(Ud, Math.min(Wd, Math.round(Number(t) / Gd) * Gd));
if (e?.grid) try {
e.grid.style.setProperty("--mjr-grid-min-size", `${n}px`);
} catch (e) {
@@ -9345,27 +9434,27 @@ function Wd(e, t) {
}
return n;
}
-function Gd(e) {
- let t = Math.max(Vd, Number(B.FEED_GRID_MIN_SIZE || 120) || 120), n = document.createElement("div");
+function qd(e) {
+ let t = Math.max(Ud, Number(B.FEED_GRID_MIN_SIZE || 120) || 120), n = document.createElement("div");
n.className = "mjr-feed-toolbar", n.style.cssText = "display:flex; align-items:center; gap:5px; padding:0 2px 5px 2px; flex-shrink:0; user-select:none;";
let r = document.createElement("span");
r.textContent = R("bottomFeed.cardSize", "Cards:"), r.style.cssText = "font-size:11px; opacity:0.65; white-space:nowrap; flex-shrink:0;", n.appendChild(r);
let i = document.createElement("button");
i.type = "button", i.className = "mjr-feed-size-btn", i.textContent = "-", i.title = R("bottomFeed.cardSizeDecrease", "Decrease card size"), i.style.cssText = "width:20px; height:20px; padding:0; border:1px solid var(--mjr-border,#555); border-radius:4px; background:var(--mjr-surface,#2a2a2a); color:inherit; cursor:pointer; font-size:14px; line-height:1; flex-shrink:0; display:flex; align-items:center; justify-content:center;", n.appendChild(i);
let a = document.createElement("input");
- a.type = "range", a.className = "mjr-feed-size-slider", a.min = String(Vd), a.max = String(Hd), a.step = String(Ud), a.value = String(t), a.title = R("bottomFeed.cardSizeSlider", "Card size"), a.style.cssText = "flex:1 1 auto; min-width:40px; max-width:180px; height:4px; cursor:pointer; accent-color:var(--mjr-accent,#64b5f6);", n.appendChild(a);
+ a.type = "range", a.className = "mjr-feed-size-slider", a.min = String(Ud), a.max = String(Wd), a.step = String(Gd), a.value = String(t), a.title = R("bottomFeed.cardSizeSlider", "Card size"), a.style.cssText = "flex:1 1 auto; min-width:40px; max-width:180px; height:4px; cursor:pointer; accent-color:var(--mjr-accent,#64b5f6);", n.appendChild(a);
let o = document.createElement("button");
o.type = "button", o.className = "mjr-feed-size-btn", o.textContent = "+", o.title = R("bottomFeed.cardSizeIncrease", "Increase card size"), o.style.cssText = i.style.cssText, n.appendChild(o);
let s = document.createElement("span");
s.className = "mjr-feed-size-display", s.textContent = `${t}px`, s.style.cssText = "font-size:11px; opacity:0.65; white-space:nowrap; min-width:36px; text-align:right; flex-shrink:0; font-variant-numeric:tabular-nums;", n.appendChild(s), i.addEventListener("click", () => {
- Wd(e, Number(a.value) - Ud);
+ Kd(e, Number(a.value) - Gd);
}), o.addEventListener("click", () => {
- Wd(e, Number(a.value) + Ud);
+ Kd(e, Number(a.value) + Gd);
}), a.addEventListener("input", () => {
- Wd(e, Number(a.value));
+ Kd(e, Number(a.value));
}), e.root.appendChild(n), e._sizeToolbar = n;
}
-function Kd(e, t = {}) {
+function Jd(e, t = {}) {
let n = document.createElement("div");
n.className = "mjr-assets-manager mjr-bottom-feed", n.style.cssText = "padding:6px; height:100%; min-height:0; box-sizing:border-box; display:flex; flex-direction:column; overflow:hidden;", e.replaceChildren(n);
let r = {
@@ -9377,13 +9466,13 @@ function Kd(e, t = {}) {
assetsByKey: /* @__PURE__ */ new Map(),
popoverManager: null
};
- Gd(r), Nd(r), Id(r, t.gridWrapper ?? null), cd(r), r.popoverManager = Di(n), r._disposeContextMenu = Ia({
+ qd(r), Fd(r), Rd(r, t.gridWrapper ?? null), ud(r), r.popoverManager = Di(n), r._disposeContextMenu = Ra({
gridContainer: r.grid,
getState: () => ({ scope: "output" })
- }), Bd(r), Fd(r.grid);
+ }), Hd(r), Ld(r.grid);
let i = () => {
try {
- Fd(r.grid);
+ Ld(r.grid);
} catch (e) {
console.debug?.(e);
}
@@ -9396,26 +9485,26 @@ function Kd(e, t = {}) {
}
}, r;
}
-function qd(e) {
- let t = Od(e);
- if (t) for (let e of Array.from(ld.hosts)) try {
- if (!e?.grid || (vd(e, t), !e.loaded)) continue;
- e.empty.style.display = "none", yd(e);
+function Yd(e) {
+ let t = Ad(e);
+ if (t) for (let e of Array.from(dd.hosts)) try {
+ if (!e?.grid || (bd(e, t), !e.loaded)) continue;
+ e.empty.style.display = "none", xd(e);
} catch (e) {
console.debug?.(e);
}
}
-function Jd(e, t = {}) {
- Pd(e);
- let n = Kd(e, t);
+function Xd(e, t = {}) {
+ Id(e);
+ let n = Jd(e, t);
try {
e._mjrGeneratedFeedHost = n;
} catch (e) {
console.debug?.(e);
}
- return ld.hosts.add(n), Ad(n), n;
+ return dd.hosts.add(n), Md(n), n;
}
-function Yd(e) {
+function Zd(e) {
let t = e?._mjrGeneratedFeedHost || e || null;
if (!t) return;
let n = t.container || null;
@@ -9429,7 +9518,7 @@ function Yd(e) {
}
console.debug?.(e);
}
- ld.hosts.delete(t);
+ dd.hosts.delete(t);
try {
t._disposeSelection?.();
} catch (e) {
@@ -9487,24 +9576,24 @@ function Yd(e) {
}
}
// ui/features/stacks/executionAssetBuffer.ts
-function Xd(e) {
+function Qd(e) {
return String(e || "").trim();
}
-function Zd(e) {
+function $d(e) {
let t = String(e?.filename || "").trim(), n = String(e?.subfolder || "").trim();
return `${String(e?.type || "output").trim().toLowerCase()}|${String(e?.root_id || e?.custom_root_id || "").trim()}|${n}|${t}`;
}
-function Qd() {
+function ef() {
let e = /* @__PURE__ */ new Map();
function t(t, n) {
- let r = Xd(t);
+ let r = Qd(t);
if (!r) return [];
let i = Array.isArray(n) ? n : [];
if (!i.length) return [];
let a = e.get(r);
a || (a = /* @__PURE__ */ new Map(), e.set(r, a));
for (let e of i) {
- let t = Zd(e);
+ let t = $d(e);
t && a.set(t, {
...a.get(t) || {},
...e || {}
@@ -9513,13 +9602,13 @@ function Qd() {
return Array.from(a.values());
}
function n(t) {
- let n = Xd(t);
+ let n = Qd(t);
if (!n) return [];
let r = e.get(n);
return e.delete(n), Array.from(r?.values?.() || []);
}
function r(t) {
- let n = Xd(t);
+ let n = Qd(t);
n && e.delete(n);
}
return {
@@ -9530,7 +9619,7 @@ function Qd() {
};
}
// ui/features/stacks/finalizeQueue.ts
-function $d({ defaultDelayMs: e = 900, postJob: t } = {}) {
+function tf({ defaultDelayMs: e = 900, postJob: t } = {}) {
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), i = !1;
async function a() {
if (!i) {
@@ -9567,27 +9656,27 @@ function $d({ defaultDelayMs: e = 900, postJob: t } = {}) {
};
}
// ui/features/stacks/liveAssetGate.ts
-function ef(e) {
+function nf(e) {
return String(e || "").trim();
}
-function tf(e) {
+function rf(e) {
let t = String(e?.filename || "").trim(), n = String(e?.filepath || "").trim(), r = String(e?.subfolder || "").trim();
return `${String(e?.type || e?.source || "output").trim().toLowerCase()}|${String(e?.root_id || e?.custom_root_id || "").trim()}|${r}|${t || n}`;
}
-function nf(e, t) {
+function af(e, t) {
return !t || String(e?.job_id || "").trim() === t ? e : {
...e || {},
job_id: t
};
}
-function rf() {
+function of() {
let e = /* @__PURE__ */ new Map();
function t(t, { files: n = [], expectedCount: r = null } = {}) {
- let i = ef(t);
+ let i = nf(t);
if (!i) return;
let a = /* @__PURE__ */ new Set();
for (let e of Array.isArray(n) ? n : []) {
- let t = tf(e);
+ let t = rf(e);
t && a.add(t);
}
e.set(i, {
@@ -9597,13 +9686,13 @@ function rf() {
});
}
function n(t) {
- let n = ef(t);
+ let n = nf(t);
n && e.delete(n);
}
function r(t) {
- let n = ef(t?.job_id);
+ let n = nf(t?.job_id);
if (n) return n;
- let r = tf(t);
+ let r = rf(t);
if (!r) return "";
let i = "", a = Infinity;
for (let [t, n] of e.entries()) n?.fileKeys?.has?.(r) && (n.markedAt ?? Infinity) < a && (a = n.markedAt ?? Infinity, i = t);
@@ -9616,7 +9705,7 @@ function rf() {
jobId: "",
defer: !1
};
- let i = nf(t, n), a = e.get(n);
+ let i = af(t, n), a = e.get(n);
if (!a) return {
detail: i,
jobId: n,
@@ -9638,20 +9727,20 @@ function rf() {
};
}
// ui/features/stacks/executionRuntimeController.ts
-var af = 2e3, of = 2e3, sf = /* @__PURE__ */ new Set([
+var sf = 2e3, cf = 2e3, lf = /* @__PURE__ */ new Set([
"DB_MAINTENANCE",
"TIMEOUT",
"NETWORK_ERROR",
"SERVICE_UNAVAILABLE"
-]), cf = 8, lf = 1200, uf = 15e3, df = 6e5, ff = 500, pf = 6, mf = 3e4, hf = 500;
-function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensureExecutionRuntime: i, emitRuntimeStatus: a, refreshGeneratedFeedHosts: o, getActiveGridContainer: s }) {
+]), uf = 8, df = 1200, ff = 15e3, pf = 6e5, mf = 500, hf = 6, gf = 3e4, _f = 500;
+function vf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensureExecutionRuntime: i, emitRuntimeStatus: a, refreshGeneratedFeedHosts: o, getActiveGridContainer: s }) {
let c = pe({
- ttlMs: af,
- maxSize: of
+ ttlMs: sf,
+ maxSize: cf
}), l = pe({
- ttlMs: df,
- maxSize: ff
- }), u = Math.max(0, Number(B.EXECUTION_IDLE_GRACE_MS) || 6e3), d = /* @__PURE__ */ new Map(), f = Qd(), p = rf(), m = "", h = 0, g = null;
+ ttlMs: pf,
+ maxSize: mf
+ }), u = Math.max(0, Number(B.EXECUTION_IDLE_GRACE_MS) || 6e3), d = /* @__PURE__ */ new Map(), f = ef(), p = of(), m = "", h = 0, g = null;
function _() {
try {
return typeof window > "u" ? !1 : window.__MJR_DEBUG_JOB_TRACKING__ === !0 || String(window.localStorage?.getItem("mjr.debug.jobTracking") || "").trim() === "1";
@@ -9723,7 +9812,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
console.debug?.(e);
}
}
- let S = $d({
+ let S = tf({
defaultDelayMs: 900,
async postJob(r) {
v("auto-stack:start", { job_id: r });
@@ -9761,7 +9850,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
}
function T(e) {
let t = Math.max(1, Number(e) || 1), n = Math.min(6, t - 1);
- return Math.min(uf, lf * 2 ** n);
+ return Math.min(ff, df * 2 ** n);
}
function E() {
g &&= (clearTimeout(g), null);
@@ -9779,7 +9868,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
}
function O(e) {
let t = String(e?.code || "").trim().toUpperCase();
- return sf.has(t);
+ return lf.has(t);
}
function k(r, i = 1, a = {}) {
let o = Array.isArray(r) ? r : [];
@@ -9794,7 +9883,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
files: o.map((e) => String(e?.filename || e?.filepath || ""))
}), e(t.INDEX_FILES, s).then((e) => {
if (!e?.ok) {
- if (O(e) && i < cf) {
+ if (O(e) && i < uf) {
let e = T(i);
setTimeout(() => k(o, i + 1, a), e);
} else try {
@@ -9829,7 +9918,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
let a = d.get(i);
a?.timer && clearTimeout(a.timer);
let o = a?.firstAttemptAt ?? Date.now();
- if (Date.now() - o >= mf) {
+ if (Date.now() - o >= gf) {
k(r, 1, t);
return;
}
@@ -9874,7 +9963,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
file_count: Array.isArray(e) ? e.length : 0,
files: Array.isArray(e) ? e.map((e) => String(e?.filename || e?.filepath || "")) : []
}), !r) {
- if (n < pf) {
+ if (n < hf) {
M(e, t, n);
return;
}
@@ -10008,7 +10097,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
reason: String(e?.type || "")
}), E(), f.clear(r), n.allowLiveStackFinalize && p.clearPendingJob(r), P()), String(e?.type || "") === "execution_success" && D(() => {
r && N(r), F(r);
- }, I(r) ? Math.min(u, hf) : u);
+ }, I(r) ? Math.min(u, _f) : u);
}
function se(e) {
if (!y()) return;
@@ -10033,7 +10122,7 @@ function gf({ post: e, ENDPOINTS: t, reportError: n, extractOutputFiles: r, ensu
};
}
// ui/utils/extractOutputFiles.ts
-function _f(e) {
+function yf(e) {
let t = [], n = /* @__PURE__ */ new Set(), r = 2e3, i = /\.(png|jpe?g|webp|gif|bmp|tiff?|avif|heic|heif|apng|hdr|svg|mp4|webm|mov|mkv|avi|m4v|mp3|wav|flac|ogg|glb|gltf|obj|fbx|ply|stl)$/i, a = typeof WeakSet < "u" ? /* @__PURE__ */ new WeakSet() : null, o = ({ type: e, subfolder: t, filename: n, path: r }) => r ? `path|${String(r).trim().toLowerCase()}` : `${e || ""}|${t || ""}|${n || ""}`.toLowerCase(), s = (e) => {
if (!e) return;
let r = e.path || e.filepath || e.fullpath || e.fullPath || e.full_path, i = e.filename;
@@ -10114,15 +10203,15 @@ function _f(e) {
return u(e, 0), t;
}
// ui/features/runtime/sidebarAssetBadge.ts
-var vf = "mjr-sidebar-asset-badge", yf = "mjr-sidebar-tab-has-badge", bf = "mjr-sidebar-asset-badge-style", xf = 99, Sf = 0, Cf = "majoor-assets", wf = !1, Tf = /* @__PURE__ */ new Set();
-function Ef() {
- if (typeof document > "u" || document.getElementById(bf)) return;
+var bf = "mjr-sidebar-asset-badge", xf = "mjr-sidebar-tab-has-badge", Sf = "mjr-sidebar-asset-badge-style", Cf = 99, wf = 0, Tf = "majoor-assets", Ef = !1, Df = /* @__PURE__ */ new Set();
+function Of() {
+ if (typeof document > "u" || document.getElementById(Sf)) return;
let e = document.createElement("style");
- e.id = bf, e.textContent = `
- .${yf} {
+ e.id = Sf, e.textContent = `
+ .${xf} {
position: relative !important;
}
- .${vf} {
+ .${bf} {
position: absolute;
top: 3px;
right: 3px;
@@ -10146,7 +10235,7 @@ function Ef() {
}
`, document.head?.appendChild(e);
}
-function Df(e) {
+function kf(e) {
let t = String(e || "").trim();
if (!t) return [];
let n = (() => {
@@ -10165,91 +10254,91 @@ function Df(e) {
`[href="#${n}"]`
];
}
-function Of(e) {
+function Af(e) {
let t = `${e?.textContent || ""} ${e?.title || ""} ${e?.getAttribute?.("aria-label") || ""}`;
return /assets\s*manager|majoor/i.test(t);
}
-function kf(e) {
+function jf(e) {
return !e || typeof e != "object" ? !1 : typeof HTMLElement < "u" ? e instanceof HTMLElement : typeof e.querySelector == "function" && typeof e.appendChild == "function";
}
-function Af() {
+function Mf() {
if (typeof document > "u") return null;
- for (let e of Df(Cf)) {
+ for (let e of kf(Tf)) {
let t = document.querySelector(e);
- if (kf(t)) return t;
+ if (jf(t)) return t;
}
let e = Array.from(document.querySelectorAll(".pi-folder, .pi-folder-open"));
for (let t of e) {
let e = t.closest?.("button,[role='tab'],a,.p-button,.comfyui-button,.sidebar-tab");
- if (kf(e) && Of(e)) return e;
+ if (jf(e) && Af(e)) return e;
}
- return Array.from(document.querySelectorAll("button,[role='tab'],a,.p-button,.comfyui-button,.sidebar-tab")).find((e) => kf(e) && Of(e)) || null;
-}
-function jf() {
- Ef();
- let e = Af();
- if (!e) return !1;
- let t = e.querySelector(`:scope > .${vf}`);
- return !Nf() || Sf <= 0 ? (t?.remove(), e.classList.remove(yf), !0) : (t || (t = document.createElement("span"), t.className = vf, t.setAttribute("aria-hidden", "true"), e.appendChild(t)), e.classList.add(yf), t.textContent = Sf > xf ? `${xf}+` : String(Sf), !0);
-}
-function Mf() {
- jf(), typeof requestAnimationFrame == "function" && requestAnimationFrame(() => jf()), setTimeout(() => jf(), 250), setTimeout(() => jf(), 1e3);
+ return Array.from(document.querySelectorAll("button,[role='tab'],a,.p-button,.comfyui-button,.sidebar-tab")).find((e) => jf(e) && Af(e)) || null;
}
function Nf() {
+ Of();
+ let e = Mf();
+ if (!e) return !1;
+ let t = e.querySelector(`:scope > .${bf}`);
+ return !Ff() || wf <= 0 ? (t?.remove(), e.classList.remove(xf), !0) : (t || (t = document.createElement("span"), t.className = bf, t.setAttribute("aria-hidden", "true"), e.appendChild(t)), e.classList.add(xf), t.textContent = wf > Cf ? `${Cf}+` : String(wf), !0);
+}
+function Pf() {
+ Nf(), typeof requestAnimationFrame == "function" && requestAnimationFrame(() => Nf()), setTimeout(() => Nf(), 250), setTimeout(() => Nf(), 1e3);
+}
+function Ff() {
return B.SIDEBAR_ASSET_BADGE_ENABLED !== !1;
}
-function Pf(e = null) {
+function If(e = null) {
let t = String(e?.id || e?.asset_id || "").trim();
if (t) return `id:${t}`;
let n = String(e?.type || e?.source || "output").trim().toLowerCase(), r = String(e?.root_id || e?.custom_root_id || "").trim().toLowerCase(), i = String(e?.subfolder || e?.sub_folder || e?.subFolder || "").trim().toLowerCase(), a = String(e?.filename || "").trim().toLowerCase(), o = String(e?.filepath || e?.path || e?.fullpath || e?.full_path || "").trim().toLowerCase(), s = a || o;
return s ? `file:${n}|${r}|${i}|${s}` : "";
}
-function Ff(e) {
+function Lf(e) {
if (!e) return !0;
- if (Tf.has(e)) return !1;
- if (Tf.add(e), Tf.size > 1e3) {
- let e = Array.from(Tf).slice(-500);
- Tf.clear();
- for (let t of e) Tf.add(t);
+ if (Df.has(e)) return !1;
+ if (Df.add(e), Df.size > 1e3) {
+ let e = Array.from(Df).slice(-500);
+ Df.clear();
+ for (let t of e) Df.add(t);
}
return !0;
}
-function If({ sidebarTabId: e } = {}) {
+function Rf({ sidebarTabId: e } = {}) {
let t = String(e || "").trim();
- t && (Cf = t), !wf && typeof window < "u" && (wf = !0, window.addEventListener?.("mjr-settings-changed", (e) => {
- e?.detail?.key === "sidebar.assetBadgeEnabled" && (Nf() || (Sf = 0, Tf.clear()), Mf());
- })), Mf();
+ t && (Tf = t), !Ef && typeof window < "u" && (Ef = !0, window.addEventListener?.("mjr-settings-changed", (e) => {
+ e?.detail?.key === "sidebar.assetBadgeEnabled" && (Ff() || (wf = 0, Df.clear()), Pf());
+ })), Pf();
}
-function Lf(e = null) {
- Nf() && Ff(Pf(e)) && (Sf += 1, Mf());
+function zf(e = null) {
+ Ff() && Lf(If(e)) && (wf += 1, Pf());
}
-function Rf() {
- Sf = 0, Tf.clear(), Mf();
+function Bf() {
+ wf = 0, Df.clear(), Pf();
}
// ui/features/runtime/pendingGeneratedAssets.ts
-var zf = 0;
-function Bf(e = 1) {
+var Vf = 0;
+function Hf(e = 1) {
let t = Math.max(1, Number(e) || 1);
- zf += t;
+ Vf += t;
try {
- window.__mjrPendingGeneratedAssetCount = zf;
+ window.__mjrPendingGeneratedAssetCount = Vf;
} catch {}
- return zf;
+ return Vf;
}
-function Vf() {
- let e = zf;
- zf = 0;
+function Uf() {
+ let e = Vf;
+ Vf = 0;
try {
window.__mjrPendingGeneratedAssetCount = 0;
} catch {}
return e;
}
// ui/features/runtime/registerRealtimeListeners.ts
-var Hf = 3e4, Uf = /* @__PURE__ */ new Map(), Wf = "live";
-function Gf(e) {
+var Wf = 3e4, Gf = /* @__PURE__ */ new Map(), Kf = "live";
+function qf(e) {
return e === !0 || e === 1 || e === "1" ? !0 : e === !1 || e === 0 || e === "0" ? !1 : null;
}
-function Kf(e) {
+function Jf(e) {
let t = [
e?.has_ai_vector,
e?.hasAiVector,
@@ -10259,25 +10348,25 @@ function Kf(e) {
e?.vectorIndexed
];
for (let e of t) {
- let t = Gf(e);
+ let t = qf(e);
if (t !== null) return t;
}
return !1;
}
-function qf(e) {
- let t = Date.now(), n = Number(Uf.get(e) || 0);
- if (n > 0 && t - n < Hf) return !0;
- if (Uf.set(e, t), Uf.size > 500) {
- let e = t - 5 * Hf;
- for (let [t, n] of Uf.entries()) Number(n) < e && Uf.delete(t);
+function Yf(e) {
+ let t = Date.now(), n = Number(Gf.get(e) || 0);
+ if (n > 0 && t - n < Wf) return !0;
+ if (Gf.set(e, t), Gf.size > 500) {
+ let e = t - 5 * Wf;
+ for (let [t, n] of Gf.entries()) Number(n) < e && Gf.delete(t);
}
return !1;
}
-function Jf(e) {
+function Xf(e) {
let t = String(e?.id || "").trim();
- t && (Kf(e) || qf(t) || ge(t).catch((e) => console.debug?.("[Majoor] auto vector index failed", e)));
+ t && (Jf(e) || Yf(t) || ge(t).catch((e) => console.debug?.("[Majoor] auto vector index failed", e)));
}
-function Yf(e) {
+function Zf(e) {
let t = String(e?.kind || "").trim().toLowerCase();
if (t) return t;
let n = String(e?.filename || e?.filepath || e?.path || e?.fullpath || "").trim(), r = n.includes(".") && n.split(".").pop()?.toLowerCase?.() || "";
@@ -10325,8 +10414,8 @@ function Yf(e) {
"spz"
].includes(r) ? "model3d" : "unknown" : "";
}
-function Xf(e, { jobId: t = "" } = {}) {
- let n = String(e?.filename || "").trim(), r = String(e?.filepath || e?.path || e?.fullpath || e?.full_path || "").trim(), i = String(e?.subfolder || e?.sub_folder || e?.subFolder || "").trim(), a = String(e?.type || e?.source || "output").trim().toLowerCase(), o = String(e?.root_id || e?.custom_root_id || "").trim(), s = Yf(e);
+function Qf(e, { jobId: t = "" } = {}) {
+ let n = String(e?.filename || "").trim(), r = String(e?.filepath || e?.path || e?.fullpath || e?.full_path || "").trim(), i = String(e?.subfolder || e?.sub_folder || e?.subFolder || "").trim(), a = String(e?.type || e?.source || "output").trim().toLowerCase(), o = String(e?.root_id || e?.custom_root_id || "").trim(), s = Zf(e);
if (!s || !n && !r) return null;
let c = n || r.split(/[/\\]/).filter(Boolean).pop() || "";
if (!c) return null;
@@ -10337,7 +10426,7 @@ function Xf(e, { jobId: t = "" } = {}) {
c
].map((e) => String(e || "").trim().toLowerCase()).join("|"), d = Date.now() / 1e3, f = String(e?.job_id || t || "").trim();
return {
- id: `${Wf}:${u || l.toLowerCase()}`,
+ id: `${Kf}:${u || l.toLowerCase()}`,
filename: c,
filepath: l,
path: l,
@@ -10360,7 +10449,7 @@ function Xf(e, { jobId: t = "" } = {}) {
_mjrLiveLabel: "In progress"
};
}
-function Zf(e) {
+function $f(e) {
let t = String(e || "");
try {
if (typeof CSS < "u" && typeof CSS.escape == "function") return CSS.escape(t);
@@ -10369,11 +10458,11 @@ function Zf(e) {
}
return t.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
}
-function Qf(e, t) {
+function ep(e, t) {
let n = String(e || "").trim().toLowerCase();
return n === "delete_db" ? t("btn.deleteDb", "Delete DB") : n === "reset_index" ? t("btn.resetIndex", "Reset index") : n === "restore_db" ? t("btn.dbRestore", "Restore DB") : t("btn.maintenance", "Maintenance");
}
-function $f(e, t) {
+function tp(e, t) {
let n = String(e || "").trim().toLowerCase(), r = String(t || "").trim().toLowerCase(), i = {
delete_db: [
"started",
@@ -10407,7 +10496,7 @@ function $f(e, t) {
label: r.replace(/[_-]+/g, " ")
};
}
-async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStreamModule: i, ensureExecutionRuntime: a, emitRuntimeStatus: o, getActiveGridContainer: s, pushGeneratedAsset: c, upsertAsset: l, upsertAssetNow: u, removeAssetsFromGrid: d, getEnrichmentState: f, setEnrichmentState: p, comfyToast: m, t: h, reportError: g, registerCleanableListener: _, syncExecutionBackendState: v }) {
+async function np({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStreamModule: i, ensureExecutionRuntime: a, emitRuntimeStatus: o, getActiveGridContainer: s, pushGeneratedAsset: c, upsertAsset: l, upsertAssetNow: u, removeAssetsFromGrid: d, getEnrichmentState: f, setEnrichmentState: p, comfyToast: m, t: h, reportError: g, registerCleanableListener: _, syncExecutionBackendState: v }) {
e._mjrExecutedHandler = (e) => {
try {
n.handleExecutedEvent(e, { appRef: r });
@@ -10471,7 +10560,7 @@ async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStre
function b(e, t, { immediate: n = !1, force: r = !1 } = {}) {
let i = String(t?.id || "").trim(), a = String(t?.kind || "").trim(), o = String(t?.filename || "").trim(), s = String(t?.filepath || "").trim(), c = !!a && (!!o || !!s), d = !1;
if (i) try {
- d = typeof e?._mjrHasAssetId == "function" ? !!e._mjrHasAssetId(i) : !!e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Zf(i)}"]`);
+ d = typeof e?._mjrHasAssetId == "function" ? !!e._mjrHasAssetId(i) : !!e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${$f(i)}"]`);
} catch (e) {
console.debug?.(e);
}
@@ -10500,7 +10589,7 @@ async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStre
if (n !== "output" && n !== "all") return;
let r = Array.isArray(e?.detail?.files) ? e.detail.files : [], i = String(e?.detail?.prompt_id || e?.detail?.promptId || "").trim();
for (let e of r) {
- let n = Xf(e, { jobId: i });
+ let n = Qf(e, { jobId: i });
n && b(t, n, {
immediate: !0,
force: !0
@@ -10515,19 +10604,19 @@ async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStre
let t = n.prepareLiveAssetEvent(e.detail), r = t?.detail || e.detail;
if (t?.defer) return;
let i = n.isRenderableLiveAsset(r);
- i && c(r), Jf(r);
+ i && c(r), Xf(r);
let a = s();
if (!a) {
- i && Bf();
+ i && Hf();
return;
}
let o = a.dataset?.mjrScope || "output";
if (o !== "output" && o !== "all") {
- i && Bf();
+ i && Hf();
return;
}
let l = a.dataset?.mjrQuery || "*";
- String(l).trim() === "*" && i ? b(a, r, { immediate: !0 }) || Bf() : i && Bf();
+ String(l).trim() === "*" && i ? b(a, r, { immediate: !0 }) || Hf() : i && Hf();
} catch (e) {
g(e, "entry.asset_added");
}
@@ -10590,7 +10679,7 @@ async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStre
if (window.dispatchEvent(new CustomEvent(V.ASSET_INDEXED, { detail: t })), !t) return;
let r = n.prepareLiveAssetEvent(t), i = r?.detail || t;
if (r?.defer) return;
- n.isRenderableLiveAsset(i) && (c(i), Lf(i)), Jf(i);
+ n.isRenderableLiveAsset(i) && (c(i), zf(i)), Xf(i);
let a = s();
if (!a) return;
b(a, i, {
@@ -10625,11 +10714,11 @@ async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStre
if (!s) return;
let c = r === "error" || n === "failed" ? "error" : n === "done" ? "success" : "info", l = { history: {
trackId: `maintenance:${String(i || "db_restore").trim().toLowerCase() || "db_restore"}`,
- title: Qf(i, h),
+ title: ep(i, h),
detail: s,
status: n,
operation: String(i || "db_restore").trim().toLowerCase(),
- progress: $f(i, n),
+ progress: tp(i, n),
source: String(t?.name || "").trim() || "maintenance",
forceStore: !0
} };
@@ -10659,7 +10748,7 @@ async function ep({ api: e, runtime: t, executionRuntime: n, appRef: r, liveStre
_(t, window, V.ASSETS_DELETED, x), t && typeof t == "object" && (t.api = e, t.assetsDeletedHandler = x), console.debug("[Majoor] Real-time listener registered");
}
// ui/features/runtime/entryDebugApi.ts
-function tp({ resolveNodeStreamModule: e }) {
+function rp({ resolveNodeStreamModule: e }) {
typeof window < "u" && (window.MajoorDebug = {
exportMetrics: () => window.MajoorMetrics?.exportMetrics?.(),
getMetrics: () => window.MajoorMetrics?.getMetricsReport?.(),
@@ -10674,16 +10763,16 @@ function tp({ resolveNodeStreamModule: e }) {
}, console.debug?.("[Majoor] NodeStream API: window.MajoorNodeStream.mode, .listAdapters(), .getKnownNodeSets()"));
}
// ui/features/runtime/benignConsoleNoise.ts
-var np = ["ResizeObserver loop completed with undelivered notifications.", "ResizeObserver loop limit exceeded"];
-function rp(e) {
+var ip = ["ResizeObserver loop completed with undelivered notifications.", "ResizeObserver loop limit exceeded"];
+function ap(e) {
try {
let t = String(e?.message || e || "");
- return np.some((e) => t.includes(e));
+ return ip.some((e) => t.includes(e));
} catch {
return !1;
}
}
-function ip() {
+function op() {
if (typeof window > "u") return null;
try {
window.__MJR_BENIGN_CONSOLE_NOISE_FILTER__?.abort?.();
@@ -10698,7 +10787,7 @@ function ip() {
}
let t = (e) => {
try {
- if (!rp(e?.message || e?.error)) return;
+ if (!ap(e?.message || e?.error)) return;
e.preventDefault?.(), e.stopImmediatePropagation?.();
} catch (e) {
console.debug?.(e);
@@ -10723,7 +10812,7 @@ function ip() {
return window.__MJR_BENIGN_CONSOLE_NOISE_FILTER__ = r, r;
}
// ui/features/geninfo/genInfoOverridePicker.ts
-var ap = "Majoor.GenInfoOverridePicker", op = "MajoorGenInfoOverride", sp = R("genInfoOverride.autoFillFromWorkflow", "Auto fill from workflow"), cp = R("genInfoOverride.pick", "Pick"), lp = {
+var sp = "Majoor.GenInfoOverridePicker", cp = "MajoorGenInfoOverride", lp = R("genInfoOverride.autoFillFromWorkflow", "Auto fill from workflow"), up = R("genInfoOverride.pick", "Pick"), dp = {
positive_prompt: [
"positive_prompt",
"prompt",
@@ -10746,7 +10835,7 @@ var ap = "Majoor.GenInfoOverridePicker", op = "MajoorGenInfoOverride", sp = R("g
],
vae: ["vae", "vae_name"],
clip: ["clip", "clip_name"]
-}, up = [
+}, fp = [
{
field: "positive_prompt",
label: "prompt"
@@ -10791,14 +10880,14 @@ var ap = "Majoor.GenInfoOverridePicker", op = "MajoorGenInfoOverride", sp = R("g
field: "denoise",
label: "denoise"
}
-], dp = 0x10000000000000000, fp = !1, pp = !1;
-function mp(e, t) {
+], pp = 0x10000000000000000, mp = !1, hp = !1;
+function gp(e, t) {
let n = (e.widgets ?? []).find((e) => e?.name === t);
if (n && n.value !== void 0 && n.value !== null && String(n.value).trim() !== "") return n.value;
let r = Array.isArray(e.widgets_values) ? e.widgets_values : [], i = (Array.isArray(e.widgets) ? e.widgets : []).findIndex((e) => e?.name === t);
return i >= 0 ? r[i] : void 0;
}
-function hp(e, t, n, r, i) {
+function _p(e, t, n, r, i) {
if (r == null || String(r).trim() === "") return;
let a = `${n}:${String(r).trim()}`;
t.has(a) || (t.add(a), e.push({
@@ -10808,42 +10897,42 @@ function hp(e, t, n, r, i) {
source: i
}));
}
-function gp(e, t, n) {
+function vp(e, t, n) {
let r = t.toLowerCase();
- return !!((lp[e] ?? [e]).some((e) => r === e || r.includes(e)) || e === "positive_prompt" && r === "text" && n.toLowerCase().includes("positive") || e === "negative_prompt" && (r.includes("negative") || n.toLowerCase().includes("negative")));
+ return !!((dp[e] ?? [e]).some((e) => r === e || r.includes(e)) || e === "positive_prompt" && r === "text" && n.toLowerCase().includes("positive") || e === "negative_prompt" && (r.includes("negative") || n.toLowerCase().includes("negative")));
}
-function _p(e, t = null) {
+function yp(e, t = null) {
let n = [], r = /* @__PURE__ */ new Set();
for (let { graph: i, label: a } of mt(e)) for (let e of ft(i)) {
- if (String(e?.comfyClass || e?.type || "") === op) continue;
+ if (String(e?.comfyClass || e?.type || "") === cp) continue;
let i = String(e?.title || e?.comfyClass || e?.type || `Node ${e?.id ?? ""}`).trim(), o = a === "Workflow" ? i : `${a} / ${i}`;
- for (let [t, i] of Object.entries(lp)) for (let a of i) hp(n, r, t, mp(e, a), o);
+ for (let [t, i] of Object.entries(dp)) for (let a of i) _p(n, r, t, gp(e, a), o);
let s = Array.isArray(e.widgets) ? e.widgets : [], c = Array.isArray(e.widgets_values) ? e.widgets_values : [];
s.forEach((e, a) => {
let s = String(e?.name || "").toLowerCase(), l = e?.value ?? c[a];
- s.includes("positive") || s === "text" && String(i).toLowerCase().includes("positive") ? hp(n, r, "positive_prompt", l, o) : s.includes("negative") && hp(n, r, "negative_prompt", l, o), t && gp(t, s, i) && hp(n, r, t, l, `${o} / ${e?.name || `widget ${a + 1}`}`);
+ s.includes("positive") || s === "text" && String(i).toLowerCase().includes("positive") ? _p(n, r, "positive_prompt", l, o) : s.includes("negative") && _p(n, r, "negative_prompt", l, o), t && vp(t, s, i) && _p(n, r, t, l, `${o} / ${e?.name || `widget ${a + 1}`}`);
});
}
return t ? n.filter((e) => e.field === t).slice(0, 120) : n.slice(0, 80);
}
-function vp(e, t) {
+function bp(e, t) {
return (e.widgets ?? []).find((e) => e?.name === t);
}
-function yp(e) {
- let t = vp(e, "seed");
+function xp(e) {
+ let t = bp(e, "seed");
t && (t.options = {
...t.options ?? {},
min: -1,
- max: dp,
+ max: pp,
control_after_generate: !1
});
}
-function bp(e, t) {
+function Sp(e, t) {
return t === "positive_prompt" ? e?.prompt ?? e?.positive_prompt : t === "negative_prompt" ? e?.negative_prompt ?? e?.negative : t === "loras_json" && Array.isArray(e?.loras) ? JSON.stringify(e.loras) : t === "custom_info_json" && Array.isArray(e?.custom_info) ? JSON.stringify(e.custom_info) : e?.[t];
}
-function xp(e, t) {
+function Cp(e, t) {
if (!e || !t || typeof t != "object") return 0;
- yp(e);
+ xp(e);
let n = 0;
for (let r of [
"positive_prompt",
@@ -10861,14 +10950,14 @@ function xp(e, t) {
"workflow_notes",
"custom_info_json"
]) {
- let i = bp(t, r);
+ let i = Sp(t, r);
if (i == null) continue;
- let a = vp(e, r);
- a && (Sp(a, i, e, r), Cp(a, i), n += 1);
+ let a = bp(e, r);
+ a && (wp(a, i, e, r), Tp(a, i), n += 1);
}
return n;
}
-function Sp(e, t, n, r) {
+function wp(e, t, n, r) {
if (r !== "seed") {
Wn(e, t, n);
return;
@@ -10878,7 +10967,7 @@ function Sp(e, t, n, r) {
e.options = {
...e.options ?? {},
min: -1,
- max: dp,
+ max: pp,
control_after_generate: !1
}, e.value = Math.trunc(i);
try {
@@ -10886,7 +10975,7 @@ function Sp(e, t, n, r) {
} catch {}
}
}
-function Cp(e, t) {
+function Tp(e, t) {
let n = String(t ?? ""), r = [
e?.inputEl,
e?.element,
@@ -10899,26 +10988,26 @@ function Cp(e, t) {
e.value = n;
} catch {}
}
-function wp(e, t, n) {
- let r = kp({ detail: { output: t } });
- if (r && xp(e, r)) try {
+function Ep(e, t, n) {
+ let r = jp({ detail: { output: t } });
+ if (r && Cp(e, r)) try {
e.setSize?.(e.computeSize?.()), e.graph?.setDirtyCanvas?.(!0, !0), e.graph?.change?.(), n?.graph?.setDirtyCanvas?.(!0, !0), n?.graph?.change?.(), n?.canvas?.setDirty?.(!0, !0), n?.canvas?.draw?.(!0, !0);
} catch {}
}
-function Tp(e, t, n = null) {
- let r = n || t.field, i = vp(e, r);
- i && (Sp(i, t.value, e, r), Cp(i, t.value));
+function Dp(e, t, n = null) {
+ let r = n || t.field, i = bp(e, r);
+ i && (wp(i, t.value, e, r), Tp(i, t.value));
}
-function Ep(e) {
+function Op(e) {
return !e || e.value === void 0 || e.value === null || String(e.value).trim() === "";
}
-function Dp(e, t) {
- let n = _p(t), r = 0;
- for (let t of Object.keys(lp)) {
- let i = vp(e, t);
- if (!i || !Ep(i)) continue;
+function kp(e, t) {
+ let n = yp(t), r = 0;
+ for (let t of Object.keys(dp)) {
+ let i = bp(e, t);
+ if (!i || !Op(i)) continue;
let a = n.find((e) => e.field === t);
- a && (Sp(i, a.value, e, t), Cp(i, a.value), r += 1);
+ a && (wp(i, a.value, e, t), Tp(i, a.value), r += 1);
}
return t?.graph?.setDirtyCanvas?.(!0, !0), t?.graph?.change?.(), t?.extensionManager?.toast?.add?.({
severity: r ? "success" : "warn",
@@ -10927,34 +11016,34 @@ function Dp(e, t) {
life: 3e3
}), r;
}
-function Op(e, t) {
- if (e && String(e?.comfyClass || e?.type || "") === op && (yp(e), !(e.widgets ?? []).some((e) => e?.name === sp) && typeof e.addWidget == "function")) {
- e.addWidget("button", sp, null, () => Dp(e, t));
- for (let n of up) {
- let r = `${cp} ${n.label}`;
- (e.widgets ?? []).some((e) => e?.name === r) || e.addWidget("button", r, null, () => jp(e, t, n.field));
+function Ap(e, t) {
+ if (e && String(e?.comfyClass || e?.type || "") === cp && (xp(e), !(e.widgets ?? []).some((e) => e?.name === lp) && typeof e.addWidget == "function")) {
+ e.addWidget("button", lp, null, () => kp(e, t));
+ for (let n of fp) {
+ let r = `${up} ${n.label}`;
+ (e.widgets ?? []).some((e) => e?.name === r) || e.addWidget("button", r, null, () => Np(e, t, n.field));
}
try {
e.setSize?.(e.computeSize?.()), t?.graph?.setDirtyCanvas?.(!0, !0);
} catch {}
}
}
-function kp(e) {
+function jp(e) {
let t = e?.detail?.output, n = t?.majoor_geninfo_override ?? t?.ui?.majoor_geninfo_override, r = Array.isArray(n) ? n[0] : n;
return r && typeof r == "object" ? r : null;
}
-function Ap(e) {
- if (pp) return;
+function Mp(e) {
+ if (hp) return;
let t = e?.api;
- t && typeof t.addEventListener == "function" && (pp = !0, t.addEventListener("executed", (t) => {
+ t && typeof t.addEventListener == "function" && (hp = !0, t.addEventListener("executed", (t) => {
let n = t?.detail?.node ?? t?.detail?.display_node;
if (!n) return;
let r = pt(e, n);
- r && String(r?.comfyClass || r?.type || "") === op && wp(r, t?.detail?.output, e);
+ r && String(r?.comfyClass || r?.type || "") === cp && Ep(r, t?.detail?.output, e);
}));
}
-function jp(e, t, n = null) {
- let r = _p(t, n);
+function Np(e, t, n = null) {
+ let r = yp(t, n);
if (!r.length) {
t?.extensionManager?.toast?.add?.({
severity: "warn",
@@ -10977,49 +11066,49 @@ function jp(e, t, n = null) {
for (let t of r) {
let r = document.createElement("button");
r.type = "button", r.style.cssText = "width:100%;display:grid;grid-template-columns:130px 1fr 150px;gap:8px;text-align:left;background:#2b2b2b;color:#eee;border:1px solid #3d3d3d;border-radius:5px;padding:7px;margin:5px 0;cursor:pointer", r.innerHTML = `${t.label}`, r.children[1].textContent = String(t.value), r.children[2].textContent = t.source, r.onclick = () => {
- Tp(e, t, n), i.remove();
+ Dp(e, t, n), i.remove();
}, a.appendChild(r);
}
i.appendChild(a), a.querySelector("[data-close]")?.addEventListener("click", () => i.remove()), i.addEventListener("click", (e) => {
e.target === i && i.remove();
}), document.body.appendChild(i);
}
-function Mp(e, t) {
- if (String(e?.comfyClass || e?.type || "") !== op) return [];
+function Pp(e, t) {
+ if (String(e?.comfyClass || e?.type || "") !== cp) return [];
let n = [{
content: R("genInfoOverride.pickFromWorkflow", "Pick Gen Info from workflow"),
- callback: () => jp(e, t)
+ callback: () => Np(e, t)
}];
- for (let r of up) n.push({
+ for (let r of fp) n.push({
content: `Pick ${r.label}`,
- callback: () => jp(e, t, r.field)
+ callback: () => Np(e, t, r.field)
});
return n.push({
- content: sp,
- callback: () => Dp(e, t)
+ content: lp,
+ callback: () => kp(e, t)
}), n;
}
-function Np(e = null) {
- if (fp) return;
+function Fp(e = null) {
+ if (mp) return;
let t = e || $e();
- !t || typeof t.registerExtension != "function" ? setTimeout(() => Np(e), 100) : (fp = !0, Ap(t), t.registerExtension({
- name: ap,
+ !t || typeof t.registerExtension != "function" ? setTimeout(() => Fp(e), 100) : (mp = !0, Mp(t), t.registerExtension({
+ name: sp,
async nodeCreated(e) {
- Op(e, t);
+ Ap(e, t);
},
getNodeMenuItems(e) {
- return Mp(e, t);
+ return Pp(e, t);
}
}), setTimeout(() => {
- for (let { graph: e } of mt(t)) for (let n of ft(e)) Op(n, t);
+ for (let { graph: e } of mt(t)) for (let n of ft(e)) Ap(n, t);
}, 0));
}
// ui/vue/composables/useDragDrop.ts
-function Pp() {
+function Ip() {
let e = null;
kr(() => {
try {
- e = is() ?? null;
+ e = os() ?? null;
} catch (e) {
console.warn("[Majoor] useDragDrop: init failed", e);
}
@@ -11030,7 +11119,7 @@ function Pp() {
console.debug?.(e);
}
try {
- as({ force: !0 });
+ ss({ force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11038,10 +11127,10 @@ function Pp() {
});
}
// ui/vue/GlobalRuntime.vue
-var Fp = /* @__PURE__ */ lr({
+var Lp = /* @__PURE__ */ lr({
__name: "GlobalRuntime",
setup(e) {
- let t = cr(() => import("./chunks/ViewerPortal-DZOLbwNu.js")), n = Q(!1), r = [
+ let t = cr(() => import("./chunks/ViewerPortal-CYbu70-Q.js")), n = Q(!1), r = [
V.OPEN_VIEWER,
V.MFV_OPEN,
V.MFV_TOGGLE,
@@ -11062,7 +11151,7 @@ var Fp = /* @__PURE__ */ lr({
}
});
}
- return Pp(), kr(() => {
+ return Ip(), kr(() => {
for (let e of r) try {
window.addEventListener(e, i, { once: !1 });
} catch (e) {
@@ -11076,7 +11165,7 @@ var Fp = /* @__PURE__ */ lr({
}
}), (e, r) => n.value ? (q(), nr(Z(t), { key: 0 })) : G("", !0);
}
-}), Ip = {
+}), Rp = {
gridRenderCount: 0,
gridRenderTotalMs: 0,
searchQueryCount: 0,
@@ -11087,20 +11176,20 @@ var Fp = /* @__PURE__ */ lr({
thumbnailLoadCount: 0,
thumbnailLoadFailures: 0,
errorCounts: {}
-}, Lp = /* @__PURE__ */ new Map();
-function Rp(e) {
+}, zp = /* @__PURE__ */ new Map();
+function Bp(e) {
let t = performance.now();
- Lp.set(e, t);
+ zp.set(e, t);
try {
performance.mark(`${e}-start`);
} catch {}
}
-function zp(e, t) {
- let n = Lp.get(e);
+function Vp(e, t) {
+ let n = zp.get(e);
if (!n) return console.warn(`[Majoor Metrics] Timer not found: ${e}`), 0;
let r = performance.now() - n;
- if (Lp.delete(e), t) {
- let e = `${t}Count`, n = `${t}TotalMs`, i = Ip;
+ if (zp.delete(e), t) {
+ let e = `${t}Count`, n = `${t}TotalMs`, i = Rp;
typeof i[e] == "number" && (i[e]++, i[n] += r);
}
r > 100 && console.log(`[Majoor Metrics] ${e}: ${r.toFixed(2)}ms`);
@@ -11109,15 +11198,15 @@ function zp(e, t) {
} catch {}
return r;
}
-function Bp(e) {
- return Lp.has(e);
+function Hp(e) {
+ return zp.has(e);
}
-function Vp(e) {
+function Up(e) {
try {
performance.mark(`${e}-start`);
} catch {}
}
-function Hp(e) {
+function Wp(e) {
try {
performance.mark(`${e}-end`), performance.measure(e, `${e}-start`, `${e}-end`);
let t = performance.getEntriesByName(e)[0]?.duration || 0;
@@ -11126,47 +11215,47 @@ function Hp(e) {
return null;
}
}
-function Up(e, t = !1) {
- Ip.apiCallCount++, Ip.apiCallTotalMs += e, t && Ip.apiErrorCount++;
-}
-function Wp(e) {
- Ip.gridRenderCount++, Ip.gridRenderTotalMs += e;
-}
-function Gp(e) {
- Ip.searchQueryCount++, Ip.searchQueryTotalMs += e;
+function Gp(e, t = !1) {
+ Rp.apiCallCount++, Rp.apiCallTotalMs += e, t && Rp.apiErrorCount++;
}
function Kp(e) {
- Ip.thumbnailLoadCount++, e || Ip.thumbnailLoadFailures++;
+ Rp.gridRenderCount++, Rp.gridRenderTotalMs += e;
}
-function qp(e, t) {
- Ip.errorCounts[e] = (Ip.errorCounts[e] || 0) + 1;
+function qp(e) {
+ Rp.searchQueryCount++, Rp.searchQueryTotalMs += e;
}
-function Jp() {
+function Jp(e) {
+ Rp.thumbnailLoadCount++, e || Rp.thumbnailLoadFailures++;
+}
+function Yp(e, t) {
+ Rp.errorCounts[e] = (Rp.errorCounts[e] || 0) + 1;
+}
+function Xp() {
return {
- ...Ip,
+ ...Rp,
averages: {
- gridRenderMs: Ip.gridRenderCount > 0 ? Ip.gridRenderTotalMs / Ip.gridRenderCount : 0,
- searchQueryMs: Ip.searchQueryCount > 0 ? Ip.searchQueryTotalMs / Ip.searchQueryCount : 0,
- apiCallMs: Ip.apiCallCount > 0 ? Ip.apiCallTotalMs / Ip.apiCallCount : 0
+ gridRenderMs: Rp.gridRenderCount > 0 ? Rp.gridRenderTotalMs / Rp.gridRenderCount : 0,
+ searchQueryMs: Rp.searchQueryCount > 0 ? Rp.searchQueryTotalMs / Rp.searchQueryCount : 0,
+ apiCallMs: Rp.apiCallCount > 0 ? Rp.apiCallTotalMs / Rp.apiCallCount : 0
},
rates: {
- apiErrorRate: Ip.apiCallCount > 0 ? (Ip.apiErrorCount / Ip.apiCallCount * 100).toFixed(2) + "%" : "0%",
- thumbnailFailureRate: Ip.thumbnailLoadCount > 0 ? (Ip.thumbnailLoadFailures / Ip.thumbnailLoadCount * 100).toFixed(2) + "%" : "0%"
+ apiErrorRate: Rp.apiCallCount > 0 ? (Rp.apiErrorCount / Rp.apiCallCount * 100).toFixed(2) + "%" : "0%",
+ thumbnailFailureRate: Rp.thumbnailLoadCount > 0 ? (Rp.thumbnailLoadFailures / Rp.thumbnailLoadCount * 100).toFixed(2) + "%" : "0%"
}
};
}
-function Yp(e) {
- let t = `${e}Count`, n = `${e}TotalMs`, r = Ip, i = r[t], a = r[n];
+function Zp(e) {
+ let t = `${e}Count`, n = `${e}TotalMs`, r = Rp, i = r[t], a = r[n];
return i > 0 ? a / i : 0;
}
-function Xp() {
- let e = Ip;
+function Qp() {
+ let e = Rp;
Object.keys(e).forEach((t) => {
typeof e[t] == "number" ? e[t] = 0 : typeof e[t] == "object" && (e[t] = {});
- }), Lp.clear(), console.log("[Majoor Metrics] Metrics reset");
+ }), zp.clear(), console.log("[Majoor Metrics] Metrics reset");
}
-function Zp() {
- let e = Jp();
+function $p() {
+ let e = Xp();
console.group("[Majoor Assets Manager] Performance Metrics"), console.table({
"Grid Renders": e.gridRenderCount,
"Avg Grid Render": `${e.averages.gridRenderMs.toFixed(2)}ms`,
@@ -11179,26 +11268,26 @@ function Zp() {
"Thumbnail Loads": e.thumbnailLoadCount,
"Thumbnail Failures": e.thumbnailLoadFailures,
"Failure Rate": e.rates.thumbnailFailureRate
- }), Object.keys(Ip.errorCounts).length > 0 && console.log("Error Counts:", Ip.errorCounts), console.groupEnd();
+ }), Object.keys(Rp.errorCounts).length > 0 && console.log("Error Counts:", Rp.errorCounts), console.groupEnd();
}
typeof window < "u" && (window.MajoorMetrics = {
- startTimer: Rp,
- endTimer: zp,
- hasTimer: Bp,
- mark: Vp,
- measure: Hp,
- trackApiCall: Up,
- trackGridRender: Wp,
- trackSearchQuery: Gp,
- trackThumbnailLoad: Kp,
- trackError: qp,
- getMetricsReport: Jp,
- getAverageDuration: Yp,
- resetMetrics: Xp,
- exportMetrics: Zp
+ startTimer: Bp,
+ endTimer: Vp,
+ hasTimer: Hp,
+ mark: Up,
+ measure: Wp,
+ trackApiCall: Gp,
+ trackGridRender: Kp,
+ trackSearchQuery: qp,
+ trackThumbnailLoad: Jp,
+ trackError: Yp,
+ getMetricsReport: Xp,
+ getAverageDuration: Zp,
+ resetMetrics: Qp,
+ exportMetrics: $p
});
// ui/features/status/StatusDot.ts
-var Qp = [{
+var em = [{
key: "exiftool",
labelKey: "tool.exiftool",
hintKey: "tool.exiftool.hint"
@@ -11206,24 +11295,24 @@ var Qp = [{
key: "ffprobe",
labelKey: "tool.ffprobe",
hintKey: "tool.ffprobe.hint"
-}], $p = !1, em = null, tm = null, nm = "__MJR_STATUS_DOT_CACHE__", rm = {
+}], tm = !1, nm = null, rm = null, im = "__MJR_STATUS_DOT_CACHE__", am = {
ACTIVE: "active",
COOLDOWN: "cooldown",
IDLE: "idle"
-}, im = {
- [rm.ACTIVE]: 2e3,
- [rm.COOLDOWN]: 1e4,
- [rm.IDLE]: 6e4
+}, om = {
+ [am.ACTIVE]: 2e3,
+ [am.COOLDOWN]: 1e4,
+ [am.IDLE]: 6e4
};
-function am(e) {
- $p = !!e;
+function sm(e) {
+ tm = !!e;
try {
- globalThis._mjrMaintenanceActive = $p;
+ globalThis._mjrMaintenanceActive = tm;
} catch (e) {
console.debug?.(e);
}
}
-function om(e) {
+function cm(e) {
let t = Number(e);
if (!Number.isFinite(t) || t <= 0) return "0 B";
let n = [
@@ -11237,7 +11326,7 @@ function om(e) {
let a = r >= 100 ? 0 : r >= 10 ? 1 : 2;
return `${r.toFixed(a)} ${n[i]}`;
}
-function sm(e, t, n = null) {
+function lm(e, t, n = null) {
if (e && (e.replaceChildren(), (Array.isArray(t) ? t.filter((e) => e != null && String(e).trim() !== "") : []).forEach((t, n) => {
n > 0 && e.appendChild(document.createElement("br")), e.appendChild(document.createTextNode(String(t)));
}), n != null && String(n).trim() !== "")) {
@@ -11246,7 +11335,7 @@ function sm(e, t, n = null) {
t.style.fontSize = "11px", t.style.opacity = "0.6", t.textContent = String(n), e.appendChild(t);
}
}
-function cm(e, t = []) {
+function um(e, t = []) {
if (!e) return;
let n = Array.isArray(t) ? t.filter((e) => e && String(e.label || "").trim()) : [];
if (!n.length) return;
@@ -11266,7 +11355,7 @@ function cm(e, t = []) {
}
e.appendChild(r);
}
-function lm(e, { totalAssets: t = 0, withWorkflows: n = 0, withGenerationData: r = 0 } = {}) {
+function dm(e, { totalAssets: t = 0, withWorkflows: n = 0, withGenerationData: r = 0 } = {}) {
let i = Math.max(0, Number(t || e?.total_assets || 0) || 0);
if (i <= 0) return [];
let a = (e, t = i) => {
@@ -11312,13 +11401,13 @@ function lm(e, { totalAssets: t = 0, withWorkflows: n = 0, withGenerationData: r
} : null
].filter(Boolean);
}
-function um(e, t, n) {
+function fm(e, t, n) {
if (!e) return;
e.replaceChildren(), e.appendChild(document.createTextNode(String(t || ""))), e.appendChild(document.createElement("br"));
let r = document.createElement("span");
r.style.fontSize = "11px", r.style.opacity = "0.7", r.textContent = String(n || ""), e.appendChild(r);
}
-function dm(t, n = "neutral", r = {}) {
+function pm(t, n = "neutral", r = {}) {
if (!t) return;
let i = r?.toast !== !1, a = {
neutral: {
@@ -11384,23 +11473,23 @@ function dm(t, n = "neutral", r = {}) {
}
}
}
-function fm(e) {
+function mm(e) {
let t = String(e || "").toLowerCase();
return t === "all" ? R("scope.allFull", "All (Inputs + Outputs)") : t === "input" || t === "inputs" ? R("scope.input", "Inputs") : t === "custom" ? R("scope.custom", "Browser") : t === "workflow" ? R("scope.workflow", "Workflow") : R("scope.output", "Outputs");
}
-function pm(e, t = "") {
- if (!e || typeof e != "object") return t ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: fm(t) }) : R("status.watcher.disabled", "Watcher: disabled");
+function hm(e, t = "") {
+ if (!e || typeof e != "object") return t ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: mm(t) }) : R("status.watcher.disabled", "Watcher: disabled");
let n = !!e.enabled, r = e.scope ? String(e.scope) : "";
- return n ? r ? R("status.watcher.enabledScoped", `Watcher: enabled (${r})`, { scope: fm(r) }) : R("status.watcher.enabled", "Watcher: enabled") : r || t ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: fm(t && r && r !== t ? t : r || t) }) : R("status.watcher.disabled", "Watcher: disabled");
+ return n ? r ? R("status.watcher.enabledScoped", `Watcher: enabled (${r})`, { scope: mm(r) }) : R("status.watcher.enabled", "Watcher: enabled") : r || t ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: mm(t && r && r !== t ? t : r || t) }) : R("status.watcher.disabled", "Watcher: disabled");
}
-function mm(e = "status-action") {
+function gm(e = "status-action") {
try {
window?.dispatchEvent?.(new CustomEvent("mjr:reload-grid", { detail: { reason: String(e || "status-action") } }));
} catch (e) {
console.debug?.(e);
}
}
-function hm(e = "status-action", t = {}) {
+function _m(e = "status-action", t = {}) {
try {
window?.dispatchEvent?.(new CustomEvent("mjr-grid-dirty", { detail: {
reason: String(e || "status-action"),
@@ -11410,21 +11499,21 @@ function hm(e = "status-action", t = {}) {
console.debug?.(e);
}
}
-function gm(e = "") {
+function vm(e = "") {
try {
window?.dispatchEvent?.(new CustomEvent(V.OPEN_MESSAGE_HISTORY, { detail: { reason: String(e || "status-action") } }));
} catch (e) {
console.debug?.(e);
}
}
-async function _m(e = "") {
+async function ym(e = "") {
return await Ut(R("dialog.vectorsReset.keepQuestion", "Keep existing AI vectors?\n\nConfirm = keep vectors\nCancel = continue without vectors"), e || R("dialog.vectorsReset.title", "AI vectors"));
}
-function vm(t = {}) {
+function bm(t = {}) {
let n = typeof t?.getScanContext == "function" ? t.getScanContext : null;
- am(!1);
+ sm(!1);
let r = document.createElement("div");
- r.style.cssText = "margin-bottom: 20px; padding: 12px; background: var(--bg-color, #1a1a1a); border-radius: 6px; border: 1px solid var(--border-color, #333); cursor: pointer; transition: all 0.2s;", dm(r, "info", { toast: !1 });
+ r.style.cssText = "margin-bottom: 20px; padding: 12px; background: var(--bg-color, #1a1a1a); border-radius: 6px; border: 1px solid var(--border-color, #333); cursor: pointer; transition: all 0.2s;", pm(r, "info", { toast: !1 });
let i = document.createElement("div");
i.style.cssText = "display: flex; align-items: center; gap: 10px; margin-bottom: 8px;";
let a = document.createElement("span");
@@ -11470,7 +11559,7 @@ function vm(t = {}) {
for (let t of n) {
let n = String(t?.name || "");
if (!n) continue;
- let i = Number(t?.mtime || 0), a = Number(t?.size_bytes || 0), o = i > 0 ? (/* @__PURE__ */ new Date(i * 1e3)).toLocaleString() : "", s = `${n}${o ? ` (${o}` : ""}${a > 0 ? `, ${om(a)}` : ""}${o ? ")" : ""}`, c = document.createElement("option");
+ let i = Number(t?.mtime || 0), a = Number(t?.size_bytes || 0), o = i > 0 ? (/* @__PURE__ */ new Date(i * 1e3)).toLocaleString() : "", s = `${n}${o ? ` (${o}` : ""}${a > 0 ? `, ${cm(a)}` : ""}${o ? ")" : ""}`, c = document.createElement("option");
c.value = n, c.textContent = s, e && e === n && (c.selected = !0, r = !0), h.appendChild(c);
}
g = h.childNodes.length > 0, h.disabled = !g, g && !r && h.childNodes[0] && (h.value = String(h.childNodes[0]?.value || "")), _ && (_.disabled = !g);
@@ -11481,16 +11570,16 @@ function vm(t = {}) {
y(), m.appendChild(h);
let b = document.createElement("button");
b.type = "button", b.textContent = R("btn.dbSave", "Save DB"), b.title = R("status.dbSaveHint", "Save a DB snapshot into archive folder"), b.style.cssText = "\n padding: 5px 10px;\n font-size: 11px;\n border-radius: 6px;\n border: 1px solid rgba(120,200,255,0.35);\n background: transparent;\n color: inherit;\n cursor: pointer;\n ", b.onclick = async (t) => {
- t.stopPropagation(), am(!0);
+ t.stopPropagation(), sm(!0);
let i = b.textContent, o = !!_?.disabled;
- b.disabled = !0, _ && (_.disabled = !0), b.textContent = R("btn.saving", "Saving..."), a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info");
+ b.disabled = !0, _ && (_.disabled = !0), b.textContent = R("btn.saving", "Saving..."), a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info");
try {
let t = await Te();
if (t?.ok) {
let n = String(t?.data?.name || "").trim(), r = Number(t?.data?.size_bytes || 0);
e(R("toast.dbSaveSuccess", "Database backup saved"), "success", 2200, { history: {
title: R("btn.dbSave", "Save DB"),
- detail: n ? `${n}${r > 0 ? ` | ${om(r)}` : ""}` : R("toast.dbSaveSuccess", "Database backup saved"),
+ detail: n ? `${n}${r > 0 ? ` | ${cm(r)}` : ""}` : R("toast.dbSaveSuccess", "Database backup saved"),
operation: "save_db",
source: n || "archive",
forceStore: !0
@@ -11499,10 +11588,10 @@ function vm(t = {}) {
} catch (t) {
e(t?.message || R("toast.dbSaveFailed", "Failed to save DB backup"), "error");
} finally {
- am(!1), b.disabled = !1, _ && (_.disabled = o || !g), b.textContent = i;
+ sm(!1), b.disabled = !1, _ && (_.disabled = o || !g), b.textContent = i;
try {
let e = n ? n() : null;
- await Dm(a, d, f, e, null, { force: !0 });
+ await km(a, d, f, e, null, { force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11523,9 +11612,9 @@ function vm(t = {}) {
source: i,
status: "started",
forceStore: !0
- } }), am(!0);
+ } }), sm(!0);
let o = _.textContent, s = !!b.disabled;
- _.disabled = !0, b.disabled = !0, h.disabled = !0, _.textContent = R("btn.restoring", "Restoring..."), a.style.background = "var(--mjr-status-warning, #FFA726)", dm(r, "warning");
+ _.disabled = !0, b.disabled = !0, h.disabled = !0, _.textContent = R("btn.restoring", "Restoring..."), a.style.background = "var(--mjr-status-warning, #FFA726)", pm(r, "warning");
try {
let t = await M({
name: i,
@@ -11535,10 +11624,10 @@ function vm(t = {}) {
} catch (t) {
e(t?.message || R("toast.dbRestoreFailed", "Failed to restore DB backup"), "error");
} finally {
- am(!1), _.disabled = !g, b.disabled = s, h.disabled = !g, _.textContent = o, mm("db-restore");
+ sm(!1), _.disabled = !g, b.disabled = s, h.disabled = !g, _.textContent = o, gm("db-restore");
try {
let e = n ? n() : null;
- await Dm(a, d, f, e, null, { force: !0 });
+ await km(a, d, f, e, null, { force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11558,11 +11647,11 @@ function vm(t = {}) {
D.style.borderColor = "rgba(255,255,255,0.25)", D.style.background = "transparent";
}, D.onclick = async (e) => {
e.stopPropagation();
- let t = await _m(R("btn.resetIndex", "Reset index"));
+ let t = await ym(R("btn.resetIndex", "Reset index"));
if (!await Ut(t ? R("dialog.resetIndex.confirmKeepVectors", "This will reset index data and rescan files while keeping existing AI vectors.\n\nContinue?") : R("dialog.resetIndex.msg", "This will delete the database and rescan all files. Continue?"), R("dialog.resetIndex.title", "Reset index?"))) return;
- gm("reset-index"), am(!0);
+ vm("reset-index"), sm(!0);
let i = D.textContent;
- D.disabled = !0, E.disabled = !0, D.textContent = R("btn.resetting"), a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info");
+ D.disabled = !0, E.disabled = !0, D.textContent = R("btn.resetting"), a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info");
try {
let e = n ? n() : {}, i = String(e?.scope || "output").toLowerCase(), o = e?.customRootId || e?.custom_root_id || e?.root_id || null, s = i === "custom" && !o;
(await De({
@@ -11577,14 +11666,14 @@ function vm(t = {}) {
clear_assets: !t,
preserve_vectors: t,
rebuild_fts: !0
- }))?.ok ? (a.style.background = "var(--mjr-status-success, #4CAF50)", dm(r, "success")) : (a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error"));
+ }))?.ok ? (a.style.background = "var(--mjr-status-success, #4CAF50)", pm(r, "success")) : (a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error"));
} catch {
- a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error");
+ a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error");
} finally {
- am(!1), D.disabled = !1, E.disabled = !1, D.textContent = i, mm("index-reset");
+ sm(!1), D.disabled = !1, E.disabled = !1, D.textContent = i, gm("index-reset");
try {
let e = n ? n() : null;
- await Dm(a, d, f, e, null, { force: !0 });
+ await km(a, d, f, e, null, { force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11602,8 +11691,8 @@ function vm(t = {}) {
e(R("status.customBrowserScanDisabledHint", "Use Outputs, Inputs, or All to run indexing scans"), "warning", 2600), T("Backfill skipped - Browser scope has no selected custom root.", "warning");
return;
}
- let c = o || "output", l = fm(c);
- gm("vector-backfill");
+ let c = o || "output", l = mm(c);
+ vm("vector-backfill");
let u = { history: {
trackId: `vector-backfill:status:${c}:${s || "default"}`,
title: "Vector Backfill",
@@ -11611,7 +11700,7 @@ function vm(t = {}) {
operation: "vector_backfill",
forceStore: !0
} };
- am(!0);
+ sm(!0);
let p = O.textContent, m = D.textContent;
O.disabled = !0, D.disabled = !0, E.disabled = !0, O.textContent = "Backfilling...", T(`Backfill started (${l})...`, "info"), ee({
summary: "Vector Backfill",
@@ -11620,7 +11709,7 @@ function vm(t = {}) {
...u.history,
status: "started",
detail: `Started (${l})`
- } }), a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info");
+ } }), a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info");
try {
let t = {
scope: c,
@@ -11687,7 +11776,7 @@ function vm(t = {}) {
errors: d,
label: "running"
}
- } }), T(`Backfill running in background - candidates ${s}, indexed ${c}, skipped ${l}, errors ${d}`, "info"), a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info");
+ } }), T(`Backfill running in background - candidates ${s}, indexed ${c}, skipped ${l}, errors ${d}`, "info"), a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info");
} else e(R("toast.vectorBackfillComplete", "Vector backfill complete! Processed: {processed}, Indexed: {indexed}, Skipped: {skipped}", {
processed: s,
indexed: c,
@@ -11705,7 +11794,7 @@ function vm(t = {}) {
errors: d,
label: "done"
}
- } }), T(`Backfill OK - processed ${s}, indexed ${c}, skipped ${l}`, "success"), a.style.background = "var(--mjr-status-success, #4CAF50)", dm(r, "success");
+ } }), T(`Backfill OK - processed ${s}, indexed ${c}, skipped ${l}`, "success"), a.style.background = "var(--mjr-status-success, #4CAF50)", pm(r, "success");
} else {
let t = String(n?.error || R("toast.vectorBackfillFailedGeneric", "Backfill failed")), i = String(n?.code || "").trim(), o = Number(n?.status || 0) || 0, s = [
i ? `code=${i}` : "",
@@ -11720,7 +11809,7 @@ function vm(t = {}) {
label: "failed",
errors: 1
}
- } }), T(`Backfill ? - ${s}\nSee console for full payload.`, "error"), console.error("[Majoor] Vector backfill failed response", n), a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error");
+ } }), T(`Backfill ? - ${s}\nSee console for full payload.`, "error"), console.error("[Majoor] Vector backfill failed response", n), a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error");
}
} catch (t) {
let n = String(t?.message || t || "Backfill failed");
@@ -11732,12 +11821,12 @@ function vm(t = {}) {
label: "failed",
errors: 1
}
- } }), T(`Backfill EXCEPTION - ${n}\nSee console for stack trace.`, "error"), console.error("[Majoor] Vector backfill exception", t), a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error");
+ } }), T(`Backfill EXCEPTION - ${n}\nSee console for stack trace.`, "error"), console.error("[Majoor] Vector backfill exception", t), a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error");
} finally {
- am(!1), O.disabled = !1, D.disabled = !1, E.disabled = !1, O.textContent = p, D.textContent = m, mm("vector-backfill");
+ sm(!1), O.disabled = !1, D.disabled = !1, E.disabled = !1, O.textContent = p, D.textContent = m, gm("vector-backfill");
try {
let e = n ? n() : null;
- await Dm(a, d, f, e, null, { force: !0 });
+ await km(a, d, f, e, null, { force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11749,24 +11838,24 @@ function vm(t = {}) {
}, E.onclick = async (t) => {
t.stopPropagation();
let i = E.textContent;
- E.disabled = !0, O.disabled = !0, D.disabled = !0, E.textContent = R("btn.memoryPurging", "Purging..."), T(R("status.memoryPurgeStarted", "Memory purge started..."), "info"), a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info");
+ E.disabled = !0, O.disabled = !0, D.disabled = !0, E.textContent = R("btn.memoryPurging", "Purging..."), T(R("status.memoryPurgeStarted", "Memory purge started..."), "info"), a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info");
try {
let t = await C();
if (t?.ok) {
let n = t?.data?.comfy_models ? R("toast.memoryPurgeComplete", "Memory purge complete. Majoor AI and ComfyUI model caches were released.") : R("toast.memoryPurgeCompleteMajoorOnly", "Memory purge complete. Majoor AI caches were released.");
- e(n, "success", 3200), T(n, "success"), a.style.background = "var(--mjr-status-success, #4CAF50)", dm(r, "success");
+ e(n, "success", 3200), T(n, "success"), a.style.background = "var(--mjr-status-success, #4CAF50)", pm(r, "success");
} else {
let n = String(t?.error || "Memory purge failed");
- e(n, "error", 4500), T(n, "error"), a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error");
+ e(n, "error", 4500), T(n, "error"), a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error");
}
} catch (t) {
let n = String(t?.message || t || "Memory purge failed");
- e(n, "error", 4500), T(n, "error"), a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error");
+ e(n, "error", 4500), T(n, "error"), a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error");
} finally {
E.disabled = !1, O.disabled = !1, D.disabled = !1, E.textContent = i;
try {
let e = n ? n() : null;
- await Dm(a, d, f, e, null, { force: !0 });
+ await km(a, d, f, e, null, { force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11779,11 +11868,11 @@ function vm(t = {}) {
k.style.borderColor = "rgba(255,80,80,0.4)", k.style.background = "transparent";
}, k.onclick = async (e) => {
e.stopPropagation();
- let t = await _m(R("btn.deleteDb", "Delete DB"));
+ let t = await ym(R("btn.deleteDb", "Delete DB"));
if (!await Ut(t ? R("dialog.dbDelete.keepVectorsConfirm", "This will reset index data and keep existing AI vectors. Database files will not be force-deleted.\n\nContinue?") : R("dialog.dbDelete.confirm", "This will permanently delete the index database and rebuild it from scratch. All ratings, tags, and cached metadata will be lost.\n\nContinue?"), R("btn.deleteDb", "Delete DB"))) return;
- am(!0);
+ sm(!0);
let i = k.textContent;
- k.disabled = !0, k.textContent = t ? R("btn.resetting", "Resetting...") : R("btn.deletingDb"), D.disabled = !0, E.disabled = !0, a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info");
+ k.disabled = !0, k.textContent = t ? R("btn.resetting", "Resetting...") : R("btn.deletingDb"), D.disabled = !0, E.disabled = !0, a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info");
try {
(t ? await De({
scope: "all",
@@ -11796,14 +11885,14 @@ function vm(t = {}) {
clear_assets: !1,
preserve_vectors: !0,
rebuild_fts: !0
- }) : await c())?.ok ? (globalThis._mjrCorruptToastShown = !1, a.style.background = "var(--mjr-status-success, #4CAF50)", dm(r, "success")) : (a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error"));
+ }) : await c())?.ok ? (globalThis._mjrCorruptToastShown = !1, a.style.background = "var(--mjr-status-success, #4CAF50)", pm(r, "success")) : (a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error"));
} catch {
- a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error");
+ a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error");
} finally {
- am(!1), k.disabled = !1, k.textContent = i, D.disabled = !1, E.disabled = !1, mm(t ? "index-reset-preserve-vectors" : "db-force-delete");
+ sm(!1), k.disabled = !1, k.textContent = i, D.disabled = !1, E.disabled = !1, gm(t ? "index-reset-preserve-vectors" : "db-force-delete");
try {
let e = n ? n() : null;
- await Dm(a, d, f, e, null, { force: !0 });
+ await km(a, d, f, e, null, { force: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -11815,34 +11904,34 @@ function vm(t = {}) {
let t = r.querySelector("#mjr-status-body");
if (!t) return;
let n = t.style.display === "none";
- wm(r, !n);
- }), wm(r, !0), r.onmouseenter = () => {
+ Em(r, !n);
+ }), Em(r, !0), r.onmouseenter = () => {
r.style.transform = "translateY(-1px)";
}, r.onmouseleave = () => {
- r.style.transform = "", dm(r, r.dataset?.mjrStatusTone || "neutral", { toast: !1 });
+ r.style.transform = "", pm(r, r.dataset?.mjrStatusTone || "neutral", { toast: !1 });
};
let j = async (e) => {
try {
let t = e?.detail || {}, i = String(t?.step || "");
if (!i) return;
let o = i === "started" || i === "stopping_workers" || i === "resetting_db" || i === "delete_db" || i === "recreate_db" || i === "replacing_files" || i === "restarting_scan";
- if (o ? am(!0) : (i === "failed" || i === "done") && am(!1), !r?.isConnected || !a?.isConnected || !d?.isConnected) return;
+ if (o ? sm(!0) : (i === "failed" || i === "done") && sm(!1), !r?.isConnected || !a?.isConnected || !d?.isConnected) return;
if (o) {
- a.style.background = "var(--mjr-status-info, #64B5F6)", dm(r, "info", { toast: !1 }), um(d, R("status.pending", "Pending..."), R("status.dbRestoreInProgress", "Database restore in progress"));
+ a.style.background = "var(--mjr-status-info, #64B5F6)", pm(r, "info", { toast: !1 }), fm(d, R("status.pending", "Pending..."), R("status.dbRestoreInProgress", "Database restore in progress"));
return;
}
if (i === "failed") {
- a.style.background = "var(--mjr-status-error, #f44336)", dm(r, "error", { toast: !1 }), sm(d, [R("status.error", "Error"), String(t?.message || R("toast.dbRestoreFailed", "Failed to restore DB backup"))]);
+ a.style.background = "var(--mjr-status-error, #f44336)", pm(r, "error", { toast: !1 }), lm(d, [R("status.error", "Error"), String(t?.message || R("toast.dbRestoreFailed", "Failed to restore DB backup"))]);
return;
}
if (i === "done") {
- a.style.background = "var(--mjr-status-success, #4CAF50)", dm(r, "success", { toast: !1 });
+ a.style.background = "var(--mjr-status-success, #4CAF50)", pm(r, "success", { toast: !1 });
let e = String(t?.operation || ""), i = e === "delete_db" ? R("toast.dbDeleteSuccess", "Database deleted and rebuilt. Files are being reindexed.") : e === "reset_index" ? R("toast.resetStarted", "Index reset started. Files will be reindexed in the background.") : R("toast.dbRestoreSuccess", "Database backup restored");
- um(d, R("status.ready", "Ready"), i);
+ fm(d, R("status.ready", "Ready"), i);
try {
let e = n ? n() : null;
setTimeout(() => {
- Dm(a, d, f, e, null, { force: !0 });
+ km(a, d, f, e, null, { force: !0 });
}, 600);
} catch (e) {
console.debug?.(e);
@@ -11853,8 +11942,8 @@ function vm(t = {}) {
}
};
try {
- let e = em;
- typeof e == "function" && window.removeEventListener("mjr-db-restore-status", e), em = j, r._mjrDbRestoreStatusHandler = j, window.addEventListener("mjr-db-restore-status", j);
+ let e = nm;
+ typeof e == "function" && window.removeEventListener("mjr-db-restore-status", e), nm = j, r._mjrDbRestoreStatusHandler = j, window.addEventListener("mjr-db-restore-status", j);
} catch (e) {
console.debug?.(e);
}
@@ -11871,27 +11960,27 @@ function vm(t = {}) {
].filter(Boolean);
if (!s.length) return;
let c = d?.querySelector?.("span");
- c ? c.textContent = s.join(" | ") : um(d, R("status.ready", "Ready"), s.join(" | "));
+ c ? c.textContent = s.join(" | ") : fm(d, R("status.ready", "Ready"), s.join(" | "));
} catch (e) {
console.debug?.(e);
}
};
try {
- let e = tm;
- typeof e == "function" && window.removeEventListener(V.RUNTIME_STATUS, e), tm = N, window.addEventListener(V.RUNTIME_STATUS, N);
+ let e = rm;
+ typeof e == "function" && window.removeEventListener(V.RUNTIME_STATUS, e), rm = N, window.addEventListener(V.RUNTIME_STATUS, N);
} catch (e) {
console.debug?.(e);
}
return r;
}
-async function ym(t, n, r = null, i = null) {
- if ($p) {
+async function xm(t, n, r = null, i = null) {
+ if (tm) {
e(R("status.maintenanceBusy", "Database maintenance in progress. Please wait."), "warning", 2200);
return;
}
let a = n?.closest?.("#mjr-status-body")?.parentElement || n?.closest?.("div"), o = String(i?.scope || "output").toLowerCase(), s = i?.customRootId || i?.custom_root_id || i?.root_id || null;
if (o === "custom" && !s) {
- t.style.background = "var(--mjr-status-info, #64B5F6)", dm(a, "info"), um(n, R("status.customBrowserScanDisabled", "Custom browser mode: scan is disabled"), R("status.customBrowserScanDisabledHint", "Use Outputs, Inputs, or All to run indexing scans"));
+ t.style.background = "var(--mjr-status-info, #64B5F6)", pm(a, "info"), fm(n, R("status.customBrowserScanDisabled", "Custom browser mode: scan is disabled"), R("status.customBrowserScanDisabledHint", "Use Outputs, Inputs, or All to run indexing scans"));
return;
}
try {
@@ -11899,7 +11988,7 @@ async function ym(t, n, r = null, i = null) {
if (t && typeof t == "object") {
let r = e - Number(t.at || 0);
if (r >= 0 && r < 6e5) {
- um(n, R("status.scanInProgress", "Scan already running..."), R("status.scanInProgressHint", "Please wait for the current scan to finish"));
+ fm(n, R("status.scanInProgress", "Scan already running..."), R("status.scanInProgressHint", "Please wait for the current scan to finish"));
return;
}
}
@@ -11927,7 +12016,7 @@ async function ym(t, n, r = null, i = null) {
if (!l) {
let e = await re(st.CONFIG);
if (!e.ok) {
- t.style.background = "var(--mjr-status-error, #f44336)", dm(a, "error"), n.textContent = R("status.errorGetConfig"), c();
+ t.style.background = "var(--mjr-status-error, #f44336)", pm(a, "error"), n.textContent = R("status.errorGetConfig"), c();
return;
}
l = { output_directory: e.data.output_directory };
@@ -11938,7 +12027,7 @@ async function ym(t, n, r = null, i = null) {
let e = Array.isArray(l?.custom_roots) ? l.custom_roots : [], t = s ? e.find((e) => e?.id === s) : null;
d = t?.path ? ` (${t.path})` : "";
} else o === "output" && (d = l?.output_directory ? ` (${l.output_directory})` : "");
- t.style.background = "var(--mjr-status-info, #64B5F6)", dm(a, "info"), um(n, R("status.scanningScope", `Scanning ${u}${d}...`, {
+ t.style.background = "var(--mjr-status-info, #64B5F6)", pm(a, "info"), fm(n, R("status.scanningScope", `Scanning ${u}${d}...`, {
scope: u,
detail: d
}), R("status.scanningHint", "This may take a while"));
@@ -11951,7 +12040,7 @@ async function ym(t, n, r = null, i = null) {
};
if (o === "custom") {
if (!s) {
- t.style.background = "var(--mjr-status-error, #f44336)", dm(a, "error"), n.textContent = R("status.selectCustomFolder"), c();
+ t.style.background = "var(--mjr-status-error, #f44336)", pm(a, "error"), n.textContent = R("status.selectCustomFolder"), c();
return;
}
f.custom_root_id = s;
@@ -11964,73 +12053,73 @@ async function ym(t, n, r = null, i = null) {
}
if (p?.ok) {
let e = p.data;
- t.style.background = "var(--mjr-status-success, #4CAF50)", dm(a, "success"), um(n, R("toast.scanComplete"), R("status.scanStats", `Added: ${e.added || 0} - Updated: ${e.updated || 0} - Skipped: ${e.skipped || 0}`, {
+ t.style.background = "var(--mjr-status-success, #4CAF50)", pm(a, "success"), fm(n, R("toast.scanComplete"), R("status.scanStats", `Added: ${e.added || 0} - Updated: ${e.updated || 0} - Skipped: ${e.skipped || 0}`, {
added: e.added || 0,
updated: e.updated || 0,
skipped: e.skipped || 0
- })), hm("scan-complete", { stats: {
+ })), _m("scan-complete", { stats: {
added: e.added || 0,
updated: e.updated || 0,
skipped: e.skipped || 0
} }), setTimeout(() => {
- Dm(t, n, r);
+ km(t, n, r);
}, 2e3);
- } else t.style.background = "var(--mjr-status-error, #f44336)", dm(a, "error"), sm(n, [R("toast.scanFailed") + `: ${p?.error || "Unknown error"}`]), setTimeout(() => {
- Dm(t, n, r);
+ } else t.style.background = "var(--mjr-status-error, #f44336)", pm(a, "error"), lm(n, [R("toast.scanFailed") + `: ${p?.error || "Unknown error"}`]), setTimeout(() => {
+ km(t, n, r);
}, 3e3);
}
-function bm(e, t, n) {
+function Sm(e, t, n) {
let r = document.createElement("span");
return r.style.cssText = "\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.1);\n ", r.textContent = `${t ? "OK" : "ERR"} ${e}`, r.title = t ? R("status.toolAvailable", `${e} available`, { tool: e }) : n || R("status.toolUnavailable", `${e} unavailable`, { tool: e }), r.style.opacity = t ? "1" : "0.75", r;
}
-function xm(e, t = {}, n = {}) {
+function Cm(e, t = {}, n = {}) {
if (!e) return;
if (e.replaceChildren(), !t || Object.keys(t).length === 0) {
e.textContent = R("status.discoveringTools");
return;
}
let r = document.createElement("div");
- r.style.display = "flex", r.style.flexWrap = "wrap", r.style.gap = "10px", r.style.alignItems = "flex-start", Qp.forEach(({ key: e, labelKey: i, hintKey: a }) => {
+ r.style.display = "flex", r.style.flexWrap = "wrap", r.style.gap = "10px", r.style.alignItems = "flex-start", em.forEach(({ key: e, labelKey: i, hintKey: a }) => {
let o = !!t[e], s = n[e], c = R(i, e), l = R(a, "");
- r.appendChild(Cm({
+ r.appendChild(Tm({
label: c,
hint: l
}, o, s));
}), e.appendChild(r);
}
-function Sm(e, t = null, n = {}) {
+function wm(e, t = null, n = {}) {
if (!e) return;
let r = e.parentElement;
if (!r) return;
let i = r.querySelector("#mjr-tools-status");
if (!i) return;
let a = n && Object.keys(n).length > 0;
- i.textContent = !t && !a ? R("status.toolStatusChecking", "Tool status: checking...") : Qp.map(({ key: e, labelKey: r }) => {
+ i.textContent = !t && !a ? R("status.toolStatusChecking", "Tool status: checking...") : em.map(({ key: e, labelKey: r }) => {
let i = R(r, e), a = t && e in t ? t[e] : void 0, o = e in n ? n[e] : void 0, s = a === void 0 ? o : a, c = s == null ? R("status.unknown", "unknown") : s ? R("status.available", "available") : R("status.missing", "missing"), l = t?.versions?.[e];
return l ? `${i}: ${c} - ${l}` : `${i}: ${c}`;
}).join(" | ");
}
-function Cm({ label: e, hint: t }, n, r) {
+function Tm({ label: e, hint: t }, n, r) {
let i = document.createElement("div");
i.style.cssText = "\n display: flex;\n flex-direction: column;\n gap: 3px;\n padding: 6px 8px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.08);\n min-width: 170px;\n ";
- let a = bm(e, n, t);
+ let a = Sm(e, n, t);
a.style.fontWeight = "500", i.appendChild(a);
let o = document.createElement("span");
return o.style.fontSize = "10px", o.style.opacity = "0.7", o.style.wordBreak = "break-all", o.textContent = R("status.path", "Path") + `: ${r || R("status.pathAuto", "auto / not configured")}`, i.appendChild(o), i;
}
-function wm(e, t) {
+function Em(e, t) {
let n = e.querySelector("#mjr-status-body"), r = e.querySelector("#mjr-status-title-indicator");
n && r && (t ? (n.style.display = "none", r.textContent = ">") : (n.style.display = "", r.textContent = "v"));
}
-function Tm(e, t) {
+function Dm(e, t) {
let n = !!e?.database?.available, r = t?.diagnostics || {}, i = !!r?.malformed, a = !!r?.locked;
return !n || i ? R("status.dbHealthError", "DB health: error") : a ? R("status.dbHealthLocked", "DB health: locked") : R("status.dbHealthOk", "DB health: ok");
}
-function Em(e, t) {
+function Om(e, t) {
let n = Number(e?.total_assets || 0), r = e?.last_index_end, i = e?.last_scan_end, a = t === "all" ? R("scope.all", "Inputs + Outputs") : t === "input" ? R("scope.input", "Inputs") : t === "custom" ? R("scope.custom", "Custom") : t === "workflow" ? R("scope.workflow", "Workflow") : R("scope.output", "Outputs");
return !Number.isFinite(n) || n <= 0 ? `${R("status.indexHealthEmpty", "Index health: empty")} (${a})` : !r && !i ? `${R("status.indexHealthPartial", "Index health: partial")} (${a})` : `${R("status.indexHealthOk", "Index health: ok")} (${a})`;
}
-async function Dm(t, n, r = null, i = null, a = null, o = {}) {
+async function km(t, n, r = null, i = null, a = null, o = {}) {
let s = n?.closest?.("#mjr-status-body")?.parentElement || n?.closest?.("div"), c = o?.signal || null, l = !!o?.force;
try {
if (!t?.isConnected || !n?.isConnected) return null;
@@ -12038,7 +12127,7 @@ async function Dm(t, n, r = null, i = null, a = null, o = {}) {
console.debug?.(e);
}
try {
- if (!l && $p) return null;
+ if (!l && tm) return null;
} catch (e) {
console.debug?.(e);
}
@@ -12072,8 +12161,8 @@ async function Dm(t, n, r = null, i = null, a = null, o = {}) {
if (a && typeof a == "object" && (a.lastCode = _?.code || null, a.lastStatus = typeof _?.status == "number" ? _.status : null), _.ok) {
let e = _.data;
a && typeof a == "object" && (a._scanAuxBackoffUntil = e?.scan_active ? Date.now() + 3e4 : 0);
- let i = e.total_assets || 0, o = e.with_workflows - 0, l = e.with_generation_data - 0, d = Math.max(0, Number(o || 0) || 0), m = e.last_scan_end, h = m ? new Date(m).toLocaleString() : "N/A", g = e.tool_availability || {}, x = e.tool_paths || {}, S = R("status.dbSize", "Database size: {size}", { size: om(e.db_size_bytes || 0) }), C = v?.ok && v?.data && v.data.vector || {}, w = C?.enabled !== !1, T = !!C?.loaded, E = !!C?.degraded, D = String(C?.last_error || "").trim(), O = w ? E ? `AI vector: degraded${D ? ` (${D})` : ""}` : T ? "AI vector: loaded" : "AI vector: initializing" : "AI vector: disabled", k = Tm(v?.data || null, y?.data || null), A = Em(e, p ? "all" : u), j = !!(v?.ok && v?.data?.database?.available), M = y?.ok && y?.data?.diagnostics || {}, N = !!M?.malformed, P = !!M?.locked, ee = !!M?.maintenance_active;
- am(ee);
+ let i = e.total_assets || 0, o = e.with_workflows - 0, l = e.with_generation_data - 0, d = Math.max(0, Number(o || 0) || 0), m = e.last_scan_end, h = m ? new Date(m).toLocaleString() : "N/A", g = e.tool_availability || {}, x = e.tool_paths || {}, S = R("status.dbSize", "Database size: {size}", { size: cm(e.db_size_bytes || 0) }), C = v?.ok && v?.data && v.data.vector || {}, w = C?.enabled !== !1, T = !!C?.loaded, E = !!C?.degraded, D = String(C?.last_error || "").trim(), O = w ? E ? `AI vector: degraded${D ? ` (${D})` : ""}` : T ? "AI vector: loaded" : "AI vector: initializing" : "AI vector: disabled", k = Dm(v?.data || null, y?.data || null), A = Om(e, p ? "all" : u), j = !!(v?.ok && v?.data?.database?.available), M = y?.ok && y?.data?.diagnostics || {}, N = !!M?.malformed, P = !!M?.locked, ee = !!M?.maintenance_active;
+ sm(ee);
let te = Math.max(0, Number(e?.enrichment_queue_length || 0) || 0), F = Ft().active || te > 0;
xt(F, te);
let I = Number(i) > 0, ne = !!(e?.last_index_end || e?.last_scan_end), re = I && ne, ie = "success";
@@ -12091,15 +12180,15 @@ async function Dm(t, n, r = null, i = null, a = null, o = {}) {
} catch (e) {
console.debug?.(e);
}
- let L = ae ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: R("scope.workflow", "Workflow") }) : p ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: R("scope.customBrowser", "Browser") }) : pm(se, u), ce = F ? R("status.enrichmentQueue", "Metadata enrichment queue: {count}", { count: te }) : R("status.enrichmentIdle", "Metadata enrichment: idle");
- xm(r, g, x), Sm(r, b, g);
+ let L = ae ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: R("scope.workflow", "Workflow") }) : p ? R("status.watcher.disabledScoped", "Watcher: disabled ({scope})", { scope: R("scope.customBrowser", "Browser") }) : hm(se, u), ce = F ? R("status.enrichmentQueue", "Metadata enrichment queue: {count}", { count: te }) : R("status.enrichmentIdle", "Metadata enrichment: idle");
+ Cm(r, g, x), wm(r, b, g);
let le = u === "all" ? R("scope.allFull", "All (Inputs + Outputs)") : u === "input" ? R("scope.input", "Inputs") : u === "custom" ? R("scope.customBrowser", "Browser") : u === "workflow" ? R("scope.workflow", "Workflow") : R("scope.output", "Outputs");
- return ie === "error" ? (t.style.background = "var(--mjr-status-error, #f44336)", dm(s, "error"), um(n, R("status.dbCorrupted", "Database appears corrupted or unavailable."), [
+ return ie === "error" ? (t.style.background = "var(--mjr-status-error, #f44336)", pm(s, "error"), fm(n, R("status.dbCorrupted", "Database appears corrupted or unavailable."), [
k,
A,
S,
L
- ].filter(Boolean).join(" | ")), e) : p ? (t.style.background = "var(--mjr-status-browser, #26A69A)", dm(s, "browser"), um(n, R("status.ready", "Ready"), [R("status.browserMetricsHidden", "Browser mode: global DB/index metrics hidden"), L].filter(Boolean).join(" | ")), e) : ae ? (t.style.background = "#d481c3", dm(s, oe), sm(n, [
+ ].filter(Boolean).join(" | ")), e) : p ? (t.style.background = "var(--mjr-status-browser, #26A69A)", pm(s, "browser"), fm(n, R("status.ready", "Ready"), [R("status.browserMetricsHidden", "Browser mode: global DB/index metrics hidden"), L].filter(Boolean).join(" | ")), e) : ae ? (t.style.background = "#d481c3", pm(s, oe), lm(n, [
R("status.workflowsIndexed", `${d.toLocaleString()} workflows indexed (${le})`, {
count: d.toLocaleString(),
scope: le
@@ -12111,19 +12200,19 @@ async function Dm(t, n, r = null, i = null, a = null, o = {}) {
A,
S,
L
- ], R("status.lastScan", `Last scan: ${h}`, { date: h })), e) : (i === 0 ? (t.style.background = oe === "browser" ? "var(--mjr-status-browser, #26A69A)" : ie === "info" ? "var(--mjr-status-info, #64B5F6)" : ie === "warning" ? "var(--mjr-status-warning, #FFA726)" : "var(--mjr-status-success, #4CAF50)", dm(s, oe), um(n, R("status.noAssets", `No assets indexed yet (${le})`, { scope: le }), [
+ ], R("status.lastScan", `Last scan: ${h}`, { date: h })), e) : (i === 0 ? (t.style.background = oe === "browser" ? "var(--mjr-status-browser, #26A69A)" : ie === "info" ? "var(--mjr-status-info, #64B5F6)" : ie === "warning" ? "var(--mjr-status-warning, #FFA726)" : "var(--mjr-status-success, #4CAF50)", pm(s, oe), fm(n, R("status.noAssets", `No assets indexed yet (${le})`, { scope: le }), [
R("status.clickToScan", "Click the dot to start a scan"),
O,
k,
A,
S,
L
- ].filter(Boolean).join(" | "))) : (t.style.background = oe === "browser" ? "var(--mjr-status-browser, #26A69A)" : ie === "info" ? "var(--mjr-status-info, #64B5F6)" : ie === "warning" ? "var(--mjr-status-warning, #FFA726)" : "var(--mjr-status-success, #4CAF50)", dm(s, oe), sm(n, [
+ ].filter(Boolean).join(" | "))) : (t.style.background = oe === "browser" ? "var(--mjr-status-browser, #26A69A)" : ie === "info" ? "var(--mjr-status-info, #64B5F6)" : ie === "warning" ? "var(--mjr-status-warning, #FFA726)" : "var(--mjr-status-success, #4CAF50)", pm(s, oe), lm(n, [
R("status.assetsIndexed", `${i.toLocaleString()} assets indexed (${le})`, {
count: i.toLocaleString(),
scope: le
}),
- Nm(e),
+ Fm(e),
R("status.withWorkflows", `With workflows: ${o} - Generation data: ${l}`, {
workflows: o,
gendata: l
@@ -12134,34 +12223,34 @@ async function Dm(t, n, r = null, i = null, a = null, o = {}) {
A,
S,
L
- ], R("status.lastScan", `Last scan: ${h}`, { date: h })), cm(n, lm(e, {
+ ], R("status.lastScan", `Last scan: ${h}`, { date: h })), um(n, dm(e, {
totalAssets: i,
withWorkflows: o,
withGenerationData: l
}))), e);
}
- if (xm(r, {}, {}), Sm(r, b), t.style.background = "var(--mjr-status-error, #f44336)", dm(s, "error"), _?.code === "INVALID_RESPONSE" && _?.status === 404) um(n, R("status.apiNotFound", "Majoor API endpoints not found (404)"), R("status.apiNotFoundHint", "Backend routes are not loaded. Restart ComfyUI and check the terminal for Majoor import errors."));
+ if (Cm(r, {}, {}), wm(r, b), t.style.background = "var(--mjr-status-error, #f44336)", pm(s, "error"), _?.code === "INVALID_RESPONSE" && _?.status === 404) fm(n, R("status.apiNotFound", "Majoor API endpoints not found (404)"), R("status.apiNotFoundHint", "Backend routes are not loaded. Restart ComfyUI and check the terminal for Majoor import errors."));
else {
let t = String(_?.error || "").toLowerCase();
- t.includes("malform") || t.includes("corrupt") || t.includes("disk image") ? (um(n, R("status.dbCorrupted"), R("status.dbCorruptedHint")), globalThis._mjrCorruptToastShown || (globalThis._mjrCorruptToastShown = !0, e(R("toast.resetFailedCorrupt"), "error", 8e3))) : sm(n, [_.error || R("status.errorChecking", "Error checking status")]);
+ t.includes("malform") || t.includes("corrupt") || t.includes("disk image") ? (fm(n, R("status.dbCorrupted"), R("status.dbCorruptedHint")), globalThis._mjrCorruptToastShown || (globalThis._mjrCorruptToastShown = !0, e(R("toast.resetFailedCorrupt"), "error", 8e3))) : lm(n, [_.error || R("status.errorChecking", "Error checking status")]);
}
if (_.code === "SERVICE_UNAVAILABLE") {
- let e = Om(t, n, r, i);
+ let e = Am(t, n, r, i);
n.appendChild(document.createElement("br")), n.appendChild(e);
}
return null;
}
-function Om(e, t, n = null, r = null) {
+function Am(e, t, n = null, r = null) {
let i = document.createElement("button");
return i.textContent = R("btn.retryServices"), i.style.cssText = "\n padding: 4px 10px;\n margin-top: 6px;\n font-size: 11px;\n border-radius: 4px;\n border: 1px solid rgba(255,255,255,0.3);\n background: transparent;\n color: white;\n cursor: pointer;\n ", i.onclick = async () => {
i.disabled = !0, i.textContent = R("btn.retrying");
let a = await L(st.RETRY_SERVICES, {});
- i.disabled = !1, i.textContent = R("btn.retryServices"), a.ok ? Dm(e, t, n, r) : (sm(t, [a.error || R("status.retryFailed", "Retry failed")]), t.appendChild(document.createElement("br")), t.appendChild(i));
+ i.disabled = !1, i.textContent = R("btn.retryServices"), a.ok ? km(e, t, n, r) : (lm(t, [a.error || R("status.retryFailed", "Retry failed")]), t.appendChild(document.createElement("br")), t.appendChild(i));
}, i;
}
-function km() {
+function jm() {
try {
- let e = localStorage?.getItem?.(nm);
+ let e = localStorage?.getItem?.(im);
if (!e) return null;
let t = JSON.parse(e);
return t && typeof t == "object" ? t : null;
@@ -12169,15 +12258,15 @@ function km() {
return console.debug?.(e), null;
}
}
-function Am(e) {
+function Mm(e) {
try {
if (!e || typeof e != "object") return;
- localStorage?.setItem?.(nm, JSON.stringify(e));
+ localStorage?.setItem?.(im, JSON.stringify(e));
} catch (e) {
console.debug?.(e);
}
}
-function jm(e) {
+function Nm(e) {
let t = [], n = (e, r = 0) => {
if (!(!e || r > 2)) {
if (typeof e == "number" && Number.isFinite(e)) t.push(e);
@@ -12190,23 +12279,23 @@ function jm(e) {
};
return n(e, 0), t;
}
-function Mm(e) {
+function Pm(e) {
if (!e || typeof e != "object") return !1;
- if ($p) return !0;
+ if (tm) return !0;
try {
if (Ft()?.active) return !0;
} catch (e) {
console.debug?.(e);
}
- return jm(e).some((e) => Number(e) > 0);
+ return Nm(e).some((e) => Number(e) > 0);
}
-function Nm(e) {
+function Fm(e) {
let t = [];
e.images && t.push(`Images: ${e.images}`), e.videos && t.push(`Videos: ${e.videos}`), e.audio && t.push(`Audio: ${e.audio}`);
let n = e.model3d || e.by_kind?.model3d || 0;
return n && t.push(`3D: ${n}`), t.length ? t.join(" - ") : "Images: 0 - Videos: 0";
}
-function Pm(e) {
+function Im(e) {
if (!e || typeof e != "object") return "";
let t = (e) => e == null ? null : typeof e == "number" ? Number.isFinite(e) ? e : null : typeof e == "boolean" || typeof e == "string" ? e : null;
return JSON.stringify({
@@ -12224,23 +12313,23 @@ function Pm(e) {
}
});
}
-function Fm(e, t, n) {
- let r = km();
+function Lm(e, t, n) {
+ let r = jm();
if (!r) return !1;
try {
- xm(n, r.tool_availability || {}, r.tool_paths || {});
+ Cm(n, r.tool_availability || {}, r.tool_paths || {});
} catch (e) {
console.debug?.(e);
}
try {
- return e.style.background = "var(--mjr-status-info, #64B5F6)", um(t, R("status.cached", "Last known status"), R("status.checking", "Checking status...")), !0;
+ return e.style.background = "var(--mjr-status-info, #64B5F6)", fm(t, R("status.cached", "Last known status"), R("status.checking", "Checking status...")), !0;
} catch (e) {
return console.debug?.(e), !1;
}
}
-function Im(e, t, n) {
- let r = Pm(t), i = r && r !== String(n?.lastSignature || ""), a = Mm(t), o = e || rm.ACTIVE, s = Number(n?.cooldownStablePolls || 0) || 0;
- return a || i ? (o = rm.ACTIVE, s = 0) : o === rm.ACTIVE ? (o = rm.COOLDOWN, s = 0) : o === rm.COOLDOWN ? (s += 1, s >= 3 && (o = rm.IDLE, s = 0)) : (o = i ? rm.ACTIVE : rm.IDLE, s = 0), {
+function Rm(e, t, n) {
+ let r = Im(t), i = r && r !== String(n?.lastSignature || ""), a = Pm(t), o = e || am.ACTIVE, s = Number(n?.cooldownStablePolls || 0) || 0;
+ return a || i ? (o = am.ACTIVE, s = 0) : o === am.ACTIVE ? (o = am.COOLDOWN, s = 0) : o === am.COOLDOWN ? (s += 1, s >= 3 && (o = am.IDLE, s = 0)) : (o = i ? am.ACTIVE : am.IDLE, s = 0), {
nextState: o,
signature: r,
hasChange: i,
@@ -12248,14 +12337,14 @@ function Im(e, t, n) {
cooldownStablePolls: s
};
}
-function Lm(e, t, n, r = null, i = null, a = null) {
+function zm(e, t, n, r = null, i = null, a = null) {
let o = "__MJR_STATUS_POLL_DISPOSE__", s = {
lastCode: null,
lastStatus: null,
_pollTick: 0,
_auxCached: !1
}, c = {
- mode: rm.ACTIVE,
+ mode: am.ACTIVE,
cooldownStablePolls: 0,
lastSignature: ""
}, l = typeof AbortController < "u" ? new AbortController() : null, u = async () => {
@@ -12265,14 +12354,14 @@ function Lm(e, t, n, r = null, i = null, a = null) {
console.debug?.(e);
}
s._pollTick = Number(s._pollTick || 0) + 1;
- let n = s._pollTick > 1 && s._pollTick % 4 != 0, o = await Dm(e, t, r, typeof a == "function" ? a() : null, s, {
+ let n = s._pollTick > 1 && s._pollTick % 4 != 0, o = await km(e, t, r, typeof a == "function" ? a() : null, s, {
signal: l?.signal || null,
lightweight: n,
- force: !!$p || s._pollTick <= 1
+ force: !!tm || s._pollTick <= 1
});
if (o && typeof o == "object") {
- Am(o);
- let e = Im(c.mode, o, c);
+ Mm(o);
+ let e = Rm(c.mode, o, c);
c.mode = e.nextState, c.lastSignature = e.signature, c.cooldownStablePolls = e.cooldownStablePolls;
}
if (o && typeof i == "function") try {
@@ -12282,7 +12371,7 @@ function Lm(e, t, n, r = null, i = null, a = null) {
}
return o;
};
- Fm(e, t, r), u();
+ Lm(e, t, r), u();
try {
n._mjrStatusPollDispose?.();
} catch (e) {
@@ -12303,7 +12392,7 @@ function Lm(e, t, n, r = null, i = null, a = null) {
}
return 1;
}, h = () => {
- let e = im[c.mode] || Math.max(250, Number(B.STATUS_POLL_INTERVAL) || 2e3), t = p ? Math.max(3e4, e) : f > 0 ? Math.min(6e4, Math.round(e * Math.min(8, 1 + f))) : e, r = Math.min(12e4, Math.round(t * m()));
+ let e = om[c.mode] || Math.max(250, Number(B.STATUS_POLL_INTERVAL) || 2e3), t = p ? Math.max(3e4, e) : f > 0 ? Math.min(6e4, Math.round(e * Math.min(8, 1 + f))) : e, r = Math.min(12e4, Math.round(t * m()));
d = setTimeout(async () => {
try {
if (l?.signal?.aborted) return;
@@ -12311,7 +12400,7 @@ function Lm(e, t, n, r = null, i = null, a = null) {
console.debug?.(e);
}
let e = await u();
- if (p = s.lastCode === "INVALID_RESPONSE" && s.lastStatus === 404, e ? f = 0 : p ? f = Math.min(999, f + 1) : (f = Math.min(999, f + 1), c.mode = rm.ACTIVE, c.cooldownStablePolls = 0), p && f >= 3) try {
+ if (p = s.lastCode === "INVALID_RESPONSE" && s.lastStatus === 404, e ? f = 0 : p ? f = Math.min(999, f + 1) : (f = Math.min(999, f + 1), c.mode = am.ACTIVE, c.cooldownStablePolls = 0), p && f >= 3) try {
n._mjrStatusPollDispose?.();
} catch (e) {
console.debug?.(e);
@@ -12334,54 +12423,54 @@ function Lm(e, t, n, r = null, i = null, a = null) {
}
h();
for (let i of n.querySelectorAll("#mjr-status-dot, #mjr-status-scan")) i.onclick = (n) => {
- n.stopPropagation(), ym(e, t, r, typeof a == "function" ? a() : null);
+ n.stopPropagation(), xm(e, t, r, typeof a == "function" ? a() : null);
}, i.title = R("btn.scan", "Scan");
}
// ui/vue/composables/useActiveAsset.ts
-var Rm = gr(null), zm = gr(null);
-function Bm() {
+var Bm = gr(null), Vm = gr(null);
+function Hm() {
return {
- activeAsset: Rm,
- onUpdateCallback: zm
+ activeAsset: Bm,
+ onUpdateCallback: Vm
};
}
-function Vm(e, t) {
- zm.value = typeof t == "function" ? t : null, Rm.value = e ?? null;
-}
-function Hm() {
- Rm.value = null, zm.value = null;
-}
function Um(e, t) {
- if (Rm.value && e) {
- Rm.value = {
- ...Rm.value,
+ Vm.value = typeof t == "function" ? t : null, Bm.value = e ?? null;
+}
+function Wm() {
+ Bm.value = null, Vm.value = null;
+}
+function Gm(e, t) {
+ if (Bm.value && e) {
+ Bm.value = {
+ ...Bm.value,
...e
};
try {
- let e = t ?? zm.value;
- typeof e == "function" && e(Rm.value);
+ let e = t ?? Vm.value;
+ typeof e == "function" && e(Bm.value);
} catch {}
}
}
// ui/components/sidebar/SidebarView.ts
-var Wm = 360, Gm = 240, Km = 640;
-function qm() {
+var Km = 360, qm = 240, Jm = 640;
+function Ym() {
try {
let e = Jt(), t = Number(e?.sidebar?.widthPx);
- return Number.isFinite(t) ? Math.max(Gm, Math.min(Km, Math.round(t))) : Wm;
+ return Number.isFinite(t) ? Math.max(qm, Math.min(Jm, Math.round(t))) : Km;
} catch {
- return Wm;
+ return Km;
}
}
-function Jm(e, t) {
+function Xm(e, t) {
if (!e) return;
let n = String(e?.dataset?.position || "right").toLowerCase() === "left", r = "var(--mjr-border, rgba(255,255,255,0.12))";
if (t) {
- let t = `${qm()}px`;
+ let t = `${Ym()}px`;
e.style.flex = `0 0 ${t}`, e.style.width = t, e.style.maxWidth = t, e.style.minWidth = "0", e.style.overflow = "hidden", e.style.borderLeft = n ? "none" : `1px solid ${r}`, e.style.borderRight = n ? `1px solid ${r}` : "none";
} else e.style.flex = "0 0 0px", e.style.width = "0", e.style.maxWidth = "0", e.style.minWidth = "0", e.style.overflow = "hidden", e.style.borderLeft = "none", e.style.borderRight = "none";
}
-function Ym(e) {
+function Zm(e) {
if (e == null) return !1;
let t = e;
if (typeof e == "string") {
@@ -12400,10 +12489,10 @@ function Ym(e) {
}
return !1;
}
-function Xm(e) {
- return e ? !!(e.geninfo || e.prompt || Ym(e.metadata_raw)) : !1;
+function Qm(e) {
+ return e ? !!(e.geninfo || e.prompt || Zm(e.metadata_raw)) : !1;
}
-async function Zm(e, t, n) {
+async function $m(e, t, n) {
if (!e || !t) return;
let r = String(t?.kind || "").toLowerCase() === "folder";
try {
@@ -12412,7 +12501,7 @@ async function Zm(e, t, n) {
console.debug?.(e);
}
let i = e._requestSeq = (e._requestSeq || 0) + 1;
- e._currentFetchAbortController?.abort?.(), e._currentFetchAbortController = null, e.classList.add("is-open"), Jm(e, !0), e._currentAsset = t, e._currentFullAsset = t, e._ratingTagsSection = null, Vm(t, n);
+ e._currentFetchAbortController?.abort?.(), e._currentFetchAbortController = null, e.classList.add("is-open"), Xm(e, !0), e._currentAsset = t, e._currentFullAsset = t, e._ratingTagsSection = null, Um(t, n);
let a = () => {
e._currentFetchAbortController?.abort?.();
let t = typeof AbortController < "u" ? new AbortController() : null;
@@ -12421,7 +12510,7 @@ async function Zm(e, t, n) {
e._requestSeq === i && e._currentAsset === t && (e._currentFullAsset = {
...e._currentFullAsset ?? t,
...r
- }, Um(r, n));
+ }, Gm(r, n));
};
(async () => {
if (e._requestSeq !== i || e._currentAsset !== t) return;
@@ -12443,7 +12532,7 @@ async function Zm(e, t, n) {
}
let c = () => e._currentFullAsset ?? t;
try {
- if (t.id && !Xm(c())) {
+ if (t.id && !Qm(c())) {
let e = await I(t.id, n);
if (s?.aborted) return;
e?.ok && e.data && o(e.data);
@@ -12452,7 +12541,7 @@ async function Zm(e, t, n) {
s?.aborted || console.warn("Failed to load full asset metadata:", e);
}
if (!s?.aborted) {
- if (!Xm(c())) {
+ if (!Qm(c())) {
let e = String(c()?.filename || "").trim(), t = String(c()?.type || "output").trim().toLowerCase(), r = String(c()?.subfolder || "").trim(), i = String(c()?.root_id || c()?.rootId || "").trim();
if (e) try {
let a = await Ee({
@@ -12481,9 +12570,9 @@ async function Zm(e, t, n) {
}
})();
}
-function Qm(e) {
+function eh(e) {
if (e) {
- e._requestSeq = (e._requestSeq || 0) + 1, e.classList.remove("is-open"), Jm(e, !1), e._currentAsset = null, e._currentFullAsset = null, e._currentFetchAbortController?.abort?.(), e._currentFetchAbortController = null, Hm();
+ e._requestSeq = (e._requestSeq || 0) + 1, e.classList.remove("is-open"), Xm(e, !1), e._currentAsset = null, e._currentFullAsset = null, e._currentFetchAbortController?.abort?.(), e._currentFetchAbortController = null, Wm();
try {
e.dispatchEvent?.(new CustomEvent("mjr:sidebar-closed", { bubbles: !0 }));
} catch (e) {
@@ -12492,14 +12581,14 @@ function Qm(e) {
}
}
// ui/stores/usePanelStore.ts
-var $m = "mjr_panel_state", eh = /* @__PURE__ */ new Set([
+var th = "mjr_panel_state", nh = /* @__PURE__ */ new Set([
"output",
"input",
"all",
"custom",
"workflow"
]);
-function th(e, t = !1) {
+function rh(e, t = !1) {
if (typeof e == "boolean") return e;
if (typeof e == "string") {
let t = e.trim().toLowerCase();
@@ -12518,70 +12607,70 @@ function th(e, t = !1) {
}
return !!t;
}
-function nh(e, t = 0) {
+function ih(e, t = 0) {
let n = Number(e);
return Number.isFinite(n) ? n : t;
}
-function rh(e, t = "") {
+function ah(e, t = "") {
return e == null ? t : String(e);
}
-function ih(e, t = 0, n = Infinity) {
- return Math.max(t, Math.min(n, Math.floor(nh(e, t))));
+function oh(e, t = 0, n = Infinity) {
+ return Math.max(t, Math.min(n, Math.floor(ih(e, t))));
}
-function ah(e) {
- let t = rh(e || "output").toLowerCase(), n = t === "outputs" ? "output" : t === "inputs" ? "input" : t;
- return eh.has(n) ? n : "output";
+function sh(e) {
+ let t = ah(e || "output").toLowerCase(), n = t === "outputs" ? "output" : t === "inputs" ? "input" : t;
+ return nh.has(n) ? n : "output";
}
-function oh(e) {
+function ch(e) {
if (!e || typeof e != "object") return {};
let t = e;
return {
- scope: ah(t.scope),
- customRootId: rh(t.customRootId),
- customRootLabel: rh(t.customRootLabel),
- currentFolderRelativePath: rh(t.currentFolderRelativePath || t.subfolder),
- collectionId: rh(t.collectionId),
- collectionName: rh(t.collectionName),
- kindFilter: rh(t.kindFilter),
- dateRangeFilter: rh(t.dateRangeFilter),
- dateExactFilter: rh(t.dateExactFilter),
- workflowOnly: th(t.workflowOnly, !1),
- minRating: ih(t.minRating, 0, 5),
- minSizeMB: Math.max(0, nh(t.minSizeMB, 0)),
- maxSizeMB: Math.max(0, nh(t.maxSizeMB, 0)),
+ scope: sh(t.scope),
+ customRootId: ah(t.customRootId),
+ customRootLabel: ah(t.customRootLabel),
+ currentFolderRelativePath: ah(t.currentFolderRelativePath || t.subfolder),
+ collectionId: ah(t.collectionId),
+ collectionName: ah(t.collectionName),
+ kindFilter: ah(t.kindFilter),
+ dateRangeFilter: ah(t.dateRangeFilter),
+ dateExactFilter: ah(t.dateExactFilter),
+ workflowOnly: rh(t.workflowOnly, !1),
+ minRating: oh(t.minRating, 0, 5),
+ minSizeMB: Math.max(0, ih(t.minSizeMB, 0)),
+ maxSizeMB: Math.max(0, ih(t.maxSizeMB, 0)),
resolutionCompare: t.resolutionCompare === "lte" ? "lte" : "gte",
- minWidth: ih(t.minWidth),
- minHeight: ih(t.minHeight),
- maxWidth: ih(t.maxWidth),
- maxHeight: ih(t.maxHeight),
- workflowType: rh(t.workflowType),
- workflowId: rh(t.workflowId || t.workflow_id),
- workflowModelFilter: rh(t.workflowModelFilter || t.workflowModel || t.workflow_model),
- workflowRunsOnFilter: rh(t.workflowRunsOnFilter || t.workflowRunsOn || t.runs_on),
- sort: rh(t.sort || "mtime_desc"),
- searchQuery: rh(t.searchQuery),
+ minWidth: oh(t.minWidth),
+ minHeight: oh(t.minHeight),
+ maxWidth: oh(t.maxWidth),
+ maxHeight: oh(t.maxHeight),
+ workflowType: ah(t.workflowType),
+ workflowId: ah(t.workflowId || t.workflow_id),
+ workflowModelFilter: ah(t.workflowModelFilter || t.workflowModel || t.workflow_model),
+ workflowRunsOnFilter: ah(t.workflowRunsOnFilter || t.workflowRunsOn || t.runs_on),
+ sort: ah(t.sort || "mtime_desc"),
+ searchQuery: ah(t.searchQuery),
metadataSearchMode: String(t.metadataSearchMode || "AND").toUpperCase() === "OR" ? "OR" : "AND",
- scrollTop: ih(t.scrollTop),
- activeAssetId: rh(t.activeAssetId),
- selectedAssetIds: Array.isArray(t.selectedAssetIds) ? t.selectedAssetIds.map((e) => rh(e).trim()).filter(Boolean).slice(0, 5e3) : [],
- sidebarOpen: th(t.sidebarOpen, !1)
+ scrollTop: oh(t.scrollTop),
+ activeAssetId: ah(t.activeAssetId),
+ selectedAssetIds: Array.isArray(t.selectedAssetIds) ? t.selectedAssetIds.map((e) => ah(e).trim()).filter(Boolean).slice(0, 5e3) : [],
+ sidebarOpen: rh(t.sidebarOpen, !1)
};
}
-function sh() {
+function lh() {
try {
- let e = localStorage.getItem($m);
- if (e) return oh(JSON.parse(e));
+ let e = localStorage.getItem(th);
+ if (e) return ch(JSON.parse(e));
} catch {}
return {};
}
-function ch(e) {
+function uh(e) {
try {
let t = { ...e };
- delete t.lastGridCount, delete t.lastGridTotal, delete t.viewScope, delete t.similarResults, delete t.similarTitle, delete t.similarSourceAssetId, localStorage.setItem($m, JSON.stringify(t));
+ delete t.lastGridCount, delete t.lastGridTotal, delete t.viewScope, delete t.similarResults, delete t.similarTitle, delete t.similarSourceAssetId, localStorage.setItem(th, JSON.stringify(t));
} catch {}
}
-var lh = Ar("mjr-panel", () => {
- let e = sh(), t = Q(e.scope || "output"), n = Q(e.customRootId || ""), r = Q(e.customRootLabel || ""), i = Q(e.currentFolderRelativePath || ""), a = Q(e.collectionId || ""), o = Q(e.collectionName || ""), s = Q(e.kindFilter || ""), c = Q(e.dateRangeFilter || ""), l = Q(e.dateExactFilter || ""), u = Q(e.workflowOnly || !1), d = Q(e.minRating || 0), f = Q(e.minSizeMB || 0), p = Q(e.maxSizeMB || 0), m = Q(e.resolutionCompare || "gte"), h = Q(e.minWidth || 0), g = Q(e.minHeight || 0), _ = Q(e.maxWidth || 0), v = Q(e.maxHeight || 0), y = Q(e.workflowType || ""), b = Q(e.workflowId || ""), x = Q(e.workflowModelFilter || ""), S = Q(e.workflowRunsOnFilter || ""), C = Q(e.sort || "mtime_desc"), w = Q(e.searchQuery || ""), T = Q(e.metadataSearchMode || "AND"), E = Q(e.scrollTop || 0), D = Q(e.activeAssetId || ""), O = Q(e.selectedAssetIds || []), k = Q(e.sidebarOpen || !1), A = Q(0), j = Q(0), M = Q(""), N = Q([]), P = Q(""), ee = Q(""), te = null;
+var dh = Ar("mjr-panel", () => {
+ let e = lh(), t = Q(e.scope || "output"), n = Q(e.customRootId || ""), r = Q(e.customRootLabel || ""), i = Q(e.currentFolderRelativePath || ""), a = Q(e.collectionId || ""), o = Q(e.collectionName || ""), s = Q(e.kindFilter || ""), c = Q(e.dateRangeFilter || ""), l = Q(e.dateExactFilter || ""), u = Q(e.workflowOnly || !1), d = Q(e.minRating || 0), f = Q(e.minSizeMB || 0), p = Q(e.maxSizeMB || 0), m = Q(e.resolutionCompare || "gte"), h = Q(e.minWidth || 0), g = Q(e.minHeight || 0), _ = Q(e.maxWidth || 0), v = Q(e.maxHeight || 0), y = Q(e.workflowType || ""), b = Q(e.workflowId || ""), x = Q(e.workflowModelFilter || ""), S = Q(e.workflowRunsOnFilter || ""), C = Q(e.sort || "mtime_desc"), w = Q(e.searchQuery || ""), T = Q(e.metadataSearchMode || "AND"), E = Q(e.scrollTop || 0), D = Q(e.activeAssetId || ""), O = Q(e.selectedAssetIds || []), k = Q(e.sidebarOpen || !1), A = Q(0), j = Q(0), M = Q(""), N = Q([]), P = Q(""), ee = Q(""), te = null;
or([
t,
n,
@@ -12614,7 +12703,7 @@ var lh = Ar("mjr-panel", () => {
k
], () => {
te && clearTimeout(te), te = setTimeout(() => {
- te = null, ch({
+ te = null, uh({
scope: t.value,
customRootId: n.value,
customRootLabel: r.value,
@@ -12648,8 +12737,8 @@ var lh = Ar("mjr-panel", () => {
}, 750);
}, { deep: !0 });
let F = (e) => {
- if (e.key === $m && e.newValue) try {
- let n = oh(JSON.parse(e.newValue));
+ if (e.key === th && e.newValue) try {
+ let n = ch(JSON.parse(e.newValue));
n.scope !== void 0 && (t.value = n.scope), n.customRootLabel !== void 0 && (r.value = n.customRootLabel), n.searchQuery !== void 0 && (w.value = n.searchQuery), n.metadataSearchMode !== void 0 && (T.value = n.metadataSearchMode), n.sort !== void 0 && (C.value = n.sort), n.sidebarOpen !== void 0 && (k.value = n.sidebarOpen);
} catch {}
};
@@ -12729,16 +12818,16 @@ var lh = Ar("mjr-panel", () => {
};
});
// ui/stores/getOptionalPanelStore.ts
-function uh() {
+function fh() {
try {
- return jr() ? lh() : null;
+ return jr() ? dh() : null;
} catch {
return null;
}
}
// ui/stores/panelStateBridge.ts
-function dh(e, t = []) {
- let n = uh();
+function ph(e, t = []) {
+ let n = fh();
return {
panelStore: n,
hydrateStoreFromLegacy: () => {},
@@ -12765,12 +12854,12 @@ function dh(e, t = []) {
};
}
// ui/features/panel/messages/messageCenter.ts
-var fh = "mjr_panel_messages_v1", ph = "mjr_panel_messages_last_read_v1", mh = "mjr_panel_messages_dismissed_builtin_ids_v1", hh = 120, gh = "/mjr/am/user-guide", _h = /* @__PURE__ */ new Set([
+var mh = "mjr_panel_messages_v1", hh = "mjr_panel_messages_last_read_v1", gh = "mjr_panel_messages_dismissed_builtin_ids_v1", _h = 120, vh = "/mjr/am/user-guide", yh = /* @__PURE__ */ new Set([
"info",
"success",
"warning",
"error"
-]), vh = "mjr:panel-messages-changed", yh = !1, bh = [], xh = Object.freeze([
+]), bh = "mjr:panel-messages-changed", xh = !1, Sh = [], Ch = Object.freeze([
{
id: "whats-new-2026-07-09-version-2-5-0",
title: "New Version 2.5.0",
@@ -12893,7 +12982,7 @@ var fh = "mjr_panel_messages_v1", ph = "mjr_panel_messages_last_read_v1", mh = "
bodyKey: "msg.whatsNew.body.localUserGuide",
actionLabel: "User Guide",
actionLabelKey: "label.userGuide",
- actionUrl: gh
+ actionUrl: vh
},
{
id: "tip-2026-04-07-output-folder-override",
@@ -13075,27 +13164,27 @@ var fh = "mjr_panel_messages_v1", ph = "mjr_panel_messages_last_read_v1", mh = "
actionLabelKey: "label.settingsGuide",
actionUrl: "docs/SETTINGS_CONFIGURATION.md"
}
-]), Sh = new Set(xh.map((e) => String(e?.id || "").trim()).filter(Boolean));
-function Ch(e, t = 0) {
+]), wh = new Set(Ch.map((e) => String(e?.id || "").trim()).filter(Boolean));
+function Th(e, t = 0) {
let n = Number(e);
return Number.isFinite(n) ? n : t;
}
-function wh() {
+function Eh() {
return Date.now();
}
-function Th() {
- return lt(`msg-${wh()}-`, 6);
+function Dh() {
+ return lt(`msg-${Eh()}-`, 6);
}
-function Eh(e) {
+function Oh(e) {
let t = String(e || "").trim().toLowerCase();
- return t === "warn" ? "warning" : t === "danger" ? "error" : _h.has(t) ? t : "info";
+ return t === "warn" ? "warning" : t === "danger" ? "error" : yh.has(t) ? t : "info";
}
-function Dh(e) {
- return Sh.has(String(e || "").trim());
+function kh(e) {
+ return wh.has(String(e || "").trim());
}
-function Oh(e = {}) {
+function Ah(e = {}) {
return {
- id: String(e?.id || "").trim() || Th(),
+ id: String(e?.id || "").trim() || Dh(),
title: String(e?.title || "").trim() || "Info",
titleKey: String(e?.titleKey || "").trim(),
emoji: String(e?.emoji || "").trim(),
@@ -13103,14 +13192,14 @@ function Oh(e = {}) {
bodyKey: String(e?.bodyKey || "").trim(),
category: String(e?.category || "").trim() || "Info",
categoryKey: String(e?.categoryKey || "").trim(),
- createdAt: Ch(e?.createdAt, wh()),
- level: Eh(e?.level),
+ createdAt: Th(e?.createdAt, Eh()),
+ level: Oh(e?.level),
actionLabel: String(e?.actionLabel || "").trim(),
actionLabelKey: String(e?.actionLabelKey || "").trim(),
actionUrl: String(e?.actionUrl || "").trim()
};
}
-function kh(e, t) {
+function jh(e, t) {
try {
let n = localStorage.getItem(e);
return n ? JSON.parse(n) : t;
@@ -13118,87 +13207,87 @@ function kh(e, t) {
return t;
}
}
-function Ah(e, t) {
+function Mh(e, t) {
try {
localStorage.setItem(e, JSON.stringify(t));
} catch {}
}
-function jh() {
+function Nh() {
try {
- return Ch(localStorage.getItem(ph), 0);
+ return Th(localStorage.getItem(hh), 0);
} catch {
return 0;
}
}
-function Mh(e) {
+function Ph(e) {
try {
- localStorage.setItem(ph, String(Ch(e, wh())));
+ localStorage.setItem(hh, String(Th(e, Eh())));
} catch {}
}
-function Nh() {
- let e = kh(mh, []);
- return new Set((Array.isArray(e) ? e : []).map((e) => String(e || "").trim()).filter((e) => Dh(e)));
-}
-function Ph() {
- bh.sort((e, t) => Number(t.createdAt || 0) - Number(e.createdAt || 0)), bh.length > hh && (bh = bh.slice(0, hh));
-}
function Fh() {
- Ah(fh, bh);
+ let e = jh(gh, []);
+ return new Set((Array.isArray(e) ? e : []).map((e) => String(e || "").trim()).filter((e) => kh(e)));
}
function Ih() {
- let e = Nh(), t = !1;
- for (let n of xh) {
- let r = Oh(n);
- if (e.has(r.id)) continue;
- let i = bh.findIndex((e) => e.id === r.id);
- if (i < 0) {
- bh.push(r), t = !0;
- continue;
- }
- let a = bh[i], o = {
- ...a,
- ...r,
- createdAt: Ch(a?.createdAt, r.createdAt)
- };
- JSON.stringify(a) !== JSON.stringify(o) && (bh[i] = o, t = !0);
- }
- return t ? (Ph(), Fh(), !0) : !1;
+ Sh.sort((e, t) => Number(t.createdAt || 0) - Number(e.createdAt || 0)), Sh.length > _h && (Sh = Sh.slice(0, _h));
}
function Lh() {
+ Mh(mh, Sh);
+}
+function Rh() {
+ let e = Fh(), t = !1;
+ for (let n of Ch) {
+ let r = Ah(n);
+ if (e.has(r.id)) continue;
+ let i = Sh.findIndex((e) => e.id === r.id);
+ if (i < 0) {
+ Sh.push(r), t = !0;
+ continue;
+ }
+ let a = Sh[i], o = {
+ ...a,
+ ...r,
+ createdAt: Th(a?.createdAt, r.createdAt)
+ };
+ JSON.stringify(a) !== JSON.stringify(o) && (Sh[i] = o, t = !0);
+ }
+ return t ? (Ih(), Lh(), !0) : !1;
+}
+function zh() {
try {
- window.dispatchEvent(new CustomEvent(vh, { detail: {
- total: bh.length,
- unread: Vh()
+ window.dispatchEvent(new CustomEvent(bh, { detail: {
+ total: Sh.length,
+ unread: Uh()
} }));
} catch (e) {
console.debug?.(e);
}
}
-function Rh() {
- if (yh) return;
- yh = !0;
- let e = kh(fh, []);
- bh = (Array.isArray(e) ? e : []).map(Oh), Ph();
-}
-function zh() {
- Rh(), Ih() && Lh();
-}
function Bh() {
- return Rh(), bh.map((e) => ({ ...e }));
+ if (xh) return;
+ xh = !0;
+ let e = jh(mh, []);
+ Sh = (Array.isArray(e) ? e : []).map(Ah), Ih();
}
function Vh() {
- Rh();
- let e = jh();
- return bh.reduce((t, n) => t + +(Number(n.createdAt || 0) > e), 0);
+ Bh(), Rh() && zh();
}
function Hh() {
- return Rh(), jh();
+ return Bh(), Sh.map((e) => ({ ...e }));
}
-function Uh({ upTo: e = wh() } = {}) {
- Rh(), Mh(Ch(e, wh())), Lh();
+function Uh() {
+ Bh();
+ let e = Nh();
+ return Sh.reduce((t, n) => t + +(Number(n.createdAt || 0) > e), 0);
+}
+function Wh() {
+ return Bh(), Nh();
+}
+function Gh({ upTo: e = Eh() } = {}) {
+ Bh(), Ph(Th(e, Eh())), zh();
}
// ui/features/panel/messages/shortcutGuide.ts
-var Wh = Object.freeze([
+var Kh = Object.freeze([
{
id: "panel",
titleKey: "msg.shortcuts.section.panel",
@@ -13407,18 +13496,18 @@ var Wh = Object.freeze([
])
}
]);
-function Gh() {
- return Wh.map((e) => ({
+function qh() {
+ return Kh.map((e) => ({
...e,
items: Array.isArray(e.items) ? e.items.map((e) => ({ ...e })) : []
}));
}
-function Kh() {
+function Jh() {
let e = document.createElement("div");
e.className = "mjr-shortcut-guide";
let t = document.createElement("div");
t.className = "mjr-shortcut-guide-intro", t.textContent = R("msg.shortcuts.intro", "Current keyboard shortcuts grouped by section for quick reference."), e.appendChild(t);
- for (let t of Gh()) {
+ for (let t of qh()) {
let n = document.createElement("section");
n.className = "mjr-shortcut-section";
let r = document.createElement("div");
@@ -13438,18 +13527,18 @@ function Kh() {
return e;
}
// ui/features/panel/messages/messagePopoverController.ts
-var qh = /* @__PURE__ */ new Set([
+var Yh = /* @__PURE__ */ new Set([
"info",
"success",
"warning",
"error"
-]), Jh = 2200, Yh = /* @__PURE__ */ new Set([
+]), Xh = 2200, Zh = /* @__PURE__ */ new Set([
"started",
"queued",
"running",
"pending",
"in_progress"
-]), Xh = /* @__PURE__ */ new Set([
+]), Qh = /* @__PURE__ */ new Set([
"succeeded",
"success",
"complete",
@@ -13460,7 +13549,7 @@ var qh = /* @__PURE__ */ new Set([
"cancelled",
"canceled"
]);
-function Zh(e) {
+function $h(e) {
let t = Number(e);
if (!Number.isFinite(t) || t <= 0) return "";
try {
@@ -13475,15 +13564,15 @@ function Zh(e) {
return "";
}
}
-function Qh(e, t, n, r) {
+function eg(e, t, n, r) {
let i = String(e?.[t] || "").trim(), a = String(e?.[n] || r || "").trim() || String(r || "");
return i ? R(i, a) : a;
}
-function $h(e) {
+function tg(e) {
let t = String(e || "").trim().toLowerCase();
- return t === "warn" ? "warning" : t === "danger" ? "error" : qh.has(t) ? t : "info";
+ return t === "warn" ? "warning" : t === "danger" ? "error" : Yh.has(t) ? t : "info";
}
-function eg(e) {
+function ng(e) {
let t = String(e || "").trim();
if (!t) return "";
try {
@@ -13493,13 +13582,13 @@ function eg(e) {
return "";
}
}
-function tg(e) {
+function rg(e) {
let t = String(e?.emoji || "").trim();
if (t) return t;
- let n = $h(e?.level);
+ let n = tg(e?.level);
return n === "success" ? "OK" : n === "warning" ? "WARN" : n === "error" ? "ERR" : "INFO";
}
-function ng(e) {
+function ig(e) {
switch (String(e || "").toLowerCase()) {
case "success": return "OK";
case "warning": return "WARN";
@@ -13507,22 +13596,22 @@ function ng(e) {
default: return "Tip";
}
}
-function rg(e) {
+function ag(e) {
if (e?.persistent) return "persistent";
let t = Number(e?.durationMs);
return !Number.isFinite(t) || t <= 0 ? "" : t < 1e4 ? `${(t / 1e3).toFixed(1)}s` : `${Math.round(t / 1e3)}s`;
}
-function ig(e) {
+function og(e) {
let t = String(e || "").trim().toLowerCase();
return t ? t.replace(/[_-]+/g, " ") : "";
}
-function ag(e) {
+function sg(e) {
let t = e?.progress;
if (!t || typeof t != "object") return "";
let n = String(t.label || "").trim(), r = Number(t.current), i = Number(t.total), a = Number(t.indexed), o = Number(t.skipped), s = Number(t.errors), c = [];
return n && c.push(n), Number.isFinite(r) && Number.isFinite(i) && i > 0 && c.push(`${r}/${i}`), Number.isFinite(a) && c.push(`indexed ${a}`), Number.isFinite(o) && c.push(`skipped ${o}`), Number.isFinite(s) && s > 0 && c.push(`errors ${s}`), c.join(" | ");
}
-function og(e) {
+function cg(e) {
let t = e?.progress;
if (!t || typeof t != "object") return null;
let n = Number(t.percent);
@@ -13530,14 +13619,14 @@ function og(e) {
let r = Number(t.current), i = Number(t.total);
return Number.isFinite(r) && Number.isFinite(i) && i > 0 ? Math.max(0, Math.min(100, Math.round(r / i * 100))) : null;
}
-function sg(e) {
+function lg(e) {
return String(e?.trackId || "").trim() || [
String(e?.operation || "").trim(),
String(e?.source || "").trim(),
String(e?.title || "").trim()
].filter(Boolean).join(":");
}
-function cg({ activeTab: e = "messages", title: t = null, messagePopover: n = null, messageTabBtn: r = null, historyTabBtn: i = null, shortcutsTabBtn: a = null, messageList: o = null, historyPanel: s = null, shortcutsPanel: c = null, markReadBtn: l = null } = {}) {
+function ug({ activeTab: e = "messages", title: t = null, messagePopover: n = null, messageTabBtn: r = null, historyTabBtn: i = null, shortcutsTabBtn: a = null, messageList: o = null, historyPanel: s = null, shortcutsPanel: c = null, markReadBtn: l = null } = {}) {
let u = e === "messages", d = e === "history", f = e === "shortcuts", p = u ? R("label.messages", "Messages") : d ? R("label.toastHistory", "History") : R("msg.shortcuts.title", "Shortcut Guide");
try {
r?.classList.toggle("is-active", u), r?.setAttribute("aria-selected", u ? "true" : "false"), r?.setAttribute("tabindex", u ? "0" : "-1"), i?.classList.toggle("is-active", d), i?.setAttribute("aria-selected", d ? "true" : "false"), i?.setAttribute("tabindex", d ? "0" : "-1"), a?.classList.toggle("is-active", f), a?.setAttribute("aria-selected", f ? "true" : "false"), a?.setAttribute("tabindex", f ? "0" : "-1");
@@ -13550,8 +13639,8 @@ function cg({ activeTab: e = "messages", title: t = null, messagePopover: n = nu
console.debug?.(e);
}
}
-function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, messageList: r = null, historyTabBtn: i = null, historyTabBadge: a = null, historyTabCount: o = null, historyPanel: s = null, shortcutsPanel: c = null, messageTabBtn: l = null, messageTabBadge: u = null, shortcutsTabBtn: d = null, markReadBtn: f = null, popovers: p = null, onBeforeToggle: m = null, signal: h = null } = {}) {
- zh();
+function dg({ messageBtn: e = null, messagePopover: t = null, title: n = null, messageList: r = null, historyTabBtn: i = null, historyTabBadge: a = null, historyTabCount: o = null, historyPanel: s = null, shortcutsPanel: c = null, messageTabBtn: l = null, messageTabBadge: u = null, shortcutsTabBtn: d = null, markReadBtn: f = null, popovers: p = null, onBeforeToggle: m = null, signal: h = null } = {}) {
+ Vh();
let g = "messages", _ = !1, v = null, y = /* @__PURE__ */ new Set(), b = () => {
if (v) {
try {
@@ -13565,13 +13654,13 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
if (!_ || g !== "history" || t?.style?.display !== "block") return;
let e = ae();
for (let n of e) {
- let e = sg(n);
+ let e = lg(n);
if (!e || !y.has(e)) continue;
let r = String(n?.status || "").trim().toLowerCase();
- if (Xh.has(r)) {
+ if (Qh.has(r)) {
b(), v = setTimeout(() => {
v = null, _ && g === "history" && t?.style?.display === "block" && (p?.close?.(t), _ = !1, y.clear(), S(), k());
- }, Jh);
+ }, Xh);
return;
}
}
@@ -13589,14 +13678,14 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
}
}, C = () => {
if (!r) return;
- let e = Bh(), t = Hh();
+ let e = Hh(), t = Wh();
if (r.replaceChildren(), !e.length) {
let e = document.createElement("div");
e.className = "mjr-messages-empty", e.textContent = R("msg.noMessages", "No messages for now."), r.appendChild(e);
} else for (let n of e) {
let e = document.createElement("article");
e.className = "mjr-message-item";
- let i = $h(n?.level);
+ let i = tg(n?.level);
e.classList.add(`mjr-message-item--${i}`);
let a = Number(n?.createdAt || 0);
a > Number(t || 0) && e.classList.add("mjr-message-item--unread");
@@ -13605,16 +13694,16 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
let s = document.createElement("div");
s.className = "mjr-message-item-title-wrap";
let c = document.createElement("span");
- c.className = "mjr-message-item-emoji", c.textContent = tg(n), c.setAttribute("aria-hidden", "true");
+ c.className = "mjr-message-item-emoji", c.textContent = rg(n), c.setAttribute("aria-hidden", "true");
let l = document.createElement("div");
- l.className = "mjr-message-item-title", l.textContent = Qh(n, "titleKey", "title", R("label.info", "Info"));
+ l.className = "mjr-message-item-title", l.textContent = eg(n, "titleKey", "title", R("label.info", "Info"));
let u = document.createElement("span");
- u.className = "mjr-message-item-category", u.textContent = Qh(n, "categoryKey", "category", R("label.info", "Info")), s.appendChild(c), s.appendChild(l), o.appendChild(s), o.appendChild(u);
+ u.className = "mjr-message-item-category", u.textContent = eg(n, "categoryKey", "category", R("label.info", "Info")), s.appendChild(c), s.appendChild(l), o.appendChild(s), o.appendChild(u);
let d = document.createElement("div");
- d.className = "mjr-message-item-meta", d.textContent = Zh(a);
+ d.className = "mjr-message-item-meta", d.textContent = $h(a);
let f = document.createElement("div");
- f.className = "mjr-message-item-body", f.textContent = Qh(n, "bodyKey", "body", ""), e.appendChild(o), d.textContent && e.appendChild(d), f.textContent && e.appendChild(f);
- let p = eg(n?.actionUrl), m = Qh(n, "actionLabelKey", "actionLabel", R("label.readMe", "Read Me"));
+ f.className = "mjr-message-item-body", f.textContent = eg(n, "bodyKey", "body", ""), e.appendChild(o), d.textContent && e.appendChild(d), f.textContent && e.appendChild(f);
+ let p = ng(n?.actionUrl), m = eg(n, "actionLabelKey", "actionLabel", R("label.readMe", "Read Me"));
if (p && m) {
let t = document.createElement("a");
t.className = "mjr-message-item-action", t.href = p, t.target = "_blank", t.rel = "noopener noreferrer", t.textContent = m, e.appendChild(t);
@@ -13641,7 +13730,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
let e = document.createElement("div");
e.className = `mjr-history-item mjr-history-item--${String(n.type || "info")}`;
let r = document.createElement("span");
- r.className = "mjr-history-item-icon", r.textContent = ng(n.type), r.setAttribute("aria-hidden", "true");
+ r.className = "mjr-history-item-icon", r.textContent = ig(n.type), r.setAttribute("aria-hidden", "true");
let i = document.createElement("div");
i.className = "mjr-history-item-content";
let a = String(n.title || "").trim(), o = String(n.detail || "").trim(), s = String(n.message || "").trim(), c = a || s, l = a && o ? o : a ? "" : o, u = document.createElement("div");
@@ -13651,14 +13740,14 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
let f = document.createElement("div");
f.className = "mjr-history-item-meta";
let p = document.createElement("span");
- p.className = "mjr-history-item-time", p.textContent = Zh(n.createdAt);
+ p.className = "mjr-history-item-time", p.textContent = $h(n.createdAt);
let m = document.createElement("span");
- m.className = "mjr-history-item-chip", m.textContent = rg(n);
+ m.className = "mjr-history-item-chip", m.textContent = ag(n);
let h = document.createElement("span");
h.className = "mjr-history-item-chip", h.textContent = String(n.source || "").trim();
let g = document.createElement("span");
- g.className = "mjr-history-item-chip", g.textContent = ig(n.status), i.appendChild(u), d.textContent && i.appendChild(d), p.textContent && f.appendChild(p), m.textContent && f.appendChild(m), g.textContent && f.appendChild(g), h.textContent && f.appendChild(h), f.childNodes.length && i.appendChild(f);
- let _ = ag(n), v = og(n);
+ g.className = "mjr-history-item-chip", g.textContent = og(n.status), i.appendChild(u), d.textContent && i.appendChild(d), p.textContent && f.appendChild(p), m.textContent && f.appendChild(m), g.textContent && f.appendChild(g), h.textContent && f.appendChild(h), f.childNodes.length && i.appendChild(f);
+ let _ = sg(n), v = cg(n);
if (_ || v !== null) {
let e = document.createElement("div");
if (e.className = "mjr-history-item-progress", _) {
@@ -13673,7 +13762,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
}
i.appendChild(e);
}
- let y = eg(n?.actionUrl), b = String(n?.actionLabel || "").trim();
+ let y = ng(n?.actionUrl), b = String(n?.actionLabel || "").trim();
if (y && b) {
let e = document.createElement("a");
e.className = "mjr-history-item-action", e.href = y, e.target = "_blank", e.rel = "noopener noreferrer", e.textContent = b, i.appendChild(e);
@@ -13688,13 +13777,13 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
let e = _e();
a && (a.style.display = e > 0 ? "inline-block" : "none"), T(o, e);
}, D = () => {
- c && (c.childNodes.length > 0 || c.replaceChildren(Kh()));
+ c && (c.childNodes.length > 0 || c.replaceChildren(Jh()));
}, O = () => {
if (!f) return;
- let e = Math.max(0, Number(Vh() || 0) || 0);
+ let e = Math.max(0, Number(Uh() || 0) || 0);
f.disabled = e <= 0, f.title = e > 0 ? R("tooltip.markMessagesRead", "Mark all messages as read") : R("tooltip.noUnreadMessages", "No unread messages");
}, k = () => {
- let t = Math.max(0, Number(Vh() || 0) || 0);
+ let t = Math.max(0, Number(Uh() || 0) || 0);
if (e) {
let n = e.querySelector(".mjr-message-badge"), r = t > 0 ? R("tooltip.openMessagesUnread", "Messages ({count} unread)", { count: t }) : R("tooltip.openMessages", "Messages and updates");
e.classList.toggle("mjr-message-has-unread", t > 0), e.title = r, e.setAttribute("aria-label", r), n && (t <= 0 ? (n.style.display = "none", n.textContent = "") : (n.style.display = "inline-flex", n.textContent = t > 9 ? "9+" : String(t)));
@@ -13704,7 +13793,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
k(), E(), t?.style?.display === "block" && (g === "messages" && C(), g === "history" && w());
}, M = h ? { signal: h } : void 0;
try {
- window.addEventListener(vh, j, M);
+ window.addEventListener(bh, j, M);
} catch (e) {
console.debug?.(e);
}
@@ -13712,8 +13801,8 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
window.addEventListener(be, () => {
if (E(), t?.style?.display === "block" && g === "history" && w(), _) {
for (let e of ae()) {
- let t = String(e?.status || "").trim().toLowerCase(), n = sg(e);
- n && Yh.has(t) && y.add(n);
+ let t = String(e?.status || "").trim().toLowerCase(), n = lg(e);
+ n && Zh.has(t) && y.add(n);
}
x();
}
@@ -13740,7 +13829,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
} catch (e) {
console.debug?.(e);
}
- k(), E(), S(), cg({
+ k(), E(), S(), ug({
activeTab: g,
title: n,
messagePopover: t,
@@ -13753,7 +13842,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
markReadBtn: f
});
let P = () => {
- g = "messages", cg({
+ g = "messages", ug({
activeTab: g,
title: n,
messagePopover: t,
@@ -13764,9 +13853,9 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
historyPanel: s,
shortcutsPanel: c,
markReadBtn: f
- }), C(), Uh(), k();
+ }), C(), Gh(), k();
}, ee = () => {
- g = "history", cg({
+ g = "history", ug({
activeTab: g,
title: n,
messagePopover: t,
@@ -13779,7 +13868,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
markReadBtn: f
}), w(), A(), E();
}, te = () => {
- g = "shortcuts", cg({
+ g = "shortcuts", ug({
activeTab: g,
title: n,
messagePopover: t,
@@ -13805,8 +13894,8 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
}
ee(), _ = !0, b(), y.clear();
for (let e of ae()) {
- let t = String(e?.status || "").trim().toLowerCase(), n = sg(e);
- n && Yh.has(t) && y.add(n);
+ let t = String(e?.status || "").trim().toLowerCase(), n = lg(e);
+ n && Zh.has(t) && y.add(n);
}
x(), S(), k();
}
@@ -13838,7 +13927,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
};
return e?.addEventListener("click", (a) => {
if (t && p && e) {
- a.stopPropagation(), _ = !1, y.clear(), b(), g = "messages", C(), D(), cg({
+ a.stopPropagation(), _ = !1, y.clear(), b(), g = "messages", C(), D(), ug({
activeTab: g,
title: n,
messagePopover: t,
@@ -13855,7 +13944,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
} catch (e) {
console.debug?.(e);
}
- p.toggle(t, e), t?.style?.display === "block" && Uh(), S(), k();
+ p.toggle(t, e), t?.style?.display === "block" && Gh(), S(), k();
}
}, M), l?.addEventListener("click", (e) => {
e.preventDefault(), e.stopPropagation(), P();
@@ -13864,7 +13953,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
}, M), i?.addEventListener("keydown", (e) => re(e, "history"), M), d?.addEventListener("click", (e) => {
e.preventDefault(), e.stopPropagation(), te();
}, M), d?.addEventListener("keydown", (e) => re(e, "shortcuts"), M), f?.addEventListener("click", (e) => {
- e.preventDefault(), e.stopPropagation(), Uh(), C(), k();
+ e.preventDefault(), e.stopPropagation(), Gh(), C(), k();
}, M), {
refresh: j,
render: C,
@@ -13879,7 +13968,7 @@ function lg({ messageBtn: e = null, messagePopover: t = null, title: n = null, m
};
}
// ui/features/panel/controllers/query.ts
-function ug(e) {
+function fg(e) {
let t = e;
for (let e = 0; e < 3 && t && typeof t == "object" && "value" in t; e += 1) {
let e = t.value;
@@ -13888,8 +13977,8 @@ function ug(e) {
}
return t;
}
-function dg(e) {
- let t = ug(e);
+function pg(e) {
+ let t = fg(e);
if (!t) return null;
let n = String(t?.tagName || "").toUpperCase();
if (n === "INPUT" || n === "TEXTAREA") return t;
@@ -13903,13 +13992,13 @@ function dg(e) {
}
return null;
}
-function fg(e) {
- let t = dg(e), n = t ? t.value : typeof e?.value == "string" ? e.value : "";
+function mg(e) {
+ let t = pg(e), n = t ? t.value : typeof e?.value == "string" ? e.value : "";
return String(n || "").trim() || "*";
}
// ui/features/panel/controllers/gridController.ts
-function pg({ gridContainer: t, loadAssets: n, loadAssetsFromList: r, getCollectionAssets: i, disposeGrid: a, getQuery: o, searchInputEl: s, state: c }) {
- let { read: l, write: u } = dh(c, /* @__PURE__ */ "scope.customRootId.currentFolderRelativePath.kindFilter.workflowOnly.minRating.minSizeMB.maxSizeMB.resolutionCompare.minWidth.minHeight.maxWidth.maxHeight.workflowType.workflowId.workflowModelFilter.workflowRunsOnFilter.dateRangeFilter.dateExactFilter.sort.activeAssetId.selectedAssetIds.collectionId.collectionName.viewScope.similarResults.similarTitle.similarSourceAssetId.lastGridCount.lastGridTotal".split(".")), f = !1, p = !1, m = {}, h = 0, g = 0, _ = 3e4, v = async (e, t = _) => {
+function hg({ gridContainer: t, loadAssets: n, loadAssetsFromList: r, getCollectionAssets: i, disposeGrid: a, getQuery: o, searchInputEl: s, state: c }) {
+ let { read: l, write: u } = ph(c, /* @__PURE__ */ "scope.customRootId.currentFolderRelativePath.kindFilter.workflowOnly.minRating.minSizeMB.maxSizeMB.resolutionCompare.minWidth.minHeight.maxWidth.maxHeight.workflowType.workflowId.workflowModelFilter.workflowRunsOnFilter.dateRangeFilter.dateExactFilter.sort.activeAssetId.selectedAssetIds.collectionId.collectionName.viewScope.similarResults.similarTitle.similarSourceAssetId.lastGridCount.lastGridTotal".split(".")), f = !1, p = !1, m = {}, h = 0, g = 0, _ = 3e4, v = async (e, t = _) => {
let n = null;
try {
let r = new Promise((e, r) => {
@@ -14134,8 +14223,8 @@ function pg({ gridContainer: t, loadAssets: n, loadAssetsFromList: r, getCollect
}) };
}
// ui/features/panel/controllers/browserNavigationController.ts
-function mg({ state: e, gridContainer: t, folderBreadcrumb: n, folderBreadcrumbController: r = null, customSelect: i, reloadGrid: a, clearSelection: o = null, onContextChanged: s = null, lifecycleSignal: c = null } = {}) {
- let { read: l, write: u } = dh(e, [
+function gg({ state: e, gridContainer: t, folderBreadcrumb: n, folderBreadcrumbController: r = null, customSelect: i, reloadGrid: a, clearSelection: o = null, onContextChanged: s = null, lifecycleSignal: c = null } = {}) {
+ let { read: l, write: u } = ph(e, [
"scope",
"customRootId",
"currentFolderRelativePath"
@@ -14368,8 +14457,8 @@ function mg({ state: e, gridContainer: t, folderBreadcrumb: n, folderBreadcrumbC
};
}
// ui/features/panel/controllers/scopeController.ts
-function hg({ state: e, tabButtons: t, customMenuBtn: n, customPopover: r, popovers: i, reloadGrid: a, reconcileSelection: o = null, onChanged: s = null, onScopeChanged: c = null, onBeforeReload: l = null }) {
- let u = 0, { panelStore: d, read: f, write: p, controllerState: m } = dh(e, [
+function _g({ state: e, tabButtons: t, customMenuBtn: n, customPopover: r, popovers: i, reloadGrid: a, reconcileSelection: o = null, onChanged: s = null, onScopeChanged: c = null, onBeforeReload: l = null }) {
+ let u = 0, { panelStore: d, read: f, write: p, controllerState: m } = ph(e, [
"scope",
"customRootId",
"currentFolderRelativePath",
@@ -14484,21 +14573,21 @@ function hg({ state: e, tabButtons: t, customMenuBtn: n, customPopover: r, popov
};
}
// ui/features/panel/controllers/contextController.ts
-var gg = (e, t) => {
+var vg = (e, t) => {
if (e) try {
e.value = t;
} catch (e) {
console.debug?.(e);
}
-}, _g = (e, t) => {
+}, yg = (e, t) => {
if (e) try {
e.checked = !!t;
} catch (e) {
console.debug?.(e);
}
};
-function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsBtn: i, searchInputEl: a, kindSelect: o, wfCheckbox: s, workflowTypeSelect: c, workflowIdInput: l, workflowModelInput: u, workflowRunsOnSelect: d, ratingSelect: f, minSizeInput: p, maxSizeInput: m, minWidthInput: h, minHeightInput: g, maxWidthInput: _, maxHeightInput: v, resolutionPresetSelect: y, dateRangeSelect: b, dateExactInput: x, scopeController: S, sortController: C, updateSummaryBar: w, reloadGrid: T, extraActions: E = null, getExtraContext: D = null } = {}) {
- let O = e && typeof e == "object" ? e : {}, { read: k, write: A, controllerState: j } = dh(e, /* @__PURE__ */ "searchQuery.scope.collectionId.collectionName.customRootId.customRootLabel.currentFolderRelativePath.kindFilter.workflowOnly.minRating.minSizeMB.maxSizeMB.minWidth.minHeight.maxWidth.maxHeight.resolutionCompare.workflowType.workflowId.workflowModelFilter.workflowRunsOnFilter.dateRangeFilter.dateExactFilter.sort.viewScope.similarResults.similarTitle.similarSourceAssetId".split(".")), M = (e, t) => {
+function bg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsBtn: i, searchInputEl: a, kindSelect: o, wfCheckbox: s, workflowTypeSelect: c, workflowIdInput: l, workflowModelInput: u, workflowRunsOnSelect: d, ratingSelect: f, minSizeInput: p, maxSizeInput: m, minWidthInput: h, minHeightInput: g, maxWidthInput: _, maxHeightInput: v, resolutionPresetSelect: y, dateRangeSelect: b, dateExactInput: x, scopeController: S, sortController: C, updateSummaryBar: w, reloadGrid: T, extraActions: E = null, getExtraContext: D = null } = {}) {
+ let O = e && typeof e == "object" ? e : {}, { read: k, write: A, controllerState: j } = ph(e, /* @__PURE__ */ "searchQuery.scope.collectionId.collectionName.customRootId.customRootLabel.currentFolderRelativePath.kindFilter.workflowOnly.minRating.minSizeMB.maxSizeMB.minWidth.minHeight.maxWidth.maxHeight.resolutionCompare.workflowType.workflowId.workflowModelFilter.workflowRunsOnFilter.dateRangeFilter.dateExactFilter.sort.viewScope.similarResults.similarTitle.similarSourceAssetId".split(".")), M = (e, t) => {
A(e, t);
}, N = (e, t = "") => k(e, t), P = () => ({
...O || {},
@@ -14521,7 +14610,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
}, F = {
clearQuery: async () => {
try {
- gg(a, ""), M("searchQuery", "");
+ vg(a, ""), M("searchQuery", "");
} catch (e) {
console.debug?.(e);
}
@@ -14590,7 +14679,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearKind: async () => {
try {
- M("kindFilter", ""), gg(o, "");
+ M("kindFilter", ""), vg(o, "");
} catch (e) {
console.debug?.(e);
}
@@ -14602,7 +14691,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearMinRating: async () => {
try {
- M("minRating", 0), gg(f, "0");
+ M("minRating", 0), vg(f, "0");
} catch (e) {
console.debug?.(e);
}
@@ -14614,7 +14703,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearWorkflowOnly: async () => {
try {
- M("workflowOnly", !1), _g(s, !1);
+ M("workflowOnly", !1), yg(s, !1);
} catch (e) {
console.debug?.(e);
}
@@ -14626,7 +14715,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearWorkflowType: async () => {
try {
- M("workflowType", ""), gg(c, "");
+ M("workflowType", ""), vg(c, "");
} catch (e) {
console.debug?.(e);
}
@@ -14638,7 +14727,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearWorkflowId: async () => {
try {
- M("workflowId", ""), gg(l, "");
+ M("workflowId", ""), vg(l, "");
} catch (e) {
console.debug?.(e);
}
@@ -14650,7 +14739,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearWorkflowModel: async () => {
try {
- M("workflowModelFilter", ""), gg(u, "");
+ M("workflowModelFilter", ""), vg(u, "");
} catch (e) {
console.debug?.(e);
}
@@ -14662,7 +14751,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearWorkflowRunsOn: async () => {
try {
- M("workflowRunsOnFilter", ""), gg(d, "");
+ M("workflowRunsOnFilter", ""), vg(d, "");
} catch (e) {
console.debug?.(e);
}
@@ -14674,7 +14763,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearSize: async () => {
try {
- M("minSizeMB", 0), M("maxSizeMB", 0), gg(p, ""), gg(m, "");
+ M("minSizeMB", 0), M("maxSizeMB", 0), vg(p, ""), vg(m, "");
} catch (e) {
console.debug?.(e);
}
@@ -14686,7 +14775,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearResolution: async () => {
try {
- M("minWidth", 0), M("minHeight", 0), M("maxWidth", 0), M("maxHeight", 0), gg(h, ""), gg(g, ""), gg(_, ""), gg(v, ""), gg(y, "");
+ M("minWidth", 0), M("minHeight", 0), M("maxWidth", 0), M("maxHeight", 0), vg(h, ""), vg(g, ""), vg(_, ""), vg(v, ""), vg(y, "");
} catch (e) {
console.debug?.(e);
}
@@ -14698,7 +14787,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearDateRange: async () => {
try {
- M("dateRangeFilter", ""), gg(b, "");
+ M("dateRangeFilter", ""), vg(b, "");
} catch (e) {
console.debug?.(e);
}
@@ -14710,7 +14799,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
},
clearDateExact: async () => {
try {
- M("dateExactFilter", ""), gg(x, "");
+ M("dateExactFilter", ""), vg(x, "");
} catch (e) {
console.debug?.(e);
}
@@ -14735,7 +14824,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
clearAll: async () => {
let e = !1;
try {
- gg(a, "");
+ vg(a, "");
} catch (e) {
console.debug?.(e);
}
@@ -14751,7 +14840,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
console.debug?.(e);
}
try {
- gg(o, ""), _g(s, !1), gg(c, ""), gg(l, ""), gg(u, ""), gg(d, ""), gg(f, "0"), gg(p, ""), gg(m, ""), gg(h, ""), gg(g, ""), gg(_, ""), gg(v, ""), gg(y, ""), gg(b, ""), gg(x, "");
+ vg(o, ""), yg(s, !1), vg(c, ""), vg(l, ""), vg(u, ""), vg(d, ""), vg(f, "0"), vg(p, ""), vg(m, ""), vg(h, ""), vg(g, ""), vg(_, ""), vg(v, ""), vg(y, ""), vg(b, ""), vg(x, "");
} catch (e) {
console.debug?.(e);
}
@@ -14777,7 +14866,7 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
}
return {
update: () => {
- let e = String(a?.value || "").trim(), o = fg(a), s = P(), c = !!(N("kindFilter", "") || N("workflowOnly", !1) || (Number(N("minRating", 0) || 0) || 0) > 0 || (Number(N("minSizeMB", 0) || 0) || 0) > 0 || (Number(N("maxSizeMB", 0) || 0) || 0) > 0 || (Number(N("minWidth", 0) || 0) || 0) > 0 || (Number(N("minHeight", 0) || 0) || 0) > 0 || (Number(N("maxWidth", 0) || 0) || 0) > 0 || (Number(N("maxHeight", 0) || 0) || 0) > 0 || String(N("workflowType", "") || "").trim().length > 0 || String(N("workflowId", "") || "").trim().length > 0 || String(N("workflowModelFilter", "") || "").trim().length > 0 || String(N("workflowRunsOnFilter", "") || "").trim().length > 0 || N("dateRangeFilter", "") || N("dateExactFilter", "")), l = String(N("sort", "mtime_desc") || "mtime_desc") !== "mtime_desc", u = !!N("collectionId", "");
+ let e = String(a?.value || "").trim(), o = mg(a), s = P(), c = !!(N("kindFilter", "") || N("workflowOnly", !1) || (Number(N("minRating", 0) || 0) || 0) > 0 || (Number(N("minSizeMB", 0) || 0) || 0) > 0 || (Number(N("maxSizeMB", 0) || 0) || 0) > 0 || (Number(N("minWidth", 0) || 0) || 0) > 0 || (Number(N("minHeight", 0) || 0) || 0) > 0 || (Number(N("maxWidth", 0) || 0) || 0) > 0 || (Number(N("maxHeight", 0) || 0) || 0) > 0 || String(N("workflowType", "") || "").trim().length > 0 || String(N("workflowId", "") || "").trim().length > 0 || String(N("workflowModelFilter", "") || "").trim().length > 0 || String(N("workflowRunsOnFilter", "") || "").trim().length > 0 || N("dateRangeFilter", "") || N("dateExactFilter", "")), l = String(N("sort", "mtime_desc") || "mtime_desc") !== "mtime_desc", u = !!N("collectionId", "");
try {
n?.classList?.toggle?.("mjr-context-active", c), r?.classList?.toggle?.("mjr-context-active", l), i?.classList?.toggle?.("mjr-context-active", u);
} catch (e) {
@@ -14803,8 +14892,8 @@ function vg({ state: e, gridContainer: t, filterBtn: n, sortBtn: r, collectionsB
};
}
// ui/features/panel/controllers/customRootsController.ts
-function yg({ state: e, customSelect: t, customRemoveBtn: n, comfyConfirm: r, comfyPrompt: i, comfyToast: a, get: o, post: s, ENDPOINTS: c, reloadGrid: l, onRootChanged: u = null }) {
- let d = e && typeof e == "object" ? e : {}, { read: f, write: p } = dh(e, [
+function xg({ state: e, customSelect: t, customRemoveBtn: n, comfyConfirm: r, comfyPrompt: i, comfyToast: a, get: o, post: s, ENDPOINTS: c, reloadGrid: l, onRootChanged: u = null }) {
+ let d = e && typeof e == "object" ? e : {}, { read: f, write: p } = ph(e, [
"customRootId",
"customRootLabel",
"currentFolderRelativePath"
@@ -14936,8 +15025,8 @@ function yg({ state: e, customSelect: t, customRemoveBtn: n, comfyConfirm: r, co
};
}
// ui/features/panel/controllers/sortController.ts
-function bg({ state: e, sortBtn: t, sortMenu: n, sortPopover: r, popovers: i, reloadGrid: a, onChanged: o = null }) {
- let { read: s, write: c } = dh(e, ["sort"]), l = () => [
+function Sg({ state: e, sortBtn: t, sortMenu: n, sortPopover: r, popovers: i, reloadGrid: a, onChanged: o = null }) {
+ let { read: s, write: c } = ph(e, ["sort"]), l = () => [
{
key: "mtime_desc",
label: R("sort.newest")
@@ -15022,13 +15111,13 @@ function bg({ state: e, sortBtn: t, sortMenu: n, sortPopover: r, popovers: i, re
};
}
// ui/features/panel/controllers/sidebarController.ts
-var xg = "_mjrRescanning", Sg = 1500, Cg = (e) => /^\d+$/.test(String(e ?? "").trim());
-async function wg({ card: t, asset: n, sidebar: r, onAssetUpdated: i }) {
+var Cg = "_mjrRescanning", wg = 1500, Tg = (e) => /^\d+$/.test(String(e ?? "").trim());
+async function Eg({ card: t, asset: n, sidebar: r, onAssetUpdated: i }) {
if (!t || !n || globalThis._mjrMaintenanceActive) return;
try {
let e = Date.now();
- if (e - (Number(t[xg] || 0) || 0) < Sg) return;
- t[xg] = e;
+ if (e - (Number(t[Cg] || 0) || 0) < wg) return;
+ t[Cg] = e;
} catch (e) {
console.debug?.(e);
}
@@ -15053,7 +15142,7 @@ async function wg({ card: t, asset: n, sidebar: r, onAssetUpdated: i }) {
if (c = !!(await L(st.INDEX_FILES, {
files: [o],
incremental: !1
- }))?.ok, !c && a && (Ht(a, "error", "Error: metadata refresh failed", { asset: n }), a.classList.remove("mjr-pulse-animation"), a.style.cursor = ""), Cg(n?.id)) {
+ }))?.ok, !c && a && (Ht(a, "error", "Error: metadata refresh failed", { asset: n }), a.classList.remove("mjr-pulse-animation"), a.style.cursor = ""), Tg(n?.id)) {
l = !0;
try {
u = !!(await ge(n.id))?.ok;
@@ -15108,7 +15197,7 @@ async function wg({ card: t, asset: n, sidebar: r, onAssetUpdated: i }) {
}
return s;
}
-function Tg(e, t) {
+function Dg(e, t) {
if (e) {
try {
let n = e.querySelector(".mjr-asset-card.is-selected");
@@ -15144,7 +15233,7 @@ function Tg(e, t) {
}
}
}
-var Eg = (e) => {
+var Og = (e) => {
if (e == null) return "";
try {
if (typeof CSS < "u" && typeof CSS.escape == "function") return CSS.escape(String(e));
@@ -15153,32 +15242,32 @@ var Eg = (e) => {
}
return String(e).replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
};
-function Dg(e, t) {
+function kg(e, t) {
if (!e || !t) return null;
try {
- return e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Eg(t)}"]`);
+ return e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Og(t)}"]`);
} catch (e) {
console.debug?.(e);
}
try {
- return e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Eg(t)}"]`);
+ return e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Og(t)}"]`);
} catch (e) {
console.debug?.(e);
}
return null;
}
-function Og(e) {
+function Ag(e) {
if (!e) return null;
let t = e.dataset?.mjrSelectedAssetId;
if (t) {
- let n = Dg(e, t);
+ let n = kg(e, t);
if (n) return n;
}
let n = e.dataset?.mjrSelectedAssetIds;
if (n) try {
let t = JSON.parse(n);
if (Array.isArray(t) && t.length) {
- let n = Dg(e, t[0]);
+ let n = kg(e, t[0]);
if (n) return n;
}
} catch (e) {
@@ -15186,7 +15275,7 @@ function Og(e) {
}
return e.querySelector(".mjr-asset-card.is-selected");
}
-function kg(e, { preventScroll: t = !0 } = {}) {
+function jg(e, { preventScroll: t = !0 } = {}) {
if (e) try {
e.focus?.({ preventScroll: t });
} catch {
@@ -15197,14 +15286,14 @@ function kg(e, { preventScroll: t = !0 } = {}) {
}
}
}
-function Ag(e, { force: t = !1 } = {}) {
+function Mg(e, { force: t = !1 } = {}) {
if (!e || !t && !e._mjrFocusWithin) return;
- let n = Og(e);
- n && (kg(n), e._mjrFocusWithin = !0);
+ let n = Ag(e);
+ n && (jg(n), e._mjrFocusWithin = !0);
}
-function jg(e) {
+function Ng(e) {
if (e) try {
- let t = Og(e);
+ let t = Ag(e);
if (!t) return;
let n = e.parentElement;
if (n && typeof n.getBoundingClientRect == "function" && typeof t.getBoundingClientRect == "function") {
@@ -15219,7 +15308,7 @@ function jg(e) {
console.debug?.(e);
}
}
-function Mg(e) {
+function Pg(e) {
if (e) try {
e._mjrAutoRevealSelectionUntil = Date.now() + 900;
} catch (e) {
@@ -15227,12 +15316,12 @@ function Mg(e) {
}
let t = () => {
try {
- jg(e);
+ Ng(e);
} catch (e) {
console.debug?.(e);
}
try {
- Ag(e);
+ Mg(e);
} catch (e) {
console.debug?.(e);
}
@@ -15247,10 +15336,10 @@ function Mg(e) {
t();
}
}
-function Ng(e, t) {
+function Fg(e, t) {
e && (t ? (e.classList.add("is-selected"), e.setAttribute?.("aria-selected", "true")) : (e.classList.remove("is-selected"), e.setAttribute?.("aria-selected", "false")));
}
-function Pg(e) {
+function Ig(e) {
try {
if (typeof e?._mjrGetRenderedCards == "function") {
let t = e._mjrGetRenderedCards();
@@ -15265,15 +15354,15 @@ function Pg(e) {
return [];
}
}
-function Fg(e) {
+function Lg(e) {
if (e) try {
- let t = Pg(e).filter((e) => e?.classList?.contains?.("is-selected")).map((e) => e?.dataset?.mjrAssetId).filter(Boolean);
+ let t = Ig(e).filter((e) => e?.classList?.contains?.("is-selected")).map((e) => e?.dataset?.mjrAssetId).filter(Boolean);
t.length ? (e.dataset.mjrSelectedAssetIds = JSON.stringify(t), !e.dataset.mjrSelectedAssetId && t[0] && (e.dataset.mjrSelectedAssetId = String(t[0]))) : (delete e.dataset.mjrSelectedAssetIds, delete e.dataset.mjrSelectedAssetId);
} catch (e) {
console.debug?.(e);
}
}
-function Ig(e, t, n = "") {
+function Rg(e, t, n = "") {
if (!e) return [];
let r = Array.from(t || []).map(String).filter(Boolean);
try {
@@ -15287,9 +15376,9 @@ function Ig(e, t, n = "") {
console.debug?.(e);
}
try {
- for (let t of Pg(e)) {
+ for (let t of Ig(e)) {
let e = t?.dataset?.mjrAssetId;
- Ng(t, !!(e && r.includes(String(e))));
+ Fg(t, !!(e && r.includes(String(e))));
}
} catch (e) {
console.debug?.(e);
@@ -15304,7 +15393,7 @@ function Ig(e, t, n = "") {
}
return r;
}
-function Lg({ gridContainer: e, state: t, activeId: n, readState: r = null, writeState: i = null } = {}) {
+function zg({ gridContainer: e, state: t, activeId: n, readState: r = null, writeState: i = null } = {}) {
if ((t || i) && e) try {
let a = [];
if (e.dataset?.mjrSelectedAssetIds) try {
@@ -15313,7 +15402,7 @@ function Lg({ gridContainer: e, state: t, activeId: n, readState: r = null, writ
} catch (e) {
console.debug?.(e);
}
- else a = e.dataset?.mjrSelectedAssetId ? [String(e.dataset.mjrSelectedAssetId)].filter(Boolean) : Pg(e).filter((e) => e?.classList?.contains?.("is-selected")).map((e) => e?.dataset?.mjrAssetId).filter(Boolean).map(String);
+ else a = e.dataset?.mjrSelectedAssetId ? [String(e.dataset.mjrSelectedAssetId)].filter(Boolean) : Ig(e).filter((e) => e?.classList?.contains?.("is-selected")).map((e) => e?.dataset?.mjrAssetId).filter(Boolean).map(String);
typeof i == "function" ? i("selectedAssetIds", a) : t.selectedAssetIds = a;
let o = String(typeof r == "function" ? r("activeAssetId", "") || "" : t?.activeAssetId || "");
n == null ? o && a.includes(o) || (typeof i == "function" ? i("activeAssetId", a[0] || "") : t.activeAssetId = a[0] || "") : typeof i == "function" ? i("activeAssetId", String(n)) : t.activeAssetId = String(n);
@@ -15321,8 +15410,8 @@ function Lg({ gridContainer: e, state: t, activeId: n, readState: r = null, writ
console.debug?.(e);
}
}
-function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadge: r, showAssetInSidebar: i, closeSidebar: a, state: o }) {
- let { read: s, write: c } = dh(o, [
+function Bg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadge: r, showAssetInSidebar: i, closeSidebar: a, state: o }) {
+ let { read: s, write: c } = ph(o, [
"activeAssetId",
"selectedAssetIds",
"sidebarOpen"
@@ -15357,9 +15446,9 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
}
}, a = () => {
n && cancelAnimationFrame(n), r && clearTimeout(r), n = requestAnimationFrame(() => {
- n = null, i() && jg(e);
+ n = null, i() && Ng(e);
}), r = setTimeout(() => {
- r = null, i() && jg(e);
+ r = null, i() && Ng(e);
}, 160);
}, o = new ResizeObserver(() => a());
t && o.observe(t), o.observe(e), e._mjrSelectionResizeObserver = o;
@@ -15399,14 +15488,14 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
if (!a) return;
n.preventDefault(), n.stopPropagation();
let l = r?.dataset?.mjrAssetId || "";
- Ig(e, l ? [l] : [], l), Lg({
+ Rg(e, l ? [l] : [], l), zg({
gridContainer: e,
state: o,
activeId: l,
readState: s,
writeState: c
});
- let u = await wg({
+ let u = await Eg({
card: r,
asset: a,
sidebar: t,
@@ -15425,7 +15514,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
let u = r._mjrAsset;
if (u) {
if (e?._mjrSelectionManagedByVue) {
- Lg({
+ zg({
gridContainer: e,
state: o,
activeId: String(r?.dataset?.mjrAssetId || "").trim(),
@@ -15445,7 +15534,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
console.debug?.(e);
}
} else if (n.preventDefault(), n.stopPropagation(), n.ctrlKey || n.metaKey || n.shiftKey) {
- let t = Pg(e), i = t.indexOf(r);
+ let t = Ig(e), i = t.indexOf(r);
if (n.shiftKey) {
let t = [];
try {
@@ -15457,7 +15546,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
let n = r?.dataset?.mjrAssetId || "", i = t.findIndex((e) => String(e?.id || "") === String(n)), a = Number(e._mjrLastSelectedIndex), l = Number.isFinite(a) ? a : i;
if (i >= 0 && l >= 0) {
let r = Math.min(l, i), a = Math.max(l, i), u = t.slice(r, a + 1).map((e) => String(e?.id || "")).filter(Boolean);
- Ig(e, u, n || u[0] || ""), e._mjrLastSelectedIndex = i, Lg({
+ Rg(e, u, n || u[0] || ""), e._mjrLastSelectedIndex = i, zg({
gridContainer: e,
state: o,
activeId: n || "",
@@ -15492,7 +15581,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
}
a && (l.has(a) ? l.delete(a) : l.add(a));
let u = Array.from(l), d = l.has(a) ? a : u[0] || "";
- Ig(e, u, d), Lg({
+ Rg(e, u, d), zg({
gridContainer: e,
state: o,
activeId: d,
@@ -15502,7 +15591,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
} else {
{
if (r.classList.contains("is-selected")) {
- Ig(e, [], ""), Lg({
+ Rg(e, [], ""), zg({
gridContainer: e,
state: o,
activeId: "",
@@ -15512,7 +15601,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
return;
}
let n = r?.dataset?.mjrAssetId;
- Ig(e, n ? [n] : [], n || ""), Lg({
+ Rg(e, n ? [n] : [], n || ""), zg({
gridContainer: e,
state: o,
activeId: n || "",
@@ -15526,7 +15615,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
}
}
try {
- jg(e), r?.focus?.({ preventScroll: !0 });
+ Ng(e), r?.focus?.({ preventScroll: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -15537,10 +15626,10 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
let p = async () => {
let n = String(s("activeAssetId", "") || ""), r = null;
if (n) try {
- r = e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Eg(n)}"]`);
+ r = e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Og(n)}"]`);
} catch {
try {
- r = e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Eg(n)}"]`);
+ r = e.querySelector(`.mjr-asset-card[data-mjr-asset-id="${Og(n)}"]`);
} catch (e) {
console.debug?.(e);
}
@@ -15548,7 +15637,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
r ||= e.querySelector(".mjr-asset-card.is-selected");
let l = r?._mjrAsset;
if (l) {
- Tg(e, r), Fg(e), Lg({
+ Dg(e, r), Lg(e), zg({
gridContainer: e,
state: o,
activeId: r?.dataset?.mjrAssetId,
@@ -15564,7 +15653,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
} catch (e) {
console.debug?.(e);
}
- Ag(e, { force: !0 }), Mg(e);
+ Mg(e, { force: !0 }), Pg(e);
return;
}
} catch (e) {
@@ -15577,7 +15666,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
} catch (e) {
console.debug?.(e);
}
- Mg(e), r?.focus?.({ preventScroll: !0 });
+ Pg(e), r?.focus?.({ preventScroll: !0 });
} catch (e) {
console.debug?.(e);
}
@@ -15592,7 +15681,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
if (!n) return !1;
let r = null;
try {
- r = Dg(e, n);
+ r = kg(e, n);
} catch (e) {
console.debug?.(e);
}
@@ -15629,7 +15718,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
let _ = (t) => {
if (t.defaultPrevented || (t.key?.toLowerCase?.() || "") !== "d" || t.ctrlKey || t.metaKey || t.altKey || t.target?.isContentEditable || t.target?.closest?.("input, textarea, select, [contenteditable='true']")) return;
let n = Mt(t.target, ".mjr-asset-card");
- n && n._mjrAsset && (t.preventDefault(), t.stopPropagation(), Tg(e, n), Fg(e), Lg({
+ n && n._mjrAsset && (t.preventDefault(), t.stopPropagation(), Dg(e, n), Lg(e), zg({
gridContainer: e,
state: o,
activeId: n?.dataset?.mjrAssetId,
@@ -15715,7 +15804,7 @@ function Rg({ gridContainer: e, sidebar: t, createRatingBadge: n, createTagsBadg
};
}
// ui/features/panel/controllers/panelHotkeysController.ts
-function zg({ onTriggerScan: e, getScanContext: t, onToggleDetails: n, onToggleFloatingViewer: r, onFocusSearch: i, onClearSearch: a, allowListKeys: o } = {}) {
+function Vg({ onTriggerScan: e, getScanContext: t, onToggleDetails: n, onToggleFloatingViewer: r, onFocusSearch: i, onClearSearch: a, allowListKeys: o } = {}) {
let s = !1, c = !1, l = null, u = o instanceof Set ? o : /* @__PURE__ */ new Set([
" ",
"ArrowUp",
@@ -15869,17 +15958,17 @@ function zg({ onTriggerScan: e, getScanContext: t, onToggleDetails: n, onToggleF
};
}
// ui/vue/composables/useGridSelection.ts
-function Bg(e) {
+function Hg(e) {
return Array.isArray(e) ? e.map((e) => String(e || "").trim()).filter(Boolean) : [];
}
-function Vg({ gridContainer: e, readSelectedAssetIds: t = () => [], readActiveAssetId: n = () => "", writeSelectedAssetIds: r = (e) => {}, writeActiveAssetId: i = (e) => {}, onSelectionChanged: a = () => {}, lifecycleSignal: o = null } = {}) {
+function Ug({ gridContainer: e, readSelectedAssetIds: t = () => [], readActiveAssetId: n = () => "", writeSelectedAssetIds: r = (e) => {}, writeActiveAssetId: i = (e) => {}, onSelectionChanged: a = () => {}, lifecycleSignal: o = null } = {}) {
if (!e) return {
restoreSelectionState() {},
dispose() {}
};
let s = (e) => {
try {
- let t = e?.detail || {}, n = Bg(t.selectedIds);
+ let t = e?.detail || {}, n = Hg(t.selectedIds);
r(n), i(String(t.activeId || n[0] || "").trim());
} catch (e) {
console.debug?.(e);
@@ -15897,7 +15986,7 @@ function Vg({ gridContainer: e, readSelectedAssetIds: t = () => [], readActiveAs
}
return {
restoreSelectionState: ({ scrollTop: r = 0 } = {}) => {
- let i = Bg(t()), a = String(n() || i[0] || "").trim();
+ let i = Hg(t()), a = String(n() || i[0] || "").trim();
if (i.length || a) {
try {
typeof e?._mjrSetSelection == "function" && e._mjrSetSelection(i, a);
@@ -15914,7 +16003,7 @@ function Vg({ gridContainer: e, readSelectedAssetIds: t = () => [], readActiveAs
console.debug?.(e);
}
try {
- Rl(e, a)?.scrollIntoView?.({
+ Bl(e, a)?.scrollIntoView?.({
block: "nearest",
behavior: "instant"
});
@@ -15934,7 +16023,7 @@ function Vg({ gridContainer: e, readSelectedAssetIds: t = () => [], readActiveAs
};
}
// ui/vue/composables/useAssetsQuery.ts
-function Hg(e) {
+function Wg(e) {
try {
if (typeof requestAnimationFrame == "function") {
requestAnimationFrame(e);
@@ -15945,13 +16034,13 @@ function Hg(e) {
}
setTimeout(e, 0);
}
-function Ug(e = {}, t = "*") {
+function Gg(e = {}, t = "*") {
return e.scope === "output" && !e.collectionId && t === "*" && !e.kindFilter && !e.workflowOnly && !(Number(e.minRating || 0) > 0) && !(Number(e.minSizeMB || 0) > 0) && !(Number(e.maxSizeMB || 0) > 0) && !(Number(e.minWidth || 0) > 0) && !(Number(e.minHeight || 0) > 0) && !(Number(e.maxWidth || 0) > 0) && !(Number(e.maxHeight || 0) > 0) && !String(e.workflowType || "").trim() && !String(e.workflowId || "").trim() && !e.dateRangeFilter && !e.dateExactFilter;
}
-function Wg({ gridContainer: e, gridWrapper: t, readScrollElement: n = () => null, gridController: r, captureAnchor: i, restoreAnchor: a, restoreGridUiState: o = null, readScrollTop: s = () => 0, restoreSelectionState: c = () => {}, readActiveAssetId: l = () => "", isSidebarOpen: u = () => !1, toggleSidebarDetails: d = () => {}, getQuery: f = () => "*", getScope: p = () => "output", loadAssets: m = null, lifecycleSignal: h = null } = {}) {
+function Kg({ gridContainer: e, gridWrapper: t, readScrollElement: n = () => null, gridController: r, captureAnchor: i, restoreAnchor: a, restoreGridUiState: o = null, readScrollTop: s = () => 0, restoreSelectionState: c = () => {}, readActiveAssetId: l = () => "", isSidebarOpen: u = () => !1, toggleSidebarDetails: d = () => {}, getQuery: f = () => "*", getScope: p = () => "output", loadAssets: m = null, lifecycleSignal: h = null } = {}) {
let g = 0, _ = !1, v = null, y = null, b = null, x = 0, S = !0, C = "", w = Date.now(), T = () => {
try {
- return gc(e, (typeof n == "function" ? n() : t) || t || null);
+ return vc(e, (typeof n == "function" ? n() : t) || t || null);
} catch (e) {
return console.debug?.(e), !1;
}
@@ -16040,7 +16129,7 @@ function Wg({ gridContainer: e, gridWrapper: t, readScrollElement: n = () => nul
} catch (e) {
console.debug?.(e);
}
- Hg(() => {
+ Wg(() => {
let e = Number(s() || 0) || 0;
if (e > 0) try {
t.scrollTop = e;
@@ -16087,7 +16176,7 @@ function Wg({ gridContainer: e, gridWrapper: t, readScrollElement: n = () => nul
c = !0, a = e.last_scan_end, o = e.last_index_end, s = Number(e.total_assets ?? null);
return;
}
- let l = e.last_scan_end && e.last_scan_end !== a, u = e.last_index_end && e.last_index_end !== o, d = Number(e.total_assets ?? null), f = Ug(t, String(n() || "*").trim() || "*"), p = Date.now() - w < 8e3, m = Number.isFinite(d) && Number.isFinite(s) ? d - s : 0, h = Math.max(0, Number(i?.__mjrLastAssetUpsertCount || 0) || 0), g = m >= 20;
+ let l = e.last_scan_end && e.last_scan_end !== a, u = e.last_index_end && e.last_index_end !== o, d = Number(e.total_assets ?? null), f = Gg(t, String(n() || "*").trim() || "*"), p = Date.now() - w < 8e3, m = Number.isFinite(d) && Number.isFinite(s) ? d - s : 0, h = Math.max(0, Number(i?.__mjrLastAssetUpsertCount || 0) || 0), g = m >= 20;
if (Number.isFinite(d) && (s = d), !f || p && D() && !u && !g) {
a = e.last_scan_end, o = e.last_index_end;
return;
@@ -16197,7 +16286,7 @@ function Wg({ gridContainer: e, gridWrapper: t, readScrollElement: n = () => nul
};
}
// ui/features/panel/panelBootstrap.ts
-function Gg(e, { useComfyThemeUI: t }) {
+function qg(e, { useComfyThemeUI: t }) {
t ? e.classList.add("mjr-assets-manager") : e.classList.remove("mjr-assets-manager");
let n = e.parentElement || null, r = n ? {
height: n.style.height,
@@ -16236,7 +16325,7 @@ function Gg(e, { useComfyThemeUI: t }) {
};
}
// ui/features/panel/panelSettingsSync.ts
-function Kg({ container: e, state: t, sidebar: n, browseSection: i, gridWrapper: a, similarBtn: o, setSemanticEnabled: s, similarEnabledTitle: c, similarDisabledTitle: l, refreshGridFn: u, isSidebarOpen: d, readActiveAssetId: f, getSidebarController: m, panelLifecycleAC: h }) {
+function Jg({ container: e, state: t, sidebar: n, browseSection: i, gridWrapper: a, similarBtn: o, setSemanticEnabled: s, similarEnabledTitle: c, similarDisabledTitle: l, refreshGridFn: u, isSidebarOpen: d, readActiveAssetId: f, getSidebarController: m, panelLifecycleAC: h }) {
let g = "", _ = () => {
try {
return !!(Jt()?.ai?.vectorSearchEnabled ?? !0);
@@ -16361,7 +16450,7 @@ function Kg({ container: e, state: t, sidebar: n, browseSection: i, gridWrapper:
};
}
// ui/features/panel/panelGridEventBindings.ts
-function qg({ gridContainer: t, panelLifecycleAC: n, requestQueuedReload: r, notifyContextChanged: i, markUserInteraction: a, writePanelValue: o, popovers: s, collectionsPopover: c, gridController: l, registerSummaryDispose: u }) {
+function Yg({ gridContainer: t, panelLifecycleAC: n, requestQueuedReload: r, notifyContextChanged: i, markUserInteraction: a, writePanelValue: o, popovers: s, collectionsPopover: c, gridController: l, registerSummaryDispose: u }) {
let d = null;
try {
d = () => r(), t.addEventListener("mjr:reload-grid", d, { signal: n?.signal }), u(() => {
@@ -16454,34 +16543,34 @@ function qg({ gridContainer: t, panelLifecycleAC: n, requestQueuedReload: r, not
}
}
// ui/features/panel/panelSimilarSearch.ts
-var Jg = 500;
-function Yg(e) {
+var Xg = 500;
+function Zg(e) {
return Number(e?.status || 0) === 404 && String(e?.error || "").toLowerCase().includes("non-json");
}
-function Xg(e, t = "") {
+function Qg(e, t = "") {
let n = Array.isArray(e) ? e : [];
- return n.length <= Jg ? {
+ return n.length <= Xg ? {
list: n,
title: t,
truncated: !1,
total: n.length
} : {
- list: n.slice(0, Jg),
- title: `${String(t || "").trim() || "Generation group"} - showing first ${Jg}/${n.length}`,
+ list: n.slice(0, Xg),
+ title: `${String(t || "").trim() || "Generation group"} - showing first ${Xg}/${n.length}`,
truncated: !0,
total: n.length
};
}
-function Zg(e = {}) {
+function $g(e = {}) {
let t = String(e?.stackId || e?.stack_id || "").trim();
if (t) return `stack:${t}`;
let n = String(e?.asset?.id || "").trim();
return e?.isDupGroup ? n ? `duplicates:${n}` : "duplicates" : n ? `group:${n}` : "group";
}
-function Qg(e, t) {
+function e_(e, t) {
return String(e?.[t] ?? e?.file_info?.[t] ?? "").trim();
}
-function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplicatesBtn: i, similarSameNodeBtn: a, similarSameWorkflowBtn: o, gridContainer: s, state: c, panelLifecycleAC: l, isAiEnabled: u, similarDisabledTitle: d, readActiveAssetId: f, readSelectedAssetIds: p, readPanelValue: m, writePanelValue: h, scopeController: g, closePopovers: _, closePeerPopovers: v, popovers: y, workflowIdInput: b, reloadGrid: x, getDuplicatesAlert: S }) {
+function t_({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplicatesBtn: i, similarSameNodeBtn: a, similarSameWorkflowBtn: o, gridContainer: s, state: c, panelLifecycleAC: l, isAiEnabled: u, similarDisabledTitle: d, readActiveAssetId: f, readSelectedAssetIds: p, readPanelValue: m, writePanelValue: h, scopeController: g, closePopovers: _, closePeerPopovers: v, popovers: y, workflowIdInput: b, reloadGrid: x, getDuplicatesAlert: S }) {
let C = () => String(f() || p()[0] || "").trim(), w = () => {
let e = Number(C());
return Number.isFinite(e) && e > 0 ? e : 0;
@@ -16507,7 +16596,7 @@ function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplic
} catch (e) {
return console.debug?.(e), null;
}
- }, k = async (e, t) => e && t.some((t) => Qg(e, t)) ? e : await O() || e, A = (e = {}) => (Array.isArray(e?.files) ? e.files : []).map((e) => ({
+ }, k = async (e, t) => e && t.some((t) => e_(e, t)) ? e : await O() || e, A = (e = {}) => (Array.isArray(e?.files) ? e.files : []).map((e) => ({
filename: String(e?.filename || "").trim(),
subfolder: String(e?.subfolder || "").trim().replace(/\\/g, "/"),
type: String(e?.type || "").trim().toLowerCase()
@@ -16561,7 +16650,7 @@ function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplic
limit: 500
}), { timeoutMs: 3e4 });
if (!i?.ok) {
- if (Yg(i)) {
+ if (Zg(i)) {
if (r.length) {
await j(t, r);
return;
@@ -16646,12 +16735,12 @@ function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplic
let i = (S?.() || {})?.firstGroup;
i && Array.isArray(i.assets) && i.assets.length >= 2 ? (h("similarResults", i.assets), h("similarSourceAssetId", "duplicates"), h("similarTitle", R("search.duplicateResults", "Duplicates ({n} assets)", { n: i.assets.length })), await g?.setScope?.("similar")) : e(R("search.noKnownDuplicates", "No duplicate group is available yet. Run duplicate analysis from the duplicate alert first."), "info", 3200);
}, ee = async () => {
- let t = await k(await D(), ["source_node_id", "source_node_type"]), n = Qg(t, "source_node_id");
+ let t = await k(await D(), ["source_node_id", "source_node_type"]), n = e_(t, "source_node_id");
n ? await M({
sourceNodeId: n,
- sourceNodeType: Qg(t, "source_node_type"),
- jobId: Qg(t, "job_id"),
- title: Qg(t, "source_node_type") || n
+ sourceNodeType: e_(t, "source_node_type"),
+ jobId: e_(t, "job_id"),
+ title: e_(t, "source_node_type") || n
}) : e(R("search.noSourceNode", "Selected asset has no persisted source node id."), "info", 2600);
}, te = async () => {
try {
@@ -16659,7 +16748,7 @@ function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplic
} catch (e) {
console.debug?.(e);
}
- let t = Qg(await k(await D(), ["workflow_id"]), "workflow_id");
+ let t = e_(await k(await D(), ["workflow_id"]), "workflow_id");
if (!t) e(R("search.noWorkflowId", "Selected asset has no persisted workflow id."), "info", 2600);
else {
h("workflowId", t);
@@ -16692,8 +16781,8 @@ function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplic
};
F(r, N), F(i, P), F(a, ee), F(o, te), s?.addEventListener(V.OPEN_STACK_GROUP, async (t) => {
try {
- let n = t?.detail || {}, r = Array.isArray(n?.members) ? n.members : [], i = `Generation group (${r.length} assets)`, a = Xg(r, String(n?.title || "").trim() || i);
- a.truncated && e(`Large stack truncated to ${Jg}/${a.total} assets to keep the grid responsive.`, "warn", 5e3), h("similarResults", a.list), h("similarSourceAssetId", Zg(n)), h("similarTitle", a.title || i), await Promise.resolve(), await g?.setScope?.("similar");
+ let n = t?.detail || {}, r = Array.isArray(n?.members) ? n.members : [], i = `Generation group (${r.length} assets)`, a = Qg(r, String(n?.title || "").trim() || i);
+ a.truncated && e(`Large stack truncated to ${Xg}/${a.total} assets to keep the grid responsive.`, "warn", 5e3), h("similarResults", a.list), h("similarSourceAssetId", $g(n)), h("similarTitle", a.title || i), await Promise.resolve(), await g?.setScope?.("similar");
} catch (e) {
console.debug?.(e);
}
@@ -16716,7 +16805,7 @@ function $g({ similarBtn: t, similarPopover: n, similarFindBtn: r, similarDuplic
}
}
// ui/features/panel/panelPinnedFolders.ts
-function e_({ pinnedFoldersBtn: t, pinnedFoldersController: n = null, pinnedFoldersMenu: r = null, pinnedFoldersPopover: i, popovers: a, closeOtherPopovers: o, state: s, gridContainer: c, customSelect: l, scopeController: u, customRootsController: d, gridController: f, applyWatcherForScope: p, refreshDuplicateAlerts: m, notifyContextChanged: h, panelLifecycleAC: g }) {
+function n_({ pinnedFoldersBtn: t, pinnedFoldersController: n = null, pinnedFoldersMenu: r = null, pinnedFoldersPopover: i, popovers: a, closeOtherPopovers: o, state: s, gridContainer: c, customSelect: l, scopeController: u, customRootsController: d, gridController: f, applyWatcherForScope: p, refreshDuplicateAlerts: m, notifyContextChanged: h, panelLifecycleAC: g }) {
let _ = (e) => {
let t = String(e?.id || "").trim();
if (!t) return null;
@@ -16836,8 +16925,8 @@ function e_({ pinnedFoldersBtn: t, pinnedFoldersController: n = null, pinnedFold
}, { signal: g?.signal });
}
// ui/features/filters/calendar/AgendaCalendar.ts
-var t_ = (e) => String(e).padStart(2, "0");
-function n_(e) {
+var r_ = (e) => String(e).padStart(2, "0");
+function i_(e) {
try {
let t = String(e || "").trim();
if (!/^\d{4}-\d{2}-\d{2}$/.test(t)) return null;
@@ -16849,50 +16938,50 @@ function n_(e) {
return null;
}
}
-function r_(e) {
+function a_(e) {
try {
let t = e.getFullYear(), n = e.getMonth() + 1, r = e.getDate();
- return `${t}-${t_(n)}-${t_(r)}`;
+ return `${t}-${r_(n)}-${r_(r)}`;
} catch {
return "";
}
}
-function i_(e) {
+function o_(e) {
try {
- return `${e.getFullYear()}-${t_(e.getMonth() + 1)}`;
+ return `${e.getFullYear()}-${r_(e.getMonth() + 1)}`;
} catch {
return "";
}
}
-function a_(e) {
+function s_(e) {
try {
return new Date(e.getFullYear(), e.getMonth(), 1);
} catch {
return /* @__PURE__ */ new Date();
}
}
-function o_(e, t) {
+function c_(e, t) {
try {
return new Date(e.getFullYear(), e.getMonth() + t, 1);
} catch {
return /* @__PURE__ */ new Date();
}
}
-function s_(e) {
+function l_(e) {
try {
return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate();
} catch {
return 31;
}
}
-function c_(e) {
+function u_(e) {
try {
return (e.getDay() + 6) % 7;
} catch {
return 0;
}
}
-function l_(e, t) {
+function d_(e, t) {
if (e) try {
let n = String(e.value || "");
e.value = t || "", n !== e.value && e.dispatchEvent?.(new Event("change", { bubbles: !0 }));
@@ -16900,7 +16989,7 @@ function l_(e, t) {
console.debug?.(e);
}
}
-async function u_({ state: e, monthKey: t }) {
+async function f_({ state: e, monthKey: t }) {
try {
let n = String(e?.scope || "output");
if (n === "collection") return {
@@ -16939,7 +17028,7 @@ async function u_({ state: e, monthKey: t }) {
};
}
}
-function d_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = null } = {}) {
+function p_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = null } = {}) {
if (!e || !(e instanceof HTMLElement) || !t) return {
dispose() {},
refresh() {}
@@ -16962,7 +17051,7 @@ function d_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = n
d.type = "button", d.className = "mjr-btn mjr-agenda-clear", d.textContent = R("action.clear", "Clear");
let f = document.createElement("button");
f.type = "button", f.className = "mjr-btn mjr-agenda-refresh", f.textContent = R("action.refresh", "Refresh"), u.appendChild(d), u.appendChild(f), i.appendChild(a), i.appendChild(l), i.appendChild(u), e.appendChild(i);
- let p = a_(n_(t.value) || /* @__PURE__ */ new Date()), m = {}, h = 0, g = !1, _ = () => {
+ let p = s_(i_(t.value) || /* @__PURE__ */ new Date()), m = {}, h = 0, g = !1, _ = () => {
if (g) return;
let e = p.getFullYear(), n = p.getMonth();
s.textContent = p.toLocaleString(void 0, {
@@ -16982,13 +17071,13 @@ function d_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = n
let t = document.createElement("div");
t.className = "mjr-agenda-weekday", t.textContent = e, l.appendChild(t);
}
- let i = c_(new Date(e, n, 1)), a = s_(p), o = n_(t.value), c = o ? r_(o) : "";
+ let i = u_(new Date(e, n, 1)), a = l_(p), o = i_(t.value), c = o ? a_(o) : "";
for (let e = 0; e < i; e++) {
let e = document.createElement("div");
e.className = "mjr-agenda-day mjr-agenda-day--blank", l.appendChild(e);
}
for (let r = 1; r <= a; r++) {
- let i = r_(new Date(e, n, r)), a = Number(m?.[i] || 0) || 0, o = document.createElement("button");
+ let i = a_(new Date(e, n, r)), a = Number(m?.[i] || 0) || 0, o = document.createElement("button");
if (o.type = "button", o.className = "mjr-agenda-day", o.textContent = String(r), o.dataset.date = i, a > 0) {
o.classList.add("mjr-agenda-day--has-assets");
let e = R(a === 1 ? "tooltip.assetsDaySingular" : "tooltip.assetsDayPlural", a === 1 ? "{count} asset" : "{count} assets", { count: a });
@@ -16997,26 +17086,26 @@ function d_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = n
t.className = "mjr-agenda-day-badge", t.textContent = a > 99 ? "99+" : String(a), t.setAttribute("aria-label", e), o.appendChild(t);
} else o.title = R("tooltip.noAssetsDay", "No assets on this day");
i === c && o.classList.add("mjr-agenda-day--selected"), o.addEventListener("click", () => {
- l_(t, String(t.value || "").trim() === i ? "" : i);
+ d_(t, String(t.value || "").trim() === i ? "" : i);
}), l.appendChild(o);
}
}, v = async () => {
if (g) return;
- let e = i_(p);
+ let e = o_(p);
if (!e) return;
h += 1;
- let t = h, r = await u_({
+ let t = h, r = await f_({
state: n,
monthKey: e
});
g || t === h && (m = r.ok && r.days || {}, _());
};
return o.addEventListener("click", async () => {
- p = o_(p, -1), await v();
+ p = c_(p, -1), await v();
}), c.addEventListener("click", async () => {
- p = o_(p, 1), await v();
+ p = c_(p, 1), await v();
}), d.addEventListener("click", () => {
- l_(t, "");
+ d_(t, "");
try {
r?.();
} catch (e) {
@@ -17025,9 +17114,9 @@ function d_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = n
}), f.addEventListener("click", async () => {
await v();
}), t.addEventListener("change", () => {
- let e = n_(t.value);
+ let e = i_(t.value);
if (e) {
- let t = a_(e);
+ let t = s_(e);
(t.getFullYear() !== p.getFullYear() || t.getMonth() !== p.getMonth()) && (p = t);
}
_();
@@ -17044,14 +17133,14 @@ function d_({ container: e, hiddenInput: t, state: n, onRequestReloadGrid: r = n
};
}
// ui/features/panel/controllers/filtersController.ts
-var f_ = (e) => {
+var m_ = (e) => {
let t = String(e ?? "").trim();
if (!t) return 0;
let n = t.replace(",", "."), r = Number(n);
return Number.isFinite(r) ? r : 0;
};
-function p_({ state: e, kindSelect: t, wfCheckbox: n, workflowTypeSelect: r, workflowIdInput: i, workflowModelInput: a, workflowRunsOnSelect: o, ratingSelect: s, minSizeInput: c, maxSizeInput: l, resolutionPresetSelect: u, minWidthInput: d, minHeightInput: f, maxWidthInput: p, maxHeightInput: m, dateRangeSelect: h, dateExactInput: g, reloadGrid: _, reconcileSelection: v = null, onFiltersChanged: y = null, lifecycleSignal: b = null }) {
- let { write: x } = dh(e, [
+function h_({ state: e, kindSelect: t, wfCheckbox: n, workflowTypeSelect: r, workflowIdInput: i, workflowModelInput: a, workflowRunsOnSelect: o, ratingSelect: s, minSizeInput: c, maxSizeInput: l, resolutionPresetSelect: u, minWidthInput: d, minHeightInput: f, maxWidthInput: p, maxHeightInput: m, dateRangeSelect: h, dateExactInput: g, reloadGrid: _, reconcileSelection: v = null, onFiltersChanged: y = null, lifecycleSignal: b = null }) {
+ let { write: x } = ph(e, [
"kindFilter",
"workflowOnly",
"minRating",
@@ -17163,7 +17252,7 @@ function p_({ state: e, kindSelect: t, wfCheckbox: n, workflowTypeSelect: r, wor
C();
}, b ? { signal: b } : void 0);
let E = () => {
- let e = f_(c?.value || 0), t = f_(l?.value || 0), n = Number.isFinite(e) && e > 0 ? e : 0, r = Number.isFinite(t) && t > 0 ? t : 0;
+ let e = m_(c?.value || 0), t = m_(l?.value || 0), n = Number.isFinite(e) && e > 0 ? e : 0, r = Number.isFinite(t) && t > 0 ? t : 0;
r > 0 && n > 0 && r < n && (r = n, l && (l.value = String(r))), x("minSizeMB", n), x("maxSizeMB", r);
try {
y?.();
@@ -17174,7 +17263,7 @@ function p_({ state: e, kindSelect: t, wfCheckbox: n, workflowTypeSelect: r, wor
};
T(c, "change", E, b ? { signal: b } : void 0), T(l, "change", E, b ? { signal: b } : void 0);
let D = () => {
- let e = f_(d?.value || 0), t = f_(f?.value || 0), n = f_(p?.value || 0), r = f_(m?.value || 0), i = Number.isFinite(e) && e > 0 ? Math.round(e) : 0, a = Number.isFinite(t) && t > 0 ? Math.round(t) : 0, o = Number.isFinite(n) && n > 0 ? Math.round(n) : 0, s = Number.isFinite(r) && r > 0 ? Math.round(r) : 0;
+ let e = m_(d?.value || 0), t = m_(f?.value || 0), n = m_(p?.value || 0), r = m_(m?.value || 0), i = Number.isFinite(e) && e > 0 ? Math.round(e) : 0, a = Number.isFinite(t) && t > 0 ? Math.round(t) : 0, o = Number.isFinite(n) && n > 0 ? Math.round(n) : 0, s = Number.isFinite(r) && r > 0 ? Math.round(r) : 0;
o > 0 && i > 0 && o < i && (o = i, p && (p.value = String(o))), s > 0 && a > 0 && s < a && (s = a, m && (m.value = String(s))), x("minWidth", i), x("minHeight", a), x("maxWidth", o), x("maxHeight", s);
try {
u && (u.value = {
@@ -17258,7 +17347,7 @@ function p_({ state: e, kindSelect: t, wfCheckbox: n, workflowTypeSelect: r, wor
};
}
// ui/features/panel/panelFiltersInit.ts
-function m_({ state: e, hasVueHeaderSection: t, kindSelect: n, wfCheckbox: r, workflowTypeSelect: i, workflowIdInput: a, workflowModelInput: o, workflowRunsOnSelect: s, ratingSelect: c, minSizeInput: l, maxSizeInput: u, resolutionPresetSelect: d, minWidthInput: f, minHeightInput: p, maxWidthInput: m, maxHeightInput: h, dateRangeSelect: g, dateExactInput: _, agendaContainer: v, gridController: y, reconcileVisibleSelection: b, exitSimilarViewIfActive: x, notifyContextChanged: S, panelLifecycleAC: C, popovers: w = null, filterPopover: T = null }) {
+function g_({ state: e, hasVueHeaderSection: t, kindSelect: n, wfCheckbox: r, workflowTypeSelect: i, workflowIdInput: a, workflowModelInput: o, workflowRunsOnSelect: s, ratingSelect: c, minSizeInput: l, maxSizeInput: u, resolutionPresetSelect: d, minWidthInput: f, minHeightInput: p, maxWidthInput: m, maxHeightInput: h, dateRangeSelect: g, dateExactInput: _, agendaContainer: v, gridController: y, reconcileVisibleSelection: b, exitSimilarViewIfActive: x, notifyContextChanged: S, panelLifecycleAC: C, popovers: w = null, filterPopover: T = null }) {
let E = null;
try {
try {
@@ -17268,7 +17357,7 @@ function m_({ state: e, hasVueHeaderSection: t, kindSelect: n, wfCheckbox: r, wo
} catch (e) {
console.debug?.(e);
}
- E = d_({
+ E = p_({
container: v,
hiddenInput: _,
state: e,
@@ -17309,7 +17398,7 @@ function m_({ state: e, hasVueHeaderSection: t, kindSelect: n, wfCheckbox: r, wo
D = () => {
e &&= (clearTimeout(e), null);
};
- } else D = p_({
+ } else D = h_({
state: e,
kindSelect: n,
wfCheckbox: r,
@@ -17346,7 +17435,7 @@ function m_({ state: e, hasVueHeaderSection: t, kindSelect: n, wfCheckbox: r, wo
};
}
// ui/features/panel/panelContextMenuExtraActions.ts
-function h_({ state: t, scopeController: n, browserNav: r, gridController: i, getDuplicatesAlert: a, refreshDuplicateAlerts: o }) {
+function __({ state: t, scopeController: n, browserNav: r, gridController: i, getDuplicatesAlert: a, refreshDuplicateAlerts: o }) {
return {
clearSimilarScope: async () => {
try {
@@ -17396,15 +17485,15 @@ function h_({ state: t, scopeController: n, browserNav: r, gridController: i, ge
};
}
// ui/features/panel/panelRuntime.ts
-async function g_(e, { useComfyThemeUI: t = !0, external: n = {} } = {}) {
- return __(e, {
+async function v_(e, { useComfyThemeUI: t = !0, external: n = {} } = {}) {
+ return y_(e, {
useComfyThemeUI: t,
external: n
});
}
-async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
- Rp("panelRender"), Vp("panelRender");
- let i = typeof AbortController < "u" ? new AbortController() : null, { popovers: a, hostWrapper: o, hostWrapperPrevStyle: s } = Gg(t, { useComfyThemeUI: n }), c = uh();
+async function y_(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
+ Bp("panelRender"), Up("panelRender");
+ let i = typeof AbortController < "u" ? new AbortController() : null, { popovers: a, hostWrapper: o, hostWrapperPrevStyle: s } = qg(t, { useComfyThemeUI: n }), c = fh();
if (!c) throw Error("[Majoor] mountAssetsManagerPanelRuntime requires an active Pinia panel store");
for (let e of [
"statusSection",
@@ -17420,7 +17509,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
"gridContainer",
"sidebar"
]) if (!r?.[e]) throw Error(`[Majoor] mountAssetsManagerPanelRuntime now requires external.${e}`);
- let l = dh(null, [
+ let l = ph(null, [
"searchQuery",
"scrollTop",
"scope",
@@ -17515,11 +17604,11 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
} catch (e) {
console.debug?.(e);
}
- else t._mjrGridContextMenuUnbind = Ia({
+ else t._mjrGridContextMenuUnbind = Ra({
gridContainer: z,
getState: () => c
});
- let vt = R("search.findSimilar", "Find Similar"), yt = R("search.similarDisabled", "AI features are disabled in settings"), { applyWatcherForScope: bt, isAiEnabled: xt } = Kg({
+ let vt = R("search.findSimilar", "Find Similar"), yt = R("search.similarDisabled", "AI features are disabled in settings"), { applyWatcherForScope: bt, isAiEnabled: xt } = Jg({
container: t,
state: c,
sidebar: $e,
@@ -17542,7 +17631,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
console.debug?.(e);
}
t._mjrVersionUpdateCleanup = Ve || g._mjrVersionUpdateCleanup, t.appendChild(et);
- let St = () => fg(Ne), Ct = pg({
+ let St = () => mg(Ne), Ct = hg({
gridContainer: z,
loadAssets: lt,
loadAssetsFromList: ut,
@@ -17583,7 +17672,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
}
It();
};
- it || (Mt = Vg({
+ it || (Mt = Ug({
gridContainer: z,
readSelectedAssetIds: p,
readActiveAssetId: () => m(),
@@ -17593,7 +17682,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
rt(), Lt();
},
lifecycleSignal: i?.signal || null
- })), At = mg({
+ })), At = gg({
state: c,
gridContainer: z,
folderBreadcrumb: Ge,
@@ -17643,7 +17732,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
console.debug?.(e);
}
}, zt = null;
- qg({
+ Yg({
gridContainer: z,
panelLifecycleAC: i,
requestQueuedReload: () => {
@@ -17670,7 +17759,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
gridController: Ct,
registerSummaryDispose: ct
});
- let Bt = yg({
+ let Bt = xg({
state: c,
customSelect: E,
customRemoveBtn: O,
@@ -17722,7 +17811,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
console.debug?.(e);
}
};
- Tt = hg({
+ Tt = _g({
state: c,
tabButtons: _,
customMenuBtn: v,
@@ -17763,7 +17852,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
console.debug?.(e);
}
try {
- await Dm(Je, Ye, Xe, {
+ await km(Je, Ye, Xe, {
scope: d("scope", c.scope || "output"),
customRootId: d("customRootId", c.customRootId || "")
}, null, { signal: i?.signal || null });
@@ -17782,7 +17871,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
};
Object.values(_).forEach((e) => {
e.addEventListener("click", () => Tt.setScope(e.dataset.scope), { signal: i?.signal });
- }), lg({
+ }), dg({
messageBtn: C,
messagePopover: xe,
title: be,
@@ -17831,7 +17920,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
}, { signal: i?.signal }), x.addEventListener("click", (e) => {
e.stopPropagation(), a.close(T), a.close(k), a.close(pe), a.close(xe), a.close(Fe), a.toggle(ge, x);
}, { signal: i?.signal });
- let Kt = He ? null : bg({
+ let Kt = He ? null : Sg({
state: c,
sortBtn: b,
sortMenu: me,
@@ -17844,7 +17933,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
a.close(T), a.close(k), a.close(ge), a.close(xe), a.close(Fe);
} }) : b.addEventListener("click", (e) => {
e.stopPropagation(), a.close(T), a.close(k), a.close(ge), a.close(xe), a.close(Fe), a.toggle(pe, b);
- }, { signal: i?.signal }), $g({
+ }, { signal: i?.signal }), t_({
similarBtn: Pe,
similarPopover: Fe,
similarFindBtn: Ie,
@@ -17871,7 +17960,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
workflowIdInput: P,
reloadGrid: () => Ct.reloadGrid(),
getDuplicatesAlert: () => Dt
- }), e_({
+ }), n_({
pinnedFoldersBtn: S,
pinnedFoldersController: ve,
pinnedFoldersMenu: ye,
@@ -17891,7 +17980,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
notifyContextChanged: Lt,
panelLifecycleAC: i
});
- let { agendaCalendar: qt, disposeFilters: Yt } = m_({
+ let { agendaCalendar: qt, disposeFilters: Yt } = g_({
state: c,
hasVueHeaderSection: He,
kindSelect: A,
@@ -17918,7 +18007,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
panelLifecycleAC: i,
popovers: a,
filterPopover: k
- }), Xt = h_({
+ }), Xt = __({
state: c,
scopeController: Tt,
browserNav: At,
@@ -17927,7 +18016,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
refreshDuplicateAlerts: Rt
});
try {
- Et = vg({
+ Et = bg({
state: c,
gridContainer: z,
filterBtn: y,
@@ -18001,13 +18090,13 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
} catch (e) {
console.debug?.(e);
}
- B = Rg({
+ B = Bg({
gridContainer: z,
sidebar: $e,
createRatingBadge: ht,
createTagsBadge: Vt,
- showAssetInSidebar: Zm,
- closeSidebar: Qm,
+ showAssetInSidebar: $m,
+ closeSidebar: eh,
state: c
});
let Zt = {
@@ -18035,14 +18124,14 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
loadAssets: lt,
lifecycleSignal: i?.signal || null
};
- Nt = typeof r?.initAssetsQueryController == "function" ? r.initAssetsQueryController(Zt) : Wg({
+ Nt = typeof r?.initAssetsQueryController == "function" ? r.initAssetsQueryController(Zt) : Kg({
gridContainer: z,
gridWrapper: Qe,
...Zt
});
- let Qt = zg({
+ let Qt = Vg({
onTriggerScan: (e) => {
- ym(Je, Ye, Xe, e || {});
+ xm(Je, Ye, Xe, e || {});
},
onToggleDetails: () => {
B?.toggleDetails?.();
@@ -18075,7 +18164,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
scope: l.read("scope", c.scope),
customRootId: l.read("customRootId", c.customRootId)
})
- }), $t = Ua({
+ }), $t = Ga({
gridContainer: z,
createRatingBadge: ht
}), en = null;
@@ -18221,7 +18310,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
let tn = async () => {
await Nt?.queuedReload?.();
};
- Lm(Je, Ye, qe, Xe, Nt?.createCountersUpdateHandler?.({
+ zm(Je, Ye, qe, Xe, Nt?.createCountersUpdateHandler?.({
state: c,
getStableQuery: () => String(z?.dataset?.mjrQuery || "*").trim() || "*",
getRecentUserInteractionAt: () => Number(nt || 0)
@@ -18241,7 +18330,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
Gt({ reload: !1 }), Lt();
},
startSearchTimer: () => {
- Rp("searchQuery");
+ Bp("searchQuery");
},
reloadGrid: () => {
Ct.reloadGrid();
@@ -18251,7 +18340,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
try {
nn = await _t(z, {
scope: d("scope", c.scope || "output") || "output",
- query: String(fg(l.read("searchQuery", c.searchQuery || "*") || "*") || "*"),
+ query: String(mg(l.read("searchQuery", c.searchQuery || "*") || "*") || "*"),
customRootId: d("customRootId", c.customRootId || "") || "",
subfolder: d("currentFolderRelativePath", c.currentFolderRelativePath || "") || "",
collectionId: d("collectionId", c.collectionId || "") || "",
@@ -18283,7 +18372,7 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
} catch (e) {
console.debug?.(e);
}
- let an = Vf(), on = !an && (nn || rn) ? Promise.resolve({
+ let an = Uf(), on = !an && (nn || rn) ? Promise.resolve({
ok: !0,
hydrated: !!nn,
cached: !!rn
@@ -18322,13 +18411,13 @@ async function __(t, { useComfyThemeUI: n = !0, external: r = {} } = {}) {
} catch (e) {
console.debug?.(e);
}
- return Wp(zp("panelRender", "gridRender") ?? 0), { gridContainer: z };
+ return Kp(Vp("panelRender", "gridRender") ?? 0), { gridContainer: z };
}
// ui/vue/components/status/StatusSection.vue
-var v_ = /* @__PURE__ */ lr({
+var b_ = /* @__PURE__ */ lr({
__name: "StatusSection",
setup(e, { expose: t }) {
- let n = vm({ getScanContext: null }), r = n.querySelector("#mjr-status-dot"), i = n.querySelector("#mjr-status-text"), a = n.querySelector("#mjr-status-capabilities");
+ let n = bm({ getScanContext: null }), r = n.querySelector("#mjr-status-dot"), i = n.querySelector("#mjr-status-text"), a = n.querySelector("#mjr-status-capabilities");
return tr(() => {
try {
n?._mjrStatusPollDispose?.();
@@ -18340,25 +18429,25 @@ var v_ = /* @__PURE__ */ lr({
capabilitiesSection: a
}), (e, t) => null;
}
-}), y_ = xr({
+}), x_ = xr({
open: !1,
initial: null,
resolve: null
});
-function b_(e = {}) {
- return y_.open = !0, y_.initial = e || {}, new Promise((e) => {
- y_.resolve = e;
+function S_(e = {}) {
+ return x_.open = !0, x_.initial = e || {}, new Promise((e) => {
+ x_.resolve = e;
});
}
-function x_(e = null) {
- let t = y_.resolve;
- y_.open = !1, y_.initial = null, y_.resolve = null, t && t(e);
+function C_(e = null) {
+ let t = x_.resolve;
+ x_.open = !1, x_.initial = null, x_.resolve = null, t && t(e);
}
// ui/vue/components/panel/SimilarSearchPopover.vue?vue&type=script&setup=true&lang.ts
-var S_ = {
+var w_ = {
class: "mjr-popover mjr-similar-popover",
style: { display: "none" }
-}, C_ = { class: "mjr-menu mjr-similar-menu" }, w_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, T_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, E_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, D_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, O_ = /* @__PURE__ */ lr({
+}, T_ = { class: "mjr-menu mjr-similar-menu" }, E_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, D_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, O_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, k_ = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, A_ = /* @__PURE__ */ lr({
__name: "SimilarSearchPopover",
setup(e, { expose: t }) {
let n = Q(null), r = Q(null), i = Q(null), a = Q(null), o = (e) => e?.$el || e || null;
@@ -18377,7 +18466,7 @@ var S_ = {
}
}), (e, t) => {
let o = rr("MButton");
- return q(), X("div", S_, [U("div", C_, [
+ return q(), X("div", w_, [U("div", T_, [
Y(o, {
ref_key: "findSimilarBtnRef",
ref: n,
@@ -18387,7 +18476,7 @@ var S_ = {
text: "",
title: Z(R)("search.findSimilarWarning", "Find similar assets. This may be heavy on very large libraries.")
}, {
- default: W(() => [U("span", w_, [t[0] ||= U("i", {
+ default: W(() => [U("span", E_, [t[0] ||= U("i", {
class: "pi pi-sparkles",
"aria-hidden": "true"
}, null, -1), U("span", null, J(Z(R)("search.findSimilar", "Find Similar")), 1)])]),
@@ -18401,7 +18490,7 @@ var S_ = {
severity: "secondary",
text: ""
}, {
- default: W(() => [U("span", T_, [t[1] ||= U("i", {
+ default: W(() => [U("span", D_, [t[1] ||= U("i", {
class: "pi pi-clone",
"aria-hidden": "true"
}, null, -1), U("span", null, J(Z(R)("search.findDuplicates", "Find Duplicate")), 1)])]),
@@ -18416,7 +18505,7 @@ var S_ = {
severity: "secondary",
text: ""
}, {
- default: W(() => [U("span", E_, [t[2] ||= U("i", {
+ default: W(() => [U("span", O_, [t[2] ||= U("i", {
class: "pi pi-share-alt",
"aria-hidden": "true"
}, null, -1), U("span", null, J(Z(R)("search.generatedWithSameSaveNode", "Generated with same save node")), 1)])]),
@@ -18430,7 +18519,7 @@ var S_ = {
severity: "secondary",
text: ""
}, {
- default: W(() => [U("span", D_, [t[3] ||= U("i", {
+ default: W(() => [U("span", k_, [t[3] ||= U("i", {
class: "pi pi-sitemap",
"aria-hidden": "true"
}, null, -1), U("span", null, J(Z(R)("search.generatedFromSameWorkflow", "Generated from same workflow")), 1)])]),
@@ -18439,11 +18528,11 @@ var S_ = {
])]);
};
}
-}), k_ = { class: "mjr-am-search-pill" }, A_ = ["id"], j_ = { class: "mjr-am-search-tools" }, M_ = { class: "mjr-popover-anchor" }, N_ = { class: "mjr-popover-anchor" }, P_ = "Ctrl/Cmd+F, Ctrl/Cmd+K, Ctrl/Cmd+H", F_ = "AND", I_ = /* @__PURE__ */ lr({
+}), j_ = { class: "mjr-am-search-pill" }, M_ = ["id"], N_ = { class: "mjr-am-search-tools" }, P_ = { class: "mjr-popover-anchor" }, F_ = { class: "mjr-popover-anchor" }, I_ = "Ctrl/Cmd+F, Ctrl/Cmd+K, Ctrl/Cmd+H", L_ = "AND", R_ = /* @__PURE__ */ lr({
__name: "SearchBar",
emits: ["search-change"],
setup(e, { expose: t, emit: n }) {
- let r = n, i = lh(), a = Q(null), o = Q(null), s = Q(null), c = Q(null), l = Q(null), u = Q(null), d = lt("mjr-search-autocomplete-", 8), f = (e) => e?.$el || e || null, p = () => f(o.value), m = Q(!1), h = Q(!0), g = Q(F_), _ = null, v = null, y = K(() => m.value ? R("search.semanticPlaceholder", "Describe what you're looking for...") : R("search.placeholder", "Search assets...")), b = K(() => m.value ? Bt(R("search.semanticTitle", "AI semantic search — describe your image in natural language"), P_) : Bt(R("search.title", "Search by filename, tags, or attributes (e.g. rating:5, ext:png)"), P_)), x = K(() => m.value ? {
+ let r = n, i = dh(), a = Q(null), o = Q(null), s = Q(null), c = Q(null), l = Q(null), u = Q(null), d = lt("mjr-search-autocomplete-", 8), f = (e) => e?.$el || e || null, p = () => f(o.value), m = Q(!1), h = Q(!0), g = Q(L_), _ = null, v = null, y = K(() => m.value ? R("search.semanticPlaceholder", "Describe what you're looking for...") : R("search.placeholder", "Search assets...")), b = K(() => m.value ? Bt(R("search.semanticTitle", "AI semantic search — describe your image in natural language"), I_) : Bt(R("search.title", "Search by filename, tags, or attributes (e.g. rating:5, ext:png)"), I_)), x = K(() => m.value ? {
background: "rgba(0, 188, 212, 0.2)",
borderColor: "rgba(0, 188, 212, 0.6)",
color: "#00BCD4",
@@ -18480,7 +18569,7 @@ var S_ = {
}
}, T = async (e) => {
let t = e.target?.value || "";
- i.searchQuery = t, i.metadataSearchMode = F_, S(), C({ query: t }), await j();
+ i.searchQuery = t, i.metadataSearchMode = L_, S(), C({ query: t }), await j();
}, E = (e) => {
let t = String(e || "").split(/\s+/);
return t[t.length - 1] || "";
@@ -18534,11 +18623,11 @@ var S_ = {
}), or(m, () => {
S();
}), or(() => i.metadataSearchMode, (e) => {
- String(e || "").toUpperCase() !== F_ && (i.metadataSearchMode = F_), g.value !== F_ && (g.value = F_), S();
+ String(e || "").toUpperCase() !== L_ && (i.metadataSearchMode = L_), g.value !== L_ && (g.value = L_), S();
}), kr(() => {
try {
let e = p();
- e && (e.value = i.searchQuery || ""), i.metadataSearchMode = F_;
+ e && (e.value = i.searchQuery || ""), i.metadataSearchMode = L_;
} catch (e) {
console.debug?.(e);
}
@@ -18580,7 +18669,7 @@ var S_ = {
ref_key: "searchSectionRef",
ref: a,
class: "mjr-am-search"
- }, [U("div", k_, [
+ }, [U("div", j_, [
t[0] ||= U("span", { class: "mjr-am-search-icon" }, [U("i", { class: "pi pi-search" })], -1),
Y(n, {
ref_key: "searchInputRef",
@@ -18601,9 +18690,9 @@ var S_ = {
ref_key: "dataListRef",
ref: s,
id: Z(d)
- }, null, 8, A_)
- ]), U("div", j_, [
- U("div", M_, [Y(r, {
+ }, null, 8, M_)
+ ]), U("div", N_, [
+ U("div", P_, [Y(r, {
ref_key: "semanticBtnRef",
ref: u,
type: "button",
@@ -18625,7 +18714,7 @@ var S_ = {
"title",
"style"
])]),
- U("div", N_, [Y(r, {
+ U("div", F_, [Y(r, {
ref_key: "similarBtnRef",
ref: c,
type: "button",
@@ -18637,7 +18726,7 @@ var S_ = {
}, {
default: W(() => [...t[2] ||= [U("i", { class: "pi pi-search" }, null, -1)]]),
_: 1
- }, 8, ["title"]), Y(O_, {
+ }, 8, ["title"]), Y(A_, {
ref_key: "similarPopoverRef",
ref: l
}, null, 512)]),
@@ -18648,13 +18737,13 @@ var S_ = {
])], 512);
};
}
-}), L_ = {
+}), z_ = {
class: "mjr-popover mjr-sort-popover",
style: { display: "none" }
-}, R_ = { class: "mjr-menu-item-label" }, z_ = /* @__PURE__ */ lr({
+}, B_ = { class: "mjr-menu-item-label" }, V_ = /* @__PURE__ */ lr({
__name: "SortPopover",
setup(e) {
- let t = lh(), n = K(() => t.sort || "mtime_desc"), r = (e) => {
+ let t = dh(), n = K(() => t.sort || "mtime_desc"), r = (e) => {
t.sort = e;
try {
window.dispatchEvent(new CustomEvent("mjr:sort-changed", { detail: { sort: e } }));
@@ -18704,12 +18793,12 @@ var S_ = {
})));
return (e, t) => {
let r = rr("MMenu");
- return q(), X("div", L_, [Y(r, {
+ return q(), X("div", z_, [Y(r, {
model: i.value,
class: "mjr-menu mjr-prime-menu mjr-sort-menu",
pt: { list: { class: "mjr-menu mjr-prime-menu-list" } }
}, {
- item: W(({ item: e }) => [U("div", { class: wr(["mjr-menu-item", { "is-active": n.value === e.key }]) }, [U("span", R_, J(e.label), 1), U("i", {
+ item: W(({ item: e }) => [U("div", { class: wr(["mjr-menu-item", { "is-active": n.value === e.key }]) }, [U("span", B_, J(e.label), 1), U("i", {
class: wr([e.icon, "mjr-menu-item-check"]),
style: yr({ opacity: +(n.value === e.key) })
}, null, 6)], 2)]),
@@ -18717,19 +18806,19 @@ var S_ = {
}, 8, ["model"])]);
};
}
-}), B_ = { class: "mjr-popover mjr-filter-popover mjr-popover--hidden" }, V_ = { class: "mjr-filter-head" }, H_ = { class: "mjr-filter-head-left" }, U_ = { class: "mjr-filter-kicker" }, W_ = { class: "mjr-filter-subtitle" }, G_ = { class: "mjr-filter-head-actions" }, K_ = { class: "mjr-filter-active-count" }, q_ = { class: "mjr-filter-group-title" }, J_ = {
+}), H_ = { class: "mjr-popover mjr-filter-popover mjr-popover--hidden" }, U_ = { class: "mjr-filter-head" }, W_ = { class: "mjr-filter-head-left" }, G_ = { class: "mjr-filter-kicker" }, K_ = { class: "mjr-filter-subtitle" }, q_ = { class: "mjr-filter-head-actions" }, J_ = { class: "mjr-filter-active-count" }, Y_ = { class: "mjr-filter-group-title" }, X_ = {
class: "mjr-filter-group-chevron",
"aria-hidden": "true"
-}, Y_ = { class: "mjr-filter-group-body" }, X_ = { class: "mjr-filter-card" }, Z_ = { class: "mjr-popover-row" }, Q_ = { class: "mjr-popover-label" }, $_ = { class: "mjr-popover-row" }, ev = { class: "mjr-popover-label" }, tv = ["title"], nv = { class: "mjr-filter-card" }, rv = { class: "mjr-popover-row" }, iv = { class: "mjr-popover-label" }, av = { class: "mjr-popover-row" }, ov = { class: "mjr-popover-label" }, sv = { class: "mjr-popover-row" }, cv = { class: "mjr-popover-label" }, lv = { class: "mjr-filter-stack" }, uv = { class: "mjr-popover-row" }, dv = { class: "mjr-popover-label" }, fv = { class: "mjr-popover-row" }, pv = { class: "mjr-popover-label" }, mv = { class: "mjr-filter-group-title" }, hv = {
+}, Z_ = { class: "mjr-filter-group-body" }, Q_ = { class: "mjr-filter-card" }, $_ = { class: "mjr-popover-row" }, ev = { class: "mjr-popover-label" }, tv = { class: "mjr-popover-row" }, nv = { class: "mjr-popover-label" }, rv = ["title"], iv = { class: "mjr-filter-card" }, av = { class: "mjr-popover-row" }, ov = { class: "mjr-popover-label" }, sv = { class: "mjr-popover-row" }, cv = { class: "mjr-popover-label" }, lv = { class: "mjr-popover-row" }, uv = { class: "mjr-popover-label" }, dv = { class: "mjr-filter-stack" }, fv = { class: "mjr-popover-row" }, pv = { class: "mjr-popover-label" }, mv = { class: "mjr-popover-row" }, hv = { class: "mjr-popover-label" }, gv = { class: "mjr-filter-group-title" }, _v = {
class: "mjr-filter-group-chevron",
"aria-hidden": "true"
-}, gv = { class: "mjr-filter-group-body" }, _v = { class: "mjr-filter-card" }, vv = { class: "mjr-popover-row mjr-popover-row--3col" }, yv = { class: "mjr-popover-label" }, bv = { class: "mjr-popover-row" }, xv = { class: "mjr-popover-label" }, Sv = { class: "mjr-popover-row mjr-popover-row--3col" }, Cv = { class: "mjr-popover-label" }, wv = { class: "mjr-popover-row mjr-popover-row--3col" }, Tv = { class: "mjr-popover-label" }, Ev = { class: "mjr-filter-group-title" }, Dv = {
+}, vv = { class: "mjr-filter-group-body" }, yv = { class: "mjr-filter-card" }, bv = { class: "mjr-popover-row mjr-popover-row--3col" }, xv = { class: "mjr-popover-label" }, Sv = { class: "mjr-popover-row" }, Cv = { class: "mjr-popover-label" }, wv = { class: "mjr-popover-row mjr-popover-row--3col" }, Tv = { class: "mjr-popover-label" }, Ev = { class: "mjr-popover-row mjr-popover-row--3col" }, Dv = { class: "mjr-popover-label" }, Ov = { class: "mjr-filter-group-title" }, kv = {
class: "mjr-filter-group-chevron",
"aria-hidden": "true"
-}, Ov = { class: "mjr-filter-group-body" }, kv = { class: "mjr-filter-card mjr-filter-card--agenda" }, Av = { class: "mjr-popover-row" }, jv = { class: "mjr-popover-label" }, Mv = { class: "mjr-popover-row" }, Nv = { class: "mjr-popover-label" }, Pv = /* @__PURE__ */ lr({
+}, Av = { class: "mjr-filter-group-body" }, jv = { class: "mjr-filter-card mjr-filter-card--agenda" }, Mv = { class: "mjr-popover-row" }, Nv = { class: "mjr-popover-label" }, Pv = { class: "mjr-popover-row" }, Fv = { class: "mjr-popover-label" }, Iv = /* @__PURE__ */ lr({
__name: "FilterPopover",
setup(e, { expose: t }) {
- let n = lh(), r = Q(null), a = Q(null), o = Q(null), s = Q(null), c = Q(null), l = Q(null), u = Q(null), d = Q(null), f = Q(null), p = Q(null), m = Q([{
+ let n = dh(), r = Q(null), a = Q(null), o = Q(null), s = Q(null), c = Q(null), l = Q(null), u = Q(null), d = Q(null), f = Q(null), p = Q(null), m = Q([{
label: R("filter.any", "Any"),
value: ""
}]), h = (e) => e?.$el || e || null, g = (e) => h(e.value)?.value || "", _ = (e, t) => {
@@ -19094,8 +19183,8 @@ var S_ = {
}
}), (e, t) => {
let i = rr("MButton"), m = rr("MSelect"), h = rr("MCheckbox"), g = rr("MInputText");
- return q(), X("div", B_, [
- U("div", V_, [U("div", H_, [U("div", U_, J(Z(R)("label.filters", "Filters")), 1), U("div", W_, J(Z(R)("label.refineResults", "Refine your results")), 1)]), U("div", G_, [U("span", K_, J(ve.value), 1), Y(i, {
+ return q(), X("div", H_, [
+ U("div", U_, [U("div", W_, [U("div", G_, J(Z(R)("label.filters", "Filters")), 1), U("div", K_, J(Z(R)("label.refineResults", "Refine your results")), 1)]), U("div", q_, [U("span", J_, J(ve.value), 1), Y(i, {
type: "button",
class: "mjr-filter-clear-all",
severity: "secondary",
@@ -19114,9 +19203,9 @@ var S_ = {
"aria-expanded": String(se("core")),
onClick: t[0] ||= (e) => oe("core")
}, {
- default: W(() => [U("span", q_, J(Z(R)("group.core", "Core")), 1), U("span", J_, J(se("core") ? "▾" : "▸"), 1)]),
+ default: W(() => [U("span", Y_, J(Z(R)("group.core", "Core")), 1), U("span", X_, J(se("core") ? "▾" : "▸"), 1)]),
_: 1
- }, 8, ["aria-expanded"]), hr(U("div", Y_, [U("div", X_, [U("div", Z_, [U("div", Q_, J(Z(R)("label.type")), 1), Y(m, {
+ }, 8, ["aria-expanded"]), hr(U("div", Z_, [U("div", Q_, [U("div", $_, [U("div", ev, J(Z(R)("label.type")), 1), Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
title: Z(R)("tooltip.filterByFileType", "Filter by file type"),
@@ -19129,7 +19218,7 @@ var S_ = {
"title",
"model-value",
"options"
- ])]), U("div", $_, [U("div", ev, J(Z(R)("label.workflow")), 1), U("label", {
+ ])]), U("div", tv, [U("div", nv, J(Z(R)("label.workflow")), 1), U("label", {
class: "mjr-popover-toggle",
title: Z(R)("tooltip.filterWorkflowOnly", "Show only assets with embedded workflow data")
}, [Y(h, {
@@ -19137,8 +19226,8 @@ var S_ = {
"model-value": !!Z(n).workflowOnly,
binary: "",
"onUpdate:modelValue": M
- }, null, 8, ["model-value"]), U("span", null, J(Z(R)("filter.onlyWithWorkflow")), 1)], 8, tv)])]), U("div", nv, [
- U("div", rv, [U("div", iv, J(Z(R)("label.workflowType", "Workflow type")), 1), Y(m, {
+ }, null, 8, ["model-value"]), U("span", null, J(Z(R)("filter.onlyWithWorkflow")), 1)], 8, rv)])]), U("div", iv, [
+ U("div", av, [U("div", ov, J(Z(R)("label.workflowType", "Workflow type")), 1), Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
"model-value": String(Z(n).workflowType || "").trim().toUpperCase(),
@@ -19147,7 +19236,7 @@ var S_ = {
"option-value": "value",
"onUpdate:modelValue": N
}, null, 8, ["model-value", "options"])]),
- U("div", av, [U("div", ov, J(Z(R)("label.sameWorkflow", "Generated with Same Workflow")), 1), Y(g, {
+ U("div", sv, [U("div", cv, J(Z(R)("label.sameWorkflow", "Generated with Same Workflow")), 1), Y(g, {
ref_key: "workflowIdInputRef",
ref: f,
class: "mjr-input",
@@ -19161,7 +19250,7 @@ var S_ = {
"placeholder",
"model-value"
])]),
- U("div", sv, [U("div", cv, J(Z(R)("label.workflowModelFamily", "Model family")), 1), U("div", lv, [Y(m, {
+ U("div", lv, [U("div", uv, J(Z(R)("label.workflowModelFamily", "Model family")), 1), U("div", dv, [Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
"model-value": String(Z(n).workflowModelFilter || ""),
@@ -19178,7 +19267,7 @@ var S_ = {
"onUpdate:modelValue": ee,
onChange: t[2] ||= (e) => ee(e?.target?.value)
}, null, 8, ["placeholder", "model-value"])])]),
- U("div", uv, [U("div", dv, J(Z(R)("label.workflowRunsOn", "Runs on")), 1), Y(m, {
+ U("div", fv, [U("div", pv, J(Z(R)("label.workflowRunsOn", "Runs on")), 1), Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
"model-value": String(Z(n).workflowRunsOnFilter || "").trim().toLowerCase(),
@@ -19187,7 +19276,7 @@ var S_ = {
"option-value": "value",
"onUpdate:modelValue": te
}, null, 8, ["model-value", "options"])]),
- U("div", fv, [U("div", pv, J(Z(R)("label.rating")), 1), Y(m, {
+ U("div", mv, [U("div", hv, J(Z(R)("label.rating")), 1), Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
title: Z(R)("tooltip.filterMinRating", "Filter by minimum rating"),
@@ -19210,11 +19299,11 @@ var S_ = {
"aria-expanded": String(se("media")),
onClick: t[3] ||= (e) => oe("media")
}, {
- default: W(() => [U("span", mv, J(Z(R)("group.media", "Media")), 1), U("span", hv, J(se("media") ? "▾" : "▸"), 1)]),
+ default: W(() => [U("span", gv, J(Z(R)("group.media", "Media")), 1), U("span", _v, J(se("media") ? "▾" : "▸"), 1)]),
_: 1
- }, 8, ["aria-expanded"]), hr(U("div", gv, [U("div", _v, [
- U("div", vv, [
- U("div", yv, J(Z(R)("label.fileSizeMB", "File size (MB)")), 1),
+ }, 8, ["aria-expanded"]), hr(U("div", vv, [U("div", yv, [
+ U("div", bv, [
+ U("div", xv, J(Z(R)("label.fileSizeMB", "File size (MB)")), 1),
Y(g, {
ref_key: "minSizeInputRef",
ref: r,
@@ -19238,7 +19327,7 @@ var S_ = {
onChange: I
}, null, 8, ["placeholder", "value"])
]),
- U("div", bv, [U("div", xv, J(Z(R)("label.resolutionPx", "Resolution (px)")), 1), Y(m, {
+ U("div", Sv, [U("div", Cv, J(Z(R)("label.resolutionPx", "Resolution (px)")), 1), Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
"model-value": E.value,
@@ -19247,8 +19336,8 @@ var S_ = {
"option-value": "value",
"onUpdate:modelValue": re
}, null, 8, ["model-value", "options"])]),
- U("div", Sv, [
- U("div", Cv, J(Z(R)("label.resolutionMinWxH", "Min WxH (px)")), 1),
+ U("div", wv, [
+ U("div", Tv, J(Z(R)("label.resolutionMinWxH", "Min WxH (px)")), 1),
Y(g, {
ref_key: "minWidthInputRef",
ref: o,
@@ -19282,8 +19371,8 @@ var S_ = {
"value"
])
]),
- U("div", wv, [
- U("div", Tv, J(Z(R)("label.resolutionMaxWxH", "Max WxH (px)")), 1),
+ U("div", Ev, [
+ U("div", Dv, J(Z(R)("label.resolutionMaxWxH", "Max WxH (px)")), 1),
Y(g, {
ref_key: "maxWidthInputRef",
ref: c,
@@ -19326,9 +19415,9 @@ var S_ = {
"aria-expanded": String(se("time")),
onClick: t[4] ||= (e) => oe("time")
}, {
- default: W(() => [U("span", Ev, J(Z(R)("group.time", "Time")), 1), U("span", Dv, J(se("time") ? "▾" : "▸"), 1)]),
+ default: W(() => [U("span", Ov, J(Z(R)("group.time", "Time")), 1), U("span", kv, J(se("time") ? "▾" : "▸"), 1)]),
_: 1
- }, 8, ["aria-expanded"]), hr(U("div", Ov, [U("div", kv, [U("div", Av, [U("div", jv, J(Z(R)("label.dateRange")), 1), Y(m, {
+ }, 8, ["aria-expanded"]), hr(U("div", Av, [U("div", jv, [U("div", Mv, [U("div", Nv, J(Z(R)("label.dateRange")), 1), Y(m, {
class: "mjr-select mjr-filter-select",
"panel-class": "mjr-filter-select-panel",
title: Z(R)("tooltip.filterByDateRange", "Filter by date range"),
@@ -19341,7 +19430,7 @@ var S_ = {
"title",
"model-value",
"options"
- ])]), U("div", Mv, [U("div", Nv, J(Z(R)("label.agenda")), 1), U("div", {
+ ])]), U("div", Pv, [U("div", Fv, J(Z(R)("label.agenda")), 1), U("div", {
ref_key: "agendaContainerRef",
ref: u,
class: "mjr-agenda-container"
@@ -19356,7 +19445,7 @@ var S_ = {
]);
};
}
-}), Fv = 128, Iv = Object.freeze([
+}), Lv = 128, Rv = Object.freeze([
{
key: "portraits",
label: "Portraits",
@@ -19394,10 +19483,10 @@ var S_ = {
iconClass: "pi pi-circle"
}
]);
-function Lv(e) {
+function zv(e) {
try {
let t = String(e ?? "").trim();
- if (!t || t.length > Fv || t.includes("\0")) return "";
+ if (!t || t.length > Lv || t.includes("\0")) return "";
for (let e = 0; e < t.length; e += 1) {
let n = t.charCodeAt(e);
if (n <= 31 || n === 127) return "";
@@ -19407,7 +19496,7 @@ function Lv(e) {
return "";
}
}
-function Rv(e) {
+function Bv(e) {
if (!e || typeof e != "object") return null;
let t = String(e.filepath || "").trim();
return t ? {
@@ -19419,10 +19508,10 @@ function Rv(e) {
root_id: String(e.root_id || e.rootId || e.custom_root_id || "").trim() || void 0
} : null;
}
-function zv(e) {
+function Vv(e) {
let t = [], n = [], r = /* @__PURE__ */ new Set();
for (let i of Array.isArray(e) ? e : []) {
- let e = Rv(i);
+ let e = Bv(i);
if (e?.filepath) {
let n = e.filepath.toLowerCase();
if (r.has(n)) continue;
@@ -19437,7 +19526,7 @@ function zv(e) {
missingIds: n
};
}
-async function Bv(e) {
+async function Hv(e) {
let t = Array.from(new Set((Array.isArray(e) ? e : []).map((e) => Number(e)).filter((e) => Number.isFinite(e) && e > 0)));
if (!t.length) return {
ok: !0,
@@ -19448,13 +19537,13 @@ async function Bv(e) {
ok: !1,
error: String(n?.error || "Failed to fetch assets")
};
- let { assets: r } = zv(Array.isArray(n?.data) ? n.data : Array.isArray(n?.data?.assets) ? n.data.assets : []);
+ let { assets: r } = Vv(Array.isArray(n?.data) ? n.data : Array.isArray(n?.data?.assets) ? n.data.assets : []);
return {
ok: !0,
data: r
};
}
-function Vv(e) {
+function Uv(e) {
let t = String(e?.label || "").trim();
if (t && !/^group\b/i.test(t)) return t;
let n = (Array.isArray(e?.dominant_tags) ? e.dominant_tags : []).map((e) => String(e || "").trim()).filter(Boolean);
@@ -19472,7 +19561,7 @@ function Vv(e) {
let s = Object.entries(o).sort((e, t) => t[1] - e[1])[0]?.[0] || "other", c = s === "image" ? "Images" : s === "video" ? "Videos" : s === "audio" ? "Audio" : "Media", l = Number(e?.cluster_id), u = Number.isFinite(l) ? ` ${l + 1}` : "";
return a ? `${a} - ${c}` : `${c} Cluster${u}`;
}
-function Hv() {
+function Wv() {
try {
return !!(Jt()?.ai?.vectorSearchEnabled ?? !0);
} catch {
@@ -19480,35 +19569,35 @@ function Hv() {
}
}
// ui/vue/components/panel/CollectionsPopover.vue?vue&type=script&setup=true&lang.ts
-var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-item-label" }, Gv = { class: "mjr-menu-item-label" }, Kv = { class: "mjr-menu-item-right" }, qv = {
+var Gv = { class: "mjr-menu mjr-collections-menu" }, Kv = { class: "mjr-menu-item-label" }, qv = { class: "mjr-menu-item-label" }, Jv = { class: "mjr-menu-item-right" }, Yv = {
key: 0,
class: "mjr-menu-item-hint"
-}, Jv = {
+}, Xv = {
key: 1,
class: "mjr-muted"
-}, Yv = {
+}, Zv = {
key: 2,
class: "mjr-state-block is-error"
-}, Xv = {
+}, Qv = {
key: 3,
class: "mjr-muted"
-}, Zv = { class: "mjr-collection-row" }, Qv = { class: "mjr-menu-item-label" }, $v = { class: "mjr-menu-item-right" }, ey = {
+}, $v = { class: "mjr-collection-row" }, ey = { class: "mjr-menu-item-label" }, ty = { class: "mjr-menu-item-right" }, ny = {
key: 0,
class: "mjr-menu-item-hint"
-}, ty = { class: "mjr-state-block" }, ny = { class: "mjr-section-title mjr-section-title--cyan" }, ry = { class: "mjr-section-hint" }, iy = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, ay = { class: "mjr-section-title mjr-section-title--violet" }, oy = { class: "mjr-section-hint" }, sy = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, cy = {
+}, ry = { class: "mjr-state-block" }, iy = { class: "mjr-section-title mjr-section-title--cyan" }, ay = { class: "mjr-section-hint" }, oy = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, sy = { class: "mjr-section-title mjr-section-title--violet" }, cy = { class: "mjr-section-hint" }, ly = { class: "mjr-menu-item-label mjr-menu-item-label--icon" }, uy = {
key: 0,
class: "mjr-state-block is-error"
-}, ly = { class: "mjr-cluster-thumbs" }, uy = ["src", "alt"], dy = { class: "mjr-cluster-info" }, fy = ["title"], py = { class: "mjr-cluster-count" }, my = "mjr:collections-changed", hy = /* @__PURE__ */ lr({
+}, dy = { class: "mjr-cluster-thumbs" }, fy = ["src", "alt"], py = { class: "mjr-cluster-info" }, my = ["title"], hy = { class: "mjr-cluster-count" }, gy = "mjr:collections-changed", _y = /* @__PURE__ */ lr({
__name: "CollectionsPopover",
setup(t, { expose: n }) {
- let r = lh(), i = Q(null), a = Q([]), o = Q(!1), s = Q(""), c = Q(!1), l = Q(!0), u = Q(!1), p = Q(!1), m = Q(!1), h = Q([]), g = Q(""), _ = Q(""), v = 0, y = null, b = !1, x = K(() => String(r.collectionId || "").trim()), C = K(() => String(r.collectionName || "").trim()), T = K(() => !!x.value), O = K(() => !l.value || p.value), k = K(() => l.value && u.value), A = K(() => `${Math.max(1, Math.min(a.value.length, 6)) * 48}px`);
+ let r = dh(), i = Q(null), a = Q([]), o = Q(!1), s = Q(""), c = Q(!1), l = Q(!0), u = Q(!1), p = Q(!1), m = Q(!1), h = Q([]), g = Q(""), _ = Q(""), v = 0, y = null, b = !1, x = K(() => String(r.collectionId || "").trim()), C = K(() => String(r.collectionName || "").trim()), T = K(() => !!x.value), O = K(() => !l.value || p.value), k = K(() => l.value && u.value), A = K(() => `${Math.max(1, Math.min(a.value.length, 6)) * 48}px`);
function j() {
let e = i.value;
return !!e && String(e.style.display || "").toLowerCase() !== "none";
}
function M({ collectionId: e = x.value, collectionName: t = C.value, close: n = !0, reload: r = !0 } = {}) {
try {
- window.dispatchEvent(new CustomEvent(my, { detail: {
+ window.dispatchEvent(new CustomEvent(gy, { detail: {
collectionId: String(e || ""),
collectionName: String(t || ""),
close: n !== !1,
@@ -19526,7 +19615,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}
}
async function P() {
- if (!Hv()) return {
+ if (!Wv()) return {
enabled: !1,
vectorAvailable: !1,
vectorDisabled: !1
@@ -19583,7 +19672,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
let I = F("create", async () => {
let t = await wt(R("dialog.createCollection", "Create collection"), R("dialog.collectionPlaceholder", "Collection name"));
if (!t) return;
- let n = Lv(t);
+ let n = zv(t);
if (!n) {
e(R("toast.invalidCollectionName", "Invalid collection name"), "error");
return;
@@ -19629,9 +19718,9 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
if (!i) return;
let a = await d(String(t?.query || ""), 50);
if (a?.ok && Array.isArray(a?.data) && a.data.length > 0) {
- let t = zv(a.data), r = t.assets;
+ let t = Vv(a.data), r = t.assets;
if (t.missingIds.length) {
- let e = await Bv(t.missingIds);
+ let e = await Hv(t.missingIds);
e.ok && Array.isArray(e.data) && (r = ee(r, e.data));
}
if (r.length) {
@@ -19677,7 +19766,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}
h.value = t.data.map((e) => ({
...e,
- _label: Vv(e)
+ _label: Uv(e)
}));
} catch (t) {
console.error("[Majoor] Discover groups failed:", t), g.value = R("toast.clusterAnalysisFailed", "Cluster analysis failed"), e(R("toast.clusterAnalysisFailed", "Cluster analysis failed"), "error");
@@ -19691,7 +19780,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
if (!_.value) {
_.value = n;
try {
- let n = String(t?._label || Vv(t) || "").trim();
+ let n = String(t?._label || Uv(t) || "").trim();
if (!n) return;
let r = await S(n);
if (!r?.ok) {
@@ -19700,7 +19789,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}
let i = String(r?.data?.id || ""), a = Array.isArray(t?.all_asset_ids) ? t.all_asset_ids : [];
if (i && a.length) {
- let t = await Bv(a);
+ let t = await Hv(a);
if (!t.ok) {
e(t.error || R("toast.failedLoadClusterAssets", "Failed to load cluster assets"), "error");
return;
@@ -19750,7 +19839,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
ref: i,
class: "mjr-popover mjr-collections-popover",
style: { display: "none" }
- }, [U("div", Uv, [
+ }, [U("div", Gv, [
Y(n, {
type: "button",
class: "mjr-menu-item",
@@ -19759,7 +19848,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
disabled: _.value !== "",
onClick: Z(I)
}, {
- default: W(() => [U("span", Wv, J(Z(R)("ctx.createCollection", "Create collection")), 1), t[0] ||= U("i", { class: "pi pi-plus mjr-menu-item-check mjr-menu-item-check--visible" }, null, -1)]),
+ default: W(() => [U("span", Kv, J(Z(R)("ctx.createCollection", "Create collection")), 1), t[0] ||= U("i", { class: "pi pi-plus mjr-menu-item-check mjr-menu-item-check--visible" }, null, -1)]),
_: 1
}, 8, ["disabled", "onClick"]),
T.value ? (q(), nr(n, {
@@ -19771,11 +19860,11 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
disabled: _.value !== "",
onClick: Z(ne)
}, {
- default: W(() => [U("span", Gv, J(Z(R)("ctx.exitCollection", "Exit collection")), 1), U("span", Kv, [C.value ? (q(), X("span", qv, J(C.value), 1)) : G("", !0), t[1] ||= U("i", { class: "pi pi-times mjr-menu-item-check mjr-menu-item-check--visible" }, null, -1)])]),
+ default: W(() => [U("span", qv, J(Z(R)("ctx.exitCollection", "Exit collection")), 1), U("span", Jv, [C.value ? (q(), X("span", Yv, J(C.value), 1)) : G("", !0), t[1] ||= U("i", { class: "pi pi-times mjr-menu-item-check mjr-menu-item-check--visible" }, null, -1)])]),
_: 1
}, 8, ["disabled", "onClick"])) : G("", !0),
t[9] ||= U("div", { class: "mjr-menu-divider" }, null, -1),
- o.value ? (q(), X("div", Jv, J(Z(R)("label.loading", "Loading...")), 1)) : s.value ? (q(), X("div", Yv, J(s.value), 1)) : a.value.length ? (q(), nr(r, {
+ o.value ? (q(), X("div", Xv, J(Z(R)("label.loading", "Loading...")), 1)) : s.value ? (q(), X("div", Zv, J(s.value), 1)) : a.value.length ? (q(), nr(r, {
key: 4,
items: a.value,
"item-size": 48,
@@ -19783,7 +19872,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"num-tolerated-items": 4,
class: "mjr-collections-virtual-list"
}, {
- item: W(({ item: e }) => [U("div", Zv, [Y(n, {
+ item: W(({ item: e }) => [U("div", $v, [Y(n, {
type: "button",
class: wr(["mjr-menu-item", { "is-active": x.value === String(e.id || "") }]),
severity: "secondary",
@@ -19791,7 +19880,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
disabled: _.value !== "",
onClick: (t) => Z(re)(e)
}, {
- default: W(() => [U("span", Qv, J(e.name || e.id), 1), U("span", $v, [Number(e.count || 0) ? (q(), X("span", ey, J(Number(e.count || 0)), 1)) : G("", !0), t[2] ||= U("i", { class: "pi pi-check mjr-menu-item-check" }, null, -1)])]),
+ default: W(() => [U("span", ey, J(e.name || e.id), 1), U("span", ty, [Number(e.count || 0) ? (q(), X("span", ny, J(Number(e.count || 0)), 1)) : G("", !0), t[2] ||= U("i", { class: "pi pi-check mjr-menu-item-check" }, null, -1)])]),
_: 2
}, 1032, [
"class",
@@ -19814,13 +19903,13 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"onClick"
])])]),
_: 1
- }, 8, ["items", "scroll-height"])) : (q(), X("div", Xv, J(Z(R)("msg.noCollections", "No collections yet")), 1)),
- !c.value && O.value ? (q(), X(H, { key: 5 }, [t[4] ||= U("div", { class: "mjr-menu-divider" }, null, -1), U("div", ty, J(l.value ? "AI Smart Collections are disabled (enable vector search env var)." : "AI Smart Collections are disabled in settings."), 1)], 64)) : G("", !0),
+ }, 8, ["items", "scroll-height"])) : (q(), X("div", Qv, J(Z(R)("msg.noCollections", "No collections yet")), 1)),
+ !c.value && O.value ? (q(), X(H, { key: 5 }, [t[4] ||= U("div", { class: "mjr-menu-divider" }, null, -1), U("div", ry, J(l.value ? "AI Smart Collections are disabled (enable vector search env var)." : "AI Smart Collections are disabled in settings."), 1)], 64)) : G("", !0),
!c.value && k.value ? (q(), X(H, { key: 6 }, [
t[7] ||= U("div", { class: "mjr-menu-divider" }, null, -1),
- U("div", ny, J(Z(R)("label.smartSuggestions", "Smart Suggestions")), 1),
- U("div", ry, J(Z(R)("label.smartCollectionsHint", "Create collections from AI-detected themes")), 1),
- (q(!0), X(H, null, pr(Z(Iv), (e) => (q(), nr(n, {
+ U("div", iy, J(Z(R)("label.smartSuggestions", "Smart Suggestions")), 1),
+ U("div", ay, J(Z(R)("label.smartCollectionsHint", "Create collections from AI-detected themes")), 1),
+ (q(!0), X(H, null, pr(Z(Rv), (e) => (q(), nr(n, {
key: e.key,
type: "button",
class: "mjr-menu-item mjr-menu-item--smart",
@@ -19829,12 +19918,12 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
disabled: _.value !== "",
onClick: (t) => oe(e)
}, {
- default: W(() => [U("span", iy, [U("i", { class: wr(e.iconClass) }, null, 2), U("span", null, J(e.label), 1)]), t[5] ||= U("i", { class: "pi pi-plus mjr-menu-item-check mjr-menu-item-check--visible" }, null, -1)]),
+ default: W(() => [U("span", oy, [U("i", { class: wr(e.iconClass) }, null, 2), U("span", null, J(e.label), 1)]), t[5] ||= U("i", { class: "pi pi-plus mjr-menu-item-check mjr-menu-item-check--visible" }, null, -1)]),
_: 2
}, 1032, ["disabled", "onClick"]))), 128)),
t[8] ||= U("div", { class: "mjr-menu-divider" }, null, -1),
- U("div", ay, J(Z(R)("label.discoverGroups", "Discover Groups")), 1),
- U("div", oy, J(Z(R)("label.discoverGroupsHint", "AI clusters assets by visual similarity")), 1),
+ U("div", sy, J(Z(R)("label.discoverGroups", "Discover Groups")), 1),
+ U("div", cy, J(Z(R)("label.discoverGroupsHint", "AI clusters assets by visual similarity")), 1),
Y(n, {
type: "button",
class: "mjr-menu-item mjr-menu-item--cluster",
@@ -19843,25 +19932,25 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
disabled: m.value || _.value !== "",
onClick: se
}, {
- default: W(() => [U("span", sy, [t[6] ||= U("i", { class: "pi pi-search" }, null, -1), U("span", null, J(m.value ? Z(R)("label.analyzing", "Analyzing...") : Z(R)("label.analyzeLibrary", "Analyze library")), 1)])]),
+ default: W(() => [U("span", ly, [t[6] ||= U("i", { class: "pi pi-search" }, null, -1), U("span", null, J(m.value ? Z(R)("label.analyzing", "Analyzing...") : Z(R)("label.analyzeLibrary", "Analyze library")), 1)])]),
_: 1
}, 8, ["disabled"]),
- g.value ? (q(), X("div", cy, J(g.value), 1)) : G("", !0),
+ g.value ? (q(), X("div", uy, J(g.value), 1)) : G("", !0),
(q(!0), X(H, null, pr(h.value, (e) => (q(), X("div", {
key: e.cluster_id,
class: "mjr-cluster-row"
}, [
- U("div", ly, [(q(!0), X(H, null, pr(Array.isArray(e.sample_assets) ? e.sample_assets.slice(0, 3) : [], (t, n) => (q(), X("img", {
+ U("div", dy, [(q(!0), X(H, null, pr(Array.isArray(e.sample_assets) ? e.sample_assets.slice(0, 3) : [], (t, n) => (q(), X("img", {
key: `${e.cluster_id}-${n}`,
class: "mjr-cluster-thumb",
src: N(t),
alt: String(t?.filename || e._label || ""),
loading: "lazy"
- }, null, 8, uy))), 128))]),
- U("div", dy, [U("div", {
+ }, null, 8, fy))), 128))]),
+ U("div", py, [U("div", {
class: "mjr-cluster-name",
title: e._label
- }, J(e._label), 9, fy), U("div", py, J(Number(e.size || 0)) + " " + J(Z(R)("label.assets", "assets")), 1)]),
+ }, J(e._label), 9, my), U("div", hy, J(Number(e.size || 0)) + " " + J(Z(R)("label.assets", "assets")), 1)]),
Y(n, {
type: "button",
class: "mjr-cluster-create-btn",
@@ -19882,16 +19971,16 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
])], 512);
};
}
-}), gy = { class: "mjr-popover mjr-pinned-folders-popover mjr-popover--hidden" }, _y = {
+}), vy = { class: "mjr-popover mjr-pinned-folders-popover mjr-popover--hidden" }, yy = {
key: 0,
class: "mjr-muted mjr-pinned-folders-empty"
-}, vy = {
+}, by = {
key: 1,
class: "mjr-muted mjr-pinned-folders-empty"
-}, yy = { class: "mjr-pinned-folder-label" }, by = {
+}, xy = { class: "mjr-pinned-folder-label" }, Sy = {
key: 0,
class: "mjr-menu-item-hint mjr-pinned-folder-path"
-}, xy = /* @__PURE__ */ lr({
+}, Cy = /* @__PURE__ */ lr({
__name: "PinnedFoldersPopover",
setup(e, { expose: t }) {
let n = Q(null), r = Q([]), i = Q(!1), a = Q("No pinned folders"), o = Q("Loading..."), s = Q("Unpin folder"), c = Q(null), l = Q(null);
@@ -19923,12 +20012,12 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
setPinnedFoldersLoading: f
}), (e, t) => {
let c = rr("MButton");
- return q(), X("div", gy, [U("div", {
+ return q(), X("div", vy, [U("div", {
ref_key: "menuRef",
ref: n,
class: "mjr-menu mjr-pinned-folders-menu",
role: "menu"
- }, [i.value ? (q(), X("div", _y, J(o.value), 1)) : r.value.length ? (q(!0), X(H, { key: 2 }, pr(r.value, (e) => (q(), X("div", {
+ }, [i.value ? (q(), X("div", yy, J(o.value), 1)) : r.value.length ? (q(!0), X(H, { key: 2 }, pr(r.value, (e) => (q(), X("div", {
key: e.id,
class: "mjr-pinned-folder-row"
}, [Y(c, {
@@ -19938,7 +20027,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
severity: "secondary",
onClick: (t) => p(e)
}, {
- default: W(() => [U("span", yy, J(e.label), 1), e.path ? (q(), X("span", by, J(e.path), 1)) : G("", !0)]),
+ default: W(() => [U("span", xy, J(e.label), 1), e.path ? (q(), X("span", Sy, J(e.path), 1)) : G("", !0)]),
_: 2
}, 1032, ["onClick"]), Y(c, {
type: "button",
@@ -19958,13 +20047,13 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"title",
"aria-label",
"onClick"
- ])]))), 128)) : (q(), X("div", vy, J(a.value), 1))], 512)]);
+ ])]))), 128)) : (q(), X("div", by, J(a.value), 1))], 512)]);
};
}
-}), Sy = {
+}), wy = {
class: "mjr-popover mjr-custom-popover",
style: { display: "none" }
-}, Cy = { class: "mjr-popover-row" }, wy = { class: "mjr-popover-label" }, Ty = { class: "mjr-popover-row mjr-popover-row--actions" }, Ey = /* @__PURE__ */ lr({
+}, Ty = { class: "mjr-popover-row" }, Ey = { class: "mjr-popover-label" }, Dy = { class: "mjr-popover-row mjr-popover-row--actions" }, Oy = /* @__PURE__ */ lr({
__name: "CustomRootsPopover",
setup(e, { expose: t }) {
let n = Q([{
@@ -20048,7 +20137,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}
}), (e, t) => {
let s = rr("MSelect"), c = rr("MButton");
- return q(), X("div", Sy, [U("div", Cy, [U("div", wy, J(Z(R)("label.folder")), 1), Y(s, {
+ return q(), X("div", wy, [U("div", Ty, [U("div", Ey, J(Z(R)("label.folder")), 1), Y(s, {
class: "mjr-select",
"model-value": r.value,
options: n.value,
@@ -20060,7 +20149,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"model-value",
"options",
"disabled"
- ])]), U("div", Ty, [Y(c, {
+ ])]), U("div", Dy, [Y(c, {
ref_key: "customAddBtnRef",
ref: a,
type: "button",
@@ -20082,10 +20171,10 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}, 512)])]);
};
}
-}), Dy = ["aria-label"], Oy = { class: "mjr-messages-head" }, ky = { class: "mjr-messages-actions" }, Ay = ["title"], jy = { class: "mjr-messages-star-label" }, My = {
+}), ky = ["aria-label"], Ay = { class: "mjr-messages-head" }, jy = { class: "mjr-messages-actions" }, My = ["title"], Ny = { class: "mjr-messages-star-label" }, Py = {
class: "mjr-messages-tabs",
role: "tablist"
-}, Ny = { class: "mjr-messages-panels" }, Py = { class: "mjr-messages-empty" }, Fy = "https://github.com/MajoorWaldi/ComfyUI-Majoor-AssetsManager", Iy = /* @__PURE__ */ lr({
+}, Fy = { class: "mjr-messages-panels" }, Iy = { class: "mjr-messages-empty" }, Ly = "https://github.com/MajoorWaldi/ComfyUI-Majoor-AssetsManager", Ry = /* @__PURE__ */ lr({
__name: "MessagePopover",
setup(e, { expose: t }) {
let n = Q(null), r = Q(null), i = Q(null), a = Q(null), o = Q(null), s = Q(null), c = Q(null), l = Q(null), u = Q(null), d = Q(null), f = Q(null), p = (e) => e?.$el || e || null;
@@ -20150,12 +20239,12 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}
}, {
default: W(() => [
- U("div", Oy, [U("div", {
+ U("div", Ay, [U("div", {
ref_key: "titleRef",
ref: n,
class: "mjr-messages-title"
- }, J(Z(R)("label.messages", "Messages")), 513), U("div", ky, [U("a", {
- href: Fy,
+ }, J(Z(R)("label.messages", "Messages")), 513), U("div", jy, [U("a", {
+ href: Ly,
target: "_blank",
rel: "noopener noreferrer",
class: "mjr-btn mjr-messages-star-link",
@@ -20163,7 +20252,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}, [t[0] ||= U("span", {
class: "mjr-messages-star-icon",
"aria-hidden": "true"
- }, "★", -1), U("span", jy, J(Z(R)("btn.giveStar", "Give a star")), 1)], 8, Ay), Y(p, {
+ }, "★", -1), U("span", Ny, J(Z(R)("btn.giveStar", "Give a star")), 1)], 8, My), Y(p, {
ref_key: "markReadBtnRef",
ref: r,
type: "button",
@@ -20174,7 +20263,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
default: W(() => [er(J(Z(R)("btn.markAllRead", "Mark all read")), 1)]),
_: 1
}, 8, ["title"])])]),
- U("div", My, [
+ U("div", Py, [
Y(p, {
ref_key: "messageTabBtnRef",
ref: i,
@@ -20243,7 +20332,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
_: 1
}, 512)
]),
- U("div", Ny, [
+ U("div", Fy, [
U("div", {
ref_key: "messageListRef",
ref: u,
@@ -20251,7 +20340,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
id: "mjr-messages-panel",
role: "tabpanel",
"aria-labelledby": "mjr-messages-tab"
- }, [U("div", Py, J(Z(R)("msg.noMessages", "No messages for now.")), 1)], 512),
+ }, [U("div", Iy, J(Z(R)("msg.noMessages", "No messages for now.")), 1)], 512),
U("div", {
ref_key: "historyPanelRef",
ref: d,
@@ -20273,13 +20362,13 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
])
]),
_: 1
- })], 8, Dy);
+ })], 8, ky);
};
}
-}), Ly = { class: "mjr-am-header-row" }, Ry = { class: "mjr-am-header-left" }, zy = { class: "mjr-am-header-title" }, By = ["data-mjr-version-channel", "title"], Vy = { class: "mjr-tabs" }, Hy = { class: "mjr-am-header-tools" }, Uy = {
+}), zy = { class: "mjr-am-header-row" }, By = { class: "mjr-am-header-left" }, Vy = { class: "mjr-am-header-title" }, Hy = ["data-mjr-version-channel", "title"], Uy = { class: "mjr-tabs" }, Wy = { class: "mjr-am-header-tools" }, Gy = {
class: "mjr-popover-anchor",
style: { display: "none" }
-}, Wy = { class: "mjr-popover-anchor" }, Gy = { class: "mjr-popover-anchor" }, Ky = { class: "mjr-popover-anchor" }, qy = { class: "mjr-popover-anchor" }, Jy = { class: "mjr-popover-anchor" }, Yy = "mjr-am-version-badge-label", Xy = "V", Zy = /* @__PURE__ */ lr({
+}, Ky = { class: "mjr-popover-anchor" }, qy = { class: "mjr-popover-anchor" }, Jy = { class: "mjr-popover-anchor" }, Yy = { class: "mjr-popover-anchor" }, Xy = { class: "mjr-popover-anchor" }, Zy = "mjr-am-version-badge-label", Qy = "V", $y = /* @__PURE__ */ lr({
__name: "HeaderSection",
setup(n, { expose: r }) {
let i = null;
@@ -20317,7 +20406,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
rating_desc: "pi pi-star-fill",
size_desc: "pi pi-sort-numeric-down-alt",
size_asc: "pi pi-sort-numeric-up-alt"
- }, l = lh(), u = s() === "nightly", d = Q(null), f = Q(null), p = Q(null), m = Q(null), h = Q(null), g = Q(null), _ = Q(null), y = Q(null), b = Q(null), x = Q(null), S = Q(null), C = Q(null), w = Q(null), T = Q(null), E = Q(null), D = Q(null), O = Q(null), k = Q(null), A = Q(null), j = Q(null), M = Q(null), N = Q(null), P = Q(null), ee = Q(null), te = Q(null), F = Q(null), I = (e) => e?.$el || e || null, ne = Q(u ? "nightly" : "v?"), ie = Q(u ? "nightly" : "stable"), ae = Q(!1), oe = Q(!1), se = K(() => c[l.sort] ?? "pi pi-sort-amount-down"), ce = K(() => String(l.viewScope || l.scope || "output").toLowerCase()), le = K(() => ce.value === "similar" || Array.isArray(l.similarResults) && l.similarResults.length > 0 || !!l.similarTitle), ue = K(() => {
+ }, l = dh(), u = s() === "nightly", d = Q(null), f = Q(null), p = Q(null), m = Q(null), h = Q(null), g = Q(null), _ = Q(null), y = Q(null), b = Q(null), x = Q(null), S = Q(null), C = Q(null), w = Q(null), T = Q(null), E = Q(null), D = Q(null), O = Q(null), k = Q(null), A = Q(null), j = Q(null), M = Q(null), N = Q(null), P = Q(null), ee = Q(null), te = Q(null), F = Q(null), I = (e) => e?.$el || e || null, ne = Q(u ? "nightly" : "v?"), ie = Q(u ? "nightly" : "stable"), ae = Q(!1), oe = Q(!1), se = K(() => c[l.sort] ?? "pi pi-sort-amount-down"), ce = K(() => String(l.viewScope || l.scope || "output").toLowerCase()), le = K(() => ce.value === "similar" || Array.isArray(l.similarResults) && l.similarResults.length > 0 || !!l.similarTitle), ue = K(() => {
let e = String(l.similarSourceAssetId || "");
return e.startsWith("stack:") || e.startsWith("duplicates:") || e.startsWith("group:") || e.startsWith("node:") ? "group" : "similar";
}), de = K(() => ue.value === "group" ? R("tab.group", "Group") : R("tab.similar", "Similar")), fe = K(() => ue.value === "group" ? R("tooltip.tab.group", "Browse current grouped assets") : R("tooltip.tab.similar", "Browse current similar findings")), pe = {
@@ -20359,7 +20448,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
e(R("toast.workflowSerializeFailed", "Could not read the current ComfyUI workflow."), "error");
return;
}
- let r = await b_({
+ let r = await S_({
workflow: n,
name: String(n?.name || n?.title || "workflow").trim()
}), i = String(r?.name || "").trim();
@@ -20490,7 +20579,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}
function Ee() {
try {
- Lt(I(y.value), he.value, Xy);
+ Lt(I(y.value), he.value, Qy);
} catch (e) {
console.debug?.(e);
}
@@ -20722,12 +20811,12 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
ref_key: "headerRef",
ref: d,
class: "mjr-am-header"
- }, [U("div", Ly, [U("div", Ry, [
+ }, [U("div", zy, [U("div", By, [
t[2] ||= U("i", {
class: "mjr-am-header-icon pi pi-folder",
"aria-hidden": "true"
}, null, -1),
- U("div", zy, J(Z(R)("manager.title")), 1),
+ U("div", Vy, J(Z(R)("manager.title")), 1),
U("a", {
href: "https://ko-fi.com/majoorwaldi",
target: "_blank",
@@ -20738,12 +20827,12 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
style: yr(me.value),
onMouseenter: t[0] ||= (e) => ae.value = !0,
onMouseleave: t[1] ||= (e) => ae.value = !1
- }, [U("span", { class: wr(Yy) }, J(ne.value), 1)], 44, By)
+ }, [U("span", { class: wr(Zy) }, J(ne.value), 1)], 44, Hy)
]), U("div", {
ref_key: "headerActionsRef",
ref: f,
class: "mjr-am-header-actions"
- }, [U("div", Vy, [
+ }, [U("div", Uy, [
Y(n, {
ref_key: "tabAllRef",
ref: M,
@@ -20827,7 +20916,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"style",
"title"
])
- ]), U("div", Hy, [
+ ]), U("div", Wy, [
ce.value === "workflow" ? (q(), nr(n, {
key: 0,
ref_key: "saveWorkflowBtnRef",
@@ -20892,7 +20981,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
style: { display: "none" },
onChange: Se
}, null, 544),
- U("div", Uy, [Y(n, {
+ U("div", Gy, [Y(n, {
ref_key: "customMenuBtnRef",
ref: p,
type: "button",
@@ -20908,7 +20997,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"aria-hidden": "true"
}, null, -1)]]),
_: 1
- }, 8, ["title", "aria-label"]), Y(Ey, {
+ }, 8, ["title", "aria-label"]), Y(Oy, {
ref_key: "customPopoverRef",
ref: A
}, null, 512)]),
@@ -20934,7 +21023,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"title",
"aria-label"
]),
- U("div", Wy, [Y(n, {
+ U("div", Ky, [Y(n, {
ref_key: "messageBtnRef",
ref: b,
type: "button",
@@ -20954,7 +21043,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"aria-hidden": "true"
}, null, -1)]]),
_: 1
- }, 8, ["title", "aria-label"]), Y(Iy, {
+ }, 8, ["title", "aria-label"]), Y(Ry, {
ref_key: "messagePopoverRef",
ref: j
}, null, 512)]),
@@ -20976,11 +21065,11 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}, null, -1)]]),
_: 1
}, 8, ["title", "aria-label"])
- ])], 512)])], 512), Y(I_, {
+ ])], 512)])], 512), Y(R_, {
ref_key: "searchBarRef",
ref: T
}, {
- "filter-anchor": W(() => [U("div", Gy, [Y(n, {
+ "filter-anchor": W(() => [U("div", qy, [Y(n, {
ref_key: "filterBtnRef",
ref: m,
type: "button",
@@ -20996,11 +21085,11 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"aria-hidden": "true"
}, null, -1)]]),
_: 1
- }, 8, ["title", "aria-label"]), Y(Pv, {
+ }, 8, ["title", "aria-label"]), Y(Iv, {
ref_key: "filterPopoverRef",
ref: D
}, null, 512)])]),
- "sort-anchor": W(() => [U("div", Ky, [Y(n, {
+ "sort-anchor": W(() => [U("div", Jy, [Y(n, {
ref_key: "sortBtnRef",
ref: h,
type: "button",
@@ -21016,11 +21105,11 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"aria-hidden": "true"
}, null, 2)]),
_: 1
- }, 8, ["title", "aria-label"]), Y(z_, {
+ }, 8, ["title", "aria-label"]), Y(V_, {
ref_key: "sortPopoverRef",
ref: E
}, null, 512)])]),
- "collections-anchor": W(() => [U("div", qy, [Y(n, {
+ "collections-anchor": W(() => [U("div", Yy, [Y(n, {
ref_key: "collectionsBtnRef",
ref: g,
type: "button",
@@ -21036,11 +21125,11 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"aria-hidden": "true"
}, null, -1)]]),
_: 1
- }, 8, ["title", "aria-label"]), Y(hy, {
+ }, 8, ["title", "aria-label"]), Y(_y, {
ref_key: "collectionsPopoverRef",
ref: O
}, null, 512)])]),
- "pinned-folders-anchor": W(() => [U("div", Jy, [Y(n, {
+ "pinned-folders-anchor": W(() => [U("div", Xy, [Y(n, {
ref_key: "pinnedFoldersBtnRef",
ref: _,
type: "button",
@@ -21056,7 +21145,7 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
"aria-hidden": "true"
}, null, -1)]]),
_: 1
- }, 8, ["title", "aria-label"]), Y(xy, {
+ }, 8, ["title", "aria-label"]), Y(Cy, {
ref_key: "pinnedFoldersPopoverRef",
ref: k
}, null, 512)])]),
@@ -21064,20 +21153,20 @@ var Uv = { class: "mjr-menu mjr-collections-menu" }, Wv = { class: "mjr-menu-ite
}, 512)], 64);
};
}
-}), Qy = (e) => {
+}), eb = (e) => {
try {
return String(e ?? "");
} catch {
return "";
}
-}, $y = (e) => {
+}, tb = (e) => {
let t = String(e || "");
return R(t === "name_asc" ? "sort.nameAZ" : t === "name_desc" ? "sort.nameZA" : t === "mtime_asc" ? "sort.oldest" : "sort.newest");
-}, eb = (e) => {
+}, nb = (e) => {
let t = String(e || "").toLowerCase();
return t === "similar" ? R("scope.similar", "Similar") : t === "custom" ? R("scope.customBrowser") : t === "workflow" ? R("scope.workflow", "Workflow") : R(t === "all" ? "tab.all" : t === "input" || t === "inputs" ? "scope.input" : "scope.output");
};
-function tb({ label: e, value: t, onClear: n } = {}) {
+function rb({ label: e, value: t, onClear: n } = {}) {
let r = document.createElement("div");
r.className = "mjr-context-pill";
let i = document.createElement("span");
@@ -21098,69 +21187,69 @@ function tb({ label: e, value: t, onClear: n } = {}) {
}
return r;
}
-function nb() {
+function ib() {
let e = document.createElement("div");
return e.className = "mjr-am-context-pills", {
wrap: e,
update: ({ state: t, rawQuery: n = "", actions: r = null } = {}) => {
- let i = r && typeof r == "object" ? r : {}, a = Qy(n || "").trim(), o = a.length > 0 && a !== "*", s = !!(Qy(t?.kindFilter || "").trim() || t?.workflowOnly || (Number(t?.minRating || 0) || 0) > 0 || (Number(t?.minSizeMB || 0) || 0) > 0 || (Number(t?.maxSizeMB || 0) || 0) > 0 || (Number(t?.minWidth || 0) || 0) > 0 || (Number(t?.minHeight || 0) || 0) > 0 || (Number(t?.maxWidth || 0) || 0) > 0 || (Number(t?.maxHeight || 0) || 0) > 0 || Qy(t?.workflowType || "").trim() || Qy(t?.workflowId || "").trim() || Qy(t?.workflowModelFilter || "").trim() || Qy(t?.workflowRunsOnFilter || "").trim() || Qy(t?.dateRangeFilter || "").trim() || Qy(t?.dateExactFilter || "").trim()), c = Qy(t?.sort || "mtime_desc").trim() !== "mtime_desc", l = Qy(t?.collectionId || "").trim().length > 0, u = String(t?.viewScope || t?.scope || "output").toLowerCase(), d = u === "similar", f = u === "custom", p = u !== "output", m = Qy(t?.similarSourceAssetId || "").trim();
+ let i = r && typeof r == "object" ? r : {}, a = eb(n || "").trim(), o = a.length > 0 && a !== "*", s = !!(eb(t?.kindFilter || "").trim() || t?.workflowOnly || (Number(t?.minRating || 0) || 0) > 0 || (Number(t?.minSizeMB || 0) || 0) > 0 || (Number(t?.maxSizeMB || 0) || 0) > 0 || (Number(t?.minWidth || 0) || 0) > 0 || (Number(t?.minHeight || 0) || 0) > 0 || (Number(t?.maxWidth || 0) || 0) > 0 || (Number(t?.maxHeight || 0) || 0) > 0 || eb(t?.workflowType || "").trim() || eb(t?.workflowId || "").trim() || eb(t?.workflowModelFilter || "").trim() || eb(t?.workflowRunsOnFilter || "").trim() || eb(t?.dateRangeFilter || "").trim() || eb(t?.dateExactFilter || "").trim()), c = eb(t?.sort || "mtime_desc").trim() !== "mtime_desc", l = eb(t?.collectionId || "").trim().length > 0, u = String(t?.viewScope || t?.scope || "output").toLowerCase(), d = u === "similar", f = u === "custom", p = u !== "output", m = eb(t?.similarSourceAssetId || "").trim();
if (o || s || c || l || p || d || e.childElementCount) {
try {
e.replaceChildren();
} catch (e) {
console.debug?.(e);
}
- if (!f && l && e.appendChild(tb({
+ if (!f && l && e.appendChild(rb({
label: R("label.collections"),
- value: Qy(t?.collectionName || t?.collectionId || "").trim(),
+ value: eb(t?.collectionName || t?.collectionId || "").trim(),
onClear: () => i?.clearCollection?.()
- })), d && e.appendChild(tb({
+ })), d && e.appendChild(rb({
label: R("search.findSimilar", "Find Similar"),
value: m ? R("search.similarReference", "Reference #{id}", { id: m }) : R("scope.similar", "Similar"),
onClear: () => i?.clearSimilarScope?.()
- })), p && e.appendChild(tb({
+ })), p && e.appendChild(rb({
label: R("label.scope"),
- value: eb(u || "output"),
+ value: nb(u || "output"),
onClear: () => d ? i?.clearSimilarScope?.() : i?.clearScope?.()
- })), o && e.appendChild(tb({
+ })), o && e.appendChild(rb({
label: R("label.query"),
value: a,
onClear: () => i?.clearQuery?.()
- })), Qy(t?.kindFilter || "").trim() && e.appendChild(tb({
+ })), eb(t?.kindFilter || "").trim() && e.appendChild(rb({
label: R("label.type"),
- value: Qy(t?.kindFilter || "").trim(),
+ value: eb(t?.kindFilter || "").trim(),
onClear: () => i?.clearKind?.()
- })), Number(t?.minRating || 0) > 0 && e.appendChild(tb({
+ })), Number(t?.minRating || 0) > 0 && e.appendChild(rb({
label: R("label.rating"),
value: `>= ${Number(t?.minRating || 0)}`,
onClear: () => i?.clearMinRating?.()
- })), t?.workflowOnly && e.appendChild(tb({
+ })), t?.workflowOnly && e.appendChild(rb({
label: R("label.workflow"),
value: R("label.only"),
onClear: () => i?.clearWorkflowOnly?.()
- })), Qy(t?.workflowType || "").trim() && e.appendChild(tb({
+ })), eb(t?.workflowType || "").trim() && e.appendChild(rb({
label: R("label.workflowType"),
- value: Qy(t?.workflowType || "").trim(),
+ value: eb(t?.workflowType || "").trim(),
onClear: () => i?.clearWorkflowType?.()
- })), Qy(t?.workflowId || "").trim()) {
- let n = Qy(t?.workflowId || "").trim();
- e.appendChild(tb({
+ })), eb(t?.workflowId || "").trim()) {
+ let n = eb(t?.workflowId || "").trim();
+ e.appendChild(rb({
label: R("label.sameWorkflow", "Generated with Same Workflow"),
value: n.length > 18 ? `${n.slice(0, 8)}...${n.slice(-6)}` : n,
onClear: () => i?.clearWorkflowId?.()
}));
}
- if (Qy(t?.workflowModelFilter || "").trim() && e.appendChild(tb({
+ if (eb(t?.workflowModelFilter || "").trim() && e.appendChild(rb({
label: R("label.workflowModelFamily", "Model family"),
- value: Qy(t?.workflowModelFilter || "").trim(),
+ value: eb(t?.workflowModelFilter || "").trim(),
onClear: () => i?.clearWorkflowModel?.()
- })), Qy(t?.workflowRunsOnFilter || "").trim() && e.appendChild(tb({
+ })), eb(t?.workflowRunsOnFilter || "").trim() && e.appendChild(rb({
label: R("label.workflowRunsOn", "Runs on"),
- value: Qy(t?.workflowRunsOnFilter || "").trim(),
+ value: eb(t?.workflowRunsOnFilter || "").trim(),
onClear: () => i?.clearWorkflowRunsOn?.()
})), (Number(t?.minSizeMB || 0) || 0) > 0 || (Number(t?.maxSizeMB || 0) || 0) > 0) {
let n = Number(t?.minSizeMB || 0) || 0, r = Number(t?.maxSizeMB || 0) || 0, a = n > 0 && r > 0 ? `${n}-${r} MB` : n > 0 ? `>= ${n} MB` : `<= ${r} MB`;
- e.appendChild(tb({
+ e.appendChild(rb({
label: R("sidebar.size"),
value: a,
onClear: () => i?.clearSize?.()
@@ -21168,23 +21257,23 @@ function nb() {
}
if ((Number(t?.minWidth || 0) || 0) > 0 || (Number(t?.minHeight || 0) || 0) > 0 || (Number(t?.maxWidth || 0) || 0) > 0 || (Number(t?.maxHeight || 0) || 0) > 0) {
let n = String(t?.resolutionCompare || "gte") === "lte", r = Number(n ? t?.maxWidth : t?.minWidth || 0) || 0, a = Number(n ? t?.maxHeight : t?.minHeight || 0) || 0;
- e.appendChild(tb({
+ e.appendChild(rb({
label: R("label.resolution"),
value: `${n ? "<=" : ">="} ${r || 0}x${a || 0} px`,
onClear: () => i?.clearResolution?.()
}));
}
- Qy(t?.dateRangeFilter || "").trim() && e.appendChild(tb({
+ eb(t?.dateRangeFilter || "").trim() && e.appendChild(rb({
label: R("sidebar.date"),
- value: Qy(t?.dateRangeFilter || "").trim(),
+ value: eb(t?.dateRangeFilter || "").trim(),
onClear: () => i?.clearDateRange?.()
- })), Qy(t?.dateExactFilter || "").trim() && e.appendChild(tb({
+ })), eb(t?.dateExactFilter || "").trim() && e.appendChild(rb({
label: R("label.day"),
- value: Qy(t?.dateExactFilter || "").trim(),
+ value: eb(t?.dateExactFilter || "").trim(),
onClear: () => i?.clearDateExact?.()
- })), c && e.appendChild(tb({
+ })), c && e.appendChild(rb({
label: R("label.sort"),
- value: $y(t?.sort),
+ value: tb(t?.sort),
onClear: () => i?.clearSort?.()
}));
}
@@ -21192,17 +21281,17 @@ function nb() {
};
}
// ui/vue/components/panel/summaryBarState.ts
-var rb = (e, t = "") => R(e, t, void 0), ib = (e) => {
+var ab = (e, t = "") => R(e, t, void 0), ob = (e) => {
try {
return String(e ?? "");
} catch {
return "";
}
-}, ab = (e) => {
+}, sb = (e) => {
let t = String(e || "").toLowerCase();
- return t === "similar" ? rb("scope.similar", "Similar") : t === "workflow" ? rb("scope.workflow", "Workflow") : rb(t === "input" || t === "inputs" ? "scope.input" : t === "custom" ? "scope.customBrowser" : t === "all" ? "tab.all" : "scope.output");
+ return t === "similar" ? ab("scope.similar", "Similar") : t === "workflow" ? ab("scope.workflow", "Workflow") : ab(t === "input" || t === "inputs" ? "scope.input" : t === "custom" ? "scope.customBrowser" : t === "all" ? "tab.all" : "scope.output");
};
-function ob(e) {
+function cb(e) {
try {
let t = e?._mjrGetRenderedCards;
if (typeof t == "function") {
@@ -21214,7 +21303,7 @@ function ob(e) {
}
return [];
}
-function sb(e) {
+function lb(e) {
try {
let t = String(e?.dataset?.mjrSelectedAssetIds || "").trim();
if (t) {
@@ -21231,8 +21320,8 @@ function sb(e) {
}
return 0;
}
-function cb({ state: e, gridContainer: t, context: n = null } = {}) {
- let r = ob(t), i = (() => {
+function ub({ state: e, gridContainer: t, context: n = null } = {}) {
+ let r = cb(t), i = (() => {
try {
let e = 0;
for (let t of r) String(t?._mjrAsset?.kind || "").toLowerCase() === "folder" && (e += 1);
@@ -21253,12 +21342,12 @@ function cb({ state: e, gridContainer: t, context: n = null } = {}) {
} catch (e) {
console.debug?.(e);
}
- return sb(t);
- })(), s = Number(t?.dataset?.mjrTotal || 0) || Math.max(0, Number(e?.lastGridTotal ?? 0) || 0), c = Number(t?.dataset?.mjrShown || 0) || Math.max(0, Number(e?.lastGridCount ?? 0) || 0) || a, l = String(e?.viewScope || e?.scope || t?.dataset?.mjrScope || "output").toLowerCase(), u = s && s >= c ? `${c}/${s}` : `${c}`, d = [`${c > 0 && i.total > 0 && i.folders === i.total ? rb("summary.folders") : rb("summary.assets")}: ${u}`];
- o > 0 && d.push(`${rb("summary.selected")}: ${o}`), d.push(ab(l));
+ return lb(t);
+ })(), s = Number(t?.dataset?.mjrTotal || 0) || Math.max(0, Number(e?.lastGridTotal ?? 0) || 0), c = Number(t?.dataset?.mjrShown || 0) || Math.max(0, Number(e?.lastGridCount ?? 0) || 0) || a, l = String(e?.viewScope || e?.scope || t?.dataset?.mjrScope || "output").toLowerCase(), u = s && s >= c ? `${c}/${s}` : `${c}`, d = [`${c > 0 && i.total > 0 && i.folders === i.total ? ab("summary.folders") : ab("summary.assets")}: ${u}`];
+ o > 0 && d.push(`${ab("summary.selected")}: ${o}`), d.push(sb(l));
try {
let e = Number(t?.dataset?.mjrHiddenPngSiblings || 0) || 0;
- String(t?.dataset?.mjrHidePngSiblingsEnabled || "") === "1" && e > 0 && d.push(`${rb("summary.hidden")}: ${e}`);
+ String(t?.dataset?.mjrHidePngSiblingsEnabled || "") === "1" && e > 0 && d.push(`${ab("summary.hidden")}: ${e}`);
} catch (e) {
console.debug?.(e);
}
@@ -21268,22 +21357,22 @@ function cb({ state: e, gridContainer: t, context: n = null } = {}) {
total: s,
activeScope: l,
summaryText: d.filter(Boolean).join(" | "),
- duplicateText: h ? `${rb("summary.duplicates")}: ${p} | ${rb("summary.similar")}: ${m}` : "",
+ duplicateText: h ? `${ab("summary.duplicates")}: ${p} | ${ab("summary.similar")}: ${m}` : "",
showDuplicates: h,
- rawQuery: ib(n?.rawQuery || "").trim()
+ rawQuery: ob(n?.rawQuery || "").trim()
};
}
// ui/vue/components/panel/SummaryBarSection.vue?vue&type=script&setup=true&lang.ts
-var lb = {
+var db = {
key: 2,
class: "mjr-folder-breadcrumb-separator"
-}, ub = {
+}, fb = {
key: 0,
class: "mjr-folder-breadcrumb-separator"
-}, db = { class: "mjr-am-summary-left" }, fb = { class: "mjr-am-summary-text" }, pb = { class: "mjr-am-summary-right" }, mb = ["aria-label"], hb = /* @__PURE__ */ lr({
+}, pb = { class: "mjr-am-summary-left" }, mb = { class: "mjr-am-summary-text" }, hb = { class: "mjr-am-summary-right" }, gb = ["aria-label"], _b = /* @__PURE__ */ lr({
__name: "SummaryBarSection",
setup(e, { expose: t }) {
- let n = lh(), r = Q(null), i = Q(null), a = Q(null), o = Q(""), s = Q(""), c = Q(!1), l = Q(!1), u = Q(null), d = Q(null), f = Q([]), p = nb(), m = K(() => String(n.kindFilter || "").trim().toLowerCase()), h = K(() => {
+ let n = dh(), r = Q(null), i = Q(null), a = Q(null), o = Q(""), s = Q(""), c = Q(!1), l = Q(!1), u = Q(null), d = Q(null), f = Q([]), p = ib(), m = K(() => String(n.kindFilter || "").trim().toLowerCase()), h = K(() => {
let e = R("label.type", "Type");
return [
{
@@ -21330,7 +21419,7 @@ var lb = {
t && (n.kindFilter = v(t) ? "" : t, y());
}
function x({ state: e, gridContainer: t, context: r = null, actions: i = null } = {}) {
- let a = cb({
+ let a = ub({
state: e,
gridContainer: t,
context: r
@@ -21411,8 +21500,8 @@ var lb = {
default: W(() => [er(J(d.value.label), 1)]),
_: 1
}, 8, ["disabled"])) : G("", !0),
- u.value || d.value ? (q(), X("span", lb, " | ")) : G("", !0),
- (q(!0), X(H, null, pr(f.value, (e, t) => (q(), X(H, { key: `${e.target}:${t}` }, [t > 0 ? (q(), X("span", ub, "/")) : G("", !0), Y(n, {
+ u.value || d.value ? (q(), X("span", db, " | ")) : G("", !0),
+ (q(!0), X(H, null, pr(f.value, (e, t) => (q(), X(H, { key: `${e.target}:${t}` }, [t > 0 ? (q(), X("span", fb, "/")) : G("", !0), Y(n, {
type: "button",
class: wr(["mjr-btn-link mjr-folder-breadcrumb-segment", { "is-current": e.current }]),
severity: "secondary",
@@ -21432,7 +21521,7 @@ var lb = {
ref: r,
class: "mjr-am-summary",
"aria-live": "polite"
- }, [U("div", db, [U("div", fb, J(o.value), 1)]), U("div", pb, [
+ }, [U("div", pb, [U("div", mb, J(o.value), 1)]), U("div", hb, [
U("div", {
class: "mjr-media-shortcuts",
"aria-label": Z(R)("label.type", "Type"),
@@ -21460,7 +21549,7 @@ var lb = {
"aria-pressed",
"class",
"onClick"
- ]))), 128))], 8, mb),
+ ]))), 128))], 8, gb),
c.value ? (q(), nr(n, {
key: 0,
type: "button",
@@ -21482,11 +21571,11 @@ var lb = {
}
});
// ui/vue/composables/useGridContextMenu.ts
-function gb(e, t) {
+function vb(e, t) {
let n = null;
function r(e) {
if (e && !e._mjrGridContextMenuBound) try {
- n = Ia({
+ n = Ra({
gridContainer: e,
getState: t
});
@@ -21505,11 +21594,11 @@ function gb(e, t) {
}, { immediate: !0 }), tr(i);
}
// ui/vue/composables/useGridKeyboard.ts
-function _b(e) {
+function yb(e) {
if (!e) return () => {};
let t = e;
try {
- let n = Fi({
+ let n = Li({
gridContainer: e,
getState: () => t._mjrGetGridState?.() || {},
getSelectedAssets: () => t._mjrGetSelectedAssets?.() || [],
@@ -21527,7 +21616,7 @@ function _b(e) {
} catch (e) {
console.debug?.("[useGridKeyboard] rect lookup failed", e);
}
- Fa(Math.round((i?.left || 0) + Math.min((i?.width || 0) * .5, 160)), Math.round((i?.top || 0) + Math.min((i?.height || 0) * .5, 120)), n, () => {
+ La(Math.round((i?.left || 0) + Math.min((i?.width || 0) * .5, 160)), Math.round((i?.top || 0) + Math.min((i?.height || 0) * .5, 120)), n, () => {
t._mjrOnKeyboardAssetChanged?.(n);
});
}
@@ -21544,7 +21633,7 @@ function _b(e) {
return console.debug?.("[useGridKeyboard] bind failed", e), () => {};
}
}
-function vb(e) {
+function bb(e) {
let t = null, n = () => {
try {
t?.();
@@ -21554,12 +21643,12 @@ function vb(e) {
t = null;
};
or(e, (e, r) => {
- r && n(), e && (t = _b(e));
+ r && n(), e && (t = yb(e));
}, { immediate: !0 }), tr(n);
}
// ui/vue/components/grid/assetsGridHostState.ts
-function yb() {}
-function bb() {
+function xb() {}
+function Sb() {
return new Promise((e) => {
try {
if (typeof requestAnimationFrame == "function") {
@@ -21572,7 +21661,7 @@ function bb() {
e();
});
}
-function xb(e, ...t) {
+function Cb(e, ...t) {
try {
return typeof e == "function" ? e(...t) : void 0;
} catch (e) {
@@ -21580,21 +21669,21 @@ function xb(e, ...t) {
return;
}
}
-function Sb(e = {}) {
+function wb(e = {}) {
let t = Array.isArray(e.selectedIds) ? e.selectedIds.map(String).filter(Boolean) : [];
return {
ids: t,
activeId: String(e.activeId || t[0] || "").trim()
};
}
-function Cb(e, t = {}, n = null) {
+function Tb(e, t = {}, n = null) {
return {
count: Number(t.count ?? t.shown ?? e?.dataset?.mjrShown ?? n?.lastGridCount ?? 0) || 0,
total: Number(t.total ?? e?.dataset?.mjrTotal ?? n?.lastGridTotal ?? 0) || 0
};
}
-function wb(e, t = uh()) {
- if (!e || !t) return yb;
+function Eb(e, t = fh()) {
+ if (!e || !t) return xb;
let n = 0, r = () => {
if (!n) try {
n = requestAnimationFrame(() => {
@@ -21620,8 +21709,8 @@ function wb(e, t = uh()) {
}
};
}
-function Tb(e, { panelStore: t = uh(), onContextChanged: n = null, markUserInteraction: r = null } = {}) {
- if (!e) return yb;
+function Db(e, { panelStore: t = fh(), onContextChanged: n = null, markUserInteraction: r = null } = {}) {
+ if (!e) return xb;
let i = 0, a = () => {
if (i) try {
cancelAnimationFrame(i);
@@ -21630,24 +21719,24 @@ function Tb(e, { panelStore: t = uh(), onContextChanged: n = null, markUserInter
}
try {
i = requestAnimationFrame(() => {
- i = 0, xb(n);
+ i = 0, Cb(n);
});
} catch (e) {
- console.debug?.(e), i = 0, xb(n);
+ console.debug?.(e), i = 0, Cb(n);
}
}, o = (r) => {
let i = r?.detail || {};
if (t) {
- let { count: n, total: r } = Cb(e, i, t);
+ let { count: n, total: r } = Tb(e, i, t);
t.lastGridCount = n, t.lastGridTotal = r;
}
- xb(n);
+ Cb(n);
}, s = (e) => {
- if (xb(r), t) {
- let { ids: n, activeId: r } = Sb(e?.detail || {});
+ if (Cb(r), t) {
+ let { ids: n, activeId: r } = wb(e?.detail || {});
t.selectedAssetIds = n, t.activeAssetId = r;
}
- xb(n);
+ Cb(n);
};
e.addEventListener("mjr:grid-stats", o), e.addEventListener("mjr:selection-changed", s);
try {
@@ -21695,14 +21784,14 @@ function Tb(e, { panelStore: t = uh(), onContextChanged: n = null, markUserInter
}
};
}
-async function Eb({ initialLoadPromise: e, gridWrapper: t, gridContainer: n, panelStore: r = uh(), onRestoreSidebar: i = null } = {}) {
+async function Ob({ initialLoadPromise: e, gridWrapper: t, gridContainer: n, panelStore: r = fh(), onRestoreSidebar: i = null } = {}) {
if (!t || !n || !r) return;
try {
await e;
} catch (e) {
console.debug?.(e);
}
- await bb();
+ await Sb();
let a = Number(r.scrollTop || 0) || 0;
if (a > 0) try {
t.scrollTop = a;
@@ -21719,7 +21808,7 @@ async function Eb({ initialLoadPromise: e, gridWrapper: t, gridContainer: n, pan
if (s) {
let e = () => {
try {
- typeof n?._mjrScrollToAssetId == "function" ? n._mjrScrollToAssetId(s) : Rl(n, s)?.scrollIntoView?.({
+ typeof n?._mjrScrollToAssetId == "function" ? n._mjrScrollToAssetId(s) : Bl(n, s)?.scrollIntoView?.({
block: "nearest",
behavior: "instant"
});
@@ -21730,13 +21819,13 @@ async function Eb({ initialLoadPromise: e, gridWrapper: t, gridContainer: n, pan
e(), setTimeout(e, 160);
}
}
- r.sidebarOpen && s && xb(i);
+ r.sidebarOpen && s && Cb(i);
}
// ui/vue/components/grid/AssetsGrid.vue
-var Db = /* @__PURE__ */ lr({
+var kb = /* @__PURE__ */ lr({
__name: "AssetsGrid",
setup(e, { expose: t }) {
- let n = Q(null), r = Q(null), i = Q(null), a = lh(), o = K(() => i.value?.gridContainer ?? null), s = null, c = null, l = null, u = null;
+ let n = Q(null), r = Q(null), i = Q(null), a = dh(), o = K(() => i.value?.gridContainer ?? null), s = null, c = null, l = null, u = null;
function d() {
try {
l?.setVisibility?.();
@@ -21830,7 +21919,7 @@ var Db = /* @__PURE__ */ lr({
}
};
}
- ir("mjr-grid-container-ref", o), gb(o, () => a), vb(o);
+ ir("mjr-grid-container-ref", o), vb(o, () => a), bb(o);
function m() {
return o.value || null;
}
@@ -21842,14 +21931,14 @@ var Db = /* @__PURE__ */ lr({
} catch (e) {
console.debug?.(e);
}
- c = Tb(t, {
+ c = Db(t, {
panelStore: a,
...e
});
}
}
return kr(() => {
- s = wb(r.value, a), r.value && Number(a.scrollTop || 0) > 0 && (r.value.scrollTop = Number(a.scrollTop || 0)), p();
+ s = Eb(r.value, a), r.value && Number(a.scrollTop || 0) > 0 && (r.value.scrollTop = Number(a.scrollTop || 0)), p();
try {
window.addEventListener("mjr:keepalive-attached", f), document.addEventListener("visibilitychange", d);
} catch (e) {
@@ -21926,7 +22015,7 @@ var Db = /* @__PURE__ */ lr({
};
},
restoreGridUiState(e, t = {}) {
- return Eb({
+ return Ob({
initialLoadPromise: e,
gridWrapper: r.value,
gridContainer: m(),
@@ -21942,7 +22031,7 @@ var Db = /* @__PURE__ */ lr({
} catch (e) {
console.debug?.(e);
}
- return l = Wg({
+ return l = Kg({
gridContainer: t,
gridWrapper: r.value,
...e
@@ -21997,13 +22086,13 @@ var Db = /* @__PURE__ */ lr({
overflow: "auto",
position: "relative"
}
- }, [Y(Zu, {
+ }, [Y($u, {
ref_key: "gridHostRef",
ref: i,
"scroll-element": r.value
}, null, 8, ["scroll-element"])], 512)], 512));
}
-}), Ob = {
+}), Ab = {
class: "mjr-sidebar-header",
style: {
display: "flex",
@@ -22014,7 +22103,7 @@ var Db = /* @__PURE__ */ lr({
"flex-shrink": "0",
background: "var(--mjr-surface-2,#2e2e2e)"
}
-}, kb = ["title"], Ab = /* @__PURE__ */ lr({
+}, jb = ["title"], Mb = /* @__PURE__ */ lr({
__name: "SidebarHeaderSection",
props: { asset: {} },
emits: ["close"],
@@ -22022,7 +22111,7 @@ var Db = /* @__PURE__ */ lr({
let n = t;
return (t, r) => {
let i = rr("MButton");
- return q(), X("div", Ob, [U("div", {
+ return q(), X("div", Ab, [U("div", {
class: "mjr-sidebar-filename",
title: e.asset.filename,
style: {
@@ -22035,7 +22124,7 @@ var Db = /* @__PURE__ */ lr({
"min-width": "0",
"padding-right": "8px"
}
- }, J(e.asset.filename), 9, kb), Y(i, {
+ }, J(e.asset.filename), 9, jb), Y(i, {
type: "button",
class: "mjr-sidebar-close",
severity: "secondary",
@@ -22066,14 +22155,14 @@ var Db = /* @__PURE__ */ lr({
}
});
// ui/components/sidebar/utils/format.ts
-function jb(e) {
+function Nb(e) {
if (!e) return "Unknown";
let t = e / 1024;
if (t < 1024) return `${t.toFixed(1)} KB`;
let n = t / 1024;
return n < 1024 ? `${n.toFixed(1)} MB` : `${(n / 1024).toFixed(2)} GB`;
}
-function Mb(e) {
+function Pb(e) {
if (!e) return "";
let t = /* @__PURE__ */ new Date(Number(e) * 1e3);
if (Number.isNaN(t.getTime())) return "";
@@ -22081,13 +22170,13 @@ function Mb(e) {
return `${t.getFullYear()}-${n(t.getMonth() + 1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`;
}
// ui/vue/components/panel/sidebar/SidebarPreviewSection.vue?vue&type=script&setup=true&lang.ts
-var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["src"], Lb = {
+var Fb = { class: "mjr-sidebar-preview" }, Ib = ["src"], Lb = ["src"], Rb = ["src"], zb = {
key: 3,
style: {
color: "rgba(255, 255, 255, 0.4)",
"font-size": "14px"
}
-}, Rb = {
+}, Bb = {
class: "mjr-sidebar-preview-meta",
style: {
"margin-top": "10px",
@@ -22101,7 +22190,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"padding-bottom": "12px",
"border-bottom": "1px solid var(--mjr-border, rgba(255, 255, 255, 0.12))"
}
-}, zb = /* @__PURE__ */ lr({
+}, Vb = /* @__PURE__ */ lr({
__name: "SidebarPreviewSection",
props: {
asset: {},
@@ -22117,9 +22206,9 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}), o = K(() => {
let e = [];
a.value && e.push(a.value), t.asset?.kind && e.push(String(t.asset.kind).toLowerCase());
- let n = jb(t.asset?.size);
+ let n = Nb(t.asset?.size);
n && e.push(n);
- let r = Mb(t.asset?.mtime);
+ let r = Pb(t.asset?.mtime);
return r && e.push(r), e.join(" | ");
});
function s() {
@@ -22163,7 +22252,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
l();
}), dr(() => {
s();
- }), (t, r) => (q(), X("div", Nb, [e.showPreviewThumb ? (q(), X("div", {
+ }), (t, r) => (q(), X("div", Fb, [e.showPreviewThumb ? (q(), X("div", {
key: 0,
ref_key: "previewContainerRef",
ref: n,
@@ -22186,7 +22275,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"max-height": "100%",
"object-fit": "contain"
}
- }, null, 8, Pb)) : e.asset.kind === "video" ? (q(), X("video", {
+ }, null, 8, Ib)) : e.asset.kind === "video" ? (q(), X("video", {
key: 1,
src: i.value,
muted: !0,
@@ -22199,7 +22288,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"max-height": "100%",
"object-fit": "contain"
}
- }, null, 8, Fb)) : e.asset.kind === "audio" ? (q(), X("audio", {
+ }, null, 8, Lb)) : e.asset.kind === "audio" ? (q(), X("audio", {
key: 2,
src: i.value,
controls: "",
@@ -22208,9 +22297,9 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
width: "92%",
"max-width": "560px"
}
- }, null, 8, Ib)) : (q(), X("div", Lb, J(String(e.asset.kind || "PREVIEW").toUpperCase()), 1))], 512)) : G("", !0), U("div", Rb, J(o.value), 1)]));
+ }, null, 8, Rb)) : (q(), X("div", zb, J(String(e.asset.kind || "PREVIEW").toUpperCase()), 1))], 512)) : G("", !0), U("div", Bb, J(o.value), 1)]));
}
-}), Bb = {
+}), Hb = {
class: "mjr-sidebar-section",
style: {
background: "rgba(255, 255, 255, 0.03)",
@@ -22218,22 +22307,22 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"border-radius": "8px",
padding: "10px"
}
-}, Vb = { style: {
+}, Ub = { style: {
"font-size": "12px",
"font-weight": "700",
color: "#26a69a",
"margin-bottom": "8px",
"text-transform": "uppercase",
"letter-spacing": "0.4px"
-} }, Hb = { style: {
+} }, Wb = { style: {
display: "flex",
"flex-direction": "column",
gap: "6px"
-} }, Ub = { style: {
+} }, Gb = { style: {
"font-size": "12px",
opacity: "0.68",
"min-width": "92px"
-} }, Wb = ["title"], Gb = /* @__PURE__ */ lr({
+} }, Kb = ["title"], qb = /* @__PURE__ */ lr({
__name: "SidebarFolderSection",
props: { asset: {} },
setup(e) {
@@ -22286,7 +22375,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
valueStyle: "color:#FFB74D;font-weight:600;"
}), f;
});
- return (e, t) => (q(), X("div", Bb, [U("div", Vb, J(Z(R)("sidebar.folder.details", "Folder Details")), 1), U("div", Hb, [(q(!0), X(H, null, pr(r.value, (e) => (q(), X("div", {
+ return (e, t) => (q(), X("div", Hb, [U("div", Ub, J(Z(R)("sidebar.folder.details", "Folder Details")), 1), U("div", Wb, [(q(!0), X(H, null, pr(r.value, (e) => (q(), X("div", {
key: e.label,
style: {
display: "flex",
@@ -22294,18 +22383,18 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"align-items": "flex-start",
"justify-content": "space-between"
}
- }, [U("div", Ub, J(e.label), 1), U("div", {
+ }, [U("div", Gb, J(e.label), 1), U("div", {
style: yr(e.valueStyle || "font-size: 12px; text-align: right; word-break: break-word"),
title: String(e.value || "")
- }, J(e.value), 13, Wb)]))), 128))])]));
+ }, J(e.value), 13, Kb)]))), 128))])]));
}
-}), Kb = [
+}), Jb = [
"aria-busy",
"aria-disabled",
"aria-label",
"aria-valuenow",
"tabindex"
-], qb = /* @__PURE__ */ lr({
+], Yb = /* @__PURE__ */ lr({
__name: "RatingEditor",
props: {
asset: {},
@@ -22487,22 +22576,22 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"disabled",
"onClick",
"onMouseenter"
- ])), 64))], 44, Kb);
+ ])), 64))], 44, Jb);
};
}
-}), Jb = ["aria-label"], Yb = { class: "mjr-context-menu-title" }, Xb = { class: "mjr-context-menu-item-left" }, Zb = {
+}), Xb = ["aria-label"], Zb = { class: "mjr-context-menu-title" }, Qb = { class: "mjr-context-menu-item-left" }, $b = {
key: 0,
class: "mjr-context-menu-note"
-}, Qb = {
+}, ex = {
key: 1,
class: "mjr-context-menu-note is-error"
-}, $b = {
+}, tx = {
key: 2,
class: "mjr-context-menu-note"
-}, ex = { class: "mjr-context-menu-item-left" }, tx = {
+}, nx = { class: "mjr-context-menu-item-left" }, rx = {
key: 0,
class: "mjr-context-menu-hint"
-}, nx = /* @__PURE__ */ lr({
+}, ix = /* @__PURE__ */ lr({
__name: "AddToCollectionMenu",
setup(t) {
let n = Q(null), r = Q(!1), i = Q([]), a = Q(""), o = 0, s = null, c = K(() => ({
@@ -22616,7 +22705,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
role: "menu",
"aria-label": u.value
}, [
- U("div", Yb, J(u.value), 1),
+ U("div", Zb, J(u.value), 1),
Y(o, {
type: "button",
class: "mjr-context-menu-item",
@@ -22625,11 +22714,11 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
role: "menuitem",
onClick: g
}, {
- default: W(() => [U("span", Xb, [t[0] ||= U("i", { class: "pi pi-plus" }, null, -1), U("span", null, J(Z(R)("dialog.createCollection", "Create collection")) + "...", 1)])]),
+ default: W(() => [U("span", Qb, [t[0] ||= U("i", { class: "pi pi-plus" }, null, -1), U("span", null, J(Z(R)("dialog.createCollection", "Create collection")) + "...", 1)])]),
_: 1
}),
t[2] ||= U("div", { class: "mjr-context-menu-separator" }, null, -1),
- r.value ? (q(), X("div", Zb, J(Z(R)("msg.loadingCollections", "Loading collections...")), 1)) : a.value ? (q(), X("div", Qb, J(a.value), 1)) : i.value.length ? G("", !0) : (q(), X("div", $b, J(Z(R)("msg.noCollections", "No collections yet.")), 1)),
+ r.value ? (q(), X("div", $b, J(Z(R)("msg.loadingCollections", "Loading collections...")), 1)) : a.value ? (q(), X("div", ex, J(a.value), 1)) : i.value.length ? G("", !0) : (q(), X("div", tx, J(Z(R)("msg.noCollections", "No collections yet.")), 1)),
(q(!0), X(H, null, pr(i.value, (e) => (q(), nr(o, {
key: String(e?.id || ""),
type: "button",
@@ -22639,28 +22728,28 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
role: "menuitem",
onClick: (t) => h(String(e?.id || ""), String(e?.name || e?.id || ""))
}, {
- default: W(() => [U("span", ex, [t[1] ||= U("i", { class: "pi pi-bookmark" }, null, -1), U("span", null, J(String(e?.name || e?.id || "")), 1)]), Number(e?.count || 0) > 0 ? (q(), X("span", tx, J(Number(e?.count || 0)), 1)) : G("", !0)]),
+ default: W(() => [U("span", nx, [t[1] ||= U("i", { class: "pi pi-bookmark" }, null, -1), U("span", null, J(String(e?.name || e?.id || "")), 1)]), Number(e?.count || 0) > 0 ? (q(), X("span", rx, J(Number(e?.count || 0)), 1)) : G("", !0)]),
_: 2
}, 1032, ["onClick"]))), 128))
- ], 12, Jb)) : G("", !0)]);
+ ], 12, Xb)) : G("", !0)]);
};
}
-}), rx = {
+}), ax = {
key: 0,
class: "mjr-context-menu-separator"
-}, ix = { class: "mjr-context-menu-item-left" }, ax = { class: "mjr-context-menu-item-right" }, ox = {
+}, ox = { class: "mjr-context-menu-item-left" }, sx = { class: "mjr-context-menu-item-right" }, cx = {
key: 0,
class: "mjr-context-menu-hint"
-}, sx = {
+}, lx = {
key: 1,
class: "mjr-context-menu-submenu-arrow"
-}, cx = {
+}, ux = {
key: 0,
class: "mjr-context-menu-separator"
-}, lx = { class: "mjr-context-menu-item-left" }, ux = {
+}, dx = { class: "mjr-context-menu-item-left" }, fx = {
key: 0,
class: "mjr-context-menu-hint"
-}, dx = /* @__PURE__ */ lr({
+}, px = /* @__PURE__ */ lr({
__name: "GridContextMenu",
setup(e) {
let t = Q(null), n = Q(null), r = Q(null), i = null, a = null, o = K(() => l(hn.main, 10031)), s = K(() => l(hn.submenu, 10032)), c = K(() => l(hn.tags, 10033));
@@ -22799,7 +22888,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
style: yr(o.value),
role: "menu",
"aria-label": "Grid context menu"
- }, [(q(!0), X(H, null, pr(Z(hn).main.items, (e) => (q(), X(H, { key: e.id }, [e.type === "separator" ? (q(), X("div", rx)) : (q(), nr(a, {
+ }, [(q(!0), X(H, null, pr(Z(hn).main.items, (e) => (q(), X(H, { key: e.id }, [e.type === "separator" ? (q(), X("div", ax)) : (q(), nr(a, {
key: 1,
type: "button",
class: wr(["mjr-context-menu-item", {
@@ -22819,10 +22908,10 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
onMouseenter: (t) => _(e, t),
onMouseleave: (t) => v(e)
}, {
- default: W(() => [U("span", ix, [e.iconClass ? (q(), X("i", {
+ default: W(() => [U("span", ox, [e.iconClass ? (q(), X("i", {
key: 0,
class: wr(e.iconClass)
- }, null, 2)) : G("", !0), U("span", null, J(e.label), 1)]), U("span", ax, [e.rightHint ? (q(), X("span", ox, J(e.rightHint), 1)) : G("", !0), Array.isArray(e.submenu) && e.submenu.length ? (q(), X("span", sx, " > ")) : G("", !0)])]),
+ }, null, 2)) : G("", !0), U("span", null, J(e.label), 1)]), U("span", sx, [e.rightHint ? (q(), X("span", cx, J(e.rightHint), 1)) : G("", !0), Array.isArray(e.submenu) && e.submenu.length ? (q(), X("span", lx, " > ")) : G("", !0)])]),
_: 2
}, 1032, [
"class",
@@ -22842,7 +22931,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"aria-label": "Grid context submenu",
onMouseenter: y,
onMouseleave: b
- }, [(q(!0), X(H, null, pr(Z(hn).submenu.items, (e) => (q(), X(H, { key: e.id }, [e.type === "separator" ? (q(), X("div", cx)) : (q(), nr(a, {
+ }, [(q(!0), X(H, null, pr(Z(hn).submenu.items, (e) => (q(), X(H, { key: e.id }, [e.type === "separator" ? (q(), X("div", ux)) : (q(), nr(a, {
key: 1,
type: "button",
class: wr(["mjr-context-menu-item", {
@@ -22859,10 +22948,10 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
tabindex: e.disabled ? -1 : 0,
onClick: (t) => g(e, t, "submenu")
}, {
- default: W(() => [U("span", lx, [e.iconClass ? (q(), X("i", {
+ default: W(() => [U("span", dx, [e.iconClass ? (q(), X("i", {
key: 0,
class: wr(e.iconClass)
- }, null, 2)) : G("", !0), U("span", null, J(e.label), 1)]), e.rightHint ? (q(), X("span", ux, J(e.rightHint), 1)) : G("", !0)]),
+ }, null, 2)) : G("", !0), U("span", null, J(e.label), 1)]), e.rightHint ? (q(), X("span", fx, J(e.rightHint), 1)) : G("", !0)]),
_: 2
}, 1032, [
"class",
@@ -22885,7 +22974,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
]);
};
}
-}), fx = { class: "mjr-workflow-picker-dialog mjr-workflow-info-dialog" }, px = { class: "mjr-workflow-picker-header" }, mx = { class: "mjr-workflow-picker-title" }, hx = { class: "mjr-workflow-picker-subtitle" }, gx = { class: "mjr-workflow-info-form" }, _x = { class: "is-wide" }, vx = { class: "mjr-workflow-picker-footer" }, yx = /* @__PURE__ */ lr({
+}), mx = { class: "mjr-workflow-picker-dialog mjr-workflow-info-dialog" }, hx = { class: "mjr-workflow-picker-header" }, gx = { class: "mjr-workflow-picker-title" }, _x = { class: "mjr-workflow-picker-subtitle" }, vx = { class: "mjr-workflow-info-form" }, yx = { class: "is-wide" }, bx = { class: "mjr-workflow-picker-footer" }, xx = /* @__PURE__ */ lr({
__name: "WorkflowInfoDialog",
setup(t) {
let n = xr({
@@ -22894,14 +22983,14 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
provider: "",
runs_on: "",
notes: ""
- }), r = K(() => Li.workflow || null), i = K(() => String(r.value?.display_name || r.value?.filename || "Workflow"));
- or(() => Li.open, (e) => {
+ }), r = K(() => zi.workflow || null), i = K(() => String(r.value?.display_name || r.value?.filename || "Workflow"));
+ or(() => zi.open, (e) => {
if (!e) return;
let t = r.value || {};
n.task = String(t.user_task || t.task || ""), n.model_family = String(t.user_model_family || t.model_family || ""), n.provider = String(t.user_provider || t.provider || ""), n.runs_on = String(t.user_runs_on || t.runs_on || ""), n.notes = String(t.notes || "");
});
function a() {
- zi();
+ Vi();
}
async function o() {
let t = String(r.value?.filepath || "").trim();
@@ -22915,17 +23004,17 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}, { timeoutMs: 2e4 });
i?.ok ? (e(R("toast.workflowUpdated", "Workflow updated"), "success", 1800), window?.dispatchEvent?.(new CustomEvent("mjr:reload-grid", { detail: { reason: "workflow-info" } })), a()) : e(i?.error || R("toast.workflowSaveFailed", "Failed to save workflow."), "error");
}
- return (e, t) => (q(), nr(Er, { to: "body" }, [Z(Li).open ? (q(), X("div", {
+ return (e, t) => (q(), nr(Er, { to: "body" }, [Z(zi).open ? (q(), X("div", {
key: 0,
class: "mjr-workflow-picker-backdrop",
onClick: fr(a, ["self"])
- }, [U("section", fx, [
- U("header", px, [U("div", null, [U("div", mx, J(Z(R)("ctx.editWorkflowInfo", "Edit infos")), 1), U("div", hx, J(i.value), 1)]), U("button", {
+ }, [U("section", mx, [
+ U("header", hx, [U("div", null, [U("div", gx, J(Z(R)("ctx.editWorkflowInfo", "Edit infos")), 1), U("div", _x, J(i.value), 1)]), U("button", {
type: "button",
class: "mjr-workflow-picker-close",
onClick: a
}, [...t[5] ||= [U("i", { class: "pi pi-times" }, null, -1)]])]),
- U("div", gx, [
+ U("div", vx, [
U("label", null, [t[6] ||= U("span", null, "Task", -1), hr(U("input", {
"onUpdate:modelValue": t[0] ||= (e) => n.task = e,
type: "text",
@@ -22947,13 +23036,13 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
U("option", { value: "api" }, "api", -1),
U("option", { value: "cloud" }, "cloud", -1)
]], 512), [[Tr, n.runs_on]])]),
- U("label", _x, [t[11] ||= U("span", null, "Notes", -1), hr(U("textarea", {
+ U("label", yx, [t[11] ||= U("span", null, "Notes", -1), hr(U("textarea", {
"onUpdate:modelValue": t[4] ||= (e) => n.notes = e,
rows: "5",
placeholder: "Notes displayed on workflow hover"
}, null, 512), [[Or, n.notes]])])
]),
- U("footer", vx, [U("button", {
+ U("footer", bx, [U("button", {
type: "button",
class: "mjr-workflow-picker-secondary",
onClick: a
@@ -22964,22 +23053,22 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}, J(Z(R)("btn.apply", "Apply")), 1)])
])])) : G("", !0)]));
}
-}), bx = { class: "mjr-workflow-picker-header" }, xx = { class: "mjr-workflow-picker-title" }, Sx = {
+}), Sx = { class: "mjr-workflow-picker-header" }, Cx = { class: "mjr-workflow-picker-title" }, wx = {
key: 0,
class: "mjr-workflow-picker-source"
-}, Cx = { class: "mjr-workflow-picker-toolbar" }, wx = { class: "mjr-workflow-picker-search" }, Tx = ["placeholder"], Ex = { value: "" }, Dx = ["value"], Ox = { value: "" }, kx = ["value"], Ax = { value: "" }, jx = ["value"], Mx = { class: "mjr-workflow-picker-body" }, Nx = {
+}, Tx = { class: "mjr-workflow-picker-toolbar" }, Ex = { class: "mjr-workflow-picker-search" }, Dx = ["placeholder"], Ox = { value: "" }, kx = ["value"], Ax = { value: "" }, jx = ["value"], Mx = { value: "" }, Nx = ["value"], Px = { class: "mjr-workflow-picker-body" }, Fx = {
key: 0,
class: "mjr-workflow-picker-empty"
-}, Px = {
+}, Ix = {
key: 1,
class: "mjr-workflow-picker-empty is-error"
-}, Fx = {
+}, Lx = {
key: 2,
class: "mjr-workflow-picker-empty"
-}, Ix = ["onClick"], Lx = { class: "mjr-workflow-picker-thumb" }, Rx = ["src", "alt"], zx = {
+}, Rx = ["onClick"], zx = { class: "mjr-workflow-picker-thumb" }, Bx = ["src", "alt"], Vx = {
key: 1,
class: "pi pi-sitemap"
-}, Bx = { class: "mjr-workflow-picker-card-info" }, Vx = ["disabled"], Hx = { class: "mjr-workflow-picker-card-info" }, Ux = { class: "mjr-workflow-picker-footer" }, Wx = ["disabled"], Gx = 120, Kx = /* @__PURE__ */ lr({
+}, Hx = { class: "mjr-workflow-picker-card-info" }, Ux = ["disabled"], Wx = { class: "mjr-workflow-picker-card-info" }, Gx = { class: "mjr-workflow-picker-footer" }, Kx = ["disabled"], qx = 120, Jx = /* @__PURE__ */ lr({
__name: "WorkflowPickerDialog",
setup(e) {
let t = Q(""), n = Q(!1), r = Q(!1), i = Q(""), a = Q([]), s = Q(""), c = Q(0), l = Q(!1), u = 0, d = K(() => xn.sourceAsset || null), f = K(() => xn.workflow || null), p = K(() => String(xn.mode || "") === "asset"), m = K(() => String(d.value?.filename || d.value?.display_name || f.value?.display_name || f.value?.filename || d.value?.filepath || f.value?.filepath || "")), h = K(() => x("task")), g = K(() => x("model_family")), _ = K(() => x("runs_on")), v = Q(""), y = Q(""), b = Q("");
@@ -23031,7 +23120,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}
let n = await o({
q: "*",
- limit: Gx,
+ limit: qx,
offset: d,
sort: "mtime"
}, { timeoutMs: 2e4 });
@@ -23041,7 +23130,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
return;
}
let r = (Array.isArray(n?.data?.assets) ? n.data.assets : Array.isArray(n?.data) ? n.data : []).filter((e) => String(e?.filepath || "").trim());
- a.value = e ? r : [...a.value, ...r], c.value = d + r.length, l.value = r.length >= Gx, !s.value && a.value[0]?.filepath && (s.value = String(a.value[0].filepath));
+ a.value = e ? r : [...a.value, ...r], c.value = d + r.length, l.value = r.length >= qx, !s.value && a.value[0]?.filepath && (s.value = String(a.value[0].filepath));
} catch (e) {
t === u && (i.value = String(e?.message || e || "Failed to load workflows"), a.value = []);
} finally {
@@ -23085,67 +23174,67 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
role: "dialog",
"aria-modal": "true"
}, [
- U("header", bx, [U("div", xx, [a[4] ||= U("i", { class: "pi pi-sitemap" }, null, -1), U("span", null, J(Z(xn).title), 1)]), U("button", {
+ U("header", Sx, [U("div", Cx, [a[4] ||= U("i", { class: "pi pi-sitemap" }, null, -1), U("span", null, J(Z(xn).title), 1)]), U("button", {
class: "mjr-workflow-picker-icon-btn",
type: "button",
onClick: j
}, [...a[5] ||= [U("i", { class: "pi pi-times" }, null, -1)]])]),
- m.value ? (q(), X("div", Sx, [U("span", null, J(p.value ? Z(R)("tab.workflow", "Workflow") : Z(R)("dialog.workflowThumbnailSource", "Source")), 1), U("strong", null, J(m.value), 1)])) : G("", !0),
- U("div", Cx, [
- U("label", wx, [a[6] ||= U("i", { class: "pi pi-search" }, null, -1), hr(U("input", {
+ m.value ? (q(), X("div", wx, [U("span", null, J(p.value ? Z(R)("tab.workflow", "Workflow") : Z(R)("dialog.workflowThumbnailSource", "Source")), 1), U("strong", null, J(m.value), 1)])) : G("", !0),
+ U("div", Tx, [
+ U("label", Ex, [a[6] ||= U("i", { class: "pi pi-search" }, null, -1), hr(U("input", {
"onUpdate:modelValue": a[0] ||= (e) => t.value = e,
type: "search",
placeholder: Z(R)("search.workflows", "Search workflows...")
- }, null, 8, Tx), [[Or, t.value]])]),
+ }, null, 8, Dx), [[Or, t.value]])]),
p.value ? G("", !0) : hr((q(), X("select", {
key: 0,
"onUpdate:modelValue": a[1] ||= (e) => v.value = e
- }, [U("option", Ex, J(Z(R)("filter.task", "Task")), 1), (q(!0), X(H, null, pr(h.value, (e) => (q(), X("option", {
+ }, [U("option", Ox, J(Z(R)("filter.task", "Task")), 1), (q(!0), X(H, null, pr(h.value, (e) => (q(), X("option", {
key: e,
value: e
- }, J(e), 9, Dx))), 128))], 512)), [[Tr, v.value]]),
+ }, J(e), 9, kx))), 128))], 512)), [[Tr, v.value]]),
p.value ? G("", !0) : hr((q(), X("select", {
key: 1,
"onUpdate:modelValue": a[2] ||= (e) => y.value = e
- }, [U("option", Ox, J(Z(R)("filter.model", "Model")), 1), (q(!0), X(H, null, pr(g.value, (e) => (q(), X("option", {
+ }, [U("option", Ax, J(Z(R)("filter.model", "Model")), 1), (q(!0), X(H, null, pr(g.value, (e) => (q(), X("option", {
key: e,
value: e
- }, J(e), 9, kx))), 128))], 512)), [[Tr, y.value]]),
+ }, J(e), 9, jx))), 128))], 512)), [[Tr, y.value]]),
p.value ? G("", !0) : hr((q(), X("select", {
key: 2,
"onUpdate:modelValue": a[3] ||= (e) => b.value = e
- }, [U("option", Ax, J(Z(R)("filter.runsOn", "Runs on")), 1), (q(!0), X(H, null, pr(_.value, (e) => (q(), X("option", {
+ }, [U("option", Mx, J(Z(R)("filter.runsOn", "Runs on")), 1), (q(!0), X(H, null, pr(_.value, (e) => (q(), X("option", {
key: e,
value: e
- }, J(e), 9, jx))), 128))], 512)), [[Tr, b.value]])
+ }, J(e), 9, Nx))), 128))], 512)), [[Tr, b.value]])
]),
- U("div", Mx, [n.value ? (q(), X("div", Nx, J(Z(R)("status.loading", "Loading...")), 1)) : i.value ? (q(), X("div", Px, J(i.value), 1)) : S.value.length ? (q(), X(H, { key: 3 }, [(q(!0), X(H, null, pr(S.value, (e) => (q(), X("button", {
+ U("div", Px, [n.value ? (q(), X("div", Fx, J(Z(R)("status.loading", "Loading...")), 1)) : i.value ? (q(), X("div", Ix, J(i.value), 1)) : S.value.length ? (q(), X(H, { key: 3 }, [(q(!0), X(H, null, pr(S.value, (e) => (q(), X("button", {
key: e.filepath,
type: "button",
class: wr(["mjr-workflow-picker-card", { "is-selected": s.value === String(e.filepath || "") }]),
onClick: (t) => s.value = String(e.filepath || ""),
onDblclick: A
- }, [U("div", Lx, [E(e) ? (q(), X("img", {
+ }, [U("div", zx, [E(e) ? (q(), X("img", {
key: 0,
src: E(e),
alt: w(e),
loading: "lazy"
- }, null, 8, Rx)) : (q(), X("i", zx))]), U("div", Bx, [
+ }, null, 8, Bx)) : (q(), X("i", Vx))]), U("div", Hx, [
U("strong", null, J(w(e)), 1),
U("span", null, J(T(e)), 1),
U("small", null, J(e.filename), 1)
- ])], 42, Ix))), 128)), !p.value && l.value ? (q(), X("button", {
+ ])], 42, Rx))), 128)), !p.value && l.value ? (q(), X("button", {
key: 0,
type: "button",
class: "mjr-workflow-picker-card mjr-workflow-picker-load-more",
disabled: r.value,
onClick: k
- }, [a[7] ||= U("div", { class: "mjr-workflow-picker-thumb" }, [U("i", { class: "pi pi-angle-down" })], -1), U("div", Hx, [
+ }, [a[7] ||= U("div", { class: "mjr-workflow-picker-thumb" }, [U("i", { class: "pi pi-angle-down" })], -1), U("div", Wx, [
U("strong", null, J(r.value ? Z(R)("status.loading", "Loading...") : Z(R)("action.loadMore", "Load more")), 1),
U("span", null, J(Z(R)("tab.workflow", "Workflow")), 1),
U("small", null, J(c.value) + " loaded", 1)
- ])], 8, Vx)) : G("", !0)], 64)) : (q(), X("div", Fx, J(Z(R)("toast.noWorkflowsFound", "No workflows found.")), 1))]),
- U("footer", Ux, [U("button", {
+ ])], 8, Ux)) : G("", !0)], 64)) : (q(), X("div", Lx, J(Z(R)("toast.noWorkflowsFound", "No workflows found.")), 1))]),
+ U("footer", Gx, [U("button", {
type: "button",
class: "mjr-workflow-picker-btn",
onClick: j
@@ -23154,10 +23243,10 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
class: "mjr-workflow-picker-btn is-primary",
disabled: !C.value,
onClick: A
- }, J(Z(R)("action.apply", "Apply")), 9, Wx)])
+ }, J(Z(R)("action.apply", "Apply")), 9, Kx)])
], 2)], 32)) : G("", !0)]));
}
-}), qx = { class: "mjr-workflow-picker-dialog mjr-workflow-info-dialog" }, Jx = { class: "mjr-workflow-picker-header" }, Yx = { class: "mjr-workflow-picker-title" }, Xx = { class: "mjr-workflow-picker-subtitle" }, Zx = { class: "mjr-workflow-info-form" }, Qx = { class: "is-wide" }, $x = { class: "is-wide" }, eS = { class: "mjr-workflow-picker-footer" }, tS = /* @__PURE__ */ lr({
+}), Yx = { class: "mjr-workflow-picker-dialog mjr-workflow-info-dialog" }, Xx = { class: "mjr-workflow-picker-header" }, Zx = { class: "mjr-workflow-picker-title" }, Qx = { class: "mjr-workflow-picker-subtitle" }, $x = { class: "mjr-workflow-info-form" }, eS = { class: "is-wide" }, tS = { class: "is-wide" }, nS = { class: "mjr-workflow-picker-footer" }, rS = /* @__PURE__ */ lr({
__name: "WorkflowSaveInfoDialog",
setup(e) {
let t = xr({
@@ -23167,18 +23256,18 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
provider: "",
runs_on: "",
notes: ""
- }), n = K(() => y_.initial || {}), r = K(() => R("dialog.saveWorkflowWithInfo", "Save workflow")), i = K(() => R("dialog.workflowInfoAutoFallback", "Leave fields empty to use automatic workflow detection."));
- or(() => y_.open, (e) => {
+ }), n = K(() => x_.initial || {}), r = K(() => R("dialog.saveWorkflowWithInfo", "Save workflow")), i = K(() => R("dialog.workflowInfoAutoFallback", "Leave fields empty to use automatic workflow detection."));
+ or(() => x_.open, (e) => {
if (!e) return;
let r = n.value || {};
t.name = String(r.name || r.workflow?.name || r.workflow?.title || "workflow").trim(), t.task = String(r.task || ""), t.model_family = String(r.model_family || ""), t.provider = String(r.provider || ""), t.runs_on = String(r.runs_on || ""), t.notes = String(r.notes || "");
});
function a() {
- x_(null);
+ C_(null);
}
function o() {
let e = String(t.name || "").trim();
- e && x_({
+ e && C_({
name: e,
task: String(t.task || "").trim(),
model_family: String(t.model_family || "").trim(),
@@ -23189,12 +23278,12 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}
return (e, n) => {
let s = rr("MButton"), c = rr("MInputText"), l = rr("MSelect"), u = rr("MTextarea");
- return q(), nr(Er, { to: "body" }, [Z(y_).open ? (q(), X("div", {
+ return q(), nr(Er, { to: "body" }, [Z(x_).open ? (q(), X("div", {
key: 0,
class: "mjr-workflow-picker-backdrop",
onClick: fr(a, ["self"])
- }, [U("section", qx, [
- U("header", Jx, [U("div", null, [U("div", Yx, J(r.value), 1), U("div", Xx, J(i.value), 1)]), Y(s, {
+ }, [U("section", Yx, [
+ U("header", Xx, [U("div", null, [U("div", Zx, J(r.value), 1), U("div", Qx, J(i.value), 1)]), Y(s, {
type: "button",
class: "mjr-workflow-picker-close",
onClick: a
@@ -23202,8 +23291,8 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
default: W(() => [...n[6] ||= [U("i", { class: "pi pi-times" }, null, -1)]]),
_: 1
})]),
- U("div", Zx, [
- U("label", Qx, [U("span", null, J(Z(R)("dialog.workflowSaveName", "Workflow name")), 1), Y(c, {
+ U("div", $x, [
+ U("label", eS, [U("span", null, J(Z(R)("dialog.workflowSaveName", "Workflow name")), 1), Y(c, {
modelValue: t.name,
"onUpdate:modelValue": n[0] ||= (e) => t.name = e,
type: "text",
@@ -23253,14 +23342,14 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"option-value": "value",
placeholder: "Auto"
}, null, 8, ["modelValue"])]),
- U("label", $x, [n[11] ||= U("span", null, "Notes", -1), Y(u, {
+ U("label", tS, [n[11] ||= U("span", null, "Notes", -1), Y(u, {
modelValue: t.notes,
"onUpdate:modelValue": n[5] ||= (e) => t.notes = e,
rows: "5",
placeholder: "Notes displayed on workflow hover"
}, null, 8, ["modelValue"])])
]),
- U("footer", eS, [Y(s, {
+ U("footer", nS, [Y(s, {
type: "button",
class: "mjr-workflow-picker-secondary",
onClick: a
@@ -23279,7 +23368,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
])])) : G("", !0)]);
};
}
-}), nS = /* @__PURE__ */ lr({
+}), iS = /* @__PURE__ */ lr({
__name: "ContextMenuPortal",
setup(e) {
let t = Q(""), n = K(() => _n(t.value));
@@ -23288,14 +23377,14 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}), tr(() => {
an(t.value), t.value = "";
}), (e, t) => n.value ? (q(), X(H, { key: 0 }, [
- Y(dx),
- Y(nx),
- Y(Kx),
- Y(yx),
- Y(tS)
+ Y(px),
+ Y(ix),
+ Y(Jx),
+ Y(xx),
+ Y(rS)
], 64)) : G("", !0);
}
-}), rS = {
+}), aS = {
class: "mjr-sidebar-content",
style: {
flex: "1",
@@ -23305,29 +23394,29 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"flex-direction": "column",
gap: "16px"
}
-}, iS = {
+}, oS = {
class: "mjr-sidebar-rating-tags",
style: {
display: "flex",
"flex-direction": "column",
gap: "10px"
}
-}, aS = { style: {
+}, sS = { style: {
display: "flex",
"align-items": "center",
gap: "8px"
-} }, oS = { style: {
+} }, cS = { style: {
"font-size": "0.8em",
opacity: "0.6",
"min-width": "44px"
-} }, sS = { style: {
+} }, lS = { style: {
display: "flex",
"flex-direction": "column",
gap: "4px"
-} }, cS = { style: {
+} }, uS = { style: {
"font-size": "0.8em",
opacity: "0.6"
-} }, lS = /* @__PURE__ */ lr({
+} }, dS = /* @__PURE__ */ lr({
__name: "AssetSidebarContent",
props: {
asset: {},
@@ -23348,7 +23437,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
});
function d() {
if (i.sidebar) try {
- Qm(i.sidebar);
+ eh(i.sidebar);
} catch (e) {
console.debug?.(e);
}
@@ -23380,23 +23469,23 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
return (e, n) => {
let r = rr("MButton");
return q(), X(H, null, [
- Y(Ab, {
+ Y(Mb, {
asset: t.asset,
onClose: d
}, null, 8, ["asset"]),
- U("div", rS, [o.value ? (q(), nr(Gb, {
+ U("div", aS, [o.value ? (q(), nr(qb, {
key: 0,
asset: t.asset
}, null, 8, ["asset"])) : (q(), X(H, { key: 1 }, [s.value ? G("", !0) : (q(), X(H, { key: 0 }, [
- Y(zb, {
+ Y(Vb, {
asset: t.asset,
"show-preview-thumb": u.value
}, null, 8, ["asset", "show-preview-thumb"]),
- U("div", iS, [U("div", aS, [U("span", oS, J(Z(R)("sidebar.rating", "Rating")), 1), Y(qb, {
+ U("div", oS, [U("div", sS, [U("span", cS, J(Z(R)("sidebar.rating", "Rating")), 1), Y(Yb, {
asset: t.asset,
"model-value": c.value,
size: 60
- }, null, 8, ["asset", "model-value"])]), U("div", sS, [U("span", cS, J(Z(R)("sidebar.tags", "Tags")), 1), Y(Mr, {
+ }, null, 8, ["asset", "model-value"])]), U("div", lS, [U("span", uS, J(Z(R)("sidebar.tags", "Tags")), 1), Y(Mr, {
asset: t.asset,
"model-value": l.value
}, null, 8, ["asset", "model-value"])])]),
@@ -23422,11 +23511,11 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}, 8, ["disabled", "title"])) : G("", !0),
Y(Pn, { asset: t.asset }, null, 8, ["asset"])
], 64)), Y(zn, { asset: t.asset }, null, 8, ["asset"])], 64))]),
- Y(nS)
+ Y(iS)
], 64);
};
}
-}), uS = {
+}), fS = {
key: 1,
class: "mjr-sidebar-placeholder",
style: {
@@ -23439,10 +23528,10 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"font-size": "0.85em",
"text-align": "center"
}
-}, dS = /* @__PURE__ */ lr({
+}, pS = /* @__PURE__ */ lr({
__name: "SidebarSection",
setup(e, { expose: t }) {
- let n = Q(null), { activeAsset: r, onUpdateCallback: i } = Bm();
+ let n = Q(null), { activeAsset: r, onUpdateCallback: i } = Hm();
return kr(() => {
let e = n.value;
if (!e) return;
@@ -23453,7 +23542,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}, a = (n) => {
let r = n?.detail || {}, a = r.assetId ?? r.id ?? null, o = Number(r.rating);
if (t(a) && Number.isFinite(o)) {
- Um({ rating: o }, i.value);
+ Gm({ rating: o }, i.value);
try {
e._currentAsset && (e._currentAsset.rating = o), e._currentFullAsset && (e._currentFullAsset.rating = o);
} catch (e) {
@@ -23463,7 +23552,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}, o = (n) => {
let r = n?.detail || {}, a = r.assetId ?? r.id ?? null, o = Array.isArray(r.tags) ? r.tags : null;
if (t(a) && o) {
- Um({ tags: o }, i.value);
+ Gm({ tags: o }, i.value);
try {
e._currentAsset && (e._currentAsset.tags = o), e._currentFullAsset && (e._currentFullAsset.tags = o);
} catch (e) {
@@ -23515,7 +23604,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
transition: "width 140ms ease,max-width 140ms ease,flex-basis 140ms ease,border-color 140ms ease",
contain: "layout paint style"
}
- }, [Z(r) ? (q(), nr(lS, {
+ }, [Z(r) ? (q(), nr(dS, {
key: 0,
asset: Z(r),
"on-update": Z(i),
@@ -23524,9 +23613,9 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
"asset",
"on-update",
"sidebar"
- ])) : (q(), X("div", uS, J(Z(R)("sidebar.placeholderSelectAsset", "Select an asset to view details")), 1))], 512));
+ ])) : (q(), X("div", fS, J(Z(R)("sidebar.placeholderSelectAsset", "Select an asset to view details")), 1))], 512));
}
-}), fS = /* @__PURE__ */ lr({
+}), mS = /* @__PURE__ */ lr({
__name: "App",
setup(e) {
let t = Q(null), n = Q(null), r = Q(null), i = Q(null), a = Q(null), o = Q(null), s = null;
@@ -23535,7 +23624,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
let e = {};
n.value && (e.statusSection = n.value.statusSection, e.statusDot = n.value.statusDot, e.statusText = n.value.statusText, e.capabilitiesSection = n.value.capabilitiesSection), r.value && (e.headerSection = r.value), i.value && (e.summaryBar = i.value.summaryBar, e.updateSummaryBar = i.value.updateSummaryBar, e.folderBreadcrumb = i.value.folderBreadcrumb, e.folderBreadcrumbController = i.value), a.value && (e.browseSection = a.value.browseSection, e.gridWrapper = a.value.gridWrapper, e.gridContainer = a.value.gridContainer, e.onGridContainerReady = (...e) => a.value?.onGridContainerReady?.(...e), e.bindGridHostState = (...e) => a.value?.bindGridHostState?.(...e), e.restoreGridUiState = (...e) => a.value?.restoreGridUiState?.(...e), e.initAssetsQueryController = (...e) => a.value?.initAssetsQueryController?.(...e), e.loadAssets = (e, t = "*", n = {}) => a.value?.loadAssets?.(t, n), e.loadAssetsFromList = (e, t = [], n = {}) => a.value?.loadAssetsFromList?.(t, n), e.prepareGridForScopeSwitch = (e) => a.value?.prepareGridForScopeSwitch?.(), e.refreshGrid = (e) => a.value?.refreshGrid?.(), e.captureAnchor = (e) => a.value?.captureAnchor?.(), e.restoreAnchor = (e, t) => a.value?.restoreAnchor?.(t), e.hydrateGridFromSnapshot = (e, t = {}, n = {}) => a.value?.hydrateGridFromSnapshot?.(t, n), e.upsertAsset = (e, t) => a.value?.upsertAsset?.(t), e.removeAssets = (e, t = [], n = {}) => a.value?.removeAssets?.(t, n), e.disposeGrid = (e) => a.value?.disposeGrid?.()), o.value && (e.sidebar = o.value.sidebar);
try {
- s = await g_(t.value, {
+ s = await v_(t.value, {
useComfyThemeUI: !0,
external: e
});
@@ -23543,7 +23632,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
console.warn("[Majoor] App.vue: mountAssetsManagerPanelRuntime failed", e);
}
try {
- lh().validatePersistedCustomRoot?.();
+ dh().validatePersistedCustomRoot?.();
} catch {}
}), tr(() => {
try {
@@ -23551,27 +23640,27 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
} catch {}
s = null;
}), (e, s) => (q(), X(H, null, [
- Y(v_, {
+ Y(b_, {
ref_key: "statusSectionRef",
ref: n
}, null, 512),
- Y(Zy, {
+ Y($y, {
ref_key: "headerSectionRef",
ref: r
}, null, 512),
- Y(hb, {
+ Y(_b, {
ref_key: "summaryBarSectionRef",
ref: i
}, null, 512),
- Y(Db, {
+ Y(kb, {
ref_key: "assetsGridRef",
ref: a
}, null, 512),
- Y(dS, {
+ Y(pS, {
ref_key: "sidebarSectionRef",
ref: o
}, null, 512),
- Y(nS),
+ Y(iS),
U("div", {
ref_key: "containerRef",
ref: t,
@@ -23585,7 +23674,7 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}, null, 512)
], 64));
}
-}), pS = /* @__PURE__ */ lr({
+}), hS = /* @__PURE__ */ lr({
__name: "GeneratedFeedApp",
setup(e) {
let t = Q(null), n = null;
@@ -23607,16 +23696,16 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}
return kr(() => {
if (t.value) try {
- r(t.value), n = Jd(t.value);
+ r(t.value), n = Xd(t.value);
} catch (e) {
console.warn("[Majoor] GeneratedFeedApp.vue: createGeneratedFeedHost failed", e);
}
}), tr(() => {
try {
- Yd(n);
+ Zd(n);
} catch {}
n = null;
- }), (e, n) => (q(), X(H, null, [Y(nS), U("div", {
+ }), (e, n) => (q(), X(H, null, [Y(iS), U("div", {
ref_key: "containerRef",
ref: t,
class: "mjr-vue-feed-root",
@@ -23631,38 +23720,38 @@ var Nb = { class: "mjr-sidebar-preview" }, Pb = ["src"], Fb = ["src"], Ib = ["sr
}
}, null, 512)], 64));
}
-}), mS = "data-mjr-topbar-mfv-host", hS = "data-mjr-topbar-mfv-button", gS = "data-mjr-topbar-mfv-slot", _S = "label.floatingViewer", vS = "Viewer", yS = "V", bS = "viewer.mfvTopbarButton", xS = null, SS = null, CS = null, wS = null, TS = null, ES = null, DS = null, OS = null, kS = !1, AS = null, jS = !1, MS = !1;
-function NS(e) {
+}), gS = "data-mjr-topbar-mfv-host", _S = "data-mjr-topbar-mfv-button", vS = "data-mjr-topbar-mfv-slot", yS = "label.floatingViewer", bS = "Viewer", xS = "V", SS = "viewer.mfvTopbarButton", CS = null, wS = null, TS = null, ES = null, DS = null, OS = null, kS = null, AS = null, jS = !1, MS = null, NS = !1, PS = !1;
+function FS(e) {
if (!e) {
- !TS && typeof MutationObserver < "u" && (TS = new MutationObserver(() => {
- PS() && (TS?.disconnect?.(), TS = null, JS());
- }), TS.observe(document.body, {
+ !DS && typeof MutationObserver < "u" && (DS = new MutationObserver(() => {
+ IS() && (DS?.disconnect?.(), DS = null, XS());
+ }), DS.observe(document.body, {
childList: !0,
subtree: !0
}));
return;
}
try {
- TS?.disconnect?.();
+ DS?.disconnect?.();
} catch {}
- if (TS = null, SS !== e) {
- try {
- xS?.disconnect?.();
- } catch {}
- xS = new MutationObserver(() => JS()), xS.observe(e, { childList: !0 }), SS = e;
- }
- let t = e.parentElement;
- if (t && wS !== t) {
+ if (DS = null, wS !== e) {
try {
CS?.disconnect?.();
} catch {}
- CS = new MutationObserver(() => JS()), CS.observe(t, { childList: !0 }), wS = t;
+ CS = new MutationObserver(() => XS()), CS.observe(e, { childList: !0 }), wS = e;
+ }
+ let t = e.parentElement;
+ if (t && ES !== t) {
+ try {
+ TS?.disconnect?.();
+ } catch {}
+ TS = new MutationObserver(() => XS()), TS.observe(t, { childList: !0 }), ES = t;
}
}
-function PS() {
+function IS() {
return typeof document > "u" ? null : document.querySelector(".actionbar-container");
}
-function FS(e = PS()) {
+function LS(e = IS()) {
if (typeof document > "u") return;
let t = document.documentElement?.style;
if (!t) return;
@@ -23673,90 +23762,84 @@ function FS(e = PS()) {
let n = e.getBoundingClientRect(), r = Math.max(60, Math.ceil(n.bottom + 12));
t.setProperty("--mjr-mfv-top-offset", `${r}px`);
}
-function IS(e) {
+function RS(e) {
return e && e.querySelector(".queue-button-group") || null;
}
-function LS(e) {
+function zS(e) {
if (!e) return null;
- let t = e.querySelector(`[${gS}]`);
- t || (t = document.createElement("div"), t.setAttribute(gS, "1"), t.className = "flex h-full items-center pointer-events-auto", t.style.position = "relative", t.style.zIndex = "10030", t.style.padding = "0 4px");
- let n = IS(e), r = n?.parentElement || e;
+ let t = e.querySelector(`[${vS}]`);
+ t || (t = document.createElement("div"), t.setAttribute(vS, "1"), t.className = "flex h-full items-center pointer-events-auto", t.style.position = "relative", t.style.zIndex = "10030", t.style.padding = "0 4px");
+ let n = RS(e), r = n?.parentElement || e;
return t.parentElement === r ? n && r && t.previousElementSibling !== n ? r.insertBefore(t, n.nextSibling) : !n && t !== r.lastElementChild && r.appendChild(t) : n && r ? r.insertBefore(t, n.nextSibling) : r.appendChild(t), t;
}
-function RS(e = "pi pi-eye") {
+function BS(e = "pi pi-eye") {
let t = document.createElement("i");
return t.className = e, t.setAttribute("aria-hidden", "true"), t;
}
-function zS(e = "Viewer") {
+function VS(e = "Viewer") {
let t = document.createElement("span");
return t.className = "mjr-topbar-mfv-label", t.textContent = e, t;
}
-function BS(e) {
+function HS(e) {
if (!e) return;
- let t = jS ? R("tooltip.closeMFV", "Close Floating Viewer") : R("tooltip.openMFV", "Open Floating Viewer");
- Lt(e, t, yS, { ariaLabel: t }), e.setAttribute("aria-pressed", jS ? "true" : "false"), e.classList.toggle("primary", jS), e.classList.toggle("mjr-topbar-mfv-active", jS), e.replaceChildren(RS(jS ? "pi pi-eye-slash" : "pi pi-eye"), zS(R(_S, vS)));
+ let t = NS ? R("tooltip.closeMFV", "Close Floating Viewer") : R("tooltip.openMFV", "Open Floating Viewer");
+ Lt(e, t, xS, { ariaLabel: t }), e.setAttribute("aria-pressed", NS ? "true" : "false"), e.classList.toggle("primary", NS), e.classList.toggle("mjr-topbar-mfv-active", NS), e.replaceChildren(BS(NS ? "pi pi-eye-slash" : "pi pi-eye"), VS(R(yS, bS)));
}
-function VS() {
+function US() {
try {
window.dispatchEvent(new Event(V.MFV_TOGGLE));
} catch (e) {
console.debug?.("[Majoor] top bar MFV launch failed", e);
}
- JS();
-}
-function HS() {
- let e = document.createElement("button");
- return e.type = "button", e.setAttribute(hS, "1"), e.className = "comfyui-button mjr-topbar-mfv-button", e.style.position = "relative", e.style.zIndex = "10030", e.style.width = "auto", e.style.height = "32px", e.style.minWidth = "32px", e.style.padding = "0 10px", e.style.gap = "6px", e.style.display = "inline-flex", e.style.alignItems = "center", e.style.justifyContent = "center", e.style.whiteSpace = "nowrap", e.addEventListener("click", VS), BS(e), e;
-}
-function US() {
- let e = document.createElement("div");
- return e.setAttribute(mS, "1"), e.className = "mjr-topbar-mfv-button-host", e.style.position = "relative", e.appendChild(HS()), e;
+ XS();
}
function WS() {
- if (typeof document > "u" || MS) return;
- let e = !!document.querySelector(".mjr-mfv.is-visible");
- jS !== e && (jS = e);
+ let e = document.createElement("button");
+ return e.type = "button", e.setAttribute(_S, "1"), e.className = "comfyui-button mjr-topbar-mfv-button", e.style.position = "relative", e.style.zIndex = "10030", e.style.width = "auto", e.style.height = "32px", e.style.minWidth = "32px", e.style.padding = "0 10px", e.style.gap = "6px", e.style.display = "inline-flex", e.style.alignItems = "center", e.style.justifyContent = "center", e.style.whiteSpace = "nowrap", e.addEventListener("click", US), HS(e), e;
}
function GS() {
- return B.MFV_TOPBAR_BUTTON !== !1;
+ let e = document.createElement("div");
+ return e.setAttribute(gS, "1"), e.className = "mjr-topbar-mfv-button-host", e.style.position = "relative", e.appendChild(WS()), e;
}
function KS() {
- try {
- document.querySelector(`[${mS}]`)?.remove?.(), document.querySelector(`[${gS}]`)?.remove?.();
- } catch (e) {
- console.debug?.(e);
- }
+ if (typeof document > "u" || PS) return;
+ let e = !!document.querySelector(".mjr-mfv.is-visible");
+ NS !== e && (NS = e);
}
function qS() {
- let e = PS();
- if (!e) return FS(null), null;
- if (!GS()) return KS(), FS(e), null;
- NS(e), WS();
- let t = LS(e);
- if (!t) return FS(e), null;
- let n = t.querySelector(`[${mS}]`);
- return n ||= US(), n.parentElement !== t && t.replaceChildren(n), FS(e), BS(n.querySelector(`[${hS}]`)), t;
+ return B.MFV_TOPBAR_BUTTON !== !1;
}
function JS() {
- kS || (kS = !0, AS = window.setTimeout(() => {
- kS = !1, AS = null, qS();
- }, 32));
-}
-function YS() {
- return typeof window > "u" || typeof document > "u" || !document.body ? !1 : (JS(), ES || (ES = (e) => {
- jS = !!e?.detail?.visible, MS = !0, JS();
- }, window.addEventListener(V.MFV_VISIBILITY_CHANGED, ES)), DS || (DS = () => JS(), window.addEventListener("resize", DS)), OS || (OS = (e) => {
- let t = e?.detail?.key;
- (t === bS || t === "storage") && JS();
- }, window.addEventListener("mjr-settings-changed", OS)), NS(PS()), !0);
-}
-function XS() {
try {
- xS?.disconnect?.();
+ document.querySelector(`[${gS}]`)?.remove?.(), document.querySelector(`[${vS}]`)?.remove?.();
} catch (e) {
console.debug?.(e);
}
- xS = null, SS = null;
+}
+function YS() {
+ let e = IS();
+ if (!e) return LS(null), null;
+ if (!qS()) return JS(), LS(e), null;
+ FS(e), KS();
+ let t = zS(e);
+ if (!t) return LS(e), null;
+ let n = t.querySelector(`[${gS}]`);
+ return n ||= GS(), n.parentElement !== t && t.replaceChildren(n), LS(e), HS(n.querySelector(`[${_S}]`)), t;
+}
+function XS() {
+ jS || (jS = !0, MS = window.setTimeout(() => {
+ jS = !1, MS = null, YS();
+ }, 32));
+}
+function ZS() {
+ return typeof window > "u" || typeof document > "u" || !document.body ? !1 : (XS(), OS || (OS = (e) => {
+ NS = !!e?.detail?.visible, PS = !0, XS();
+ }, window.addEventListener(V.MFV_VISIBILITY_CHANGED, OS)), kS || (kS = () => XS(), window.addEventListener("resize", kS)), AS || (AS = (e) => {
+ let t = e?.detail?.key;
+ (t === SS || t === "storage") && XS();
+ }, window.addEventListener("mjr-settings-changed", AS)), FS(IS()), !0);
+}
+function QS() {
try {
CS?.disconnect?.();
} catch (e) {
@@ -23768,70 +23851,76 @@ function XS() {
} catch (e) {
console.debug?.(e);
}
- TS = null;
+ TS = null, ES = null;
try {
- AS && window.clearTimeout(AS);
+ DS?.disconnect?.();
} catch (e) {
console.debug?.(e);
}
- AS = null, ES && typeof window < "u" && window.removeEventListener(V.MFV_VISIBILITY_CHANGED, ES), ES = null, DS && typeof window < "u" && window.removeEventListener("resize", DS), DS = null, OS && typeof window < "u" && window.removeEventListener("mjr-settings-changed", OS), OS = null, kS = !1, jS = !1, MS = !1;
+ DS = null;
try {
- document.documentElement?.style?.setProperty("--mjr-mfv-top-offset", "60px"), document.querySelector(`[${mS}]`)?.remove?.(), document.querySelector(`[${gS}]`)?.remove?.();
+ MS && window.clearTimeout(MS);
+ } catch (e) {
+ console.debug?.(e);
+ }
+ MS = null, OS && typeof window < "u" && window.removeEventListener(V.MFV_VISIBILITY_CHANGED, OS), OS = null, kS && typeof window < "u" && window.removeEventListener("resize", kS), kS = null, AS && typeof window < "u" && window.removeEventListener("mjr-settings-changed", AS), AS = null, jS = !1, NS = !1, PS = !1;
+ try {
+ document.documentElement?.style?.setProperty("--mjr-mfv-top-offset", "60px"), document.querySelector(`[${gS}]`)?.remove?.(), document.querySelector(`[${vS}]`)?.remove?.();
} catch (e) {
console.debug?.(e);
}
}
// ui/features/runtime/entryUiRegistration.ts
-var ZS = "mjr-global-runtime-root", QS = "_mjrGlobalRuntimeVueApp", $S = "_mjrSidebarVueApp", eC = "_mjrFeedVueApp", tC = "majoor-generated-feed", nC = null;
-function rC() {
+var $S = "mjr-global-runtime-root", eC = "_mjrGlobalRuntimeVueApp", tC = "_mjrSidebarVueApp", nC = "_mjrFeedVueApp", rC = "majoor-generated-feed", iC = null;
+function aC() {
if (typeof document > "u" || !document?.body) return null;
- let e = document.getElementById(ZS);
- return e || (e = document.createElement("div"), e.id = ZS, e.setAttribute("role", "presentation"), e.style.cssText = "position:fixed;inset:0;overflow:visible;pointer-events:none;z-index:10020;", document.body.appendChild(e), e);
+ let e = document.getElementById($S);
+ return e || (e = document.createElement("div"), e.id = $S, e.setAttribute("role", "presentation"), e.style.cssText = "position:fixed;inset:0;overflow:visible;pointer-events:none;z-index:10020;", document.body.appendChild(e), e);
}
-function iC() {
+function oC() {
try {
- let e = rC();
+ let e = aC();
if (!e) return !1;
- let t = !!En(e, Fp, QS);
- return YS(), t;
+ let t = !!En(e, Lp, eC);
+ return ZS(), t;
} catch {
return !1;
}
}
-function aC() {
+function sC() {
try {
- XS();
- let e = document.getElementById(ZS);
+ QS();
+ let e = document.getElementById($S);
if (!e) return;
- In(e, QS), e.remove?.();
+ In(e, eC), e.remove?.();
} catch {}
}
-function oC(e, t) {
+function cC(e, t) {
let n = We(e, t);
- if (Rf(), !n) try {
+ if (Bf(), !n) try {
window.dispatchEvent(new Event(V.OPEN_ASSETS_MANAGER));
} catch (e) {
console.debug?.(e);
}
return n;
}
-function sC() {
+function lC() {
try {
window.dispatchEvent(new CustomEvent(V.RELOAD_GRID, { detail: { reason: "command" } }));
} catch (e) {
console.debug?.(e);
}
}
-function cC(e) {
- let t = Ze(e, tC);
+function uC(e) {
+ let t = Ze(e, rC);
if (!t) try {
- Md();
+ Pd();
} catch (e) {
console.debug?.(e);
}
return t;
}
-async function lC() {
+async function dC() {
try {
let t = await L(st.BROWSE_FOLDER, {});
if (t?.ok) return String(t?.data?.path || "").trim();
@@ -23842,8 +23931,8 @@ async function lC() {
}
return "";
}
-async function uC(t, { settingId: n, settingsPathKey: r, save: i, successMessage: a, restartRequired: o = !1 }) {
- let s = await lC();
+async function fC(t, { settingId: n, settingsPathKey: r, save: i, successMessage: a, restartRequired: o = !1 }) {
+ let s = await dC();
if (!s) return !1;
let c = await i(s);
if (!c?.ok) return e(c?.error || R("toast.settingsPathSaveFailed", "Failed to save path"), "error"), !1;
@@ -23858,10 +23947,10 @@ async function uC(t, { settingId: n, settingsPathKey: r, save: i, successMessage
}
return e(o ? `${a} ${R("toast.restartComfyUiToApply", "Restart ComfyUI to apply.")}` : a, "success", 2800), !0;
}
-function dC(e) {
- return PC(e).find(NC) || null;
+function pC(e) {
+ return IC(e).find(FC) || null;
}
-function fC(e) {
+function mC(e) {
let t = String(e?.id ?? e?.nodeId ?? e?.node_id ?? "").trim();
if (!t) return null;
let n = String(e?.comfyClass || e?.type || e?.constructor?.type || "").trim();
@@ -23873,7 +23962,7 @@ function fC(e) {
title: String(e?.title || e?.properties?.title || e?.properties?.name || n || "").trim()
};
}
-async function pC(e) {
+async function hC(e) {
if (!e) return [];
try {
let t = (await import("./chunks/NodeStreamController-CIKDDXJT.js")).extractNodeFileData?.(e), n = String(t?.filename || "").trim();
@@ -23887,7 +23976,7 @@ async function pC(e) {
return console.debug?.(e), [];
}
}
-function mC(e) {
+function gC(e) {
try {
if (typeof window > "u") return;
window.MajoorAssetsManager = window.MajoorAssetsManager || {}, window.MajoorAssetsManager.pendingNodeContext = e, window.dispatchEvent(new CustomEvent(V.OPEN_NODE_CONTEXT, { detail: e }));
@@ -23895,18 +23984,18 @@ function mC(e) {
console.debug?.(e);
}
}
-async function hC(t, n, r) {
- oC(t, n);
- let i = fC(r) || {}, a = await pC(r);
+async function _C(t, n, r) {
+ cC(t, n);
+ let i = mC(r) || {}, a = await hC(r);
a.length && (i.files = a);
let o = String(r?.comfyClass || r?.type || "").toLowerCase();
- return a.length && /load|upload/.test(o) && (delete i.source_node_id, delete i.sourceNodeId), !i.source_node_id && !a.length ? (e(R("toast.nodeContextMissing", "Select an output node first."), "info", 2200), !1) : (mC(i), !0);
+ return a.length && /load|upload/.test(o) && (delete i.source_node_id, delete i.sourceNodeId), !i.source_node_id && !a.length ? (e(R("toast.nodeContextMissing", "Select an output node first."), "info", 2200), !1) : (gC(i), !0);
}
-async function gC(e) {
+async function vC(e) {
try {
- let t = await pC(e);
+ let t = await hC(e);
if (t.length) {
- let { floatingViewerManager: e } = await import("./chunks/floatingViewerManager-DYNfChQt.js").then((e) => e.n);
+ let { floatingViewerManager: e } = await import("./chunks/floatingViewerManager-DQlULmZ-.js").then((e) => e.n);
if (await e.openAssets({
assets: t,
index: 0
@@ -23922,11 +24011,11 @@ async function gC(e) {
}
return !1;
}
-function _C(t, n) {
- let r = nC;
- return r ? (hC(t, n, r), !0) : (e(R("toast.nodeContextMissing", "Select an output node first."), "info", 2200), !1);
+function yC(t, n) {
+ let r = iC;
+ return r ? (_C(t, n, r), !0) : (e(R("toast.nodeContextMissing", "Select an output node first."), "info", 2200), !1);
}
-function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
+function bC(e, { sidebarTabId: t, triggerStartupScan: n }) {
return [
{
id: "mjr.openAssetsManager",
@@ -23935,7 +24024,7 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
title: R("tooltip.openAssetsManager", "Open Majoor Assets Manager"),
description: R("tooltip.openAssetsManager", "Open Majoor Assets Manager"),
icon: "pi pi-folder-open",
- function: () => oC(e, t)
+ function: () => cC(e, t)
},
{
id: "mjr.scanAssets",
@@ -23959,7 +24048,7 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
id: "mjr.refreshAssetsGrid",
label: R("command.refreshAssetsGrid", "Refresh assets grid"),
icon: "pi pi-sync",
- function: () => sC()
+ function: () => lC()
},
{
id: "mjr.openFloatingViewer",
@@ -23983,7 +24072,7 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
title: R("tooltip.openGeneratedFeed", "Open the Majoor generated feed panel"),
description: R("tooltip.openGeneratedFeed", "Open the Majoor generated feed panel"),
icon: "pi pi-list",
- function: () => cC(e)
+ function: () => uC(e)
},
{
id: "mjr.openSettings",
@@ -23998,7 +24087,7 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
title: R("tooltip.pickOutputDirectory", "Use the native folder browser to set Majoor's generation output directory"),
description: R("tooltip.pickOutputDirectory", "Use the native folder browser to set Majoor's generation output directory"),
icon: "pi pi-folder",
- function: () => uC(e, {
+ function: () => fC(e, {
settingId: "Majoor.Paths.OutputDirectory",
settingsPathKey: "outputDirectory",
save: se,
@@ -24012,7 +24101,7 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
title: R("tooltip.pickIndexDirectory", "Use the native folder browser to set Majoor's index database directory"),
description: R("tooltip.pickIndexDirectory", "Use the native folder browser to set Majoor's index database directory"),
icon: "pi pi-database",
- function: () => uC(e, {
+ function: () => fC(e, {
settingId: "Majoor.Paths.IndexDirectory",
settingsPathKey: "indexDirectory",
save: s,
@@ -24027,7 +24116,7 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
title: R("tooltip.openNodeContext", "Show the latest indexed assets produced by this node"),
description: R("tooltip.openNodeContext", "Show the latest indexed assets produced by this node"),
icon: "pi pi-sitemap",
- function: () => _C(e, t)
+ function: () => yC(e, t)
},
{
id: "mjr.openNodeInFloatingViewer",
@@ -24037,12 +24126,12 @@ function vC(e, { sidebarTabId: t, triggerStartupScan: n }) {
description: R("tooltip.openNodeInFloatingViewer", "Open this node's media in the Majoor floating viewer"),
icon: "pi pi-window-maximize",
function: () => {
- gC(nC);
+ vC(iC);
}
}
];
}
-function yC() {
+function xC() {
return [{
combo: {
alt: !0,
@@ -24059,7 +24148,7 @@ function yC() {
commandId: "mjr.toggleFloatingViewer"
}];
}
-function bC() {
+function SC() {
return [{
path: ["Extensions", "Majoor Assets Manager"],
commands: [
@@ -24074,13 +24163,13 @@ function bC() {
]
}];
}
-function xC(e, { sidebarTabId: t, triggerStartupScan: n }) {
+function CC(e, { sidebarTabId: t, triggerStartupScan: n }) {
return [null, {
content: "Majoor Assets Manager",
submenu: { options: [
{
content: R("tooltip.openAssetsManager", "Open Majoor Assets Manager"),
- callback: () => oC(e, t)
+ callback: () => cC(e, t)
},
{
content: R("command.openFloatingViewer", "Open floating viewer"),
@@ -24094,12 +24183,12 @@ function xC(e, { sidebarTabId: t, triggerStartupScan: n }) {
},
{
content: R("command.openGeneratedFeed", "Open generated feed"),
- callback: () => cC(e)
+ callback: () => uC(e)
},
null,
{
content: R("command.refreshAssetsGrid", "Refresh assets grid"),
- callback: () => sC()
+ callback: () => lC()
},
{
content: R("command.scanAssets", "Scan assets"),
@@ -24112,7 +24201,7 @@ function xC(e, { sidebarTabId: t, triggerStartupScan: n }) {
] }
}];
}
-function SC() {
+function wC() {
return [
{
label: "Majoor Assets Manager",
@@ -24129,14 +24218,14 @@ function SC() {
}
];
}
-function CC(e, t) {
- for (let n of vC(e, t)) Fe(e, n);
+function TC(e, t) {
+ for (let n of bC(e, t)) Fe(e, n);
}
-function wC(e) {
- for (let t of yC()) Be(e, t);
+function EC(e) {
+ for (let t of xC()) Be(e, t);
}
-function TC(e, { sidebarTabId: t }) {
- return If({ sidebarTabId: t }), Ve(e, {
+function DC(e, { sidebarTabId: t }) {
+ return Rf({ sidebarTabId: t }), Ve(e, {
id: t,
icon: "pi pi-folder",
title: R("manager.title"),
@@ -24144,8 +24233,8 @@ function TC(e, { sidebarTabId: t }) {
tooltip: R("tooltip.sidebarTab"),
type: "custom",
render(e) {
- Rf(), ai({ idleOnly: !0 }).catch(() => null), En(e, fS, $S), setTimeout(() => {
- let e = Vf();
+ Bf(), ai({ idleOnly: !0 }).catch(() => null), En(e, mS, tC), setTimeout(() => {
+ let e = Uf();
if (e) try {
window.dispatchEvent(new CustomEvent(V.RELOAD_GRID, { detail: {
reason: "pending-generated-assets",
@@ -24159,77 +24248,77 @@ function TC(e, { sidebarTabId: t }) {
destroy(e) {}
});
}
-function EC() {
+function OC() {
try {
- In(null, $S);
+ In(null, tC);
} catch {}
- DC = !1;
+ kC = !1;
try {
- document.getElementById(OC)?.remove?.();
+ document.getElementById(AC)?.remove?.();
} catch {}
}
-var DC = !1, OC = "mjr-sidebar-prewarm-host";
-function kC() {
- if (DC || typeof document > "u" || !document?.body || wn($S)) return !1;
- DC = !0;
+var kC = !1, AC = "mjr-sidebar-prewarm-host";
+function jC() {
+ if (kC || typeof document > "u" || !document?.body || wn(tC)) return !1;
+ kC = !0;
try {
- let e = document.getElementById(OC);
- return e || (e = document.createElement("div"), e.id = OC, e.style.cssText = "position:fixed;left:-99999px;top:0;width:360px;height:600px;overflow:hidden;visibility:hidden;pointer-events:none;contain:strict;", e.setAttribute("aria-hidden", "true"), document.body.appendChild(e)), En(e, fS, $S, { attachIfExists: !1 }), !0;
+ let e = document.getElementById(AC);
+ return e || (e = document.createElement("div"), e.id = AC, e.style.cssText = "position:fixed;left:-99999px;top:0;width:360px;height:600px;overflow:hidden;visibility:hidden;pointer-events:none;contain:strict;", e.setAttribute("aria-hidden", "true"), document.body.appendChild(e)), En(e, mS, tC, { attachIfExists: !1 }), !0;
} catch (e) {
- return console.debug?.(e), DC = !1, !1;
+ return console.debug?.(e), kC = !1, !1;
}
}
-function AC() {
+function MC() {
return {
- id: tC,
+ id: rC,
title: R("bottomFeed.title", "Generated Feed"),
icon: "pi pi-images",
type: "custom",
render(e) {
- En(e, pS, eC);
+ En(e, hS, nC);
},
destroy(e) {}
};
}
-function jC() {
- return [AC()];
+function NC() {
+ return [MC()];
}
-function MC() {
+function PC() {
try {
- In(null, eC);
+ In(null, nC);
} catch {}
}
-function NC(e) {
+function FC(e) {
let t = String(e?.comfyClass || e?.type || e?.constructor?.type || "").trim();
return t ? /save|load|preview/i.test(t) : !1;
}
-function PC(e) {
+function IC(e) {
return e ? Array.isArray(e) ? e.filter(Boolean) : e instanceof Set ? Array.from(e).filter(Boolean) : e instanceof Map ? Array.from(e.values()).filter(Boolean) : Array.isArray(e?.items) ? e.items.filter(Boolean) : Array.isArray(e?.nodes) ? e.nodes.filter(Boolean) : [e] : [];
}
-function FC(e) {
- return nC = dC(e), nC ? [
+function LC(e) {
+ return iC = pC(e), iC ? [
"mjr.openNodeContext",
"mjr.openAssetsManager",
"mjr.openNodeInFloatingViewer"
] : [];
}
-function IC(e, t) {
+function RC(e, t) {
return {
content: e,
callback: t
};
}
-function LC(t, n, { sidebarTabId: r }) {
- return NC(t) ? [
- IC("View in Assets Manager", () => {
- hC(n, r, t);
+function zC(t, n, { sidebarTabId: r }) {
+ return FC(t) ? [
+ RC("View in Assets Manager", () => {
+ _C(n, r, t);
}),
- IC("Open in Floating Viewer", () => {
- gC(t);
+ RC("Open in Floating Viewer", () => {
+ vC(t);
}),
- IC("Index Output", () => {
+ RC("Index Output", () => {
try {
- sC(), e(R("toast.rescanningFile", "Rescanning file..."), "info", 1800);
+ lC(), e(R("toast.rescanningFile", "Rescanning file..."), "info", 1800);
} catch (e) {
console.debug?.(e);
}
@@ -24237,15 +24326,15 @@ function LC(t, n, { sidebarTabId: r }) {
] : [];
}
// ui/features/runtime/entryRuntimeLifecycle.ts
-var RC = "__MJR_ENTRY_RUNTIME__";
-function zC(e, t) {
+var BC = "__MJR_ENTRY_RUNTIME__";
+function VC(e, t) {
if (e) try {
e._mjrAssetUpdateReloadTimer &&= (clearTimeout(e._mjrAssetUpdateReloadTimer), null), e._mjrExecutedHandler && e.removeEventListener("executed", e._mjrExecutedHandler), e._mjrAssetAddedHandler && e.removeEventListener("mjr-asset-added", e._mjrAssetAddedHandler), e._mjrAssetUpdatedHandler && e.removeEventListener("mjr-asset-updated", e._mjrAssetUpdatedHandler), e._mjrStructuredEventHandler && e.removeEventListener(V.STRUCTURED_EVENT, e._mjrStructuredEventHandler), e._mjrScanCompleteHandler && e.removeEventListener(V.SCAN_COMPLETE, e._mjrScanCompleteHandler), e._mjrScanProgressHandler && e.removeEventListener(V.SCAN_PROGRESS, e._mjrScanProgressHandler), e._mjrAssetIndexingHandler && e.removeEventListener(V.ASSET_INDEXING, e._mjrAssetIndexingHandler), e._mjrAssetIndexedHandler && e.removeEventListener(V.ASSET_INDEXED, e._mjrAssetIndexedHandler), e._mjrExecutionStartHandler && e.removeEventListener("execution_start", e._mjrExecutionStartHandler), e._mjrExecutionEndHandler && (e.removeEventListener("execution_success", e._mjrExecutionEndHandler), e.removeEventListener("execution_error", e._mjrExecutionEndHandler), e.removeEventListener("execution_interrupted", e._mjrExecutionEndHandler)), e._mjrStacksUpdatedHandler && e.removeEventListener("mjr.stacks.updated", e._mjrStacksUpdatedHandler), e._mjrEnrichmentStatusHandler && e.removeEventListener(V.ENRICHMENT_STATUS, e._mjrEnrichmentStatusHandler), e._mjrDbRestoreStatusHandler && e.removeEventListener(V.DB_RESTORE_STATUS, e._mjrDbRestoreStatusHandler), e._mjrRuntimeStatusHandler && (e.removeEventListener("progress", e._mjrRuntimeStatusHandler), e.removeEventListener("status", e._mjrRuntimeStatusHandler), e.removeEventListener(V.RUNTIME_STATUS, e._mjrRuntimeStatusHandler), e.removeEventListener("execution_cached", e._mjrExecutionCachedHandler));
} catch (e) {
t?.(e, "entry.removeApiHandlers");
}
}
-function BC(e, t) {
+function HC(e, t) {
try {
let t = e?.assetsDeletedHandler;
t && typeof window < "u" && window.removeEventListener(V.ASSETS_DELETED, t);
@@ -24253,7 +24342,7 @@ function BC(e, t) {
t?.(e, "entry.removeRuntimeWindowHandlers");
}
}
-function VC(e, { reportError: t } = {}) {
+function UC(e, { reportError: t } = {}) {
if (e && typeof e == "object") {
try {
let t = Array.isArray(e._listenerCleanupFns) ? e._listenerCleanupFns : [];
@@ -24278,13 +24367,13 @@ function VC(e, { reportError: t } = {}) {
console.warn("[MJR teardown]", e);
}
try {
- zC(e.api || null, t), BC(e, t);
+ VC(e.api || null, t), HC(e, t);
} catch (e) {
console.warn("[MJR teardown]", e);
}
}
}
-function HC(e, t, n, r, i = void 0) {
+function WC(e, t, n, r, i = void 0) {
if (!e || !t?.addEventListener || typeof r != "function") return null;
let a = i && typeof i == "object" ? { ...i } : i;
if (typeof AbortController < "u") try {
@@ -24304,11 +24393,11 @@ function HC(e, t, n, r, i = void 0) {
}
}), null;
}
-function UC({ cleanupEntryRuntimeFn: e = VC, teardownLiveStreamTracker: t, teardownNodeStream: n, teardownFloatingViewerManager: r, teardownGeneratedFeed: i, teardownAssetsSidebar: a, teardownGlobalRuntime: o, teardownTopBarMfvButton: s, reportError: c }) {
+function GC({ cleanupEntryRuntimeFn: e = UC, teardownLiveStreamTracker: t, teardownNodeStream: n, teardownFloatingViewerManager: r, teardownGeneratedFeed: i, teardownAssetsSidebar: a, teardownGlobalRuntime: o, teardownTopBarMfvButton: s, reportError: c }) {
try {
if (typeof window < "u") {
try {
- let t = window[RC];
+ let t = window[BC];
e(t, { reportError: c });
} catch (e) {
console.warn("[MJR teardown]", e);
@@ -24348,7 +24437,7 @@ function UC({ cleanupEntryRuntimeFn: e = VC, teardownLiveStreamTracker: t, teard
} catch (e) {
console.warn("[MJR teardown]", e);
}
- window[RC] = {
+ window[BC] = {
api: null,
assetsDeletedHandler: null,
_cleanupControllers: [],
@@ -24360,42 +24449,42 @@ function UC({ cleanupEntryRuntimeFn: e = VC, teardownLiveStreamTracker: t, teard
}
}
// ui/entry.ts
-var WC = null, GC = null, KC = null;
-function qC() {
- return KC ||= import("./chunks/floatingViewerManager-DYNfChQt.js").then((e) => e.n), KC;
+var KC = null, qC = null, JC = null;
+function YC() {
+ return JC ||= import("./chunks/floatingViewerManager-DQlULmZ-.js").then((e) => e.n), JC;
}
-function JC() {
- KC && KC.then((e) => e?.teardownFloatingViewerManager?.()).catch((e) => console.debug?.("[Majoor] MFV teardown skipped", e));
+function XC() {
+ JC && JC.then((e) => e?.teardownFloatingViewerManager?.()).catch((e) => console.debug?.("[Majoor] MFV teardown skipped", e));
}
-var YC = "majoor-assets", XC = "__MJR_EXECUTION_RUNTIME__", ZC = "Majoor.AssetsManager", QC = {
+var ZC = "majoor-assets", QC = "__MJR_EXECUTION_RUNTIME__", $C = "Majoor.AssetsManager", ew = {
active: null,
promptId: ""
-}, $C = null, ew = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, tw = /^[0-9a-f]{20,}$/i;
-function nw(...e) {
+}, tw = null, nw = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, rw = /^[0-9a-f]{20,}$/i;
+function iw(...e) {
for (let t of e) {
let e = String(t || "").trim();
if (e) return e;
}
return "";
}
-function rw(e) {
- let t = String(e || "").trim();
- return ew.test(t) || tw.test(t);
-}
-function iw(e) {
- return nw(e?.title, e?.properties?.title, e?.properties?.name, e?.properties?.label, e?.name);
-}
function aw(e) {
+ let t = String(e || "").trim();
+ return nw.test(t) || rw.test(t);
+}
+function ow(e) {
+ return iw(e?.title, e?.properties?.title, e?.properties?.name, e?.properties?.label, e?.name);
+}
+function sw(e) {
if (!e || typeof e != "object") return [];
if (Array.isArray(e.nodes)) return e.nodes.filter(Boolean);
if (Array.isArray(e._nodes)) return e._nodes.filter(Boolean);
let t = e._nodes_by_id ?? e.nodes_by_id ?? null;
return t instanceof Map ? Array.from(t.values()).filter(Boolean) : t && typeof t == "object" ? Object.values(t).filter(Boolean) : [];
}
-function ow(e) {
- return aw(e).length > 0;
+function cw(e) {
+ return sw(e).length > 0;
}
-function sw(e) {
+function lw(e) {
return !e || typeof e != "object" ? !1 : [
e.subgraph,
e._subgraph,
@@ -24406,13 +24495,13 @@ function sw(e) {
e.subgraph_instance?.graph,
e.inner_graph,
e.subgraph_graph
- ].some(ow) || Array.isArray(e.nodes) && e.nodes.length > 0 && e.nodes !== e.graph?.nodes ? !0 : rw(e.type) && !!iw(e);
+ ].some(cw) || Array.isArray(e.nodes) && e.nodes.length > 0 && e.nodes !== e.graph?.nodes ? !0 : aw(e.type) && !!ow(e);
}
-function cw(e, t) {
- let n = String(e?.type || t || "").trim(), r = iw(e);
- return rw(n) ? r || "Subgraph" : n || r || "Node";
+function uw(e, t) {
+ let n = String(e?.type || t || "").trim(), r = ow(e);
+ return aw(n) ? r || "Subgraph" : n || r || "Node";
}
-function lw() {
+function dw() {
try {
return typeof window > "u" ? {
active_prompt_id: null,
@@ -24421,30 +24510,30 @@ function lw() {
progress_value: null,
progress_max: null,
cached_nodes: []
- } : (window[XC] && typeof window[XC] == "object" || (window[XC] = {
+ } : (window[QC] && typeof window[QC] == "object" || (window[QC] = {
active_prompt_id: null,
queue_remaining: null,
progress_node: null,
progress_value: null,
progress_max: null,
cached_nodes: []
- }), window[XC]);
+ }), window[QC]);
} catch (e) {
return console.debug?.(e), {};
}
}
-function uw(e = {}) {
+function fw(e = {}) {
try {
- let t = lw();
+ let t = dw();
Object.assign(t, e || {}), window.dispatchEvent(new CustomEvent(V.RUNTIME_STATUS, { detail: { ...t } }));
} catch (e) {
console.debug?.(e);
}
}
-async function dw({ active: e, promptId: t = "" } = {}) {
+async function pw({ active: e, promptId: t = "" } = {}) {
let n = !!e, r = String(t || "").trim();
- if (QC.active !== n || QC.promptId !== r) {
- QC = {
+ if (ew.active !== n || ew.promptId !== r) {
+ ew = {
active: n,
promptId: r
};
@@ -24459,49 +24548,49 @@ async function dw({ active: e, promptId: t = "" } = {}) {
}
}
}
-function fw() {
+function mw() {
try {
- return !!String(lw()?.active_prompt_id || "").trim();
+ return !!String(dw()?.active_prompt_id || "").trim();
} catch (e) {
return console.debug?.(e), !1;
}
}
-function pw(e = 1200) {
+function hw(e = 1200) {
try {
- $C && clearTimeout($C);
+ tw && clearTimeout(tw);
} catch (e) {
console.debug?.(e);
}
- $C = setTimeout(() => {
- if ($C = null, fw()) {
- pw(e);
+ tw = setTimeout(() => {
+ if (tw = null, mw()) {
+ hw(e);
return;
}
let t = Xn();
t && hi(t);
}, Math.max(250, Number(e) || 0));
}
-function mw(e) {
- import("./chunks/LiveStreamTracker-CIt2lOUV.js").then((t) => {
- WC = t;
+function gw(e) {
+ import("./chunks/LiveStreamTracker-Bm3iSgMa.js").then((t) => {
+ KC = t;
try {
t.initLiveStreamTracker(e);
} catch (e) {
console.warn("[MJR setup] initLiveStreamTracker failed:", e);
}
}).catch((e) => console.warn("[MJR setup] LiveStreamTracker load failed:", e)), import("./chunks/NodeStreamController-CIKDDXJT.js").then((t) => {
- GC = t;
+ qC = t;
try {
t.initNodeStream({
app: e,
onOutput: (e) => {
- qC().then((t) => t?.floatingViewerManager?.feedNodeStream?.(e)).catch((e) => console.debug?.("[NodeStream] MFV output failed", e));
+ YC().then((t) => t?.floatingViewerManager?.feedNodeStream?.(e)).catch((e) => console.debug?.("[NodeStream] MFV output failed", e));
},
onStatus: (t, n) => {
try {
- let r = (e?.graph ?? e?.canvas?.graph ?? null)?.getNodeById?.(Number(t)), i = sw(r), a = iw(r), o = i ? "Subgraph" : cw(r, n);
- qC().then((e) => {
- e?.floatingViewerManager?.setNodeStreamSelection?.(t, o, i ? a || cw(r, n) : a);
+ let r = (e?.graph ?? e?.canvas?.graph ?? null)?.getNodeById?.(Number(t)), i = lw(r), a = ow(r), o = i ? "Subgraph" : uw(r, n);
+ YC().then((e) => {
+ e?.floatingViewerManager?.setNodeStreamSelection?.(t, o, i ? a || uw(r, n) : a);
}).catch((e) => console.debug?.("[NodeStream] MFV status failed", e));
} catch (e) {
console.debug?.("[NodeStream] onStatus failed", e);
@@ -24513,7 +24602,7 @@ function mw(e) {
}
}).catch((e) => console.warn("[MJR setup] NodeStream load failed:", e));
}
-async function hw(t, n) {
+async function _w(t, n) {
let r = await Ae({
app: t,
timeoutMs: 4e3
@@ -24532,16 +24621,16 @@ async function hw(t, n) {
} catch (e) {
console.debug?.(e);
}
- zC(i?.api || null, P), r !== i?.api && zC(r, P), BC(i, P), await ep({
+ VC(i?.api || null, P), r !== i?.api && VC(r, P), HC(i, P), await np({
api: r,
runtime: i,
executionRuntime: n,
appRef: Nr,
- liveStreamModule: WC,
- ensureExecutionRuntime: lw,
- emitRuntimeStatus: uw,
+ liveStreamModule: KC,
+ ensureExecutionRuntime: dw,
+ emitRuntimeStatus: fw,
getActiveGridContainer: Xn,
- pushGeneratedAsset: qd,
+ pushGeneratedAsset: Yd,
upsertAsset: Ci,
upsertAssetNow: wi,
removeAssetsFromGrid: Si,
@@ -24550,60 +24639,60 @@ async function hw(t, n) {
comfyToast: e,
t: R,
reportError: P,
- registerCleanableListener: HC,
- syncExecutionBackendState: dw
+ registerCleanableListener: WC,
+ syncExecutionBackendState: pw
});
}
-var gw = gf({
+var vw = vf({
post: L,
ENDPOINTS: st,
reportError: P,
- extractOutputFiles: _f,
- ensureExecutionRuntime: lw,
- emitRuntimeStatus: uw,
- refreshGeneratedFeedHosts: Md,
+ extractOutputFiles: yf,
+ ensureExecutionRuntime: dw,
+ emitRuntimeStatus: fw,
+ refreshGeneratedFeedHosts: Pd,
getActiveGridContainer: Xn
-}), _w = {
- name: ZC,
+}), yw = {
+ name: $C,
settings: yn(Nr),
- commands: vC(Nr, {
- sidebarTabId: YC,
+ commands: bC(Nr, {
+ sidebarTabId: ZC,
triggerStartupScan: ri
}),
- keybindings: yC(),
- menuCommands: bC(),
- aboutPageBadges: SC(),
- bottomPanelTabs: jC(),
+ keybindings: xC(),
+ menuCommands: SC(),
+ aboutPageBadges: wC(),
+ bottomPanelTabs: NC(),
async setup() {
- UC({
- cleanupEntryRuntimeFn: VC,
- teardownLiveStreamTracker: (e) => WC?.teardownLiveStreamTracker(e),
- teardownNodeStream: (e) => GC?.teardownNodeStream(e),
- teardownFloatingViewerManager: JC,
- teardownGeneratedFeed: MC,
- teardownAssetsSidebar: EC,
- teardownGlobalRuntime: aC,
- teardownTopBarMfvButton: XS,
+ GC({
+ cleanupEntryRuntimeFn: UC,
+ teardownLiveStreamTracker: (e) => KC?.teardownLiveStreamTracker(e),
+ teardownNodeStream: (e) => qC?.teardownNodeStream(e),
+ teardownFloatingViewerManager: XC,
+ teardownGeneratedFeed: PC,
+ teardownAssetsSidebar: OC,
+ teardownGlobalRuntime: sC,
+ teardownTopBarMfvButton: QS,
reportError: P
- }), ip(), Re(Nr);
+ }), op(), Re(Nr);
let e = await Ye({ timeoutMs: 12e3 }) || Nr;
- Re(e), Np(e);
+ Re(e), Fp(e);
try {
typeof window < "u" && (window.__MJR_RUNTIME_APP__ = e);
} catch (e) {
console.debug?.(e);
}
- si(), li({ enabled: !0 }), iC(), mw(e), vn(e, () => {
+ si(), li({ enabled: !0 }), oC(), gw(e), vn(e, () => {
let e = Xn();
- e && (B.DEFER_GRID_FETCH_DURING_EXECUTION && fw() ? pw() : hi(e));
- }), CC(e, {
- sidebarTabId: YC,
+ e && (B.DEFER_GRID_FETCH_DURING_EXECUTION && mw() ? hw() : hi(e));
+ }), TC(e, {
+ sidebarTabId: ZC,
triggerStartupScan: ri
- }), wC(e), hw(e, gw).catch((e) => P(e, "entry.api_setup")), TC(e, { sidebarTabId: YC }) ? xe("[Majoor] Sidebar tab registered (Vue)") : console.warn("Majoor Assets Manager: extensionManager.registerSidebarTab is unavailable");
+ }), EC(e), _w(e, vw).catch((e) => P(e, "entry.api_setup")), DC(e, { sidebarTabId: ZC }) ? xe("[Majoor] Sidebar tab registered (Vue)") : console.warn("Majoor Assets Manager: extensionManager.registerSidebarTab is unavailable");
try {
let e = typeof window < "u" ? window.requestIdleCallback : null, t = () => {
try {
- kC();
+ jC();
} catch (e) {
console.debug?.(e);
}
@@ -24612,30 +24701,30 @@ var gw = gf({
} catch (e) {
console.debug?.(e);
}
- tp({ resolveNodeStreamModule: async () => (GC ||= await import("./chunks/NodeStreamController-CIKDDXJT.js"), GC) });
+ rp({ resolveNodeStreamModule: async () => (qC ||= await import("./chunks/NodeStreamController-CIKDDXJT.js"), qC) });
},
onNodeOutputsUpdated(e) {
try {
- gw.handleNodeOutputsUpdated(e);
+ vw.handleNodeOutputsUpdated(e);
} catch (e) {
console.debug?.("[Majoor] onNodeOutputsUpdated error", e);
}
},
getNodeMenuItems(e) {
- return LC(e, Nr, { sidebarTabId: YC });
+ return zC(e, Nr, { sidebarTabId: ZC });
},
getCanvasMenuItems(e) {
- return xC(Nr, {
- sidebarTabId: YC,
+ return CC(Nr, {
+ sidebarTabId: ZC,
triggerStartupScan: ri
});
},
getSelectionToolboxCommands(e) {
- return FC(e);
+ return LC(e);
}
};
try {
- Nr.registerExtension(_w);
+ Nr.registerExtension(yw);
} catch (e) {
- console.warn("[Majoor] registerExtension() threw (extension already registered) - re-running setup() directly", e), _w.setup().catch((e) => P(e, "entry.setup_after_duplicate_registration"));
+ console.warn("[Majoor] registerExtension() threw (extension already registered) - re-running setup() directly", e), yw.setup().catch((e) => P(e, "entry.setup_after_duplicate_registration"));
}