@stihl-design-system/components
Version:
Welcome to the STIHL Design System react component library.
162 lines (161 loc) • 6.16 kB
JavaScript
"use client";
import { jsx as o, jsxs as I } from "react/jsx-runtime";
import { d as P } from "./chunks/index.CgTHIF3K.js";
import { D as k } from "./chunks/Button.Cf1CKq8N.js";
import { D as u } from "./chunks/Icon.NSsVrYeq.js";
import { D as S } from "./chunks/SystemFeedback.CyGbUCzT.js";
import { c as j } from "./chunks/index.CEyLAtio.js";
import './assets/filelist.H_wKcSPX.css';const F = new RegExp("([\\p{Ll}\\d])(\\p{Lu})", "gu"), z = new RegExp("(\\p{Lu})([\\p{Lu}][\\p{Ll}])", "gu"), y = new RegExp("(\\d)\\p{Ll}|(\\p{L})\\d", "u"), C = /[^\p{L}\d]+/giu, E = "$1\0$2", N = "";
function R(t) {
let e = t.trim();
e = e.replace(F, E).replace(z, E), e = e.replace(C, "\0");
let a = 0, s = e.length;
for (; e.charAt(a) === "\0"; )
a++;
if (a === s)
return [];
for (; e.charAt(s - 1) === "\0"; )
s--;
return e.slice(a, s).split(/\0/g);
}
function A(t) {
const e = R(t);
for (let a = 0; a < e.length; a++) {
const s = e[a], c = y.exec(s);
if (c) {
const i = c.index + (c[1] ?? c[2]).length;
e.splice(a, 1, s.slice(0, i), s.slice(i));
}
}
return e;
}
function D(t, e) {
const [a, s, c] = q(t, e);
return a + s.map(U(e == null ? void 0 : e.locale)).join((e == null ? void 0 : e.delimiter) ?? " ") + c;
}
function T(t, e) {
return D(t, { delimiter: "-", ...e });
}
function U(t) {
return t === !1 ? (e) => e.toLowerCase() : (e) => e.toLocaleLowerCase(t);
}
function q(t, e = {}) {
const a = e.split ?? (e.separateNumbers ? A : R), s = e.prefixCharacters ?? N, c = e.suffixCharacters ?? N;
let i = 0, f = t.length;
for (; i < t.length; ) {
const d = t.charAt(i);
if (!s.includes(d))
break;
i++;
}
for (; f > i; ) {
const d = f - 1, x = t.charAt(d);
if (!c.includes(x))
break;
f = d;
}
return [
t.slice(0, i),
a(t.slice(i, f)),
t.slice(f)
];
}
const W = "ds-file-list_root_qx1ja_1", $ = "ds-file-list_file-wrapper_qx1ja_7", O = "ds-file-list_file-wrapper--invalid_qx1ja_16", B = "ds-file-list_file-icon_qx1ja_19", X = "ds-file-list_preview_qx1ja_25", M = "ds-file-list_file-details_qx1ja_31", G = "ds-file-list_file-name_qx1ja_45", H = "ds-file-list_file-size_qx1ja_49", K = "ds-file-list_feedback_qx1ja_65", l = {
root: W,
fileWrapper: $,
fileWrapperInvalid: O,
fileIcon: B,
preview: X,
fileDetails: M,
fileName: G,
fileSize: H,
feedback: K
}, V = (t) => t >= 1024 * 1024 ? (t / (1024 * 1024)).toFixed(1) + " MB" : t >= 1024 ? (t / 1024).toFixed(0) + " KB" : t + " B", J = {
nonDisplayableImages: ["heic", "heif", "raw", "cr2", "cr3", "nef", "arw", "orf", "rw2", "dng", "svgz", "jp2", "jxl", "dds", "exr", "psd", "ai", "indd"],
documents: [
"doc",
"docx",
"odt",
"fodt",
"gdoc",
"rtf",
"dot",
"dotx",
"pages",
"wpd",
"abw",
"tmd",
"lwp",
"wps",
"wks",
// Excel and spreadsheet formats
"xls",
"xlsx",
"xlsm",
"xlsb",
"xlt",
"xltx",
"ods",
"fods",
"csv",
"tsv",
"gsheet"
],
videos: ["mp4", "m4v", "mov", "webm", "ogv", "avi", "wmv", "flv", "f4v", "mkv", "3gp", "3g2", "ts", "vob", "rm", "rmvb", "mpeg", "mpg"],
archives: ["zip", "rar", "7z", "tar", "gz", "tar.gz", "tgz", "xz", "tar.xz", "bz2", "tar.bz2", "lzma", "cab", "iso"]
}, ae = (t) => {
const e = P.c(17), {
files: a,
onRemoveFile: s,
fileListItemRemoveButtonProps: c,
t: i
} = t;
let f;
e[0] !== c ? (f = c === void 0 ? {} : c, e[0] = c, e[1] = f) : f = e[1];
const d = f, x = Q;
let b;
e[2] !== i ? (b = (n) => {
var h;
const r = ((h = n.name.split(".").pop()) == null ? void 0 : h.toLowerCase()) || "", {
nonDisplayableImages: p,
documents: g,
videos: L,
archives: w
} = J;
return n.type.startsWith("image/") ? p.includes(r) ? /* @__PURE__ */ o(u, { name: "file-type-image", className: l.fileIcon }) : /* @__PURE__ */ o("img", { src: URL.createObjectURL(n), alt: `${i("fileListPreviewAltText")} ${n.name}`, className: l.preview }) : g.includes(r) ? /* @__PURE__ */ o(u, { name: "file-type-doc", className: l.fileIcon }) : n.type === "application/pdf" ? /* @__PURE__ */ o(u, { name: "file-type-pdf", className: l.fileIcon }) : n.type.startsWith("video/") && L.includes(r) ? /* @__PURE__ */ o(u, { name: "file-type-video", className: l.fileIcon }) : w.includes(r) ? /* @__PURE__ */ o(u, { name: "file-type-zip", className: l.fileIcon }) : /* @__PURE__ */ o(u, { name: "file", className: l.fileIcon });
}, e[2] = i, e[3] = b) : b = e[3];
const v = b;
let m;
if (e[4] !== d || e[5] !== a || e[6] !== v || e[7] !== s || e[8] !== i) {
let n;
e[10] !== d || e[11] !== v || e[12] !== s || e[13] !== i ? (n = (r, p) => {
const g = Object.fromEntries(Object.entries(d).map((L) => {
const [w, h] = L;
return [w, `${h}-${p}`];
}));
return /* @__PURE__ */ I("div", { className: j(l.fileWrapper, {
[l.fileWrapperInvalid]: r.feedback
}), children: [
v(r),
/* @__PURE__ */ I("div", { className: l.fileDetails, children: [
/* @__PURE__ */ o("span", { className: l.fileName, children: r.name }),
/* @__PURE__ */ o("span", { className: l.fileSize, children: V(r.size) })
] }),
/* @__PURE__ */ I(k, { ...g, className: l.removeButton, onClick: () => s(p), hideLabel: !0, iconName: "cross", size: "small", variant: "ghost", type: "button", "aria-describedby": r.feedback ? x(r.name) : void 0, "aria-invalid": r.feedback ? !0 : void 0, children: [
i("fileListRemoveSelectionButtonLabel", [r.name]),
"."
] }),
r.feedback && /* @__PURE__ */ o(S, { variant: "error", id: x(r.name), message: r.feedback, className: l.feedback }, p)
] }, p);
}, e[10] = d, e[11] = v, e[12] = s, e[13] = i, e[14] = n) : n = e[14], m = a.map(n), e[4] = d, e[5] = a, e[6] = v, e[7] = s, e[8] = i, e[9] = m;
} else
m = e[9];
let _;
return e[15] !== m ? (_ = /* @__PURE__ */ o("div", { className: l.root, children: m }), e[15] = m, e[16] = _) : _ = e[16], _;
};
function Q(t) {
return `file-feedback-${T(t)}`;
}
export {
ae as FileList
};