@wyxos/vibe 3.1.32 → 3.1.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -3,10 +3,10 @@ import { Comment as e, Fragment as t, Text as n, Transition as r, computed as i,
3
3
  var U = (e) => {
4
4
  for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
5
5
  return !1;
6
- }, te = (e) => e === "", W = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), G = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), K = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), q = (e) => {
7
- let t = K(e);
6
+ }, te = (e) => e === "", W = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), ne = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), G = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), K = (e) => {
7
+ let t = G(e);
8
8
  return t.charAt(0).toUpperCase() + t.slice(1);
9
- }, J = {
9
+ }, q = {
10
10
  xmlns: "http://www.w3.org/2000/svg",
11
11
  width: 24,
12
12
  height: 24,
@@ -16,27 +16,21 @@ var U = (e) => {
16
16
  "stroke-width": 2,
17
17
  "stroke-linecap": "round",
18
18
  "stroke-linejoin": "round"
19
- }, ne = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width": r, strokeWidth: i, "stroke-width": a, size: o = J.width, color: s = J.stroke, ...c }, { slots: l }) => m("svg", {
20
- ...J,
19
+ }, re = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width": r, strokeWidth: i, "stroke-width": a, size: o = q.width, color: s = q.stroke, ...c }, { slots: l }) => m("svg", {
20
+ ...q,
21
21
  ...c,
22
22
  width: o,
23
23
  height: o,
24
24
  stroke: s,
25
- "stroke-width": te(n) || te(r) || n === !0 || r === !0 ? Number(i || a || J["stroke-width"]) * 24 / Number(o) : i || a || J["stroke-width"],
26
- class: W("lucide", c.class, ...e ? [`lucide-${G(q(e))}-icon`, `lucide-${G(e)}`] : ["lucide-icon"]),
25
+ "stroke-width": te(n) || te(r) || n === !0 || r === !0 ? Number(i || a || q["stroke-width"]) * 24 / Number(o) : i || a || q["stroke-width"],
26
+ class: W("lucide", c.class, ...e ? [`lucide-${ne(K(e))}-icon`, `lucide-${ne(e)}`] : ["lucide-icon"]),
27
27
  ...!l.default && !U(c) && { "aria-hidden": "true" }
