@redocly/asyncapi-docs
Version:
Async API docs for Redocly Realm
49 lines (48 loc) • 4.62 kB
JavaScript
import{Fragment as f,jsx as i,jsxs as r}from"react/jsx-runtime";import l from"styled-components";import{useAtomValue as u}from"jotai";import{Row as W,SamplesMiddlePanel as I,OperationSamplesPanel as R,Section as $,makeDeepLink as E,CustomBadges as F}from"@redocly/openapi-docs";import{LayoutVariant as K}from"@redocly/config";import{useMemo as O,useCallback as P,memo as N}from"react";import{useNavigate as U}from"react-router-dom";import{H4 as y}from"@redocly/theme/components/Typography/H4";import{ArrowUpRightIcon as V}from"@redocly/theme/icons/ArrowUpRightIcon/ArrowUpRightIcon";import{LinkIcon as q}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{combineUrls as L}from"@redocly/theme/core/openapi";import{PageActions as G}from"@redocly/theme/components/PageActions/PageActions";import{TagWithIcon as J,Information as Q,ActionTag as X,ShareLink as Y}from"./common/index.js";import{OperationBinding as Z}from"./OperationBinding.js";import{layoutAtom as ee,routingBasePathAtom as ie,definitionAtom as ne}from"../jotai-store/app.js";import{useProtocolLabels as se,useTelemetry as re}from"../hooks/index.js";import{isEqual as le}from"../utils/index.js";const Ce=N(({operation:e,dataSectionId:t,headerRow:x,id:k,showDivider:H})=>{var c,d,m,p;const w=u(ee),g=u(ie),a=u(ne),j=w===K.STACKED,{getProtocolLabel:T}=se(),S=re(),_=O(()=>Object.entries(e?.bindings||{}).map(([n,s])=>({key:n,value:s})),[e?.bindings]),z=O(()=>{var n;return(n=e?.["x-badges"])===null||n===void 0?void 0:n.map(s=>Object.assign(Object.assign({},s),{position:s.position||"after"}))},[e]),M=U(),v=P(n=>{var s,o;return(o=Object.entries(((s=a?.components)===null||s===void 0?void 0:s.messages)||{}).find(([A,D])=>le(D,n)))===null||o===void 0?void 0:o[0]},[(c=a?.components)===null||c===void 0?void 0:c.messages]),B=P(n=>{const s=v(n);if(!s||!t)return;const o=t.substring(1).split("/operations")[0],A=L(g,E(o,`messages&m=${s}`));S.sendMessageClickedMessage([{id:"messageLink",object:"link",uri:"urn:redocly:redoc:ui:link:messageLink",message:s}]),M(A)},[t,v,M,g,S]);if(!e)return null;const h=L(g,t);return i(f,{children:r(ae,{sectionId:h,"data-component-name":"Operation/Operation",hasHeader:!!x,children:[x,r(W,{layout:w,children:[r(me,{isStacked:j,children:[r("div",{children:[r(ge,{children:[r("div",{children:[i(X,{color:e.action,children:T(e.action)}),r(C,{children:[i(F,{badges:z,children:e.title||k}),i(Y,{to:h,"aria-label":`link to ${e.title||k}`})]})]}),i(G,{pageSlug:h})]}),i(Q,{summary:e.summary,description:e.description,externalDocs:e.externalDocs}),((d=e.messages)===null||d===void 0?void 0:d.length)&&r(f,{children:[i(te,{children:"Messages"}),i(oe,{children:(m=e.messages)===null||m===void 0?void 0:m.map((n,s)=>r(pe,{icon:null,onClick:()=>B(n),children:[n.title||n.name||v(n),i(V,{size:"12px"})]},s))})]}),e.reply&&r(f,{children:[i(C,{children:"Reply"}),r(ce,{children:[e.reply.address&&r(b,{children:[i("span",{children:"Address: "}),i("span",{children:e.reply.address.location})]}),e.reply.channel&&r(b,{children:[i("span",{children:"Topic: "}),i("span",{children:e.reply.channel.address})]}),!!(!((p=e.reply.messages)===null||p===void 0)&&p.length)&&r(b,{children:[i("span",{children:"Messages: "}),i("span",{children:e.reply.messages.map(n=>n.title||n.name).join(", ")})]})]})]})]}),H&&i(de,{})]}),i(R,{isStacked:j,className:"panel-container-response-samples",children:!!_.length&&i(Z,{binding:_[0],id:t})})]})]})})}),ae=l($)`
padding: var(--spacing-lg) 0;
scroll-margin-top: ${e=>e.hasHeader?"calc(var(--navbar-height) + var(--banner-height) - var(--spacing-xl)*2)":"calc(var(--navbar-height) + var(--banner-height))"} !important;
`,C=l(y)`
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
margin: 0 0 var(--spacing-xxs) 0;
position: relative;
word-break: break-word;
display: flex;
align-items: center;
gap: var(--spacing-xs);
flex-wrap: wrap;
&:hover {
${q} {
opacity: 1;
visibility: visible;
}
}
`,te=l(y)`
font-size: var(--font-size-base);
font-weight: var(--font-weight-medium);
margin: var(--spacing-sm) 0 0 0;
`,oe=l.div`
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: var(--spacing-xs);
padding: var(--spacing-xs) 0;
`,ce=l.div`
display: flex;
flex-direction: column;
padding: var(--spacing-xs) 0;
`,b=l(y)`
& > span:first-child {
font-weight: var(--font-weight-medium);
}
`,de=l.div`
border-bottom: 1px solid var(--border-color-secondary);
`,me=l(I)`
display: flex;
justify-content: space-between;
`,pe=l(J)`
cursor: pointer;
`,ge=l.div`
display: flex;
align-items: center;
`;export{Ce as Operation};