UNPKG

@stihl-design-system/components

Version:

Welcome to the STIHL Design System react component library.

162 lines (161 loc) 6.16 kB
"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 };