www/lib/assets/scripts/package-bottles.js
2023-04-24 19:39:10 +02:00

54 lines
No EOL
3 KiB
JavaScript

function PackageBottles() {
const [bottles, setBottles] = React.useState();
const [isLoading, setIsLoading] = React.useState(true);
React.useEffect(() => {
const url = window.location.pathname.replace('/+', 'https://app.tea.xyz/api/bottles/');
fetch(url).then(res => res.json()).then(res => {
setBottles(res);
setIsLoading(false);
});
}, []);
if (isLoading) return /*#__PURE__*/React.createElement("div", {
id: "bottle-preloader",
className: "flex one-box-down"
}, /*#__PURE__*/React.createElement("div", {
id: "bottle-status",
className: "flex justifit-content-center"
}, /*#__PURE__*/React.createElement("div", {
className: "mx-auto"
}, /*#__PURE__*/React.createElement("i", {
className: "icon-tea-logo-iconasset-1 grid-gray tea-icon lead mb-0"
}), /*#__PURE__*/React.createElement("div", {
id: "bottle-loading-text"
}, /*#__PURE__*/React.createElement("p", {
className: "grid-gray"
}, "steeping available versions...")))));
if (!bottles) return null;
const names = [...new Set(bottles.map(b => b.name))];
return /*#__PURE__*/React.createElement("div", null, names.map(name => /*#__PURE__*/React.createElement(Bottle, {
key: name,
name: name
})));
function Bottle({
name
}) {
const [expanded, toggleExpanded] = React.useState(false);
const versions = [...new Set(bottles.map(b => b.version))];
return /*#__PURE__*/React.createElement("div", {
className: "expand",
onClick: () => toggleExpanded(!expanded)
}, /*#__PURE__*/React.createElement("div", {
className: "expand-text one-box-down"
}, /*#__PURE__*/React.createElement("h4", {
className: "display-6"
}, versions.length, " version", versions.length === 1 ? "" : "s", " bottled")), /*#__PURE__*/React.createElement("table", {
className: "one-box-down"
}, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, "version"), /*#__PURE__*/React.createElement("th", null, "darwin-aarch64"), /*#__PURE__*/React.createElement("th", null, "darwin-x86-64"), /*#__PURE__*/React.createElement("th", null, "linux-aarch64"), /*#__PURE__*/React.createElement("th", null, "linux-x86-64"))), /*#__PURE__*/React.createElement("tbody", null, versions.map(v => {
const available = new Set(bottles.filter(b => b.name === name && b.version == v).map(b => `${b.platform}-${b.arch}`));
return /*#__PURE__*/React.createElement("tr", {
key: v
}, /*#__PURE__*/React.createElement("th", null, v), /*#__PURE__*/React.createElement("td", null, available.has("darwin-aarch64") ? "✅" : "❌"), /*#__PURE__*/React.createElement("td", null, available.has("darwin-x86-64") ? "✅" : "❌"), /*#__PURE__*/React.createElement("td", null, available.has("linux-aarch64") ? "✅" : "❌"), /*#__PURE__*/React.createElement("td", null, available.has("linux-x86-64") ? "✅" : "❌"));
}))));
}
}
ReactDOM.render(React.createElement(PackageBottles), document.getElementById("packageApp"));