vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
63 lines (62 loc) • 2.03 kB
JavaScript
const h = {};
function l(s) {
let n = h[s];
if (n)
return n;
n = h[s] = [];
for (let e = 0; e < 128; e++) {
const t = String.fromCharCode(e);
n.push(t);
}
for (let e = 0; e < s.length; e++) {
const t = s.charCodeAt(e);
n[t] = "%" + ("0" + t.toString(16).toUpperCase()).slice(-2);
}
return n;
}
function u(s, n) {
typeof n != "string" && (n = u.defaultChars);
const e = l(n);
return s.replace(/(%[a-f0-9]{2})+/gi, function(t) {
let r = "";
for (let f = 0, a = t.length; f < a; f += 3) {
const o = parseInt(t.slice(f + 1, f + 3), 16);
if (o < 128) {
r += e[o];
continue;
}
if ((o & 224) === 192 && f + 3 < a) {
const c = parseInt(t.slice(f + 4, f + 6), 16);
if ((c & 192) === 128) {
const i = o << 6 & 1984 | c & 63;
i < 128 ? r += "��" : r += String.fromCharCode(i), f += 3;
continue;
}
}
if ((o & 240) === 224 && f + 6 < a) {
const c = parseInt(t.slice(f + 4, f + 6), 16), i = parseInt(t.slice(f + 7, f + 9), 16);
if ((c & 192) === 128 && (i & 192) === 128) {
const x = o << 12 & 61440 | c << 6 & 4032 | i & 63;
x < 2048 || x >= 55296 && x <= 57343 ? r += "���" : r += String.fromCharCode(x), f += 6;
continue;
}
}
if ((o & 248) === 240 && f + 9 < a) {
const c = parseInt(t.slice(f + 4, f + 6), 16), i = parseInt(t.slice(f + 7, f + 9), 16), x = parseInt(t.slice(f + 10, f + 12), 16);
if ((c & 192) === 128 && (i & 192) === 128 && (x & 192) === 128) {
let C = o << 18 & 1835008 | c << 12 & 258048 | i << 6 & 4032 | x & 63;
C < 65536 || C > 1114111 ? r += "����" : (C -= 65536, r += String.fromCharCode(55296 + (C >> 10), 56320 + (C & 1023))), f += 9;
continue;
}
}
r += "�";
}
return r;
});
}
u.defaultChars = ";/?:@&=+$,#";
u.componentChars = "";
export {
u as default
};
//# sourceMappingURL=decode.mjs.map