@floegence/floe-webapp-core 0.86.46 → 0.86.47

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.
@@ -54,6 +54,8 @@ export interface MarkdownMediaProps {
54
54
  labels: MarkdownMediaLabels;
55
55
  /** Replace this callback when its authorization or resource context changes. Reads inside it do not trigger reloads. */
56
56
  resolve?: (source: MarkdownMediaSource, signal: AbortSignal) => Promise<ResolvedMarkdownMedia>;
57
+ /** Positive finite deadline shared by resolution and HTML loading. Omit for no deadline. */
58
+ loadTimeoutMs?: number;
57
59
  /** Resolve and authorize a user-activated HTML link using the source's host context. */
58
60
  onOpenLink?: (source: MarkdownMediaSource, href: string, signal: AbortSignal) => void | Promise<void>;
59
61
  class?: string;
@@ -1,153 +1,181 @@
1
- import { use as z, insert as h, createComponent as i, memo as E, effect as f, setAttribute as u, className as p, template as m, delegateEvents as ee } from "solid-js/web";
2
- import { createSignal as S, onMount as te, onCleanup as j, createMemo as re, createEffect as ne, on as ae, Show as y, Switch as G, Match as _ } from "solid-js";
3
- import { HtmlPreviewCanvas as le } from "./HtmlPreviewCanvas.js";
4
- import { FloatingWindow as J } from "../../ui/FloatingWindow.js";
5
- import { Refresh as ie, FolderOpen as oe, Eye as K, ExternalLink as ce } from "../../icons/index.js";
6
- import { cn as se } from "../../../utils/cn.js";
7
- import { safeMarkdownMediaURL as de } from "../markdown/media.js";
8
- import { SandboxedHtmlFrame as Q } from "../../html-preview/SandboxedHtmlFrame.js";
9
- var ue = /* @__PURE__ */ m("<div class=chat-media-preview-content><img referrerpolicy=no-referrer class=chat-media-full-image>"), ve = /* @__PURE__ */ m("<div class=chat-media-preview-content>"), he = /* @__PURE__ */ m("<span>"), me = /* @__PURE__ */ m("<span class=chat-media-placeholder role=status>"), ge = /* @__PURE__ */ m("<span class=chat-media-placeholder role=status><span></span><button type=button class=chat-media-retry>"), be = /* @__PURE__ */ m("<button type=button class=chat-media-image-button><img class=chat-media-image loading=lazy decoding=async referrerpolicy=no-referrer>", !0, !1, !1), we = /* @__PURE__ */ m("<video class=chat-media-video controls playsinline preload=metadata>"), fe = /* @__PURE__ */ m("<audio class=chat-media-audio controls preload=metadata>"), ke = /* @__PURE__ */ m("<span class=chat-media-viewport>"), X = /* @__PURE__ */ m("<button type=button class=chat-media-action>"), $e = /* @__PURE__ */ m("<button type=button class=chat-media-action data-chat-media-action=preview>"), ye = /* @__PURE__ */ m("<span class=chat-media-header><span class=chat-media-heading><span class=chat-media-kind></span><span class=chat-media-title></span></span><span class=chat-media-actions>"), Se = /* @__PURE__ */ m('<a class=chat-media-action target=_blank rel="noopener noreferrer">');
10
- async function Le(e) {
11
- const k = de(e.src ?? "");
12
- if (!k || e.kind === "html") throw new Error("A host resolver is required");
1
+ import { use as F, insert as h, createComponent as c, memo as H, effect as k, setAttribute as v, className as ne, template as g, delegateEvents as ae } from "solid-js/web";
2
+ import { createSignal as L, onMount as le, onCleanup as K, createMemo as ie, createEffect as oe, on as ce, Show as y, Switch as Q, Match as E } from "solid-js";
3
+ import { HtmlPreviewCanvas as se } from "./HtmlPreviewCanvas.js";
4
+ import { FloatingWindow as X } from "../../ui/FloatingWindow.js";
5
+ import { Refresh as de, FolderOpen as ue, Eye as Y, ExternalLink as ve } from "../../icons/index.js";
6
+ import { cn as he } from "../../../utils/cn.js";
7
+ import { safeMarkdownMediaURL as me } from "../markdown/media.js";
8
+ import { SandboxedHtmlFrame as Z } from "../../html-preview/SandboxedHtmlFrame.js";
9
+ var ge = /* @__PURE__ */ g("<div class=chat-media-preview-content><img referrerpolicy=no-referrer class=chat-media-full-image>"), fe = /* @__PURE__ */ g("<div class=chat-media-preview-content>"), we = /* @__PURE__ */ g("<span>"), be = /* @__PURE__ */ g("<span class=chat-media-placeholder role=status>"), ke = /* @__PURE__ */ g("<span class=chat-media-placeholder role=status><span></span><button type=button class=chat-media-retry>"), $e = /* @__PURE__ */ g("<button type=button class=chat-media-image-button><img class=chat-media-image loading=lazy decoding=async referrerpolicy=no-referrer>", !0, !1, !1), ye = /* @__PURE__ */ g("<video class=chat-media-video controls playsinline preload=metadata>"), Le = /* @__PURE__ */ g("<audio class=chat-media-audio controls preload=metadata>"), Se = /* @__PURE__ */ g("<span class=chat-media-viewport>"), p = /* @__PURE__ */ g("<button type=button class=chat-media-action>"), Me = /* @__PURE__ */ g("<button type=button class=chat-media-action data-chat-media-action=preview>"), Ee = /* @__PURE__ */ g("<span class=chat-media-header><span class=chat-media-heading><span class=chat-media-kind></span><span class=chat-media-title></span></span><span class=chat-media-actions>"), _e = /* @__PURE__ */ g('<a class=chat-media-action target=_blank rel="noopener noreferrer">');
10
+ async function Te(e) {
11
+ const b = me(e.src ?? "");
12
+ if (!b || e.kind === "html") throw new Error("A host resolver is required");
13
13
  return {
14
- src: k,
15
- openURL: k
14
+ src: b,
15
+ openURL: b
16
16
  };
17
17
  }
18
- const Re = (e) => {
19
- let k, O;
20
- const [Y, I] = S(!1);
21
- te(() => {
18
+ const Fe = (e) => {
19
+ let b, _, I;
20
+ const [ee, A] = L(!1);
21
+ le(() => {
22
22
  if (typeof IntersectionObserver > "u") {
23
- I(!0);
23
+ A(!0);
24
24
  return;
25
25
  }
26
- const c = new IntersectionObserver((o) => {
27
- o.some((r) => r.isIntersecting) && (I(!0), c.disconnect());
26
+ const a = new IntersectionObserver((i) => {
27
+ i.some((r) => r.isIntersecting) && (A(!0), a.disconnect());
28
28
  }, {
29
29
  rootMargin: "400px"
30
30
  });
31
- c.observe(k), j(() => c.disconnect());
31
+ a.observe(b), K(() => a.disconnect());
32
32
  });
33
- const [g, P] = S(), [T, C] = S(), [$, L] = S("loading"), [Z, A] = S(0), [R, H] = S(!1), [q, U] = S(!1), b = () => e.source.title || e.labels[e.source.kind], F = re(() => e.source), M = () => g()?.preview?.label || (e.source.kind === "image" ? e.labels.previewImage : e.labels.previewHTMLWindow ?? "Open preview window") || e.labels.open, B = (c) => {
34
- O = c.currentTarget;
35
- const o = g()?.preview;
36
- o ? o.onSelect() : H(!0);
37
- }, W = (c) => {
38
- O = c?.currentTarget ?? k.querySelector('[aria-haspopup="menu"]') ?? void 0;
39
- const o = g()?.preview;
40
- o ? o.onSelect() : U(!0);
41
- }, D = () => {
42
- const c = e.onOpenLink, o = F();
43
- return c ? (r, n) => c(o, r, n) : void 0;
44
- }, N = () => ({
33
+ const [f, R] = L(), [U, T] = L(), [$, z] = L("loading"), [te, D] = L(0), [P, S] = L(!1), [re, C] = L(!1), w = () => e.source.title || e.labels[e.source.kind], B = ie(() => e.source, void 0, {
34
+ equals: (a, i) => a.kind === i.kind && a.src === i.src && a.html === i.html && a.title === i.title
35
+ });
36
+ let x = () => {
37
+ };
38
+ const N = (a) => {
39
+ const i = b.ownerDocument.activeElement, r = i instanceof Element && I?.closest("[role=dialog]")?.contains(i) && _?.isConnected;
40
+ a(!1), r && _?.focus({
41
+ preventScroll: !0
42
+ });
43
+ }, W = (a) => {
44
+ I = a, queueMicrotask(() => {
45
+ a.isConnected && b.ownerDocument.activeElement === _ && a.closest('[role="dialog"]')?.focus({
46
+ preventScroll: !0
47
+ });
48
+ });
49
+ }, M = () => f()?.preview?.label || (e.source.kind === "image" ? e.labels.previewImage : e.labels.previewHTMLWindow ?? "Open preview window") || e.labels.open, V = (a) => {
50
+ _ = a.currentTarget;
51
+ const i = f()?.preview;
52
+ i ? i.onSelect() : S(!0);
53
+ }, j = (a) => {
54
+ _ = a?.currentTarget ?? b.querySelector('[aria-haspopup="menu"]') ?? void 0;
55
+ const i = f()?.preview;
56
+ i ? i.onSelect() : C(!0);
57
+ }, q = () => {
58
+ const a = e.onOpenLink, i = B();
59
+ return a ? (r, t) => a(i, r, t) : void 0;
60
+ }, G = () => ({
45
61
  linkUnavailable: e.labels.linkUnavailable ?? "Opening links is unavailable in this preview.",
46
62
  anchorUnavailable: e.labels.anchorUnavailable ?? "The linked section was not found."
47
63
  });
48
- return ne(ae([Y, F, () => e.resolve, Z, () => e.htmlState], ([c, o, r]) => {
49
- if (!c) return;
50
- const n = r ?? Le, t = new AbortController();
51
- if (j(() => t.abort()), P(void 0), C(void 0), L("loading"), U(!1), o.kind !== "html" && H(!1), o.kind === "html" && e.htmlState) {
52
- C(o.html);
64
+ return oe(ce([ee, B, () => e.resolve, te, () => e.htmlState, () => e.loadTimeoutMs], ([a, i, r, , , t]) => {
65
+ if (!a) return;
66
+ const l = r ?? Te, n = new AbortController();
67
+ let u;
68
+ const s = () => {
69
+ u !== void 0 && (clearTimeout(u), u = void 0);
70
+ };
71
+ K(() => {
72
+ s(), n.abort();
73
+ }), x = () => {
74
+ n.signal.aborted || (s(), z("error"), S(!1), C(!1), R(void 0), T(void 0), n.abort());
75
+ };
76
+ const o = x;
77
+ if (R(void 0), T(void 0), z("loading"), C(!1), i.kind !== "html" && S(!1), t !== void 0 && (!Number.isFinite(t) || t <= 0)) {
78
+ o();
79
+ return;
80
+ }
81
+ if (i.kind === "html" && e.htmlState) {
82
+ T(i.html);
53
83
  return;
54
84
  }
55
- (async () => {
56
- if (o.kind === "html" && o.html !== void 0) {
57
- if (o.html.length > 1e6) throw new Error("HTML preview is too large");
58
- t.signal.aborted || C(o.html);
85
+ t !== void 0 && (u = setTimeout(o, t)), (async () => {
86
+ if (i.kind === "html" && i.html !== void 0) {
87
+ if (i.html.length > 1e6) throw new Error("HTML preview is too large");
88
+ n.signal.aborted || T(i.html);
59
89
  } else {
60
- const a = await n(o, t.signal);
61
- if (t.signal.aborted) return;
62
- if (o.kind === "html") {
63
- if (!a.loadHTML) throw new Error("HTML loader is required");
64
- const s = await a.loadHTML(t.signal);
65
- if (t.signal.aborted) return;
66
- if (s.length > 1e6) throw new Error("HTML preview is too large");
67
- C(s);
68
- } else if (!a.src) throw new Error("Media URL is required");
69
- P(a);
90
+ const d = await l(i, n.signal);
91
+ if (n.signal.aborted) return;
92
+ if (i.kind === "html") {
93
+ if (!d.loadHTML) throw new Error("HTML loader is required");
94
+ const m = await d.loadHTML(n.signal);
95
+ if (n.signal.aborted) return;
96
+ if (m.length > 1e6) throw new Error("HTML preview is too large");
97
+ T(m);
98
+ } else if (!d.src) throw new Error("Media URL is required");
99
+ R(d);
70
100
  }
71
- t.signal.aborted || L("ready");
72
- })().catch(() => {
73
- t.signal.aborted || L("error");
74
- });
101
+ n.signal.aborted || z("ready");
102
+ })().catch(o).finally(s);
75
103
  })), (() => {
76
- var c = he(), o = k;
77
- return typeof o == "function" ? z(o, c) : k = c, h(c, i(y, {
104
+ var a = we(), i = b;
105
+ return typeof i == "function" ? F(i, a) : b = a, h(a, c(y, {
78
106
  get when() {
79
107
  return e.source.kind === "html";
80
108
  },
81
109
  get fallback() {
82
110
  return [(() => {
83
- var r = ke();
84
- return h(r, i(G, {
111
+ var r = Se();
112
+ return h(r, c(Q, {
85
113
  get children() {
86
- return [i(_, {
114
+ return [c(E, {
87
115
  get when() {
88
116
  return $() === "loading";
89
117
  },
90
118
  get children() {
91
- var n = me();
92
- return h(n, () => e.labels.loading), n;
119
+ var t = be();
120
+ return h(t, () => e.labels.loading), t;
93
121
  }
94
- }), i(_, {
122
+ }), c(E, {
95
123
  get when() {
96
124
  return $() === "error";
97
125
  },
98
126
  get children() {
99
- var n = ge(), t = n.firstChild, a = t.nextSibling;
100
- return h(t, () => e.labels.unavailable), a.$$click = () => A((s) => s + 1), h(a, i(ie, {}), null), h(a, () => e.labels.retry, null), n;
127
+ var t = ke(), l = t.firstChild, n = l.nextSibling;
128
+ return h(l, () => e.labels.unavailable), n.$$click = () => D((u) => u + 1), h(n, c(de, {}), null), h(n, () => e.labels.retry, null), t;
101
129
  }
102
- }), i(_, {
130
+ }), c(E, {
103
131
  get when() {
104
132
  return $() === "ready";
105
133
  },
106
134
  get children() {
107
- return i(G, {
135
+ return c(Q, {
108
136
  get children() {
109
- return [i(_, {
137
+ return [c(E, {
110
138
  get when() {
111
139
  return e.source.kind === "image";
112
140
  },
113
141
  get children() {
114
- var n = be(), t = n.firstChild;
115
- return n.$$click = B, t.addEventListener("error", () => L("error")), f((a) => {
116
- var s = `${M()}: ${b()}`, d = g()?.src, l = b();
117
- return s !== a.e && u(n, "aria-label", a.e = s), d !== a.t && u(t, "src", a.t = d), l !== a.a && u(t, "alt", a.a = l), a;
142
+ var t = $e(), l = t.firstChild;
143
+ return t.$$click = V, l.addEventListener("error", () => x()), k((n) => {
144
+ var u = `${M()}: ${w()}`, s = f()?.src, o = w();
145
+ return u !== n.e && v(t, "aria-label", n.e = u), s !== n.t && v(l, "src", n.t = s), o !== n.a && v(l, "alt", n.a = o), n;
118
146
  }, {
119
147
  e: void 0,
120
148
  t: void 0,
121
149
  a: void 0
122
- }), n;
150
+ }), t;
123
151
  }
124
- }), i(_, {
152
+ }), c(E, {
125
153
  get when() {
126
154
  return e.source.kind === "video";
127
155
  },
128
156
  get children() {
129
- var n = we();
130
- return n.addEventListener("error", () => L("error")), f((t) => {
131
- var a = g()?.src, s = b();
132
- return a !== t.e && u(n, "src", t.e = a), s !== t.t && u(n, "aria-label", t.t = s), t;
157
+ var t = ye();
158
+ return t.addEventListener("error", () => x()), k((l) => {
159
+ var n = f()?.src, u = w();
160
+ return n !== l.e && v(t, "src", l.e = n), u !== l.t && v(t, "aria-label", l.t = u), l;
133
161
  }, {
134
162
  e: void 0,
135
163
  t: void 0
136
- }), n;
164
+ }), t;
137
165
  }
138
- }), i(_, {
166
+ }), c(E, {
139
167
  get when() {
140
168
  return e.source.kind === "audio";
141
169
  },
142
170
  get children() {
143
- var n = fe();
144
- return n.addEventListener("error", () => L("error")), f((t) => {
145
- var a = g()?.src, s = b();
146
- return a !== t.e && u(n, "src", t.e = a), s !== t.t && u(n, "aria-label", t.t = s), t;
171
+ var t = Le();
172
+ return t.addEventListener("error", () => x()), k((l) => {
173
+ var n = f()?.src, u = w();
174
+ return n !== l.e && v(t, "src", l.e = n), u !== l.t && v(t, "aria-label", l.t = u), l;
147
175
  }, {
148
176
  e: void 0,
149
177
  t: void 0
150
- }), n;
178
+ }), t;
151
179
  }
152
180
  })];
153
181
  }
@@ -157,109 +185,109 @@ const Re = (e) => {
157
185
  }
158
186
  })), r;
159
187
  })(), (() => {
160
- var r = ye(), n = r.firstChild, t = n.firstChild, a = t.nextSibling, s = n.nextSibling;
161
- return h(t, () => e.labels[e.source.kind]), h(a, b), h(s, i(y, {
188
+ var r = Ee(), t = r.firstChild, l = t.firstChild, n = l.nextSibling, u = t.nextSibling;
189
+ return h(l, () => e.labels[e.source.kind]), h(n, w), h(u, c(y, {
162
190
  get when() {
163
- return E(() => $() === "ready")() && g()?.reveal;
191
+ return H(() => $() === "ready")() && f()?.reveal;
164
192
  },
165
- children: (d) => (() => {
166
- var l = X();
167
- return l.$$click = () => d().onSelect(), h(l, i(oe, {})), f((v) => {
168
- var w = d().label, x = d().label;
169
- return w !== v.e && u(l, "aria-label", v.e = w), x !== v.t && u(l, "title", v.t = x), v;
193
+ children: (s) => (() => {
194
+ var o = p();
195
+ return o.$$click = () => s().onSelect(), h(o, c(ue, {})), k((d) => {
196
+ var m = s().label, O = s().label;
197
+ return m !== d.e && v(o, "aria-label", d.e = m), O !== d.t && v(o, "title", d.t = O), d;
170
198
  }, {
171
199
  e: void 0,
172
200
  t: void 0
173
- }), l;
201
+ }), o;
174
202
  })()
175
- }), null), h(s, i(y, {
203
+ }), null), h(u, c(y, {
176
204
  get when() {
177
- return E(() => $() === "ready")() && e.source.kind === "image";
205
+ return H(() => $() === "ready")() && e.source.kind === "image";
178
206
  },
179
207
  get children() {
180
- var d = X();
181
- return d.$$click = B, h(d, i(K, {})), f((l) => {
182
- var v = M(), w = M();
183
- return v !== l.e && u(d, "aria-label", l.e = v), w !== l.t && u(d, "title", l.t = w), l;
208
+ var s = p();
209
+ return s.$$click = V, h(s, c(Y, {})), k((o) => {
210
+ var d = M(), m = M();
211
+ return d !== o.e && v(s, "aria-label", o.e = d), m !== o.t && v(s, "title", o.t = m), o;
184
212
  }, {
185
213
  e: void 0,
186
214
  t: void 0
187
- }), d;
215
+ }), s;
188
216
  }
189
- }), null), h(s, i(y, {
217
+ }), null), h(u, c(y, {
190
218
  get when() {
191
- return E(() => $() === "ready" && e.source.kind !== "image")() && g()?.preview;
219
+ return H(() => $() === "ready" && e.source.kind !== "image")() && f()?.preview;
192
220
  },
193
221
  get children() {
194
- var d = $e();
195
- return d.$$click = W, h(d, i(K, {})), f((l) => {
196
- var v = M(), w = M();
197
- return v !== l.e && u(d, "aria-label", l.e = v), w !== l.t && u(d, "title", l.t = w), l;
222
+ var s = Me();
223
+ return s.$$click = j, h(s, c(Y, {})), k((o) => {
224
+ var d = M(), m = M();
225
+ return d !== o.e && v(s, "aria-label", o.e = d), m !== o.t && v(s, "title", o.t = m), o;
198
226
  }, {
199
227
  e: void 0,
200
228
  t: void 0
201
- }), d;
229
+ }), s;
202
230
  }
203
- }), null), h(s, i(y, {
231
+ }), null), h(u, c(y, {
204
232
  get when() {
205
- return E(() => e.source.kind !== "image" && !g()?.reveal)() && g()?.openURL;
233
+ return H(() => e.source.kind !== "image" && !f()?.reveal)() && f()?.openURL;
206
234
  },
207
- children: (d) => (() => {
208
- var l = Se();
209
- return h(l, i(ce, {})), f((v) => {
210
- var w = d(), x = e.labels.open, V = e.labels.open;
211
- return w !== v.e && u(l, "href", v.e = w), x !== v.t && u(l, "aria-label", v.t = x), V !== v.a && u(l, "title", v.a = V), v;
235
+ children: (s) => (() => {
236
+ var o = _e();
237
+ return h(o, c(ve, {})), k((d) => {
238
+ var m = s(), O = e.labels.open, J = e.labels.open;
239
+ return m !== d.e && v(o, "href", d.e = m), O !== d.t && v(o, "aria-label", d.t = O), J !== d.a && v(o, "title", d.a = J), d;
212
240
  }, {
213
241
  e: void 0,
214
242
  t: void 0,
215
243
  a: void 0
216
- }), l;
244
+ }), o;
217
245
  })()
218
- }), null), f(() => u(a, "title", b())), r;
246
+ }), null), k(() => v(n, "title", w())), r;
219
247
  })()];
220
248
  },
221
249
  get children() {
222
- return i(le, {
250
+ return c(se, {
223
251
  get state() {
224
252
  return e.htmlState ?? $();
225
253
  },
226
254
  get html() {
227
- return T() ?? e.source.html ?? "";
255
+ return U() ?? e.source.html ?? "";
228
256
  },
229
257
  get labels() {
230
258
  return e.labels;
231
259
  },
232
260
  get expanded() {
233
- return R();
261
+ return P();
234
262
  },
235
- onExpand: () => H((r) => !r),
236
- onRetry: () => A((r) => r + 1),
237
- onPreview: () => W(),
263
+ onExpand: () => S((r) => !r),
264
+ onRetry: () => D((r) => r + 1),
265
+ onPreview: () => j(),
238
266
  get previewLabel() {
239
267
  return M();
240
268
  },
241
269
  get resource() {
242
- return g();
270
+ return f();
243
271
  },
244
272
  get children() {
245
- return i(y, {
273
+ return c(y, {
246
274
  get when() {
247
- return E(() => $() === "ready")() && !e.htmlState;
275
+ return H(() => $() === "ready")() && !e.htmlState;
248
276
  },
249
277
  get children() {
250
- return i(Q, {
278
+ return c(Z, {
251
279
  class: "chat-media-html",
252
280
  get title() {
253
- return b();
281
+ return w();
254
282
  },
255
283
  get html() {
256
- return T() ?? "";
284
+ return U() ?? "";
257
285
  },
258
286
  get labels() {
259
- return N();
287
+ return G();
260
288
  },
261
289
  get onOpenLink() {
262
- return D();
290
+ return q();
263
291
  }
264
292
  });
265
293
  }
@@ -267,22 +295,18 @@ const Re = (e) => {
267
295
  }
268
296
  });
269
297
  }
270
- }), null), h(c, i(y, {
298
+ }), null), h(a, c(y, {
271
299
  get when() {
272
300
  return e.source.kind === "image";
273
301
  },
274
302
  get children() {
275
- return i(J, {
303
+ return c(X, {
276
304
  get open() {
277
- return R();
278
- },
279
- onOpenChange: (r) => {
280
- H(r), r || O?.focus({
281
- preventScroll: !0
282
- });
305
+ return P();
283
306
  },
307
+ onOpenChange: (r) => r ? S(!0) : N(S),
284
308
  get title() {
285
- return b();
309
+ return w();
286
310
  },
287
311
  get labels() {
288
312
  return {
@@ -302,12 +326,10 @@ const Re = (e) => {
302
326
  compactBelow: 640,
303
327
  class: "chat-media-preview-window",
304
328
  get children() {
305
- var r = ue(), n = r.firstChild;
306
- return z((t) => queueMicrotask(() => t.closest('[role="dialog"]')?.focus({
307
- preventScroll: !0
308
- })), r), f((t) => {
309
- var a = g()?.src, s = b();
310
- return a !== t.e && u(n, "src", t.e = a), s !== t.t && u(n, "alt", t.t = s), t;
329
+ var r = ge(), t = r.firstChild;
330
+ return F(W, r), k((l) => {
331
+ var n = f()?.src, u = w();
332
+ return n !== l.e && v(t, "src", l.e = n), u !== l.t && v(t, "alt", l.t = u), l;
311
333
  }, {
312
334
  e: void 0,
313
335
  t: void 0
@@ -315,22 +337,18 @@ const Re = (e) => {
315
337
  }
316
338
  });
317
339
  }
318
- }), null), h(c, i(y, {
340
+ }), null), h(a, c(y, {
319
341
  get when() {
320
342
  return e.source.kind === "html";
321
343
  },
322
344
  get children() {
323
- return i(J, {
345
+ return c(X, {
324
346
  get open() {
325
- return q();
326
- },
327
- onOpenChange: (r) => {
328
- U(r), r || O?.focus({
329
- preventScroll: !0
330
- });
347
+ return re();
331
348
  },
349
+ onOpenChange: (r) => r ? C(!0) : N(C),
332
350
  get title() {
333
- return b();
351
+ return w();
334
352
  },
335
353
  get labels() {
336
354
  return {
@@ -350,37 +368,35 @@ const Re = (e) => {
350
368
  compactBelow: 640,
351
369
  class: "chat-media-preview-window",
352
370
  get children() {
353
- var r = ve();
354
- return z((n) => queueMicrotask(() => n.closest('[role="dialog"]')?.focus({
355
- preventScroll: !0
356
- })), r), h(r, i(Q, {
371
+ var r = fe();
372
+ return F(W, r), h(r, c(Z, {
357
373
  class: "chat-media-html",
358
374
  get title() {
359
- return b();
375
+ return w();
360
376
  },
361
377
  get html() {
362
- return T() ?? "";
378
+ return U() ?? "";
363
379
  },
364
380
  get labels() {
365
- return N();
381
+ return G();
366
382
  },
367
383
  get onOpenLink() {
368
- return D();
384
+ return q();
369
385
  }
370
386
  })), r;
371
387
  }
372
388
  });
373
389
  }
374
- }), null), f((r) => {
375
- var n = se("chat-media", R() && e.source.kind === "html" && "chat-media-expanded", e.class), t = e.source.kind;
376
- return n !== r.e && p(c, r.e = n), t !== r.t && u(c, "data-media-kind", r.t = t), r;
390
+ }), null), k((r) => {
391
+ var t = he("chat-media", P() && e.source.kind === "html" && "chat-media-expanded", e.class), l = e.source.kind;
392
+ return t !== r.e && ne(a, r.e = t), l !== r.t && v(a, "data-media-kind", r.t = l), r;
377
393
  }, {
378
394
  e: void 0,
379
395
  t: void 0
380
- }), c;
396
+ }), a;
381
397
  })();
382
398
  };
383
- ee(["click"]);
399
+ ae(["click"]);
384
400
  export {
385
- Re as MarkdownMedia
401
+ Fe as MarkdownMedia
386
402
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/floe-webapp-core",
3
- "version": "0.86.46",
3
+ "version": "0.86.47",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",