🔧:build SSR dist and deploy

This commit is contained in:
NEO 2024-04-28 00:48:29 +08:00
parent 76c26901d7
commit c59ad6aedb
465 changed files with 214127 additions and 2 deletions

824
dist/server/chunks/chunk-bb837c1f.js vendored Normal file
View file

@ -0,0 +1,824 @@
import { openBlock, createElementBlock, createElementVNode, computed, ref, defineComponent, watchEffect, onBeforeUnmount, unref, withCtx, createTextVNode, createBlock, createVNode, isRef, createCommentVNode, toDisplayString, useSSRContext } from 'vue';
import { _ as __unplugin_components_0$1 } from './chunk-89a4876c.js';
import { a as __unplugin_components_0 } from './chunk-6003391e.js';
import { _ as __unplugin_components_3 } from './chunk-28375bc9.js';
import { a as __unplugin_components_1 } from './chunk-8109fd17.js';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
import _ from 'lodash';
import { createEventHook, useDevicesList, useUserMedia } from '@vueuse/core';
import './chunk-bb5bb4f6.js';
import './chunk-2ce6ed5e.js';
import 'fuse.js';
import 'pinia';
const _hoisted_1$6 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2$6 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12M8 9h8v10H8V9m7.5-5l-1-1h-5l-1 1H5v2h14V4h-3.5Z"
}, null, -1);
const _hoisted_3$6 = [
_hoisted_2$6
];
function render$6(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1$6, _hoisted_3$6))
}
const __unplugin_components_10 = { name: 'mdi-delete-outline', render: render$6 };
/* vite-plugin-components disabled */
const _hoisted_1$5 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2$5 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M5 20h14v-2H5m14-9h-4V3H9v6H5l7 7l7-7Z"
}, null, -1);
const _hoisted_3$5 = [
_hoisted_2$5
];
function render$5(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1$5, _hoisted_3$5))
}
const __unplugin_components_9 = { name: 'mdi-download', render: render$5 };
/* vite-plugin-components disabled */
const _hoisted_1$4 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2$4 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M19 12c0 3.86-3.14 7-7 7s-7-3.14-7-7s3.14-7 7-7s7 3.14 7 7Z"
}, null, -1);
const _hoisted_3$4 = [
_hoisted_2$4
];
function render$4(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1$4, _hoisted_3$4))
}
const __unplugin_components_8 = { name: 'mdi-record', render: render$4 };
/* vite-plugin-components disabled */
const _hoisted_1$3 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2$3 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M8 5.14v14l11-7l-11-7Z"
}, null, -1);
const _hoisted_3$3 = [
_hoisted_2$3
];
function render$3(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1$3, _hoisted_3$3))
}
const __unplugin_components_7 = { name: 'mdi-play', render: render$3 };
/* vite-plugin-components disabled */
const _hoisted_1$2 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2$2 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M14 19h4V5h-4M6 19h4V5H6v14Z"
}, null, -1);
const _hoisted_3$2 = [
_hoisted_2$2
];
function render$2(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1$2, _hoisted_3$2))
}
const __unplugin_components_6 = { name: 'mdi-pause', render: render$2 };
/* vite-plugin-components disabled */
const _hoisted_1$1 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2$1 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M17 10.5V7a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-3.5l4 4v-11l-4 4Z"
}, null, -1);
const _hoisted_3$1 = [
_hoisted_2$1
];
function render$1(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1$1, _hoisted_3$1))
}
const __unplugin_components_5 = { name: 'mdi-video', render: render$1 };
/* vite-plugin-components disabled */
const _hoisted_1 = {
viewBox: "0 0 24 24",
width: "1.2em",
height: "1.2em"
};
const _hoisted_2 = /*#__PURE__*/createElementVNode("path", {
fill: "currentColor",
d: "M4 4h3l2-2h6l2 2h3a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m8 3a5 5 0 0 0-5 5a5 5 0 0 0 5 5a5 5 0 0 0 5-5a5 5 0 0 0-5-5m0 2a3 3 0 0 1 3 3a3 3 0 0 1-3 3a3 3 0 0 1-3-3a3 3 0 0 1 3-3Z"
}, null, -1);
const _hoisted_3 = [
_hoisted_2
];
function render(_ctx, _cache) {
return (openBlock(), createElementBlock("svg", _hoisted_1, _hoisted_3))
}
const __unplugin_components_4 = { name: 'mdi-camera', render };
/* vite-plugin-components disabled */
function useMediaRecorder({ stream }) {
const isRecordingSupported = computed(() => MediaRecorder.isTypeSupported("video/webm"));
const mediaRecorder = ref(null);
const recordedChunks = ref([]);
const recordAvailable = createEventHook();
const recordingState = ref("stopped");
const createVideo = () => {
const blob = new Blob(recordedChunks.value, { type: "video/webm" });
const url = URL.createObjectURL(blob);
recordedChunks.value = [];
return url;
};
const startRecording = () => {
if (!isRecordingSupported.value) {
return;
}
if (!stream.value) {
return;
}
if (recordingState.value !== "stopped") {
return;
}
mediaRecorder.value = new MediaRecorder(stream.value, { mimeType: "video/webm" });
mediaRecorder.value.ondataavailable = (e) => {
if (e.data.size > 0) {
recordedChunks.value.push(e.data);
}
};
mediaRecorder.value.onstop = () => {
recordAvailable.trigger(createVideo());
};
if (mediaRecorder.value.state !== "inactive") {
return;
}
mediaRecorder.value.start();
recordingState.value = "recording";
};
const stopRecording = () => {
if (!isRecordingSupported.value) {
return;
}
if (!mediaRecorder.value) {
return;
}
if (recordingState.value === "stopped") {
return;
}
mediaRecorder.value.stop();
recordingState.value = "stopped";
};
const pauseRecording = () => {
if (!isRecordingSupported.value) {
return;
}
if (!mediaRecorder.value) {
return;
}
if (recordingState.value !== "recording") {
return;
}
mediaRecorder.value.pause();
recordingState.value = "paused";
};
const resumeRecording = () => {
if (!isRecordingSupported.value) {
return;
}
if (!mediaRecorder.value) {
return;
}
if (recordingState.value !== "paused") {
return;
}
mediaRecorder.value.resume();
recordingState.value = "recording";
};
return {
isRecordingSupported,
startRecording,
stopRecording,
pauseRecording,
resumeRecording,
recordingState,
onRecordAvailable: recordAvailable.on
};
}
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "camera-recorder",
__ssrInlineRender: true,
setup(__props) {
const {
videoInputs: cameras,
audioInputs: microphones,
permissionGranted,
isSupported,
ensurePermissions
} = useDevicesList({
requestPermissions: true,
constraints: { video: true, audio: true },
onUpdated() {
refreshCurrentDevices();
}
});
const video = ref();
const medias = ref([]);
const currentCamera = ref(cameras.value[0]?.deviceId);
const currentMicrophone = ref(microphones.value[0]?.deviceId);
const permissionCannotBePrompted = ref(false);
const {
stream,
start,
stop,
enabled: isMediaStreamAvailable
} = useUserMedia({
constraints: computed(() => ({
video: { deviceId: currentCamera.value },
...currentMicrophone.value ? { audio: { deviceId: currentMicrophone.value } } : {}
})),
autoSwitch: true
});
const {
isRecordingSupported,
onRecordAvailable,
startRecording,
stopRecording,
pauseRecording,
recordingState,
resumeRecording
} = useMediaRecorder({
stream
});
onRecordAvailable((value) => {
medias.value.unshift({ type: "video", value, createdAt: /* @__PURE__ */ new Date() });
});
function refreshCurrentDevices() {
if (_.isNil(currentCamera) || !cameras.value.find((i) => i.deviceId === currentCamera.value)) {
currentCamera.value = cameras.value[0]?.deviceId;
}
if (_.isNil(microphones) || !microphones.value.find((i) => i.deviceId === currentMicrophone.value)) {
currentMicrophone.value = microphones.value[0]?.deviceId;
}
}
function takeScreenshot() {
if (!video.value) {
return;
}
const canvas = document.createElement("canvas");
canvas.width = video.value.videoWidth;
canvas.height = video.value.videoHeight;
canvas.getContext("2d")?.drawImage(video.value, 0, 0);
const image = canvas.toDataURL("image/png");
medias.value.unshift({ type: "image", value: image, createdAt: /* @__PURE__ */ new Date() });
}
watchEffect(() => {
if (video.value && stream.value) {
video.value.srcObject = stream.value;
}
});
onBeforeUnmount(() => stop());
async function requestPermissions() {
try {
await ensurePermissions();
} catch (e) {
permissionCannotBePrompted.value = true;
}
}
function downloadMedia({ type, value, createdAt }) {
const link = document.createElement("a");
link.href = value;
link.download = `${type}-${createdAt.getTime()}.${type === "image" ? "png" : "webm"}`;
link.click();
}
return (_ctx, _push, _parent, _attrs) => {
const _component_c_card = __unplugin_components_1;
const _component_c_alert = __unplugin_components_3;
const _component_c_button = __unplugin_components_0;
const _component_c_select = __unplugin_components_0$1;
const _component_icon_mdi_camera = __unplugin_components_4;
const _component_icon_mdi_video = __unplugin_components_5;
const _component_icon_mdi_pause = __unplugin_components_6;
const _component_icon_mdi_play = __unplugin_components_7;
const _component_icon_mdi_record = __unplugin_components_8;
const _component_icon_mdi_download = __unplugin_components_9;
const _component_icon_mdi_delete_outline = __unplugin_components_10;
_push(`<div${ssrRenderAttrs(_attrs)}>`);
if (!unref(isSupported)) {
_push(ssrRenderComponent(_component_c_card, null, {
default: withCtx((_2, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Your browser does not support recording video from camera `);
} else {
return [
createTextVNode(" Your browser does not support recording video from camera ")
];
}
}),
_: 1
}, _parent));
} else if (!unref(permissionGranted)) {
_push(ssrRenderComponent(_component_c_card, { "text-center": "" }, {
default: withCtx((_2, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` You need to grant permission to use your camera and microphone `);
if (unref(permissionCannotBePrompted)) {
_push2(ssrRenderComponent(_component_c_alert, {
"mt-4": "",
"text-left": ""
}, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(` Your browser has blocked permission request or does not support it. You need to grant permission manually in your browser settings (usually the lock icon in the address bar). `);
} else {
return [
createTextVNode(" Your browser has blocked permission request or does not support it. You need to grant permission manually in your browser settings (usually the lock icon in the address bar). ")
];
}
}),
_: 1
}, _parent2, _scopeId));
} else {
_push2(`<div mt-4 flex justify-center${_scopeId}>`);
_push2(ssrRenderComponent(_component_c_button, { onClick: requestPermissions }, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(` Grant permission `);
} else {
return [
createTextVNode(" Grant permission ")
];
}
}),
_: 1
}, _parent2, _scopeId));
_push2(`</div>`);
}
} else {
return [
createTextVNode(" You need to grant permission to use your camera and microphone "),
unref(permissionCannotBePrompted) ? (openBlock(), createBlock(_component_c_alert, {
key: 0,
"mt-4": "",
"text-left": ""
}, {
default: withCtx(() => [
createTextVNode(" Your browser has blocked permission request or does not support it. You need to grant permission manually in your browser settings (usually the lock icon in the address bar). ")
]),
_: 1
})) : (openBlock(), createBlock("div", {
key: 1,
"mt-4": "",
flex: "",
"justify-center": ""
}, [
createVNode(_component_c_button, { onClick: requestPermissions }, {
default: withCtx(() => [
createTextVNode(" Grant permission ")
]),
_: 1
})
]))
];
}
}),
_: 1
}, _parent));
} else {
_push(ssrRenderComponent(_component_c_card, null, {
default: withCtx((_2, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div flex flex-col gap-2${_scopeId}>`);
_push2(ssrRenderComponent(_component_c_select, {
value: unref(currentCamera),
"onUpdate:value": ($event) => isRef(currentCamera) ? currentCamera.value = $event : null,
"label-position": "left",
"label-width": "60px",
label: "Video:",
options: unref(cameras).map(({ deviceId, label }) => ({ value: deviceId, label })),
placeholder: "Select camera"
}, null, _parent2, _scopeId));
if (unref(currentMicrophone) && unref(microphones).length > 0) {
_push2(ssrRenderComponent(_component_c_select, {
value: unref(currentMicrophone),
"onUpdate:value": ($event) => isRef(currentMicrophone) ? currentMicrophone.value = $event : null,
label: "Audio:",
"label-position": "left",
"label-width": "60px",
options: unref(microphones).map(({ deviceId, label }) => ({ value: deviceId, label })),
placeholder: "Select microphone"
}, null, _parent2, _scopeId));
} else {
_push2(`<!---->`);
}
_push2(`</div>`);
if (!unref(isMediaStreamAvailable)) {
_push2(`<div mt-3 flex justify-center${_scopeId}>`);
_push2(ssrRenderComponent(_component_c_button, {
type: "primary",
onClick: unref(start)
}, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(` Start webcam `);
} else {
return [
createTextVNode(" Start webcam ")
];
}
}),
_: 1
}, _parent2, _scopeId));
_push2(`</div>`);
} else {
_push2(`<div${_scopeId}><div my-2${_scopeId}><video autoplay controls playsinline max-h-full w-full${_scopeId}></video></div><div flex items-center justify-between gap-2${_scopeId}>`);
_push2(ssrRenderComponent(_component_c_button, {
disabled: !unref(isMediaStreamAvailable),
onClick: takeScreenshot
}, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(`<span mr-2${_scopeId2}>`);
_push3(ssrRenderComponent(_component_icon_mdi_camera, null, null, _parent3, _scopeId2));
_push3(`</span> Take screenshot `);
} else {
return [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_camera)
]),
createTextVNode(" Take screenshot ")
];
}
}),
_: 1
}, _parent2, _scopeId));
if (unref(isRecordingSupported)) {
_push2(`<div flex justify-center gap-2${_scopeId}>`);
if (unref(recordingState) === "stopped") {
_push2(ssrRenderComponent(_component_c_button, { onClick: unref(startRecording) }, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(`<span mr-2${_scopeId2}>`);
_push3(ssrRenderComponent(_component_icon_mdi_video, null, null, _parent3, _scopeId2));
_push3(`</span> Start recording `);
} else {
return [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_video)
]),
createTextVNode(" Start recording ")
];
}
}),
_: 1
}, _parent2, _scopeId));
} else {
_push2(`<!---->`);
}
if (unref(recordingState) === "recording") {
_push2(ssrRenderComponent(_component_c_button, { onClick: unref(pauseRecording) }, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(`<span mr-2${_scopeId2}>`);
_push3(ssrRenderComponent(_component_icon_mdi_pause, null, null, _parent3, _scopeId2));
_push3(`</span> Pause `);
} else {
return [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_pause)
]),
createTextVNode(" Pause ")
];
}
}),
_: 1
}, _parent2, _scopeId));
} else {
_push2(`<!---->`);
}
if (unref(recordingState) === "paused") {
_push2(ssrRenderComponent(_component_c_button, { onClick: unref(resumeRecording) }, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(`<span mr-2${_scopeId2}>`);
_push3(ssrRenderComponent(_component_icon_mdi_play, null, null, _parent3, _scopeId2));
_push3(`</span> Resume `);
} else {
return [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_play)
]),
createTextVNode(" Resume ")
];
}
}),
_: 1
}, _parent2, _scopeId));
} else {
_push2(`<!---->`);
}
if (unref(recordingState) !== "stopped") {
_push2(ssrRenderComponent(_component_c_button, {
type: "error",
onClick: unref(stopRecording)
}, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(`<span mr-2${_scopeId2}>`);
_push3(ssrRenderComponent(_component_icon_mdi_record, null, null, _parent3, _scopeId2));
_push3(`</span> Stop `);
} else {
return [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_record)
]),
createTextVNode(" Stop ")
];
}
}),
_: 1
}, _parent2, _scopeId));
} else {
_push2(`<!---->`);
}
_push2(`</div>`);
} else {
_push2(`<div italic op-60${_scopeId}> Video recording is not supported in your browser </div>`);
}
_push2(`</div></div>`);
}
} else {
return [
createVNode("div", {
flex: "",
"flex-col": "",
"gap-2": ""
}, [
createVNode(_component_c_select, {
value: unref(currentCamera),
"onUpdate:value": ($event) => isRef(currentCamera) ? currentCamera.value = $event : null,
"label-position": "left",
"label-width": "60px",
label: "Video:",
options: unref(cameras).map(({ deviceId, label }) => ({ value: deviceId, label })),
placeholder: "Select camera"
}, null, 8, ["value", "onUpdate:value", "options"]),
unref(currentMicrophone) && unref(microphones).length > 0 ? (openBlock(), createBlock(_component_c_select, {
key: 0,
value: unref(currentMicrophone),
"onUpdate:value": ($event) => isRef(currentMicrophone) ? currentMicrophone.value = $event : null,
label: "Audio:",
"label-position": "left",
"label-width": "60px",
options: unref(microphones).map(({ deviceId, label }) => ({ value: deviceId, label })),
placeholder: "Select microphone"
}, null, 8, ["value", "onUpdate:value", "options"])) : createCommentVNode("", true)
]),
!unref(isMediaStreamAvailable) ? (openBlock(), createBlock("div", {
key: 0,
"mt-3": "",
flex: "",
"justify-center": ""
}, [
createVNode(_component_c_button, {
type: "primary",
onClick: unref(start)
}, {
default: withCtx(() => [
createTextVNode(" Start webcam ")
]),
_: 1
}, 8, ["onClick"])
])) : (openBlock(), createBlock("div", { key: 1 }, [
createVNode("div", { "my-2": "" }, [
createVNode("video", {
ref_key: "video",
ref: video,
autoplay: "",
controls: "",
playsinline: "",
"max-h-full": "",
"w-full": ""
}, null, 512)
]),
createVNode("div", {
flex: "",
"items-center": "",
"justify-between": "",
"gap-2": ""
}, [
createVNode(_component_c_button, {
disabled: !unref(isMediaStreamAvailable),
onClick: takeScreenshot
}, {
default: withCtx(() => [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_camera)
]),
createTextVNode(" Take screenshot ")
]),
_: 1
}, 8, ["disabled"]),
unref(isRecordingSupported) ? (openBlock(), createBlock("div", {
key: 0,
flex: "",
"justify-center": "",
"gap-2": ""
}, [
unref(recordingState) === "stopped" ? (openBlock(), createBlock(_component_c_button, {
key: 0,
onClick: unref(startRecording)
}, {
default: withCtx(() => [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_video)
]),
createTextVNode(" Start recording ")
]),
_: 1
}, 8, ["onClick"])) : createCommentVNode("", true),
unref(recordingState) === "recording" ? (openBlock(), createBlock(_component_c_button, {
key: 1,
onClick: unref(pauseRecording)
}, {
default: withCtx(() => [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_pause)
]),
createTextVNode(" Pause ")
]),
_: 1
}, 8, ["onClick"])) : createCommentVNode("", true),
unref(recordingState) === "paused" ? (openBlock(), createBlock(_component_c_button, {
key: 2,
onClick: unref(resumeRecording)
}, {
default: withCtx(() => [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_play)
]),
createTextVNode(" Resume ")
]),
_: 1
}, 8, ["onClick"])) : createCommentVNode("", true),
unref(recordingState) !== "stopped" ? (openBlock(), createBlock(_component_c_button, {
key: 3,
type: "error",
onClick: unref(stopRecording)
}, {
default: withCtx(() => [
createVNode("span", { "mr-2": "" }, [
createVNode(_component_icon_mdi_record)
]),
createTextVNode(" Stop ")
]),
_: 1
}, 8, ["onClick"])) : createCommentVNode("", true)
])) : (openBlock(), createBlock("div", {
key: 1,
italic: "",
"op-60": ""
}, " Video recording is not supported in your browser "))
])
]))
];
}
}),
_: 1
}, _parent));
}
_push(`<div grid grid-cols-2 mt-5 gap-2><!--[-->`);
ssrRenderList(unref(medias), ({ type, value, createdAt }, index) => {
_push(ssrRenderComponent(_component_c_card, { key: index }, {
default: withCtx((_2, _push2, _parent2, _scopeId) => {
if (_push2) {
if (type === "image") {
_push2(`<img${ssrRenderAttr("src", value)} max-h-full w-full alt="screenshot"${_scopeId}>`);
} else {
_push2(`<video${ssrRenderAttr("src", value)} controls max-h-full w-full${_scopeId}></video>`);
}
_push2(`<div flex items-center justify-between${_scopeId}><div font-bold${_scopeId}>${ssrInterpolate(type === "image" ? "Screenshot" : "Video")}</div><div flex gap-2${_scopeId}>`);
_push2(ssrRenderComponent(_component_c_button, {
onClick: ($event) => downloadMedia({ type, value, createdAt })
}, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(ssrRenderComponent(_component_icon_mdi_download, null, null, _parent3, _scopeId2));
} else {
return [
createVNode(_component_icon_mdi_download)
];
}
}),
_: 2
}, _parent2, _scopeId));
_push2(ssrRenderComponent(_component_c_button, {
onClick: ($event) => medias.value = unref(medias).filter((_ignored, i) => i !== index)
}, {
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
if (_push3) {
_push3(ssrRenderComponent(_component_icon_mdi_delete_outline, null, null, _parent3, _scopeId2));
} else {
return [
createVNode(_component_icon_mdi_delete_outline)
];
}
}),
_: 2
}, _parent2, _scopeId));
_push2(`</div></div>`);
} else {
return [
type === "image" ? (openBlock(), createBlock("img", {
key: 0,
src: value,
"max-h-full": "",
"w-full": "",
alt: "screenshot"
}, null, 8, ["src"])) : (openBlock(), createBlock("video", {
key: 1,
src: value,
controls: "",
"max-h-full": "",
"w-full": ""
}, null, 8, ["src"])),
createVNode("div", {
flex: "",
"items-center": "",
"justify-between": ""
}, [
createVNode("div", { "font-bold": "" }, toDisplayString(type === "image" ? "Screenshot" : "Video"), 1),
createVNode("div", {
flex: "",
"gap-2": ""
}, [
createVNode(_component_c_button, {
onClick: ($event) => downloadMedia({ type, value, createdAt })
}, {
default: withCtx(() => [
createVNode(_component_icon_mdi_download)
]),
_: 2
}, 1032, ["onClick"]),
createVNode(_component_c_button, {
onClick: ($event) => medias.value = unref(medias).filter((_ignored, i) => i !== index)
}, {
default: withCtx(() => [
createVNode(_component_icon_mdi_delete_outline)
]),
_: 2
}, 1032, ["onClick"])
])
])
];
}
}),
_: 2
}, _parent));
});
_push(`<!--]--></div></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/tools/camera-recorder/camera-recorder.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };