@floegence/floe-webapp-core 0.57.1 → 0.59.0
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/dist/chat.css +5 -5
- package/dist/components/chat/blocks/MarkdownMedia.d.ts +12 -0
- package/dist/components/chat/blocks/MarkdownMedia.js +164 -114
- package/dist/components/file-browser/DirectoryTree.js +7 -6
- package/dist/components/file-browser/DragPreview.js +36 -35
- package/dist/components/file-browser/FileGridView.js +110 -112
- package/dist/components/file-browser/FileIcons.d.ts +18 -17
- package/dist/components/file-browser/FileIcons.js +119 -478
- package/dist/components/file-browser/FileListView.js +1 -0
- package/dist/components/file-browser/fileIconArtwork.generated.d.ts +5 -0
- package/dist/components/file-browser/fileIconArtwork.generated.js +1450 -0
- package/dist/components/file-browser/fileIconCatalog.d.ts +26 -0
- package/dist/components/file-browser/fileIconCatalog.js +33 -0
- package/dist/components/file-browser/fileIconCatalog.json.js +4 -0
- package/dist/components/file-browser/fileIconDrawing.d.ts +2 -0
- package/dist/components/file-browser/fileIconLabels.json.js +240 -0
- package/dist/components/file-browser/index.d.ts +1 -1
- package/dist/components/ui/FileOpenPicker.js +1 -0
- package/dist/components/ui/FileSavePicker.js +1 -0
- package/dist/components/ui/FloatingWindow.js +73 -72
- package/dist/components/ui/picker/PickerBase.js +1 -0
- package/dist/context/LayoutContext.d.ts +1 -1
- package/dist/context/LayoutContext.js +10 -8
- package/dist/file-icons.css +43 -0
- package/dist/floe.css +1 -0
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/chat.css
CHANGED
|
@@ -1853,9 +1853,10 @@ pre.chat-md-code-block *::selection,
|
|
|
1853
1853
|
.chat-media-heading { min-width: 0; }
|
|
1854
1854
|
.chat-media-kind { display: none; }
|
|
1855
1855
|
.chat-media-title { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .6875rem; line-height: 1.5; color: var(--muted-foreground); }
|
|
1856
|
-
.chat-media-actions { position: absolute; top: .5rem; right: .5rem; display: flex; align-items: center; gap: .
|
|
1856
|
+
.chat-media-actions { position: absolute; top: .5rem; right: .5rem; display: flex; align-items: center; gap: .125rem; padding: .25rem; border-radius: .625rem; background: rgb(24 24 24 / .72); backdrop-filter: blur(8px); color: white; opacity: 0; transform: translateY(-2px); transition: opacity 120ms ease, transform 120ms ease; }
|
|
1857
|
+
.chat-media-actions:empty { display: none; }
|
|
1857
1858
|
.chat-media:hover .chat-media-actions, .chat-media:focus-within .chat-media-actions { opacity: 1; transform: none; }
|
|
1858
|
-
.chat-media-action { display: inline-flex; align-items: center; justify-content: center; width:
|
|
1859
|
+
.chat-media-action { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border: 0; padding: 0; border-radius: .35rem; background: transparent; color: inherit; cursor: pointer; }
|
|
1859
1860
|
.chat-media-action:hover { background: rgb(255 255 255 / .16); }
|
|
1860
1861
|
.chat-media-action svg, .chat-media-retry svg { width: .95rem; height: .95rem; }
|
|
1861
1862
|
.chat-media-action:focus-visible { outline: 2px solid white; outline-offset: -2px; }
|
|
@@ -1870,9 +1871,8 @@ pre.chat-md-code-block *::selection,
|
|
|
1870
1871
|
.chat-media-html { display: block; width: 100%; height: 22rem; border: 0; border-radius: .75rem; background: white; color-scheme: light; }
|
|
1871
1872
|
.chat-media-expanded { max-width: 100%; }
|
|
1872
1873
|
.chat-media-expanded .chat-media-html { height: min(70vh, 48rem); }
|
|
1873
|
-
.chat-media-
|
|
1874
|
-
.chat-media-
|
|
1875
|
-
.chat-media-full-image { display: block; max-width: 100%; max-height: 75vh; margin: auto; object-fit: contain; }
|
|
1874
|
+
.chat-media-preview-content { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; min-height: 0; padding: .5rem; }
|
|
1875
|
+
.chat-media-full-image { display: block; width: 100%; height: 100%; min-height: 0; object-fit: contain; }
|
|
1876
1876
|
@media (hover: none) { .chat-media-actions { opacity: 1; transform: none; } }
|
|
1877
1877
|
@media (prefers-reduced-motion: reduce) { .chat-media-actions { transition: none; } }
|
|
1878
1878
|
@media (max-width: 480px) { .chat-media-html { height: 18rem; } }
|
|
@@ -2,6 +2,8 @@ import { type Component } from 'solid-js';
|
|
|
2
2
|
import { type MarkdownMediaSource } from '../markdown/media';
|
|
3
3
|
export interface MarkdownMediaLabels {
|
|
4
4
|
image: string;
|
|
5
|
+
/** Label for opening an image in its preview window. */
|
|
6
|
+
previewImage?: string;
|
|
5
7
|
video: string;
|
|
6
8
|
audio: string;
|
|
7
9
|
html: string;
|
|
@@ -19,6 +21,16 @@ export interface ResolvedMarkdownMedia {
|
|
|
19
21
|
/** Optional host-authorized source link. */
|
|
20
22
|
openURL?: string;
|
|
21
23
|
loadHTML?: (signal: AbortSignal) => Promise<string>;
|
|
24
|
+
/** Open the image in the host's existing preview surface. */
|
|
25
|
+
preview?: {
|
|
26
|
+
label: string;
|
|
27
|
+
onSelect: () => void;
|
|
28
|
+
};
|
|
29
|
+
/** Reveal the authorized file in its containing folder. Omit for non-file resources. */
|
|
30
|
+
reveal?: {
|
|
31
|
+
label: string;
|
|
32
|
+
onSelect: () => void;
|
|
33
|
+
};
|
|
22
34
|
}
|
|
23
35
|
export interface MarkdownMediaProps {
|
|
24
36
|
source: MarkdownMediaSource;
|
|
@@ -1,142 +1,146 @@
|
|
|
1
|
-
import { use as
|
|
2
|
-
import { createSignal as
|
|
3
|
-
import {
|
|
4
|
-
import { Refresh as
|
|
5
|
-
import { cn as
|
|
6
|
-
import { sandboxedMarkdownHtml as
|
|
7
|
-
var
|
|
8
|
-
async function
|
|
9
|
-
const
|
|
10
|
-
if (!
|
|
1
|
+
import { use as A, insert as s, createComponent as o, effect as u, setAttribute as n, memo as _, className as J, template as v, delegateEvents as K } from "solid-js/web";
|
|
2
|
+
import { createSignal as x, onMount as P, onCleanup as F, createMemo as Q, createEffect as X, Switch as B, Match as w, Show as E } from "solid-js";
|
|
3
|
+
import { FloatingWindow as Y } from "../../ui/FloatingWindow.js";
|
|
4
|
+
import { Refresh as Z, FolderOpen as p, Eye as ee, Maximize as re, ExternalLink as te } from "../../icons/index.js";
|
|
5
|
+
import { cn as ae } from "../../../utils/cn.js";
|
|
6
|
+
import { sandboxedMarkdownHtml as D, safeMarkdownMediaURL as le } from "../markdown/media.js";
|
|
7
|
+
var ne = /* @__PURE__ */ v("<span class=chat-media-placeholder role=status>"), ie = /* @__PURE__ */ v("<span class=chat-media-placeholder role=status><span></span><button type=button class=chat-media-retry>"), oe = /* @__PURE__ */ v("<button type=button class=chat-media-image-button><img class=chat-media-image loading=lazy decoding=async referrerpolicy=no-referrer>", !0, !1, !1), se = /* @__PURE__ */ v("<video class=chat-media-video controls playsinline preload=metadata>"), ce = /* @__PURE__ */ v("<audio class=chat-media-audio controls preload=metadata>"), de = /* @__PURE__ */ v("<iframe class=chat-media-html sandbox=allow-scripts referrerpolicy=no-referrer>"), H = /* @__PURE__ */ v("<button type=button class=chat-media-action>"), ue = /* @__PURE__ */ v("<div class=chat-media-preview-content><img referrerpolicy=no-referrer class=chat-media-full-image>"), ve = /* @__PURE__ */ v("<span><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>"), he = /* @__PURE__ */ v('<a class=chat-media-action target=_blank rel="noopener noreferrer">');
|
|
8
|
+
async function me(a) {
|
|
9
|
+
const f = le(a.src ?? "");
|
|
10
|
+
if (!f || a.kind === "html") throw new Error("A host resolver is required");
|
|
11
11
|
return {
|
|
12
|
-
src:
|
|
13
|
-
openURL:
|
|
12
|
+
src: f,
|
|
13
|
+
openURL: f
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
const
|
|
17
|
-
let
|
|
18
|
-
const [
|
|
19
|
-
|
|
16
|
+
const $e = (a) => {
|
|
17
|
+
let f, q;
|
|
18
|
+
const [N, z] = x(!1);
|
|
19
|
+
P(() => {
|
|
20
20
|
if (typeof IntersectionObserver > "u") {
|
|
21
|
-
|
|
21
|
+
z(!0);
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
24
|
+
const i = new IntersectionObserver((g) => {
|
|
25
|
+
g.some((d) => d.isIntersecting) && (z(!0), i.disconnect());
|
|
26
26
|
}, {
|
|
27
27
|
rootMargin: "400px"
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
i.observe(f), F(() => i.disconnect());
|
|
30
30
|
});
|
|
31
|
-
const [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
const [h, I] = x(), [V, R] = x(), [k, y] = x("loading"), [W, j] = x(0), [$, S] = x(!1), m = () => a.source.title || a.labels[a.source.kind], G = Q(() => a.source), T = () => h()?.preview?.label || a.labels.previewImage || a.labels.expand, O = (i) => {
|
|
32
|
+
q = i.currentTarget;
|
|
33
|
+
const g = h()?.preview;
|
|
34
|
+
g ? g.onSelect() : S(!0);
|
|
35
|
+
};
|
|
36
|
+
return X(() => {
|
|
37
|
+
if (!N()) return;
|
|
38
|
+
const i = G(), g = a.resolve ?? me;
|
|
39
|
+
W();
|
|
40
|
+
const d = new AbortController();
|
|
41
|
+
F(() => d.abort()), I(void 0), R(void 0), y("loading"), S(!1), (async () => {
|
|
42
|
+
if (i.kind === "html" && i.html !== void 0) {
|
|
43
|
+
if (i.html.length > 1e6) throw new Error("HTML preview is too large");
|
|
44
|
+
d.signal.aborted || R(D(i.html));
|
|
41
45
|
} else {
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
if (
|
|
45
|
-
if (!
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
} else if (!
|
|
51
|
-
|
|
46
|
+
const b = await g(i, d.signal);
|
|
47
|
+
if (d.signal.aborted) return;
|
|
48
|
+
if (i.kind === "html") {
|
|
49
|
+
if (!b.loadHTML) throw new Error("HTML loader is required");
|
|
50
|
+
const M = await b.loadHTML(d.signal);
|
|
51
|
+
if (d.signal.aborted) return;
|
|
52
|
+
if (M.length > 1e6) throw new Error("HTML preview is too large");
|
|
53
|
+
R(D(M));
|
|
54
|
+
} else if (!b.src) throw new Error("Media URL is required");
|
|
55
|
+
I(b);
|
|
52
56
|
}
|
|
53
|
-
|
|
57
|
+
d.signal.aborted || y("ready");
|
|
54
58
|
})().catch(() => {
|
|
55
|
-
|
|
59
|
+
d.signal.aborted || y("error");
|
|
56
60
|
});
|
|
57
61
|
}), (() => {
|
|
58
|
-
var
|
|
59
|
-
return typeof
|
|
62
|
+
var i = ve(), g = i.firstChild, d = g.firstChild, b = d.firstChild, M = b.nextSibling, C = d.nextSibling, U = f;
|
|
63
|
+
return typeof U == "function" ? A(U, i) : f = i, s(i, o(B, {
|
|
60
64
|
get children() {
|
|
61
|
-
return [o(
|
|
65
|
+
return [o(w, {
|
|
62
66
|
get when() {
|
|
63
|
-
return
|
|
67
|
+
return k() === "loading";
|
|
64
68
|
},
|
|
65
69
|
get children() {
|
|
66
|
-
var
|
|
67
|
-
return
|
|
70
|
+
var e = ne();
|
|
71
|
+
return s(e, () => a.labels.loading), e;
|
|
68
72
|
}
|
|
69
|
-
}), o(
|
|
73
|
+
}), o(w, {
|
|
70
74
|
get when() {
|
|
71
|
-
return
|
|
75
|
+
return k() === "error";
|
|
72
76
|
},
|
|
73
77
|
get children() {
|
|
74
|
-
var
|
|
75
|
-
return
|
|
78
|
+
var e = ie(), r = e.firstChild, t = r.nextSibling;
|
|
79
|
+
return s(r, () => a.labels.unavailable), t.$$click = () => j((l) => l + 1), s(t, o(Z, {}), null), s(t, () => a.labels.retry, null), e;
|
|
76
80
|
}
|
|
77
|
-
}), o(
|
|
81
|
+
}), o(w, {
|
|
78
82
|
get when() {
|
|
79
|
-
return
|
|
83
|
+
return k() === "ready";
|
|
80
84
|
},
|
|
81
85
|
get children() {
|
|
82
|
-
return o(
|
|
86
|
+
return o(B, {
|
|
83
87
|
get children() {
|
|
84
|
-
return [o(
|
|
88
|
+
return [o(w, {
|
|
85
89
|
get when() {
|
|
86
90
|
return a.source.kind === "image";
|
|
87
91
|
},
|
|
88
92
|
get children() {
|
|
89
|
-
var
|
|
90
|
-
return
|
|
91
|
-
var
|
|
92
|
-
return
|
|
93
|
+
var e = oe(), r = e.firstChild;
|
|
94
|
+
return e.$$click = O, r.addEventListener("error", () => y("error")), u((t) => {
|
|
95
|
+
var l = `${T()}: ${m()}`, c = h()?.src, L = m();
|
|
96
|
+
return l !== t.e && n(e, "aria-label", t.e = l), c !== t.t && n(r, "src", t.t = c), L !== t.a && n(r, "alt", t.a = L), t;
|
|
93
97
|
}, {
|
|
94
98
|
e: void 0,
|
|
95
99
|
t: void 0,
|
|
96
100
|
a: void 0
|
|
97
|
-
}),
|
|
101
|
+
}), e;
|
|
98
102
|
}
|
|
99
|
-
}), o(
|
|
103
|
+
}), o(w, {
|
|
100
104
|
get when() {
|
|
101
105
|
return a.source.kind === "video";
|
|
102
106
|
},
|
|
103
107
|
get children() {
|
|
104
|
-
var
|
|
105
|
-
return
|
|
106
|
-
var
|
|
107
|
-
return
|
|
108
|
+
var e = se();
|
|
109
|
+
return e.addEventListener("error", () => y("error")), u((r) => {
|
|
110
|
+
var t = h()?.src, l = m();
|
|
111
|
+
return t !== r.e && n(e, "src", r.e = t), l !== r.t && n(e, "aria-label", r.t = l), r;
|
|
108
112
|
}, {
|
|
109
113
|
e: void 0,
|
|
110
114
|
t: void 0
|
|
111
|
-
}),
|
|
115
|
+
}), e;
|
|
112
116
|
}
|
|
113
|
-
}), o(
|
|
117
|
+
}), o(w, {
|
|
114
118
|
get when() {
|
|
115
119
|
return a.source.kind === "audio";
|
|
116
120
|
},
|
|
117
121
|
get children() {
|
|
118
|
-
var
|
|
119
|
-
return
|
|
120
|
-
var
|
|
121
|
-
return
|
|
122
|
+
var e = ce();
|
|
123
|
+
return e.addEventListener("error", () => y("error")), u((r) => {
|
|
124
|
+
var t = h()?.src, l = m();
|
|
125
|
+
return t !== r.e && n(e, "src", r.e = t), l !== r.t && n(e, "aria-label", r.t = l), r;
|
|
122
126
|
}, {
|
|
123
127
|
e: void 0,
|
|
124
128
|
t: void 0
|
|
125
|
-
}),
|
|
129
|
+
}), e;
|
|
126
130
|
}
|
|
127
|
-
}), o(
|
|
131
|
+
}), o(w, {
|
|
128
132
|
get when() {
|
|
129
133
|
return a.source.kind === "html";
|
|
130
134
|
},
|
|
131
135
|
get children() {
|
|
132
|
-
var
|
|
133
|
-
return
|
|
134
|
-
var
|
|
135
|
-
return
|
|
136
|
+
var e = de();
|
|
137
|
+
return u((r) => {
|
|
138
|
+
var t = m(), l = V();
|
|
139
|
+
return t !== r.e && n(e, "title", r.e = t), l !== r.t && n(e, "srcdoc", r.t = l), r;
|
|
136
140
|
}, {
|
|
137
141
|
e: void 0,
|
|
138
142
|
t: void 0
|
|
139
|
-
}),
|
|
143
|
+
}), e;
|
|
140
144
|
}
|
|
141
145
|
})];
|
|
142
146
|
}
|
|
@@ -144,77 +148,123 @@ const fe = (a) => {
|
|
|
144
148
|
}
|
|
145
149
|
})];
|
|
146
150
|
}
|
|
147
|
-
}),
|
|
151
|
+
}), g), s(b, () => a.labels[a.source.kind]), s(M, m), s(C, o(E, {
|
|
152
|
+
get when() {
|
|
153
|
+
return _(() => k() === "ready")() && h()?.reveal;
|
|
154
|
+
},
|
|
155
|
+
children: (e) => (() => {
|
|
156
|
+
var r = H();
|
|
157
|
+
return r.$$click = () => e().onSelect(), s(r, o(p, {})), u((t) => {
|
|
158
|
+
var l = e().label, c = e().label;
|
|
159
|
+
return l !== t.e && n(r, "aria-label", t.e = l), c !== t.t && n(r, "title", t.t = c), t;
|
|
160
|
+
}, {
|
|
161
|
+
e: void 0,
|
|
162
|
+
t: void 0
|
|
163
|
+
}), r;
|
|
164
|
+
})()
|
|
165
|
+
}), null), s(C, o(E, {
|
|
148
166
|
get when() {
|
|
149
|
-
return
|
|
167
|
+
return _(() => k() === "ready")() && a.source.kind === "image";
|
|
150
168
|
},
|
|
151
169
|
get children() {
|
|
152
|
-
var
|
|
153
|
-
return
|
|
154
|
-
var
|
|
155
|
-
return
|
|
170
|
+
var e = H();
|
|
171
|
+
return e.$$click = O, s(e, o(ee, {})), u((r) => {
|
|
172
|
+
var t = T(), l = T();
|
|
173
|
+
return t !== r.e && n(e, "aria-label", r.e = t), l !== r.t && n(e, "title", r.t = l), r;
|
|
174
|
+
}, {
|
|
175
|
+
e: void 0,
|
|
176
|
+
t: void 0
|
|
177
|
+
}), e;
|
|
178
|
+
}
|
|
179
|
+
}), null), s(C, o(E, {
|
|
180
|
+
get when() {
|
|
181
|
+
return _(() => k() === "ready")() && a.source.kind === "html";
|
|
182
|
+
},
|
|
183
|
+
get children() {
|
|
184
|
+
var e = H();
|
|
185
|
+
return e.$$click = () => S(!$()), s(e, o(re, {})), u((r) => {
|
|
186
|
+
var t = $() ? a.labels.collapse : a.labels.expand, l = $() ? a.labels.collapse : a.labels.expand, c = $();
|
|
187
|
+
return t !== r.e && n(e, "aria-label", r.e = t), l !== r.t && n(e, "title", r.t = l), c !== r.a && n(e, "aria-expanded", r.a = c), r;
|
|
156
188
|
}, {
|
|
157
189
|
e: void 0,
|
|
158
190
|
t: void 0,
|
|
159
191
|
a: void 0
|
|
160
|
-
}),
|
|
192
|
+
}), e;
|
|
161
193
|
}
|
|
162
|
-
}), null),
|
|
194
|
+
}), null), s(C, o(E, {
|
|
163
195
|
get when() {
|
|
164
|
-
return
|
|
196
|
+
return _(() => a.source.kind !== "image" && !h()?.reveal)() && h()?.openURL;
|
|
165
197
|
},
|
|
166
|
-
children: (
|
|
167
|
-
var
|
|
168
|
-
return
|
|
169
|
-
var
|
|
170
|
-
return
|
|
198
|
+
children: (e) => (() => {
|
|
199
|
+
var r = he();
|
|
200
|
+
return s(r, o(te, {})), u((t) => {
|
|
201
|
+
var l = e(), c = a.labels.open, L = a.labels.open;
|
|
202
|
+
return l !== t.e && n(r, "href", t.e = l), c !== t.t && n(r, "aria-label", t.t = c), L !== t.a && n(r, "title", t.a = L), t;
|
|
171
203
|
}, {
|
|
172
204
|
e: void 0,
|
|
173
205
|
t: void 0,
|
|
174
206
|
a: void 0
|
|
175
|
-
}),
|
|
207
|
+
}), r;
|
|
176
208
|
})()
|
|
177
|
-
}), null),
|
|
209
|
+
}), null), s(i, o(E, {
|
|
178
210
|
get when() {
|
|
179
211
|
return a.source.kind === "image";
|
|
180
212
|
},
|
|
181
213
|
get children() {
|
|
182
|
-
return o(
|
|
214
|
+
return o(Y, {
|
|
183
215
|
get open() {
|
|
184
|
-
return
|
|
216
|
+
return $();
|
|
217
|
+
},
|
|
218
|
+
onOpenChange: (e) => {
|
|
219
|
+
S(e), e || q?.focus({
|
|
220
|
+
preventScroll: !0
|
|
221
|
+
});
|
|
185
222
|
},
|
|
186
|
-
onOpenChange: E,
|
|
187
223
|
get title() {
|
|
188
|
-
return
|
|
224
|
+
return m();
|
|
225
|
+
},
|
|
226
|
+
get labels() {
|
|
227
|
+
return {
|
|
228
|
+
close: a.labels.close,
|
|
229
|
+
maximize: a.labels.expand,
|
|
230
|
+
restore: a.labels.collapse
|
|
231
|
+
};
|
|
232
|
+
},
|
|
233
|
+
defaultSize: {
|
|
234
|
+
width: 960,
|
|
235
|
+
height: 680
|
|
189
236
|
},
|
|
190
|
-
|
|
191
|
-
|
|
237
|
+
minSize: {
|
|
238
|
+
width: 280,
|
|
239
|
+
height: 240
|
|
192
240
|
},
|
|
193
|
-
|
|
194
|
-
|
|
241
|
+
compactBelow: 640,
|
|
242
|
+
class: "chat-media-preview-window",
|
|
195
243
|
get children() {
|
|
196
|
-
var
|
|
197
|
-
return
|
|
198
|
-
|
|
199
|
-
|
|
244
|
+
var e = ue(), r = e.firstChild;
|
|
245
|
+
return A((t) => queueMicrotask(() => t.closest('[role="dialog"]')?.focus({
|
|
246
|
+
preventScroll: !0
|
|
247
|
+
})), e), u((t) => {
|
|
248
|
+
var l = h()?.src, c = m();
|
|
249
|
+
return l !== t.e && n(r, "src", t.e = l), c !== t.t && n(r, "alt", t.t = c), t;
|
|
200
250
|
}, {
|
|
201
251
|
e: void 0,
|
|
202
252
|
t: void 0
|
|
203
|
-
}),
|
|
253
|
+
}), e;
|
|
204
254
|
}
|
|
205
255
|
});
|
|
206
256
|
}
|
|
207
|
-
}), null),
|
|
208
|
-
var
|
|
209
|
-
return
|
|
257
|
+
}), null), u((e) => {
|
|
258
|
+
var r = ae("chat-media", $() && a.source.kind === "html" && "chat-media-expanded", a.class), t = a.source.kind, l = m();
|
|
259
|
+
return r !== e.e && J(i, e.e = r), t !== e.t && n(i, "data-media-kind", e.t = t), l !== e.a && n(M, "title", e.a = l), e;
|
|
210
260
|
}, {
|
|
211
261
|
e: void 0,
|
|
212
262
|
t: void 0,
|
|
213
263
|
a: void 0
|
|
214
|
-
}),
|
|
264
|
+
}), i;
|
|
215
265
|
})();
|
|
216
266
|
};
|
|
217
|
-
|
|
267
|
+
K(["click"]);
|
|
218
268
|
export {
|
|
219
|
-
|
|
269
|
+
$e as MarkdownMedia
|
|
220
270
|
};
|
|
@@ -86,9 +86,9 @@ function ue(e) {
|
|
|
86
86
|
$(!1);
|
|
87
87
|
const a = e.dragContext.dragState();
|
|
88
88
|
a.isDragging && a.dropTarget?.targetPath === e.item.path && e.dragContext.setDropTarget(null, !1);
|
|
89
|
-
},
|
|
89
|
+
}, z = (t) => {
|
|
90
90
|
g.consumeClickSuppression(t) || o.navigateTo(x);
|
|
91
|
-
},
|
|
91
|
+
}, V = (t) => {
|
|
92
92
|
t.preventDefault(), t.stopPropagation(), !F() && o.showContextMenu(le({
|
|
93
93
|
x: t.clientX,
|
|
94
94
|
y: t.clientY,
|
|
@@ -96,7 +96,7 @@ function ue(e) {
|
|
|
96
96
|
items: [e.item],
|
|
97
97
|
source: "tree"
|
|
98
98
|
}));
|
|
99
|
-
},
|
|
99
|
+
}, j = () => {
|
|
100
100
|
D() && o.toggleFolder(e.item.path);
|
|
101
101
|
};
|
|
102
102
|
return (() => {
|
|
@@ -110,7 +110,7 @@ function ue(e) {
|
|
|
110
110
|
},
|
|
111
111
|
get children() {
|
|
112
112
|
var n = se();
|
|
113
|
-
return n.$$click =
|
|
113
|
+
return n.$$click = j, l(n, s(ie, {
|
|
114
114
|
class: "w-3 h-3 opacity-50"
|
|
115
115
|
})), y((c) => {
|
|
116
116
|
var m = u("flex-shrink-0 w-3.5 h-3.5 flex items-center justify-center cursor-pointer", "transition-transform duration-150", i() && "rotate-90", "focus:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-sidebar-ring"), f = i() ? "Collapse folder" : "Expand folder";
|
|
@@ -121,8 +121,8 @@ function ue(e) {
|
|
|
121
121
|
}), n;
|
|
122
122
|
}
|
|
123
123
|
}), d), X(d, Y(oe, {
|
|
124
|
-
onClick:
|
|
125
|
-
onContextMenu:
|
|
124
|
+
onClick: z,
|
|
125
|
+
onContextMenu: V,
|
|
126
126
|
onPointerDown: A,
|
|
127
127
|
onPointerMove: N,
|
|
128
128
|
onPointerUp: O,
|
|
@@ -137,6 +137,7 @@ function ue(e) {
|
|
|
137
137
|
get open() {
|
|
138
138
|
return i();
|
|
139
139
|
},
|
|
140
|
+
size: 16,
|
|
140
141
|
class: "w-4 h-4"
|
|
141
142
|
}), null), l(b, s(ne, {
|
|
142
143
|
get item() {
|