mongoku
Version:
[](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)
181 lines (178 loc) • 7.23 kB
JavaScript
import './async-DUoD1OpG.js';
import { a as attr, e as escape_html } from './root-otUAnOAR.js';
import { f as fetchMappedDocument } from './servers.remote-CGenkEHX.js';
import { r as resolve } from './server2-D_y4YbpC.js';
import 'esprima';
import { J as JsonValue_1 } from './JsonValue-CGVfzyTL.js';
import { P as Panel } from './Panel-C6VWd6JD.js';
function PrettyJson($$renderer, $$props) {
$$renderer.component(($$renderer2) => {
let {
json,
autoCollapse = false,
onedit,
onremove,
server,
database,
collection,
mappings,
startInEditMode = false
} = $$props;
function getIdValue(val) {
if (val === null || val === void 0) {
return null;
}
if (typeof val === "string" || typeof val === "number") {
return String(val);
}
if (val.$type === "ObjectId" && val.$value) {
return val.$value;
}
return null;
}
function formatIdDisplay(val) {
const scalar = getIdValue(val);
if (scalar !== null) {
return scalar;
}
if (val && typeof val === "object") {
const entries = Object.entries(val).filter(([k]) => k !== "$type");
if (entries.length > 0) {
return entries.map(([k, v]) => `${k}: ${typeof v === "object" ? JSON.stringify(v) : v}`).join(" · ");
}
}
return String(val);
}
function isKeyMapped(path) {
return !!mappings?.[path] && (Array.isArray(mappings[path]) ? mappings[path].length > 0 : true);
}
async function fetchMappedDocument$1(path, value) {
if (!mappings || !mappings[path] || Array.isArray(mappings[path]) && mappings[path].length === 0) {
return { document: null, url: null, collection: null };
}
const idValue = getIdValue(value);
if (!idValue) {
return { document: null, url: null, collection: null };
}
try {
const result = await fetchMappedDocument({
server,
database,
mappings: Array.isArray(mappings[path]) ? mappings[path] : [mappings[path]],
value
});
if (result.error || !result.data || !result.collection) {
return { document: null, url: null, collection: null };
}
const url = resolve(`/servers/${encodeURIComponent(server)}/databases/${encodeURIComponent(database)}/collections/${encodeURIComponent(result.collection)}/documents/${encodeURIComponent(idValue)}`);
return { document: result.data, url, collection: result.collection };
} catch {
return { document: null, url: null, collection: null };
}
}
let panelRef = void 0;
function getTimestampFromObjectId(objectId) {
try {
const timestamp = parseInt(objectId.substring(0, 8), 16);
return new Date(timestamp * 1e3);
} catch {
return null;
}
}
function title($$renderer3) {
if (json._id) {
$$renderer3.push("<!--[0-->");
const navigableId = getIdValue(json._id);
const idDisplay = formatIdDisplay(json._id);
$$renderer3.push(`<div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4 min-w-0 flex-1"><h2 class="truncate">`);
if (navigableId !== null) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<a class="text-[15px] sm:text-base font-semibold hover:underline no-underline" style="color: var(--text); text-decoration-color: var(--link);"${attr("href", resolve(`/servers/${encodeURIComponent(server)}/databases/${encodeURIComponent(database)}/collections/${encodeURIComponent(collection)}/documents/${encodeURIComponent(navigableId)}`))}>${escape_html(idDisplay)}</a>`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`<span class="text-[15px] sm:text-base font-semibold" style="color: var(--text);">${escape_html(idDisplay)}</span>`);
}
$$renderer3.push(`<!--]--></h2> `);
if (json._id.$value) {
$$renderer3.push("<!--[0-->");
const timestamp = getTimestampFromObjectId(json._id.$value);
if (timestamp) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<p class="text-xs" style="color: var(--text-secondary);">Created on ${escape_html(timestamp.toLocaleDateString())} · ${escape_html(timestamp.toLocaleTimeString())}</p>`);
} else {
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]-->`);
} else {
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]--></div>`);
} else {
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]-->`);
}
function actions($$renderer3) {
$$renderer3.push(`<div class="hidden group-hover:flex items-center gap-2 -my-2"><button class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition cursor-pointer" style="color: var(--text);">Copy</button> `);
if (onedit) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<button class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition cursor-pointer" style="color: var(--text);">Edit</button>`);
} else {
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]--> `);
if (onremove) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<button class="px-3 py-1 rounded-lg border border-red-200 hover:bg-red-50 text-[13px] transition cursor-pointer" style="color: var(--button-danger);">Delete</button>`);
} else {
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]--></div>`);
}
let $$settled = true;
let $$inner_renderer;
function $$render_inner($$renderer3) {
Panel($$renderer3, {
class: "group relative",
title: json._id ? title : void 0,
actions,
get ref() {
return panelRef;
},
set ref($$value) {
panelRef = $$value;
$$settled = false;
},
children: ($$renderer4) => {
$$renderer4.push(`<div class="relative p-4 sm:p-6"><div class="font-mono text-[13px] sm:text-[14px] leading-relaxed whitespace-pre-wrap break-words overflow-x-auto">`);
JsonValue_1($$renderer4, {
value: json,
autoCollapse,
collapsed: false,
isKeyMapped,
fetchMappedDocument: fetchMappedDocument$1,
mappings
});
$$renderer4.push(`<!----></div> `);
{
$$renderer4.push("<!--[-1-->");
}
$$renderer4.push(`<!--]--></div> `);
{
$$renderer4.push("<!--[-1-->");
}
$$renderer4.push(`<!--]-->`);
},
$$slots: { default: true }
});
}
do {
$$settled = true;
$$inner_renderer = $$renderer2.copy();
$$render_inner($$inner_renderer);
} while (!$$settled);
$$renderer2.subsume($$inner_renderer);
});
}
export { PrettyJson as P };
//# sourceMappingURL=PrettyJson-Bo4UtQ1o.js.map