161 lines
5.3 KiB
JavaScript
161 lines
5.3 KiB
JavaScript
import { defineComponent, toRefs, computed, useSlots, useSSRContext, h } from 'vue';
|
|
import { u as useAsyncData } from './asyncData-e8a8bfb6.mjs';
|
|
import { d as useState, u as useRuntimeConfig } from '../server.mjs';
|
|
import { hash } from 'ohash';
|
|
import { _ as __nuxt_component_0 } from './nuxt-link-691ee40a.mjs';
|
|
import { q as queryContent, e as encodeQueryParams, j as jsonStringify } from './query-e0164f92.mjs';
|
|
import { u as useContentDisabled, w as withContentBase, a as addPrerenderPath, s as shouldUseClientDB } from './utils-6d756e03.mjs';
|
|
import { u as useContentPreview } from './preview-38d6e135.mjs';
|
|
import 'ofetch';
|
|
import 'hookable';
|
|
import 'unctx';
|
|
import 'h3';
|
|
import '@unhead/ssr';
|
|
import 'unhead';
|
|
import '@unhead/shared';
|
|
import 'vue-router';
|
|
import 'ufo';
|
|
import '@intlify/core-base';
|
|
import 'cookie-es';
|
|
import 'is-https';
|
|
import 'anu-vue';
|
|
import 'vue/server-renderer';
|
|
import 'defu';
|
|
import '../../nitro/node-server.mjs';
|
|
import 'node-fetch-native/polyfill';
|
|
import 'node:http';
|
|
import 'node:https';
|
|
import 'destr';
|
|
import 'unenv/runtime/fetch/index';
|
|
import 'scule';
|
|
import 'klona';
|
|
import 'unstorage';
|
|
import 'unstorage/drivers/fs';
|
|
import 'unstorage/drivers/overlay';
|
|
import 'unstorage/drivers/memory';
|
|
import 'radix3';
|
|
import 'node:fs';
|
|
import 'node:url';
|
|
import 'pathe';
|
|
import '@intlify/bundle-utils';
|
|
import 'unified';
|
|
import 'mdast-util-to-string';
|
|
import 'micromark/lib/preprocess.js';
|
|
import 'micromark/lib/postprocess.js';
|
|
import 'unist-util-stringify-position';
|
|
import 'micromark-util-character';
|
|
import 'micromark-util-chunked';
|
|
import 'micromark-util-resolve-all';
|
|
import 'remark-emoji';
|
|
import 'rehype-slug';
|
|
import 'remark-squeeze-paragraphs';
|
|
import 'rehype-external-links';
|
|
import 'remark-gfm';
|
|
import 'rehype-sort-attribute-values';
|
|
import 'rehype-sort-attributes';
|
|
import 'rehype-raw';
|
|
import 'remark-mdc';
|
|
import 'remark-parse';
|
|
import 'remark-rehype';
|
|
import 'mdast-util-to-hast';
|
|
import 'detab';
|
|
import 'unist-builder';
|
|
import 'mdurl';
|
|
import 'slugify';
|
|
import 'unist-util-position';
|
|
import 'unist-util-visit';
|
|
import 'shiki-es';
|
|
import 'unenv/runtime/npm/consola';
|
|
|
|
const fetchContentNavigation = async (queryBuilder) => {
|
|
const { content } = useRuntimeConfig().public;
|
|
if (typeof (queryBuilder == null ? void 0 : queryBuilder.params) !== "function") {
|
|
queryBuilder = queryContent(queryBuilder);
|
|
}
|
|
const params = queryBuilder.params();
|
|
const apiPath = content.experimental.stripQueryParameters ? withContentBase(`/navigation/${`${hash(params)}.${content.integrity}`}/${encodeQueryParams(params)}.json`) : withContentBase(`/navigation/${hash(params)}.${content.integrity}.json`);
|
|
{
|
|
addPrerenderPath(apiPath);
|
|
}
|
|
if (shouldUseClientDB()) {
|
|
const generateNavigation = await import('./client-db-d3e6e918.mjs').then((m) => m.generateNavigation);
|
|
return generateNavigation(params);
|
|
}
|
|
const data = await $fetch(apiPath, {
|
|
method: "GET",
|
|
responseType: "json",
|
|
params: content.experimental.stripQueryParameters ? void 0 : {
|
|
_params: jsonStringify(params),
|
|
previewToken: useContentPreview().getPreviewToken()
|
|
}
|
|
});
|
|
if (typeof data === "string" && data.startsWith("<!DOCTYPE html>")) {
|
|
throw new Error("Not found");
|
|
}
|
|
return data;
|
|
};
|
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
name: "ContentNavigation",
|
|
props: {
|
|
/**
|
|
* A query to be passed to `fetchContentNavigation()`.
|
|
*/
|
|
query: {
|
|
type: Object,
|
|
required: false,
|
|
default: void 0
|
|
}
|
|
},
|
|
async setup(props) {
|
|
const {
|
|
query
|
|
} = toRefs(props);
|
|
const queryBuilder = computed(() => {
|
|
var _a;
|
|
if (typeof ((_a = query.value) == null ? void 0 : _a.params) === "function") {
|
|
return query.value.params();
|
|
}
|
|
return query.value;
|
|
});
|
|
if (!queryBuilder.value && useState("dd-navigation").value) {
|
|
const { navigation: navigation2 } = useContentDisabled();
|
|
return { navigation: navigation2 };
|
|
}
|
|
const { data: navigation } = await useAsyncData(
|
|
`content-navigation-${hash(queryBuilder.value)}`,
|
|
() => fetchContentNavigation(queryBuilder.value)
|
|
);
|
|
return { navigation };
|
|
},
|
|
/**
|
|
* Navigation empty fallback
|
|
* @slot empty
|
|
*/
|
|
render(ctx) {
|
|
const slots = useSlots();
|
|
const { navigation } = ctx;
|
|
const renderLink = (link) => h(__nuxt_component_0, { to: link._path }, () => link.title);
|
|
const renderLinks = (data, level) => h(
|
|
"ul",
|
|
level ? { "data-level": level } : null,
|
|
data.map((link) => {
|
|
if (link.children) {
|
|
return h("li", null, [renderLink(link), renderLinks(link.children, level + 1)]);
|
|
}
|
|
return h("li", null, renderLink(link));
|
|
})
|
|
);
|
|
const defaultNode = (data) => renderLinks(data, 0);
|
|
return (slots == null ? void 0 : slots.default) ? slots.default({ navigation, ...this.$attrs }) : defaultNode(navigation);
|
|
}
|
|
});
|
|
const _sfc_setup = _sfc_main.setup;
|
|
_sfc_main.setup = (props, ctx) => {
|
|
const ssrContext = useSSRContext();
|
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/.pnpm/@nuxt+content@2.6.0_rollup@2.79.1/node_modules/@nuxt/content/dist/runtime/components/ContentNavigation.vue");
|
|
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
|
};
|
|
|
|
export { _sfc_main as default };
|
|
//# sourceMappingURL=ContentNavigation-6f0aad9c.mjs.map
|