@digi-frontend/dgate-api-documentation 1.0.53 → 1.0.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/_virtual/index3.js +1 -1
  2. package/dist/_virtual/index4.js +1 -1
  3. package/dist/_virtual/index5.js +1 -1
  4. package/dist/node_modules/toposort/index.js +1 -1
  5. package/dist/node_modules/yup/index.esm.js +1 -1
  6. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  7. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  8. package/dist/src/helpers/docs.helper.js.map +1 -1
  9. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
  10. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
  11. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js +1 -1
  12. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js.map +1 -1
  13. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
  14. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
  15. package/dist/src/layout/docsLayout.js +1 -1
  16. package/dist/src/layout/docsLayout.js.map +1 -1
  17. package/dist/styles.css +482 -482
  18. package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +5 -0
  19. package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +2 -1
  20. package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +6 -5
  21. package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +4 -2
  22. package/dist/types/layout/docsLayout.d.ts +4 -3
  23. package/package.json +3 -1
  24. package/rollup.config.js +2 -2
  25. package/src/components/MethodAccordion/MethodAccordion.tsx +5 -3
  26. package/src/helpers/docs.helper.ts +1 -0
  27. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +6 -4
  28. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +13 -11
  29. package/src/layout/docsComponents/DocsContent/TagPage/index.tsx +58 -4
  30. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +11 -33
  31. package/src/layout/docsLayout.tsx +99 -21
