apiconnect-explorer
Version:
- [Getting Started](#getting-started) - [Configuration](#configuration) * [Required](#required) * [Optional](#optional) - [Usage in React](#usage-in-react) - [Usage outside of React](#usage-outside-of-react) - [Detailed description of options](#detail
1 lines • 16.8 kB
JavaScript
function a(b){"@babel/helpers - typeof";return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},a(b)}function b(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function c(a){for(var c,e=1;e<arguments.length;e++)c=null==arguments[e]?{}:arguments[e],e%2?b(Object(c),!0).forEach(function(b){d(a,b,c[b])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):b(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))});return a}function d(a,b,c){return(b=f(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function f(b){var c=g(b,"string");return"symbol"==a(c)?c:c+""}function g(b,c){if("object"!=a(b)||!b)return b;var d=b[Symbol.toPrimitive];if(void 0!==d){var e=d.call(b,c||"default");if("object"!=a(e))return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===c?String:Number)(b)}function h(a,b){return m(a)||l(a,b)||j(a,b)||i()}function i(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(b,c){if(b){if("string"==typeof b)return k(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?k(b,c):void 0}}function k(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function l(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d["return"]&&(k=d["return"](),Object(k)!==k))return}finally{if(m)throw h}}return l}}function m(a){if(Array.isArray(a))return a}import n,{useEffect as o,useState as p,useMemo as q,useCallback as r}from"react";import s from"classnames";import{FormGroup as u,RadioButton as v,RadioButtonGroup as w,Search as x,Checkbox as y,Button as z,Layer as A}from"@carbon/react";import{SettingsAdjust as B,CollapseCategories as C,ExpandCategories as D}from"@carbon/react/icons";import{isEmpty as E}from"lodash";import{apiPath as F,getCurrentItemFromPath as G,eventPath as H}from"./../utils/navigation.js";import{useConfig as I}from"./../contexts/config/index.js";import{useTranslation as J}from"react-i18next";import{useApi as K}from"contexts/ApiHandler";import{Link as L,useLocation as M}from"react-router-dom";import N from"./MenuDropdown.tsx";import{cleanUpKey as O,filterTags as P,filterOperations as Q,highlightCleaner as R,objectToArray as S,filterChannels as T,filterWebhooks as U}from"../utils/common";import{getTranslatedExtensions as V}from"../utils/translate";import W from"../utils/api-factory.ts";import{getBidiAlignLogical as X}from"../utils/getDirectionalAlign";var Y={selectedApi:null,definitionNames:[],tagHierarchy:null,hasTags:!1,hasOperationIds:!1,hasSummaries:!1,operationsArray:[],webhooksArray:[],viewBy:"path",groupByTags:!1,expandedAll:null},Z=function(a,b,c,d,e){a.paths||(a.paths={});var f=/^3\.1\..*$/.test(a.openapi);f&&Object.keys(a.webhooks).forEach(function(b){Object.keys(a.webhooks[b]).forEach(function(a){c.webhooksArray.push({method:a,event:b})})}),c.tagHierarchy=b.getApiTags(a);var g=[];return Object.keys(a.paths).forEach(function(b){Object.keys(a.paths[b]).forEach(function(f){if(0<=["get","put","post","delete","options","patch","head","trace"].indexOf(f.toLowerCase())){var h={method:f,path:b};if(a.paths[b][f].operationId&&(h.operationId=a.paths[b][f].operationId,c.hasOperationIds=!0),a.paths[b][f].summary&&(h.summary=a.paths[b][f].summary,c.hasSummaries=!0),a.paths[b][f]["x-ibm-languages"]&&(h["x-ibm-languages"]=a.paths[b][f]["x-ibm-languages"]),a.paths[b][f].tags&&(h.tags=a.paths[b][f].tags),a.paths[b][f].deprecated&&(h.deprecated=a.paths[b][f].deprecated),c.operationsArray.push(h),h.tags){var i=c.tagHierarchy;h.tags.forEach(function(b){i.tags[b]||(i.tags[b]={tags:{},operations:[]}),e?i=i.tags[b]:-1===i.tags[b].operations.indexOf(h)&&i.tags[b].operations.push(h),(d||a.info&&a.info["x-codegen-config"]&&a.info["x-codegen-config"].groupMethodsByTag)&&(c.groupByTags=!0)}),e&&i.operations.push(h)}else g.push(h)}})}),c.tagHierarchy&&0<Object.keys(c.tagHierarchy.tags).length?(c.hasTags=!0,0<g.length&&(c.tagHierarchy.tags["default"]={tags:{},operations:[]},c.tagHierarchy.tags["default"].operations=g)):c.hasTags=!1,c},$=function(a,b,c,d,e){var f={selectedApi:"".concat(a.info.title,"_").concat(a.info.version),operationsArray:[],webhooksArray:[],tagHierarchy:{tags:{},operations:[]},hasTags:!1,hasOperationIds:!1,hasSummaries:!1,selectedTocItem:null,groupByTags:!1,isSOAP:!1};a.asyncapi||(f=Z(a,b,f,c,e)),f.viewBy=d||"path",b.isSOAP(a)&&(f.isSOAP=!0,f.viewBy=d||"operations");var g=b.getSchemas(a);return f.definitionNames=g?Object.keys(g):[],f};function _(a){var b=a.showFilters,c=a.viewbyHandler,d=a.viewBy,e=a.filterOptions,f=a.hasTags,g=a.toggleTags,h=a.groupByTags,i=a.t;return n.createElement("div",{className:s("menuOptions",b?"":"notRendered"),role:"menuitem",tabIndex:"0"},n.createElement(u,{legendText:i("view_operations_by")},n.createElement(w,{orientation:"horizontal",className:"viewByOptions",name:"cds-apim--menu-viewby",label:i("view_operations_by"),role:"radiogroup",onChange:c,valueSelected:d},e)),f&&n.createElement("div",{className:"tagFilterOption"},n.createElement(y,{onChange:g,id:"groupByTagsCheck",labelText:i("group_by_tags"),checked:h,"data-testid":"tag-filter-tags-option"})))}_.displayName="FilterOptions";function aa(a){var b=a.onSelectedOperationChange,d=K(),e=d.api,f=d.apiHandler,g=d.loading,i=d.error,j=I(),k=j.options,l=j.apis,m=j.docs,u=p(!1),w=h(u,2),y=w[0],Z=w[1],aa=J(),ba=aa.t,t=p(Y),ca=h(t,2),da=ca[0],ea=ca[1],fa=p(null),ga=h(fa,2),ha=ga[0],ia=ga[1],ja=M();o(function(){ia(G(ja.pathname))},[ja.pathname]),o(function(){if(!g&&!i&&!E(e)&&null!=f){var a=$(e,f,k.groupByTags,k.menuView,k.nestedTags);ea(function(b){return c(c(c({},b),a),{},{query:""})})}},[e,f,g,k.groupByTags,k.menuView,k.nestedTags,i]);var ka=function(){var a=P(da.tagHierarchy.tags,da.viewBy,da.query);return S(a)},la=function(a){ea(c(c({},da),{},{viewBy:a}))},ma=function(a){ea(c(c({},da),{},{query:a.target.value}))},na=function(){ea(c(c({},da),{},{groupByTags:!da.groupByTags}))},oa=function(){ea(c(c({},da),{},{expandedAll:!0}))},pa=function(){ea(c(c({},da),{},{expandedAll:!1}))},qa=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},d=a.map(function(a){var d="doc_".concat(O(a.name)),e=b.embedded&&b.api?"/".concat(F(b.api),"/documentation/").concat(b.parent?"".concat(b.parent,"/"):"").concat(a.name):"/documentation/".concat(b.parent?"".concat(b.parent,"/"):"").concat(a.name),f=n.createElement(L,{to:e,className:s("cds--side-nav__link ","truncate","toc-api","toc-navigate-".concat(d),{selected:ha===G(e)})},n.createElement("span",{className:"cds--side-nav__link-text"},V(a,"title")));if(a.docs&&0<a.docs.length){var g=qa(a.docs,c(c({},b),{},{parent:"".concat(b.parent?"".concat(b.parent,"/"):"").concat(a.name)}));return n.createElement("li",{key:d,className:s("cds--side-nav__menu-item","tocItem","docItem",d)},f,n.createElement("ul",{className:"doc-tree--list"},g))}return n.createElement("li",{key:d,className:s("cds--side-nav__menu-item","tocItem","docItem",d)},f)});return d},ra=r(function(a){switch(da.viewBy){case"summary":return a.summary?R(V(a,"summary"),da.query):"".concat(a.method.toUpperCase()," ").concat(a.path);case"path":return"".concat(a.method.toUpperCase()," ").concat(a.path);case"operations":return R(a.operationId,da.query);default:}},[da.viewBy,da.query]);o(function(){if(ha&&0<da.operationsArray.length){var a=da.operationsArray.find(function(a){var b="/".concat(F(e),"/operation/").concat(encodeURIComponent(a.path),"/").concat(a.method);return ha===G(b)});if(a&&b){var c=ra(a);b(c)}else b&&b(null)}},[ha,da.operationsArray,da.viewBy,da.query,e,b,ra]);var sa=function(a){return a.map(function(a){var b="/".concat(F(e),"/operation/").concat(encodeURIComponent(a.path),"/").concat(a.method);return{displayName:ra(a),route:b,selected:ha===G(b)}})},ta=function(a){ea(c(c({},da),{},{expandedAll:null,expanded:a}))},ua=function(a){a.value&&(a=a.value);var b,c=sa(a.operations);return a.tags&&(b=Object.entries(a.tags).reduce(function(a,b){var c=h(b,2),d=c[0],e=c[1];return a[d]=ua(e),a[d].onToggle=ta,a},{})),{menuItems:c,nestedMenus:b}},va=function(){return[ka().map(function(a,b){var c=ua(a),d=c.menuItems,e=c.nestedMenus,f=a.key,g=!1;return n.createElement("li",{key:"".concat(a+b),className:s("cds--side-nav__menu-item","tocItem","tagListItem"),"data-testid":"grouped-menu-item"},n.createElement(N,{className:"menuDropdown",selected:g,displayName:f,menuItems:d,nestedMenus:e,isExpanded:da.expandedAll||g,onToggle:ta}))})]},wa=function(a,b,c){var d=T(c.api.channels().all(),b);return d.map(function(d){var e,f=d.id(),g=O("channel_".concat(f)),h=c.api.operations().filterBy(function(a){return a.channels().has(f)}),i=H(a,f,"overview"),j=h.map(function(b){var c=b.action();return e=H(a,f,"operation/".concat(b.id()?encodeURIComponent(b.id()):c)),{displayName:b.id()?"".concat(b.id()," (").concat(ba(b.action()),")"):ba("channel_".concat(c,"_menu")),route:e,selected:ha===G(e)}}),k=0<c.api.operations().all().length;return n.createElement("li",{className:s("tocItem","cds--side-nav__menu-item"),key:g},k?n.createElement(N,{className:"menuDropdown",displayName:f,menuItems:j,isExpanded:ha===G(e)||ha===G(i)&&da.expanded||da.expandedAll,onToggle:ta,selected:ha===G(i),to:i,highlightedQuery:b}):n.createElement(L,{to:i,className:s("cds--side-nav__link","truncate toc-selectable","toc-navigate-".concat(g),{selected:ha===G(i)}),title:f},n.createElement("span",{className:s("cds--side-nav__link-text","menu-item-no-expand"),dangerouslySetInnerHTML:{__html:R(f,b)},"data-testid":"channel-no-dropdown"})))})},xa=da.definitionNames,ya=da.hasTags,za=da.hasOperationIds,Aa=da.hasSummaries,Ba=da.operationsArray,Ca=da.webhooksArray,Da=da.viewBy,Ea=da.groupByTags,Fa=da.query,Ga=da.isSOAP,Ha=[n.createElement(v,{key:"path",className:"option",value:"path",labelText:ba("operations_by_path"),"data-testid":"tag-filter-view-by-path"})];za&&Ha.push(n.createElement(v,{key:"operations",className:"option",value:"operations",labelText:ba("operations_by_name"),"data-testid":"tag-filter-view-by-name"})),Aa&&Ha.push(n.createElement(v,{key:"summary",className:"option",value:"summary",labelText:ba("operations_by_summary"),"data-testid":"tag-filter-view-by-summary"})),Ga&&1<Ha.length&&Ha.shift();var Ia=q(function(){return new W(e)},[e]),Ja=function(a,b,c){return(n.createElement(n.Fragment,null,b&&"".concat(b.info.title,"_").concat(b.info.version)==="".concat(a.info.title,"_").concat(a.info.version)&&!i&&n.createElement("ul",{className:s("apiContent"),role:"menu"},n.createElement("li",{className:"searchListItem"},n.createElement(A,null,n.createElement(x,{className:"search-input",onChange:ma,labelText:ba("filter"),id:"search__input",placeholder:ba("filter")})),(ya||Aa||za)&&n.createElement("div",{className:"menuViewChooser","data-floating-menu-container":!0},n.createElement("div",{className:"menuFilter"},n.createElement(z,{hasIconOnly:!0,kind:"ghost",iconDescription:ba("filter_options"),renderIcon:B,onClick:function(){Z(!y)},title:ba("filter_options"),tooltipPosition:"bottom",tooltipAlignment:X("end"),"data-testid":"tag-filter-options",size:"md"})),Ea&&n.createElement("div",null,da.expandedAll?n.createElement(z,{hasIconOnly:!0,kind:"ghost",iconDescription:ba("collapse_all"),renderIcon:C,onClick:pa,title:ba("collapse_all"),tooltipPosition:"bottom",tooltipAlignment:X("end"),"data-testid":"collapse-all"}):n.createElement(z,{hasIconOnly:!0,kind:"ghost",iconDescription:ba("expand_all"),renderIcon:D,onClick:oa,title:ba("expand_all"),tooltipPosition:"bottom",tooltipAlignment:X("end"),"data-testid":"expand-all"})))),n.createElement(_,{showFilters:y,viewbyHandler:la,viewBy:Da,filterOptions:Ha,hasTags:ya,toggleTags:na,groupByTags:da.groupByTags,t:ba}),n.createElement("li",{className:s("cds--side-nav__menu-item","tocOverview","tocHeader"),"data-testid":"overview-menu-item"},n.createElement(L,{to:"/".concat(F(a),"/overview"),className:s({selected:ha===G("/".concat(F(a),"/overview"))},"truncate","toc-api","cds--side-nav__link","toc-navigate-overview_".concat(O("".concat(a.info.title,"_").concat(a.info.version)))),tabIndex:"0"},n.createElement("span",{className:"cds--side-nav__link-text"},ba("overview")))),a["x-embedded-doc"]&&qa(a["x-embedded-doc"],{embedded:!0,api:a}),Ea&&va(),!Ea&&("operations"===Da||"summary"===Da||"path"===Da)&&[Q(Ba,Da,Fa).map(function(b){var c="operation_".concat(b.method,"_").concat(O(b.path)),d="/".concat(F(a),"/operation/").concat(encodeURIComponent(b.path),"/").concat(b.method);return n.createElement("li",{className:s("tocItem","toc-op-method-".concat(O(b.method)),"toc-op-path-".concat(O(b.path)),"cds--side-nav__menu-item"),key:c,"data-testid":"operation-menu-items"},n.createElement(L,{to:d,className:s("cds--side-nav__link","truncate toc-selectable","toc-navigate-".concat(c),{selected:ha===G(d)},{deprecated:b.deprecated}),title:"".concat(b.method," ").concat(b.path)},b.summary&&"summary"===Da&&n.createElement("span",{className:"cds--side-nav__link-text",dangerouslySetInnerHTML:{__html:R(V(b,"summary"),Fa)}}),b.operationId&&"operations"===Da&&n.createElement("span",{className:"cds--side-nav__link-text",dangerouslySetInnerHTML:{__html:R(b.operationId,Fa)}}),(!b.operationId&&"operations"===Da||!b.summary&&"summary"===Da||"path"===Da)&&n.createElement("span",{className:s("cds--side-nav__link-text")},n.createElement("span",{className:s("operation-method-".concat(b.method))},b.method.toUpperCase()),n.createElement("span",{className:s("operation-path"),dangerouslySetInnerHTML:{__html:R(" ".concat(b.path),Fa)}}))))})],a.webhooks&&U(Ca,Fa).map(function(b){return n.createElement("li",{className:s("tocItem","toc-op-method-".concat(O(b.event)),"toc-op-path-".concat(O(b.method)),"cds--side-nav__menu-item"),key:"webhook_".concat(b.event,"_").concat(O(b.method)),"data-testid":"webhook-menu-items"},n.createElement(L,{to:"/".concat(F(a),"/webhook/").concat(encodeURIComponent(b.event)),className:s("cds--side-nav__link","truncate toc-selectable","toc-navigate-".concat("operation_".concat(b.method,"_").concat(O(b.method))),{selected:ha===G("/".concat(F(a),"/webhook/").concat(b.event))},"truncate","toc-api","cds--side-nav__link","toc-navigate-overview_".concat(O("".concat(a.info.title,"_").concat(a.info.version)))),title:"webhook: ".concat(b.event," ")},n.createElement("span",{className:s("cds--side-nav__link-text")},n.createElement("span",{className:s("operation-method-".concat(b.method))},b.method.toUpperCase()),n.createElement("span",{className:s("operation-path"),dangerouslySetInnerHTML:{__html:R(" ".concat(b.event),Fa)}}))))}),0<xa.length&&n.createElement("li",{key:"definitions-title",className:"tocItem tocDefinitions tocHeader","data-testid":"definitions-menu-item"},n.createElement(L,{to:"/".concat(F(a),"/definitions"),className:s({selected:ha===G("/".concat(F(a),"/definitions"))},"cds--side-nav__link","truncate","toc-api","toc-navigate-definitions_".concat(O("".concat(a.info.title,"_").concat(a.info.version))))},n.createElement("span",{className:"cds--side-nav__link-text"},ba("definitions")))),a.asyncapi&&wa(a,Fa,c))))};return n.createElement("div",{className:"apiconnect-explorer-menu stretch","data-testid":"explorer-menu"},n.createElement("section",{"aria-label":ba("menu"),className:"underMainBanner amp-margin"},n.createElement("div",{className:"explorer-toc"},n.createElement("ul",{className:s("cds--side-nav__items")},m&&qa(m),l.map(function(a){return n.createElement("li",{key:"".concat(a.info.title,"_").concat(a.info.version),"data-testid":"total-apis-listed",className:s("cds--side-nav__menu-item","apiMenu","api-title-".concat(O(a.info.title)),"api-version-".concat(O(a.info.version)),Ia.isSOAP(a)?"api-soap":"api-rest")},1<l.length&&n.createElement(L,{to:"/".concat(F(a),"/overview"),className:s("cds--side-nav__link","truncate","toc-api","toc-navigate-".concat(O("".concat(a.info.title,"_").concat(a.info.version))))},n.createElement("span",{className:"cds--side-nav__link-text"},V(a.info,"title")," ",a.info.version)),!g&&Ja(a,e,f))})))))}export default aa;