karin-plugin-kkk 2.25.0 → 2.25.2
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/CHANGELOG.md +34 -0
- package/config/default_config/app.yaml +13 -0
- package/lib/apps/admin.js +3 -3
- package/lib/apps/help.js +3 -3
- package/lib/apps/push.js +3 -3
- package/lib/apps/qrlogin.js +3 -3
- package/lib/apps/statistics.js +3 -3
- package/lib/apps/tools.js +3 -3
- package/lib/apps/update.js +3 -3
- package/lib/build-metadata.json +5 -5
- package/lib/core_chunk/{main-DjlCg9e5.js → main-Cfpmwn8o.js} +1050 -753
- package/lib/core_chunk/{template-CsOboAFj.js → template-B7RenK2I.js} +235 -4
- package/lib/core_chunk/template.d.mts +11 -1
- package/lib/core_chunk/template.js +3 -3
- package/lib/core_chunk/{vendor-9pKTNH6x.js → vendor-rZ5rQnq1.js} +39674 -39674
- package/lib/index.js +3 -3
- package/lib/karin-plugin-kkk.css +42 -0
- package/lib/root.js +1 -1
- package/lib/web.config.js +3 -3
- package/package.json +2 -2
|
@@ -1,10 +1,221 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM, r as __export } from "./rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { $ as RiStarFill, $t as
|
|
2
|
+
import { $ as RiStarFill, $t as CircleEllipsis, A as init_locale, At as Share2, B as RiLineChartFill, Bt as Info, C as init_hi, Ct as TriangleAlert, D as AiFillHeart, Dt as Smartphone, E as init_fa6, Et as Star, F as RiGroupLine, Ft as Plug2, G as RiMessage3Fill, Gt as FileText, H as RiListCheck2, Ht as Hash, I as RiHashtag, It as Play, J as RiRefreshLine, Jt as Crown, K as RiPieChart2Fill, Kt as Eye, L as RiHeart2Line, Lt as Music, M as RiArrowRightFill, Mt as Radio, N as RiBarChartFill, Nt as Quote, O as AiFillStar, Ot as Shield, P as RiBellFill, Pt as QrCode, Q as RiSparkling2Fill, Qt as CircleFadingArrowUp, R as RiHeart3Fill, Rt as MessageCircle, S as HiOutlineMenuAlt2, St as UserPlus, T as FaCommentDots, Tt as Terminal, U as RiLiveLine, Ut as Gift, V as RiLinkM, Vt as Heart, W as RiLoginCircleFill, Wt as Gamepad2, X as RiSendPlaneFill, Xt as Coins, Y as RiRobot2Fill, Yt as CornerDownLeft, Z as RiShareForwardFill, Zt as Clock, _ as init_md, _t as init_io5, an as BookOpen, at as RiVideoLine, b as TbScan, bt as Users, c as VictoryPie, cn as init_dist, ct as Markdown, d as VictoryAxis, dn as button_default, dt as init_date_fns, en as CircleCheckBig, et as RiStarLine, f as VictoryLabel, fn as HeroUIProvider, g as MdAccessTime, gn as require_react, gt as IoSearch, h as rehypeHighlight, hn as init_clsx, in as Bookmark, it as RiUserFollowLine, j as zhCN, jt as ScanLine, k as init_ai, kt as ShieldCheck, l as VictoryLine, ln as code_default, lt as LuFullscreen, m as init_rehype_highlight, mn as clsx_default, mt as format, nn as ChartColumn, nt as RiTiktokFill, o as init_es, on as Bell, ot as init_ri, p as VictoryTheme, pn as require_jsx_runtime, pt as formatDistanceToNow, q as RiQuestionFill, qt as ExternalLink, rn as Calendar, rt as RiTrophyFill, s as VictoryScatter, sn as require_server_node, st as init_react_markdown, tn as CircleAlert, tt as RiThumbUpFill, u as VictoryChart, un as chip_default, ut as init_lu, v as SiBilibili, vt as init_lucide_react, w as FaCodeBranch, wt as ThumbsUp, x as init_tb, xt as User, y as init_si, yt as Zap, z as RiHeart3Line, zt as MapPin } from "./vendor-rZ5rQnq1.js";
|
|
3
3
|
import { logger as logger$1 } from "node-karin";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
var init_main$1 = __esmMin(() => {});
|
|
8
|
+
var formatDuration$2;
|
|
9
|
+
var init_time = __esmMin(() => {
|
|
10
|
+
formatDuration$2 = (ms) => {
|
|
11
|
+
const totalSeconds = Math.max(Math.floor(ms / 1e3), 0);
|
|
12
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
13
|
+
const minutes = Math.floor(totalSeconds % 3600 / 60);
|
|
14
|
+
const seconds = totalSeconds % 60;
|
|
15
|
+
const pad = (value) => String(value).padStart(2, "0");
|
|
16
|
+
return hours > 0 ? `${pad(hours)}:${pad(minutes)}:${pad(seconds)}` : `${pad(minutes)}:${pad(seconds)}`;
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
var buildStatus;
|
|
20
|
+
var init_status = __esmMin(() => {
|
|
21
|
+
init_time();
|
|
22
|
+
buildStatus = (state) => {
|
|
23
|
+
const filePath = state.filePath || state.filename;
|
|
24
|
+
if (!state.removeCache) return {
|
|
25
|
+
statusText: `文件 ${filePath} 不会自动删除`,
|
|
26
|
+
countdownText: "不删除"
|
|
27
|
+
};
|
|
28
|
+
if (state.removed) return {
|
|
29
|
+
statusText: `文件 ${filePath} 已删除`,
|
|
30
|
+
countdownText: "00:00"
|
|
31
|
+
};
|
|
32
|
+
if (state.remainingMs === null) return {
|
|
33
|
+
statusText: `文件 ${filePath} 将在未知时间后删除`,
|
|
34
|
+
countdownText: "--:--"
|
|
35
|
+
};
|
|
36
|
+
const countdownText = formatDuration$2(state.remainingMs);
|
|
37
|
+
return {
|
|
38
|
+
statusText: `文件 ${filePath} 将在 ${countdownText} 后删除`,
|
|
39
|
+
countdownText
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}), import_jsx_runtime$42, PreviewInfoCard;
|
|
43
|
+
var init_PreviewInfoCard = __esmMin(() => {
|
|
44
|
+
__toESM(require_react(), 1);
|
|
45
|
+
init_status();
|
|
46
|
+
import_jsx_runtime$42 = __toESM(require_jsx_runtime(), 1);
|
|
47
|
+
PreviewInfoCard = ({ state }) => {
|
|
48
|
+
const status = buildStatus(state);
|
|
49
|
+
return (0, import_jsx_runtime$42.jsxs)("div", {
|
|
50
|
+
className: "relative z-10 mt-12 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",
|
|
51
|
+
style: {
|
|
52
|
+
mixBlendMode: "difference",
|
|
53
|
+
color: "#ffffff"
|
|
54
|
+
},
|
|
55
|
+
children: [(0, import_jsx_runtime$42.jsxs)("div", { children: [(0, import_jsx_runtime$42.jsx)("div", {
|
|
56
|
+
className: "text-xs uppercase tracking-[0.2em]",
|
|
57
|
+
children: "删除倒计时"
|
|
58
|
+
}), (0, import_jsx_runtime$42.jsx)("div", {
|
|
59
|
+
className: "mt-2 text-5xl font-semibold",
|
|
60
|
+
id: "preview-countdown",
|
|
61
|
+
children: status.countdownText
|
|
62
|
+
})] }), (0, import_jsx_runtime$42.jsx)("a", {
|
|
63
|
+
className: "inline-flex h-10 items-center justify-center rounded-full border border-white/50 px-4 text-sm font-medium text-white backdrop-blur",
|
|
64
|
+
href: state.videoUrl,
|
|
65
|
+
download: true,
|
|
66
|
+
children: "下载视频"
|
|
67
|
+
})]
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
}), import_jsx_runtime$41, PreviewVideoCard;
|
|
71
|
+
var init_PreviewVideoCard = __esmMin(() => {
|
|
72
|
+
__toESM(require_react(), 1);
|
|
73
|
+
import_jsx_runtime$41 = __toESM(require_jsx_runtime(), 1);
|
|
74
|
+
PreviewVideoCard = ({ videoUrl }) => (0, import_jsx_runtime$41.jsx)("div", {
|
|
75
|
+
className: "relative z-10 mt-10 w-full",
|
|
76
|
+
children: (0, import_jsx_runtime$41.jsx)("video", {
|
|
77
|
+
className: "w-full max-h-[86vh] rounded-2xl bg-black shadow-2xl",
|
|
78
|
+
controls: true,
|
|
79
|
+
preload: "metadata",
|
|
80
|
+
autoPlay: true,
|
|
81
|
+
loop: true,
|
|
82
|
+
muted: true,
|
|
83
|
+
playsInline: true,
|
|
84
|
+
src: videoUrl
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}), import_jsx_runtime$40, PreviewLayout;
|
|
88
|
+
var init_PreviewLayout = __esmMin(() => {
|
|
89
|
+
__toESM(require_react(), 1);
|
|
90
|
+
init_PreviewInfoCard();
|
|
91
|
+
init_PreviewVideoCard();
|
|
92
|
+
import_jsx_runtime$40 = __toESM(require_jsx_runtime(), 1);
|
|
93
|
+
PreviewLayout = ({ state }) => (0, import_jsx_runtime$40.jsxs)("div", {
|
|
94
|
+
className: "relative min-h-screen bg-(--preview-bg) text-(--preview-fg)",
|
|
95
|
+
children: [(0, import_jsx_runtime$40.jsxs)("div", {
|
|
96
|
+
className: "absolute inset-0 overflow-hidden",
|
|
97
|
+
children: [
|
|
98
|
+
(0, import_jsx_runtime$40.jsx)("video", {
|
|
99
|
+
className: "h-full w-full object-cover blur-3xl scale-110 saturate-150 contrast-125",
|
|
100
|
+
autoPlay: true,
|
|
101
|
+
loop: true,
|
|
102
|
+
muted: true,
|
|
103
|
+
playsInline: true,
|
|
104
|
+
preload: "metadata",
|
|
105
|
+
src: state.videoUrl
|
|
106
|
+
}),
|
|
107
|
+
(0, import_jsx_runtime$40.jsx)("div", {
|
|
108
|
+
className: "absolute inset-0 pointer-events-none opacity-[0.35] mix-blend-overlay dark:mix-blend-soft-light",
|
|
109
|
+
children: (0, import_jsx_runtime$40.jsxs)("svg", {
|
|
110
|
+
className: "h-full w-full",
|
|
111
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
112
|
+
children: [(0, import_jsx_runtime$40.jsxs)("defs", { children: [(0, import_jsx_runtime$40.jsxs)("filter", {
|
|
113
|
+
id: "previewNoise",
|
|
114
|
+
children: [
|
|
115
|
+
(0, import_jsx_runtime$40.jsx)("feTurbulence", {
|
|
116
|
+
type: "fractalNoise",
|
|
117
|
+
baseFrequency: "1.2",
|
|
118
|
+
numOctaves: "3",
|
|
119
|
+
stitchTiles: "stitch"
|
|
120
|
+
}),
|
|
121
|
+
(0, import_jsx_runtime$40.jsx)("feColorMatrix", {
|
|
122
|
+
type: "saturate",
|
|
123
|
+
values: "0"
|
|
124
|
+
}),
|
|
125
|
+
(0, import_jsx_runtime$40.jsxs)("feComponentTransfer", { children: [
|
|
126
|
+
(0, import_jsx_runtime$40.jsx)("feFuncR", {
|
|
127
|
+
type: "discrete",
|
|
128
|
+
tableValues: "0 1"
|
|
129
|
+
}),
|
|
130
|
+
(0, import_jsx_runtime$40.jsx)("feFuncG", {
|
|
131
|
+
type: "discrete",
|
|
132
|
+
tableValues: "0 1"
|
|
133
|
+
}),
|
|
134
|
+
(0, import_jsx_runtime$40.jsx)("feFuncB", {
|
|
135
|
+
type: "discrete",
|
|
136
|
+
tableValues: "0 1"
|
|
137
|
+
})
|
|
138
|
+
] }),
|
|
139
|
+
(0, import_jsx_runtime$40.jsx)("feComponentTransfer", { children: (0, import_jsx_runtime$40.jsx)("feFuncA", {
|
|
140
|
+
type: "linear",
|
|
141
|
+
slope: "2",
|
|
142
|
+
intercept: "-0.5"
|
|
143
|
+
}) })
|
|
144
|
+
]
|
|
145
|
+
}), (0, import_jsx_runtime$40.jsxs)("mask", {
|
|
146
|
+
id: "previewNoiseMask",
|
|
147
|
+
children: [(0, import_jsx_runtime$40.jsxs)("linearGradient", {
|
|
148
|
+
id: "previewNoiseGradient",
|
|
149
|
+
x1: "0%",
|
|
150
|
+
y1: "0%",
|
|
151
|
+
x2: "0%",
|
|
152
|
+
y2: "100%",
|
|
153
|
+
children: [
|
|
154
|
+
(0, import_jsx_runtime$40.jsx)("stop", {
|
|
155
|
+
offset: "0%",
|
|
156
|
+
stopColor: "white",
|
|
157
|
+
stopOpacity: "1"
|
|
158
|
+
}),
|
|
159
|
+
(0, import_jsx_runtime$40.jsx)("stop", {
|
|
160
|
+
offset: "15%",
|
|
161
|
+
stopColor: "white",
|
|
162
|
+
stopOpacity: "0.6"
|
|
163
|
+
}),
|
|
164
|
+
(0, import_jsx_runtime$40.jsx)("stop", {
|
|
165
|
+
offset: "50%",
|
|
166
|
+
stopColor: "white",
|
|
167
|
+
stopOpacity: "0.15"
|
|
168
|
+
}),
|
|
169
|
+
(0, import_jsx_runtime$40.jsx)("stop", {
|
|
170
|
+
offset: "85%",
|
|
171
|
+
stopColor: "white",
|
|
172
|
+
stopOpacity: "0.6"
|
|
173
|
+
}),
|
|
174
|
+
(0, import_jsx_runtime$40.jsx)("stop", {
|
|
175
|
+
offset: "100%",
|
|
176
|
+
stopColor: "white",
|
|
177
|
+
stopOpacity: "1"
|
|
178
|
+
})
|
|
179
|
+
]
|
|
180
|
+
}), (0, import_jsx_runtime$40.jsx)("rect", {
|
|
181
|
+
width: "100%",
|
|
182
|
+
height: "100%",
|
|
183
|
+
fill: "url(#previewNoiseGradient)"
|
|
184
|
+
})]
|
|
185
|
+
})] }), (0, import_jsx_runtime$40.jsx)("rect", {
|
|
186
|
+
width: "100%",
|
|
187
|
+
height: "100%",
|
|
188
|
+
filter: "url(#previewNoise)",
|
|
189
|
+
mask: "url(#previewNoiseMask)",
|
|
190
|
+
fill: "white"
|
|
191
|
+
})]
|
|
192
|
+
})
|
|
193
|
+
}),
|
|
194
|
+
(0, import_jsx_runtime$40.jsx)("div", { className: "absolute inset-0 bg-black/35" })
|
|
195
|
+
]
|
|
196
|
+
}), (0, import_jsx_runtime$40.jsxs)("div", {
|
|
197
|
+
className: "relative z-10 w-full px-4 py-16 sm:px-6",
|
|
198
|
+
children: [
|
|
199
|
+
(0, import_jsx_runtime$40.jsxs)("div", {
|
|
200
|
+
className: "flex flex-col gap-2",
|
|
201
|
+
style: {
|
|
202
|
+
mixBlendMode: "difference",
|
|
203
|
+
color: "#ffffff"
|
|
204
|
+
},
|
|
205
|
+
children: [(0, import_jsx_runtime$40.jsx)("h1", {
|
|
206
|
+
className: "text-2xl font-semibold",
|
|
207
|
+
children: "临时预览"
|
|
208
|
+
}), (0, import_jsx_runtime$40.jsx)("p", {
|
|
209
|
+
className: "text-sm",
|
|
210
|
+
children: "查看视频内容与删除时间"
|
|
211
|
+
})]
|
|
212
|
+
}),
|
|
213
|
+
(0, import_jsx_runtime$40.jsx)(PreviewVideoCard, { videoUrl: state.videoUrl }),
|
|
214
|
+
(0, import_jsx_runtime$40.jsx)(PreviewInfoCard, { state })
|
|
215
|
+
]
|
|
216
|
+
})]
|
|
217
|
+
});
|
|
218
|
+
});
|
|
8
219
|
var PlatformType;
|
|
9
220
|
var init_platforms = __esmMin(() => {
|
|
10
221
|
PlatformType = function(PlatformType$1) {
|
|
@@ -13574,7 +13785,7 @@ var init_DevDataManager = __esmMin(() => {
|
|
|
13574
13785
|
init_logger();
|
|
13575
13786
|
try {
|
|
13576
13787
|
if (process.env.NODE_ENV === "development") {
|
|
13577
|
-
const __dirname = fileURLToPath(new URL("data:video/mp2t;base64,
|
|
13788
|
+
const __dirname = fileURLToPath(new URL("data:video/mp2t;base64,ZXhwb3J0ICogZnJvbSAnLi9tYWluJwpleHBvcnQgeyByZWFjdFNlcnZlclJlbmRlciBhcyBkZWZhdWx0IH0gZnJvbSAnLi9tYWluJwpleHBvcnQgeyByZW5kZXJWaWRlb1ByZXZpZXdQYWdlIH0gZnJvbSAnLi9tYWluJwpleHBvcnQgKiBmcm9tICcuL3R5cGVzJwo=", "" + import.meta.url));
|
|
13578
13789
|
devDataDir = path.resolve(__dirname, "../dev-data");
|
|
13579
13790
|
} else devDataDir = "";
|
|
13580
13791
|
} catch {
|
|
@@ -13699,10 +13910,12 @@ var init_DevDataManager = __esmMin(() => {
|
|
|
13699
13910
|
}
|
|
13700
13911
|
};
|
|
13701
13912
|
});
|
|
13702
|
-
var import_react, import_server_node, PluginContainer, ComponentRendererFactory, ResourcePathManager, HtmlWrapper, SSRRender, reactServerRender;
|
|
13913
|
+
var import_react, import_server_node, PluginContainer, ComponentRendererFactory, ResourcePathManager, HtmlWrapper, SSRRender, reactServerRender, VideoPreviewApp, escapeVideoPreviewJson, renderVideoPreviewPage;
|
|
13703
13914
|
var init_main = __esmMin(() => {
|
|
13915
|
+
init_dist();
|
|
13704
13916
|
import_react = __toESM(require_react(), 1);
|
|
13705
13917
|
import_server_node = require_server_node();
|
|
13918
|
+
init_PreviewLayout();
|
|
13706
13919
|
init_ComponentAutoRegistry();
|
|
13707
13920
|
init_DevDataManager();
|
|
13708
13921
|
init_logger();
|
|
@@ -14008,6 +14221,24 @@ var init_main = __esmMin(() => {
|
|
|
14008
14221
|
if (process.env.NODE_ENV === "development") DevDataManager.saveRenderData(request.templateType, request.templateName, request.data);
|
|
14009
14222
|
return result;
|
|
14010
14223
|
};
|
|
14224
|
+
VideoPreviewApp = ({ state }) => import_react.createElement(HeroUIProvider, null, import_react.createElement(PreviewLayout, { state }));
|
|
14225
|
+
escapeVideoPreviewJson = (data) => JSON.stringify(data).replace(/</g, "\\u003c");
|
|
14226
|
+
renderVideoPreviewPage = (options) => {
|
|
14227
|
+
const serverNow = Date.now();
|
|
14228
|
+
const remainingMs = options.removeCache && options.expireAt ? Math.max(options.expireAt - serverNow, 0) : null;
|
|
14229
|
+
const state = {
|
|
14230
|
+
...options,
|
|
14231
|
+
eventsUrl: options.eventsUrl ?? "",
|
|
14232
|
+
serverNow,
|
|
14233
|
+
remainingMs,
|
|
14234
|
+
removed: false
|
|
14235
|
+
};
|
|
14236
|
+
const appHtml = (0, import_server_node.renderToString)(import_react.createElement(VideoPreviewApp, { state }));
|
|
14237
|
+
const serializedState = escapeVideoPreviewJson(state);
|
|
14238
|
+
const { cssDir } = new ResourcePathManager().getResourcePaths();
|
|
14239
|
+
const cssFilePath = path.join(cssDir, "karin-plugin-kkk.css");
|
|
14240
|
+
return `<!DOCTYPE html>\n<html lang="zh-CN">\n<head>\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <title>临时预览</title>\n <style>\n * { box-sizing: border-box; }\n :root { --preview-bg: #ffffff; --preview-fg: #0f172a; --preview-muted: #64748b; }\n @media (prefers-color-scheme: dark) {\n :root { --preview-bg: #050505; --preview-fg: #e2e8f0; --preview-muted: #94a3b8; }\n }\n body { margin: 0; font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--preview-bg); color: var(--preview-fg); }\n .preview-noise { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.25'/%3E%3C/svg%3E"); mix-blend-mode: soft-light; opacity: 0.8; }\n @media (max-width: 720px) {\n .max-w-6xl { padding-left: 16px; padding-right: 16px; }\n }\n </style>\n <style>${fs.existsSync(cssFilePath) ? fs.readFileSync(cssFilePath, "utf-8") : ""}</style>\n</head>\n<body>\n <div id="app">${appHtml}</div>\n <script>\n window.__VIDEO_PREVIEW__=${serializedState};\n (() => {\n const state = window.__VIDEO_PREVIEW__ || {};\n const countdownEl = document.getElementById('preview-countdown');\n if (!countdownEl) return;\n const format = (ms) => {\n const totalSeconds = Math.max(Math.floor(ms / 1000), 0);\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n const pad = (value) => String(value).padStart(2, '0');\n return hours > 0 ? pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) : pad(minutes) + ':' + pad(seconds);\n };\n const update = (payload) => {\n if (!payload.removeCache) {\n countdownEl.textContent = '不删除';\n return;\n }\n if (payload.removed) {\n countdownEl.textContent = '00:00';\n return;\n }\n const remainingMs = typeof payload.remainingMs === 'number'\n ? payload.remainingMs\n : (payload.expireAt ? Math.max(payload.expireAt - (payload.serverNow || Date.now()), 0) : null);\n if (remainingMs === null) {\n countdownEl.textContent = '--:--';\n return;\n }\n countdownEl.textContent = format(remainingMs);\n };\n update(state);\n if (state.eventsUrl) {\n const source = new EventSource(state.eventsUrl);\n source.onmessage = (event) => {\n try {\n update(JSON.parse(event.data));\n } catch {}\n };\n }\n })();\n <\/script>\n</body>\n</html>`;
|
|
14241
|
+
};
|
|
14011
14242
|
});
|
|
14012
14243
|
var init_types = __esmMin(() => {});
|
|
14013
14244
|
var init_client = __esmMin(() => {
|
|
@@ -14019,4 +14250,4 @@ var init_client = __esmMin(() => {
|
|
|
14019
14250
|
init_client();
|
|
14020
14251
|
init_client();
|
|
14021
14252
|
var template_default = reactServerRender;
|
|
14022
|
-
export { init_client as n, reactServerRender as r, template_default as t };
|
|
14253
|
+
export { renderVideoPreviewPage as i, init_client as n, reactServerRender as r, template_default as t };
|
|
@@ -2082,5 +2082,15 @@ interface ReactServerRenderOptions<K extends keyof DataTypeMap> {
|
|
|
2082
2082
|
* ```
|
|
2083
2083
|
*/
|
|
2084
2084
|
declare const reactServerRender: <K extends keyof DataTypeMap>(options: ReactServerRenderOptions<K>) => Promise<RenderResponse>;
|
|
2085
|
+
type VideoPreviewRenderOptions = {
|
|
2086
|
+
filename: string;
|
|
2087
|
+
filePath: string;
|
|
2088
|
+
videoUrl: string;
|
|
2089
|
+
removeCache: boolean;
|
|
2090
|
+
createdAt: number;
|
|
2091
|
+
expireAt?: number;
|
|
2092
|
+
eventsUrl?: string;
|
|
2093
|
+
};
|
|
2094
|
+
declare const renderVideoPreviewPage: (options: VideoPreviewRenderOptions) => string;
|
|
2085
2095
|
//#endregion
|
|
2086
|
-
export { BaseComponentProps, type DataTypeMap, DynamicRenderPath, ExtractDataTypeFromPath, type Plugin, type PluginContext, type PluginFactory, QRCodeSectionProps, type ReactServerRenderOptions, RenderRequest, RenderResponse, type TypedRenderRequest, reactServerRender as default, reactServerRender };
|
|
2096
|
+
export { BaseComponentProps, type DataTypeMap, DynamicRenderPath, ExtractDataTypeFromPath, type Plugin, type PluginContext, type PluginFactory, QRCodeSectionProps, type ReactServerRenderOptions, RenderRequest, RenderResponse, type TypedRenderRequest, reactServerRender as default, reactServerRender, renderVideoPreviewPage };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "./rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import "./vendor-
|
|
3
|
-
import { r as reactServerRender, t as template_default } from "./template-
|
|
4
|
-
export { template_default as default, reactServerRender };
|
|
2
|
+
import "./vendor-rZ5rQnq1.js";
|
|
3
|
+
import { i as renderVideoPreviewPage, r as reactServerRender, t as template_default } from "./template-B7RenK2I.js";
|
|
4
|
+
export { template_default as default, reactServerRender, renderVideoPreviewPage };
|