UNPKG

@redocly/asyncapi-docs

Version:

Async API docs for Redocly Realm

26 lines (23 loc) 2.2 kB
import{Fragment as d,jsx as n,jsxs as r}from"react/jsx-runtime";import{useMemo as p,memo as M}from"react";import{useLocation as b}from"react-router-dom";import{useAtomValue as j}from"jotai";import f from"styled-components";import{SamplesMiddlePanel as k}from"@redocly/openapi-docs";import{useActiveSectionId as A}from"@redocly/theme/core/openapi";import{Typography as P}from"@redocly/theme/components/Typography/Typography";import{Panel as q}from"@redocly/theme/components/Panel/Panel";import{PanelBody as _}from"@redocly/theme/components/Panel/PanelBody";import{PanelHeader as g}from"@redocly/theme/components/Panel/PanelHeader";import{generateMessageReferencesHeader as Q}from"../utils/index.js";import{ChannelLinkItem as h}from"./ChannelLinkItem.js";import{definitionAtom as R}from"./../jotai-store/app.js";const K=M(({messageKey:c})=>{const i=j(R),x=b(),m=A(x,!0),s=p(()=>{var e,a;const o={exchanges:[],queues:[]};if(!i.channels)return o;for(const[y,t]of Object.entries(i.channels))if(t.messages&&t.messages[c]){const l=Object.assign(Object.assign({},t),{key:y});((a=(e=t.bindings)===null||e===void 0?void 0:e.amqp)===null||a===void 0?void 0:a.is)==="routingKey"?o.exchanges.push(l):o.queues.push(l)}return o},[c,i]),v=p(()=>Q(s),[s]);return r(S,{className:"panel-messages-samples",header:()=>n(g,{isExpandable:!1,children:v}),"data-component-name":"MessageAMQPReferences/MessageAMQPReferences",children:[!!s.exchanges.length&&r(d,{children:[n(u,{children:"Exchanges"}),s.exchanges.map(e=>n(h,{channel:e,isActive:m.endsWith(e.key)},e.key))]}),!!s.queues.length&&r(d,{children:[n(u,{children:"Queues"}),s.queues.map(e=>n(h,{channel:e,isActive:m.endsWith(e.key)},e.key))]})]})}),u=f(P)` font-weight: var(--font-weight-semibold); font-size: var(--font-size-sm); padding: var(--spacing-xxs) var(--spacing-md); `,S=f(q)` ${_} { background-color: var(--layer-color-ontonal); padding: 0; display: flex; flex-direction: column; max-height: 206px; overflow-y: scroll; } ${g} { display: flex; justify-content: start; align-items: center; gap: var(--spacing-xs); } ${k} { padding: 0 var(--spacing-md); } `;export{K as MessageAMQPReferences};