@scalar/api-reference
Version:
Generate beautiful API references from OpenAPI documents
115 lines (114 loc) • 4.99 kB
JavaScript
import { defineComponent as E, computed as o, ref as B, createElementBlock as C, openBlock as n, createVNode as u, createElementVNode as p, unref as r, withCtx as b, createBlock as d, createCommentVNode as h, normalizeClass as y, toDisplayString as P } from "vue";
import { Disclosure as S, DisclosureButton as q, DisclosurePanel as V } from "@headlessui/vue";
import { ScalarMarkdown as D } from "@scalar/components";
import { isDefined as R } from "@scalar/helpers/array/is-defined";
import { ScalarIconCaretRight as I } from "@scalar/icons";
import { getResolvedRef as g } from "@scalar/workspace-store/helpers/get-resolved-ref";
import O from "../../../components/Content/Schema/SchemaProperty.vue.js";
import { useConfig as N } from "../../../hooks/useConfig.js";
import j from "./ContentTypeSelect.vue.js";
import z from "./Headers.vue.js";
const F = { class: "parameter-item group/parameter-item relative" }, W = { class: "parameter-item-name" }, H = { class: "parameter-item-type" }, L = { class: "absolute top-3 right-0 opacity-0 group-focus-within/parameter-item:opacity-100 group-hover/parameter-item:opacity-100" }, Z = /* @__PURE__ */ E({
__name: "ParameterListItem",
props: {
parameter: {},
name: {},
collapsableItems: { type: Boolean, default: !1 },
withExamples: { type: Boolean, default: !0 },
breadcrumb: {}
},
setup(e) {
const v = N(), s = o(
() => "schema" in e.parameter && e.parameter.schema ? g(e.parameter.schema) : null
), t = o(
() => "content" in e.parameter && e.parameter.content ? e.parameter.content : null
), i = B(Object.keys(t.value || {})[0]), f = o(
() => "headers" in e.parameter && e.parameter.headers ? e.parameter.headers : null
), k = o(() => {
const a = t.value ? t.value?.[i.value]?.schema : s.value, c = "deprecated" in e.parameter ? e.parameter.deprecated : s.value?.deprecated, m = "examples" in e.parameter ? e.parameter.examples : {}, w = s.value?.examples ?? [], x = [...Object.values({
...m,
...t.value?.[i.value]?.examples
}), ...w];
return {
...g(a),
deprecated: c,
..."example" in e.parameter && R(e.parameter.example) && { example: e.parameter.example },
examples: x
};
}), l = o(
() => !!(e.collapsableItems && (t.value || f.value || s.value))
);
return (a, c) => (n(), C("li", F, [
u(r(S), null, {
default: b(({ open: m }) => [
l.value ? (n(), d(r(q), {
key: 0,
class: y(["parameter-item-trigger", { "parameter-item-trigger-open": m }])
}, {
default: b(() => [
p("span", W, [
u(r(I), {
class: y(["parameter-item-icon size-3 transition-transform duration-100", { "rotate-90": m }]),
weight: "bold"
}, null, 8, ["class"]),
p("span", null, P(a.name), 1)
]),
p("span", H, [
a.parameter.description ? (n(), d(r(D), {
key: 0,
class: "markdown",
value: a.parameter.description
}, null, 8, ["value"])) : h("", !0)
])
]),
_: 2
}, 1032, ["class"])) : h("", !0),
u(r(V), {
class: "parameter-item-container parameter-item-container-markdown",
static: !l.value
}, {
default: b(() => [
f.value ? (n(), d(z, {
key: 0,
breadcrumb: a.breadcrumb,
config: r(v),
headers: f.value
}, null, 8, ["breadcrumb", "config", "headers"])) : h("", !0),
u(O, {
is: "div",
breadcrumb: a.breadcrumb,
compact: "",
description: l.value ? "" : a.parameter.description,
hideWriteOnly: !0,
name: l.value ? "" : a.name,
noncollapsible: !0,
options: {
hideWriteOnly: !0,
orderRequiredPropertiesFirst: r(v).orderRequiredPropertiesFirst,
orderSchemaPropertiesBy: r(v).orderSchemaPropertiesBy
},
required: "required" in a.parameter && a.parameter.required,
schema: k.value,
withExamples: a.withExamples
}, null, 8, ["breadcrumb", "description", "name", "options", "required", "schema", "withExamples"])
]),
_: 1
}, 8, ["static"])
]),
_: 1
}),
p("div", L, [
l.value && t.value ? (n(), d(j, {
key: 0,
modelValue: i.value,
"onUpdate:modelValue": c[0] || (c[0] = (m) => i.value = m),
class: "parameter-item-content-type",
content: t.value
}, null, 8, ["modelValue", "content"])) : h("", !0)
])
]));
}
});
export {
Z as default
};