Remove minified files from git tracking

This commit is contained in:
Booteille 2024-12-05 11:36:32 +01:00
parent c00f4af397
commit 06d5772970
No known key found for this signature in database
GPG Key ID: 0AB6C6CA01272646
16 changed files with 1 additions and 22068 deletions

1
.gitignore vendored
View File

@ -14,6 +14,7 @@ stop-upload
themes/* themes/*
!themes/default !themes/default
!themes/default/* !themes/default/*
themes/default/public/js/minified
.stignore .stignore
.stfolder/ .stfolder/
TODO TODO

File diff suppressed because it is too large Load Diff

View File

@ -1,191 +0,0 @@
// themes/default/public/js/lib/utils.js
var formatDate = (unixTimestamp) => new Date(unixTimestamp * 1e3).toLocaleString(window.navigator.language, {
year: "numeric",
month: "long",
day: "numeric",
weekday: "long",
hour: "2-digit",
minute: "2-digit"
});
// themes/default/public/js/files.js
var addItem = (item) => {
const files = JSON.parse(localStorage.getItem(`${prefix}files`)) || [];
files.push(item);
localStorage.setItem(`${prefix}files`, JSON.stringify(files));
};
var deleteFromStorage = (serverKey) => {
let files = JSON.parse(localStorage.getItem(`${prefix}files`)) || [];
files = files.filter((file) => file.short !== serverKey);
localStorage.setItem(`${prefix}files`, JSON.stringify(files));
};
var itemExists = (serverKey) => {
const files = JSON.parse(localStorage.getItem(`${prefix}files`)) || [];
return files.some((file) => file.short === serverKey);
};
var updateSelection = (event) => {
document.querySelectorAll(".item .checkbox input").forEach((node) => {
node.checked = event.target.checked;
});
checkItemSelection();
};
var purgeExpired = () => {
const files = JSON.parse(localStorage.getItem(`${prefix}files`));
files.forEach((file) => {
const fileDOM = document.querySelector(`.item-${file.short}`);
if (fileDOM == null ? void 0 : fileDOM.classList.contains("deleted")) {
deleteFromStorage(file.short);
fileDOM.remove();
}
});
};
var exportStorage = () => {
const exportStorageDOM = document.getElementById("action-export-storage");
const storageData = [localStorage.getItem(`${prefix}files`)];
const exportFile = new Blob(storageData, { type: "application/json" });
exportStorageDOM.href = window.URL.createObjectURL(exportFile);
exportStorageDOM.download = "data.json";
};
var importStorage = (event) => {
const reader = new FileReader();
reader.addEventListener("loadend", () => {
try {
const newFiles = JSON.parse(
String.fromCharCode.apply(null, new Uint8Array(reader.result))
);
let importedCounter = 0;
newFiles.forEach((file) => {
if (validURL(file.url) && !itemExists(file.short)) {
addItem(file);
importedCounter++;
}
});
populateFilesTable();
} catch (err) {
alert(err);
}
});
reader.readAsArrayBuffer(event.target.files[0]);
};
var validURL = (str) => {
try {
return new URL(str).host ? true : false;
} catch (e) {
return false;
}
};
var deleteFile = (node) => {
const serverKey = node.dataset.serverKey;
const deleteUrl = new URL(
`${actionURL}d/${serverKey}/${node.dataset.actionKey}`
);
deleteUrl.searchParams.append("_format", "json");
fetch(deleteUrl, {
method: "GET"
}).then((response) => {
if (!response.ok) {
throw new Error("Network error while deleting file");
}
return response.json();
}).then((data) => {
if (data.success) {
node.remove();
deleteFromStorage(serverKey);
} else {
alert(data.msg);
}
checkItemSelection();
});
};
var checkItemSelection = () => {
const deleteSelectionDOM = document.getElementById("action-delete-selection");
if (document.querySelectorAll(".item .checkbox input:checked").length > 0) {
deleteSelectionDOM.disabled = false;
} else {
deleteSelectionDOM.disabled = true;
}
};
var deleteSelection = () => {
document.querySelectorAll(".item:has(.checkbox input:checked)").forEach((node) => deleteFile(node));
};
var populateFilesTable = () => {
const itemsTableDOM = document.getElementById("items-table");
itemsTableDOM.replaceChildren();
let files = localStorage.getItem(`${prefix}files`);
if (files === null) {
const filesWithoutPrefix = localStorage.getItem("files");
if (filesWithoutPrefix !== null) {
if (confirm(i18n.importFilesWithoutPrefix)) {
localStorage.setItem(`${prefix}files`, filesWithoutPrefix);
files = JSON.parse(filesWithoutPrefix);
} else {
localStorage.setItem(`${prefix}files`, JSON.stringify([]));
files = [];
}
} else {
files = [];
}
} else {
files = JSON.parse(files);
}
files.sort((a, b) => b.created_at - a.created_at);
files.forEach((file) => {
const itemDOM = document.querySelector("template#item").content.cloneNode(true).children[0];
itemDOM.classList.add(`item-${file.short}`);
itemDOM.dataset.serverKey = file.short;
itemDOM.dataset.actionKey = file.token;
itemDOM.querySelector(".name").innerText = file.name;
itemDOM.querySelector(".download a").href = file.url;
itemDOM.querySelector(".delete-at-first-view .icon").classList.add(file.del_at_first_view ? "fa-eraser" : "fa-close");
itemDOM.querySelector(".created-at").innerText = formatDate(
file.created_at
);
itemDOM.querySelector(".expires-at").innerText = file.delay == 0 ? i18n.noExpiration : formatDate(file.delay * 86400 + file.created_at);
itemDOM.querySelector(
".mail a"
).href = `${actionURL}m?links=["${file.short}"]`;
itemDOM.querySelector(".action-delete-item").onclick = () => deleteFile(itemDOM);
itemDOM.querySelector(".checkbox input").onclick = () => {
checkItemSelection();
};
itemsTableDOM.append(itemDOM);
console.debug(file.short, file.token);
fetch(counterURL, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: new URLSearchParams({
short: file.short,
token: file.token
})
}).then((response) => {
if (!response.ok) {
throw new Error(`Request error: ${response.statusText}`);
}
return response.json();
}).then((data) => {
const countDOM = itemDOM.querySelector(".counter");
if (data.success) {
countDOM.innerText = data.counter;
if (data.deleted) {
countDOM.parentElement.classList.add("deleted");
}
} else {
alert(data.msg);
countDOM.parentElement.remove();
if (data.missing) {
deleteFromStorage(data.short);
}
}
}).catch((error) => console.error(error));
});
};
document.addEventListener("DOMContentLoaded", () => {
populateFilesTable();
document.getElementById("action-select-all").onclick = updateSelection;
document.getElementById("action-export-storage").onclick = exportStorage;
document.getElementById("action-purge-expired").onclick = purgeExpired;
document.getElementById("action-import-storage").onchange = importStorage;
document.getElementById("action-delete-selection").onclick = deleteSelection;
});

View File

@ -1,235 +0,0 @@
// themes/default/public/js/lib/filesize.esm.min.js
var t = "array";
var i = "bit";
var o = "bits";
var e = "byte";
var n = "bytes";
var r = "";
var a = "exponent";
var b = "function";
var s = "iec";
var l = "Invalid number";
var p = "Invalid rounding method";
var u = "jedec";
var c = "object";
var d = ".";
var f = "round";
var g = "s";
var m = "si";
var B = "kbit";
var y = "kB";
var h = " ";
var M = "string";
var x = "0";
var w = { symbol: { iec: { bits: ["bit", "Kibit", "Mibit", "Gibit", "Tibit", "Pibit", "Eibit", "Zibit", "Yibit"], bytes: ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"] }, jedec: { bits: ["bit", "Kbit", "Mbit", "Gbit", "Tbit", "Pbit", "Ebit", "Zbit", "Ybit"], bytes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] } }, fullform: { iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"], jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"] } };
function E(E2, { bits: T = false, pad: j = false, base: N = -1, round: P = 2, locale: S = r, localeOptions: k = {}, separator: G = r, spacer: K = h, symbols: Y = {}, standard: Z = r, output: v = M, fullform: O = false, fullforms: $ = [], exponent: z = -1, roundingMethod: I = f, precision: L = 0 } = {}) {
let D = z, q = Number(E2), A = [], C = 0, F = r;
Z === m ? (N = 10, Z = u) : Z === s || Z === u ? N = 2 : 2 === N ? Z = s : (N = 10, Z = u);
const H = 10 === N ? 1e3 : 1024, J = true === O, Q = q < 0, R = Math[I];
if ("bigint" != typeof E2 && isNaN(E2)) throw new TypeError(l);
if (typeof R !== b) throw new TypeError(p);
if (Q && (q = -q), (-1 === D || isNaN(D)) && (D = Math.floor(Math.log(q) / Math.log(H)), D < 0 && (D = 0)), D > 8 && (L > 0 && (L += 8 - D), D = 8), v === a) return D;
if (0 === q) A[0] = 0, F = A[1] = w.symbol[Z][T ? o : n][D];
else {
C = q / (2 === N ? Math.pow(2, 10 * D) : Math.pow(1e3, D)), T && (C *= 8, C >= H && D < 8 && (C /= H, D++));
const t2 = Math.pow(10, D > 0 ? P : 0);
A[0] = R(C * t2) / t2, A[0] === H && D < 8 && -1 === z && (A[0] = 1, D++), F = A[1] = 10 === N && 1 === D ? T ? B : y : w.symbol[Z][T ? o : n][D];
}
if (Q && (A[0] = -A[0]), L > 0 && (A[0] = A[0].toPrecision(L)), A[1] = Y[A[1]] || A[1], true === S ? A[0] = A[0].toLocaleString() : S.length > 0 ? A[0] = A[0].toLocaleString(S, k) : G.length > 0 && (A[0] = A[0].toString().replace(d, G)), j && P > 0) {
const t2 = A[0].toString(), i2 = G || (t2.match(/(\D)/g) || []).pop() || d, o2 = t2.toString().split(i2), e2 = o2[1] || r, n2 = e2.length, a2 = P - n2;
A[0] = `${o2[0]}${i2}${e2.padEnd(n2 + a2, x)}`;
}
return J && (A[1] = $[D] ? $[D] : w.fullform[Z][D] + (T ? i : e) + (1 === A[0] ? r : g)), v === t ? A : v === c ? { value: A[0], symbol: A[1], exponent: D, unit: F } : A.join(K);
}
// themes/default/public/js/list-invitations.js
var updateButtonsStatus = () => {
const targetSelectionDOM = document.querySelectorAll(".target-selection");
if (document.querySelectorAll(".column.selection .checkbox input:checked").length > 0) {
targetSelectionDOM.forEach((node) => node.disabled = false);
} else {
targetSelectionDOM.forEach((node) => node.disabled = true);
}
};
var invertSelection = () => {
document.querySelectorAll(".item .column.selection input").forEach((node) => {
node.click();
});
updateButtonsStatus();
};
var toggleHidden = () => {
const invitationsListDOM = document.querySelector(".invitations-list");
const toggleButtonDOM = document.querySelector(".action-toggle-hidden");
const itemsHiddenDOM = invitationsListDOM.querySelectorAll(
".item[data-visibility='0']"
);
if (invitationsListDOM.getAttribute("data-visibility") === "hidden") {
toggleButtonDOM.innerText = i18n.hideText;
itemsHiddenDOM.forEach((item) => showNode(item));
invitationsListDOM.setAttribute("data-visibility", "shown");
} else {
toggleButtonDOM.innerText = i18n.showText;
itemsHiddenDOM.forEach((item) => {
hideNode(item);
const checkbox = item.querySelector("input");
if (checkbox.checked) {
checkbox.click();
}
});
invitationsListDOM.setAttribute("data-visibility", "hidden");
}
};
var deleteInvitation = () => {
if (confirm(i18n.confirmDeleteInvit)) {
try {
fetch(deleteURL, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: getTokensBody()
}).then((response) => {
if (!response.ok) {
throw new Error(`Request error: ${response.statusText}`);
}
return response.json();
}).then((data) => {
if (data.success) {
data.tokens.forEach((t2) => {
addToast(t2.msg, "success");
document.getElementById(`row-${t2.token}`).remove();
});
data.failures.forEach((msg) => {
addToast(msg, "error");
});
updateButtonsStatus();
} else {
data.failures.forEach((msg) => {
addToast(msg, "error");
});
if (data.msg) {
addToast(data.msg, "error");
}
}
});
} catch (error) {
console.error(error);
}
}
};
var resendInvitation = () => {
if (confirm(i18n.confirmResendMail)) {
fetch(resendURL, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: getTokensBody()
}).then((response) => {
if (!response.ok) {
throw new Error(`Request error: ${response.statusText}`);
}
return response.json();
}).then((data) => {
if (data.success) {
data.tokens.forEach((t2) => {
const itemDOM = document.getElementById(`row-${t2.token}`);
itemDOM.querySelector(".column.expiration-date").innerText = t2.expires;
itemDOM.querySelector(".column.selection input").click();
addToast(t2.msg, "success");
});
data.failures.forEach((msg) => {
addToast(msg, "error");
});
updateButtonsStatus();
}
}).catch((error) => console.error(error));
}
};
var toggleVisibility = () => {
fetch(toggleURL, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: getTokensBody()
}).then((response) => {
if (!response.ok) {
throw new Error(`Request error: ${response.statusText}`);
}
return response.json();
}).then((data) => {
if (data.success) {
data.tokens.forEach((t2) => {
const itemDOM = document.getElementById(`row-${t2.token}`);
if (t2.show) {
itemDOM.setAttribute("data-visibility", 1);
showNode(itemDOM);
itemDOM.querySelector(".column.selection .icon.hide-source").remove();
} else {
itemDOM.setAttribute("data-visibility", 0);
if (document.querySelector(".invitations-list").getAttribute("data-visibility") === "hidden") {
hideNode(itemDOM);
}
itemDOM.querySelector(".column.selection").appendChild(
document.querySelector("template#icon-hide-source").content.cloneNode(true)
);
}
itemDOM.querySelector(".column.selection input").click();
});
updateButtonsStatus();
} else {
addToast(data.msg, "error");
}
}).catch((error) => console.error(error));
};
var getTokensBody = () => {
const tokens = new URLSearchParams();
document.querySelectorAll(".column.selection input:checked").forEach(
(item) => tokens.append("tokens[]", item.getAttribute("data-token"))
);
return tokens;
};
var fillModal = (event) => {
const buttonDOM = event.target;
const modalDOM = document.querySelector(".modal.files-info");
modalDOM.querySelector(".files-list").replaceChildren();
modalDOM.querySelector("h1").innerText = i18n.listFiles.replace("XX1", buttonDOM.getAttribute("data-token")).replace("XX2", buttonDOM.getAttribute("data-guest"));
const files = JSON.parse(buttonDOM.getAttribute("data-files")) || [];
const itemList = new DocumentFragment();
files.forEach((file) => {
const expires = i18n.expiration.replace(
"XXX",
formatDate(file.delay * 86400 + file.created_at)
);
const item = modalDOM.querySelector("template#item").content.cloneNode(true);
item.querySelector(".file-link").href = file.url;
item.querySelector(".file-link").value = file.name;
item.querySelector(".file-size").innerText = `${E(
file.size
)}, ${expires}`;
itemList.appendChild(item);
});
modalDOM.querySelector(".files-list").appendChild(itemList);
};
document.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll(".modal-button.action-files-info").forEach(
(button) => button.onclick = (event) => {
fillModal(event);
document.querySelector(".modal.files-info").showModal();
}
);
document.querySelector(".close-modal").onclick = () => {
document.querySelector(".modal").close();
};
document.querySelectorAll(".column.selection input").forEach((node) => node.onclick = updateButtonsStatus);
document.querySelector(".action-invert-selection").onclick = invertSelection;
document.querySelector(".action-toggle-hidden").onclick = toggleHidden;
document.querySelector(".action-delete-invitation").onclick = deleteInvitation;
document.querySelector(".action-resend-invitation").onclick = resendInvitation;
document.querySelector(".action-toggle-visibility").onclick = toggleVisibility;
});
/*!
2024 Jason Mulligan <jason.mulligan@avoidwork.com>
@version 10.1.6
*/

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long