UNPKG

@scalar/api-reference

Version:

Generate beautiful API references from OpenAPI documents

115 lines (114 loc) 4.99 kB
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 };