28
- }, [...t.map((e) => m(...e)), ...l.default ? [l.default()] : []]), Y = (e, t) => (n, { slots: r, attrs: i }) => m(ne, {
28
+ }, [...t.map((e) => m(...e)), ...l.default ? [l.default()] : []]), J = (e, t) => (n, { slots: r, attrs: i }) => m(re, {
29
29
  ...i,
30
30
  ...n,
31
31
  iconNode: t,
32
32
  name: e
33
- }, r), X = Y("arrow-left", [["path", {
34
- d: "m12 19-7-7 7-7",
35
- key: "1l729n"
36
- }], ["path", {
37
- d: "M19 12H5",
38
- key: "x3x0zl"
39
- }]]), re = Y("audio-lines", [
33
+ }, r), Y = J("audio-lines", [
40
34
  ["path", {
41
35
  d: "M2 10v3",
42
36
  key: "1fnikh"
@@ -61,7 +55,7 @@ var U = (e) => {
61
55
  d: "M22 10v3",
62
56
  key: "154ddg"
63
57
  }]
64
- ]), ie = Y("clapperboard", [
58
+ ]), ie = J("clapperboard", [
65
59
  ["path", {
66
60
  d: "m12.296 3.464 3.02 3.956",
67
61
  key: "qash78"
@@ -78,13 +72,13 @@ var U = (e) => {
78
72
  d: "m6.18 5.276 3.1 3.899",
79
73
  key: "zjj9t3"
80
74
  }]
81
- ]), ae = Y("file", [["path", {
75
+ ]), ae = J("file", [["path", {
82
76
  d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
83
77
  key: "1oefj6"
84
78
  }], ["path", {
85
79
  d: "M14 2v5a1 1 0 0 0 1 1h5",
86
80
  key: "wfsgrz"
87
- }]]), oe = Y("image-plus", [
81
+ }]]), oe = J("image-plus", [
88
82
  ["path", {
89
83
  d: "M16 5h6",
90
84
  key: "1vod17"
@@ -107,10 +101,10 @@ var U = (e) => {
107
101
  r: "2",
108
102
  key: "af1f0g"
109
103
  }]
110
- ]), se = Y("loader-circle", [["path", {
104
+ ]), se = J("loader-circle", [["path", {
111
105
  d: "M21 12a9 9 0 1 1-6.219-8.56",
112
106
  key: "13zald"
113
- }]]), ce = Y("maximize-2", [
107
+ }]]), ce = J("maximize-2", [
114
108
  ["path", {
115
109
  d: "M15 3h6v6",
116
110
  key: "1q9fwt"
@@ -127,7 +121,7 @@ var U = (e) => {
127
121
  d: "M9 21H3v-6",
128
122
  key: "wtvkvv"
129
123
  }]
130
- ]), le = Y("pause", [["rect", {
124
+ ]), le = J("pause", [["rect", {
131
125
  x: "14",
132
126
  y: "3",
133
127
  width: "5",
@@ -141,10 +135,10 @@ var U = (e) => {
141
135
  height: "18",
142
136
  rx: "1",
143
137
  key: "1wsw3u"
144
- }]]), ue = Y("play", [["path", {
138
+ }]]), ue = J("play", [["path", {
145
139
  d: "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",
146
140
  key: "10ikf1"
147
- }]]), de = Y("triangle-alert", [
141
+ }]]), de = J("triangle-alert", [
148
142
  ["path", {
149
143
  d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
150
144
  key: "wmoenq"
@@ -157,13 +151,13 @@ var U = (e) => {
157
151
  d: "M12 17h.01",
158
152
  key: "p32p05"
159
153
  }]
160
- ]), fe = Y("volume-1", [["path", {
154
+ ]), fe = J("volume-1", [["path", {
161
155
  d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
162
156
  key: "uqj9uw"
163
157
  }], ["path", {
164
158
  d: "M16 9a5 5 0 0 1 0 6",
165
159
  key: "1q6k2b"
166
- }]]), pe = Y("volume-2", [
160
+ }]]), pe = J("volume-2", [
167
161
  ["path", {
168
162
  d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
169
163
  key: "uqj9uw"
@@ -176,7 +170,7 @@ var U = (e) => {
176
170
  d: "M19.364 18.364a9 9 0 0 0 0-12.728",
177
171
  key: "ijwkga"
178
172
  }]
179
- ]), me = Y("volume-x", [
173
+ ]), X = J("volume-x", [
180
174
  ["path", {
181
175
  d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
182
176
  key: "uqj9uw"
@@ -195,7 +189,13 @@ var U = (e) => {
195
189
  y2: "15",
196
190
  key: "5ykzw1"
197
191
  }]
198
- ]);
192
+ ]), me = J("x", [["path", {
193
+ d: "M18 6 6 18",
194
+ key: "1bl5f8"
195
+ }], ["path", {
196
+ d: "m6 6 12 12",
197
+ key: "d8bk6v"
198
+ }]]);
199
199
  function he(e, t = 150) {
200
200
  return _e(e, (e) => `${e.surface}|${e.occurrenceKey}|${e.url}|${e.kind}`, t);
201
201
  }
@@ -226,20 +226,20 @@ function _e(e, t, n) {
226
226
  }
227
227
  //#endregion
228
228
  //#region src/components/viewer-core/dom.ts
229
- function Z(e) {
229
+ function ve(e) {
230
230
  return e instanceof HTMLElement && [
231
231
  "INPUT",
232
232
  "TEXTAREA",
233
233
  "SELECT"
234
234
  ].includes(e.tagName);
235
235
  }
236
- function ve(e) {
236
+ function ye(e) {
237
237
  return e instanceof HTMLElement && !!e.closest("[data-swipe-lock], input, textarea, select, a");
238
238
  }
239
- function ye(e) {
239
+ function be(e) {
240
240
  return e === "filling" || e === "initializing" || e === "loading" || e === "refreshing";
241
241
  }
242
- function be(e) {
242
+ function Z(e) {
243
243
  return !e || !Number.isFinite(e) || e < 1 ? 25 : Math.floor(e);
244
244
  }
245
245
  function xe(e) {
@@ -841,7 +841,7 @@ function dt(e) {
841
841
  setSequence: (e) => {
842
842
  w = e;
843
843
  }
844
- }), E = i(() => lt(e.fillDelayMs, at)), O = i(() => lt(e.fillDelayStepMs, ot)), k = i(() => typeof e.resolve == "function"), A = i(() => be(e.pageSize)), j = i(() => De(n.value)), M = rt(() => j.value.length), N = i(() => Oe(j.value, e.removedIds.value)), P = i(() => r.value), F = i(() => ye(c.value) || m.value), I = i(() => Ge(n.value, e.removedIds.value)), L = i(() => Ke(n.value, e.removedIds.value)), R = i(() => L.value?.nextCursor ?? null), ee = i(() => o.value ? null : I.value?.previousCursor ?? null), B = i(() => !!R.value && L.value?.nextCursorExhausted !== !0), V = i(() => !!ee.value), H = i(() => _.value || g.value), U = i(() => k.value && !!L.value?.items.length), te = i(() => Oe(De(a.value), e.removedIds.value)), W = i(() => je(n.value, e.removedIds.value, P.value)), G = i(() => !N.value.length && !F.value && !!s.value), K = Qe({
844
+ }), E = i(() => lt(e.fillDelayMs, at)), O = i(() => lt(e.fillDelayStepMs, ot)), k = i(() => typeof e.resolve == "function"), A = i(() => Z(e.pageSize)), j = i(() => De(n.value)), M = rt(() => j.value.length), N = i(() => Oe(j.value, e.removedIds.value)), P = i(() => r.value), F = i(() => be(c.value) || m.value), I = i(() => Ge(n.value, e.removedIds.value)), L = i(() => Ke(n.value, e.removedIds.value)), R = i(() => L.value?.nextCursor ?? null), ee = i(() => o.value ? null : I.value?.previousCursor ?? null), B = i(() => !!R.value && L.value?.nextCursorExhausted !== !0), V = i(() => !!ee.value), H = i(() => _.value || g.value), U = i(() => k.value && !!L.value?.items.length), te = i(() => Oe(De(a.value), e.removedIds.value)), W = i(() => je(n.value, e.removedIds.value, P.value)), ne = i(() => !N.value.length && !F.value && !!s.value), G = Qe({
845
845
  autoBuckets: n,
846
846
  clearActiveResolveController(e) {
847
847
  y === e && (y = null);
@@ -878,17 +878,17 @@ function dt(e) {
878
878
  b = e;
879
879
  },
880
880
  waitFillDelay: (e) => d.wait(e)
881
- }), q = it({
881
+ }), K = it({
882
882
  canRefreshTrailingBoundary: U,
883
883
  hasNextPage: B,
884
884
  isInitialLoading: Te,
885
885
  isPageLoadingLocked: H,
886
886
  items: N,
887
887
  loading: F,
888
- prefetchNextPage: Y,
888
+ prefetchNextPage: J,
889
889
  removedIds: e.removedIds,
890
890
  trailingBoundaryBucket: L
891
- }), J = nt({
891
+ }), q = nt({
892
892
  autoBuckets: n,
893
893
  clearActiveResolveController(e) {
894
894
  y === e && (y = null);
@@ -900,7 +900,7 @@ function dt(e) {
900
900
  fillCursor: u,
901
901
  fillTargetCount: p,
902
902
  finishLoadPhase: Q,
903
- getActiveOccurrenceKey: pe,
903
+ getActiveOccurrenceKey: X,
904
904
  getBoundaryBucket: (e) => e === "leading" ? I.value : L.value,
905
905
  getFillDelayMs: (e) => ct(e, E.value, O.value),
906
906
  getOperationIsCurrent: (e) => e === C,
@@ -923,19 +923,19 @@ function dt(e) {
923
923
  });
924
924
  z(() => N.value.length, (e) => {
925
925
  if (e === 0) {
926
- r.value = 0, q.schedule();
926
+ r.value = 0, K.schedule();
927
927
  return;
928
928
  }
929
- q.resetRefreshAttempt(), o.value &&= (ke(), !1), r.value > e - 1 && (r.value = e - 1);
929
+ K.resetRefreshAttempt(), o.value &&= (ke(), !1), r.value > e - 1 && (r.value = e - 1);
930
930
  }), z(() => r.value, () => {
931
931
  h.value && ge();
932
932
  }), S(() => {
933
- we() || e.resolve && ne();
933
+ we() || e.resolve && re();
934
934
  }), x(() => {
935
935
  y?.abort(), y = null, d.clear(!0);
936
936
  });
937
- async function ne() {
938
- b = ne;
937
+ async function re() {
938
+ b = re;
939
939
  let t = await xe({
940
940
  continueUntilFilled: !0,
941
941
  cursor: e.initialCursor ?? null,
@@ -944,7 +944,7 @@ function dt(e) {
944
944
  });
945
945
  t && (n.value = t.buckets, r.value = 0, Q());
946
946
  }
947
- async function Y() {
947
+ async function J() {
948
948
  if (H.value || F.value) return;
949
949
  let e = !N.value.length, t = L.value, n = {
950
950
  commitImmediately: e,
@@ -952,13 +952,13 @@ function dt(e) {
952
952
  }, r = qe(t);
953
953
  if (Ee("trailing")) {
954
954
  if (!U.value) return;
955
- let e = await ve("trailing");
955
+ let e = await ye("trailing");
956
956
  e?.followCursor && (e.itemsInserted === 0 || Ee("trailing")) && await _e(e.followCursor, n);
957
957
  return;
958
958
  }
959
959
  if (r) {
960
960
  if (t?.cursor === r) {
961
- let e = await ve("trailing");
961
+ let e = await ye("trailing");
962
962
  e?.followCursor && e.itemsInserted === 0 && await _e(e.followCursor, n);
963
963
  return;
964
964
  }
@@ -966,64 +966,64 @@ function dt(e) {
966
966
  return;
967
967
  }
968
968
  if (!B.value) {
969
- let e = U.value ? await ve("trailing") : null;
969
+ let e = U.value ? await ye("trailing") : null;
970
970
  e?.followCursor && e.itemsInserted === 0 && await _e(e.followCursor, n);
971
971
  return;
972
972
  }
973
973
  await _e(R.value, n);
974
974
  }
975
- async function X() {
975
+ async function Y() {
976
976
  if (!(H.value || !V.value || F.value)) {
977
977
  if (Ee("leading")) {
978
- let e = await ve("leading");
979
- e?.itemsInserted === 0 && e.followCursor && await Z(e.followCursor);
978
+ let e = await ye("leading");
979
+ e?.itemsInserted === 0 && e.followCursor && await ve(e.followCursor);
980
980
  return;
981
981
  }
982
- await Z(ee.value);
982
+ await ve(ee.value);
983
983
  }
984
984
  }
985
- async function re() {
986
- if (G.value) {
985
+ async function ie() {
986
+ if (ne.value) {
987
987
  if (n.value = [], r.value = 0, a.value = [], o.value = !1, s.value = null, c.value = k.value ? "initializing" : "idle", Ce(), M.reset(), m.value = !1, v.clear(), y?.abort(), y = null, d.clear(!0), we()) {
988
988
  Q();
989
989
  return;
990
990
  }
991
- await ne();
991
+ await re();
992
992
  }
993
993
  }
994
- async function ie() {
995
- if (G.value) return re();
994
+ async function ae() {
995
+ if (ne.value) return ie();
996
996
  H.value || c.value !== "failed" || !b || (s.value = null, await b());
997
997
  }
998
- async function ae() {
998
+ async function oe() {
999
999
  if (!a.value.length) return m.value = !1, Q();
1000
1000
  n.value = [...n.value, ...a.value], a.value = [], m.value = !1, Q();
1001
1001
  }
1002
- function oe(t) {
1002
+ function se(t) {
1003
1003
  let n = N.value;
1004
1004
  if (!n.length) return;
1005
1005
  let i = Se(t, 0, n.length - 1);
1006
1006
  i !== r.value && (r.value = i, e.emit("update:activeIndex", i));
1007
1007
  }
1008
- function se(e) {
1009
- h.value = e, q.schedule();
1010
- }
1011
- function ce() {
1012
- _.value = !0, d.clear(!0);
1008
+ function ce(e) {
1009
+ h.value = e, K.schedule();
1013
1010
  }
1014
1011
  function le() {
1015
- _.value = !1, q.schedule();
1012
+ _.value = !0, d.clear(!0);
1016
1013
  }
1017
1014
  function ue() {
1018
- fe(), s.value = null, Ce(), K.cancel(), a.value.length > 0 && (n.value = [...n.value, ...a.value], a.value = []), m.value = !1, o.value = !1, Q();
1015
+ _.value = !1, K.schedule();
1019
1016
  }
1020
1017
  function de() {
1021
- g.value && (fe(), Ce(), K.cancel(), m.value = !1, Q());
1018
+ pe(), s.value = null, Ce(), G.cancel(), a.value.length > 0 && (n.value = [...n.value, ...a.value], a.value = []), m.value = !1, o.value = !1, Q();
1022
1019
  }
1023
1020
  function fe() {
1024
- C += 1, y?.abort(), y = null, d.clear(!0), v.clear();
1021
+ g.value && (pe(), Ce(), G.cancel(), m.value = !1, Q());
1025
1022
  }
1026
1023
  function pe() {
1024
+ C += 1, y?.abort(), y = null, d.clear(!0), v.clear();
1025
+ }
1026
+ function X() {
1027
1027
  return Ve(N.value, P.value);
1028
1028
  }
1029
1029
  function me(e = null, t = {}) {
@@ -1045,15 +1045,15 @@ function dt(e) {
1045
1045
  r.value = He(N.value, P.value, e);
1046
1046
  }
1047
1047
  function he() {
1048
- a.value.length > 0 && (!te.value.length || !N.value.length) && ae();
1048
+ a.value.length > 0 && (!te.value.length || !N.value.length) && oe();
1049
1049
  }
1050
1050
  async function ge() {
1051
1051
  if (!(!h.value || Te())) {
1052
1052
  if (!N.value.length) {
1053
- (B.value || U.value) && await Y();
1053
+ (B.value || U.value) && await J();
1054
1054
  return;
1055
1055
  }
1056
- V.value && r.value < 3 && await X(), B.value && r.value >= N.value.length - 3 && await Y();
1056
+ V.value && r.value < 3 && await Y(), B.value && r.value >= N.value.length - 3 && await J();
1057
1057
  }
1058
1058
  }
1059
1059
  async function _e(e, t = {}) {
@@ -1073,9 +1073,9 @@ function dt(e) {
1073
1073
  m.value = !0;
1074
1074
  }
1075
1075
  }
1076
- async function Z(e) {
1076
+ async function ve(e) {
1077
1077
  b = async () => {
1078
- await Z(e);
1078
+ await ve(e);
1079
1079
  };
1080
1080
  let t = await xe({
1081
1081
  continueUntilFilled: !0,
@@ -1084,19 +1084,19 @@ function dt(e) {
1084
1084
  phase: "loading"
1085
1085
  });
1086
1086
  if (!t) return;
1087
- let r = pe();
1087
+ let r = X();
1088
1088
  n.value = [...t.buckets, ...n.value], me(r), Q();
1089
1089
  }
1090
- async function ve(e) {
1090
+ async function ye(e) {
1091
1091
  return b = async () => {
1092
- await ve(e);
1093
- }, J.reloadBoundaryBucket(e);
1092
+ await ye(e);
1093
+ }, q.reloadBoundaryBucket(e);
1094
1094
  }
1095
1095
  function xe(e) {
1096
- return J.collectBuckets(e);
1096
+ return q.collectBuckets(e);
1097
1097
  }
1098
1098
  function Q() {
1099
- c.value = "idle", Ce(), d.clear(), q.schedule();
1099
+ c.value = "idle", Ce(), d.clear(), K.schedule();
1100
1100
  }
1101
1101
  function Ce() {
1102
1102
  l.value = null, u.value = null, p.value = null;
@@ -1121,11 +1121,11 @@ function dt(e) {
1121
1121
  }
1122
1122
  return {
1123
1123
  activeIndex: P,
1124
- canRetryInitialLoad: G,
1125
- cancel: ue,
1126
- cancelFill: de,
1124
+ canRetryInitialLoad: ne,
1125
+ cancel: de,
1126
+ cancelFill: fe,
1127
1127
  canRefreshTrailingBoundary: U,
1128
- commitPendingAppend: ae,
1128
+ commitPendingAppend: oe,
1129
1129
  currentCursor: W,
1130
1130
  errorMessage: s,
1131
1131
  fillCollectedCount: l,
@@ -1133,29 +1133,29 @@ function dt(e) {
1133
1133
  fillDelayRemainingMs: f,
1134
1134
  fillTargetCount: p,
1135
1135
  ...M.refs,
1136
- fillUntil: K.fillUntil,
1137
- fillUntilEnd: K.fillUntilEnd,
1136
+ fillUntil: G.fillUntil,
1137
+ fillUntilEnd: G.fillUntilEnd,
1138
1138
  hasNextPage: B,
1139
1139
  hasPreviousPage: V,
1140
1140
  isAutoPrefetchEnabled: h,
1141
1141
  isPageLoadingLocked: H,
1142
1142
  items: N,
1143
- lockPageLoading: ce,
1143
+ lockPageLoading: le,
1144
1144
  loading: F,
1145
1145
  maybePrefetchAround: ge,
1146
1146
  nextCursor: R,
1147
1147
  pendingAppendItems: te,
1148
1148
  phase: c,
1149
- prefetchNextPage: Y,
1150
- prefetchPreviousPage: X,
1149
+ prefetchNextPage: J,
1150
+ prefetchPreviousPage: Y,
1151
1151
  previousCursor: ee,
1152
- retryInitialLoad: re,
1153
- retry: ie,
1154
- setActiveIndex: oe,
1155
- setAutoPrefetchEnabled: se,
1152
+ retryInitialLoad: ie,
1153
+ retry: ae,
1154
+ setActiveIndex: se,
1155
+ setAutoPrefetchEnabled: ce,
1156
1156
  syncActiveIndexAfterVisibilityChange: me,
1157
- unlockPageLoading: le,
1158
- getActiveOccurrenceKey: pe,
1157
+ unlockPageLoading: ue,
1158
+ getActiveOccurrenceKey: X,
1159
1159
  maybeCommitPendingAppendWhenFilteredOut: he
1160
1160
  };
1161
1161
  }
@@ -1337,7 +1337,7 @@ function mt(e, t) {
1337
1337
  !c.value || o.value === "list" || (o.value = "list", t("update:surfaceMode", "list"));
1338
1338
  }
1339
1339
  function h(e) {
1340
- e.defaultPrevented || e.key !== "Escape" || !c.value || d.value !== "fullscreen" || Z(e.target) || (e.preventDefault(), m());
1340
+ e.defaultPrevented || e.key !== "Escape" || !c.value || d.value !== "fullscreen" || ve(e.target) || (e.preventDefault(), m());
1341
1341
  }
1342
1342
  function g() {
1343
1343
  a.value = window.innerWidth || 0;
@@ -1407,7 +1407,7 @@ var gt = {
1407
1407
  "volume-toggle"
1408
1408
  ],
1409
1409
  setup(e, { emit: t }) {
1410
- let n = e, r = t, l = D(null), d = D(!1), f = i(() => n.volumeControlLayout === "vertical"), p = i(() => T(n.volume, 0, 1)), m = i(() => Math.round(p.value * 100)), h = i(() => n.muted || p.value <= 0 ? me : p.value < .5 ? fe : pe), g = i(() => n.muted || p.value <= 0 ? "Unmute active media" : "Mute active media"), _ = i(() => f.value && !d.value ? "Show volume controls" : g.value), v = i(() => n.volumeControlLayout === "vertical" ? { height: `${m.value}%` } : { width: `${m.value}%` });
1410
+ let n = e, r = t, l = D(null), d = D(!1), f = i(() => n.volumeControlLayout === "vertical"), p = i(() => T(n.volume, 0, 1)), m = i(() => Math.round(p.value * 100)), h = i(() => n.muted || p.value <= 0 ? X : p.value < .5 ? fe : pe), g = i(() => n.muted || p.value <= 0 ? "Unmute active media" : "Mute active media"), _ = i(() => f.value && !d.value ? "Show volume controls" : g.value), v = i(() => n.volumeControlLayout === "vertical" ? { height: `${m.value}%` } : { width: `${m.value}%` });
1411
1411
  z(f, (e) => {
1412
1412
  e || (d.value = !1);
1413
1413
  }), S(() => {
@@ -1521,74 +1521,99 @@ var gt = {
1521
1521
  ])
1522
1522
  ])]));
1523
1523
  }
1524
- }), Mt = { class: "pointer-events-none absolute inset-0 z-[3] flex flex-col justify-between p-[clamp(1.25rem,2.6vw,2.25rem)]" }, Nt = { class: "grid gap-4" }, Pt = { class: "flex min-h-11 items-center justify-between gap-4" }, Ft = { class: "min-w-0 flex flex-1 items-center gap-3" }, It = {
1524
+ }), Mt = {
1525
+ "data-testid": "vibe-fullscreen-header",
1526
+ class: "relative z-[3] shrink-0 border-b border-white/10 bg-[#05060a] px-3 py-2"
1527
+ }, Nt = { class: "flex min-h-8 flex-wrap items-center justify-between gap-2" }, Pt = { class: "min-w-0 flex flex-1 items-center gap-2" }, Ft = {
1525
1528
  key: 1,
1526
1529
  "data-testid": "vibe-title",
1527
- class: "m-0 truncate text-left text-[0.82rem] leading-none tracking-[-0.04em] min-[721px]:text-[1.2rem]"
1528
- }, Lt = { class: "pointer-events-auto flex shrink-0 items-center gap-2" }, Rt = {
1530
+ class: "m-0 min-w-0 truncate text-left text-[0.82rem] leading-none text-[#f7f1ea]/88 min-[721px]:text-[0.92rem]"
1531
+ }, It = { class: "flex min-w-0 flex-wrap items-center justify-end gap-2" }, Lt = {
1529
1532
  "data-testid": "vibe-pagination",
1530
- class: "inline-flex shrink-0 items-center gap-2 whitespace-nowrap border border-white/14 bg-black/40 px-3 py-2 text-[0.63rem] font-bold uppercase tracking-[0.12em] text-[#f7f1ea]/72 backdrop-blur-[18px] min-[721px]:gap-3 min-[721px]:px-4 min-[721px]:py-3 min-[721px]:text-[0.74rem] min-[721px]:tracking-[0.2em]"
1531
- }, zt = { class: "whitespace-nowrap" }, Bt = {
1533
+ class: "inline-flex h-8 shrink-0 items-center gap-2 whitespace-nowrap border border-white/12 bg-black/20 px-2.5 text-[0.68rem] font-semibold uppercase tracking-[0.1em] text-[#f7f1ea]/70"
1534
+ }, Rt = { class: "whitespace-nowrap" }, zt = {
1532
1535
  key: 1,
1533
- class: "whitespace-nowrap border-l border-white/12 pl-2 text-[#f7f1ea]/56 min-[721px]:pl-3"
1534
- }, Vt = {
1535
- key: 0,
1536
- class: "grid gap-2 max-[720px]:justify-items-start"
1537
- }, Ht = /* @__PURE__ */ d({
1536
+ class: "whitespace-nowrap border-l border-white/12 pl-2 text-[#f7f1ea]/56"
1537
+ }, Bt = /* @__PURE__ */ d({
1538
1538
  __name: "FullscreenHeader",
1539
1539
  props: {
1540
1540
  currentIndex: {},
1541
1541
  loading: { type: Boolean },
1542
1542
  paginationDetail: {},
1543
1543
  showBackToList: { type: Boolean },
1544
- showEndBadge: { type: Boolean },
1545
1544
  title: {},
1546
1545
  total: {}
1547
1546
  },
1548
1547
  emits: ["back-to-list"],
1549
1548
  setup(e, { emit: t }) {
1550
1549
  let n = e, r = t;
1551
- return (e, t) => (w(), s("div", Mt, [c("div", Nt, [c("div", Pt, [c("div", Ft, [n.showBackToList ? (w(), s("button", {
1550
+ return (e, t) => (w(), s("header", Mt, [c("div", Nt, [c("div", Pt, [n.showBackToList ? (w(), s("button", {
1552
1551
  key: 0,
1553
1552
  type: "button",
1554
1553
  "data-testid": "vibe-back-to-list",
1555
- class: "pointer-events-auto inline-flex h-11 w-11 shrink-0 items-center justify-center border border-white/14 bg-black/40 text-[#f7f1ea]/78 backdrop-blur-[18px] transition hover:border-white/28 hover:bg-black/55",
1556
- "aria-label": "Back to list",
1554
+ class: "inline-flex h-8 w-8 shrink-0 items-center justify-center border border-white/12 bg-black/20 text-[#f7f1ea]/74 transition hover:border-white/24 hover:bg-white/6 hover:text-[#f7f1ea]",
1555
+ "aria-label": "Exit viewer",
1556
+ title: "Exit viewer",
1557
1557
  onClick: t[0] ||= (e) => r("back-to-list")
1558
- }, [u(F(X), {
1559
- class: "h-4 w-4 stroke-[2.2]",
1558
+ }, [u(F(me), {
1559
+ class: "h-3.5 w-3.5 stroke-[2.2]",
1560
1560
  "aria-hidden": "true"
1561
- })])) : o("", !0), n.title ? (w(), s("h2", It, M(n.title), 1)) : o("", !0)]), c("div", Lt, [c("span", Rt, [
1561
+ })])) : o("", !0), n.title ? (w(), s("h2", Ft, M(n.title), 1)) : o("", !0)]), c("div", It, [c("span", Lt, [
1562
1562
  n.loading ? (w(), a(F(se), {
1563
1563
  key: 0,
1564
1564
  "data-testid": "vibe-pagination-spinner",
1565
1565
  class: "h-3.5 w-3.5 animate-spin stroke-[1.9]",
1566
1566
  "aria-hidden": "true"
1567
1567
  })) : o("", !0),
1568
- c("span", zt, M(n.currentIndex + 1) + " / " + M(n.total), 1),
1569
- n.paginationDetail ? (w(), s("span", Bt, M(n.paginationDetail), 1)) : o("", !0)
1570
- ]), k(e.$slots, "actions")])])]), n.showEndBadge ? (w(), s("div", Vt, [...t[1] ||= [c("span", { class: "inline-flex items-center border border-amber-300/35 bg-black/40 px-4 py-3 text-[0.74rem] font-bold uppercase tracking-[0.2em] text-amber-200 backdrop-blur-[18px]" }, " End reached ", -1)]])) : o("", !0)]));
1571
- }
1572
- }), Ut = {
1568
+ c("span", Rt, M(n.currentIndex + 1) + " / " + M(n.total), 1),
1569
+ n.paginationDetail ? (w(), s("span", zt, M(n.paginationDetail), 1)) : o("", !0)
1570
+ ]), k(e.$slots, "actions")])])]));
1571
+ }
1572
+ }), Vt = {
1573
+ "data-testid": "vibe-fullscreen-footer",
1574
+ class: "relative z-[3] shrink-0 border-t border-white/10 bg-[#05060a] px-3 py-2"
1575
+ }, Ht = { class: "grid gap-2" }, Ut = {
1576
+ key: 0,
1577
+ class: "flex flex-wrap items-center justify-center gap-2"
1578
+ }, Wt = {
1579
+ key: 2,
1580
+ class: "inline-flex items-center border border-amber-300/35 bg-black/20 px-3 py-1.5 text-[0.68rem] font-semibold uppercase tracking-[0.12em] text-amber-200"
1581
+ }, Gt = /* @__PURE__ */ d({
1582
+ __name: "FullscreenFooter",
1583
+ props: {
1584
+ showEndBadge: { type: Boolean },
1585
+ showStatus: { type: Boolean },
1586
+ statusKind: {},
1587
+ statusMessage: {}
1588
+ },
1589
+ setup(e) {
1590
+ let t = e, n = i(() => t.statusKind === "end" ? "border-amber-300/35 text-amber-200" : t.statusKind === "failed" ? "border-rose-400/45 text-rose-100" : "");
1591
+ return (e, r) => (w(), s("footer", Vt, [c("div", Ht, [k(e.$slots, "default"), t.showStatus || t.showEndBadge ? (w(), s("div", Ut, [t.showStatus && e.$slots.status ? k(e.$slots, "status", { key: 0 }) : t.showStatus ? (w(), s("div", {
1592
+ key: 1,
1593
+ "data-testid": "vibe-fullscreen-status-badge",
1594
+ class: v(["inline-flex w-auto items-center border border-white/12 bg-black/20 px-3 py-1.5 text-[0.68rem] font-semibold uppercase tracking-[0.12em] text-[#f7f1ea]/74 max-[720px]:w-full max-[720px]:justify-center", n.value])
1595
+ }, M(t.statusMessage), 3)) : o("", !0), t.showEndBadge ? (w(), s("span", Wt, " End reached ")) : o("", !0)])) : o("", !0)])]));
1596
+ }
1597
+ }), Kt = {
1573
1598
  image: oe,
1574
1599
  video: ie,
1575
- audio: re,
1600
+ audio: Y,
1576
1601
  other: ae
1577
- }, Wt = {
1602
+ }, qt = {
1578
1603
  image: "Image",
1579
1604
  video: "Video",
1580
1605
  audio: "Audio",
1581
1606
  other: "File"
1582
1607
  };
1583
- function Gt(e) {
1584
- return Ut[e];
1608
+ function Jt(e) {
1609
+ return Kt[e];
1585
1610
  }
1586
- function Kt(e) {
1587
- return Wt[e];
1611
+ function Yt(e) {
1612
+ return qt[e];
1588
1613
  }
1589
1614
  //#endregion
1590
1615
  //#region src/components/viewer-core/useAssetLoadQueue.ts
1591
- function qt() {
1616
+ function Xt() {
1592
1617
  let e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), n = 0;
1593
1618
  function r(r) {
1594
1619
  let a = {
@@ -1611,7 +1636,7 @@ function qt() {
1611
1636
  function i() {
1612
1637
  if (t.size === 0) return;
1613
1638
  let n = [...t.values()].sort((e, t) => {
1614
- let n = Yt(e) - Yt(t);
1639
+ let n = Qt(e) - Qt(t);
1615
1640
  return n === 0 ? e.enqueuedAt - t.enqueuedAt : n;
1616
1641
  });
1617
1642
  for (let r of n) {
@@ -1625,8 +1650,8 @@ function qt() {
1625
1650
  }
1626
1651
  return { request: r };
1627
1652
  }
1628
- var Jt = qt();
1629
- function Yt(e) {
1653
+ var Zt = Xt();
1654
+ function Qt(e) {
1630
1655
  try {
1631
1656
  let t = e.getPriority();
1632
1657
  return Number.isFinite(t) ? t : Infinity;
@@ -1636,19 +1661,19 @@ function Yt(e) {
1636
1661
  }
1637
1662
  //#endregion
1638
1663
  //#region src/components/viewer-core/useFullscreenPreloadController.ts
1639
- var Xt = [
1664
+ var $t = [
1640
1665
  0,
1641
1666
  1,
1642
1667
  2,
1643
1668
  3
1644
- ], Zt = {
1669
+ ], en = {
1645
1670
  0: 0,
1646
1671
  1: 1,
1647
1672
  2: 2,
1648
1673
  3: 3
1649
1674
  };
1650
- function Qt(e) {
1651
- let t = D({}), n = qt(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set();
1675
+ function tn(e) {
1676
+ let t = D({}), n = Xt(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set();
1652
1677
  z([
1653
1678
  e.active,
1654
1679
  e.items,
@@ -1669,14 +1694,14 @@ function Qt(e) {
1669
1694
  }
1670
1695
  function l(e, t) {
1671
1696
  if (t instanceof HTMLImageElement) {
1672
- i.set(e, t), en(t) && d(e);
1697
+ i.set(e, t), rn(t) && d(e);
1673
1698
  return;
1674
1699
  }
1675
1700
  i.delete(e);
1676
1701
  }
1677
1702
  function u(e, t) {
1678
1703
  if (t instanceof HTMLMediaElement) {
1679
- a.set(e, t), tn(t) && d(e);
1704
+ a.set(e, t), an(t) && d(e);
1680
1705
  return;
1681
1706
  }
1682
1707
  a.delete(e);
@@ -1717,7 +1742,7 @@ function Qt(e) {
1717
1742
  assetType: s.item.type === "image" ? "image" : "video",
1718
1743
  getPriority: () => g(o.index),
1719
1744
  onGrant: () => {
1720
- y(s.key, !0), (e.isAssetReady(s.key, s.item) || $t(s.key, i, a)) && d(s.key);
1745
+ y(s.key, !0), (e.isAssetReady(s.key, s.item) || nn(s.key, i, a)) && d(s.key);
1721
1746
  },
1722
1747
  url: s.item.url
1723
1748
  })
@@ -1728,14 +1753,14 @@ function Qt(e) {
1728
1753
  }
1729
1754
  function h() {
1730
1755
  let t = e.resolvedActiveIndex.value;
1731
- return Xt.map((e) => _(t + e)).filter((e) => !!e);
1756
+ return $t.map((e) => _(t + e)).filter((e) => !!e);
1732
1757
  }
1733
1758
  function g(t) {
1734
- return e.active.value ? Zt[t - e.resolvedActiveIndex.value] ?? Infinity : Infinity;
1759
+ return e.active.value ? en[t - e.resolvedActiveIndex.value] ?? Infinity : Infinity;
1735
1760
  }
1736
1761
  function _(t) {
1737
1762
  let n = e.items.value[t];
1738
- return !n || !nn(n) ? null : {
1763
+ return !n || !on(n) ? null : {
1739
1764
  index: t,
1740
1765
  item: n,
1741
1766
  key: e.getItemKey(n)
@@ -1784,27 +1809,27 @@ function Qt(e) {
1784
1809
  shouldAttachSlideAsset: s
1785
1810
  };
1786
1811
  }
1787
- function $t(e, t, n) {
1812
+ function nn(e, t, n) {
1788
1813
  let r = t.get(e);
1789
- if (r) return en(r);
1814
+ if (r) return rn(r);
1790
1815
  let i = n.get(e);
1791
- return i ? tn(i) : !1;
1816
+ return i ? an(i) : !1;
1792
1817
  }
1793
- function en(e) {
1818
+ function rn(e) {
1794
1819
  return e.complete && !!(e.currentSrc || e.getAttribute("src"));
1795
1820
  }
1796
- function tn(e) {
1821
+ function an(e) {
1797
1822
  let t = typeof HTMLMediaElement > "u" ? 1 : HTMLMediaElement.HAVE_METADATA;
1798
1823
  return e.readyState >= t;
1799
1824
  }
1800
- function nn(e) {
1825
+ function on(e) {
1801
1826
  return e.type === "image" || e.type === "video" || e.type === "audio";
1802
1827
  }
1803
1828
  //#endregion
1804
1829
  //#region src/components/viewer-core/useFullscreenSurfaceMedia.ts
1805
- var rn = /\.(avif|gif|jpe?g|png|svg|webp)(\?|#|$)/i;
1806
- function an(e) {
1807
- let t = Qt({
1830
+ var sn = /\.(avif|gif|jpe?g|png|svg|webp)(\?|#|$)/i;
1831
+ function cn(e) {
1832
+ let t = tn({
1808
1833
  active: e.active,
1809
1834
  getItemKey: r,
1810
1835
  isAssetReady: h,
@@ -1814,7 +1839,7 @@ function an(e) {
1814
1839
  });
1815
1840
  function n(e, t) {
1816
1841
  let n = t.title?.trim();
1817
- return n ? `${e} ${n}` : `${e} ${Kt(t.type).toLowerCase()}`;
1842
+ return n ? `${e} ${n}` : `${e} ${Yt(t.type).toLowerCase()}`;
1818
1843
  }
1819
1844
  function r(e) {
1820
1845
  return $(e);
@@ -1851,7 +1876,7 @@ function an(e) {
1851
1876
  return i(e) ? t.url : void 0;
1852
1877
  }
1853
1878
  function m(e) {
1854
- return e.type !== "audio" || !e.preview?.url ? null : e.preview.mediaType === "image" || !e.preview.mediaType && rn.test(e.preview.url) ? e.preview.url : null;
1879
+ return e.type !== "audio" || !e.preview?.url ? null : e.preview.mediaType === "image" || !e.preview.mediaType && sn.test(e.preview.url) ? e.preview.url : null;
1855
1880
  }
1856
1881
  function h(t, n) {
1857
1882
  return n.type === "image" ? e.viewer.isImageReady(t) : n.type === "video" || n.type === "audio" ? e.viewer.isMediaReady(t) : !1;
@@ -1881,11 +1906,11 @@ function an(e) {
1881
1906
  }
1882
1907
  //#endregion
1883
1908
  //#region src/components/viewer-core/slotContent.ts
1884
- function on(e) {
1909
+ function ln(e) {
1885
1910
  if (!Array.isArray(e)) return !1;
1886
1911
  for (let t of e) {
1887
1912
  if (Array.isArray(t)) {
1888
- if (on(t)) return !0;
1913
+ if (ln(t)) return !0;
1889
1914
  continue;
1890
1915
  }
1891
1916
  if (!h(t)) {
@@ -1896,20 +1921,20 @@ function on(e) {
1896
1921
  if (t != null && t !== !1) return !0;
1897
1922
  continue;
1898
1923
  }
1899
- if (!sn(t)) return !0;
1924
+ if (!un(t)) return !0;
1900
1925
  }
1901
1926
  return !1;
1902
1927
  }
1903
- function sn(r) {
1904
- return r.type === e ? !0 : r.type === n ? typeof r.children == "string" ? r.children.trim().length === 0 : !0 : r.type === t ? !on(r.children) : !1;
1928
+ function un(r) {
1929
+ return r.type === e ? !0 : r.type === n ? typeof r.children == "string" ? r.children.trim().length === 0 : !0 : r.type === t ? !ln(r.children) : !1;
1905
1930
  }
1906
1931
  //#endregion
1907
1932
  //#region src/components/viewer-core/useSurfaceEmptyState.ts
1908
- var cn = "no items available";
1909
- function ln(e) {
1933
+ var dn = "no items available";
1934
+ function fn(e) {
1910
1935
  let t = i(() => e.loading.value || e.itemCount.value > 0 || e.emptyStateMode.value === "hidden" ? null : {
1911
1936
  loading: !!e.loading.value,
1912
- message: cn,
1937
+ message: dn,
1913
1938
  mode: e.emptyStateMode.value === "badge" ? "badge" : "inline",
1914
1939
  surface: e.surface,
1915
1940
  total: e.itemCount.value
@@ -1917,23 +1942,23 @@ function ln(e) {
1917
1942
  return {
1918
1943
  emptyStateProps: t,
1919
1944
  showBadgeEmptyState: i(() => t.value?.mode === "badge"),
1920
- showCustomEmptyState: i(() => on(n.value)),
1945
+ showCustomEmptyState: i(() => ln(n.value)),
1921
1946
  showInlineEmptyState: i(() => t.value?.mode === "inline")
1922
1947
  };
1923
1948
  }
1924
1949
  //#endregion
1925
1950
  //#region src/components/viewer-core/format.ts
1926
- function un(e) {
1951
+ function pn(e) {
1927
1952
  if (!Number.isFinite(e) || e <= 0) return "0:00";
1928
1953
  let t = Math.floor(e), n = Math.floor(t / 3600), r = Math.floor(t % 3600 / 60), i = t % 60;
1929
1954
  return n > 0 ? `${n}:${String(r).padStart(2, "0")}:${String(i).padStart(2, "0")}` : `${r}:${String(i).padStart(2, "0")}`;
1930
1955
  }
1931
1956
  //#endregion
1932
1957
  //#region src/components/viewer-core/surfaceStatus.ts
1933
- function dn(e) {
1958
+ function mn(e) {
1934
1959
  return e.phase ? e.phase : e.loading ? e.itemCount > 0 ? "loading" : "initializing" : "idle";
1935
1960
  }
1936
- function fn(e) {
1961
+ function hn(e) {
1937
1962
  return e.phase === "failed" ? {
1938
1963
  kind: "failed",
1939
1964
  message: e.errorMessage ?? (e.hasItems ? "The viewer could not load more items." : "The viewer could not load items.")
@@ -1956,7 +1981,7 @@ function fn(e) {
1956
1981
  }
1957
1982
  //#endregion
1958
1983
  //#region src/components/viewer-core/useActivation.ts
1959
- function pn(e) {
1984
+ function gn(e) {
1960
1985
  let t = !1;
1961
1986
  z(e.enabled, async (t) => {
1962
1987
  if (n(t), t) {
@@ -1979,7 +2004,7 @@ function pn(e) {
1979
2004
  }
1980
2005
  //#endregion
1981
2006
  //#region src/components/viewer-core/assetState.ts
1982
- var mn = {
2007
+ var _n = {
1983
2008
  currentTime: 0,
1984
2009
  duration: 0,
1985
2010
  errorKind: null,
@@ -1988,38 +2013,38 @@ var mn = {
1988
2013
  ready: !1,
1989
2014
  volume: 1
1990
2015
  };
1991
- function hn() {
1992
- return { ...mn };
2016
+ function vn() {
2017
+ return { ..._n };
1993
2018
  }
1994
- function gn(e) {
2019
+ function yn(e) {
1995
2020
  return e.complete && !!(e.currentSrc || e.getAttribute("src"));
1996
2021
  }
1997
- function _n(e, t, n) {
1998
- e.currentTime = Number.isFinite(t.currentTime) ? t.currentTime : 0, e.duration = Number.isFinite(t.duration) ? t.duration : 0, e.muted = t.muted, e.paused = t.paused, e.volume = Number.isFinite(t.volume) ? t.volume : e.volume, n && n !== "error" && (e.errorKind = null), e.ready = vn(t, n);
2022
+ function bn(e, t, n) {
2023
+ e.currentTime = Number.isFinite(t.currentTime) ? t.currentTime : 0, e.duration = Number.isFinite(t.duration) ? t.duration : 0, e.muted = t.muted, e.paused = t.paused, e.volume = Number.isFinite(t.volume) ? t.volume : e.volume, n && n !== "error" && (e.errorKind = null), e.ready = xn(t, n);
1999
2024
  }
2000
- function vn(e, t) {
2025
+ function xn(e, t) {
2001
2026
  return t === "error" || t === "loadstart" || t === "waiting" || t === "stalled" ? !1 : t === "canplay" || t === "canplaythrough" || t === "playing" ? !0 : e.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA;
2002
2027
  }
2003
2028
  //#endregion
2004
2029
  //#region src/components/viewer-core/loadError.ts
2005
- var yn = /* @__PURE__ */ new Map();
2006
- function bn(e) {
2030
+ var Sn = /* @__PURE__ */ new Map();
2031
+ function Cn(e) {
2007
2032
  return e === "not-found" ? "404" : "Load error";
2008
2033
  }
2009
- function xn(e) {
2034
+ function wn(e) {
2010
2035
  return e === "generic";
2011
2036
  }
2012
- function Sn(e) {
2013
- return Cn(e).then((e) => e ?? "generic");
2037
+ function Tn(e) {
2038
+ return En(e).then((e) => e ?? "generic");
2014
2039
  }
2015
- function Cn(e) {
2016
- let t = yn.get(e);
2040
+ function En(e) {
2041
+ let t = Sn.get(e);
2017
2042
  if (t) return t;
2018
- let n = wn(e);
2019
- return yn.set(e, n), n;
2043
+ let n = Dn(e);
2044
+ return Sn.set(e, n), n;
2020
2045
  }
2021
- async function wn(e) {
2022
- if (!Tn(e)) return null;
2046
+ async function Dn(e) {
2047
+ if (!On(e)) return null;
2023
2048
  try {
2024
2049
  let t = await fetch(e, { method: "HEAD" });
2025
2050
  return t.ok ? null : t.status === 404 ? "not-found" : "generic";
@@ -2027,12 +2052,12 @@ async function wn(e) {
2027
2052
  return "generic";
2028
2053
  }
2029
2054
  }
2030
- function Tn(e) {
2055
+ function On(e) {
2031
2056
  return /^(https?:\/\/|\/)/i.test(e);
2032
2057
  }
2033
2058
  //#endregion
2034
2059
  //#region src/components/viewer-core/mediaPlayback.ts
2035
- function En(e) {
2060
+ function kn(e) {
2036
2061
  try {
2037
2062
  let t = e.play();
2038
2063
  t && typeof t.catch == "function" && t.catch(() => {});
@@ -2040,11 +2065,11 @@ function En(e) {
2040
2065
  }
2041
2066
  //#endregion
2042
2067
  //#region src/components/viewer-core/nativeVideoFullscreen.ts
2043
- function Dn(e) {
2068
+ function An(e) {
2044
2069
  let t = typeof document > "u" ? null : document;
2045
2070
  return typeof document < "u" && typeof HTMLVideoElement < "u" && e instanceof HTMLVideoElement && (document.fullscreenElement === e || t?.webkitFullscreenElement === e);
2046
2071
  }
2047
- function On(e) {
2072
+ function jn(e) {
2048
2073
  let t = e.requestFullscreen?.bind(e);
2049
2074
  if (t) {
2050
2075
  let e = t();
@@ -2060,12 +2085,12 @@ function On(e) {
2060
2085
  }
2061
2086
  //#endregion
2062
2087
  //#region src/components/viewer-core/useMedia.ts
2063
- function kn(e) {
2088
+ function Mn(e) {
2064
2089
  let t = D({}), n = D({}), r = D({}), a = D({}), o = D({}), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Set(), u = i(() => e.activeItem.value ? $(e.activeItem.value) : null), d = i(() => e.activeMediaItem.value ? $(e.activeMediaItem.value) : null), f = i(() => {
2065
2090
  let t = /* @__PURE__ */ new Map();
2066
2091
  for (let n of e.items.value) t.set($(n), n);
2067
2092
  return t;
2068
- }), p = i(() => d.value ? r.value[d.value] ?? mn : mn), m = i(() => d.value ? p.value.duration : 0), h = i(() => m.value <= 0 ? 0 : An(p.value.currentTime / m.value * 100, 0, 100)), g = i(() => u.value ? L(u.value) : null);
2093
+ }), p = i(() => d.value ? r.value[d.value] ?? _n : _n), m = i(() => d.value ? p.value.duration : 0), h = i(() => m.value <= 0 ? 0 : Nn(p.value.currentTime / m.value * 100, 0, 100)), g = i(() => u.value ? L(u.value) : null);
2069
2094
  z(() => u.value, async () => {
2070
2095
  await C();
2071
2096
  }), z(() => e.itemCount.value, async () => {
@@ -2088,7 +2113,7 @@ function kn(e) {
2088
2113
  c.delete(e);
2089
2114
  }
2090
2115
  function b(e, r) {
2091
- r instanceof HTMLImageElement && gn(r) && (t.value[e] = !0, n.value[e] = null, Y(e, r.currentSrc || r.src || re(e)));
2116
+ r instanceof HTMLImageElement && yn(r) && (t.value[e] = !0, n.value[e] = null, J(e, r.currentSrc || r.src || ie(e)));
2092
2117
  }
2093
2118
  function x() {
2094
2119
  U(), a.value = {}, n.value = {}, t.value = {}, o.value = {}, r.value = {}, l.clear();
@@ -2110,14 +2135,14 @@ function kn(e) {
2110
2135
  H(i, n);
2111
2136
  continue;
2112
2137
  }
2113
- i.muted = !1, i.loop = e.loopFullscreenVideo.value, i.playsInline = !0, En(i), W(n, i);
2138
+ i.muted = !1, i.loop = e.loopFullscreenVideo.value, i.playsInline = !0, kn(i), W(n, i);
2114
2139
  }
2115
2140
  for (let [e, n] of c.entries()) {
2116
2141
  if (e !== t || r.value[e]?.errorKind) {
2117
2142
  H(n, e);
2118
2143
  continue;
2119
2144
  }
2120
- En(n), W(e, n);
2145
+ kn(n), W(e, n);
2121
2146
  }
2122
2147
  }
2123
2148
  function w(e, t) {
@@ -2126,16 +2151,16 @@ function kn(e) {
2126
2151
  let i = r.value[e]?.ready ?? !1;
2127
2152
  W(e, n, t.type);
2128
2153
  let a = r.value[e]?.ready ?? !1;
2129
- !i && a && Y(e, n.currentSrc || n.src || re(e));
2154
+ !i && a && J(e, n.currentSrc || n.src || ie(e));
2130
2155
  }
2131
2156
  }
2132
2157
  function T(e, r) {
2133
- t.value[e] = !0, n.value[e] = null, Y(e, r);
2158
+ t.value[e] = !0, n.value[e] = null, J(e, r);
2134
2159
  }
2135
2160
  async function E(r, i) {
2136
- let a = X(r) ?? e.activeItem.value;
2161
+ let a = Y(r) ?? e.activeItem.value;
2137
2162
  t.value[r] = !1, n.value[r] = "generic";
2138
- let o = await Sn(i);
2163
+ let o = await Tn(i);
2139
2164
  n.value[r] = o, a && e.onAssetError?.({
2140
2165
  item: a,
2141
2166
  occurrenceKey: r,
@@ -2145,7 +2170,7 @@ function kn(e) {
2145
2170
  });
2146
2171
  }
2147
2172
  async function O(t, n) {
2148
- let r = q(t), i = te(t), a = X(t) ?? e.activeMediaItem.value ?? e.activeItem.value;
2173
+ let r = K(t), i = te(t), a = Y(t) ?? e.activeMediaItem.value ?? e.activeItem.value;
2149
2174
  if (r) {
2150
2175
  r.pause();
2151
2176
  try {
@@ -2153,7 +2178,7 @@ function kn(e) {
2153
2178
  } catch {}
2154
2179
  }
2155
2180
  i.currentTime = 0, i.duration = 0, i.paused = !0, i.ready = !1, i.errorKind = "generic";
2156
- let o = await Sn(n);
2181
+ let o = await Tn(n);
2157
2182
  i.errorKind = o, a && e.onAssetError?.({
2158
2183
  item: a,
2159
2184
  occurrenceKey: t,
@@ -2163,28 +2188,28 @@ function kn(e) {
2163
2188
  });
2164
2189
  }
2165
2190
  function k(e, t, n) {
2166
- e.button !== 0 || Date.now() < n || Dn(e.currentTarget) || ne(s.get(t) ?? null);
2191
+ e.button !== 0 || Date.now() < n || An(e.currentTarget) || re(s.get(t) ?? null);
2167
2192
  }
2168
2193
  function A(e, t, n) {
2169
- e.button !== 0 || Date.now() < n || ne(q(t));
2194
+ e.button !== 0 || Date.now() < n || re(K(t));
2170
2195
  }
2171
2196
  function j(e) {
2172
- let t = J(), n = d.value;
2197
+ let t = q(), n = d.value;
2173
2198
  if (!t || !n || !(e.target instanceof HTMLInputElement)) return;
2174
2199
  let r = Number.parseFloat(e.target.value);
2175
2200
  if (!Number.isFinite(r)) return;
2176
- let i = An(r, 0, m.value || 0);
2177
- G(n, i, t), t.currentTime = i;
2201
+ let i = Nn(r, 0, m.value || 0);
2202
+ ne(n, i, t), t.currentTime = i;
2178
2203
  }
2179
2204
  function M(e) {
2180
- let t = J(), n = d.value;
2205
+ let t = q(), n = d.value;
2181
2206
  if (!t || !n || !(e.target instanceof HTMLInputElement)) return;
2182
- let r = An(Number.parseFloat(e.target.value), 0, 1);
2207
+ let r = Nn(Number.parseFloat(e.target.value), 0, 1);
2183
2208
  t.volume = r, t.muted = r <= 0, r > 0 && (o.value[n] = r), W(n, t);
2184
2209
  }
2185
2210
  function N() {
2186
- let e = J(), t = d.value;
2187
- !e || !t || (e.muted || e.volume <= 0 ? (e.volume = K(t), e.muted = !1, o.value[t] = e.volume) : (o.value[t] = e.volume, e.muted = !0), W(t, e));
2211
+ let e = q(), t = d.value;
2212
+ !e || !t || (e.muted || e.volume <= 0 ? (e.volume = G(t), e.muted = !1, o.value[t] = e.volume) : (o.value[t] = e.volume, e.muted = !0), W(t, e));
2188
2213
  }
2189
2214
  function P(e) {
2190
2215
  return !!t.value[e] && !n.value[e];
@@ -2200,10 +2225,10 @@ function kn(e) {
2200
2225
  }
2201
2226
  function R(e) {
2202
2227
  let t = L(e);
2203
- return t ? bn(t) : null;
2228
+ return t ? Cn(t) : null;
2204
2229
  }
2205
2230
  function ee(e) {
2206
- return xn(L(e));
2231
+ return wn(L(e));
2207
2232
  }
2208
2233
  function B(e) {
2209
2234
  return `${e}:${a.value[e] ?? 0}`;
@@ -2213,7 +2238,7 @@ function kn(e) {
2213
2238
  t.value[e] = !1, n.value[e] = null;
2214
2239
  let r = te(e);
2215
2240
  r.currentTime = 0, r.duration = 0, r.paused = !0, r.ready = !1, r.errorKind = null;
2216
- let i = q(e);
2241
+ let i = K(e);
2217
2242
  i && H(i, e), l.forEach((t) => {
2218
2243
  t.startsWith(`${e}|`) && l.delete(t);
2219
2244
  }), a.value[e] = (a.value[e] ?? 0) + 1, await _(), await C();
@@ -2230,35 +2255,35 @@ function kn(e) {
2230
2255
  for (let [e, t] of c.entries()) H(t, e);
2231
2256
  }
2232
2257
  function te(e) {
2233
- return r.value[e] || (r.value[e] = hn()), r.value[e];
2258
+ return r.value[e] || (r.value[e] = vn()), r.value[e];
2234
2259
  }
2235
2260
  function W(e, t, n) {
2236
- _n(te(e), t, n), !t.muted && t.volume > 0 && (o.value[e] = t.volume);
2261
+ bn(te(e), t, n), !t.muted && t.volume > 0 && (o.value[e] = t.volume);
2237
2262
  }
2238
- function G(e, t, n) {
2263
+ function ne(e, t, n) {
2239
2264
  let r = te(e);
2240
2265
  r.currentTime = t, r.duration = Number.isFinite(n.duration) ? n.duration : r.duration, r.muted = n.muted, r.paused = n.paused, r.volume = Number.isFinite(n.volume) ? n.volume : r.volume;
2241
2266
  }
2242
- function K(e) {
2243
- return An(o.value[e] ?? 1, 0, 1);
2267
+ function G(e) {
2268
+ return Nn(o.value[e] ?? 1, 0, 1);
2244
2269
  }
2245
- function q(e) {
2270
+ function K(e) {
2246
2271
  return s.get(e) ?? c.get(e) ?? null;
2247
2272
  }
2248
- function J() {
2249
- return d.value ? q(d.value) : null;
2273
+ function q() {
2274
+ return d.value ? K(d.value) : null;
2250
2275
  }
2251
- function ne(e) {
2276
+ function re(e) {
2252
2277
  if (e) {
2253
2278
  if (e.paused) {
2254
- En(e);
2279
+ kn(e);
2255
2280
  return;
2256
2281
  }
2257
2282
  e.pause();
2258
2283
  }
2259
2284
  }
2260
- function Y(t, n) {
2261
- let r = X(t) ?? e.activeMediaItem.value ?? e.activeItem.value;
2285
+ function J(t, n) {
2286
+ let r = Y(t) ?? e.activeMediaItem.value ?? e.activeItem.value;
2262
2287
  if (!r || !n) return;
2263
2288
  let i = `${t}|${n}`;
2264
2289
  l.has(i) || (l.add(i), e.onAssetLoad?.({
@@ -2268,11 +2293,11 @@ function kn(e) {
2268
2293
  url: n
2269
2294
  }));
2270
2295
  }
2271
- function X(e) {
2296
+ function Y(e) {
2272
2297
  return f.value.get(e) ?? null;
2273
2298
  }
2274
- function re(e) {
2275
- return X(e)?.url ?? null;
2299
+ function ie(e) {
2300
+ return Y(e)?.url ?? null;
2276
2301
  }
2277
2302
  return {
2278
2303
  activeAssetErrorKind: g,
@@ -2305,16 +2330,16 @@ function kn(e) {
2305
2330
  syncMediaPlayback: C
2306
2331
  };
2307
2332
  }
2308
- function An(e, t, n) {
2333
+ function Nn(e, t, n) {
2309
2334
  return Math.min(Math.max(e, t), n);
2310
2335
  }
2311
2336
  //#endregion
2312
2337
  //#region src/components/viewer-core/virtualization.ts
2313
- var jn = {
2338
+ var Pn = {
2314
2339
  backward: 1,
2315
2340
  forward: 3
2316
2341
  };
2317
- function Mn(e, t, n = jn) {
2342
+ function Fn(e, t, n = Pn) {
2318
2343
  return t <= 0 ? {
2319
2344
  start: 0,
2320
2345
  end: -1
@@ -2323,14 +2348,14 @@ function Mn(e, t, n = jn) {
2323
2348
  end: Math.min(t - 1, e + n.forward)
2324
2349
  };
2325
2350
  }
2326
- function Nn(e, t, n = jn) {
2327
- let r = Mn(t, e.length, n);
2351
+ function In(e, t, n = Pn) {
2352
+ let r = Fn(t, e.length, n);
2328
2353
  return r.end < r.start ? [] : e.slice(r.start, r.end + 1).map((e, t) => ({
2329
2354
  item: e,
2330
2355
  index: r.start + t
2331
2356
  }));
2332
2357
  }
2333
- function Pn(e, t, n, r, i) {
2358
+ function Ln(e, t, n, r, i) {
2334
2359
  return {
2335
2360
  transform: `translate3d(0, ${(e - t) * n + r}px, 0)`,
2336
2361
  transition: i ? "none" : "transform 320ms cubic-bezier(0.22, 1, 0.36, 1)"
@@ -2338,12 +2363,12 @@ function Pn(e, t, n, r, i) {
2338
2363
  }
2339
2364
  //#endregion
2340
2365
  //#region src/components/viewer-core/useViewer.ts
2341
- function Fn(e, t, n = {}) {
2342
- let r = i(() => e.items), a = i(() => e.activeIndex ?? 0), o = i(() => e.errorMessage ?? null), s = i(() => e.loading ?? !1), c = i(() => e.hasNextPage ?? !1), l = i(() => e.loopFullscreenVideo ?? !0), u = i(() => e.paginationDetail ?? null), d = i(() => dn({
2366
+ function Rn(e, t, n = {}) {
2367
+ let r = i(() => e.items), a = i(() => e.activeIndex ?? 0), o = i(() => e.errorMessage ?? null), s = i(() => e.loading ?? !1), c = i(() => e.hasNextPage ?? !1), l = i(() => e.loopFullscreenVideo ?? !0), u = i(() => e.paginationDetail ?? null), d = i(() => mn({
2343
2368
  itemCount: r.value.length,
2344
2369
  loading: s.value,
2345
2370
  phase: e.phase
2346
- })), f = i(() => !1), p = D(null), m = D(0), h = D(!1), g = D(1), _ = n.enabled ?? i(() => !0), v = null, y = 0, b = 0, x = 0, S = i(() => r.value.length === 0 ? 0 : P(a.value, 0, r.value.length - 1)), C = i(() => r.value[S.value] ?? null), w = i(() => C.value?.type === "audio" || C.value?.type === "video" ? C.value : null), T = kn({
2371
+ })), f = i(() => !1), p = D(null), m = D(0), h = D(!1), g = D(1), _ = n.enabled ?? i(() => !0), v = null, y = 0, b = 0, x = 0, S = i(() => r.value.length === 0 ? 0 : P(a.value, 0, r.value.length - 1)), C = i(() => r.value[S.value] ?? null), w = i(() => C.value?.type === "audio" || C.value?.type === "video" ? C.value : null), T = Mn({
2347
2372
  items: r,
2348
2373
  activeItem: C,
2349
2374
  activeMediaItem: w,
@@ -2352,14 +2377,14 @@ function Fn(e, t, n = {}) {
2352
2377
  loopFullscreenVideo: l,
2353
2378
  onAssetError: n.onAssetError,
2354
2379
  onAssetLoad: n.onAssetLoad
2355
- }), E = i(() => r.value.length > 0 && S.value === r.value.length - 1), O = i(() => fn({
2380
+ }), E = i(() => r.value.length > 0 && S.value === r.value.length - 1), O = i(() => hn({
2356
2381
  errorMessage: o.value,
2357
2382
  hasItems: r.value.length > 0,
2358
2383
  hasNextPage: c.value,
2359
2384
  phase: d.value,
2360
2385
  surface: "fullscreen"
2361
- })), k = i(() => O.value?.kind ?? null), A = i(() => O.value?.message ?? null), j = i(() => Math.min(96, g.value * .15 || 96)), M = i(() => Mn(S.value, r.value.length)), N = i(() => Nn(r.value, S.value));
2362
- pn({
2386
+ })), k = i(() => O.value?.kind ?? null), A = i(() => O.value?.message ?? null), j = i(() => Math.min(96, g.value * .15 || 96)), M = i(() => Fn(S.value, r.value.length)), N = i(() => In(r.value, S.value));
2387
+ gn({
2363
2388
  enabled: _,
2364
2389
  onDisable() {
2365
2390
  U(), T.resetMediaState();
@@ -2389,7 +2414,7 @@ function Fn(e, t, n = {}) {
2389
2414
  return t && !I(-1) || n && !I(1) ? e * .24 : e;
2390
2415
  }
2391
2416
  function z(e) {
2392
- !_.value || r.value.length === 0 || e.pointerType === "mouse" || ve(e.target) || (v = e.pointerId, y = e.clientY, m.value = 0, h.value = !0, p.value?.setPointerCapture?.(e.pointerId));
2417
+ !_.value || r.value.length === 0 || e.pointerType === "mouse" || ye(e.target) || (v = e.pointerId, y = e.clientY, m.value = 0, h.value = !0, p.value?.setPointerCapture?.(e.pointerId));
2393
2418
  }
2394
2419
  function ee(e) {
2395
2420
  !_.value || !h.value || v !== e.pointerId || (m.value = R(e.clientY - y));
@@ -2407,37 +2432,37 @@ function Fn(e, t, n = {}) {
2407
2432
  m.value = 0, h.value = !1, v = null;
2408
2433
  }
2409
2434
  function te(e) {
2410
- if (!_.value || r.value.length === 0 || h.value || ve(e.target) || Math.abs(e.deltaY) < Math.max(Math.abs(e.deltaX), 24)) return;
2435
+ if (!_.value || r.value.length === 0 || h.value || ye(e.target) || Math.abs(e.deltaY) < Math.max(Math.abs(e.deltaX), 24)) return;
2411
2436
  e.preventDefault();
2412
2437
  let t = Date.now();
2413
2438
  t < b || (b = t + 400, L(e.deltaY > 0 ? 1 : -1));
2414
2439
  }
2415
2440
  function W(e) {
2416
- !_.value || r.value.length === 0 || Z(e.target) || ((e.key === "ArrowDown" || e.key === "PageDown") && (e.preventDefault(), L(1)), (e.key === "ArrowUp" || e.key === "PageUp") && (e.preventDefault(), L(-1)));
2441
+ !_.value || r.value.length === 0 || ve(e.target) || ((e.key === "ArrowDown" || e.key === "PageDown") && (e.preventDefault(), L(1)), (e.key === "ArrowUp" || e.key === "PageUp") && (e.preventDefault(), L(-1)));
2417
2442
  }
2418
- function G(e, t) {
2443
+ function ne(e, t) {
2419
2444
  T.onVideoClick(e, t, x);
2420
2445
  }
2421
- function K(e, t) {
2446
+ function G(e, t) {
2422
2447
  T.onAudioCoverClick(e, t, x);
2423
2448
  }
2424
- function q(e) {
2449
+ function K(e) {
2425
2450
  T.onMediaSeekInput(e);
2426
2451
  }
2427
- function J(e) {
2452
+ function q(e) {
2428
2453
  T.onMediaVolumeInput(e);
2429
2454
  }
2430
- function ne() {
2455
+ function re() {
2431
2456
  T.onMediaVolumeToggle();
2432
2457
  }
2433
- function Y(e) {
2458
+ function J(e) {
2434
2459
  return e.type === "image" || e.type === "video";
2435
2460
  }
2436
- function X(e) {
2461
+ function Y(e) {
2437
2462
  return e.type === "audio";
2438
2463
  }
2439
- function re(e) {
2440
- return Pn(e, S.value, g.value, m.value, h.value);
2464
+ function ie(e) {
2465
+ return Ln(e, S.value, g.value, m.value, h.value);
2441
2466
  }
2442
2467
  return {
2443
2468
  activeItem: C,
@@ -2452,31 +2477,31 @@ function Fn(e, t, n = {}) {
2452
2477
  getAssetErrorKind: T.getAssetErrorKind,
2453
2478
  getAssetErrorLabel: T.getAssetErrorLabel,
2454
2479
  getAssetRenderKey: T.getAssetRenderKey,
2455
- formatPlaybackTime: un,
2480
+ formatPlaybackTime: pn,
2456
2481
  getImageSource: T.getImageSource,
2457
- getSlideStyle: re,
2482
+ getSlideStyle: ie,
2458
2483
  hasNextPage: c,
2459
2484
  isAtEnd: E,
2460
- isAudio: X,
2461
- isVisual: Y,
2485
+ isAudio: Y,
2486
+ isVisual: J,
2462
2487
  items: r,
2463
2488
  loading: s,
2464
2489
  mediaStates: T.mediaStates,
2465
2490
  isImageReady: T.isImageReady,
2466
2491
  isMediaReady: T.isMediaReady,
2467
- onAudioCoverClick: K,
2492
+ onAudioCoverClick: G,
2468
2493
  onImageError: T.onImageError,
2469
2494
  onImageLoad: T.onImageLoad,
2470
2495
  onMediaEvent: T.onMediaEvent,
2471
2496
  onMediaError: T.onMediaError,
2472
- onMediaSeekInput: q,
2473
- onMediaVolumeInput: J,
2474
- onMediaVolumeToggle: ne,
2497
+ onMediaSeekInput: K,
2498
+ onMediaVolumeInput: q,
2499
+ onMediaVolumeToggle: re,
2475
2500
  onPointerCancel: V,
2476
2501
  onPointerDown: z,
2477
2502
  onPointerMove: ee,
2478
2503
  onPointerUp: B,
2479
- onVideoClick: G,
2504
+ onVideoClick: ne,
2480
2505
  onWheel: te,
2481
2506
  registerAudioElement: T.registerAudioElement,
2482
2507
  registerImageElement: T.registerImageElement,
@@ -2496,21 +2521,21 @@ function Fn(e, t, n = {}) {
2496
2521
  }
2497
2522
  //#endregion
2498
2523
  //#region src/components/viewer-core/theme.ts
2499
- var In = "bg-[linear-gradient(180deg,#0a0b10,#05060a)]", Ln = "bg-[linear-gradient(180deg,#0b0c11,#06070b)]", Rn = {
2524
+ var zn = "bg-[linear-gradient(180deg,#0a0b10,#05060a)]", Bn = "bg-[linear-gradient(180deg,#0b0c11,#06070b)]", Vn = {
2500
2525
  image: !0,
2501
2526
  video: !0,
2502
2527
  audio: !0,
2503
2528
  other: !0
2504
2529
  };
2505
- function zn(e) {
2506
- return Rn[e], In;
2530
+ function Hn(e) {
2531
+ return Vn[e], zn;
2507
2532
  }
2508
- function Bn(e) {
2509
- return Rn[e], Ln;
2533
+ function Un(e) {
2534
+ return Vn[e], Bn;
2510
2535
  }
2511
2536
  //#endregion
2512
2537
  //#region src/components/viewer-core/useFullscreenAssetEvents.ts
2513
- function Vn(e) {
2538
+ function Wn(e) {
2514
2539
  function t(t, n) {
2515
2540
  return e.fullscreenMedia.shouldHandleSlideAssetEvent(t, n) ? e.fullscreenMedia.getItemKey(n) : null;
2516
2541
  }
@@ -2543,7 +2568,7 @@ function Vn(e) {
2543
2568
  }
2544
2569
  //#endregion
2545
2570
  //#region src/components/viewer-core/dominantImageTone.ts
2546
- function Hn(e) {
2571
+ function Gn(e) {
2547
2572
  if (e.naturalWidth <= 0 || e.naturalHeight <= 0) return null;
2548
2573
  let t = document.createElement("canvas"), n = t.getContext("2d", { willReadFrequently: !0 });
2549
2574
  if (!n) return null;
@@ -2558,20 +2583,20 @@ function Hn(e) {
2558
2583
  r += d, i += s * d, a += c * d, o += l * d;
2559
2584
  }
2560
2585
  return r <= 0 ? null : {
2561
- r: Un(Math.round(i / r)),
2562
- g: Un(Math.round(a / r)),
2563
- b: Un(Math.round(o / r))
2586
+ r: Kn(Math.round(i / r)),
2587
+ g: Kn(Math.round(a / r)),
2588
+ b: Kn(Math.round(o / r))
2564
2589
  };
2565
2590
  } catch {
2566
2591
  return null;
2567
2592
  }
2568
2593
  }
2569
- function Un(e) {
2594
+ function Kn(e) {
2570
2595
  return Math.min(235, Math.max(26, e));
2571
2596
  }
2572
2597
  //#endregion
2573
2598
  //#region src/components/viewer-core/useFullscreenDominantTone.ts
2574
- function Wn(e) {
2599
+ function qn(e) {
2575
2600
  let t = D({}), n = i(() => e.activeItem.value ? e.getItemKey(e.activeItem.value) : null), r = i(() => !e.showDominantImageTone.value || e.activeItem.value?.type !== "image" || !n.value || !e.isImageReady(n.value) ? null : t.value[n.value] ?? null), a = i(() => {
2576
2601
  if (!r.value) return;
2577
2602
  let { r: e, g: t, b: n } = r.value;
@@ -2586,7 +2611,7 @@ function Wn(e) {
2586
2611
  });
2587
2612
  function s(n, r) {
2588
2613
  if (!e.showDominantImageTone.value) return;
2589
- let i = Hn(r);
2614
+ let i = Gn(r);
2590
2615
  i && (t.value[n] = i);
2591
2616
  }
2592
2617
  return {
@@ -2597,7 +2622,7 @@ function Wn(e) {
2597
2622
  }
2598
2623
  //#endregion
2599
2624
  //#region src/components/viewer-core/useVideoFullscreen.ts
2600
- function Gn(e) {
2625
+ function Jn(e) {
2601
2626
  let t = /* @__PURE__ */ new Map();
2602
2627
  function n(e, n) {
2603
2628
  if (n instanceof HTMLVideoElement) {
@@ -2608,7 +2633,7 @@ function Gn(e) {
2608
2633
  }
2609
2634
  function r() {
2610
2635
  let n = e.activeItem.value, r = n?.type === "video" ? t.get(e.getItemKey(n)) : null;
2611
- r && On(r);
2636
+ r && jn(r);
2612
2637
  }
2613
2638
  return {
2614
2639
  registerElement: n,
@@ -2617,20 +2642,20 @@ function Gn(e) {
2617
2642
  }
2618
2643
  //#endregion
2619
2644
  //#region src/components/FullscreenForwardFillPlaceholder.vue?vue&type=script&setup=true&lang.ts
2620
- var Kn = {
2645
+ var Yn = {
2621
2646
  "data-testid": "vibe-forward-fill-placeholder",
2622
2647
  class: "grid h-full min-h-0 place-items-center px-6 text-center"
2623
- }, qn = { class: "grid w-full max-w-[22rem] justify-items-center gap-4 border border-white/14 bg-black/40 px-8 py-7 backdrop-blur-[18px]" }, Jn = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)]" }, Yn = {
2648
+ }, Xn = { class: "grid w-full max-w-[22rem] justify-items-center gap-4 border border-white/14 bg-black/40 px-8 py-7 backdrop-blur-[18px]" }, Zn = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)]" }, Qn = {
2624
2649
  "data-testid": "vibe-forward-fill-message",
2625
2650
  class: "m-0 text-[0.78rem] font-bold uppercase tracking-[0.24em] text-[#f7f1ea]/72"
2626
- }, Xn = {
2651
+ }, $n = {
2627
2652
  key: 0,
2628
2653
  "data-testid": "vibe-forward-fill-progress",
2629
2654
  class: "grid w-full gap-2"
2630
- }, Zn = { class: "flex items-center justify-between gap-4 text-[0.62rem] font-bold uppercase tracking-[0.16em] text-[#f7f1ea]/58" }, Qn = { key: 0 }, $n = {
2655
+ }, er = { class: "flex items-center justify-between gap-4 text-[0.62rem] font-bold uppercase tracking-[0.16em] text-[#f7f1ea]/58" }, tr = { key: 0 }, nr = {
2631
2656
  key: 0,
2632
2657
  class: "h-1 w-full overflow-hidden bg-white/10"
2633
- }, er = /* @__PURE__ */ d({
2658
+ }, rr = /* @__PURE__ */ d({
2634
2659
  __name: "FullscreenForwardFillPlaceholder",
2635
2660
  props: {
2636
2661
  fillCollectedCount: { default: null },
@@ -2675,20 +2700,20 @@ var Kn = {
2675
2700
  function h(e) {
2676
2701
  return Math.min(Math.max(e, 0), 1);
2677
2702
  }
2678
- return (e, t) => (w(), s("div", Kn, [c("div", qn, [
2679
- c("span", Jn, [u(F(se), {
2703
+ return (e, t) => (w(), s("div", Yn, [c("div", Xn, [
2704
+ c("span", Zn, [u(F(se), {
2680
2705
  class: "h-5 w-5 animate-spin stroke-[1.9] text-[#f7f1ea]/78",
2681
2706
  "aria-hidden": "true"
2682
2707
  })]),
2683
- c("p", Yn, M(n.value), 1),
2684
- l.value ? (w(), s("div", Xn, [c("div", Zn, [c("span", null, M(l.value), 1), d.value ? (w(), s("span", Qn, M(d.value), 1)) : o("", !0)]), a.value === null ? o("", !0) : (w(), s("div", $n, [c("span", {
2708
+ c("p", Qn, M(n.value), 1),
2709
+ l.value ? (w(), s("div", $n, [c("div", er, [c("span", null, M(l.value), 1), d.value ? (w(), s("span", tr, M(d.value), 1)) : o("", !0)]), a.value === null ? o("", !0) : (w(), s("div", nr, [c("span", {
2685
2710
  "data-testid": "vibe-forward-fill-progress-bar",
2686
2711
  class: "block h-full bg-[#f7f1ea]/58 transition-[width] duration-200",
2687
2712
  style: b(f.value)
2688
2713
  }, null, 4)]))])) : o("", !0)
2689
2714
  ])]));
2690
2715
  }
2691
- }), tr = ["data-surface"], nr = ["data-surface"], rr = /* @__PURE__ */ d({
2716
+ }), ir = ["data-surface"], ar = ["data-surface"], or = /* @__PURE__ */ d({
2692
2717
  inheritAttrs: !1,
2693
2718
  __name: "SurfaceEmptyState",
2694
2719
  props: {
@@ -2702,30 +2727,30 @@ var Kn = {
2702
2727
  "data-testid": "vibe-empty-state-inline",
2703
2728
  "data-surface": e.surface,
2704
2729
  class: ["pointer-events-none absolute z-[4] text-center", e.surface === "grid" ? "inset-x-0 top-[clamp(6rem,22vh,11rem)] flex justify-center px-6" : "inset-0 grid place-items-center px-[clamp(2rem,4vw,3rem)] py-[clamp(2rem,4vw,3rem)]"]
2705
- }), [k(n.$slots, "default", {}, () => [c("p", { class: v(["m-0 text-[0.82rem] font-medium tracking-[0.08em]", e.surface === "grid" ? "text-[#f7f1ea]/58" : "text-[#f7f1ea]/64"]) }, M(e.message), 3)])], 16, tr)) : (w(), s("div", g({ key: 1 }, F(t), { class: ["pointer-events-none absolute z-[4]", e.surface === "grid" ? "inset-x-0 bottom-0 flex justify-center px-6" : "bottom-[1.8rem] left-1/2 -translate-x-1/2 max-[720px]:bottom-[1.3rem]"] }), [k(n.$slots, "default", {}, () => [c("span", {
2730
+ }), [k(n.$slots, "default", {}, () => [c("p", { class: v(["m-0 text-[0.82rem] font-medium tracking-[0.08em]", e.surface === "grid" ? "text-[#f7f1ea]/58" : "text-[#f7f1ea]/64"]) }, M(e.message), 3)])], 16, ir)) : (w(), s("div", g({ key: 1 }, F(t), { class: ["pointer-events-none absolute z-[4]", e.surface === "grid" ? "inset-x-0 bottom-0 flex justify-center px-6" : "bottom-[1.8rem] left-1/2 -translate-x-1/2 max-[720px]:bottom-[1.3rem]"] }), [k(n.$slots, "default", {}, () => [c("span", {
2706
2731
  "data-testid": "vibe-empty-state-badge",
2707
2732
  "data-surface": e.surface,
2708
2733
  class: v(["inline-flex items-center border border-white/14 backdrop-blur-[18px]", e.surface === "grid" ? "bg-black/55 px-4 py-3 text-[0.82rem] font-medium tracking-[0.08em] text-[#f7f1ea]/72" : "w-auto bg-black/40 px-5 py-3 text-[0.82rem] font-medium tracking-[0.08em] text-[#f7f1ea]/74 max-[720px]:w-[calc(100%-2.5rem)] max-[720px]:justify-center"])
2709
- }, M(e.message), 11, nr)])], 16));
2734
+ }, M(e.message), 11, ar)])], 16));
2710
2735
  }
2711
- }), ir = 1, ar = .5;
2712
- function or(e) {
2736
+ }), sr = 1, cr = .5;
2737
+ function lr(e) {
2713
2738
  if (e.type !== "image" && e.type !== "video") return {
2714
- width: ir,
2715
- height: ir,
2739
+ width: sr,
2740
+ height: sr,
2716
2741
  source: "fallback"
2717
2742
  };
2718
2743
  let t = e.preview?.width, n = e.preview?.height;
2719
- if (hr(t) && hr(n)) {
2720
- let r = gr(e, t, n);
2744
+ if (vr(t) && vr(n)) {
2745
+ let r = yr(e, t, n);
2721
2746
  return {
2722
2747
  width: r.width,
2723
2748
  height: r.height,
2724
2749
  source: "preview"
2725
2750
  };
2726
2751
  }
2727
- if (hr(e.width) && hr(e.height)) {
2728
- let t = gr(e, e.width, e.height);
2752
+ if (vr(e.width) && vr(e.height)) {
2753
+ let t = yr(e, e.width, e.height);
2729
2754
  return {
2730
2755
  width: t.width,
2731
2756
  height: t.height,
@@ -2733,24 +2758,24 @@ function or(e) {
2733
2758
  };
2734
2759
  }
2735
2760
  return {
2736
- width: ir,
2737
- height: ir,
2761
+ width: sr,
2762
+ height: sr,
2738
2763
  source: "fallback"
2739
2764
  };
2740
2765
  }
2741
- function sr(e, t) {
2766
+ function ur(e, t) {
2742
2767
  return !e || e <= 0 || !t || t <= 0 ? 1 : Math.max(1, Math.floor(e / t));
2743
2768
  }
2744
- function cr(e, t, n, r = 0) {
2769
+ function dr(e, t, n, r = 0) {
2745
2770
  if (!e || e <= 0 || !t || t <= 0) return n;
2746
2771
  let i = typeof r == "number" && r > 0 ? r : 0, a = e - Math.max(0, t - 1) * i;
2747
2772
  return !a || a <= 0 ? n : a / t;
2748
2773
  }
2749
- function lr(e, t) {
2750
- let n = or(e);
2774
+ function fr(e, t) {
2775
+ let n = lr(e);
2751
2776
  return n.height / n.width * t;
2752
2777
  }
2753
- function ur(e, t) {
2778
+ function pr(e, t) {
2754
2779
  let n = Array.from({ length: t.columnCount }, () => 0), r = {
2755
2780
  positions: Array(e.length),
2756
2781
  heights: Array(e.length),
@@ -2759,18 +2784,18 @@ function ur(e, t) {
2759
2784
  indexById: /* @__PURE__ */ new Map(),
2760
2785
  columnHeights: n
2761
2786
  };
2762
- return dr(r, e, {
2787
+ return mr(r, e, {
2763
2788
  ...t,
2764
2789
  startIndex: 0
2765
2790
  }), r;
2766
2791
  }
2767
- function dr(e, t, n) {
2792
+ function mr(e, t, n) {
2768
2793
  for (let r = 0; r < t.length; r += 1) {
2769
2794
  let i = t[r], a = n.startIndex + r;
2770
2795
  e.indexById.set($(i), a);
2771
2796
  let o = 0;
2772
2797
  for (let t = 1; t < e.columnHeights.length; t += 1) e.columnHeights[t] < e.columnHeights[o] && (o = t);
2773
- let s = o * (n.columnWidth + n.gapX), c = e.columnHeights[o], l = lr(i, n.columnWidth);
2798
+ let s = o * (n.columnWidth + n.gapX), c = e.columnHeights[o], l = fr(i, n.columnWidth);
2774
2799
  e.positions[a] = {
2775
2800
  x: s + (n.positionOffsetX ?? 0),
2776
2801
  y: c + (n.positionOffsetY ?? 0)
@@ -2783,20 +2808,20 @@ function dr(e, t, n) {
2783
2808
  }
2784
2809
  return e;
2785
2810
  }
2786
- function fr(e, t) {
2811
+ function hr(e, t) {
2787
2812
  let n = [...t.columnHeights], r = t.contentHeight;
2788
2813
  for (let i of e) {
2789
2814
  let e = 0;
2790
2815
  for (let t = 1; t < n.length; t += 1) n[t] < n[e] && (e = t);
2791
- let a = n[e], o = lr(i, t.columnWidth);
2816
+ let a = n[e], o = fr(i, t.columnWidth);
2792
2817
  n[e] = a + o + t.gapY, r = Math.max(r, a + o);
2793
2818
  }
2794
2819
  return r;
2795
2820
  }
2796
- function pr(e) {
2821
+ function gr(e) {
2797
2822
  return e.addedItems.length === 0 || e.removedItemCount > 0 || e.isPrepend || e.previousItems.length === 0 || e.layoutItemCount !== e.previousItems.length || e.columnHeights.length !== e.columnCount || e.currentItems.length !== e.previousItems.length + e.addedItems.length ? !1 : e.previousItems.every((t, n) => $(t) === $(e.currentItems[n]));
2798
2823
  }
2799
- function mr(e) {
2824
+ function _r(e) {
2800
2825
  if (e.itemCount <= 0) return [];
2801
2826
  if (e.viewportHeight <= 0) return Array.from({ length: e.itemCount }, (e, t) => t);
2802
2827
  let t = Math.max(0, e.scrollTop - e.overscanPx), n = e.scrollTop + e.viewportHeight + e.overscanPx, r = Math.floor(t / e.bucketPx), i = Math.floor(n / e.bucketPx), a = /* @__PURE__ */ new Set();
@@ -2806,11 +2831,11 @@ function mr(e) {
2806
2831
  }
2807
2832
  return Array.from(a).sort((e, t) => e - t);
2808
2833
  }
2809
- function hr(e) {
2834
+ function vr(e) {
2810
2835
  return typeof e == "number" && Number.isFinite(e) && e > 0;
2811
2836
  }
2812
- function gr(e, t, n) {
2813
- return e.type !== "image" || n / t >= ar ? {
2837
+ function yr(e, t, n) {
2838
+ return e.type !== "image" || n / t >= cr ? {
2814
2839
  width: t,
2815
2840
  height: n
2816
2841
  } : {
@@ -2820,9 +2845,9 @@ function gr(e, t, n) {
2820
2845
  }
2821
2846
  //#endregion
2822
2847
  //#region src/components/viewer-core/listPreview.ts
2823
- var _r = /\.(avif|gif|jpe?g|png|svg|webp)(\?|#|$)/i, vr = /\.(m4v|mov|mp4|mpeg|ogg|ogv|webm)(\?|#|$)/i, yr = /^(?:(?:https?:)?\/\/[^/]+)?\/api\/files\/[^/?#]+\/(?:preview|downloaded)(?:\?|#|$)/i;
2824
- function br(e) {
2825
- let t = xr(e), n = t?.url, r = or(e), i = e.title?.trim() || Kt(e.type);
2848
+ var br = /\.(avif|gif|jpe?g|png|svg|webp)(\?|#|$)/i, xr = /\.(m4v|mov|mp4|mpeg|ogg|ogv|webm)(\?|#|$)/i, Sr = /^(?:(?:https?:)?\/\/[^/]+)?\/api\/files\/[^/?#]+\/(?:preview|downloaded)(?:\?|#|$)/i;
2849
+ function Cr(e) {
2850
+ let t = wr(e), n = t?.url, r = lr(e), i = e.title?.trim() || Yt(e.type);
2826
2851
  return t?.mediaType === "video" && typeof n == "string" ? {
2827
2852
  kind: "video",
2828
2853
  url: n,
@@ -2841,13 +2866,13 @@ function br(e) {
2841
2866
  width: r.width,
2842
2867
  height: r.height,
2843
2868
  label: i
2844
- } : typeof n == "string" && Cr(e, n) ? {
2869
+ } : typeof n == "string" && Er(e, n) ? {
2845
2870
  kind: "video",
2846
2871
  url: n,
2847
2872
  width: r.width,
2848
2873
  height: r.height,
2849
2874
  label: i
2850
- } : typeof n == "string" && Sr(e, n) ? {
2875
+ } : typeof n == "string" && Tr(e, n) ? {
2851
2876
  kind: "image",
2852
2877
  url: n,
2853
2878
  width: r.width,
@@ -2861,51 +2886,51 @@ function br(e) {
2861
2886
  label: i
2862
2887
  };
2863
2888
  }
2864
- function xr(e) {
2889
+ function wr(e) {
2865
2890
  return e.preview?.url ? e.preview : typeof e.url != "string" || e.url.trim() === "" ? null : { url: e.url };
2866
2891
  }
2867
- function Sr(e, t) {
2868
- return e.type !== "image" || typeof t != "string" ? !1 : _r.test(t) || wr(t);
2892
+ function Tr(e, t) {
2893
+ return e.type !== "image" || typeof t != "string" ? !1 : br.test(t) || Dr(t);
2869
2894
  }
2870
- function Cr(e, t) {
2871
- return e.type !== "video" || typeof t != "string" ? !1 : vr.test(t) || Tr(t);
2895
+ function Er(e, t) {
2896
+ return e.type !== "video" || typeof t != "string" ? !1 : xr.test(t) || Or(t);
2872
2897
  }
2873
- function wr(e) {
2898
+ function Dr(e) {
2874
2899
  return /^(https?:\/\/|\/\/|\/(?!\/)|\.{1,2}\/|blob:|data:)/i.test(e);
2875
2900
  }
2876
- function Tr(e) {
2877
- return yr.test(e) || /^blob:/i.test(e) || /^data:video\//i.test(e);
2901
+ function Or(e) {
2902
+ return Sr.test(e) || /^blob:/i.test(e) || /^data:video\//i.test(e);
2878
2903
  }
2879
2904
  //#endregion
2880
2905
  //#region src/components/viewer-core/fullscreenPreviews.ts
2881
- function Er(e, t, n = 2) {
2906
+ function kr(e, t, n = 2) {
2882
2907
  return e.slice(t + 1, t + 1 + n).map((e, n) => ({
2883
- asset: br(e),
2908
+ asset: Cr(e),
2884
2909
  index: t + n + 1,
2885
2910
  item: e
2886
2911
  }));
2887
2912
  }
2888
2913
  //#endregion
2889
2914
  //#region src/components/FullscreenSurface.vue?vue&type=script&setup=true&lang.ts
2890
- var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f7f1ea]" }, Or = {
2915
+ var Ar = { class: "relative flex h-full min-h-0 flex-col overflow-hidden bg-[#05060a] text-[#f7f1ea]" }, jr = { class: "relative z-[1] flex h-full min-h-0" }, Mr = { class: "relative flex min-h-0 min-w-0 flex-1 flex-col" }, Nr = { class: "relative min-h-0 flex-1" }, Pr = {
2891
2916
  key: 0,
2892
2917
  class: "relative h-full min-h-0"
2893
- }, kr = [
2918
+ }, Fr = [
2894
2919
  "data-item-id",
2895
2920
  "data-occurrence-key",
2896
2921
  "data-index",
2897
2922
  "data-active",
2898
2923
  "aria-hidden"
2899
- ], Ar = {
2924
+ ], Ir = {
2900
2925
  key: 0,
2901
2926
  "data-testid": "vibe-asset-spinner",
2902
2927
  class: "pointer-events-none absolute inset-0 z-[2] grid place-items-center"
2903
- }, jr = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)] backdrop-blur-[18px]" }, Mr = ["data-kind"], Nr = { class: "grid justify-items-center gap-4 border border-white/14 bg-black/45 px-8 py-7 text-center backdrop-blur-[18px]" }, Pr = { class: "m-0 text-[0.82rem] font-bold uppercase tracking-[0.28em] text-[#f7f1ea]/70" }, Fr = ["onClick"], Ir = [
2928
+ }, Lr = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)] backdrop-blur-[18px]" }, Rr = ["data-kind"], zr = { class: "grid justify-items-center gap-4 border border-white/14 bg-black/45 px-8 py-7 text-center backdrop-blur-[18px]" }, Br = { class: "m-0 text-[0.82rem] font-bold uppercase tracking-[0.28em] text-[#f7f1ea]/70" }, Vr = ["onClick"], Hr = [
2904
2929
  "src",
2905
2930
  "alt",
2906
2931
  "onLoad",
2907
2932
  "onError"
2908
- ], Lr = [
2933
+ ], Ur = [
2909
2934
  "loop",
2910
2935
  "src",
2911
2936
  "preload",
@@ -2924,18 +2949,18 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
2924
2949
  "onStalled",
2925
2950
  "onTimeupdate",
2926
2951
  "onWaiting"
2927
- ], Rr = { class: "relative grid aspect-square w-[clamp(320px,46vw,560px)] max-w-[calc(100vw-2.5rem)] place-items-center" }, zr = [
2952
+ ], Wr = { class: "relative grid aspect-square w-[clamp(320px,46vw,560px)] max-w-[calc(100vw-2.5rem)] place-items-center" }, Gr = [
2928
2953
  "aria-label",
2929
2954
  "disabled",
2930
2955
  "onClick"
2931
- ], Br = ["src", "alt"], Vr = {
2956
+ ], Kr = ["src", "alt"], qr = {
2932
2957
  key: 1,
2933
2958
  class: "relative z-[1] inline-flex min-h-[4.25rem] min-w-[4.25rem] items-center justify-center border border-white/18 bg-emerald-500/12 p-4 backdrop-blur-[20px]"
2934
- }, Hr = { class: "pointer-events-none absolute bottom-4 right-4 inline-flex h-10 w-10 items-center justify-center border border-white/14 bg-black/50 backdrop-blur-[18px]" }, Ur = {
2959
+ }, Jr = { class: "pointer-events-none absolute bottom-4 right-4 inline-flex h-10 w-10 items-center justify-center border border-white/14 bg-black/50 backdrop-blur-[18px]" }, Yr = {
2935
2960
  key: 0,
2936
2961
  "data-testid": "vibe-asset-spinner",
2937
2962
  class: "pointer-events-none absolute inset-0 z-[3] grid place-items-center"
2938
- }, Wr = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)] backdrop-blur-[18px]" }, Gr = ["data-kind"], Kr = { class: "m-0 text-[0.82rem] font-bold uppercase tracking-[0.28em] text-[#f7f1ea]/70" }, qr = ["onClick"], Jr = [
2963
+ }, Xr = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)] backdrop-blur-[18px]" }, Zr = ["data-kind"], Qr = { class: "m-0 text-[0.82rem] font-bold uppercase tracking-[0.28em] text-[#f7f1ea]/70" }, $r = ["onClick"], ei = [
2939
2964
  "src",
2940
2965
  "preload",
2941
2966
  "onCanplay",
@@ -2951,22 +2976,22 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
2951
2976
  "onStalled",
2952
2977
  "onTimeupdate",
2953
2978
  "onWaiting"
2954
- ], Yr = {
2979
+ ], ti = {
2955
2980
  key: 2,
2956
2981
  class: "relative z-[1] grid w-full max-w-[1100px] justify-items-center gap-6 px-[clamp(2rem,4vw,3rem)] py-[clamp(2rem,4vw,3rem)] text-center"
2957
- }, Xr = { class: "inline-flex min-h-[4.25rem] min-w-[4.25rem] items-center justify-center border border-white/18 bg-white/8 p-4 backdrop-blur-[20px]" }, Zr = {
2982
+ }, ni = { class: "inline-flex min-h-[4.25rem] min-w-[4.25rem] items-center justify-center border border-white/18 bg-white/8 p-4 backdrop-blur-[20px]" }, ri = {
2958
2983
  key: 0,
2959
2984
  "data-testid": "vibe-fullscreen-overlay",
2960
2985
  class: "pointer-events-none absolute inset-0 z-[6]"
2961
- }, Qr = { class: "h-full w-full" }, $r = {
2986
+ }, ii = { class: "h-full w-full" }, ai = {
2962
2987
  key: 0,
2963
2988
  "data-testid": "vibe-fullscreen-aside",
2964
- class: "h-full min-h-0 overflow-hidden border-l border-white/10 bg-black/45 backdrop-blur-[18px]"
2965
- }, ei = { class: "h-full min-h-0 overflow-y-auto overscroll-y-contain" }, ti = {
2989
+ class: "h-full min-h-0 w-[var(--vibe-fullscreen-aside-width,22rem)] shrink-0 overflow-hidden border-l border-white/10 bg-black/45 backdrop-blur-[18px]"
2990
+ }, oi = { class: "h-full min-h-0 overflow-y-auto overscroll-y-contain" }, si = {
2966
2991
  key: 0,
2967
2992
  "data-testid": "vibe-fullscreen-aside",
2968
2993
  class: "absolute inset-y-0 right-0 z-[6] w-full max-w-[22rem] overflow-hidden border-l border-white/10 bg-black/82 backdrop-blur-[18px]"
2969
- }, ni = { class: "h-full min-h-0 overflow-y-auto overscroll-y-contain" }, ri = 1280, ii = 768, ai = /* @__PURE__ */ d({
2994
+ }, ci = { class: "h-full min-h-0 overflow-y-auto overscroll-y-contain" }, li = 1280, ui = 768, di = /* @__PURE__ */ d({
2970
2995
  __name: "FullscreenSurface",
2971
2996
  props: {
2972
2997
  active: {
@@ -3026,48 +3051,45 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
3026
3051
  },
3027
3052
  emits: ["back-to-list", "update:activeIndex"],
3028
3053
  setup(e, { emit: n }) {
3029
- let d = e, f = L(), m = n, h = Fn(d, (e, t) => {
3054
+ let d = e, f = L(), m = n, h = Rn(d, (e, t) => {
3030
3055
  m("update:activeIndex", t);
3031
3056
  }, {
3032
3057
  enabled: N(d, "active"),
3033
3058
  onAssetError: d.reportAssetError ?? void 0,
3034
3059
  onAssetLoad: d.reportAssetLoad ?? void 0
3035
- }), _ = D(typeof window > "u" ? ri : window.innerWidth || ri), C = an({
3060
+ }), _ = D(typeof window > "u" ? li : window.innerWidth || li), C = cn({
3036
3061
  active: N(d, "active"),
3037
3062
  items: h.items,
3038
3063
  resolvedActiveIndex: h.resolvedActiveIndex,
3039
3064
  viewer: h
3040
- }), T = Gn({
3065
+ }), T = Jn({
3041
3066
  activeItem: h.activeItem,
3042
3067
  getItemKey: C.getItemKey
3043
- }), E = i(() => zn(h.activeItem.value?.type ?? "image")), { activeSlideToneStyle: j, activeStageToneStyle: P, updateFromImageElement: I } = Wn({
3068
+ }), E = i(() => Hn(h.activeItem.value?.type ?? "image")), { activeSlideToneStyle: j, activeStageToneStyle: P, updateFromImageElement: I } = qn({
3044
3069
  activeItem: h.activeItem,
3045
3070
  getItemKey: C.getItemKey,
3046
3071
  isImageReady: h.isImageReady,
3047
3072
  showDominantImageTone: N(d, "showDominantImageTone")
3048
- }), R = Vn({
3073
+ }), R = Wn({
3049
3074
  fullscreenMedia: C,
3050
- updateDominantToneFromImageElement: ve,
3075
+ updateDominantToneFromImageElement: xe,
3051
3076
  viewer: h
3052
- }), z = i(() => h.activeMediaItem.value && !h.activeAssetErrorKind.value ? "bottom-[5.8rem] max-[720px]:bottom-[7.4rem]" : "bottom-[1.8rem] max-[720px]:bottom-[1.3rem]"), ee = i(() => !!h.activeMediaItem.value && !h.activeAssetErrorKind.value), V = i(() => _.value < ii ? "vertical" : "horizontal"), U = i(() => ee.value ? "pb-[5.75rem] max-[720px]:pb-[7rem]" : ""), te = i(() => d.activeIndex >= d.items.length && (d.loading || d.hasNextPage)), W = i(() => {
3077
+ }), z = i(() => !!h.activeMediaItem.value && !h.activeAssetErrorKind.value), ee = i(() => _.value < ui ? "vertical" : "horizontal"), V = i(() => d.activeIndex >= d.items.length && (d.loading || d.hasNextPage)), U = i(() => {
3053
3078
  let e = h.activeItem.value;
3054
3079
  return e ? {
3055
3080
  hasNextPage: d.hasNextPage,
3056
3081
  index: h.resolvedActiveIndex.value,
3057
3082
  item: e,
3058
3083
  loading: d.loading,
3059
- nextPreviews: Er(h.items.value, h.resolvedActiveIndex.value),
3084
+ nextPreviews: kr(h.items.value, h.resolvedActiveIndex.value),
3060
3085
  paginationDetail: d.paginationDetail,
3061
3086
  total: d.items.length
3062
3087
  } : null;
3063
- }), G = i(() => !W.value || !f["fullscreen-header-actions"] ? [] : f["fullscreen-header-actions"](W.value)), K = i(() => !W.value || !f["fullscreen-aside"] ? [] : f["fullscreen-aside"](W.value)), q = i(() => !d.showStatusBadges || !W.value || !h.statusKind.value || !h.statusMessage.value ? null : {
3064
- ...W.value,
3088
+ }), te = i(() => !U.value || !f["fullscreen-header-actions"] ? [] : f["fullscreen-header-actions"](U.value)), W = i(() => !U.value || !f["fullscreen-footer"] ? [] : f["fullscreen-footer"](U.value)), ne = i(() => !U.value || !f["fullscreen-aside"] ? [] : f["fullscreen-aside"](U.value)), G = i(() => !d.showStatusBadges || !U.value || !h.statusKind.value || !h.statusMessage.value ? null : {
3089
+ ...U.value,
3065
3090
  kind: h.statusKind.value,
3066
3091
  message: h.statusMessage.value
3067
- }), J = i(() => !q.value || !f["fullscreen-status"] ? [] : f["fullscreen-status"](q.value)), ne = i(() => ({
3068
- gridTemplateColumns: re.value ? "minmax(0, 1fr) 22rem" : "minmax(0, 1fr) 0rem",
3069
- transition: "grid-template-columns 320ms cubic-bezier(0.22, 1, 0.36, 1)"
3070
- })), Y = i(() => on(G.value)), X = i(() => on(K.value)), re = i(() => X.value && _.value >= ri), ie = i(() => X.value && !re.value), ae = i(() => on(J.value)), { emptyStateProps: oe, showBadgeEmptyState: ce, showCustomEmptyState: fe, showInlineEmptyState: pe } = ln({
3092
+ }), K = i(() => !G.value || !f["fullscreen-status"] ? [] : f["fullscreen-status"](G.value)), q = i(() => ln(te.value)), re = i(() => ln(ne.value)), J = i(() => ln(W.value)), Y = i(() => re.value && _.value >= li), ie = i(() => re.value && !Y.value), ae = i(() => ln(K.value)), oe = i(() => !!(h.activeItem.value && (d.showBackToList || h.activeItem.value.title || h.items.value.length || q.value))), ce = i(() => d.showEndBadge && h.isAtEnd.value && !h.hasNextPage.value && !h.loading.value), fe = i(() => J.value || !!G.value || ce.value), pe = i(() => z.value ? "pb-[5.75rem] max-[720px]:pb-[7rem]" : ""), { emptyStateProps: X, showBadgeEmptyState: me, showCustomEmptyState: he, showInlineEmptyState: ge } = fn({
3071
3093
  emptyStateMode: N(d, "emptyStateMode"),
3072
3094
  itemCount: i(() => d.items.length),
3073
3095
  loading: N(d, "loading"),
@@ -3075,30 +3097,30 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
3075
3097
  surface: "fullscreen"
3076
3098
  });
3077
3099
  S(() => {
3078
- window.addEventListener("resize", me);
3100
+ window.addEventListener("resize", _e);
3079
3101
  }), x(() => {
3080
- window.removeEventListener("resize", me);
3102
+ window.removeEventListener("resize", _e);
3081
3103
  });
3082
- function me() {
3083
- _.value = window.innerWidth || ri;
3104
+ function _e() {
3105
+ _.value = window.innerWidth || li;
3084
3106
  }
3085
- function he(e, t) {
3086
- C.registerImageElement(e, t), h.registerImageElement(e, t), t instanceof HTMLImageElement && ve(e, t);
3107
+ function ve(e, t) {
3108
+ C.registerImageElement(e, t), h.registerImageElement(e, t), t instanceof HTMLImageElement && xe(e, t);
3087
3109
  }
3088
- function ge(e, t) {
3110
+ function ye(e, t) {
3089
3111
  C.registerMediaElement(e, t), h.registerVideoElement(e, t), T.registerElement(e, t);
3090
3112
  }
3091
- function _e(e, t) {
3113
+ function be(e, t) {
3092
3114
  C.registerMediaElement(e, t), h.registerAudioElement(e, t);
3093
3115
  }
3094
3116
  function Z(e, t, n) {
3095
3117
  let r = R.onFullscreenMediaEvent(e, t, n), i = n.currentTarget, a = typeof HTMLMediaElement > "u" ? 1 : HTMLMediaElement.HAVE_METADATA;
3096
3118
  r && i instanceof HTMLMediaElement && i.readyState >= a && C.settleAssetPreload(r);
3097
3119
  }
3098
- function ve(e, t) {
3120
+ function xe(e, t) {
3099
3121
  I(e, t);
3100
3122
  }
3101
- function ye(e, t, n) {
3123
+ function Se(e, t, n) {
3102
3124
  let r = R.getHandledItemKey(t, n);
3103
3125
  if (!r || (h.onMediaEvent(r, e), !d.loopFullscreenVideo)) return;
3104
3126
  let i = e.currentTarget;
@@ -3109,288 +3131,296 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
3109
3131
  let a = i.play();
3110
3132
  a && typeof a.catch == "function" && a.catch(() => {});
3111
3133
  }
3112
- return (e, n) => (w(), s("div", Dr, [
3134
+ return (e, n) => (w(), s("div", Ar, [
3113
3135
  c("div", {
3114
3136
  class: v(["absolute inset-0 transition-[background] duration-200", E.value]),
3115
3137
  style: b(F(P))
3116
3138
  }, null, 6),
3117
- c("div", {
3118
- class: "relative z-[1] grid h-full min-h-0",
3119
- style: b(ne.value)
3120
- }, [c("div", {
3121
- ref: "viewer.stageRef",
3122
- "data-testid": "vibe-stage",
3123
- class: "relative h-full min-h-0 touch-none overflow-hidden",
3124
- onPointerdown: n[1] ||= (...e) => F(h).onPointerDown && F(h).onPointerDown(...e),
3125
- onPointermove: n[2] ||= (...e) => F(h).onPointerMove && F(h).onPointerMove(...e),
3126
- onPointerup: n[3] ||= (...e) => F(h).onPointerUp && F(h).onPointerUp(...e),
3127
- onPointercancel: n[4] ||= (...e) => F(h).onPointerCancel && F(h).onPointerCancel(...e),
3128
- onWheel: n[5] ||= (...e) => F(h).onWheel && F(h).onWheel(...e)
3129
- }, [F(h).activeItem.value ? (w(), s("div", Or, [
3130
- (w(!0), s(t, null, O(F(h).renderedItems.value, ({ item: r, index: i }) => (w(), s("article", {
3131
- key: F(C).getItemKey(r),
3132
- "data-testid": "vibe-slide",
3133
- "data-item-id": r.id,
3134
- "data-occurrence-key": F(C).getItemKey(r),
3135
- "data-index": i,
3136
- "data-active": i === F(h).resolvedActiveIndex.value,
3137
- "aria-hidden": i === F(h).resolvedActiveIndex.value ? "false" : "true",
3138
- class: v(["absolute inset-0 flex h-full min-h-full items-center justify-center will-change-transform", i === F(h).resolvedActiveIndex.value ? "pointer-events-auto" : "pointer-events-none"]),
3139
- style: b(F(h).getSlideStyle(i))
3140
- }, [c("div", {
3141
- class: v(["absolute inset-0 opacity-85", F(Bn)(r.type)]),
3142
- style: b(i === F(h).resolvedActiveIndex.value && r.type === "image" ? F(j) : void 0)
3143
- }, null, 6), F(h).isVisual(r) ? (w(), s("div", {
3139
+ c("div", jr, [c("div", Mr, [
3140
+ oe.value ? (w(), a(Bt, {
3144
3141
  key: 0,
3145
- class: v(["relative z-[1] flex h-full w-full items-center justify-center overflow-hidden", i === F(h).resolvedActiveIndex.value ? U.value : ""])
3146
- }, [F(C).isAssetLoading(i, r) ? (w(), s("div", Ar, [c("span", jr, [u(F(se), {
3147
- class: "h-5 w-5 animate-spin stroke-[1.9] text-[#f7f1ea]/78",
3148
- "aria-hidden": "true"
3149
- })])])) : o("", !0), F(C).isAssetErrored(i, r) ? (w(), s("div", {
3150
- key: 1,
3151
- "data-testid": "vibe-asset-error",
3152
- "data-kind": F(C).getAssetErrorKind(r),
3153
- class: "grid h-full w-full place-items-center"
3154
- }, [c("div", Nr, [
3155
- u(F(de), {
3156
- class: "h-7 w-7 stroke-[1.9] text-[#f7f1ea]/72",
3157
- "aria-hidden": "true"
3158
- }),
3159
- c("p", Pr, M(F(C).getAssetErrorLabel(r)), 1),
3160
- F(h).canRetryAsset(F(C).getItemKey(r)) ? (w(), s("button", {
3161
- key: 0,
3162
- type: "button",
3163
- class: "inline-flex items-center justify-center border border-white/14 bg-black/35 px-4 py-2 text-[0.64rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/82 backdrop-blur-[18px] transition hover:border-white/28 hover:bg-black/50",
3164
- onClick: H((e) => F(h).retryAsset(F(C).getItemKey(r)), ["stop"])
3165
- }, " Retry ", 8, Fr)) : o("", !0)
3166
- ])], 8, Mr)) : r.type === "image" ? (w(), s("img", {
3167
- key: F(h).getAssetRenderKey(F(C).getItemKey(r)),
3168
- src: F(C).getFullscreenImageSource(i, r),
3169
- alt: r.title ?? "",
3170
- crossorigin: "anonymous",
3171
- draggable: "false",
3172
- class: v(["block h-auto max-h-full w-auto max-w-full object-contain shadow-[0_40px_120px_-60px_rgba(0,0,0,0.9)] transition-opacity duration-300", F(h).isImageReady(F(C).getItemKey(r)) ? "opacity-100" : "opacity-0"]),
3173
- ref_for: !0,
3174
- ref: (e) => he(F(C).getItemKey(r), e),
3175
- onLoad: (e) => F(R).onFullscreenImageLoad(e, i, r),
3176
- onError: (e) => F(R).onFullscreenImageError(i, r)
3177
- }, null, 42, Ir)) : (w(), s("video", {
3178
- key: F(h).getAssetRenderKey(F(C).getItemKey(r)),
3179
- class: v(["block h-auto max-h-full w-auto max-w-full cursor-pointer object-contain shadow-[0_40px_120px_-60px_rgba(0,0,0,0.9)] transition-opacity duration-300", F(h).isMediaReady(F(C).getItemKey(r)) ? "opacity-100" : "opacity-0"]),
3180
- playsinline: "",
3181
- loop: d.loopFullscreenVideo,
3182
- src: F(C).getFullscreenMediaSource(i, r),
3183
- preload: F(C).getFullscreenMediaPreload(i),
3184
- ref_for: !0,
3185
- ref: (e) => ge(F(C).getItemKey(r), e),
3186
- onClick: H((e) => F(h).onVideoClick(e, F(C).getItemKey(r)), ["stop"]),
3187
- onCanplay: (e) => Z(i, r, e),
3188
- onDurationchange: (e) => Z(i, r, e),
3189
- onEnded: (e) => ye(e, i, r),
3190
- onError: (e) => F(R).onFullscreenMediaError(i, r),
3191
- onLoadstart: (e) => Z(i, r, e),
3192
- onLoadedmetadata: (e) => Z(i, r, e),
3193
- onPause: (e) => Z(i, r, e),
3194
- onPlay: (e) => Z(i, r, e),
3195
- onPlaying: (e) => Z(i, r, e),
3196
- onSeeking: (e) => Z(i, r, e),
3197
- onSeeked: (e) => Z(i, r, e),
3198
- onStalled: (e) => Z(i, r, e),
3199
- onTimeupdate: (e) => Z(i, r, e),
3200
- onWaiting: (e) => Z(i, r, e)
3201
- }, null, 42, Lr))], 2)) : F(h).isAudio(r) ? (w(), s("div", {
3202
- key: 1,
3203
- class: v(["relative z-[1] grid w-full max-w-[1100px] justify-items-center gap-6 px-[clamp(2rem,4vw,3rem)] py-[clamp(2rem,4vw,3rem)] text-center", i === F(h).resolvedActiveIndex.value ? U.value : ""])
3204
- }, [c("div", Rr, [
3205
- c("button", {
3206
- type: "button",
3207
- class: "relative grid h-full w-full place-items-center border border-white/12 bg-[linear-gradient(180deg,rgba(255,255,255,0.04),rgba(255,255,255,0.02)),radial-gradient(circle_at_center,rgba(16,185,129,0.14),transparent_58%)] text-[#f7f1ea] transition-[border-color,background] duration-200 hover:border-white/30 hover:bg-[linear-gradient(180deg,rgba(255,255,255,0.07),rgba(255,255,255,0.03)),radial-gradient(circle_at_center,rgba(16,185,129,0.18),transparent_58%)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-[#f7f1ea]",
3208
- "aria-label": F(h).mediaStates.value[F(C).getItemKey(r)]?.paused ?? !0 ? F(C).getMediaActionLabel("Play", r) : F(C).getMediaActionLabel("Pause", r),
3209
- disabled: !!F(C).getAssetErrorKind(r),
3210
- onClick: (e) => F(h).onAudioCoverClick(e, F(C).getItemKey(r))
3211
- }, [
3212
- F(C).getFullscreenAudioCoverSource(r) ? (w(), s("img", {
3213
- key: 0,
3214
- "data-testid": "vibe-fullscreen-audio-cover",
3215
- src: F(C).getFullscreenAudioCoverSource(r) ?? void 0,
3216
- alt: r.title ?? "",
3217
- draggable: "false",
3218
- class: "pointer-events-none absolute inset-0 h-full w-full object-cover"
3219
- }, null, 8, Br)) : o("", !0),
3220
- n[6] ||= c("span", { class: "pointer-events-none absolute inset-0 border border-white/8 bg-[radial-gradient(circle,rgba(16,185,129,0.16),transparent_66%)]" }, null, -1),
3221
- n[7] ||= c("span", { class: "pointer-events-none absolute h-[clamp(220px,30vw,360px)] w-[clamp(220px,30vw,360px)] border border-white/8 bg-[radial-gradient(circle,rgba(255,255,255,0.08),transparent_62%)]" }, null, -1),
3222
- F(C).getFullscreenAudioCoverSource(r) ? o("", !0) : (w(), s("span", Vr, [k(e.$slots, "item-icon", {
3223
- icon: F(Gt)(r.type),
3224
- item: r
3225
- }, () => [(w(), a(A(F(Gt)(r.type)), {
3226
- class: "h-6 w-6 stroke-[1.9]",
3227
- "aria-hidden": "true"
3228
- }))])])),
3229
- c("span", Hr, [(w(), a(A(F(h).mediaStates.value[F(C).getItemKey(r)]?.paused ?? !0 ? F(ue) : F(le)), {
3230
- class: "h-4 w-4 stroke-2",
3231
- "aria-hidden": "true"
3232
- }))])
3233
- ], 8, zr),
3234
- F(C).isAssetLoading(i, r) ? (w(), s("div", Ur, [c("span", Wr, [u(F(se), {
3235
- class: "h-5 w-5 animate-spin stroke-[1.9] text-[#f7f1ea]/78",
3236
- "aria-hidden": "true"
3237
- })])])) : o("", !0),
3238
- F(C).getAssetErrorKind(r) ? (w(), s(t, { key: 1 }, [n[8] ||= c("div", { class: "pointer-events-none absolute inset-0 border border-white/8 bg-[radial-gradient(circle,rgba(239,68,68,0.12),transparent_66%)]" }, null, -1), c("div", {
3239
- "data-testid": "vibe-asset-error",
3240
- "data-kind": F(C).getAssetErrorKind(r),
3241
- class: "relative z-[1] grid justify-items-center gap-4"
3242
- }, [
3243
- u(F(de), {
3244
- class: "h-7 w-7 stroke-[1.9] text-[#f7f1ea]/72",
3245
- "aria-hidden": "true"
3246
- }),
3247
- c("p", Kr, M(F(C).getAssetErrorLabel(r)), 1),
3248
- F(h).canRetryAsset(F(C).getItemKey(r)) ? (w(), s("button", {
3249
- key: 0,
3250
- type: "button",
3251
- class: "pointer-events-auto inline-flex items-center justify-center border border-white/14 bg-black/35 px-4 py-2 text-[0.64rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/82 backdrop-blur-[18px] transition hover:border-white/28 hover:bg-black/50",
3252
- onClick: H((e) => F(h).retryAsset(F(C).getItemKey(r)), ["stop"])
3253
- }, " Retry ", 8, qr)) : o("", !0)
3254
- ], 8, Gr)], 64)) : o("", !0)
3255
- ]), (w(), s("audio", {
3256
- key: F(h).getAssetRenderKey(F(C).getItemKey(r)),
3257
- src: F(C).getFullscreenMediaSource(i, r),
3258
- preload: F(C).getFullscreenMediaPreload(i),
3259
- class: "pointer-events-none absolute h-px w-px opacity-0",
3260
- ref_for: !0,
3261
- ref: (e) => _e(F(C).getItemKey(r), e),
3262
- onCanplay: (e) => Z(i, r, e),
3263
- onDurationchange: (e) => Z(i, r, e),
3264
- onError: (e) => F(R).onFullscreenMediaError(i, r),
3265
- onLoadstart: (e) => Z(i, r, e),
3266
- onLoadedmetadata: (e) => Z(i, r, e),
3267
- onPause: (e) => Z(i, r, e),
3268
- onPlay: (e) => Z(i, r, e),
3269
- onPlaying: (e) => Z(i, r, e),
3270
- onSeeking: (e) => Z(i, r, e),
3271
- onSeeked: (e) => Z(i, r, e),
3272
- onStalled: (e) => Z(i, r, e),
3273
- onTimeupdate: (e) => Z(i, r, e),
3274
- onWaiting: (e) => Z(i, r, e)
3275
- }, null, 40, Jr))], 2)) : (w(), s("div", Yr, [c("div", Xr, [k(e.$slots, "item-icon", {
3276
- icon: F(Gt)(r.type),
3277
- item: r
3278
- }, () => [(w(), a(A(F(Gt)(r.type)), {
3279
- class: "h-6 w-6 stroke-[1.9]",
3280
- "aria-hidden": "true"
3281
- }))])])]))], 14, kr))), 128)),
3282
- W.value && f["fullscreen-overlay"] ? (w(), s("div", Zr, [c("div", Qr, [k(e.$slots, "fullscreen-overlay", y(p(W.value)))])])) : o("", !0),
3283
- F(h).activeItem.value ? (w(), a(Ht, {
3284
- key: 1,
3285
3142
  "current-index": F(h).resolvedActiveIndex.value,
3286
3143
  loading: d.loading,
3287
3144
  "pagination-detail": F(h).paginationDetail.value,
3288
3145
  "show-back-to-list": d.showBackToList,
3289
- "show-end-badge": d.showEndBadge && F(h).isAtEnd.value && !F(h).hasNextPage.value && !F(h).loading.value,
3290
- title: F(h).activeItem.value.title ?? null,
3146
+ title: F(h).activeItem.value?.title ?? null,
3291
3147
  total: F(h).items.value.length,
3292
3148
  onBackToList: n[0] ||= (e) => m("back-to-list")
3293
- }, l({ _: 2 }, [Y.value && W.value ? {
3149
+ }, l({ _: 2 }, [q.value && U.value ? {
3294
3150
  name: "actions",
3295
- fn: B(() => [k(e.$slots, "fullscreen-header-actions", y(p(W.value)))]),
3151
+ fn: B(() => [k(e.$slots, "fullscreen-header-actions", y(p(U.value)))]),
3296
3152
  key: "0"
3297
3153
  } : void 0]), 1032, [
3298
3154
  "current-index",
3299
3155
  "loading",
3300
3156
  "pagination-detail",
3301
3157
  "show-back-to-list",
3302
- "show-end-badge",
3303
3158
  "title",
3304
3159
  "total"
3305
3160
  ])) : o("", !0),
3306
- ee.value ? (w(), a(jt, {
3307
- key: 2,
3308
- "current-time": F(h).activeMediaState.value.currentTime,
3309
- "current-time-label": F(h).formatPlaybackTime(F(h).activeMediaState.value.currentTime),
3310
- duration: F(h).activeMediaDuration.value,
3311
- "duration-label": F(h).formatPlaybackTime(F(h).activeMediaDuration.value),
3312
- muted: F(h).activeMediaState.value.muted,
3313
- progress: F(h).activeMediaProgress.value,
3314
- "show-fullscreen-control": F(h).activeMediaItem.value?.type === "video",
3315
- volume: F(h).activeMediaState.value.volume,
3316
- "volume-control-layout": V.value,
3317
- onFullscreenRequest: F(T).request,
3318
- onSeekInput: F(h).onMediaSeekInput,
3319
- onVolumeInput: F(h).onMediaVolumeInput,
3320
- onVolumeToggle: F(h).onMediaVolumeToggle
3161
+ c("div", Nr, [c("div", {
3162
+ ref: "viewer.stageRef",
3163
+ "data-testid": "vibe-stage",
3164
+ class: "relative h-full min-h-0 touch-none overflow-hidden",
3165
+ onPointerdown: n[1] ||= (...e) => F(h).onPointerDown && F(h).onPointerDown(...e),
3166
+ onPointermove: n[2] ||= (...e) => F(h).onPointerMove && F(h).onPointerMove(...e),
3167
+ onPointerup: n[3] ||= (...e) => F(h).onPointerUp && F(h).onPointerUp(...e),
3168
+ onPointercancel: n[4] ||= (...e) => F(h).onPointerCancel && F(h).onPointerCancel(...e),
3169
+ onWheel: n[5] ||= (...e) => F(h).onWheel && F(h).onWheel(...e)
3170
+ }, [F(h).activeItem.value ? (w(), s("div", Pr, [
3171
+ (w(!0), s(t, null, O(F(h).renderedItems.value, ({ item: r, index: i }) => (w(), s("article", {
3172
+ key: F(C).getItemKey(r),
3173
+ "data-testid": "vibe-slide",
3174
+ "data-item-id": r.id,
3175
+ "data-occurrence-key": F(C).getItemKey(r),
3176
+ "data-index": i,
3177
+ "data-active": i === F(h).resolvedActiveIndex.value,
3178
+ "aria-hidden": i === F(h).resolvedActiveIndex.value ? "false" : "true",
3179
+ class: v(["absolute inset-0 flex h-full min-h-full items-center justify-center will-change-transform", i === F(h).resolvedActiveIndex.value ? "pointer-events-auto" : "pointer-events-none"]),
3180
+ style: b(F(h).getSlideStyle(i))
3181
+ }, [c("div", {
3182
+ class: v(["absolute inset-0 opacity-85", F(Un)(r.type)]),
3183
+ style: b(i === F(h).resolvedActiveIndex.value && r.type === "image" ? F(j) : void 0)
3184
+ }, null, 6), F(h).isVisual(r) ? (w(), s("div", {
3185
+ key: 0,
3186
+ class: v(["relative z-[1] flex h-full w-full items-center justify-center overflow-hidden", i === F(h).resolvedActiveIndex.value ? pe.value : ""])
3187
+ }, [F(C).isAssetLoading(i, r) ? (w(), s("div", Ir, [c("span", Lr, [u(F(se), {
3188
+ class: "h-5 w-5 animate-spin stroke-[1.9] text-[#f7f1ea]/78",
3189
+ "aria-hidden": "true"
3190
+ })])])) : o("", !0), F(C).isAssetErrored(i, r) ? (w(), s("div", {
3191
+ key: 1,
3192
+ "data-testid": "vibe-asset-error",
3193
+ "data-kind": F(C).getAssetErrorKind(r),
3194
+ class: "grid h-full w-full place-items-center"
3195
+ }, [c("div", zr, [
3196
+ u(F(de), {
3197
+ class: "h-7 w-7 stroke-[1.9] text-[#f7f1ea]/72",
3198
+ "aria-hidden": "true"
3199
+ }),
3200
+ c("p", Br, M(F(C).getAssetErrorLabel(r)), 1),
3201
+ F(h).canRetryAsset(F(C).getItemKey(r)) ? (w(), s("button", {
3202
+ key: 0,
3203
+ type: "button",
3204
+ class: "inline-flex items-center justify-center border border-white/14 bg-black/35 px-4 py-2 text-[0.64rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/82 backdrop-blur-[18px] transition hover:border-white/28 hover:bg-black/50",
3205
+ onClick: H((e) => F(h).retryAsset(F(C).getItemKey(r)), ["stop"])
3206
+ }, " Retry ", 8, Vr)) : o("", !0)
3207
+ ])], 8, Rr)) : r.type === "image" ? (w(), s("img", {
3208
+ key: F(h).getAssetRenderKey(F(C).getItemKey(r)),
3209
+ src: F(C).getFullscreenImageSource(i, r),
3210
+ alt: r.title ?? "",
3211
+ crossorigin: "anonymous",
3212
+ draggable: "false",
3213
+ class: v(["block h-auto max-h-full w-auto max-w-full object-contain shadow-[0_40px_120px_-60px_rgba(0,0,0,0.9)] transition-opacity duration-300", F(h).isImageReady(F(C).getItemKey(r)) ? "opacity-100" : "opacity-0"]),
3214
+ ref_for: !0,
3215
+ ref: (e) => ve(F(C).getItemKey(r), e),
3216
+ onLoad: (e) => F(R).onFullscreenImageLoad(e, i, r),
3217
+ onError: (e) => F(R).onFullscreenImageError(i, r)
3218
+ }, null, 42, Hr)) : (w(), s("video", {
3219
+ key: F(h).getAssetRenderKey(F(C).getItemKey(r)),
3220
+ class: v(["block h-auto max-h-full w-auto max-w-full cursor-pointer object-contain shadow-[0_40px_120px_-60px_rgba(0,0,0,0.9)] transition-opacity duration-300", F(h).isMediaReady(F(C).getItemKey(r)) ? "opacity-100" : "opacity-0"]),
3221
+ playsinline: "",
3222
+ loop: d.loopFullscreenVideo,
3223
+ src: F(C).getFullscreenMediaSource(i, r),
3224
+ preload: F(C).getFullscreenMediaPreload(i),
3225
+ ref_for: !0,
3226
+ ref: (e) => ye(F(C).getItemKey(r), e),
3227
+ onClick: H((e) => F(h).onVideoClick(e, F(C).getItemKey(r)), ["stop"]),
3228
+ onCanplay: (e) => Z(i, r, e),
3229
+ onDurationchange: (e) => Z(i, r, e),
3230
+ onEnded: (e) => Se(e, i, r),
3231
+ onError: (e) => F(R).onFullscreenMediaError(i, r),
3232
+ onLoadstart: (e) => Z(i, r, e),
3233
+ onLoadedmetadata: (e) => Z(i, r, e),
3234
+ onPause: (e) => Z(i, r, e),
3235
+ onPlay: (e) => Z(i, r, e),
3236
+ onPlaying: (e) => Z(i, r, e),
3237
+ onSeeking: (e) => Z(i, r, e),
3238
+ onSeeked: (e) => Z(i, r, e),
3239
+ onStalled: (e) => Z(i, r, e),
3240
+ onTimeupdate: (e) => Z(i, r, e),
3241
+ onWaiting: (e) => Z(i, r, e)
3242
+ }, null, 42, Ur))], 2)) : F(h).isAudio(r) ? (w(), s("div", {
3243
+ key: 1,
3244
+ class: v(["relative z-[1] grid w-full max-w-[1100px] justify-items-center gap-6 px-[clamp(2rem,4vw,3rem)] py-[clamp(2rem,4vw,3rem)] text-center", i === F(h).resolvedActiveIndex.value ? pe.value : ""])
3245
+ }, [c("div", Wr, [
3246
+ c("button", {
3247
+ type: "button",
3248
+ class: "relative grid h-full w-full place-items-center border border-white/12 bg-[linear-gradient(180deg,rgba(255,255,255,0.04),rgba(255,255,255,0.02)),radial-gradient(circle_at_center,rgba(16,185,129,0.14),transparent_58%)] text-[#f7f1ea] transition-[border-color,background] duration-200 hover:border-white/30 hover:bg-[linear-gradient(180deg,rgba(255,255,255,0.07),rgba(255,255,255,0.03)),radial-gradient(circle_at_center,rgba(16,185,129,0.18),transparent_58%)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-[#f7f1ea]",
3249
+ "aria-label": F(h).mediaStates.value[F(C).getItemKey(r)]?.paused ?? !0 ? F(C).getMediaActionLabel("Play", r) : F(C).getMediaActionLabel("Pause", r),
3250
+ disabled: !!F(C).getAssetErrorKind(r),
3251
+ onClick: (e) => F(h).onAudioCoverClick(e, F(C).getItemKey(r))
3252
+ }, [
3253
+ F(C).getFullscreenAudioCoverSource(r) ? (w(), s("img", {
3254
+ key: 0,
3255
+ "data-testid": "vibe-fullscreen-audio-cover",
3256
+ src: F(C).getFullscreenAudioCoverSource(r) ?? void 0,
3257
+ alt: r.title ?? "",
3258
+ draggable: "false",
3259
+ class: "pointer-events-none absolute inset-0 h-full w-full object-cover"
3260
+ }, null, 8, Kr)) : o("", !0),
3261
+ n[6] ||= c("span", { class: "pointer-events-none absolute inset-0 border border-white/8 bg-[radial-gradient(circle,rgba(16,185,129,0.16),transparent_66%)]" }, null, -1),
3262
+ n[7] ||= c("span", { class: "pointer-events-none absolute h-[clamp(220px,30vw,360px)] w-[clamp(220px,30vw,360px)] border border-white/8 bg-[radial-gradient(circle,rgba(255,255,255,0.08),transparent_62%)]" }, null, -1),
3263
+ F(C).getFullscreenAudioCoverSource(r) ? o("", !0) : (w(), s("span", qr, [k(e.$slots, "item-icon", {
3264
+ icon: F(Jt)(r.type),
3265
+ item: r
3266
+ }, () => [(w(), a(A(F(Jt)(r.type)), {
3267
+ class: "h-6 w-6 stroke-[1.9]",
3268
+ "aria-hidden": "true"
3269
+ }))])])),
3270
+ c("span", Jr, [(w(), a(A(F(h).mediaStates.value[F(C).getItemKey(r)]?.paused ?? !0 ? F(ue) : F(le)), {
3271
+ class: "h-4 w-4 stroke-2",
3272
+ "aria-hidden": "true"
3273
+ }))])
3274
+ ], 8, Gr),
3275
+ F(C).isAssetLoading(i, r) ? (w(), s("div", Yr, [c("span", Xr, [u(F(se), {
3276
+ class: "h-5 w-5 animate-spin stroke-[1.9] text-[#f7f1ea]/78",
3277
+ "aria-hidden": "true"
3278
+ })])])) : o("", !0),
3279
+ F(C).getAssetErrorKind(r) ? (w(), s(t, { key: 1 }, [n[8] ||= c("div", { class: "pointer-events-none absolute inset-0 border border-white/8 bg-[radial-gradient(circle,rgba(239,68,68,0.12),transparent_66%)]" }, null, -1), c("div", {
3280
+ "data-testid": "vibe-asset-error",
3281
+ "data-kind": F(C).getAssetErrorKind(r),
3282
+ class: "relative z-[1] grid justify-items-center gap-4"
3283
+ }, [
3284
+ u(F(de), {
3285
+ class: "h-7 w-7 stroke-[1.9] text-[#f7f1ea]/72",
3286
+ "aria-hidden": "true"
3287
+ }),
3288
+ c("p", Qr, M(F(C).getAssetErrorLabel(r)), 1),
3289
+ F(h).canRetryAsset(F(C).getItemKey(r)) ? (w(), s("button", {
3290
+ key: 0,
3291
+ type: "button",
3292
+ class: "pointer-events-auto inline-flex items-center justify-center border border-white/14 bg-black/35 px-4 py-2 text-[0.64rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/82 backdrop-blur-[18px] transition hover:border-white/28 hover:bg-black/50",
3293
+ onClick: H((e) => F(h).retryAsset(F(C).getItemKey(r)), ["stop"])
3294
+ }, " Retry ", 8, $r)) : o("", !0)
3295
+ ], 8, Zr)], 64)) : o("", !0)
3296
+ ]), (w(), s("audio", {
3297
+ key: F(h).getAssetRenderKey(F(C).getItemKey(r)),
3298
+ src: F(C).getFullscreenMediaSource(i, r),
3299
+ preload: F(C).getFullscreenMediaPreload(i),
3300
+ class: "pointer-events-none absolute h-px w-px opacity-0",
3301
+ ref_for: !0,
3302
+ ref: (e) => be(F(C).getItemKey(r), e),
3303
+ onCanplay: (e) => Z(i, r, e),
3304
+ onDurationchange: (e) => Z(i, r, e),
3305
+ onError: (e) => F(R).onFullscreenMediaError(i, r),
3306
+ onLoadstart: (e) => Z(i, r, e),
3307
+ onLoadedmetadata: (e) => Z(i, r, e),
3308
+ onPause: (e) => Z(i, r, e),
3309
+ onPlay: (e) => Z(i, r, e),
3310
+ onPlaying: (e) => Z(i, r, e),
3311
+ onSeeking: (e) => Z(i, r, e),
3312
+ onSeeked: (e) => Z(i, r, e),
3313
+ onStalled: (e) => Z(i, r, e),
3314
+ onTimeupdate: (e) => Z(i, r, e),
3315
+ onWaiting: (e) => Z(i, r, e)
3316
+ }, null, 40, ei))], 2)) : (w(), s("div", ti, [c("div", ni, [k(e.$slots, "item-icon", {
3317
+ icon: F(Jt)(r.type),
3318
+ item: r
3319
+ }, () => [(w(), a(A(F(Jt)(r.type)), {
3320
+ class: "h-6 w-6 stroke-[1.9]",
3321
+ "aria-hidden": "true"
3322
+ }))])])]))], 14, Fr))), 128)),
3323
+ U.value && f["fullscreen-overlay"] ? (w(), s("div", ri, [c("div", ii, [k(e.$slots, "fullscreen-overlay", y(p(U.value)))])])) : o("", !0),
3324
+ z.value ? (w(), a(jt, {
3325
+ key: 1,
3326
+ "current-time": F(h).activeMediaState.value.currentTime,
3327
+ "current-time-label": F(h).formatPlaybackTime(F(h).activeMediaState.value.currentTime),
3328
+ duration: F(h).activeMediaDuration.value,
3329
+ "duration-label": F(h).formatPlaybackTime(F(h).activeMediaDuration.value),
3330
+ muted: F(h).activeMediaState.value.muted,
3331
+ progress: F(h).activeMediaProgress.value,
3332
+ "show-fullscreen-control": F(h).activeMediaItem.value?.type === "video",
3333
+ volume: F(h).activeMediaState.value.volume,
3334
+ "volume-control-layout": ee.value,
3335
+ onFullscreenRequest: F(T).request,
3336
+ onSeekInput: F(h).onMediaSeekInput,
3337
+ onVolumeInput: F(h).onMediaVolumeInput,
3338
+ onVolumeToggle: F(h).onMediaVolumeToggle
3339
+ }, null, 8, [
3340
+ "current-time",
3341
+ "current-time-label",
3342
+ "duration",
3343
+ "duration-label",
3344
+ "muted",
3345
+ "progress",
3346
+ "show-fullscreen-control",
3347
+ "volume",
3348
+ "volume-control-layout",
3349
+ "onFullscreenRequest",
3350
+ "onSeekInput",
3351
+ "onVolumeInput",
3352
+ "onVolumeToggle"
3353
+ ])) : o("", !0)
3354
+ ])) : V.value ? (w(), a(rr, {
3355
+ key: 1,
3356
+ "fill-collected-count": d.fillCollectedCount,
3357
+ "fill-completed-calls": d.fillCompletedCalls,
3358
+ "fill-loaded-count": d.fillLoadedCount,
3359
+ "fill-mode": d.fillMode,
3360
+ "fill-progress": d.fillProgress,
3361
+ "fill-target-calls": d.fillTargetCalls,
3362
+ "fill-target-count": d.fillTargetCount,
3363
+ "fill-total-count": d.fillTotalCount,
3364
+ "has-next-page": d.hasNextPage,
3365
+ phase: d.phase,
3366
+ "status-message": F(h).statusMessage.value
3321
3367
  }, null, 8, [
3322
- "current-time",
3323
- "current-time-label",
3324
- "duration",
3325
- "duration-label",
3326
- "muted",
3327
- "progress",
3328
- "show-fullscreen-control",
3329
- "volume",
3330
- "volume-control-layout",
3331
- "onFullscreenRequest",
3332
- "onSeekInput",
3333
- "onVolumeInput",
3334
- "onVolumeToggle"
3335
- ])) : o("", !0),
3336
- q.value ? (w(), s("div", {
3368
+ "fill-collected-count",
3369
+ "fill-completed-calls",
3370
+ "fill-loaded-count",
3371
+ "fill-mode",
3372
+ "fill-progress",
3373
+ "fill-target-calls",
3374
+ "fill-target-count",
3375
+ "fill-total-count",
3376
+ "has-next-page",
3377
+ "phase",
3378
+ "status-message"
3379
+ ])) : F(ge) && F(X) ? (w(), a(or, {
3380
+ key: 2,
3381
+ message: F(X).message,
3382
+ mode: F(X).mode,
3383
+ surface: F(X).surface
3384
+ }, {
3385
+ default: B(() => [F(he) ? k(e.$slots, "empty-state", y(g({ key: 0 }, F(X)))) : o("", !0)]),
3386
+ _: 3
3387
+ }, 8, [
3388
+ "message",
3389
+ "mode",
3390
+ "surface"
3391
+ ])) : o("", !0), F(me) && F(X) ? (w(), a(or, {
3337
3392
  key: 3,
3338
- class: v(["absolute left-1/2 z-[4] -translate-x-1/2", z.value])
3339
- }, [ae.value ? k(e.$slots, "fullscreen-status", y(g({ key: 0 }, q.value))) : (w(), s("div", {
3393
+ message: F(X).message,
3394
+ mode: F(X).mode,
3395
+ surface: F(X).surface
3396
+ }, {
3397
+ default: B(() => [F(he) ? k(e.$slots, "empty-state", y(g({ key: 0 }, F(X)))) : o("", !0)]),
3398
+ _: 3
3399
+ }, 8, [
3400
+ "message",
3401
+ "mode",
3402
+ "surface"
3403
+ ])) : o("", !0)], 544)]),
3404
+ fe.value ? (w(), a(Gt, {
3340
3405
  key: 1,
3341
- "data-testid": "vibe-fullscreen-status-badge",
3342
- class: v(["inline-flex w-auto items-center border border-white/14 bg-black/40 px-5 py-3 text-[0.75rem] font-bold uppercase tracking-[0.18em] text-[#f7f1ea]/74 backdrop-blur-[18px] max-[720px]:w-[calc(100%-2.5rem)] max-[720px]:justify-center", q.value.kind === "end" ? "border-amber-300/35 text-amber-200" : q.value.kind === "failed" ? "border-rose-400/45 text-rose-100" : ""])
3343
- }, M(q.value.message), 3))], 2)) : o("", !0)
3344
- ])) : te.value ? (w(), a(er, {
3345
- key: 1,
3346
- "fill-collected-count": d.fillCollectedCount,
3347
- "fill-completed-calls": d.fillCompletedCalls,
3348
- "fill-loaded-count": d.fillLoadedCount,
3349
- "fill-mode": d.fillMode,
3350
- "fill-progress": d.fillProgress,
3351
- "fill-target-calls": d.fillTargetCalls,
3352
- "fill-target-count": d.fillTargetCount,
3353
- "fill-total-count": d.fillTotalCount,
3354
- "has-next-page": d.hasNextPage,
3355
- phase: d.phase,
3356
- "status-message": F(h).statusMessage.value
3357
- }, null, 8, [
3358
- "fill-collected-count",
3359
- "fill-completed-calls",
3360
- "fill-loaded-count",
3361
- "fill-mode",
3362
- "fill-progress",
3363
- "fill-target-calls",
3364
- "fill-target-count",
3365
- "fill-total-count",
3366
- "has-next-page",
3367
- "phase",
3368
- "status-message"
3369
- ])) : F(pe) && F(oe) ? (w(), a(rr, {
3370
- key: 2,
3371
- message: F(oe).message,
3372
- mode: F(oe).mode,
3373
- surface: F(oe).surface
3374
- }, {
3375
- default: B(() => [F(fe) ? k(e.$slots, "empty-state", y(g({ key: 0 }, F(oe)))) : o("", !0)]),
3376
- _: 3
3377
- }, 8, [
3378
- "message",
3379
- "mode",
3380
- "surface"
3381
- ])) : o("", !0), F(ce) && F(oe) ? (w(), a(rr, {
3382
- key: 3,
3383
- message: F(oe).message,
3384
- mode: F(oe).mode,
3385
- surface: F(oe).surface
3386
- }, {
3387
- default: B(() => [F(fe) ? k(e.$slots, "empty-state", y(g({ key: 0 }, F(oe)))) : o("", !0)]),
3388
- _: 3
3389
- }, 8, [
3390
- "message",
3391
- "mode",
3392
- "surface"
3393
- ])) : o("", !0)], 544), u(r, {
3406
+ "show-end-badge": ce.value,
3407
+ "show-status": !!G.value,
3408
+ "status-kind": G.value?.kind ?? null,
3409
+ "status-message": G.value?.message ?? null
3410
+ }, l({
3411
+ default: B(() => [J.value && U.value ? k(e.$slots, "fullscreen-footer", y(g({ key: 0 }, U.value))) : o("", !0)]),
3412
+ _: 2
3413
+ }, [ae.value && G.value ? {
3414
+ name: "status",
3415
+ fn: B(() => [k(e.$slots, "fullscreen-status", y(p(G.value)))]),
3416
+ key: "0"
3417
+ } : void 0]), 1032, [
3418
+ "show-end-badge",
3419
+ "show-status",
3420
+ "status-kind",
3421
+ "status-message"
3422
+ ])) : o("", !0)
3423
+ ]), u(r, {
3394
3424
  "enter-active-class": "transform-gpu transition-all duration-320 ease-out",
3395
3425
  "enter-from-class": "translate-x-full opacity-0",
3396
3426
  "enter-to-class": "translate-x-0 opacity-100",
@@ -3398,9 +3428,9 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
3398
3428
  "leave-from-class": "translate-x-0 opacity-100",
3399
3429
  "leave-to-class": "translate-x-full opacity-0"
3400
3430
  }, {
3401
- default: B(() => [re.value && W.value ? (w(), s("aside", $r, [c("div", ei, [k(e.$slots, "fullscreen-aside", y(p(W.value)))])])) : o("", !0)]),
3431
+ default: B(() => [Y.value && U.value ? (w(), s("aside", ai, [c("div", oi, [k(e.$slots, "fullscreen-aside", y(p(U.value)))])])) : o("", !0)]),
3402
3432
  _: 3
3403
- })], 4),
3433
+ })]),
3404
3434
  u(r, {
3405
3435
  "enter-active-class": "transform-gpu transition-all duration-320 ease-out",
3406
3436
  "enter-from-class": "translate-x-full opacity-0",
@@ -3409,7 +3439,7 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
3409
3439
  "leave-from-class": "translate-x-0 opacity-100",
3410
3440
  "leave-to-class": "translate-x-full opacity-0"
3411
3441
  }, {
3412
- default: B(() => [ie.value && W.value ? (w(), s("aside", ti, [c("div", ni, [k(e.$slots, "fullscreen-aside", y(p(W.value)))])])) : o("", !0)]),
3442
+ default: B(() => [ie.value && U.value ? (w(), s("aside", si, [c("div", ci, [k(e.$slots, "fullscreen-aside", y(p(U.value)))])])) : o("", !0)]),
3413
3443
  _: 3
3414
3444
  })
3415
3445
  ]));
@@ -3417,10 +3447,10 @@ var Dr = { class: "relative h-full min-h-0 overflow-hidden bg-[#05060a] text-[#f
3417
3447
  });
3418
3448
  //#endregion
3419
3449
  //#region src/components/viewer-core/masonryLayoutState.ts
3420
- function oi(e) {
3450
+ function fi(e) {
3421
3451
  let t = j([]), n = j([]), r = j(/* @__PURE__ */ new Map()), i = j(0), a = j(/* @__PURE__ */ new Map()), o = j([]);
3422
3452
  function s(s, c, l) {
3423
- let u = ur(s, {
3453
+ let u = pr(s, {
3424
3454
  columnCount: c,
3425
3455
  columnWidth: l,
3426
3456
  gapX: e.gapPx,
@@ -3430,7 +3460,7 @@ function oi(e) {
3430
3460
  t.value = u.positions.map(d), n.value = u.heights, r.value = u.buckets, i.value = u.contentHeight, a.value = u.indexById, o.value = u.columnHeights;
3431
3461
  }
3432
3462
  function c(s, c, l, d) {
3433
- i.value = dr(u(), s, {
3463
+ i.value = mr(u(), s, {
3434
3464
  columnCount: l,
3435
3465
  columnWidth: d,
3436
3466
  gapX: e.gapPx,
@@ -3442,7 +3472,7 @@ function oi(e) {
3442
3472
  }).contentHeight, P(t), P(n), P(r), P(a), P(o);
3443
3473
  }
3444
3474
  function l(e, n, r, i) {
3445
- return pr({
3475
+ return gr({
3446
3476
  addedItems: r.addedItems,
3447
3477
  columnCount: i,
3448
3478
  columnHeights: o.value,
@@ -3483,24 +3513,24 @@ function oi(e) {
3483
3513
  }
3484
3514
  //#endregion
3485
3515
  //#region src/components/viewer-core/useMasonryMotion.ts
3486
- var si = 300, ci = 600, li = 40, ui = 300, di = 400, fi = 300;
3487
- function pi(e, t) {
3516
+ var pi = 300, mi = 600, hi = 40, gi = 300, _i = 400, vi = 300;
3517
+ function yi(e, t) {
3488
3518
  return t === "top" ? [...e].reverse() : e;
3489
3519
  }
3490
- function mi(e) {
3491
- return e <= 0 ? ci : ci + Math.min((e - 1) * li, di);
3520
+ function bi(e) {
3521
+ return e <= 0 ? mi : mi + Math.min((e - 1) * hi, _i);
3492
3522
  }
3493
- function hi(e, t, n = fi) {
3523
+ function xi(e, t, n = vi) {
3494
3524
  return e + t > n;
3495
3525
  }
3496
- function gi() {
3497
- return ui;
3526
+ function Si() {
3527
+ return gi;
3498
3528
  }
3499
- function _i(e) {
3529
+ function Ci(e) {
3500
3530
  let t = e.itemHeight > 0 ? e.itemHeight : e.columnWidth;
3501
3531
  return e.direction === "top" ? e.scrollTop - t : e.scrollTop + e.viewportHeight + t;
3502
3532
  }
3503
- function vi(e) {
3533
+ function wi(e) {
3504
3534
  let t = D(/* @__PURE__ */ new Set()), n = D(/* @__PURE__ */ new Set()), r = D(/* @__PURE__ */ new Map()), a = D(/* @__PURE__ */ new Map()), o = D(/* @__PURE__ */ new Map()), s = D(/* @__PURE__ */ new Set()), c = D(/* @__PURE__ */ new Map()), l = D(/* @__PURE__ */ new Map()), u = D(/* @__PURE__ */ new Set()), d = /* @__PURE__ */ new Set(), f = /* @__PURE__ */ new Set(), p = i(() => Array.from(o.value.values()));
3505
3535
  z(e.visibleIndices, (i) => {
3506
3536
  if (!i.length) return;
@@ -3510,20 +3540,20 @@ function vi(e) {
3510
3540
  !r || !t.value.has(r) || d.has(r) || (d.add(r), o.push(r));
3511
3541
  }
3512
3542
  if (!o.length) return;
3513
- let s = pi(o, a.value.get(o[0]) ?? "bottom"), c = new Map(r.value);
3514
- for (let e = 0; e < s.length; e += 1) c.set(s[e], Math.min(e * li, di));
3515
- r.value = c, yi(() => {
3543
+ let s = yi(o, a.value.get(o[0]) ?? "bottom"), c = new Map(r.value);
3544
+ for (let e = 0; e < s.length; e += 1) c.set(s[e], Math.min(e * hi, _i));
3545
+ r.value = c, Ti(() => {
3516
3546
  let e = new Set(n.value);
3517
3547
  for (let t of o) e.add(t);
3518
3548
  n.value = e;
3519
- }), bi(() => {
3549
+ }), Ei(() => {
3520
3550
  let e = new Set(t.value);
3521
3551
  for (let t of o) e.delete(t);
3522
3552
  t.value = e, w(() => {
3523
3553
  let e = new Set(n.value), t = new Map(r.value), i = new Map(a.value);
3524
3554
  for (let n of o) e.delete(n), t.delete(n), i.delete(n), d.delete(n);
3525
3555
  n.value = e, r.value = t, a.value = i;
3526
- }, mi(o.length));
3556
+ }, bi(o.length));
3527
3557
  });
3528
3558
  }, { flush: "post" }), z(() => e.items.value.map((e) => $(e)), (e) => {
3529
3559
  if (!e.length || !o.value.size) return;
@@ -3536,7 +3566,7 @@ function vi(e) {
3536
3566
  });
3537
3567
  function m(n, r = "bottom") {
3538
3568
  if (!n.length) return;
3539
- let i = hi(t.value.size, n.length), o = i ? new Set(e.visibleIndices.value) : null, s = o ? h(o) : new Set(t.value), c = i ? g(s) : new Map(a.value);
3569
+ let i = xi(t.value.size, n.length), o = i ? new Set(e.visibleIndices.value) : null, s = o ? h(o) : new Set(t.value), c = i ? g(s) : new Map(a.value);
3540
3570
  for (let t of n) {
3541
3571
  let n = $(t), a = i ? e.indexById.value.get(n) : null;
3542
3572
  o && (a == null || !o.has(a)) || (s.add(n), c.set(n, r));
@@ -3568,7 +3598,7 @@ function vi(e) {
3568
3598
  let e = $(t.item);
3569
3599
  p.push(e), i.set(e, t), c.delete(e), l.delete(e), u.delete(e), f.delete(e), d.delete(e);
3570
3600
  }
3571
- o.value = i, t.value = c, n.value = l, r.value = u, a.value = f, yi(() => {
3601
+ o.value = i, t.value = c, n.value = l, r.value = u, a.value = f, Ti(() => {
3572
3602
  let e = new Set(s.value);
3573
3603
  for (let t of p) e.add(t);
3574
3604
  s.value = e;
@@ -3576,9 +3606,9 @@ function vi(e) {
3576
3606
  let e = new Map(o.value), t = new Set(s.value);
3577
3607
  for (let n of p) e.delete(n), t.delete(n);
3578
3608
  o.value = e, s.value = t;
3579
- }, ui);
3609
+ }, gi);
3580
3610
  }
3581
- function v(t, n, r = si) {
3611
+ function v(t, n, r = pi) {
3582
3612
  if (!t.size) return;
3583
3613
  let i = /* @__PURE__ */ new Map(), a = [];
3584
3614
  for (let [r, o] of t.entries()) {
@@ -3597,8 +3627,8 @@ function vi(e) {
3597
3627
  c.value = i, u.value = /* @__PURE__ */ new Set();
3598
3628
  let o = new Map(l.value);
3599
3629
  for (let e of a) o.set(e, r);
3600
- l.value = o, yi(() => {
3601
- u.value = new Set(a), yi(() => {
3630
+ l.value = o, Ti(() => {
3631
+ u.value = new Set(a), Ti(() => {
3602
3632
  c.value = /* @__PURE__ */ new Map();
3603
3633
  });
3604
3634
  }), w(() => {
@@ -3609,8 +3639,8 @@ function vi(e) {
3609
3639
  }, r);
3610
3640
  }
3611
3641
  function y(e) {
3612
- if (n.value.has(e)) return `transform ${ci}ms ease-out`;
3613
- if (u.value.has(e)) return `transform ${l.value.get(e) ?? si}ms ease-out`;
3642
+ if (n.value.has(e)) return `transform ${mi}ms ease-out`;
3643
+ if (u.value.has(e)) return `transform ${l.value.get(e) ?? pi}ms ease-out`;
3614
3644
  }
3615
3645
  function b(e) {
3616
3646
  if (!n.value.has(e)) return;
@@ -3627,7 +3657,7 @@ function vi(e) {
3627
3657
  } : {
3628
3658
  dx: 0,
3629
3659
  dy: 0
3630
- }, u = s ? a.value.get(s) ?? "bottom" : "bottom", d = s && t.value.has(s) ? _i({
3660
+ }, u = s ? a.value.get(s) ?? "bottom" : "bottom", d = s && t.value.has(s) ? Ci({
3631
3661
  columnWidth: e.columnWidth.value,
3632
3662
  direction: u,
3633
3663
  itemHeight: o,
@@ -3641,14 +3671,14 @@ function vi(e) {
3641
3671
  if (!r) return {
3642
3672
  opacity: "0",
3643
3673
  transform: "translate3d(0, 0, 0) scale(0.96)",
3644
- transition: `opacity ${ui}ms ease-out, transform ${ui}ms ease-out`
3674
+ transition: `opacity ${gi}ms ease-out, transform ${gi}ms ease-out`
3645
3675
  };
3646
3676
  let i = s.value.has(n);
3647
3677
  return {
3648
3678
  height: `${r.height}px`,
3649
3679
  opacity: i ? "0" : "1",
3650
3680
  transform: `translate3d(${r.position.x}px, ${r.position.y}px, 0) scale(${i ? "0.96" : "1"})`,
3651
- transition: `opacity ${ui}ms ease-out, transform ${ui}ms ease-out`,
3681
+ transition: `opacity ${gi}ms ease-out, transform ${gi}ms ease-out`,
3652
3682
  width: `${e.columnWidth.value}px`
3653
3683
  };
3654
3684
  }
@@ -3669,28 +3699,28 @@ function vi(e) {
3669
3699
  playFlipMoveAnimation: v
3670
3700
  };
3671
3701
  }
3672
- function yi(e) {
3702
+ function Ti(e) {
3673
3703
  if (typeof requestAnimationFrame == "function") {
3674
3704
  requestAnimationFrame(() => e());
3675
3705
  return;
3676
3706
  }
3677
3707
  setTimeout(e, 0);
3678
3708
  }
3679
- function bi(e) {
3680
- yi(() => yi(e));
3709
+ function Ei(e) {
3710
+ Ti(() => Ti(e));
3681
3711
  }
3682
3712
  //#endregion
3683
3713
  //#region src/components/viewer-core/masonryViewport.ts
3684
- function xi(e, t) {
3714
+ function Di(e, t) {
3685
3715
  return e?.clientHeight || Math.round(e?.getBoundingClientRect().height ?? 0) || t || window.innerHeight || 1;
3686
3716
  }
3687
- function Si(e, t, n) {
3717
+ function Oi(e, t, n) {
3688
3718
  return e?.clientWidth || Math.round(e?.getBoundingClientRect().width ?? 0) || t || window.innerWidth || n;
3689
3719
  }
3690
- function Ci(e, t, n, r) {
3720
+ function ki(e, t, n, r) {
3691
3721
  return Math.max(e?.scrollHeight ?? 0, r) - (t + n);
3692
3722
  }
3693
- function wi(e, t) {
3723
+ function Ai(e, t) {
3694
3724
  return {
3695
3725
  height: `${e}px`,
3696
3726
  transform: `translate3d(0, ${t}px, 0)`
@@ -3698,11 +3728,11 @@ function wi(e, t) {
3698
3728
  }
3699
3729
  //#endregion
3700
3730
  //#region src/components/viewer-core/masonryScrollBehavior.ts
3701
- var Ti = 24, Ei = 48;
3702
- function Di(e) {
3731
+ var ji = 24, Mi = 48;
3732
+ function Ni(e) {
3703
3733
  let t = D(0), n = 0, r = 0;
3704
3734
  function i(e) {
3705
- if (t.value = Mi(e), t.value <= 0) {
3735
+ if (t.value = Ri(e), t.value <= 0) {
3706
3736
  o();
3707
3737
  return;
3708
3738
  }
@@ -3722,7 +3752,7 @@ function Di(e) {
3722
3752
  let s = e.getViewport();
3723
3753
  if (s && r > 0) {
3724
3754
  let n = Math.min(Math.max(0, i - r), 250), a = t.value * n / 1e3;
3725
- s.scrollTop = Ni(s.scrollTop + a, 0, e.getMaxScrollTop()), e.onScroll();
3755
+ s.scrollTop = zi(s.scrollTop + a, 0, e.getMaxScrollTop()), e.onScroll();
3726
3756
  }
3727
3757
  r = i, a();
3728
3758
  }
@@ -3732,44 +3762,44 @@ function Di(e) {
3732
3762
  stop: o
3733
3763
  };
3734
3764
  }
3735
- function Oi(e) {
3765
+ function Pi(e) {
3736
3766
  if (!e.active || !e.triggerEnabled) return 0;
3737
3767
  let t = Math.max(0, e.maxScrollTop - e.thresholdPx);
3738
- return t <= 0 ? 1 : Ni(1 - (e.progressDistancePx - e.thresholdPx) / t, 0, 1);
3768
+ return t <= 0 ? 1 : zi(1 - (e.progressDistancePx - e.thresholdPx) / t, 0, 1);
3739
3769
  }
3740
- function ki(e) {
3770
+ function Fi(e) {
3741
3771
  if (!e.active || !e.triggerEnabled) return 0;
3742
3772
  let t = Math.max(0, e.maxScrollTop - e.thresholdPx);
3743
- return t <= 0 ? 1 : Ni(e.progressDistancePx / t, 0, 1);
3773
+ return t <= 0 ? 1 : zi(e.progressDistancePx / t, 0, 1);
3744
3774
  }
3745
- function Ai(e) {
3746
- let t = i(() => Math.max(0, e.viewportHeight.value - Ti * 2)), n = i(() => e.containerHeight.value > e.viewportHeight.value + 1 && t.value > 0), r = i(() => {
3775
+ function Ii(e) {
3776
+ let t = i(() => Math.max(0, e.viewportHeight.value - ji * 2)), n = i(() => e.containerHeight.value > e.viewportHeight.value + 1 && t.value > 0), r = i(() => {
3747
3777
  if (!n.value) return 0;
3748
3778
  let r = e.viewportHeight.value / e.containerHeight.value * t.value;
3749
- return Math.min(t.value, Math.max(Ei, r));
3779
+ return Math.min(t.value, Math.max(Mi, r));
3750
3780
  }), a = i(() => {
3751
- if (!n.value) return Ti;
3781
+ if (!n.value) return ji;
3752
3782
  let i = Math.max(0, e.containerHeight.value - e.viewportHeight.value);
3753
- return Ti + Math.max(0, t.value - r.value) * (i > 0 ? Ni(e.scrollTop.value / i, 0, 1) : 0);
3783
+ return ji + Math.max(0, t.value - r.value) * (i > 0 ? zi(e.scrollTop.value / i, 0, 1) : 0);
3754
3784
  });
3755
3785
  return {
3756
- getScrollbarThumbStyle: () => wi(r.value, a.value),
3786
+ getScrollbarThumbStyle: () => Ai(r.value, a.value),
3757
3787
  showScrollbar: n
3758
3788
  };
3759
3789
  }
3760
- function ji(e) {
3790
+ function Li(e) {
3761
3791
  return typeof e == "number" && Number.isFinite(e) ? Math.max(0, e) : 0;
3762
3792
  }
3763
- function Mi(e) {
3793
+ function Ri(e) {
3764
3794
  return Number.isFinite(e) ? Math.max(0, e) : 0;
3765
3795
  }
3766
- function Ni(e, t, n) {
3796
+ function zi(e, t, n) {
3767
3797
  return Math.min(Math.max(e, t), n);
3768
3798
  }
3769
3799
  //#endregion
3770
3800
  //#region src/components/viewer-core/useEdgeBoundary.ts
3771
- var Pi = 250, Fi = 1e3;
3772
- function Ii(e) {
3801
+ var Bi = 250, Vi = 1e3;
3802
+ function Hi(e) {
3773
3803
  let t = D(!1), n = D(!1), r = D(0), i = D(0), a = D(!1), o = D(!1), s = D(!1), c = 0, l = null;
3774
3804
  x(() => {
3775
3805
  S();
@@ -3792,7 +3822,7 @@ function Ii(e) {
3792
3822
  if (!C(t) || !e.isAtBoundary()) return;
3793
3823
  let n = Date.now();
3794
3824
  if (!(n < c)) {
3795
- if (c = n + Pi, a.value) {
3825
+ if (c = n + Bi, a.value) {
3796
3826
  s.value = !0;
3797
3827
  return;
3798
3828
  }
@@ -3831,7 +3861,7 @@ function Ii(e) {
3831
3861
  return e.hasPage.value && t.value && r.value > i.value && !e.interactionLocked?.value && !e.loading.value && !a.value && typeof e.requestPage.value == "function";
3832
3862
  }
3833
3863
  function v() {
3834
- o.value = !1, y(Fi);
3864
+ o.value = !1, y(Vi);
3835
3865
  }
3836
3866
  function y(e) {
3837
3867
  S(), a.value = !0, l = setTimeout(() => {
@@ -3863,7 +3893,7 @@ function Ii(e) {
3863
3893
  }
3864
3894
  //#endregion
3865
3895
  //#region src/components/viewer-core/masonryBoundaryLock.ts
3866
- function Li() {
3896
+ function Ui() {
3867
3897
  let e = D(!1), t = null;
3868
3898
  x(() => {
3869
3899
  r();
@@ -3884,8 +3914,8 @@ function Li() {
3884
3914
  }
3885
3915
  //#endregion
3886
3916
  //#region src/components/viewer-core/masonryItemMutation.ts
3887
- function Ri(e) {
3888
- let t = e.currentItems.map((e) => $(e)), n = e.previousItems.map((e) => $(e)), r = Bi(e.previousItems, e.layoutIndexById, e.layoutHeights), i = Vi(e.previousItems, e.layoutIndexById, e.layoutPositions), a = new Set(n), o = new Set(t), s = e.currentItems.filter((e) => !a.has($(e))), c = zi(e.previousItems, o, r, i), l = t.length > n.length && n.length > 0 && t[0] !== n[0], u = e.scrollTop > e.contentInsetPx + e.gapPx, d = l && u ? e.currentItems[e.activeIndex] : null;
3917
+ function Wi(e) {
3918
+ let t = e.currentItems.map((e) => $(e)), n = e.previousItems.map((e) => $(e)), r = Ki(e.previousItems, e.layoutIndexById, e.layoutHeights), i = qi(e.previousItems, e.layoutIndexById, e.layoutPositions), a = new Set(n), o = new Set(t), s = e.currentItems.filter((e) => !a.has($(e))), c = Gi(e.previousItems, o, r, i), l = t.length > n.length && n.length > 0 && t[0] !== n[0], u = e.scrollTop > e.contentInsetPx + e.gapPx, d = l && u ? e.currentItems[e.activeIndex] : null;
3889
3919
  return {
3890
3920
  addedItems: s,
3891
3921
  anchorId: d ? $(d) : null,
@@ -3897,7 +3927,7 @@ function Ri(e) {
3897
3927
  shouldResetScrollForEmptyRemoval: e.currentItems.length === 0 && e.previousItems.length > 0 && c.length > 0 && e.scrollTop > 0
3898
3928
  };
3899
3929
  }
3900
- function zi(e, t, n, r) {
3930
+ function Gi(e, t, n, r) {
3901
3931
  return e.flatMap((e) => {
3902
3932
  let i = $(e);
3903
3933
  if (t.has(i)) return [];
@@ -3909,7 +3939,7 @@ function zi(e, t, n, r) {
3909
3939
  }] : [];
3910
3940
  });
3911
3941
  }
3912
- function Bi(e, t, n) {
3942
+ function Ki(e, t, n) {
3913
3943
  let r = /* @__PURE__ */ new Map();
3914
3944
  for (let i of e) {
3915
3945
  let e = $(i), a = t.get(e), o = a == null ? void 0 : n[a];
@@ -3917,7 +3947,7 @@ function Bi(e, t, n) {
3917
3947
  }
3918
3948
  return r;
3919
3949
  }
3920
- function Vi(e, t, n) {
3950
+ function qi(e, t, n) {
3921
3951
  let r = /* @__PURE__ */ new Map();
3922
3952
  for (let i of e) {
3923
3953
  let e = $(i), a = t.get(e), o = a == null ? void 0 : n[a];
@@ -3927,7 +3957,7 @@ function Vi(e, t, n) {
3927
3957
  }
3928
3958
  //#endregion
3929
3959
  //#region src/components/viewer-core/masonryPendingAppend.ts
3930
- function Hi(e) {
3960
+ function Ji(e) {
3931
3961
  let t = D(null), n = D(!1), r = null;
3932
3962
  function i() {
3933
3963
  o(), e.pendingAppendItems.value.length && (t.value = c([...e.items.value, ...e.pendingAppendItems.value]), s());
@@ -3950,12 +3980,12 @@ function Hi(e) {
3950
3980
  }, 300));
3951
3981
  }
3952
3982
  function c(t) {
3953
- return t.length ? e.pendingAppendItems.value.length && e.columnHeights.value.length === e.columnCount.value ? fr(e.pendingAppendItems.value, {
3983
+ return t.length ? e.pendingAppendItems.value.length && e.columnHeights.value.length === e.columnCount.value ? hr(e.pendingAppendItems.value, {
3954
3984
  columnHeights: e.columnHeights.value,
3955
3985
  columnWidth: e.columnWidth.value,
3956
3986
  contentHeight: e.contentHeight.value,
3957
3987
  gapY: e.gapPx
3958
- }) + e.contentInsetPx * 2 : ur(t, {
3988
+ }) + e.contentInsetPx * 2 : pr(t, {
3959
3989
  bucketPx: e.bucketPx,
3960
3990
  columnCount: e.columnCount.value,
3961
3991
  columnWidth: e.columnWidth.value,
@@ -3972,42 +4002,42 @@ function Hi(e) {
3972
4002
  }
3973
4003
  //#endregion
3974
4004
  //#region src/components/viewer-core/useMasonryList.ts
3975
- var Ui = 600, Wi = 24, Gi = 16, Ki = 300, qi = 200, Ji = 0, Yi = 1, Xi = Wi + Gi, Zi = 200, Qi = 500, $i = 1e3;
3976
- function ea(e) {
3977
- let t = D(null), n = D(0), r = D(typeof window > "u" ? 0 : window.innerHeight || 0), a = D(typeof window > "u" ? 0 : window.innerWidth || Ki), o = oi({
3978
- bucketPx: Ui,
3979
- contentInsetPx: Wi,
3980
- gapPx: Gi
3981
- }), { buckets: s, columnHeights: c, contentHeight: l, heights: u, indexById: d, positions: f } = o, p = D(null), m = Li(), h = i(() => Math.max(Ki, a.value - Wi * 2)), g = i(() => sr(h.value, Ki)), v = i(() => cr(h.value, g.value, Ki, Gi)), y = i(() => ji(e.bottomLoadBufferPx.value)), b = i(() => ta(e.activeIndex.value, 0, Math.max(0, e.items.value.length - 1))), C = i(() => mr({
4005
+ var Yi = 600, Xi = 24, Zi = 16, Qi = 300, $i = 200, ea = 0, ta = 1, na = Xi + Zi, ra = 200, ia = 500, aa = 1e3;
4006
+ function oa(e) {
4007
+ let t = D(null), n = D(0), r = D(typeof window > "u" ? 0 : window.innerHeight || 0), a = D(typeof window > "u" ? 0 : window.innerWidth || Qi), o = fi({
4008
+ bucketPx: Yi,
4009
+ contentInsetPx: Xi,
4010
+ gapPx: Zi
4011
+ }), { buckets: s, columnHeights: c, contentHeight: l, heights: u, indexById: d, positions: f } = o, p = D(null), m = Ui(), h = i(() => Math.max(Qi, a.value - Xi * 2)), g = i(() => ur(h.value, Qi)), v = i(() => dr(h.value, g.value, Qi, Zi)), y = i(() => Li(e.bottomLoadBufferPx.value)), b = i(() => sa(e.activeIndex.value, 0, Math.max(0, e.items.value.length - 1))), C = i(() => _r({
3982
4012
  itemCount: e.items.value.length,
3983
4013
  viewportHeight: r.value,
3984
4014
  scrollTop: n.value,
3985
- overscanPx: qi,
3986
- bucketPx: Ui,
4015
+ overscanPx: $i,
4016
+ bucketPx: Yi,
3987
4017
  buckets: s.value
3988
4018
  })), w = i(() => C.value.map((t) => ({
3989
4019
  item: e.items.value[t],
3990
4020
  index: t
3991
4021
  }))), T = i(() => {
3992
- let e = l.value + Wi * 2, t = I.reservedContentHeight.value ?? 0;
3993
- return Math.max(e, t, r.value) + Zi + y.value;
3994
- }), E = i(() => e.hasNextPage.value || e.allowExhaustedNextPageRefresh.value), O = i(() => ki({
4022
+ let e = l.value + Xi * 2, t = I.reservedContentHeight.value ?? 0;
4023
+ return Math.max(e, t, r.value) + ra + y.value;
4024
+ }), E = i(() => e.hasNextPage.value || e.allowExhaustedNextPageRefresh.value), O = i(() => Fi({
3995
4025
  active: e.active.value,
3996
- maxScrollTop: X(),
4026
+ maxScrollTop: Y(),
3997
4027
  progressDistancePx: n.value,
3998
- thresholdPx: Ji,
4028
+ thresholdPx: ea,
3999
4029
  triggerEnabled: E.value
4000
- })), k = i(() => e.items.value.length > 0 ? `${b.value + 1} / ${e.items.value.length}` : "0 / 0"), A = i(() => Oi({
4030
+ })), k = i(() => e.items.value.length > 0 ? `${b.value + 1} / ${e.items.value.length}` : "0 / 0"), A = i(() => Pi({
4001
4031
  active: e.active.value,
4002
- maxScrollTop: X(),
4032
+ maxScrollTop: Y(),
4003
4033
  progressDistancePx: n.value,
4004
- thresholdPx: Xi,
4034
+ thresholdPx: na,
4005
4035
  triggerEnabled: e.hasPreviousPage.value
4006
- })), j = Ai({
4036
+ })), j = Ii({
4007
4037
  containerHeight: T,
4008
4038
  scrollTop: n,
4009
4039
  viewportHeight: r
4010
- }), M = vi({
4040
+ }), M = wi({
4011
4041
  items: e.items,
4012
4042
  visibleIndices: C,
4013
4043
  positions: f,
@@ -4016,44 +4046,44 @@ function ea(e) {
4016
4046
  columnWidth: v,
4017
4047
  scrollTop: n,
4018
4048
  viewportHeight: r
4019
- }), N = Ii({
4049
+ }), N = Hi({
4020
4050
  direction: "top",
4021
4051
  getAnimationLockMs(e) {
4022
- return Math.max(Qi, mi(e)) + $i;
4052
+ return Math.max(ia, bi(e)) + aa;
4023
4053
  },
4024
4054
  hasPage: e.hasPreviousPage,
4025
4055
  interactionLocked: m.isBoundaryInteractionLocked,
4026
4056
  isAtBoundary() {
4027
- return n.value <= Xi;
4057
+ return n.value <= na;
4028
4058
  },
4029
4059
  loading: e.loading,
4030
4060
  requestPage: e.requestPreviousPage
4031
- }), P = Ii({
4061
+ }), P = Hi({
4032
4062
  direction: "bottom",
4033
4063
  getAnimationLockMs(e) {
4034
- return mi(e) + $i;
4064
+ return bi(e) + aa;
4035
4065
  },
4036
4066
  hasPage: E,
4037
4067
  interactionLocked: m.isBoundaryInteractionLocked,
4038
4068
  isAtBoundary() {
4039
- return Y() <= Yi;
4069
+ return J() <= ta;
4040
4070
  },
4041
4071
  loading: e.loading,
4042
4072
  requestPage: e.requestNextPage
4043
- }), F = Di({
4073
+ }), F = Ni({
4044
4074
  active: e.active,
4045
- getMaxScrollTop: X,
4075
+ getMaxScrollTop: Y,
4046
4076
  getViewport: () => t.value,
4047
4077
  onScroll: ee
4048
- }), I = Hi({
4049
- bucketPx: Ui,
4078
+ }), I = Ji({
4079
+ bucketPx: Yi,
4050
4080
  columnHeights: c,
4051
4081
  columnCount: g,
4052
4082
  columnWidth: v,
4053
4083
  commitPendingAppend: e.commitPendingAppend,
4054
4084
  contentHeight: l,
4055
- contentInsetPx: Wi,
4056
- gapPx: Gi,
4085
+ contentInsetPx: Xi,
4086
+ gapPx: Zi,
4057
4087
  items: e.items,
4058
4088
  pendingAppendItems: e.pendingAppendItems
4059
4089
  }), L = null, R = 0;
@@ -4062,20 +4092,20 @@ function ea(e) {
4062
4092
  g,
4063
4093
  v
4064
4094
  ], async ([t], [r = []]) => {
4065
- let i = Ri({
4095
+ let i = Wi({
4066
4096
  activeIndex: b.value,
4067
- contentInsetPx: Wi,
4097
+ contentInsetPx: Xi,
4068
4098
  currentItems: t,
4069
- gapPx: Gi,
4099
+ gapPx: Zi,
4070
4100
  layoutHeights: u.value,
4071
4101
  layoutIndexById: d.value,
4072
4102
  layoutPositions: f.value,
4073
4103
  previousItems: r ?? [],
4074
4104
  scrollTop: n.value
4075
4105
  });
4076
- i.shouldLockBoundaryInteractionForRemoval && m.lockBoundaryInteraction(gi() + $i), i.shouldResetScrollForEmptyRemoval && te();
4106
+ i.shouldLockBoundaryInteractionForRemoval && m.lockBoundaryInteraction(Si() + aa), i.shouldResetScrollForEmptyRemoval && te();
4077
4107
  let a = r ?? [];
4078
- o.canAppend(t, a, i, g.value) ? o.append(i.addedItems, a.length, g.value, v.value) : o.rebuild(t, g.value, v.value), i.removedItems.length > 0 && M.markLeave(i.removedItems), i.addedItems.length > 0 && (M.markEnter(i.addedItems, i.isPrepend ? "top" : "bottom"), i.isPrepend ? N.onItemsMutated(i.addedItems.length) : P.onItemsMutated(i.addedItems.length)), M.playFlipMoveAnimation(i.oldPositionsById, new Set(i.addedItems.map((e) => $(e))), i.isPrepend ? Qi : void 0), i.anchorId ? (await _(), U(i.anchorId, i.oldPositionsById)) : e.active.value && i.previousIds.length > 0 && G();
4108
+ o.canAppend(t, a, i, g.value) ? o.append(i.addedItems, a.length, g.value, v.value) : o.rebuild(t, g.value, v.value), i.removedItems.length > 0 && M.markLeave(i.removedItems), i.addedItems.length > 0 && (M.markEnter(i.addedItems, i.isPrepend ? "top" : "bottom"), i.isPrepend ? N.onItemsMutated(i.addedItems.length) : P.onItemsMutated(i.addedItems.length)), M.playFlipMoveAnimation(i.oldPositionsById, new Set(i.addedItems.map((e) => $(e))), i.isPrepend ? ia : void 0), i.anchorId ? (await _(), U(i.anchorId, i.oldPositionsById)) : e.active.value && i.previousIds.length > 0 && ne();
4079
4109
  }, { immediate: !0 }), z([
4080
4110
  () => e.pendingAppendItems.value.map((e) => $(e)),
4081
4111
  g,
@@ -4089,24 +4119,24 @@ function ea(e) {
4089
4119
  }
4090
4120
  if (F.start(), !a || i !== !1 || p.value == null) return;
4091
4121
  await _();
4092
- let o = Math.max(0, T.value - r.value), s = ta(p.value, 0, o);
4122
+ let o = Math.max(0, T.value - r.value), s = sa(p.value, 0, o);
4093
4123
  a.scrollTop = s, n.value = s, N.syncBoundary(), P.syncBoundary();
4094
4124
  }), z(() => e.loading.value, async (e) => {
4095
4125
  I.clearReservedHeightWhenIdle(e), N.onLoadingChange(e), P.onLoadingChange(e), await _();
4096
4126
  }), S(async () => {
4097
- q(), await _(), b.value > 0 ? H(b.value, "center") : W(), N.syncBoundary(), P.syncBoundary(), typeof ResizeObserver < "u" ? (L = new ResizeObserver(() => {
4098
- q();
4099
- }), t.value && L.observe(t.value)) : window.addEventListener("resize", q);
4127
+ K(), await _(), b.value > 0 ? H(b.value, "center") : W(), N.syncBoundary(), P.syncBoundary(), typeof ResizeObserver < "u" ? (L = new ResizeObserver(() => {
4128
+ K();
4129
+ }), t.value && L.observe(t.value)) : window.addEventListener("resize", K);
4100
4130
  }), x(() => {
4101
- L?.disconnect(), L = null, window.removeEventListener("resize", q), I.clearAppendCommitTimer(), m.clearBoundaryInteractionReleaseTimer(), R &&= (cancelAnimationFrame(R), 0), F.stop();
4131
+ L?.disconnect(), L = null, window.removeEventListener("resize", K), I.clearAppendCommitTimer(), m.clearBoundaryInteractionReleaseTimer(), R &&= (cancelAnimationFrame(R), 0), F.stop();
4102
4132
  });
4103
4133
  function ee() {
4104
- e.active.value && (n.value = t.value?.scrollTop ?? 0, r.value = J(), N.syncBoundary("scroll"), P.syncBoundary("scroll"), K(), !G() && (R ||= requestAnimationFrame(() => {
4134
+ e.active.value && (n.value = t.value?.scrollTop ?? 0, r.value = q(), N.syncBoundary("scroll"), P.syncBoundary("scroll"), G(), !ne() && (R ||= requestAnimationFrame(() => {
4105
4135
  R = 0, W();
4106
4136
  })));
4107
4137
  }
4108
4138
  function B(t) {
4109
- e.active.value && (N.onWheel(t), P.onWheel(t), K());
4139
+ e.active.value && (N.onWheel(t), P.onWheel(t), G());
4110
4140
  }
4111
4141
  function V(t) {
4112
4142
  let n = e.items.value[t], r = n ? $(n) : "";
@@ -4122,7 +4152,7 @@ function ea(e) {
4122
4152
  let a = t.value, o = f.value[e], s = u.value[e];
4123
4153
  if (!a || !o || !s) return;
4124
4154
  let c = a.scrollTop, l = Math.max(0, T.value - r.value);
4125
- i === "center" ? c = o.y - (r.value - s) / 2 : o.y < a.scrollTop ? c = o.y - Wi : o.y + s > a.scrollTop + r.value && (c = o.y + s - r.value + Wi), a.scrollTop = ta(c, 0, l), n.value = a.scrollTop, W();
4155
+ i === "center" ? c = o.y - (r.value - s) / 2 : o.y < a.scrollTop ? c = o.y - Xi : o.y + s > a.scrollTop + r.value && (c = o.y + s - r.value + Xi), a.scrollTop = sa(c, 0, l), n.value = a.scrollTop, W();
4126
4156
  }
4127
4157
  function U(e, r) {
4128
4158
  let i = t.value, a = r.get(e), o = d.value.get(e), s = o == null ? null : f.value[o];
@@ -4139,7 +4169,7 @@ function ea(e) {
4139
4169
  e.scrollTop = 0, n.value = 0, N.syncBoundary(), P.syncBoundary();
4140
4170
  }
4141
4171
  function W() {
4142
- if (!C.value.length || G()) return;
4172
+ if (!C.value.length || ne()) return;
4143
4173
  let t = n.value + r.value / 2, i = b.value, a = Infinity;
4144
4174
  for (let e of C.value) {
4145
4175
  let n = f.value[e], r = u.value[e];
@@ -4149,26 +4179,26 @@ function ea(e) {
4149
4179
  }
4150
4180
  e.setActiveIndex(i);
4151
4181
  }
4152
- function G() {
4153
- let t = n.value <= Xi, r = Y() <= Yi;
4182
+ function ne() {
4183
+ let t = n.value <= na, r = J() <= ta;
4154
4184
  return t ? (e.setActiveIndex(0), !0) : r ? (e.setActiveIndex(Math.max(0, e.items.value.length - 1)), !0) : !1;
4155
4185
  }
4156
- function K() {
4186
+ function G() {
4157
4187
  N.maybeRequestPage(), P.maybeRequestPage();
4158
4188
  }
4189
+ function K() {
4190
+ r.value = q(), a.value = re();
4191
+ }
4159
4192
  function q() {
4160
- r.value = J(), a.value = ne();
4193
+ return Di(t.value, r.value);
4161
4194
  }
4162
- function J() {
4163
- return xi(t.value, r.value);
4195
+ function re() {
4196
+ return Oi(t.value, a.value, Qi);
4164
4197
  }
4165
- function ne() {
4166
- return Si(t.value, a.value, Ki);
4198
+ function J() {
4199
+ return ki(t.value, n.value, r.value, T.value);
4167
4200
  }
4168
4201
  function Y() {
4169
- return Ci(t.value, n.value, r.value, T.value);
4170
- }
4171
- function X() {
4172
4202
  let e = Math.max(t.value?.scrollHeight ?? 0, T.value);
4173
4203
  return Math.max(0, e - r.value);
4174
4204
  }
@@ -4192,17 +4222,17 @@ function ea(e) {
4192
4222
  scrollViewportRef: t
4193
4223
  };
4194
4224
  }
4195
- function ta(e, t, n) {
4225
+ function sa(e, t, n) {
4196
4226
  return Math.min(Math.max(e, t), n);
4197
4227
  }
4198
4228
  //#endregion
4199
4229
  //#region src/components/viewer-core/listCardAsset.ts
4200
- function na(e) {
4230
+ function ca(e) {
4201
4231
  if (e) try {
4202
4232
  e.removeAttribute("src"), e.src = "";
4203
4233
  } catch {}
4204
4234
  }
4205
- function ra(e) {
4235
+ function la(e) {
4206
4236
  if (e) {
4207
4237
  try {
4208
4238
  e.currentTime = 0;
@@ -4213,12 +4243,12 @@ function ra(e) {
4213
4243
  } catch {}
4214
4244
  }
4215
4245
  }
4216
- function ia(e, t) {
4246
+ function ua(e, t) {
4217
4247
  if (t) return e.bottom > t.top && e.top < t.bottom;
4218
4248
  let n = window.innerHeight || document.documentElement.clientHeight || 0;
4219
4249
  return e.bottom > 0 && e.top < n;
4220
4250
  }
4221
- function aa(e) {
4251
+ function da(e) {
4222
4252
  if (!e) return null;
4223
4253
  try {
4224
4254
  return new URL(e, window.location.href).href;
@@ -4228,9 +4258,9 @@ function aa(e) {
4228
4258
  }
4229
4259
  //#endregion
4230
4260
  //#region src/components/viewer-core/useListCardHealthCheck.ts
4231
- function oa(e) {
4261
+ function fa(e) {
4232
4262
  let t = D(null), n = i(() => {
4233
- let t = typeof e.item.value.healthCheck?.url == "string" ? aa(e.item.value.healthCheck.url) : null;
4263
+ let t = typeof e.item.value.healthCheck?.url == "string" ? da(e.item.value.healthCheck.url) : null;
4234
4264
  return !t || t === e.attachedAssetUrl.value ? null : t;
4235
4265
  }), r = null, a = 0, o = /* @__PURE__ */ new Map();
4236
4266
  z(n, (e, n) => {
@@ -4262,7 +4292,7 @@ function oa(e) {
4262
4292
  r.refresh();
4263
4293
  return;
4264
4294
  }
4265
- r = Jt.request({
4295
+ r = Zt.request({
4266
4296
  assetType: "probe",
4267
4297
  getPriority: e.getPriority,
4268
4298
  onGrant() {
@@ -4272,7 +4302,7 @@ function oa(e) {
4272
4302
  return;
4273
4303
  }
4274
4304
  let i = ++a;
4275
- Cn(r).then((s) => {
4305
+ En(r).then((s) => {
4276
4306
  if (!(i !== a || n.value !== r)) {
4277
4307
  if (o.set(r, s ?? null), !s) {
4278
4308
  t.value = null;
@@ -4308,14 +4338,14 @@ function oa(e) {
4308
4338
  }
4309
4339
  //#endregion
4310
4340
  //#region src/components/ListCard.vue?vue&type=script&setup=true&lang.ts
4311
- var sa = ["aria-label"], ca = {
4341
+ var pa = ["aria-label"], ma = {
4312
4342
  key: 0,
4313
4343
  "data-testid": "vibe-list-card-spinner",
4314
4344
  class: "pointer-events-none absolute inset-0 z-[4] grid place-items-center bg-black/18"
4315
- }, la = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)] backdrop-blur-[18px]" }, ua = ["src", "alt"], da = ["src"], fa = ["data-kind"], pa = { class: "grid justify-items-center gap-3 px-4 text-center" }, ma = { class: "text-[0.68rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/72" }, ha = {
4345
+ }, ha = { class: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-black/45 shadow-[0_18px_40px_-18px_rgba(0,0,0,0.85)] backdrop-blur-[18px]" }, ga = ["src", "alt"], _a = ["src"], va = ["data-kind"], ya = { class: "grid justify-items-center gap-3 px-4 text-center" }, ba = { class: "text-[0.68rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/72" }, xa = {
4316
4346
  key: 4,
4317
4347
  class: "grid h-full w-full place-items-center bg-[radial-gradient(circle_at_center,rgba(255,255,255,0.08),transparent_65%),linear-gradient(180deg,rgba(255,255,255,0.04),rgba(255,255,255,0.02))]"
4318
- }, ga = { class: "inline-flex h-14 w-14 items-center justify-center border border-white/16 bg-black/20" }, _a = { class: "pointer-events-none absolute inset-0 z-[3]" }, va = /* @__PURE__ */ d({
4348
+ }, Sa = { class: "inline-flex h-14 w-14 items-center justify-center border border-white/16 bg-black/20" }, Ca = { class: "pointer-events-none absolute inset-0 z-[3]" }, wa = /* @__PURE__ */ d({
4319
4349
  __name: "ListCard",
4320
4350
  props: {
4321
4351
  active: {
@@ -4339,98 +4369,98 @@ var sa = ["aria-label"], ca = {
4339
4369
  },
4340
4370
  emits: ["open"],
4341
4371
  setup(e, { emit: t }) {
4342
- let n = e, r = t, l = i(() => br(n.item)), d = D(!1), f = D(!1), p = D(!1), m = D(l.value.kind === "fallback"), h = D(!1), g = D(null), _ = D(null), y = D(null), b = D(null), C = D(null), T = D(l.value.kind === "fallback"), E = i(() => T.value ? n.surfaceActive ? d.value ? l.value.url : null : l.value.url : null), O = i(() => n.surfaceActive && d.value && (l.value.kind === "image" || l.value.kind === "video") && !!l.value.url), j = i(() => l.value.kind === "image" && !!E.value), N = i(() => l.value.kind === "video" && !!E.value), P = oa({
4372
+ let n = e, r = t, l = i(() => Cr(n.item)), d = D(!1), f = D(!1), p = D(!1), m = D(l.value.kind === "fallback"), h = D(!1), g = D(null), _ = D(null), y = D(null), b = D(null), C = D(null), T = D(l.value.kind === "fallback"), E = i(() => T.value ? n.surfaceActive ? d.value ? l.value.url : null : l.value.url : null), O = i(() => n.surfaceActive && d.value && (l.value.kind === "image" || l.value.kind === "video") && !!l.value.url), j = i(() => l.value.kind === "image" && !!E.value), N = i(() => l.value.kind === "video" && !!E.value), P = fa({
4343
4373
  attachedAssetUrl: E,
4344
- getPriority: ce,
4374
+ getPriority: le,
4345
4375
  isInView: d,
4346
4376
  isReady: m,
4347
4377
  item: i(() => n.item),
4348
4378
  loadErrorKind: g,
4349
4379
  reportAssetError: n.reportAssetError,
4350
4380
  surfaceActive: i(() => n.surfaceActive)
4351
- }), I = i(() => P.errorKind.value ?? g.value), L = i(() => !!I.value), R = i(() => xn(I.value)), ee = i(() => O.value && !g.value && (!T.value || !m.value)), B = null, V = null, U = /* @__PURE__ */ new Set();
4381
+ }), I = i(() => P.errorKind.value ?? g.value), L = i(() => !!I.value), R = i(() => wn(I.value)), ee = i(() => O.value && !g.value && (!T.value || !m.value)), B = null, V = null, U = /* @__PURE__ */ new Set();
4352
4382
  z([E, () => l.value.kind], () => {
4353
4383
  let e = l.value.kind === "fallback";
4354
4384
  m.value = e, h.value = !1, g.value = null, e && (T.value = !0);
4355
4385
  }), z(O, () => {
4356
- q();
4386
+ K();
4357
4387
  }), z([
4358
4388
  d,
4359
4389
  m,
4360
4390
  E
4361
4391
  ], () => {
4362
- J();
4392
+ q();
4363
4393
  }), z(() => n.surfaceActive, (e) => {
4364
4394
  if (!e) {
4365
- Y(), J();
4395
+ J(), q();
4366
4396
  return;
4367
4397
  }
4368
4398
  requestAnimationFrame(() => {
4369
- X(), q(), J();
4399
+ Y(), K(), q();
4370
4400
  });
4371
4401
  }), S(() => {
4372
4402
  if (!y.value || typeof IntersectionObserver > "u") {
4373
- b.value = null, d.value = !0, q();
4403
+ b.value = null, d.value = !0, K();
4374
4404
  return;
4375
4405
  }
4376
4406
  b.value = y.value.closest("[data-testid=\"vibe-list-scroll\"]"), B = new IntersectionObserver((e) => {
4377
- for (let t of e) t.target === y.value && (n.surfaceActive && X(t), q(), J());
4407
+ for (let t of e) t.target === y.value && (n.surfaceActive && Y(t), K(), q());
4378
4408
  }, {
4379
4409
  root: b.value,
4380
4410
  threshold: [0, 1]
4381
4411
  }), B.observe(y.value);
4382
4412
  }), x(() => {
4383
- ne(), P.release(), B?.disconnect(), B = null;
4413
+ re(), P.release(), B?.disconnect(), B = null;
4384
4414
  });
4385
4415
  function te() {
4386
- le(_.value) && (m.value = !0, g.value = null, re(E.value ?? n.item.url), Y());
4416
+ ue(_.value) && (m.value = !0, g.value = null, ie(E.value ?? n.item.url), J());
4387
4417
  }
4388
4418
  async function W() {
4389
- if (!le(_.value)) return;
4419
+ if (!ue(_.value)) return;
4390
4420
  let e = E.value ?? n.item.url;
4391
4421
  m.value = !1, g.value = "generic";
4392
- let t = await Sn(e);
4422
+ let t = await Tn(e);
4393
4423
  g.value = t, n.reportAssetError?.({
4394
4424
  item: n.item,
4395
4425
  occurrenceKey: $(n.item),
4396
4426
  url: e,
4397
4427
  kind: t,
4398
4428
  surface: "grid"
4399
- }), Y();
4429
+ }), J();
4430
+ }
4431
+ function ne() {
4432
+ ue(C.value) && (h.value = !0, m.value = !0, g.value = null, ie(E.value ?? n.item.url), J(), q());
4400
4433
  }
4401
4434
  function G() {
4402
- le(C.value) && (h.value = !0, m.value = !0, g.value = null, re(E.value ?? n.item.url), Y(), J());
4435
+ ue(C.value) && (h.value || (m.value = !1));
4403
4436
  }
4404
4437
  function K() {
4405
- le(C.value) && (h.value || (m.value = !1));
4406
- }
4407
- function q() {
4408
4438
  if (l.value.kind === "fallback") {
4409
- ne(!1);
4439
+ re(!1);
4410
4440
  return;
4411
4441
  }
4412
4442
  if (!n.surfaceActive) {
4413
- Y();
4443
+ J();
4414
4444
  return;
4415
4445
  }
4416
4446
  if (!O.value) {
4417
- ne();
4447
+ re();
4418
4448
  return;
4419
4449
  }
4420
4450
  if (T.value || V) {
4421
4451
  V?.refresh();
4422
4452
  return;
4423
4453
  }
4424
- V = Jt.request({
4454
+ V = Zt.request({
4425
4455
  assetType: l.value.kind,
4426
- getPriority: ce,
4456
+ getPriority: le,
4427
4457
  onGrant() {
4428
4458
  T.value = !0, m.value = !1, g.value = null;
4429
4459
  },
4430
4460
  url: l.value.url ?? n.item.url
4431
4461
  });
4432
4462
  }
4433
- function J() {
4463
+ function q() {
4434
4464
  let e = C.value;
4435
4465
  if (!(!e || l.value.kind !== "video")) {
4436
4466
  if (I.value) {
@@ -4438,7 +4468,7 @@ var sa = ["aria-label"], ca = {
4438
4468
  return;
4439
4469
  }
4440
4470
  if (E.value && d.value && m.value) {
4441
- e.muted = !0, e.loop = !0, e.playsInline = !0, En(e);
4471
+ e.muted = !0, e.loop = !0, e.playsInline = !0, kn(e);
4442
4472
  return;
4443
4473
  }
4444
4474
  try {
@@ -4447,21 +4477,21 @@ var sa = ["aria-label"], ca = {
4447
4477
  e.pause();
4448
4478
  }
4449
4479
  }
4450
- function ne(e = !0) {
4451
- T.value = l.value.kind === "fallback", g.value = null, m.value = l.value.kind === "fallback", e && (ae(), oe()), Y();
4480
+ function re(e = !0) {
4481
+ T.value = l.value.kind === "fallback", g.value = null, m.value = l.value.kind === "fallback", e && (oe(), ce()), J();
4452
4482
  }
4453
- function Y() {
4483
+ function J() {
4454
4484
  V?.release(), V = null;
4455
4485
  }
4456
- function X(e) {
4486
+ function Y(e) {
4457
4487
  let t = y.value;
4458
4488
  if (!t) {
4459
4489
  d.value = !0;
4460
4490
  return;
4461
4491
  }
4462
- d.value = ia(e?.boundingClientRect ?? t.getBoundingClientRect(), e?.rootBounds ?? b.value?.getBoundingClientRect() ?? null);
4492
+ d.value = ua(e?.boundingClientRect ?? t.getBoundingClientRect(), e?.rootBounds ?? b.value?.getBoundingClientRect() ?? null);
4463
4493
  }
4464
- function re(e) {
4494
+ function ie(e) {
4465
4495
  if (!e) return;
4466
4496
  let t = $(n.item), r = `${t}|${e}`;
4467
4497
  U.has(r) || (U.add(r), n.reportAssetLoad?.({
@@ -4471,20 +4501,20 @@ var sa = ["aria-label"], ca = {
4471
4501
  url: e
4472
4502
  }));
4473
4503
  }
4474
- function ie() {
4504
+ function ae() {
4475
4505
  if (!R.value || P.retry()) return;
4476
4506
  let e = $(n.item);
4477
4507
  U.forEach((t) => {
4478
4508
  t.startsWith(`${e}|`) && U.delete(t);
4479
- }), g.value = null, m.value = !1, T.value = !1, Y(), q();
4480
- }
4481
- function ae() {
4482
- na(_.value);
4509
+ }), g.value = null, m.value = !1, T.value = !1, J(), K();
4483
4510
  }
4484
4511
  function oe() {
4485
- ra(C.value);
4512
+ ca(_.value);
4486
4513
  }
4487
4514
  function ce() {
4515
+ la(C.value);
4516
+ }
4517
+ function le() {
4488
4518
  let e = y.value;
4489
4519
  if (!e) return Infinity;
4490
4520
  let t = e.getBoundingClientRect();
@@ -4495,17 +4525,17 @@ var sa = ["aria-label"], ca = {
4495
4525
  let n = window.innerHeight / 2;
4496
4526
  return Math.abs((t.top + t.bottom) / 2 - n);
4497
4527
  }
4498
- function le(e) {
4499
- let t = aa(E.value);
4500
- return !e || !t ? !1 : aa("currentSrc" in e && e.currentSrc || e.getAttribute("src")) === t;
4528
+ function ue(e) {
4529
+ let t = da(E.value);
4530
+ return !e || !t ? !1 : da("currentSrc" in e && e.currentSrc || e.getAttribute("src")) === t;
4501
4531
  }
4502
- function ue() {
4532
+ function fe() {
4503
4533
  r("open");
4504
4534
  }
4505
- function fe() {
4535
+ function pe() {
4506
4536
  f.value = !0;
4507
4537
  }
4508
- function pe(e) {
4538
+ function X(e) {
4509
4539
  let t = e.relatedTarget;
4510
4540
  y.value && t instanceof Node && y.value.contains(t) || (f.value = !1);
4511
4541
  }
@@ -4514,8 +4544,8 @@ var sa = ["aria-label"], ca = {
4514
4544
  ref: y,
4515
4545
  "data-testid": "vibe-list-card-inner",
4516
4546
  class: v(["group relative h-full w-full overflow-hidden border bg-[#0a0b0f] text-[#f7f1ea] transition-[border-color,transform] duration-300", n.active ? "border-white/28" : "border-white/12 hover:border-white/24"]),
4517
- onFocusin: fe,
4518
- onFocusout: pe,
4547
+ onFocusin: pe,
4548
+ onFocusout: X,
4519
4549
  onPointerenter: t[0] ||= (e) => p.value = !0,
4520
4550
  onPointerleave: t[1] ||= (e) => p.value = !1
4521
4551
  }, [
@@ -4524,9 +4554,9 @@ var sa = ["aria-label"], ca = {
4524
4554
  "data-testid": "vibe-list-card-open",
4525
4555
  class: "absolute inset-0 z-[1] block h-full w-full cursor-pointer text-left focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-[#f7f1ea]",
4526
4556
  "aria-label": n.item.title || `Open item ${n.index + 1}`,
4527
- onClick: ue
4528
- }, null, 8, sa),
4529
- ee.value ? (w(), s("div", ca, [c("span", la, [u(F(se), {
4557
+ onClick: fe
4558
+ }, null, 8, pa),
4559
+ ee.value ? (w(), s("div", ma, [c("span", ha, [u(F(se), {
4530
4560
  class: "h-5 w-5 animate-spin stroke-[1.9] text-[#f7f1ea]/78",
4531
4561
  "aria-hidden": "true"
4532
4562
  })])])) : o("", !0),
@@ -4540,7 +4570,7 @@ var sa = ["aria-label"], ca = {
4540
4570
  class: v(["block h-full w-full object-cover transition-opacity duration-300", m.value ? "pointer-events-none opacity-100" : "pointer-events-none opacity-0"]),
4541
4571
  onLoad: te,
4542
4572
  onError: W
4543
- }, null, 42, ua)) : N.value && E.value && !L.value ? (w(), s("video", {
4573
+ }, null, 42, ga)) : N.value && E.value && !L.value ? (w(), s("video", {
4544
4574
  key: 2,
4545
4575
  ref_key: "videoRef",
4546
4576
  ref: C,
@@ -4550,64 +4580,64 @@ var sa = ["aria-label"], ca = {
4550
4580
  playsinline: "",
4551
4581
  preload: "metadata",
4552
4582
  class: v(["block h-full w-full object-cover transition-opacity duration-300", m.value ? "pointer-events-none opacity-100" : "pointer-events-none opacity-0"]),
4553
- onCanplay: G,
4583
+ onCanplay: ne,
4554
4584
  onError: W,
4555
- onLoadstart: K,
4556
- onPlaying: G,
4557
- onStalled: K,
4558
- onWaiting: K
4559
- }, null, 42, da)) : L.value ? (w(), s("div", {
4585
+ onLoadstart: G,
4586
+ onPlaying: ne,
4587
+ onStalled: G,
4588
+ onWaiting: G
4589
+ }, null, 42, _a)) : L.value ? (w(), s("div", {
4560
4590
  key: 3,
4561
4591
  "data-testid": "vibe-list-card-error",
4562
4592
  "data-kind": I.value,
4563
4593
  class: "pointer-events-none relative z-[2] grid h-full w-full place-items-center bg-[radial-gradient(circle_at_center,rgba(239,68,68,0.12),transparent_65%),linear-gradient(180deg,rgba(255,255,255,0.04),rgba(255,255,255,0.02))]"
4564
- }, [c("div", pa, [
4594
+ }, [c("div", ya, [
4565
4595
  u(F(de), {
4566
4596
  class: "h-6 w-6 stroke-[1.8] text-[#f7f1ea]/78",
4567
4597
  "aria-hidden": "true"
4568
4598
  }),
4569
- c("span", ma, M(F(bn)(I.value)), 1),
4599
+ c("span", ba, M(F(Cn)(I.value)), 1),
4570
4600
  R.value ? (w(), s("button", {
4571
4601
  key: 0,
4572
4602
  type: "button",
4573
4603
  class: "pointer-events-auto inline-flex items-center justify-center border border-white/14 bg-black/35 px-3 py-2 text-[0.62rem] font-bold uppercase tracking-[0.22em] text-[#f7f1ea]/82 backdrop-blur-[18px] transition hover:border-white/28 hover:bg-black/50",
4574
- onClick: H(ie, ["stop"])
4604
+ onClick: H(ae, ["stop"])
4575
4605
  }, " Retry ")) : o("", !0)
4576
- ])], 8, fa)) : (w(), s("div", ha, [c("div", ga, [k(e.$slots, "item-icon", {
4577
- icon: F(Gt)(n.item.type),
4606
+ ])], 8, va)) : (w(), s("div", xa, [c("div", Sa, [k(e.$slots, "item-icon", {
4607
+ icon: F(Jt)(n.item.type),
4578
4608
  item: n.item
4579
- }, () => [(w(), a(A(F(Gt)(n.item.type)), {
4609
+ }, () => [(w(), a(A(F(Jt)(n.item.type)), {
4580
4610
  class: "h-6 w-6 stroke-[1.8] text-[#f7f1ea]/78",
4581
4611
  "aria-hidden": "true"
4582
4612
  }))])])])),
4583
- c("div", _a, [k(e.$slots, "grid-item-overlay", {
4613
+ c("div", Ca, [k(e.$slots, "grid-item-overlay", {
4584
4614
  active: n.active,
4585
4615
  focused: f.value,
4586
4616
  hovered: p.value,
4587
4617
  index: n.index,
4588
4618
  item: n.item,
4589
- openFullscreen: ue
4619
+ openFullscreen: fe
4590
4620
  })])
4591
4621
  ], 34));
4592
4622
  }
4593
- }), ya = { class: "relative h-full min-h-0 bg-[radial-gradient(circle_at_top_center,rgba(255,255,255,0.04),transparent_28%),linear-gradient(180deg,#06070b,#05060a)]" }, ba = { class: "pointer-events-none absolute inset-x-0 top-0 z-[2] flex justify-end p-6" }, xa = {
4623
+ }), Ta = { class: "relative h-full min-h-0 bg-[radial-gradient(circle_at_top_center,rgba(255,255,255,0.04),transparent_28%),linear-gradient(180deg,#06070b,#05060a)]" }, Ea = { class: "pointer-events-none absolute inset-x-0 top-0 z-[2] flex justify-end p-6" }, Da = {
4594
4624
  "data-testid": "vibe-pagination",
4595
4625
  class: "inline-flex shrink-0 items-center gap-2 whitespace-nowrap border border-white/14 bg-black/40 px-3 py-2 text-[0.63rem] font-bold uppercase tracking-[0.12em] text-[#f7f1ea]/72 backdrop-blur-[18px] min-[721px]:gap-3 min-[721px]:px-4 min-[721px]:py-3 min-[721px]:text-[0.74rem] min-[721px]:tracking-[0.2em]"
4596
- }, Sa = { class: "whitespace-nowrap" }, Ca = {
4626
+ }, Oa = { class: "whitespace-nowrap" }, ka = {
4597
4627
  key: 0,
4598
4628
  class: "whitespace-nowrap border-l border-white/12 pl-2 text-[#f7f1ea]/56 min-[721px]:pl-3"
4599
- }, wa = [
4629
+ }, Aa = [
4600
4630
  "data-active",
4601
4631
  "data-index",
4602
4632
  "data-item-id",
4603
4633
  "data-occurrence-key"
4604
- ], Ta = ["data-item-id"], Ea = {
4634
+ ], ja = ["data-item-id"], Ma = {
4605
4635
  key: 0,
4606
4636
  class: "pointer-events-none absolute inset-y-0 right-0 z-[3] hidden w-8 min-[1024px]:block"
4607
- }, Da = {
4637
+ }, Na = {
4608
4638
  key: 1,
4609
4639
  class: "pointer-events-none absolute inset-x-0 bottom-0 z-[2] px-5 pb-5 sm:px-6"
4610
- }, Oa = { class: "mx-auto flex w-full justify-center" }, ka = /* @__PURE__ */ d({
4640
+ }, Pa = { class: "mx-auto flex w-full justify-center" }, Fa = /* @__PURE__ */ d({
4611
4641
  __name: "ListSurface",
4612
4642
  props: {
4613
4643
  active: {
@@ -4669,7 +4699,7 @@ var sa = ["aria-label"], ca = {
4669
4699
  "update:activeIndex"
4670
4700
  ],
4671
4701
  setup(e, { expose: n, emit: r }) {
4672
- let d = e, f = L(), p = r, m = ea({
4702
+ let d = e, f = L(), p = r, m = oa({
4673
4703
  active: N(d, "active"),
4674
4704
  allowExhaustedNextPageRefresh: N(d, "allowExhaustedNextPageRefresh"),
4675
4705
  bottomLoadBufferPx: N(d, "bottomLoadBufferPx"),
@@ -4688,11 +4718,11 @@ var sa = ["aria-label"], ca = {
4688
4718
  }
4689
4719
  });
4690
4720
  n({ autoScroll: m.autoScroll });
4691
- let h = i(() => dn({
4721
+ let h = i(() => mn({
4692
4722
  itemCount: d.items.length,
4693
4723
  loading: d.loading,
4694
4724
  phase: d.phase
4695
- })), _ = i(() => fn({
4725
+ })), _ = i(() => hn({
4696
4726
  errorMessage: d.errorMessage,
4697
4727
  hasItems: d.items.length > 0,
4698
4728
  hasNextPage: d.hasNextPage,
@@ -4705,7 +4735,7 @@ var sa = ["aria-label"], ca = {
4705
4735
  message: _.value.message,
4706
4736
  paginationDetail: d.paginationDetail,
4707
4737
  total: d.items.length
4708
- }), S = i(() => !x.value || !f["grid-status"] ? [] : f["grid-status"](x.value)), C = i(() => on(S.value)), T = i(() => d.items.length + m.leavingItems.value.length), { emptyStateProps: E, showBadgeEmptyState: D, showCustomEmptyState: A, showInlineEmptyState: j } = ln({
4738
+ }), S = i(() => !x.value || !f["grid-status"] ? [] : f["grid-status"](x.value)), C = i(() => ln(S.value)), T = i(() => d.items.length + m.leavingItems.value.length), { emptyStateProps: E, showBadgeEmptyState: D, showCustomEmptyState: A, showInlineEmptyState: j } = fn({
4709
4739
  emptyStateMode: N(d, "emptyStateMode"),
4710
4740
  itemCount: T,
4711
4741
  loading: N(d, "loading"),
@@ -4717,8 +4747,8 @@ var sa = ["aria-label"], ca = {
4717
4747
  nextBoundaryLoadProgress: e,
4718
4748
  previousBoundaryLoadProgress: t
4719
4749
  });
4720
- }, { immediate: !0 }), (e, n) => (w(), s("div", ya, [
4721
- c("div", ba, [c("span", xa, [c("span", Sa, M(F(m).paginationLabel.value), 1), d.paginationDetail ? (w(), s("span", Ca, M(d.paginationDetail), 1)) : o("", !0)])]),
4750
+ }, { immediate: !0 }), (e, n) => (w(), s("div", Ta, [
4751
+ c("div", Ea, [c("span", Da, [c("span", Oa, M(F(m).paginationLabel.value), 1), d.paginationDetail ? (w(), s("span", ka, M(d.paginationDetail), 1)) : o("", !0)])]),
4722
4752
  c("div", {
4723
4753
  ref: F(m).scrollViewportRef,
4724
4754
  "data-testid": "vibe-list-scroll",
@@ -4739,7 +4769,7 @@ var sa = ["aria-label"], ca = {
4739
4769
  "data-occurrence-key": F($)(t),
4740
4770
  class: "absolute will-change-transform",
4741
4771
  style: b(F(m).getCardStyle(n))
4742
- }, [u(va, {
4772
+ }, [u(wa, {
4743
4773
  active: n === F(m).resolvedActiveIndex.value,
4744
4774
  index: n,
4745
4775
  item: t,
@@ -4763,14 +4793,14 @@ var sa = ["aria-label"], ca = {
4763
4793
  "report-asset-load",
4764
4794
  "surface-active",
4765
4795
  "onOpen"
4766
- ])], 12, wa))), 128)),
4796
+ ])], 12, Aa))), 128)),
4767
4797
  (w(!0), s(t, null, O(F(m).leavingItems.value, (t) => (w(), s("article", {
4768
4798
  key: `leaving-${F($)(t.item)}`,
4769
4799
  "data-testid": "vibe-list-card-leaving",
4770
4800
  "data-item-id": t.item.id,
4771
4801
  class: "pointer-events-none absolute z-[2] will-change-[opacity,transform]",
4772
4802
  style: b(F(m).getLeavingCardStyle(t.item))
4773
- }, [u(va, {
4803
+ }, [u(wa, {
4774
4804
  active: !1,
4775
4805
  index: -1,
4776
4806
  item: t.item,
@@ -4785,8 +4815,8 @@ var sa = ["aria-label"], ca = {
4785
4815
  "item",
4786
4816
  "report-asset-error",
4787
4817
  "report-asset-load"
4788
- ])], 12, Ta))), 128)),
4789
- F(j) && F(E) ? (w(), a(rr, {
4818
+ ])], 12, ja))), 128)),
4819
+ F(j) && F(E) ? (w(), a(or, {
4790
4820
  key: 0,
4791
4821
  message: F(E).message,
4792
4822
  mode: F(E).mode,
@@ -4800,12 +4830,12 @@ var sa = ["aria-label"], ca = {
4800
4830
  "surface"
4801
4831
  ])) : o("", !0)
4802
4832
  ], 4)], 544),
4803
- F(m).showScrollbar.value ? (w(), s("div", Ea, [n[2] ||= c("div", { class: "absolute bottom-6 right-3 top-6 w-px bg-white/8" }, null, -1), c("div", {
4833
+ F(m).showScrollbar.value ? (w(), s("div", Ma, [n[2] ||= c("div", { class: "absolute bottom-6 right-3 top-6 w-px bg-white/8" }, null, -1), c("div", {
4804
4834
  "data-testid": "vibe-list-scrollbar-thumb",
4805
4835
  class: v(["absolute right-[0.625rem] w-1 bg-white/34 transition-[height,transform,background-color,opacity] duration-300 ease-out", d.loading ? "bg-white/52" : "bg-white/34"]),
4806
4836
  style: b(F(m).getScrollbarThumbStyle())
4807
4837
  }, null, 6)])) : o("", !0),
4808
- f["grid-footer"] ? (w(), s("div", Da, [c("div", Oa, [k(e.$slots, "grid-footer")])])) : o("", !0),
4838
+ f["grid-footer"] ? (w(), s("div", Na, [c("div", Pa, [k(e.$slots, "grid-footer")])])) : o("", !0),
4809
4839
  x.value ? (w(), s("div", {
4810
4840
  key: 2,
4811
4841
  class: v(["pointer-events-none absolute inset-x-0 bottom-0 z-[3] flex justify-center px-6", f["grid-footer"] ? "pb-24" : "pb-6"])
@@ -4814,7 +4844,7 @@ var sa = ["aria-label"], ca = {
4814
4844
  "data-testid": "vibe-grid-status-badge",
4815
4845
  class: v(["inline-flex items-center border border-white/14 bg-black/55 px-4 py-3 text-[0.7rem] font-bold uppercase tracking-[0.18em] text-[#f7f1ea]/72 backdrop-blur-[18px]", x.value.kind === "end" ? "border-amber-300/35 text-amber-200" : x.value.kind === "failed" ? "border-rose-400/45 text-rose-100" : ""])
4816
4846
  }, M(x.value.message), 3))], 2)) : o("", !0),
4817
- F(D) && F(E) ? (w(), a(rr, {
4847
+ F(D) && F(E) ? (w(), a(or, {
4818
4848
  key: 3,
4819
4849
  class: v(["z-[3]", f["grid-footer"] ? "pb-24" : "pb-6"]),
4820
4850
  message: F(E).message,
@@ -4831,13 +4861,13 @@ var sa = ["aria-label"], ca = {
4831
4861
  ])) : o("", !0)
4832
4862
  ]));
4833
4863
  }
4834
- }), Aa = ["data-surface-mode"], ja = {
4864
+ }), Ia = ["data-surface-mode"], La = {
4835
4865
  key: 1,
4836
4866
  class: "absolute left-5 top-5 z-30 border border-amber-400/45 bg-black/35 px-4 py-2 text-xs font-medium uppercase tracking-[0.24em] text-amber-100 backdrop-blur"
4837
- }, Ma = ["data-visible", "inert"], Na = ["data-visible", "inert"], Pa = {
4867
+ }, Ra = ["data-visible", "inert"], za = ["data-visible", "inert"], Ba = {
4838
4868
  key: 3,
4839
4869
  class: "relative z-[1] grid h-full w-full content-center justify-items-center gap-6 px-[clamp(2rem,4vw,3rem)] py-[clamp(2rem,4vw,3rem)] text-center"
4840
- }, Fa = /* @__PURE__ */ d({
4870
+ }, Va = /* @__PURE__ */ d({
4841
4871
  name: "VibeLayout",
4842
4872
  __name: "Layout",
4843
4873
  props: {
@@ -4905,7 +4935,7 @@ var sa = ["aria-label"], ca = {
4905
4935
  type: "button",
4906
4936
  class: "absolute left-5 top-5 z-30 inline-flex items-center border border-rose-400/55 bg-rose-500/18 px-4 py-2 text-xs font-medium uppercase tracking-[0.24em] text-white backdrop-blur transition hover:bg-rose-500/28",
4907
4937
  onClick: n[0] ||= (...e) => F(h).retryInitialLoad && F(h).retryInitialLoad(...e)
4908
- }, " Retry ")) : F(h).errorMessage.value && F(h).items.value.length > 0 ? (w(), s("div", ja, M(F(h).errorMessage.value), 1)) : o("", !0), F(h).isDesktop.value ? (w(), s(t, { key: 2 }, [u(r, {
4938
+ }, " Retry ")) : F(h).errorMessage.value && F(h).items.value.length > 0 ? (w(), s("div", La, M(F(h).errorMessage.value), 1)) : o("", !0), F(h).isDesktop.value ? (w(), s(t, { key: 2 }, [u(r, {
4909
4939
  appear: "",
4910
4940
  "enter-active-class": "transition-[opacity,transform] duration-300 ease-out",
4911
4941
  "enter-from-class": "translate-y-3 opacity-0",
@@ -4919,7 +4949,7 @@ var sa = ["aria-label"], ca = {
4919
4949
  "data-visible": F(h).surfaceMode.value === "list" ? "true" : "false",
4920
4950
  inert: F(h).surfaceMode.value !== "list",
4921
4951
  class: "absolute inset-0 z-[2]"
4922
- }, [u(ka, {
4952
+ }, [u(Fa, {
4923
4953
  ref_key: "listSurfaceRef",
4924
4954
  ref: g,
4925
4955
  active: F(h).surfaceMode.value === "list",
@@ -4993,7 +5023,7 @@ var sa = ["aria-label"], ca = {
4993
5023
  "onBoundaryLoadProgress",
4994
5024
  "onOpenFullscreen",
4995
5025
  "onUpdate:activeIndex"
4996
- ])], 8, Ma), [[R, F(h).surfaceMode.value === "list"]])]),
5026
+ ])], 8, Ra), [[R, F(h).surfaceMode.value === "list"]])]),
4997
5027
  _: 3
4998
5028
  }), u(r, {
4999
5029
  appear: "",
@@ -5009,7 +5039,7 @@ var sa = ["aria-label"], ca = {
5009
5039
  "data-visible": F(h).surfaceMode.value === "fullscreen" ? "true" : "false",
5010
5040
  inert: F(h).surfaceMode.value !== "fullscreen",
5011
5041
  class: "absolute inset-0 z-[3]"
5012
- }, [u(ai, {
5042
+ }, [u(di, {
5013
5043
  items: F(h).items.value,
5014
5044
  active: F(h).surfaceMode.value === "fullscreen",
5015
5045
  "active-index": F(h).activeIndex.value,
@@ -5052,27 +5082,32 @@ var sa = ["aria-label"], ca = {
5052
5082
  fn: B((t) => [k(e.$slots, "fullscreen-aside", y(p(t)))]),
5053
5083
  key: "2"
5054
5084
  } : void 0,
5085
+ f["fullscreen-footer"] ? {
5086
+ name: "fullscreen-footer",
5087
+ fn: B((t) => [k(e.$slots, "fullscreen-footer", y(p(t)))]),
5088
+ key: "3"
5089
+ } : void 0,
5055
5090
  f["fullscreen-header-actions"] ? {
5056
5091
  name: "fullscreen-header-actions",
5057
5092
  fn: B((t) => [k(e.$slots, "fullscreen-header-actions", y(p(t)))]),
5058
- key: "3"
5093
+ key: "4"
5059
5094
  } : void 0,
5060
5095
  f["fullscreen-status"] ? {
5061
5096
  name: "fullscreen-status",
5062
5097
  fn: B((t) => [k(e.$slots, "fullscreen-status", y(p(t)))]),
5063
- key: "4"
5098
+ key: "5"
5064
5099
  } : void 0,
5065
5100
  f["item-icon"] ? {
5066
5101
  name: "item-icon",
5067
5102
  fn: B((t) => [k(e.$slots, "item-icon", y(p(t)))]),
5068
- key: "5"
5103
+ key: "6"
5069
5104
  } : void 0
5070
- ]), 1032, /* @__PURE__ */ "items.active.active-index.error-message.fill-collected-count.fill-completed-calls.fill-loaded-count.fill-mode.fill-progress.fill-target-calls.fill-target-count.fill-total-count.loading.has-next-page.pagination-detail.phase.report-asset-error.report-asset-load.empty-state-mode.loop-fullscreen-video.show-dominant-image-tone.show-end-badge.show-status-badges.show-back-to-list.onBackToList.onUpdate:activeIndex".split("."))], 8, Na), [[R, F(h).surfaceMode.value === "fullscreen"]])]),
5105
+ ]), 1032, /* @__PURE__ */ "items.active.active-index.error-message.fill-collected-count.fill-completed-calls.fill-loaded-count.fill-mode.fill-progress.fill-target-calls.fill-target-count.fill-total-count.loading.has-next-page.pagination-detail.phase.report-asset-error.report-asset-load.empty-state-mode.loop-fullscreen-video.show-dominant-image-tone.show-end-badge.show-status-badges.show-back-to-list.onBackToList.onUpdate:activeIndex".split("."))], 8, za), [[R, F(h).surfaceMode.value === "fullscreen"]])]),
5071
5106
  _: 3
5072
- })], 64)) : F(h).items.value.length === 0 && F(h).loading.value && F(h).phase.value === "initializing" ? (w(), s("div", Pa, [u(F(se), {
5107
+ })], 64)) : F(h).items.value.length === 0 && F(h).loading.value && F(h).phase.value === "initializing" ? (w(), s("div", Ba, [u(F(se), {
5073
5108
  class: "size-10 animate-spin text-[#f7f1ea]/82",
5074
5109
  "aria-hidden": "true"
5075
- }), n[1] ||= c("p", { class: "m-0 text-[0.9rem] font-semibold uppercase tracking-[0.22em] text-[#f7f1ea]/72" }, " Loading... ", -1)])) : (w(), a(ai, {
5110
+ }), n[1] ||= c("p", { class: "m-0 text-[0.9rem] font-semibold uppercase tracking-[0.22em] text-[#f7f1ea]/72" }, " Loading... ", -1)])) : (w(), a(di, {
5076
5111
  key: 4,
5077
5112
  items: F(h).items.value,
5078
5113
  active: !0,
@@ -5116,20 +5151,25 @@ var sa = ["aria-label"], ca = {
5116
5151
  fn: B((t) => [k(e.$slots, "fullscreen-aside", y(p(t)))]),
5117
5152
  key: "2"
5118
5153
  } : void 0,
5154
+ f["fullscreen-footer"] ? {
5155
+ name: "fullscreen-footer",
5156
+ fn: B((t) => [k(e.$slots, "fullscreen-footer", y(p(t)))]),
5157
+ key: "3"
5158
+ } : void 0,
5119
5159
  f["fullscreen-header-actions"] ? {
5120
5160
  name: "fullscreen-header-actions",
5121
5161
  fn: B((t) => [k(e.$slots, "fullscreen-header-actions", y(p(t)))]),
5122
- key: "3"
5162
+ key: "4"
5123
5163
  } : void 0,
5124
5164
  f["fullscreen-status"] ? {
5125
5165
  name: "fullscreen-status",
5126
5166
  fn: B((t) => [k(e.$slots, "fullscreen-status", y(p(t)))]),
5127
- key: "4"
5167
+ key: "5"
5128
5168
  } : void 0,
5129
5169
  f["item-icon"] ? {
5130
5170
  name: "item-icon",
5131
5171
  fn: B((t) => [k(e.$slots, "item-icon", y(p(t)))]),
5132
- key: "5"
5172
+ key: "6"
5133
5173
  } : void 0
5134
5174
  ]), 1032, [
5135
5175
  "items",
@@ -5156,10 +5196,10 @@ var sa = ["aria-label"], ca = {
5156
5196
  "show-status-badges",
5157
5197
  "onBackToList",
5158
5198
  "onUpdate:activeIndex"
5159
- ]))], 8, Aa));
5199
+ ]))], 8, Ia));
5160
5200
  }
5161
- }), Ia = { install(e) {
5162
- e.component("VibeLayout", Fa);
5201
+ }), Ha = { install(e) {
5202
+ e.component("VibeLayout", Va);
5163
5203
  } };
5164
5204
  //#endregion
5165
- export { Fa as VibeLayout, Ia as VibePlugin, Ia as default };
5205
+ export { Va as VibeLayout, Ha as VibePlugin, Ha as default };