ant-design-x-vue-next
Version:
Ant Design X for Vue — community continuation aligned with @ant-design/x
126 lines (125 loc) • 4.49 kB
JavaScript
import { defineComponent as M, useSlots as V, computed as N, createVNode as t, Fragment as D } from "vue";
import { Spin as G, Empty as $, Typography as j } from "ant-design-vue";
import { b as p } from "../chunks/module-chunk.mjs";
import k from "../_util/hooks/use-x-component-config.mjs";
import q from "../locale/useLocale.mjs";
import "../x-provider/index.mjs";
import z from "./style/index.mjs";
import H from "../x-provider/hooks/use-x-provider-context.mjs";
const ee = /* @__PURE__ */ M({
name: "AXFolderFilePreview",
__name: "FilePreview",
props: {
prefixCls: null,
style: null,
classNames: null,
styles: null,
selectedFile: {
default: () => []
},
previewRender: {
type: Function
},
fileContent: {
default: ""
},
loading: {
type: Boolean,
default: !1
},
previewTitle: {
type: [Boolean, Function]
},
getFileNode: {
type: Function
},
emptyRender: {
type: Boolean
}
},
setup(h) {
const e = h, n = V(), [P] = q("Folder"), {
getPrefixCls: E
} = H(), d = N(() => E("folder", e.prefixCls)), _ = k("folder"), [, S, L] = z(d), s = N(() => `${d.value}-preview`), B = (i = "") => {
const r = i.split(".");
return r[r.length - 1] || "";
}, I = (i) => i.toLowerCase() || "txt", X = (i, r) => t("pre", {
"data-language": r
}, [t("code", null, [i.replace(/\n$/, "")])]);
return () => {
var r, y, w;
const i = () => {
var g, F, C, R, T, x;
if (e.loading)
return t("div", {
class: p(`${s.value}-loading-container`, (g = e.classNames) == null ? void 0 : g.previewRender)
}, [t(G, null, null)]);
if (!e.selectedFile || e.selectedFile.length === 0) {
if (e.emptyRender === !1 || e.emptyRender === null)
return n.empty ? t("div", {
class: p(`${s.value}-empty-container`, (F = e.classNames) == null ? void 0 : F.previewRender)
}, [n.empty()]) : null;
const A = n.empty ? n.empty() : typeof e.emptyRender == "function" ? e.emptyRender() : e.emptyRender || t($, {
image: $.PRESENTED_IMAGE_SIMPLE,
description: P.value.selectFile
}, null);
return t("div", {
class: p(`${s.value}-empty-container`, (C = e.classNames) == null ? void 0 : C.previewRender)
}, [A]);
}
const l = (R = e.getFileNode) == null ? void 0 : R.call(e, e.selectedFile), v = (l == null ? void 0 : l.title) || e.selectedFile[e.selectedFile.length - 1], u = e.selectedFile, b = e.selectedFile[e.selectedFile.length - 1], m = I(B(b)), o = e.fileContent || "";
let a;
e.previewTitle === !1 || e.previewTitle === null ? a = null : n.previewTitle ? a = n.previewTitle({
title: v,
path: u,
content: o
}) : e.previewTitle ? a = typeof e.previewTitle == "function" ? e.previewTitle({
title: v,
path: u,
content: o
}) : e.previewTitle : a = t("div", {
class: `${s.value}-title`
}, [t("span", {
class: `${s.value}-filename`
}, [v]), t("span", {
class: `${s.value}-copy`
}, [t(j.Text, {
copyable: {
text: o
}
}, null)])]);
const f = X(o, m);
let c;
return n.preview ? c = n.preview({
content: o,
path: u,
title: l == null ? void 0 : l.title,
language: m,
originNode: f
}) : e.previewRender ? typeof e.previewRender == "function" ? c = e.previewRender({
content: o,
path: u,
title: l == null ? void 0 : l.title,
language: m
}, {
originNode: f
}) : c = e.previewRender : c = f, t(D, null, [a ? t("div", {
class: p(`${s.value}-title-wrapper`, (T = e.classNames) == null ? void 0 : T.previewTitle)
}, [a]) : null, t("div", {
class: p(`${s.value}-content`, (x = e.classNames) == null ? void 0 : x.previewRender)
}, [c])]);
};
return t("div", {
class: p(`${d.value}-preview`, (r = e.classNames) == null ? void 0 : r.filePreview, S.value, L),
style: {
...(y = _.value.styles) == null ? void 0 : y.filePreview,
...(w = e.styles) == null ? void 0 : w.filePreview,
...e.style
}
}, [i()]);
};
}
});
export {
ee as default
};