@@ -1 +1 @@
1
- {"version":3,"file":"DocsSideMenuTree.js","sources":["../../../../../src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx"],"sourcesContent":["import './style.scss'\nimport React, { useEffect, useState } from 'react'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport { arrowDownGray, arrowRightGray, document, eye } from '../../../assets/icons'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\n\nconst DocsSideMenuTree = ({\n apis,\n setActiveItemData,\n activeItemData,\n activeType,\n expandedSections,\n setExpandedSections,\n isFirstApiExpanded,\n setIsFirstApiExpanded,\n setActiveType,\n}: {\n apis: OverviewData[]\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n activeItemData: OverviewData | EndpointData\n expandedSections: Record<string, boolean>\n setExpandedSections: React.Dispatch<React.SetStateAction<Record<string, boolean>>>\n isFirstApiExpanded: boolean\n setIsFirstApiExpanded: React.Dispatch<React.SetStateAction<boolean>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n activeType: 'OVERVIEW' | 'ENDPOINT'\n}) => {\n // Auto-expand first API only once\n useEffect(() => {\n if (!apis?.length || !isFirstApiExpanded) return\n\n const firstApi = apis[0]\n const sectionKey = `api-${firstApi.apiSpecId}-section`\n const overviewKey = `api-${firstApi.apiSpecId}-overview`\n\n setExpandedSections((prev) => ({\n ...prev,\n [sectionKey]: true,\n [overviewKey]: true,\n }))\n\n setActiveItemData(firstApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n }, [apis, isFirstApiExpanded])\n\n const toggleSection = (apiId, sectionId: string, resetOthers?: boolean, key?: string[]) => {\n if (resetOthers && key) {\n const filteredExpandedSections = Object.fromEntries(\n Object.entries({ ...expandedSections }).filter(([expandKey]) => {\n // Close other APIs sections\n if (!expandKey.includes(apiId)) return false\n // always return the clicked on section\n if (expandKey === sectionId) return true\n // filter all sections containing the key\n if (key.some((k) => expandKey.includes(k))) return false\n return true\n })\n )\n\n setExpandedSections({\n ...filteredExpandedSections,\n [sectionId]: !expandedSections[sectionId],\n })\n } else {\n setExpandedSections((prev) => ({\n ...prev,\n [sectionId]: !prev[sectionId],\n }))\n }\n }\n\n const renderEndpoints = (endpoints: EndpointData[], api: OverviewData) =>\n endpoints.map((endpoint, index) => {\n const key = `api-${api.apiSpecId}-resource-${endpoint.id}`\n const isExpanded = expandedSections[key]\n\n return (\n <div\n key={index}\n className={`api-docs-api-tree__endpoint api-docs-api-tree__endpoint--${endpoint.method.toLowerCase()}`}\n onClick={() => {\n if (!isExpanded) {\n setActiveItemData({\n ...endpoint,\n api: {\n id: api.apiSpecId,\n title: api.title,\n description: api.description,\n version: api.version,\n ...api,\n },\n })\n setActiveType('ENDPOINT')\n toggleSection(api.apiSpecId, key, true, ['resource', 'overview'])\n }\n }}\n data-active={isExpanded}\n >\n <span className=\"api-docs-api-tree__endpoint-method\">{endpoint.method}</span>\n <span className=\"api-docs-api-tree__endpoint-name\">{endpoint.path}</span>\n </div>\n )\n })\n\n const renderSubSection = (\n tagName: string,\n data: EndpointData[],\n api: OverviewData,\n sectionIndex: number\n ) => {\n const sectionKey = `api-${api.apiSpecId}-section-${sectionIndex}`\n const isSectionExpanded = expandedSections[sectionKey]\n\n return (\n <div key={sectionKey} className=\"api-docs-api-tree__subsection\">\n <div\n className=\"api-docs-api-tree__subsection-header\"\n onClick={() => toggleSection(api.apiSpecId, sectionKey)}\n >\n {isSectionExpanded ? (\n <SVGLoader src={arrowDownGray} />\n ) : (\n <SVGLoader src={arrowRightGray} />\n )}\n <span className=\"api-docs-api-tree__subsection-title\">{tagName}</span>\n </div>\n\n {isSectionExpanded && (\n <div className=\"api-docs-api-tree__endpoints\">{renderEndpoints(data, api)}</div>\n )}\n </div>\n )\n }\n\n const renderApiSection = (api: OverviewData) => {\n const sectionKey = `api-${api.apiSpecId}-section`\n const endpointsKey = `api-${api.apiSpecId}-endpoints`\n const overviewKey = `api-${api.apiSpecId}-overview`\n\n const isApiExpanded = expandedSections[sectionKey]\n const isOverviewExpanded =\n 'apiSpecId' in activeItemData &&\n activeItemData.apiSpecId === api.apiSpecId &&\n activeType === 'OVERVIEW'\n const isEndpointActive =\n 'api' in activeItemData &&\n activeItemData.api.id === api.apiSpecId &&\n 'path' in activeItemData &&\n 'method' in activeItemData\n\n return (\n <div\n key={api.apiSpecId}\n className=\"api-docs-api-tree__section\"\n data-active={isEndpointActive || isOverviewExpanded}\n >\n <div\n className=\"api-docs-api-tree__section-header\"\n onClick={() => toggleSection(api.apiSpecId, sectionKey)}\n >\n {isApiExpanded ? <SVGLoader src={arrowDownGray} /> : <SVGLoader src={arrowRightGray} />}\n <SVGLoader src={document} />\n <span className=\"api-docs-api-tree__section-title\">{api.title}</span>\n </div>\n\n {isApiExpanded && (\n <>\n <div\n className=\"api-docs-api-tree__section__overview\"\n onClick={() => {\n if (!isOverviewExpanded) {\n toggleSection(api.apiSpecId, overviewKey, true, ['resource'])\n setActiveItemData(api)\n setActiveType('OVERVIEW')\n }\n }}\n data-active={isOverviewExpanded}\n >\n <SVGLoader src={eye} />\n <span>Overview</span>\n </div>\n\n <div\n className=\"api-docs-api-tree__section__endpoints\"\n onClick={() => toggleSection(api.apiSpecId, endpointsKey)}\n data-active={isEndpointActive && !isOverviewExpanded}\n >\n {expandedSections[endpointsKey] ? (\n <SVGLoader src={arrowDownGray} />\n ) : (\n <SVGLoader src={arrowRightGray} />\n )}\n <span>Endpoints</span>\n </div>\n\n {expandedSections[endpointsKey] && (\n <div className=\"api-docs-api-tree__subsections\">\n {Object.entries(api.tags)\n .sort(([a], [b]) =>\n a === 'default' ? 1 : b === 'default' ? -1 : a.localeCompare(b)\n )\n .map(([tagName, data], i) => renderSubSection(tagName, data, api, i))}\n </div>\n )}\n </>\n )}\n </div>\n )\n }\n\n return <aside className=\"api-docs-api-tree\">{apis.map((api) => renderApiSection(api))}</aside>\n}\n\nexport default DocsSideMenuTree\n"],"names":["DocsSideMenuTree","apis","setActiveItemData","activeItemData","activeType","expandedSections","setExpandedSections","isFirstApiExpanded","setIsFirstApiExpanded","setActiveType","useEffect","length","firstApi","sectionKey","apiSpecId","overviewKey","prev","Object","assign","toggleSection","apiId","sectionId","resetOthers","key","filteredExpandedSections","fromEntries","entries","filter","expandKey","includes","some","k","renderEndpoints","endpoints","api","map","endpoint","index","id","isExpanded","_jsxs","className","method","toLowerCase","onClick","title","description","version","children","_jsx","jsx","path","renderApiSection","endpointsKey","isApiExpanded","isOverviewExpanded","isEndpointActive","jsxs","SVGLoader","src","arrowDownGray","arrowRightGray","document","_Fragment","eye","tags","sort","a","b","localeCompare","tagName","data","i","sectionIndex","isSectionExpanded","renderSubSection"],"mappings":"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"}
1
+ {"version":3,"file":"DocsSideMenuTree.js","sources":["../../../../../src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx"],"sourcesContent":["import './style.scss'\nimport React, { useEffect, useState } from 'react'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport { arrowDownGray, arrowRightGray, document, eye } from '../../../assets/icons'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\n\nconst DocsSideMenuTree = ({\n apis,\n setActiveItemData,\n activeItemData,\n activeType,\n expandedSections,\n setExpandedSections,\n isFirstApiExpanded,\n setIsFirstApiExpanded,\n setActiveType,\n toggleSection,\n canSelectFirstApi,\n}: {\n apis: OverviewData[]\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n activeItemData: OverviewData | EndpointData\n expandedSections: Record<string, boolean>\n setExpandedSections: (newSections: Record<string, boolean>) => void\n isFirstApiExpanded: boolean\n setIsFirstApiExpanded: React.Dispatch<React.SetStateAction<boolean>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n activeType: 'OVERVIEW' | 'ENDPOINT'\n toggleSection: (apiId: string, sectionId: string, resetOthers?: boolean, key?: string[]) => void\n canSelectFirstApi?: boolean\n}) => {\n // Auto-expand first API only once\n useEffect(() => {\n if (canSelectFirstApi || !apis?.length || !isFirstApiExpanded) return\n\n const firstApi = apis[0]\n const sectionKey = `api-${firstApi.apiSpecId}-section`\n const overviewKey = `api-${firstApi.apiSpecId}-overview`\n\n setExpandedSections({\n [sectionKey]: true,\n [overviewKey]: true,\n })\n setActiveItemData(firstApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n }, [apis, isFirstApiExpanded])\n\n const renderEndpoints = (endpoints: EndpointData[], api: OverviewData) =>\n endpoints.map((endpoint, index) => {\n const key = `api-${api.apiSpecId}-resource-${endpoint.id}`\n const isExpanded = expandedSections[key]\n\n return (\n <div\n key={index}\n className={`api-docs-api-tree__endpoint api-docs-api-tree__endpoint--${endpoint.method.toLowerCase()}`}\n onClick={() => {\n if (!isExpanded) {\n setActiveItemData({\n ...endpoint,\n api: {\n id: api.apiSpecId,\n title: api.title,\n description: api.description,\n version: api.version,\n ...api,\n },\n })\n setActiveType('ENDPOINT')\n toggleSection(api.apiSpecId, key, true, ['resource', 'overview'])\n }\n }}\n data-active={isExpanded}\n >\n <span className=\"api-docs-api-tree__endpoint-method\">{endpoint.method}</span>\n <span className=\"api-docs-api-tree__endpoint-name\">{endpoint.path}</span>\n </div>\n )\n })\n\n const renderSubSection = (\n tagName: string,\n data: EndpointData[],\n api: OverviewData,\n sectionIndex: number\n ) => {\n const sectionKey = `api-${api.apiSpecId}-section-${sectionIndex}`\n const isSectionExpanded = expandedSections[sectionKey]\n\n return (\n <div key={sectionKey} className=\"api-docs-api-tree__subsection\">\n <div\n className=\"api-docs-api-tree__subsection-header\"\n onClick={() => toggleSection(api.apiSpecId, sectionKey)}\n >\n {isSectionExpanded ? (\n <SVGLoader src={arrowDownGray} />\n ) : (\n <SVGLoader src={arrowRightGray} />\n )}\n <span className=\"api-docs-api-tree__subsection-title\">{tagName}</span>\n </div>\n\n {isSectionExpanded && (\n <div className=\"api-docs-api-tree__endpoints\">{renderEndpoints(data, api)}</div>\n )}\n </div>\n )\n }\n\n const renderApiSection = (api: OverviewData) => {\n const sectionKey = `api-${api.apiSpecId}-section`\n const endpointsKey = `api-${api.apiSpecId}-endpoints`\n const overviewKey = `api-${api.apiSpecId}-overview`\n\n const isApiExpanded = expandedSections[sectionKey]\n const isOverviewExpanded =\n 'apiSpecId' in activeItemData &&\n activeItemData.apiSpecId === api.apiSpecId &&\n activeType === 'OVERVIEW'\n const isEndpointActive =\n 'api' in activeItemData &&\n activeItemData.api.id === api.apiSpecId &&\n 'path' in activeItemData &&\n 'method' in activeItemData\n\n return (\n <div\n key={api.apiSpecId}\n className=\"api-docs-api-tree__section\"\n data-active={isEndpointActive || isOverviewExpanded}\n >\n <div\n className=\"api-docs-api-tree__section-header\"\n onClick={() => toggleSection(api.apiSpecId, sectionKey)}\n >\n {isApiExpanded ? <SVGLoader src={arrowDownGray} /> : <SVGLoader src={arrowRightGray} />}\n <SVGLoader src={document} />\n <span className=\"api-docs-api-tree__section-title\">{api.title}</span>\n </div>\n\n {isApiExpanded && (\n <>\n <div\n className=\"api-docs-api-tree__section__overview\"\n onClick={() => {\n if (!isOverviewExpanded) {\n toggleSection(api.apiSpecId, overviewKey, true, ['resource'])\n setActiveItemData(api)\n setActiveType('OVERVIEW')\n }\n }}\n data-active={isOverviewExpanded}\n >\n <SVGLoader src={eye} />\n <span>Overview</span>\n </div>\n\n <div\n className=\"api-docs-api-tree__section__endpoints\"\n onClick={() => toggleSection(api.apiSpecId, endpointsKey)}\n data-active={isEndpointActive && !isOverviewExpanded}\n >\n {expandedSections[endpointsKey] ? (\n <SVGLoader src={arrowDownGray} />\n ) : (\n <SVGLoader src={arrowRightGray} />\n )}\n <span>Endpoints</span>\n </div>\n\n {expandedSections[endpointsKey] && (\n <div className=\"api-docs-api-tree__subsections\">\n {Object.entries(api.tags)\n .sort(([a], [b]) =>\n a === 'default' ? 1 : b === 'default' ? -1 : a.localeCompare(b)\n )\n .map(([tagName, data], i) =>\n renderSubSection(tagName, data as EndpointData[], api, i)\n )}\n </div>\n )}\n </>\n )}\n </div>\n )\n }\n\n return <aside className=\"api-docs-api-tree\">{apis.map((api) => renderApiSection(api))}</aside>\n}\n\nexport default DocsSideMenuTree\n"],"names":["DocsSideMenuTree","apis","setActiveItemData","activeItemData","activeType","expandedSections","setExpandedSections","isFirstApiExpanded","setIsFirstApiExpanded","setActiveType","toggleSection","canSelectFirstApi","useEffect","length","firstApi","sectionKey","apiSpecId","overviewKey","renderEndpoints","endpoints","api","map","endpoint","index","key","id","isExpanded","_jsxs","className","method","toLowerCase","onClick","Object","assign","title","description","version","children","_jsx","jsx","path","renderApiSection","endpointsKey","isApiExpanded","isOverviewExpanded","isEndpointActive","jsxs","SVGLoader","src","arrowDownGray","arrowRightGray","document","_Fragment","eye","entries","tags","sort","a","b","localeCompare","tagName","data","i","sectionIndex","isSectionExpanded","renderSubSection"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"../../_virtual/jsx-runtime.js";import{useState as t,useRef as s,useEffect as a}from"react";import o from"./docsComponents/index.js";import{transformOpenApiToDocs as r}from"../helpers/docs.helper.js";const i=({apis:i})=>{const[n,c]=t([]),[d,p]=t(!0),[l,m]=t({}),[x,j]=t("OVERVIEW"),[u,v]=t({}),D=s([]),[A,f]=t(!0);a((()=>{var e;if(0===n.length){const t=null===(e=structuredClone(i))||void 0===e?void 0:e.map((e=>r(e))).sort(((e,t)=>e.title.toLowerCase().localeCompare(t.title.toLowerCase())));c(t),D.current=t,t.length>0&&f(!1)}}),[i]);return e.jsxs(o,{children:[e.jsx(o.DocsHeader,{transformedOpenApis:n,updateFilteredData:(e,t=!1)=>{c(t?D.current:e)}}),e.jsx(o.DocsSideMenuTree,{apis:n,setActiveItemData:m,activeItemData:l,expandedSections:u,setExpandedSections:v,isFirstApiExpanded:d,activeType:x,setIsFirstApiExpanded:p,setActiveType:j}),!A&&Object.keys(l).length>0&&e.jsx(o.DocsContent,{data:l,activeType:x,setActiveItemData:m,setActiveType:j,setExpandedSections:v}),"ENDPOINT"===x&&e.jsx(o.DocsAside,{data:l})]})};export{i as default};
1
+ import{j as e}from"../../_virtual/jsx-runtime.js";import t,{useState as s,useRef as i,useEffect as a}from"react";import n from"./docsComponents/index.js";import{transformOpenApiToDocs as c}from"../helpers/docs.helper.js";import o from"fast-json-stable-stringify";var r=t.memo((({apis:t,activeApiId:o})=>{const[r,p]=s([]),[d,l]=s(!0),[j,m]=s({}),[v,g]=s("OVERVIEW"),[u,f]=s({}),O=i([]),[b,x]=s(!0),[I,A]=s(!1),E=(e,t,s,i)=>{if(A(!1),s&&i){const s=Object.fromEntries(Object.entries(Object.assign({},u)).filter((([s])=>!!s.includes(e)&&(s===t||!i.some((e=>s.includes(e)))))));f(Object.assign(Object.assign({},s),{[t]:!u[t]}))}else f((e=>Object.assign(Object.assign({},e),{[t]:!u[t]})))};a((()=>{var e;if(0===r.length){A(!!o);const s=null===(e=structuredClone(t))||void 0===e?void 0:e.map((e=>c(e))).sort(((e,t)=>e.title.toLowerCase().localeCompare(t.title.toLowerCase())));p(s),O.current=s,s.length>0&&x(!1)}}),[t]);return a((()=>{if(o&&r.length>0){const e=r.find((e=>e.apiSpecId===o)),t=`api-${e.apiSpecId}-section`,s=`api-${e.apiSpecId}-overview`;f((e=>Object.assign(Object.assign({},e),{[t]:!0,[s]:!0}))),m(e),g("OVERVIEW"),l(!1),A(!0)}}),[o,r]),e.jsxs(n,{children:[e.jsx(n.DocsHeader,{transformedOpenApis:r,updateFilteredData:(e,t=!1)=>{p(t?O.current:e)}}),!b&&e.jsx(n.DocsSideMenuTree,{apis:r,setActiveItemData:m,activeItemData:j,expandedSections:u,setExpandedSections:e=>f((t=>Object.assign(Object.assign({},t),e))),isFirstApiExpanded:d,activeType:v,setIsFirstApiExpanded:l,setActiveType:g,toggleSection:E,canSelectFirstApi:I}),!b&&Object.keys(j).length>0&&e.jsx(n.DocsContent,{data:j,activeType:v,setActiveItemData:m,setActiveType:g,setExpandedSections:f,toggleSection:E}),"ENDPOINT"===v&&e.jsx(n.DocsAside,{data:j})]})}),(function(e,t){var s,i;return o(null!==(s=e.apis)&&void 0!==s?s:[])===o(null!==(i=t.apis)&&void 0!==i?i:[])&&e.activeApiId===t.activeApiId}));export{r as default};
2
2
  //# sourceMappingURL=docsLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docsLayout.js","sources":["../../../src/layout/docsLayout.tsx"],"sourcesContent":["import React, { JSX, useEffect, useRef, useState } from 'react'\nimport Layout from './docsComponents'\nimport { HTTPMethod, OpenAPIFile, Parameter, RequestBody, Responses } from '@entities/openApi'\nimport { transformOpenApiToDocs } from '../helpers/docs.helper'\nimport { ApiSpecModel } from '@entities/index'\n\ninterface ILayoutProps {\n apis?: ApiSpecModel[]\n}\n\nexport interface TagData {\n id: string\n method: HTTPMethod\n path: string\n tags: string[]\n responses: Responses\n summary?: string\n description: string\n parameters?: Parameter[]\n requestBody?: RequestBody\n}\n\nexport interface EndpointData extends TagData {\n api: {\n id: string\n description: string\n title: string\n version: string\n }\n}\n\nexport interface OverviewData extends Omit<ApiSpecModel, 'metaData'> {\n description: string\n title: string\n version: string\n tags: Record<string, TagData[]>\n servers: OpenAPIFile['servers']\n}\n\nconst DocsLayout = ({ apis }: ILayoutProps): JSX.Element => {\n const [transformedOpenApis, setTransformedOpenApis] = useState([])\n const [isFirstApiExpanded, setIsFirstApiExpanded] = useState(true)\n const [activeItemData, setActiveItemData] = useState<OverviewData | EndpointData | {}>({})\n const [activeType, setActiveType] = useState<'OVERVIEW' | 'ENDPOINT'>('OVERVIEW')\n const [expandedSections, setExpandedSections] = useState({})\n const allData = useRef([]);\n const [pending, setPending] = useState(true)\n useEffect(() => {\n if (transformedOpenApis.length === 0) {\n const t = structuredClone(apis)\n ?.map((o3) => transformOpenApiToDocs(o3))\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n setTransformedOpenApis(t)\n allData.current = t\n if (t.length > 0) {\n setPending(false)\n }\n }\n }, [apis])\n\n const updateFilteredData = (filteredItems, isReset=false) => {\n if(isReset){\n setTransformedOpenApis(allData.current)\n return;\n }\n setTransformedOpenApis(filteredItems)\n }\n\n return (\n <Layout>\n <Layout.DocsHeader transformedOpenApis={transformedOpenApis} updateFilteredData={updateFilteredData}/>\n <Layout.DocsSideMenuTree\n apis={transformedOpenApis}\n setActiveItemData={setActiveItemData}\n activeItemData={activeItemData}\n expandedSections={expandedSections}\n setExpandedSections={setExpandedSections}\n isFirstApiExpanded={isFirstApiExpanded}\n activeType={activeType}\n setIsFirstApiExpanded={setIsFirstApiExpanded}\n setActiveType={setActiveType}\n />\n {!pending && Object.keys(activeItemData).length > 0 && (\n <Layout.DocsContent\n data={activeItemData}\n activeType={activeType}\n setActiveItemData={setActiveItemData}\n setActiveType={setActiveType}\n setExpandedSections={setExpandedSections}\n />\n )}\n {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}\n </Layout>\n )\n}\n\nexport default DocsLayout\n"],"names":["DocsLayout","apis","transformedOpenApis","setTransformedOpenApis","useState","isFirstApiExpanded","setIsFirstApiExpanded","activeItemData","setActiveItemData","activeType","setActiveType","expandedSections","setExpandedSections","allData","useRef","pending","setPending","useEffect","length","t","_a","structuredClone","map","o3","transformOpenApiToDocs","sort","a","b","title","toLowerCase","localeCompare","current","_jsxs","Layout","children","_jsx","DocsHeader","updateFilteredData","filteredItems","isReset","DocsSideMenuTree","Object","keys","DocsContent","data","DocsAside"],"mappings":"0NAuCA,MAAMA,EAAa,EAAGC,WACpB,MAAOC,EAAqBC,GAA0BC,EAAS,KACxDC,EAAoBC,GAAyBF,GAAS,IACtDG,EAAgBC,GAAqBJ,EAA2C,CAAE,IAClFK,EAAYC,GAAiBN,EAAkC,aAC/DO,EAAkBC,GAAuBR,EAAS,CAAE,GACrDS,EAAUC,EAAO,KAChBC,EAASC,GAAcZ,GAAS,GACvCa,GAAU,WACR,GAAmC,IAA/Bf,EAAoBgB,OAAc,CACpC,MAAMC,UAAIC,EAAAC,gBAAgBpB,yBACtBqB,KAAKC,GAAOC,EAAuBD,KACpCE,MAAK,CAACC,EAAGC,IAAMD,EAAEE,MAAMC,cAAcC,cAAcH,EAAEC,MAAMC,iBAC9D1B,EAAuBgB,GACvBN,EAAQkB,QAAUZ,EACdA,EAAED,OAAS,GACbF,GAAW,EAEd,IACA,CAACf,IAUJ,OACE+B,EAAAA,KAACC,EACC,CAAAC,SAAA,CAAAC,EAAAA,IAACF,EAAOG,WAAU,CAAClC,oBAAqBA,EAAqBmC,mBAVtC,CAACC,EAAeC,GAAQ,KAE/CpC,EADCoC,EACsB1B,EAAQkB,QAGVO,EAAc,IAMnCH,EAAAA,IAACF,EAAOO,iBACN,CAAAvC,KAAMC,EACNM,kBAAmBA,EACnBD,eAAgBA,EAChBI,iBAAkBA,EAClBC,oBAAqBA,EACrBP,mBAAoBA,EACpBI,WAAYA,EACZH,sBAAuBA,EACvBI,cAAeA,KAEfK,GAAW0B,OAAOC,KAAKnC,GAAgBW,OAAS,GAChDiB,EAAAA,IAACF,EAAOU,YAAW,CACjBC,KAAMrC,EACNE,WAAYA,EACZD,kBAAmBA,EACnBE,cAAeA,EACfE,oBAAqBA,IAGT,aAAfH,GAA6B0B,EAAAA,IAACF,EAAOY,UAAS,CAACD,KAAMrC,MAEzD"}
1
+ {"version":3,"file":"docsLayout.js","sources":["../../../src/layout/docsLayout.tsx"],"sourcesContent":["import React, { JSX, useEffect, useRef, useState } from 'react'\nimport Layout from './docsComponents'\nimport { HTTPMethod, OpenAPIFile, Parameter, RequestBody, Responses } from '@entities/openApi'\nimport { transformOpenApiToDocs } from '../helpers/docs.helper'\nimport { ApiSpecModel } from '@entities/index'\nimport stableStringify from 'fast-json-stable-stringify'\n\ninterface ILayoutProps {\n apis?: ApiSpecModel[]\n activeApiId?: string\n}\n\nexport interface TagData {\n id: string\n method: HTTPMethod\n path: string\n tags: string[]\n responses: Responses\n summary?: string\n description: string\n parameters?: Parameter[]\n requestBody?: RequestBody\n}\n\nexport interface EndpointData extends TagData {\n api: {\n id: string\n description: string\n title: string\n version: string\n }\n}\n\nexport interface OverviewData extends Omit<ApiSpecModel, 'metaData'> {\n description: string\n title: string\n version: string\n tags: Record<string, TagData[]>\n servers: OpenAPIFile['servers']\n}\n\nfunction areEqual(prev: ILayoutProps, next: ILayoutProps): boolean {\n return (\n stableStringify(prev.apis ?? []) === stableStringify(next.apis ?? []) &&\n prev.activeApiId === next.activeApiId\n )\n}\n\nconst DocsLayout = ({ apis, activeApiId }: ILayoutProps): JSX.Element => {\n const [transformedOpenApis, setTransformedOpenApis] = useState<OverviewData[]>([])\n const [isFirstApiExpanded, setIsFirstApiExpanded] = useState(true)\n const [activeItemData, setActiveItemData] = useState<\n OverviewData | EndpointData | Record<string, never>\n >({})\n const [activeType, setActiveType] = useState<'OVERVIEW' | 'ENDPOINT'>('OVERVIEW')\n const [expandedSections, setExpandedSections] = useState<Record<string, boolean>>({})\n const allData = useRef([])\n const [pending, setPending] = useState(true)\n const [canSelectFirstApi, setCanSelectFirstApi] = useState(false)\n\n const toggleSection = (\n apiId: string,\n sectionId: string,\n resetOthers?: boolean,\n key?: string[]\n ) => {\n setCanSelectFirstApi(false)\n if (resetOthers && key) {\n const filteredExpandedSections = Object.fromEntries(\n Object.entries({ ...expandedSections }).filter(([expandKey]) => {\n // Close other APIs sections\n if (!expandKey.includes(apiId)) return false\n // always return the clicked on section\n if (expandKey === sectionId) return true\n // filter all sections containing the key\n if (key.some((k) => expandKey.includes(k))) return false\n return true\n })\n )\n\n setExpandedSections({\n ...filteredExpandedSections,\n [sectionId]: !expandedSections[sectionId],\n })\n } else {\n setExpandedSections((prev) => ({\n ...prev,\n [sectionId]: !expandedSections[sectionId],\n }))\n }\n }\n\n useEffect(() => {\n if (transformedOpenApis.length === 0) {\n setCanSelectFirstApi(!!activeApiId)\n const t = structuredClone(apis)\n ?.map((o3) => transformOpenApiToDocs(o3))\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n setTransformedOpenApis(t)\n allData.current = t\n if (t.length > 0) {\n setPending(false)\n }\n }\n }, [apis])\n\n const updateFilteredData = (filteredItems, isReset = false) => {\n if (isReset) {\n setTransformedOpenApis(allData.current)\n return\n }\n setTransformedOpenApis(filteredItems)\n }\n\n useEffect(() => {\n if (activeApiId && transformedOpenApis.length > 0) {\n const activeApi = transformedOpenApis.find((api) => api.apiSpecId === activeApiId)\n const sectionKey = `api-${activeApi.apiSpecId}-section`\n const overviewKey = `api-${activeApi.apiSpecId}-overview`\n\n setExpandedSections((prev) => ({\n ...prev,\n [sectionKey]: true,\n [overviewKey]: true,\n }))\n setActiveItemData(activeApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n setCanSelectFirstApi(true)\n }\n }, [activeApiId, transformedOpenApis])\n\n return (\n <Layout>\n <Layout.DocsHeader\n transformedOpenApis={transformedOpenApis}\n updateFilteredData={updateFilteredData}\n />\n {!pending && (\n <Layout.DocsSideMenuTree\n apis={transformedOpenApis}\n setActiveItemData={setActiveItemData}\n activeItemData={activeItemData as OverviewData | EndpointData}\n expandedSections={expandedSections}\n setExpandedSections={(newExpandedSections) =>\n setExpandedSections((prev) => ({\n ...prev,\n ...newExpandedSections,\n }))\n }\n isFirstApiExpanded={isFirstApiExpanded}\n activeType={activeType}\n setIsFirstApiExpanded={setIsFirstApiExpanded}\n setActiveType={setActiveType}\n toggleSection={toggleSection}\n canSelectFirstApi={canSelectFirstApi}\n />\n )}\n\n {!pending && Object.keys(activeItemData).length > 0 && (\n <Layout.DocsContent\n data={activeItemData as OverviewData | EndpointData}\n activeType={activeType}\n setActiveItemData={setActiveItemData}\n setActiveType={setActiveType}\n setExpandedSections={setExpandedSections}\n toggleSection={toggleSection}\n />\n )}\n {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}\n </Layout>\n )\n}\n\nexport default React.memo(DocsLayout, areEqual)\n"],"names":["docsLayout","React","memo","apis","activeApiId","transformedOpenApis","setTransformedOpenApis","useState","isFirstApiExpanded","setIsFirstApiExpanded","activeItemData","setActiveItemData","activeType","setActiveType","expandedSections","setExpandedSections","allData","useRef","pending","setPending","canSelectFirstApi","setCanSelectFirstApi","toggleSection","apiId","sectionId","resetOthers","key","filteredExpandedSections","Object","fromEntries","entries","assign","filter","expandKey","includes","some","k","prev","useEffect","length","t","_a","structuredClone","map","o3","transformOpenApiToDocs","sort","a","b","title","toLowerCase","localeCompare","current","activeApi","find","api","apiSpecId","sectionKey","overviewKey","_jsxs","jsxs","Layout","children","_jsx","DocsHeader","updateFilteredData","filteredItems","isReset","jsx","DocsSideMenuTree","newExpandedSections","keys","DocsContent","data","DocsAside","next","stableStringify","_b"],"mappings":"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"}