mongoku
Version:
[](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)
321 lines (318 loc) • 13.9 kB
JavaScript
import './async-DUoD1OpG.js';
import { e as escape_html, b as ensure_array_like, a as attr, d as derived, c as attr_class, f as clsx } from './root-otUAnOAR.js';
import { T as Tooltip } from './Tooltip-OVylvwfb.js';
function IconExternalLink($$renderer, $$props) {
let { class: className = "w-4 h-4" } = $$props;
$$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(clsx(className))}><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" x2="21" y1="14" y2="3"></line></svg>`);
}
function JsonValue_1($$renderer, $$props) {
$$renderer.component(($$renderer2) => {
const INDENT = " ";
let {
value,
key,
autoCollapse = false,
collapsed = false,
depth = 0,
isKeyMapped,
fetchMappedDocument,
keyPath = "",
mappings
} = $$props;
function getIndent(level) {
return INDENT.repeat(level);
}
function isUrl(str) {
return /^https?:\/\/[^\s]+$/.test(str);
}
let showTooltip = false;
const currentKeyPath = derived(() => [keyPath, key].filter(Boolean).join("."));
function interpolateUrl(template, val) {
const strValue = String(val);
return template.replace(/\{value\}/g, strValue);
}
function handleTooltipMouseEnter() {
}
function handleTooltipMouseLeave() {
showTooltip = false;
}
function getValueType(val) {
if (val === null) {
return "null";
}
if (Array.isArray(val)) {
return "array";
}
switch (typeof val) {
case "boolean":
return "boolean";
case "number":
return "number";
case "string":
return "string";
case "object":
switch (val.$type) {
case "ObjectId":
return "objectid";
case "Date":
return "date";
case "RegExp":
return "regexp";
case "Binary":
return "binary";
default:
return "object";
}
default:
return "unknown";
}
}
const valueType = derived(() => getValueType(value));
const hasMappings = derived(() => !!isKeyMapped && key === void 0 && isKeyMapped(currentKeyPath()) && value !== null && value !== void 0 && valueType() !== "array" && valueType() !== "object");
const hasCollectionMappings = derived(() => hasMappings() && !!fetchMappedDocument);
const urlMappings = derived(() => {
if (!hasMappings() || !mappings || !mappings[currentKeyPath()]) {
return [];
}
const pathMappings = mappings[currentKeyPath()];
const mappingsArray = Array.isArray(pathMappings) ? pathMappings : [pathMappings];
return mappingsArray.filter((m) => {
if ("type" in m) {
return m.type === "url";
}
return false;
});
});
const hasUrlMappings = derived(() => urlMappings().length > 0);
let isCollapsible = derived(() => valueType() === "array" || valueType() === "object");
let isEmpty = derived(() => valueType() === "array" && value.length === 0 || valueType() === "object" && Object.keys(value).length === 0);
let innerCollapsed = autoCollapse;
if (key !== void 0) {
$$renderer2.push("<!--[0-->");
if (isCollapsible() && !isEmpty()) {
$$renderer2.push("<!--[0-->");
if (innerCollapsed) {
$$renderer2.push("<!--[0-->");
$$renderer2.push(`<span class="prop collapsible collapsed svelte-1c374kz" role="button" tabindex="0">${escape_html(getIndent(depth + 1))}<span class="collapse-arrow svelte-1c374kz">▶</span><var class="svelte-1c374kz">${escape_html(key)}</var>: `);
JsonValue_1($$renderer2, {
value,
autoCollapse,
collapsed: innerCollapsed,
depth: depth + 1,
isKeyMapped,
fetchMappedDocument,
keyPath: currentKeyPath(),
mappings
});
$$renderer2.push(`<!----></span>`);
} else {
$$renderer2.push("<!--[-1-->");
$$renderer2.push(`<span class="prop collapsible svelte-1c374kz">${escape_html(getIndent(depth + 1))}<span class="collapse-arrow arrow-only svelte-1c374kz" role="button" tabindex="0">▼</span><var class="svelte-1c374kz">${escape_html(key)}</var>: `);
JsonValue_1($$renderer2, {
value,
autoCollapse,
collapsed: innerCollapsed,
depth: depth + 1,
isKeyMapped,
fetchMappedDocument,
keyPath: currentKeyPath(),
mappings
});
$$renderer2.push(`<!----></span>`);
}
$$renderer2.push(`<!--]-->`);
} else {
$$renderer2.push("<!--[-1-->");
$$renderer2.push(`<span class="prop svelte-1c374kz">${escape_html(getIndent(depth + 1))}<var class="svelte-1c374kz">${escape_html(key)}</var>: `);
JsonValue_1($$renderer2, {
value,
autoCollapse,
collapsed: innerCollapsed,
depth: depth + 1,
isKeyMapped,
fetchMappedDocument,
keyPath: currentKeyPath(),
mappings
});
$$renderer2.push(`<!----></span>`);
}
$$renderer2.push(`<!--]-->`);
} else {
let valueSnippet = function($$renderer3) {
if (valueType() === "string") {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<span class="value quoted svelte-1c374kz">"<span${attr_class("string svelte-1c374kz", void 0, { "url": isUrl(value) })}>`);
if (isUrl(value)) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<a${attr("href", value)} target="_blank" class="svelte-1c374kz">${escape_html(value)}</a>`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`${escape_html(value)}`);
}
$$renderer3.push(`<!--]--></span>"</span>`);
} else if (valueType() === "number") {
$$renderer3.push("<!--[1-->");
$$renderer3.push(`<span class="value number svelte-1c374kz">${escape_html(value)}</span>`);
} else if (valueType() === "boolean") {
$$renderer3.push("<!--[2-->");
$$renderer3.push(`<span class="value boolean svelte-1c374kz">${escape_html(value)}</span>`);
} else if (valueType() === "null") {
$$renderer3.push("<!--[3-->");
$$renderer3.push(`<span class="value null svelte-1c374kz">null</span>`);
} else if (valueType() === "objectid") {
$$renderer3.push("<!--[4-->");
$$renderer3.push(`<span class="call function svelte-1c374kz">ObjectId("<span class="string">${escape_html(value.$value)}</span>")</span>`);
} else if (valueType() === "date") {
$$renderer3.push("<!--[5-->");
$$renderer3.push(`<span class="call function svelte-1c374kz">Date("<span class="string">${escape_html(value.$value)}</span>")</span>`);
} else if (valueType() === "regexp") {
$$renderer3.push("<!--[6-->");
$$renderer3.push(`<span class="value regexp svelte-1c374kz">/${escape_html(value.$value.$pattern)}/${escape_html(value.$value.$flags)}</span>`);
} else if (valueType() === "binary") {
$$renderer3.push("<!--[7-->");
$$renderer3.push(`<span class="call function svelte-1c374kz">BinData(<span class="number">${escape_html(value.$subType)}</span>, "<span class="string">${escape_html(value.$value.length > 40 ? value.$value.substring(0, 40) + "..." : value.$value)}</span>")</span>`);
} else if (valueType() === "array") {
$$renderer3.push("<!--[8-->");
if (isEmpty()) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<span class="value array svelte-1c374kz">[]</span>`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`<span class="value array svelte-1c374kz">[`);
if (!collapsed) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<span class="collapsible-content svelte-1c374kz"><!--[-->`);
const each_array = ensure_array_like(value);
for (let i = 0, $$length = each_array.length; i < $$length; i++) {
let item = each_array[i];
$$renderer3.push(`<br/>${escape_html(getIndent(depth + 1))}`);
JsonValue_1($$renderer3, {
value: item,
autoCollapse,
collapsed: false,
depth: depth + 1,
keyPath: currentKeyPath(),
isKeyMapped,
fetchMappedDocument,
mappings
});
$$renderer3.push(`<!---->`);
}
$$renderer3.push(`<!--]--> <br/>${escape_html(getIndent(depth))}</span>`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`<span class="collapsed-summary svelte-1c374kz">... ${escape_html(value.length)} item${escape_html(value.length !== 1 ? "s" : "")}</span>`);
}
$$renderer3.push(`<!--]-->]</span>`);
}
$$renderer3.push(`<!--]-->`);
} else if (valueType() === "object") {
$$renderer3.push("<!--[9-->");
if (isEmpty()) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<span class="value object svelte-1c374kz">{}</span>`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`<span class="value object svelte-1c374kz">{`);
if (!collapsed) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<span class="collapsible-content svelte-1c374kz"><!--[-->`);
const each_array_1 = ensure_array_like(Object.keys(value));
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
let objKey = each_array_1[$$index_1];
JsonValue_1($$renderer3, {
value: value[objKey],
key: objKey,
autoCollapse,
collapsed: autoCollapse,
depth,
isKeyMapped,
fetchMappedDocument,
keyPath: currentKeyPath(),
mappings
});
}
$$renderer3.push(`<!--]--></span>`);
} else {
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]-->`);
if (collapsed) {
$$renderer3.push("<!--[0-->");
$$renderer3.push(`<span class="collapsed-summary svelte-1c374kz">... ${escape_html(Object.keys(value).length)} key${escape_html(Object.keys(value).length !== 1 ? "s" : "")}</span>`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`${escape_html(getIndent(depth))}`);
}
$$renderer3.push(`<!--]-->}</span>`);
}
$$renderer3.push(`<!--]-->`);
} else {
$$renderer3.push("<!--[-1-->");
$$renderer3.push(`<span>${escape_html(String(value))}</span>`);
}
$$renderer3.push(`<!--]-->`);
};
$$renderer2.push("<!--[-1-->");
if (hasUrlMappings()) {
$$renderer2.push("<!--[0-->");
$$renderer2.push(`<span class="string mapped url svelte-1c374kz"><!--[-->`);
const each_array_2 = ensure_array_like(urlMappings());
for (let i = 0, $$length = each_array_2.length; i < $$length; i++) {
let urlMapping = each_array_2[i];
if (i > 0) {
$$renderer2.push("<!--[0-->");
$$renderer2.push(`|`);
} else {
$$renderer2.push("<!--[-1-->");
}
$$renderer2.push(`<!--]--> <a${attr("href", interpolateUrl(urlMapping.template, value))} target="_blank" class="inline-flex items-center gap-1 svelte-1c374kz">`);
valueSnippet?.($$renderer2);
$$renderer2.push(`<!----> `);
IconExternalLink($$renderer2, { class: "w-3 h-3 inline-block opacity-70" });
$$renderer2.push(`<!----></a>`);
}
$$renderer2.push(`<!--]--></span>`);
} else if (hasCollectionMappings()) {
$$renderer2.push("<!--[1-->");
{
let trigger = function($$renderer3) {
$$renderer3.push(`<span${attr_class("string mapped svelte-1c374kz", void 0, { "url": isUrl(value) })} role="button" tabindex="0">`);
{
$$renderer3.push("<!--[-1-->");
valueSnippet?.($$renderer3);
}
$$renderer3.push(`<!--]--></span>`);
}, content = function($$renderer3) {
{
$$renderer3.push("<!--[-1-->");
}
$$renderer3.push(`<!--]-->`);
};
Tooltip($$renderer2, {
show: showTooltip,
tooltipClass: "max-w-[600px] max-h-[400px] overflow-auto whitespace-pre-wrap",
onTooltipMouseEnter: handleTooltipMouseEnter,
onTooltipMouseLeave: handleTooltipMouseLeave,
trigger,
content
});
}
} else {
$$renderer2.push("<!--[-1-->");
valueSnippet?.($$renderer2);
}
$$renderer2.push(`<!--]-->`);
if (depth !== 0) {
$$renderer2.push("<!--[0-->");
$$renderer2.push(`,`);
} else {
$$renderer2.push("<!--[-1-->");
}
$$renderer2.push(`<!--]-->`);
}
$$renderer2.push(`<!--]-->`);
});
}
export { JsonValue_1 as J };
//# sourceMappingURL=JsonValue-CGVfzyTL.js.map