UNPKG

mongoku

Version:

[![CI](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml/badge.svg)](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)

181 lines (178 loc) 7.23 kB
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