@digi-frontend/dgate-api-documentation 1.1.12 → 1.3.0
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.
- package/.editorconfig +13 -0
- package/.prettierignore +8 -0
- package/.prettierrc +15 -0
- package/dist/_virtual/index4.js +1 -1
- package/dist/_virtual/index5.js +1 -1
- package/dist/_virtual/index6.js +1 -1
- package/dist/_virtual/index7.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/createPopper.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/createPopper.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/enums.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/enums.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/eventListeners.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/eventListeners.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/flip.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/flip.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/hide.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/hide.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/offset.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/modifiers/offset.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/debounce.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/debounce.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/detectOverflow.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/detectOverflow.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/expandToHashMap.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/expandToHashMap.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/mergeByName.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/mergeByName.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/orderModifiers.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/orderModifiers.js.map +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/userAgent.js +1 -1
- package/dist/node_modules/@popperjs/core/lib/utils/userAgent.js.map +1 -1
- package/dist/node_modules/@tippyjs/react/dist/tippy-react.esm.js +1 -1
- package/dist/node_modules/@tippyjs/react/dist/tippy-react.esm.js.map +1 -1
- package/dist/node_modules/digitinary-ui/dist/index.js +1 -1
- package/dist/node_modules/digitinary-ui/dist/index.js.map +1 -1
- package/dist/node_modules/dom-serializer/lib/foreignNames.js +1 -1
- package/dist/node_modules/dom-serializer/lib/foreignNames.js.map +1 -1
- package/dist/node_modules/dom-serializer/lib/index.js +1 -1
- package/dist/node_modules/dom-serializer/lib/index.js.map +1 -1
- package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js +1 -1
- package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js.map +1 -1
- package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js +1 -1
- package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js.map +1 -1
- package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js +1 -1
- package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -1
- package/dist/node_modules/domhandler/lib/node.js +1 -1
- package/dist/node_modules/domhandler/lib/node.js.map +1 -1
- package/dist/node_modules/domutils/lib/feeds.js +1 -1
- package/dist/node_modules/domutils/lib/feeds.js.map +1 -1
- package/dist/node_modules/domutils/lib/helpers.js +1 -1
- package/dist/node_modules/domutils/lib/helpers.js.map +1 -1
- package/dist/node_modules/domutils/lib/legacy.js +1 -1
- package/dist/node_modules/domutils/lib/legacy.js.map +1 -1
- package/dist/node_modules/domutils/lib/querying.js +1 -1
- package/dist/node_modules/domutils/lib/querying.js.map +1 -1
- package/dist/node_modules/domutils/lib/stringify.js +1 -1
- package/dist/node_modules/domutils/lib/stringify.js.map +1 -1
- package/dist/node_modules/entities/dist/commonjs/decode.js +1 -1
- package/dist/node_modules/entities/dist/commonjs/decode.js.map +1 -1
- package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js +1 -1
- package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -1
- package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +1 -1
- package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -1
- package/dist/node_modules/formik/dist/formik.esm.js +1 -1
- package/dist/node_modules/formik/dist/formik.esm.js.map +1 -1
- package/dist/node_modules/formik/node_modules/deepmerge/dist/es.js +1 -1
- package/dist/node_modules/formik/node_modules/deepmerge/dist/es.js.map +1 -1
- package/dist/node_modules/highlight.js/lib/core.js +1 -1
- package/dist/node_modules/highlight.js/lib/core.js.map +1 -1
- package/dist/node_modules/highlight.js/lib/languages/json.js +1 -1
- package/dist/node_modules/highlight.js/lib/languages/json.js.map +1 -1
- package/dist/node_modules/html-react-parser/lib/utilities.js.map +1 -1
- package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js +1 -1
- package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js.map +1 -1
- package/dist/node_modules/htmlparser2/dist/commonjs/index.js +1 -1
- package/dist/node_modules/htmlparser2/dist/commonjs/index.js.map +1 -1
- package/dist/node_modules/js-yaml/dist/js-yaml.mjs.js +1 -1
- package/dist/node_modules/js-yaml/dist/js-yaml.mjs.js.map +1 -1
- package/dist/node_modules/lodash-es/_baseClone.js +1 -1
- package/dist/node_modules/lodash-es/_baseClone.js.map +1 -1
- package/dist/node_modules/lodash-es/_getSymbols.js +1 -1
- package/dist/node_modules/lodash-es/_getSymbols.js.map +1 -1
- package/dist/node_modules/lodash-es/_memoizeCapped.js +1 -1
- package/dist/node_modules/lodash-es/_memoizeCapped.js.map +1 -1
- package/dist/node_modules/lodash-es/_stringToPath.js +1 -1
- package/dist/node_modules/lodash-es/_stringToPath.js.map +1 -1
- package/dist/node_modules/property-expr/index.js +1 -1
- package/dist/node_modules/property-expr/index.js.map +1 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +1 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
- package/dist/node_modules/react-property/lib/index.js +1 -1
- package/dist/node_modules/react-property/lib/index.js.map +1 -1
- package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js +1 -1
- package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js.map +1 -1
- package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js +1 -1
- package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js.map +1 -1
- package/dist/node_modules/react-toastify/dist/index.mjs.js +1 -1
- package/dist/node_modules/react-toastify/dist/index.mjs.js.map +1 -1
- package/dist/node_modules/style-to-js/cjs/index.js +1 -1
- package/dist/node_modules/style-to-js/cjs/index.js.map +1 -1
- package/dist/node_modules/style-to-object/cjs/index.js +1 -1
- package/dist/node_modules/style-to-object/cjs/index.js.map +1 -1
- package/dist/node_modules/tiny-case/index.js +1 -1
- package/dist/node_modules/tiny-case/index.js.map +1 -1
- package/dist/node_modules/tippy.js/dist/tippy.esm.js +1 -1
- package/dist/node_modules/tippy.js/dist/tippy.esm.js.map +1 -1
- package/dist/node_modules/toposort/index.js +1 -1
- package/dist/node_modules/toposort/index.js.map +1 -1
- package/dist/node_modules/tslib/tslib.es6.js +1 -1
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/node_modules/yup/index.esm.js +1 -1
- package/dist/node_modules/yup/index.esm.js.map +1 -1
- package/dist/src/components/InfoForm/InfoForm.js +1 -1
- package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
- package/dist/src/components/JsonInput/JsonInput.js +1 -1
- package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
- package/dist/src/components/LivePreview/LivePreview.js +1 -1
- package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
- package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
- package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
- package/dist/src/components/SVGLoader/SVGLoader.js +1 -1
- package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
- package/dist/src/components/Tooltip/Tooltip.js +1 -1
- package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/src/components/table/table.js +1 -1
- package/dist/src/components/table/table.js.map +1 -1
- package/dist/src/components/table/tags-table.js +1 -1
- package/dist/src/components/table/tags-table.js.map +1 -1
- package/dist/src/constants/methods.constant.js +1 -1
- package/dist/src/constants/methods.constant.js.map +1 -1
- package/dist/src/context/SectionToggleContext.js +1 -1
- package/dist/src/context/SectionToggleContext.js.map +1 -1
- package/dist/src/helpers/docs.helper.js +1 -1
- package/dist/src/helpers/docs.helper.js.map +1 -1
- package/dist/src/helpers/layout.helper.js +1 -1
- package/dist/src/helpers/layout.helper.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +1 -1
- package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +1 -1
- package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js +1 -1
- package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +1 -1
- package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
- package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
- package/dist/src/layout/docsLayout.js +1 -1
- package/dist/src/layout/docsLayout.js.map +1 -1
- package/dist/src/layout/layout.js +1 -1
- package/dist/src/layout/layout.js.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/validator/form.scheme.js +1 -1
- package/dist/src/validator/form.scheme.js.map +1 -1
- package/dist/styles.css +773 -773
- package/index.ts +2 -0
- package/package.json +4 -9
- package/rollup.config.js +37 -0
- package/src/assets/icons/AddRow.svg +3 -0
- package/src/assets/icons/ApiIcon.svg +12 -0
- package/src/assets/icons/ArrowBack.svg +3 -0
- package/src/assets/icons/BookIcon.svg +6 -0
- package/src/assets/icons/CheckMarkSquare.svg +5 -0
- package/src/assets/icons/CloseIcon.svg +4 -0
- package/src/assets/icons/CopySticker.svg +6 -0
- package/src/assets/icons/DeleteIcon.svg +3 -0
- package/src/assets/icons/DownArrow.svg +3 -0
- package/src/assets/icons/EditIcon.svg +3 -0
- package/src/assets/icons/FilterIcon.svg +4 -0
- package/src/assets/icons/Plus.svg +5 -0
- package/src/assets/icons/PlusSquare.svg +3 -0
- package/src/assets/icons/RequestOption.svg +5 -0
- package/src/assets/icons/UpArrow.svg +3 -0
- package/src/assets/icons/arrow-down.svg +3 -0
- package/src/assets/icons/arrow-up.svg +10 -0
- package/src/assets/icons/arrowDownGray.svg +3 -0
- package/src/assets/icons/arrowRightGray.svg +3 -0
- package/src/assets/icons/close-circle.svg +5 -0
- package/src/assets/icons/copy.svg +4 -0
- package/src/assets/icons/deleteOutlinedIcon.svg +8 -0
- package/src/assets/icons/document.svg +6 -0
- package/src/assets/icons/eye.svg +4 -0
- package/src/assets/icons/index.ts +27 -0
- package/src/assets/icons/infoIcon.svg +5 -0
- package/src/assets/icons/newCopyIcon.svg +4 -0
- package/src/assets/icons/searchIcon.svg +4 -0
- package/src/components/Chips/Chips.tsx +87 -0
- package/src/components/InfoForm/InfoForm.tsx +432 -0
- package/src/components/JsonInput/JsonInput.tsx +149 -0
- package/src/components/LivePreview/LivePreview.tsx +224 -0
- package/src/components/MethodAccordion/MethodAccordion.tsx +1070 -0
- package/src/components/SVGLoader/SVGLoader.tsx +96 -0
- package/src/components/SectionHead/SectionHead.tsx +22 -0
- package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -0
- package/src/components/SimpleLabelValue/index.ts +1 -0
- package/src/components/Tooltip/Tooltip.tsx +85 -0
- package/src/components/dialog/dialog.ts +61 -0
- package/src/components/dialog/index.tsx +88 -0
- package/src/components/table/table.tsx +508 -0
- package/src/components/table/tags-table.tsx +348 -0
- package/src/constants/index.ts +95 -0
- package/src/constants/methods.constant.ts +26 -0
- package/src/constants/regex.ts +7 -0
- package/src/context/SectionToggleContext.tsx +121 -0
- package/src/global.d.ts +13 -0
- package/src/helpers/docs.helper.ts +42 -0
- package/src/helpers/layout.helper.ts +290 -0
- package/src/helpers/methodAccordion.helper.ts +20 -0
- package/src/index.ts +2 -0
- package/src/layout/docsComponents/Codebox/Codebox.tsx +61 -0
- package/src/layout/docsComponents/DocsAside/DocsAside.tsx +112 -0
- package/src/layout/docsComponents/DocsContent/DocsContent.tsx +51 -0
- package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +307 -0
- package/src/layout/docsComponents/DocsContent/OverviewPage/index.tsx +223 -0
- package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +188 -0
- package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +229 -0
- package/src/layout/docsComponents/index.tsx +28 -0
- package/src/layout/docsLayout.tsx +123 -0
- package/src/layout/layout.module.css +65 -0
- package/src/layout/layout.tsx +177 -0
- package/src/types/docsLayout.type.ts +7 -0
- package/src/types/index.ts +28 -0
- package/src/types/layout.type.ts +32 -0
- package/src/types/openApi.ts +109 -0
- package/src/types/transformedOpenApi.ts +52 -0
- package/src/utils/index.ts +15 -0
- package/src/validator/form.scheme.ts +96 -0
- package/tsconfig.json +33 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsAside.js","sources":["../../../../../src/layout/docsComponents/DocsAside/DocsAside.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { EndpointData } from 'src/layout/docsLayout'\nimport Codebox from '../Codebox/Codebox'\nimport { Option, SelectGroup } from 'digitinary-ui'\nimport { httpStatusCodes } from '../../../constants/index'\nimport { handleStatusColor } from '../../../helpers/methodAccordion.helper'\nimport styles from './style.module.scss'\n\nconst DocsAside = ({ data }: { data: EndpointData }) => {\n // Filter status codes to only include those with non-empty properties\n const filteredStatusCodes = Object.keys(data?.responses || {}).filter((code) => {\n const response = data.responses[code]\n const contentType = Object.keys(response?.content || {})[0]\n return response?.content?.[contentType]?.schema?.properties\n })\n\n // Create options for the select dropdown\n const httpStatusCodeOptions = filteredStatusCodes.map((code) => ({\n label: (\n <div className={styles.statusCodeOptionContainer}>\n <div\n className={styles.statusCodeOptionCircle}\n style={{ backgroundColor: handleStatusColor(code) }}\n ></div>\n <span>{code}</span>\n </div>\n ),\n value: String(code),\n }))\n\n // Function to get default option\n const getDefaultOption = () => {\n const has200 = filteredStatusCodes.includes('200')\n return has200\n ? httpStatusCodeOptions.find((opt) => opt.value === '200')\n : httpStatusCodeOptions[0] || null\n }\n\n useEffect(() => {\n setSelectedResStatusCode(getDefaultOption())\n }, [data])\n const [selectedResStatusCode, setSelectedResStatusCode] = useState(httpStatusCodeOptions[4])\n const currentResponse = Object.entries(data.responses)\n .map(([code, data]) => ({ code, data }))\n .find((res) => res.code === selectedResStatusCode?.value)\n\n const stringifyRequestBody = () => {\n if (data?.requestBody?.content) {\n const contentKey = Object.keys(data?.requestBody?.content)[0]\n return JSON.stringify(data?.requestBody?.content[contentKey]?.schema?.properties, null, 2)\n } else {\n return '{}'\n }\n }\n\n const stringifyResponseBody = () => {\n if (currentResponse?.data) {\n const contentKey = Object.keys(currentResponse.data?.content)[0]\n return JSON.stringify(currentResponse.data?.content[contentKey]?.schema?.properties, null, 2)\n } else {\n return '{}'\n }\n }\n\n return (\n <aside className={styles.apiDocsAside}>\n <h2 className={styles.apiDocsAside_title}>{data.summary}</h2>\n <h4 className={styles.apiDocsAside_subtitle}>\n <span className={styles.apiDocsAside_subtitle_method} data-method={data.method}>\n {data.method}\n </span>{' '}\n <span>{data.path}</span>\n </h4>\n {!['delete', 'get'].includes(data.method) && data?.requestBody?.content && (\n <div className={styles.codeboxSection}>\n <div className={styles.codeboxHeader}>\n <h6 className={styles.codeboxTitle}>Request</h6>\n </div>\n\n <Codebox code={stringifyRequestBody()} />\n </div>\n )}\n {Object.keys(data?.responses || {})?.length > 0 && (\n <div className={styles.codeboxSection}>\n <div className={`${styles.codeboxHeader}`}>\n <h6 className={styles.codeboxTitle}>Response</h6>\n <SelectGroup\n size=\"small\"\n withSearch={false}\n isMultiple={false}\n clearable={false}\n placeholder=\"200\"\n options={[\n {\n list: httpStatusCodeOptions,\n },\n ]}\n value={selectedResStatusCode}\n onChange={(value) => {\n setSelectedResStatusCode(value)\n }}\n />\n </div>\n\n <Codebox code={stringifyResponseBody()} />\n </div>\n )}\n </aside>\n )\n}\n\nexport default DocsAside\n"],"names":["DocsAside","data","filteredStatusCodes","Object","keys","responses","filter","code","response","contentType","content","_b","_a","schema","_c","properties","httpStatusCodeOptions","map","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","String","useEffect","setSelectedResStatusCode","includes","find","opt","selectedResStatusCode","useState","currentResponse","entries","res","jsxs","apiDocsAside","apiDocsAside_title","summary","apiDocsAside_subtitle","apiDocsAside_subtitle_method","method","path","requestBody","codeboxSection","codeboxHeader","codeboxTitle","jsx","Codebox","contentKey","JSON","stringify","_e","_d","stringifyRequestBody","length","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","stringifyResponseBody"],"mappings":"oTAQA,MAAMA,EAAY,EAAGC,mBAEnB,MAAMC,EAAsBC,OAAOC,MAAKH,aAAI,EAAJA,EAAMI,YAAa,CAAE,GAAEC,
|
|
1
|
+
{"version":3,"file":"DocsAside.js","sources":["../../../../../src/layout/docsComponents/DocsAside/DocsAside.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { EndpointData } from 'src/layout/docsLayout'\nimport Codebox from '../Codebox/Codebox'\nimport { Option, SelectGroup } from 'digitinary-ui'\nimport { httpStatusCodes } from '../../../constants/index'\nimport { handleStatusColor } from '../../../helpers/methodAccordion.helper'\nimport styles from './style.module.scss'\n\nconst DocsAside = ({ data }: { data: EndpointData }) => {\n // Filter status codes to only include those with non-empty properties\n const filteredStatusCodes = Object.keys(data?.responses || {}).filter((code) => {\n const response = data.responses[code]\n const contentType = Object.keys(response?.content || {})[0]\n return response?.content?.[contentType]?.schema?.properties\n })\n\n // Create options for the select dropdown\n const httpStatusCodeOptions = filteredStatusCodes.map((code) => ({\n label: (\n <div className={styles.statusCodeOptionContainer}>\n <div\n className={styles.statusCodeOptionCircle}\n style={{ backgroundColor: handleStatusColor(code) }}\n ></div>\n <span>{code}</span>\n </div>\n ),\n value: String(code),\n }))\n\n // Function to get default option\n const getDefaultOption = () => {\n const has200 = filteredStatusCodes.includes('200')\n return has200\n ? httpStatusCodeOptions.find((opt) => opt.value === '200')\n : httpStatusCodeOptions[0] || null\n }\n\n useEffect(() => {\n setSelectedResStatusCode(getDefaultOption())\n }, [data])\n const [selectedResStatusCode, setSelectedResStatusCode] = useState(httpStatusCodeOptions[4])\n const currentResponse = Object.entries(data.responses)\n .map(([code, data]) => ({ code, data }))\n .find((res) => res.code === selectedResStatusCode?.value)\n\n const stringifyRequestBody = () => {\n if (data?.requestBody?.content) {\n const contentKey = Object.keys(data?.requestBody?.content)[0]\n return JSON.stringify(data?.requestBody?.content[contentKey]?.schema?.properties, null, 2)\n } else {\n return '{}'\n }\n }\n\n const stringifyResponseBody = () => {\n if (currentResponse?.data) {\n const contentKey = Object.keys(currentResponse.data?.content)[0]\n return JSON.stringify(currentResponse.data?.content[contentKey]?.schema?.properties, null, 2)\n } else {\n return '{}'\n }\n }\n\n return (\n <aside className={styles.apiDocsAside}>\n <h2 className={styles.apiDocsAside_title}>{data.summary}</h2>\n <h4 className={styles.apiDocsAside_subtitle}>\n <span className={styles.apiDocsAside_subtitle_method} data-method={data.method}>\n {data.method}\n </span>{' '}\n <span>{data.path}</span>\n </h4>\n {!['delete', 'get'].includes(data.method) && data?.requestBody?.content && (\n <div className={styles.codeboxSection}>\n <div className={styles.codeboxHeader}>\n <h6 className={styles.codeboxTitle}>Request</h6>\n </div>\n\n <Codebox code={stringifyRequestBody()} />\n </div>\n )}\n {Object.keys(data?.responses || {})?.length > 0 && (\n <div className={styles.codeboxSection}>\n <div className={`${styles.codeboxHeader}`}>\n <h6 className={styles.codeboxTitle}>Response</h6>\n <SelectGroup\n size=\"small\"\n withSearch={false}\n isMultiple={false}\n clearable={false}\n placeholder=\"200\"\n options={[\n {\n list: httpStatusCodeOptions,\n },\n ]}\n value={selectedResStatusCode}\n onChange={(value) => {\n setSelectedResStatusCode(value)\n }}\n />\n </div>\n\n <Codebox code={stringifyResponseBody()} />\n </div>\n )}\n </aside>\n )\n}\n\nexport default DocsAside\n"],"names":["DocsAside","data","filteredStatusCodes","Object","keys","responses","filter","code","response","contentType","content","_b","_a","schema","_c","properties","httpStatusCodeOptions","map","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","String","useEffect","setSelectedResStatusCode","includes","find","opt","selectedResStatusCode","useState","currentResponse","entries","res","jsxs","apiDocsAside","apiDocsAside_title","summary","apiDocsAside_subtitle","apiDocsAside_subtitle_method","method","path","requestBody","codeboxSection","codeboxHeader","codeboxTitle","jsx","Codebox","contentKey","JSON","stringify","_e","_d","stringifyRequestBody","length","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","stringifyResponseBody"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t}from"../../../../_virtual/jsx-runtime.js";import{useRef as e,useEffect as a}from"react";import{OverviewPage as i}from"./OverviewPage/index.js";import{EndpointPage as r}from"./EndpointPage/index.js";const o=({data:o,activeType:s,setActiveItemData:n,setActiveType:v,onProductNavigate:c,apis:m})=>{const d=e(null);return a((
|
|
1
|
+
import{j as t}from"../../../../_virtual/jsx-runtime.js";import{useRef as e,useEffect as a}from"react";import{OverviewPage as i}from"./OverviewPage/index.js";import{EndpointPage as r}from"./EndpointPage/index.js";const o=({data:o,activeType:s,setActiveItemData:n,setActiveType:v,onProductNavigate:c,apis:m})=>{const d=e(null);return a(()=>{var t;"OVERVIEW"===s&&(null==d?void 0:d.current)&&(null===(t=null==d?void 0:d.current)||void 0===t||t.scrollTo({top:0,behavior:"smooth"}))},[o,s]),t.jsx("main",{ref:d,children:"OVERVIEW"===s?t.jsx(i,{data:o,setActiveItemData:n,setActiveType:v,onProductNavigate:c,apis:m}):t.jsx(r,{data:o,setActiveType:v,setActiveItemData:n})})};export{o as default};
|
|
2
2
|
//# sourceMappingURL=DocsContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsContent.js","sources":["../../../../../src/layout/docsComponents/DocsContent/DocsContent.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\nimport './style.scss'\nimport { OverviewPage } from './OverviewPage'\nimport { EndpointPage } from './EndpointPage'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\n\nconst DocsContent = ({\n data,\n activeType,\n setActiveItemData,\n setActiveType,\n onProductNavigate,\n apis,\n}: {\n data: OverviewData | EndpointData\n activeType: 'OVERVIEW' | 'ENDPOINT'\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n onProductNavigate?: (productId: number) => void\n apis: OverviewData[]\n}) => {\n const containerRef = useRef(null)\n\n useEffect(() => {\n // This will scroll to the top when changing the overview\n if (activeType === 'OVERVIEW' && containerRef?.current) {\n containerRef?.current?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n }, [data, activeType])\n return (\n <main ref={containerRef}>\n {activeType === 'OVERVIEW' ? (\n <OverviewPage\n data={data as OverviewData}\n setActiveItemData={setActiveItemData}\n setActiveType={setActiveType}\n onProductNavigate={onProductNavigate}\n apis={apis}\n />\n ) : (\n <EndpointPage\n data={data as EndpointData}\n setActiveType={setActiveType}\n setActiveItemData={setActiveItemData}\n />\n )}\n </main>\n )\n}\n\nexport default DocsContent\n"],"names":["DocsContent","data","activeType","setActiveItemData","setActiveType","onProductNavigate","apis","containerRef","useRef","useEffect","current","_a","scrollTo","top","behavior","_jsx","ref","children","OverviewPage","EndpointPage"],"mappings":"oNAMA,MAAMA,EAAc,EAClBC,OACAC,aACAC,oBACAC,gBACAC,oBACAC,WASA,MAAMC,EAAeC,EAAO,MAQ5B,OANAC,
|
|
1
|
+
{"version":3,"file":"DocsContent.js","sources":["../../../../../src/layout/docsComponents/DocsContent/DocsContent.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\nimport './style.scss'\nimport { OverviewPage } from './OverviewPage'\nimport { EndpointPage } from './EndpointPage'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\n\nconst DocsContent = ({\n data,\n activeType,\n setActiveItemData,\n setActiveType,\n onProductNavigate,\n apis,\n}: {\n data: OverviewData | EndpointData\n activeType: 'OVERVIEW' | 'ENDPOINT'\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n onProductNavigate?: (productId: number) => void\n apis: OverviewData[]\n}) => {\n const containerRef = useRef(null)\n\n useEffect(() => {\n // This will scroll to the top when changing the overview\n if (activeType === 'OVERVIEW' && containerRef?.current) {\n containerRef?.current?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n }, [data, activeType])\n return (\n <main ref={containerRef}>\n {activeType === 'OVERVIEW' ? (\n <OverviewPage\n data={data as OverviewData}\n setActiveItemData={setActiveItemData}\n setActiveType={setActiveType}\n onProductNavigate={onProductNavigate}\n apis={apis}\n />\n ) : (\n <EndpointPage\n data={data as EndpointData}\n setActiveType={setActiveType}\n setActiveItemData={setActiveItemData}\n />\n )}\n </main>\n )\n}\n\nexport default DocsContent\n"],"names":["DocsContent","data","activeType","setActiveItemData","setActiveType","onProductNavigate","apis","containerRef","useRef","useEffect","current","_a","scrollTo","top","behavior","_jsx","ref","children","OverviewPage","EndpointPage"],"mappings":"oNAMA,MAAMA,EAAc,EAClBC,OACAC,aACAC,oBACAC,gBACAC,oBACAC,WASA,MAAMC,EAAeC,EAAO,MAQ5B,OANAC,EAAU,WAEW,aAAfP,IAA6BK,aAAY,EAAZA,EAAcG,mBAC7CC,EAAAJ,aAAY,EAAZA,EAAcG,wBAASE,SAAS,CAAEC,IAAK,EAAGC,SAAU,aAErD,CAACb,EAAMC,IAERa,EAAAA,IAAM,OAAA,CAAAC,IAAKT,EACRU,SAAe,aAAff,EACCa,EAAAA,IAACG,EACC,CAAAjB,KAAMA,EACNE,kBAAmBA,EACnBC,cAAeA,EACfC,kBAAmBA,EACnBC,KAAMA,IAGRS,EAAAA,IAACI,EACC,CAAAlB,KAAMA,EACNG,cAAeA,EACfD,kBAAmBA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"../../../../../_virtual/jsx-runtime.js";import s from"../../../../components/SVGLoader/SVGLoader.js";import l from"../../../../assets/icons/DownArrow.svg.js";import i from"../../../../assets/icons/RequestOption.svg.js";import a from"../../../../assets/icons/ArrowBack.svg.js";import o from"../../../../assets/icons/arrow-down.svg.js";import d from"../../../../assets/icons/newCopyIcon.svg.js";import r from"../../../../assets/icons/arrow-up.svg.js";import{d as n}from"../../../../../_virtual/index.js";import{useState as t,useEffect as c,useMemo as v}from"react";import{handleStatusColor as h}from"../../../../helpers/methodAccordion.helper.js";import m from"../../../../components/Tooltip/Tooltip.js";import{useSectionToggle as u,SectionEnum as p}from"../../../../context/SectionToggleContext.js";import{copyToClipboard as j,capitalizeFirstLetter as x}from"../../../../utils/index.js";const b=({data:b,setActiveType:N,setActiveItemData:y})=>{var f,g,C,w,k,O,S,q;const[T,R]=t("header"),{toggleSection:$}=u(),[A,E]=t((null===(C=null===(g=null===(f=null==b?void 0:b.api)||void 0===f?void 0:f.servers)||void 0===g?void 0:g[0])||void 0===C?void 0:C.url)||""),[L,I]=t(!1);c((
|
|
1
|
+
import{j as e}from"../../../../../_virtual/jsx-runtime.js";import s from"../../../../components/SVGLoader/SVGLoader.js";import l from"../../../../assets/icons/DownArrow.svg.js";import i from"../../../../assets/icons/RequestOption.svg.js";import a from"../../../../assets/icons/ArrowBack.svg.js";import o from"../../../../assets/icons/arrow-down.svg.js";import d from"../../../../assets/icons/newCopyIcon.svg.js";import r from"../../../../assets/icons/arrow-up.svg.js";import{d as n}from"../../../../../_virtual/index.js";import{useState as t,useEffect as c,useMemo as v}from"react";import{handleStatusColor as h}from"../../../../helpers/methodAccordion.helper.js";import m from"../../../../components/Tooltip/Tooltip.js";import{useSectionToggle as u,SectionEnum as p}from"../../../../context/SectionToggleContext.js";import{copyToClipboard as j,capitalizeFirstLetter as x}from"../../../../utils/index.js";const b=({data:b,setActiveType:N,setActiveItemData:y})=>{var f,g,C,w,k,O,S,q;const[T,R]=t("header"),{toggleSection:$}=u(),[A,E]=t((null===(C=null===(g=null===(f=null==b?void 0:b.api)||void 0===f?void 0:f.servers)||void 0===g?void 0:g[0])||void 0===C?void 0:C.url)||""),[L,I]=t(!1);c(()=>{var e,s,l;E((null===(l=null===(s=null===(e=null==b?void 0:b.api)||void 0===e?void 0:e.servers)||void 0===s?void 0:s[0])||void 0===l?void 0:l.url)||"")},[b]),v(()=>{var e,s,l;const i=null===(l=null===(s=null===(e=b.api)||void 0===e?void 0:e.servers)||void 0===s?void 0:s.filter(e=>"/"!==e.url)[0])||void 0===l?void 0:l.url,a=null==b?void 0:b.path.split("/").slice(2);return`${i}${(null==a?void 0:a.length)?"/"+a.join("/"):""}`},[b]);const V=Object.keys((null==b?void 0:b.responses)||{}).filter(e=>{var s,l,i;const a=b.responses[e];return null===(i=null===(l=null===(s=null==a?void 0:a.content)||void 0===s?void 0:s["application/json"])||void 0===l?void 0:l.schema)||void 0===i?void 0:i.properties}),z=V.map(s=>({label:e.jsxs("div",{className:"statusCodeOptionContainer",children:[e.jsx("div",{className:"statusCodeOptionCircle",style:{backgroundColor:h(s)}}),e.jsx("span",{children:s})]}),value:s})),D=()=>V.includes("200")?z.find(e=>"200"===e.value):z[0]||null,[_,B]=t(null),[G,H]=t(D()),[P,U]=t({});return((null==b?void 0:b.parameters)||[]).filter(e=>{var s;return(null===(s=e.in)||void 0===s?void 0:s.toLowerCase())===T.toLowerCase()}),c(()=>{H(D())},[b]),c(()=>{if(G&&G.value){const e=null==b?void 0:b.responses[G.value];U(null==e?void 0:e.headers)}},[G,null==b?void 0:b.responses]),e.jsxs("div",{className:"api-details-expanded",children:[e.jsxs("div",{className:"test-button",children:[e.jsx("button",{className:"back-button",onClick:()=>{$(b.api.apiSpecId,[{type:p.OVERVIEW,setTo:!0}],{resetOthers:!0,filterKeys:[p.RESOURCE]}),N("OVERVIEW"),y(b.api)},children:e.jsx(s,{src:a})}),e.jsx(m,{content:"Comming soon",children:e.jsx("button",{className:"disabled",children:"Test"})})]}),e.jsx("h3",{children:b.api.title}),e.jsx("h1",{className:"api-title",children:null==b?void 0:b.summary}),e.jsxs("div",{className:"url-box",children:[L&&0!==A.length&&e.jsx("div",{className:"url-list",children:null===(k=null===(w=b.api)||void 0===w?void 0:w.servers)||void 0===k?void 0:k.map((s,l)=>e.jsxs("div",{className:"url-item",onClick:()=>{E(s.url),I(!1)},children:[e.jsx("input",{type:"radio",name:"api-method",checked:A===s.url,readOnly:!0}),e.jsx("span",{children:`${s.url}${b.path}`})]},l))}),e.jsxs("div",{className:"url-box_text-container",children:[e.jsx("span",{className:`method-label ${null===(O=null==b?void 0:b.method)||void 0===O?void 0:O.toLowerCase()}`,children:b.method}),e.jsx("div",{className:"url-container",children:e.jsxs("div",{className:"type-ddl",onClick:()=>I(e=>!e),children:[e.jsx("span",{className:"url-text",children:`${A}${b.path}`}),e.jsxs("div",{className:"icon-container",children:[e.jsx(s,{className:"icon",role:"button",tabIndex:0,onClick:e=>{e.stopPropagation(),j(`${A}${b.path}`)},src:d}),0!==A.length&&e.jsx(s,{src:L?r:o})]})]})})]})]}),e.jsx("p",{className:"api-desc",children:(null==b?void 0:b.description)||"No Description"}),e.jsx("h3",{children:"Request"}),e.jsxs("div",{className:"request-section",children:[e.jsx("div",{className:"request-tabs",children:["header","path","query"].map(l=>e.jsxs("button",{className:"tab "+(T===l?"active":""),onClick:()=>R(l),children:[e.jsx(s,{src:i,className:"icon-left"}),e.jsx("span",{className:"tab-label",children:"requestBody"===l?"Request Body":l.charAt(0).toUpperCase()+l.slice(1)})]},l))}),e.jsx("div",{className:"table-wrapper",children:e.jsxs("table",{className:"param-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"head-table-label",children:"Parameter Name"}),e.jsx("th",{className:"head-table-label",children:"Required"}),e.jsx("th",{className:"head-table-label",children:"Type"}),e.jsx("th",{className:"head-table-label",children:"Enum"}),e.jsx("th",{className:"head-table-label",children:"Description"})]})}),e.jsx("tbody",{children:null===(S=b.parameters)||void 0===S?void 0:S.filter(e=>{var s;return(null===(s=e.in)||void 0===s?void 0:s.toLowerCase())===T.toLowerCase()}).map((i,a)=>{var o,d,r,n,t,c,v;return e.jsxs("tr",{children:[e.jsx("td",{children:i.name}),e.jsx("td",{children:i.required?"True":"False"}),e.jsxs("td",{style:{textTransform:"capitalize"},children:[e.jsx("span",{children:(null===(o=null==i?void 0:i.schema)||void 0===o?void 0:o.type)||"-"}),"array"===(null===(d=null==i?void 0:i.schema)||void 0===d?void 0:d.type)&&(null===(n=null===(r=null==i?void 0:i.schema)||void 0===r?void 0:r.items)||void 0===n?void 0:n.type)&&e.jsxs("span",{style:{color:"#616874",fontSize:"0.75rem"},children:["_",x(null===(c=null===(t=i.schema)||void 0===t?void 0:t.items)||void 0===c?void 0:c.type)]})]}),e.jsx("td",{children:Array.isArray(null===(v=i.schema)||void 0===v?void 0:v.enum)?i.schema.enum.join(" / "):"-"}),e.jsxs("td",{className:"desc-cell",children:[e.jsx("div",{className:"desc-text "+(_===a?"expanded":""),children:i.description||"No description"}),e.jsx("button",{className:"desc-toggle",onClick:()=>B(_===a?null:a),children:e.jsx(s,{src:l,className:_===a?"rotated":""})})]})]},a)})})]})})]}),e.jsxs("div",{className:"response-section",children:[e.jsx("h3",{children:"Response"}),e.jsxs("div",{children:[e.jsx("div",{style:{height:"0.5rem",width:"7.5rem",marginLeft:"auto"},children:(null===(q=Object.keys((null==b?void 0:b.responses)||{}))||void 0===q?void 0:q.length)>0&&e.jsx("div",{className:"codeboxSection",children:e.jsx("div",{className:"codeboxHeader",children:e.jsx(n.SelectGroup,{size:"small",withSearch:!1,isMultiple:!1,clearable:!1,placeholder:"200",options:[{list:z}],value:G,onChange:e=>{H(e)}})})})}),e.jsxs("button",{className:"tab active ",children:[e.jsx(s,{src:i,className:"icon-left"}),"Header"]})]}),e.jsx("div",{className:"table-wrapper",children:e.jsxs("table",{className:"param-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"head-table-label",children:"Header Name"}),e.jsx("th",{className:"head-table-label",children:"Required"}),e.jsx("th",{className:"head-table-label",children:"Type"}),e.jsx("th",{className:"head-table-label",children:"Enum"}),e.jsx("th",{className:"head-table-label",children:"Description"})]})}),e.jsx("tbody",{children:!!P&&Object.keys(P)&&Object.keys(P).map(s=>{var l,i,a,o,d,r,n,t,c,v,h,m,u,p,j;return e.jsxs("tr",{children:[e.jsx("td",{children:s}),e.jsx("td",{children:null===(l=P[s])||void 0===l?void 0:l.required.toString()}),e.jsxs("td",{style:{textTransform:"capitalize"},children:[e.jsx("span",{children:(null===(a=null===(i=P[s])||void 0===i?void 0:i.schema)||void 0===a?void 0:a.type)||"-"}),"array"===(null===(d=null===(o=P[s])||void 0===o?void 0:o.schema)||void 0===d?void 0:d.type)&&(null===(t=null===(n=null===(r=P[s])||void 0===r?void 0:r.schema)||void 0===n?void 0:n.items)||void 0===t?void 0:t.type)&&e.jsxs("span",{style:{color:"#616874",fontSize:"0.75rem"},children:["_",x(null===(h=null===(v=null===(c=P[s])||void 0===c?void 0:c.schema)||void 0===v?void 0:v.items)||void 0===h?void 0:h.type)]})]}),e.jsx("td",{children:null===(p=null===(u=null===(m=P[s])||void 0===m?void 0:m.schema)||void 0===u?void 0:u.enum)||void 0===p?void 0:p.join("/")}),e.jsx("td",{children:null===(j=P[s])||void 0===j?void 0:j.description})]})})})]})})]})]})};export{b as EndpointPage};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/EndpointPage/index.tsx"],"sourcesContent":["import SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport {\n ArrowBack,\n arrowDown,\n arrowUp,\n DownArrowIcon,\n newCopyIcon,\n RequestOption,\n} from '../../../../assets/icons/index'\nimport { SelectGroup } from 'digitinary-ui'\nimport { useEffect, useMemo, useState } from 'react'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { handleStatusColor } from '../../../../helpers/methodAccordion.helper'\nimport { httpStatusCodes } from '../../../../constants/index'\nimport styles from '../../Codebox/style.module.scss'\nimport Tooltip from '../../../../components/Tooltip/Tooltip'\nimport './style.scss'\nimport { SectionEnum, useSectionToggle } from '../../../../../src/context/SectionToggleContext'\nimport { capitalizeFirstLetter, copyToClipboard } from '../../../../../src/utils'\n\nexport const EndpointPage = ({\n data,\n setActiveType,\n setActiveItemData,\n}: {\n data: EndpointData\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n}) => {\n const [activeTab, setActiveTab] = useState('header')\n const { toggleSection } = useSectionToggle()\n const [selectedUrl, setSelectedUrl] = useState(data?.api?.servers?.[0]?.url || '')\n const [isUrlDropdownOpen, setIsUrlDropdownOpen] = useState<boolean>(false)\n\n useEffect(() => {\n setSelectedUrl(data?.api?.servers?.[0]?.url || '')\n }, [data])\n\n const fullUrl = useMemo(() => {\n // env gateway url + api version(if appended) + context path\n const url = data.api?.servers?.filter((s) => s.url !== '/')[0]?.url\n const pathParts = data?.path.split('/').slice(2) // slice from index 2 to skip the first empty \"\" and \"comments\"\n const fullPath = !!pathParts?.length ? '/' + pathParts.join('/') : '' // this will contain the full path without the context path\n return `${url}${fullPath}`\n }, [data])\n\n // Filter status codes to only include those\n const filteredStatusCodes = Object.keys(data?.responses || {}).filter((code) => {\n const response = data.responses[code]\n return (\n response?.content?.['application/json']?.schema?.properties\n )\n })\n\n // Create options for the select dropdown\n const httpStatusCodeOptions = filteredStatusCodes.map((code) => ({\n label: (\n <div className=\"statusCodeOptionContainer\">\n <div\n className=\"statusCodeOptionCircle\"\n style={{ backgroundColor: handleStatusColor(code) }}\n ></div>\n <span>{code}</span>\n </div>\n ),\n value: code,\n }))\n\n // Function to get default option\n const getDefaultOption = () => {\n const has200 = filteredStatusCodes.includes('200')\n return has200\n ? httpStatusCodeOptions.find((opt) => opt.value === '200')\n : httpStatusCodeOptions[0] || null\n }\n\n const [expanded, setExpanded] = useState(null)\n const [selectedResStatusCode, setSelectedResStatusCode] = useState(getDefaultOption())\n const [headersList, setHeadersList] = useState({})\n const requestTableData = (data?.parameters || []).filter(\n (param) => param.in?.toLowerCase() === activeTab.toLowerCase()\n )\n\n useEffect(() => {\n setSelectedResStatusCode(getDefaultOption())\n }, [data])\n\n useEffect(() => {\n if (selectedResStatusCode && selectedResStatusCode.value) {\n const headerObj = data?.responses[selectedResStatusCode.value]\n setHeadersList(headerObj?.headers)\n }\n }, [selectedResStatusCode, data?.responses])\n\n return (\n <div className=\"api-details-expanded\">\n <div className=\"test-button\">\n <button\n className=\"back-button\"\n onClick={() => {\n toggleSection(data.api.apiSpecId, [{ type: SectionEnum.OVERVIEW, setTo: true }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE],\n })\n setActiveType('OVERVIEW')\n setActiveItemData(data.api)\n }}\n >\n <SVGLoader src={ArrowBack} />\n </button>\n\n <Tooltip content=\"Comming soon\">\n <button className=\"disabled\">Test</button>\n </Tooltip>\n </div>\n <h3>{data.api.title}</h3>\n <h1 className=\"api-title\">{data?.summary}</h1>\n <div className=\"url-box\">\n {isUrlDropdownOpen && selectedUrl.length !== 0 && (\n <div className=\"url-list\">\n {data.api?.servers?.map((server, index) => (\n <div\n key={index}\n className=\"url-item\"\n onClick={() => {\n setSelectedUrl(server.url)\n setIsUrlDropdownOpen(false)\n }}\n >\n <input\n type=\"radio\"\n name=\"api-method\"\n checked={selectedUrl === server.url}\n readOnly\n />\n <span>{`${server.url}${data.path}`}</span>\n </div>\n ))}\n </div>\n )}\n <div className=\"url-box_text-container\">\n <span className={`method-label ${data?.method?.toLowerCase()}`}>{data.method}</span>\n <div className=\"url-container\">\n <div className=\"type-ddl\" onClick={() => setIsUrlDropdownOpen((prev) => !prev)}>\n <span className=\"url-text\">{`${selectedUrl}${data.path}`}</span>\n <div className=\"icon-container\">\n <SVGLoader\n className=\"icon\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation()\n copyToClipboard(`${selectedUrl}${data.path}`)\n }}\n src={newCopyIcon}\n />\n {selectedUrl.length !== 0 && (\n <SVGLoader src={!isUrlDropdownOpen ? arrowDown : arrowUp} />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <p className=\"api-desc\">{data?.description || 'No Description'}</p>\n\n <h3>Request</h3>\n\n <div className=\"request-section\">\n <div className=\"request-tabs\">\n {['header', 'path', 'query'].map((tab) => (\n <button\n key={tab}\n className={`tab ${activeTab === tab ? 'active' : ''}`}\n onClick={() => setActiveTab(tab)}\n >\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n <span className=\"tab-label\">\n {tab === 'requestBody'\n ? 'Request Body'\n : tab.charAt(0).toUpperCase() + tab.slice(1)}\n </span>\n </button>\n ))}\n </div>\n\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Parameter Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {data.parameters\n ?.filter((p) => p.in?.toLowerCase() === activeTab.toLowerCase())\n .map((row, index) => (\n <tr key={index}>\n <td>{row.name}</td>\n <td>{row.required ? 'True' : 'False'}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{row?.schema?.type || '-'}</span>\n {row?.schema?.type === 'array' && row?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(row.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{Array.isArray(row.schema?.enum) ? row.schema.enum.join(' / ') : '-'}</td>\n <td className=\"desc-cell\">\n <div className={`desc-text ${expanded === index ? 'expanded' : ''}`}>\n {row.description || 'No description'}\n </div>\n <button\n className=\"desc-toggle\"\n onClick={() => setExpanded(expanded === index ? null : index)}\n >\n <SVGLoader\n src={DownArrowIcon}\n className={expanded === index ? 'rotated' : ''}\n />\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"response-section\">\n <h3>Response</h3>\n\n <div>\n <div style={{ height: '0.5rem', width: '7.5rem', marginLeft: 'auto' }}>\n {Object.keys(data?.responses || {})?.length > 0 && (\n <div className={'codeboxSection'}>\n <div className={`${'codeboxHeader'}`}>\n <SelectGroup\n size=\"small\"\n withSearch={false}\n isMultiple={false}\n clearable={false}\n placeholder=\"200\"\n options={[\n {\n list: httpStatusCodeOptions,\n },\n ]}\n value={selectedResStatusCode}\n onChange={(value) => {\n setSelectedResStatusCode(value)\n }}\n />\n </div>\n </div>\n )}\n </div>\n <button className=\"tab active \">\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n Header\n </button>\n </div>\n\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Header Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {!!headersList &&\n Object.keys(headersList) &&\n Object.keys(headersList).map((key) => (\n <tr>\n <td>{key}</td>\n <td>{headersList[key]?.required.toString()}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{headersList[key]?.schema?.type || '-'}</span>\n {headersList[key]?.schema?.type === 'array' &&\n headersList[key]?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(headersList[key]?.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{headersList[key]?.schema?.enum?.join('/')}</td>\n <td>{headersList[key]?.description}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )\n}\n"],"names":["EndpointPage","data","setActiveType","setActiveItemData","activeTab","setActiveTab","useState","toggleSection","useSectionToggle","selectedUrl","setSelectedUrl","_c","_b","_a","api","servers","url","isUrlDropdownOpen","setIsUrlDropdownOpen","useEffect","useMemo","filter","s","pathParts","path","split","slice","length","join","filteredStatusCodes","Object","keys","responses","code","response","content","schema","properties","httpStatusCodeOptions","map","label","_jsxs","jsxs","className","children","_jsx","style","backgroundColor","handleStatusColor","value","getDefaultOption","includes","find","opt","expanded","setExpanded","selectedResStatusCode","setSelectedResStatusCode","headersList","setHeadersList","parameters","param","in","toLowerCase","headerObj","headers","onClick","apiSpecId","type","SectionEnum","OVERVIEW","setTo","resetOthers","filterKeys","RESOURCE","SVGLoader","src","ArrowBack","Tooltip","title","summary","_e","_d","server","index","name","checked","readOnly","jsx","_f","method","prev","role","tabIndex","e","stopPropagation","copyToClipboard","newCopyIcon","arrowUp","arrowDown","description","tab","RequestOption","charAt","toUpperCase","_g","p","row","required","textTransform","items","color","fontSize","capitalizeFirstLetter","Array","isArray","enum","DownArrowIcon","height","width","marginLeft","_h","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","key","toString","_k","_j","_p","_o","_q"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/EndpointPage/index.tsx"],"sourcesContent":["import SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport {\n ArrowBack,\n arrowDown,\n arrowUp,\n DownArrowIcon,\n newCopyIcon,\n RequestOption,\n} from '../../../../assets/icons/index'\nimport { SelectGroup } from 'digitinary-ui'\nimport { useEffect, useMemo, useState } from 'react'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { handleStatusColor } from '../../../../helpers/methodAccordion.helper'\nimport { httpStatusCodes } from '../../../../constants/index'\nimport styles from '../../Codebox/style.module.scss'\nimport Tooltip from '../../../../components/Tooltip/Tooltip'\nimport './style.scss'\nimport { SectionEnum, useSectionToggle } from '../../../../../src/context/SectionToggleContext'\nimport { capitalizeFirstLetter, copyToClipboard } from '../../../../../src/utils'\n\nexport const EndpointPage = ({\n data,\n setActiveType,\n setActiveItemData,\n}: {\n data: EndpointData\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n}) => {\n const [activeTab, setActiveTab] = useState('header')\n const { toggleSection } = useSectionToggle()\n const [selectedUrl, setSelectedUrl] = useState(data?.api?.servers?.[0]?.url || '')\n const [isUrlDropdownOpen, setIsUrlDropdownOpen] = useState<boolean>(false)\n\n useEffect(() => {\n setSelectedUrl(data?.api?.servers?.[0]?.url || '')\n }, [data])\n\n const fullUrl = useMemo(() => {\n // env gateway url + api version(if appended) + context path\n const url = data.api?.servers?.filter((s) => s.url !== '/')[0]?.url\n const pathParts = data?.path.split('/').slice(2) // slice from index 2 to skip the first empty \"\" and \"comments\"\n const fullPath = !!pathParts?.length ? '/' + pathParts.join('/') : '' // this will contain the full path without the context path\n return `${url}${fullPath}`\n }, [data])\n\n // Filter status codes to only include those\n const filteredStatusCodes = Object.keys(data?.responses || {}).filter((code) => {\n const response = data.responses[code]\n return (\n response?.content?.['application/json']?.schema?.properties\n )\n })\n\n // Create options for the select dropdown\n const httpStatusCodeOptions = filteredStatusCodes.map((code) => ({\n label: (\n <div className=\"statusCodeOptionContainer\">\n <div\n className=\"statusCodeOptionCircle\"\n style={{ backgroundColor: handleStatusColor(code) }}\n ></div>\n <span>{code}</span>\n </div>\n ),\n value: code,\n }))\n\n // Function to get default option\n const getDefaultOption = () => {\n const has200 = filteredStatusCodes.includes('200')\n return has200\n ? httpStatusCodeOptions.find((opt) => opt.value === '200')\n : httpStatusCodeOptions[0] || null\n }\n\n const [expanded, setExpanded] = useState(null)\n const [selectedResStatusCode, setSelectedResStatusCode] = useState(getDefaultOption())\n const [headersList, setHeadersList] = useState({})\n const requestTableData = (data?.parameters || []).filter(\n (param) => param.in?.toLowerCase() === activeTab.toLowerCase()\n )\n\n useEffect(() => {\n setSelectedResStatusCode(getDefaultOption())\n }, [data])\n\n useEffect(() => {\n if (selectedResStatusCode && selectedResStatusCode.value) {\n const headerObj = data?.responses[selectedResStatusCode.value]\n setHeadersList(headerObj?.headers)\n }\n }, [selectedResStatusCode, data?.responses])\n\n return (\n <div className=\"api-details-expanded\">\n <div className=\"test-button\">\n <button\n className=\"back-button\"\n onClick={() => {\n toggleSection(data.api.apiSpecId, [{ type: SectionEnum.OVERVIEW, setTo: true }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE],\n })\n setActiveType('OVERVIEW')\n setActiveItemData(data.api)\n }}\n >\n <SVGLoader src={ArrowBack} />\n </button>\n\n <Tooltip content=\"Comming soon\">\n <button className=\"disabled\">Test</button>\n </Tooltip>\n </div>\n <h3>{data.api.title}</h3>\n <h1 className=\"api-title\">{data?.summary}</h1>\n <div className=\"url-box\">\n {isUrlDropdownOpen && selectedUrl.length !== 0 && (\n <div className=\"url-list\">\n {data.api?.servers?.map((server, index) => (\n <div\n key={index}\n className=\"url-item\"\n onClick={() => {\n setSelectedUrl(server.url)\n setIsUrlDropdownOpen(false)\n }}\n >\n <input\n type=\"radio\"\n name=\"api-method\"\n checked={selectedUrl === server.url}\n readOnly\n />\n <span>{`${server.url}${data.path}`}</span>\n </div>\n ))}\n </div>\n )}\n <div className=\"url-box_text-container\">\n <span className={`method-label ${data?.method?.toLowerCase()}`}>{data.method}</span>\n <div className=\"url-container\">\n <div className=\"type-ddl\" onClick={() => setIsUrlDropdownOpen((prev) => !prev)}>\n <span className=\"url-text\">{`${selectedUrl}${data.path}`}</span>\n <div className=\"icon-container\">\n <SVGLoader\n className=\"icon\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation()\n copyToClipboard(`${selectedUrl}${data.path}`)\n }}\n src={newCopyIcon}\n />\n {selectedUrl.length !== 0 && (\n <SVGLoader src={!isUrlDropdownOpen ? arrowDown : arrowUp} />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <p className=\"api-desc\">{data?.description || 'No Description'}</p>\n\n <h3>Request</h3>\n\n <div className=\"request-section\">\n <div className=\"request-tabs\">\n {['header', 'path', 'query'].map((tab) => (\n <button\n key={tab}\n className={`tab ${activeTab === tab ? 'active' : ''}`}\n onClick={() => setActiveTab(tab)}\n >\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n <span className=\"tab-label\">\n {tab === 'requestBody'\n ? 'Request Body'\n : tab.charAt(0).toUpperCase() + tab.slice(1)}\n </span>\n </button>\n ))}\n </div>\n\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Parameter Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {data.parameters\n ?.filter((p) => p.in?.toLowerCase() === activeTab.toLowerCase())\n .map((row, index) => (\n <tr key={index}>\n <td>{row.name}</td>\n <td>{row.required ? 'True' : 'False'}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{row?.schema?.type || '-'}</span>\n {row?.schema?.type === 'array' && row?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(row.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{Array.isArray(row.schema?.enum) ? row.schema.enum.join(' / ') : '-'}</td>\n <td className=\"desc-cell\">\n <div className={`desc-text ${expanded === index ? 'expanded' : ''}`}>\n {row.description || 'No description'}\n </div>\n <button\n className=\"desc-toggle\"\n onClick={() => setExpanded(expanded === index ? null : index)}\n >\n <SVGLoader\n src={DownArrowIcon}\n className={expanded === index ? 'rotated' : ''}\n />\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"response-section\">\n <h3>Response</h3>\n\n <div>\n <div style={{ height: '0.5rem', width: '7.5rem', marginLeft: 'auto' }}>\n {Object.keys(data?.responses || {})?.length > 0 && (\n <div className={'codeboxSection'}>\n <div className={`${'codeboxHeader'}`}>\n <SelectGroup\n size=\"small\"\n withSearch={false}\n isMultiple={false}\n clearable={false}\n placeholder=\"200\"\n options={[\n {\n list: httpStatusCodeOptions,\n },\n ]}\n value={selectedResStatusCode}\n onChange={(value) => {\n setSelectedResStatusCode(value)\n }}\n />\n </div>\n </div>\n )}\n </div>\n <button className=\"tab active \">\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n Header\n </button>\n </div>\n\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Header Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {!!headersList &&\n Object.keys(headersList) &&\n Object.keys(headersList).map((key) => (\n <tr>\n <td>{key}</td>\n <td>{headersList[key]?.required.toString()}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{headersList[key]?.schema?.type || '-'}</span>\n {headersList[key]?.schema?.type === 'array' &&\n headersList[key]?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(headersList[key]?.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{headersList[key]?.schema?.enum?.join('/')}</td>\n <td>{headersList[key]?.description}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )\n}\n"],"names":["EndpointPage","data","setActiveType","setActiveItemData","activeTab","setActiveTab","useState","toggleSection","useSectionToggle","selectedUrl","setSelectedUrl","_c","_b","_a","api","servers","url","isUrlDropdownOpen","setIsUrlDropdownOpen","useEffect","useMemo","filter","s","pathParts","path","split","slice","length","join","filteredStatusCodes","Object","keys","responses","code","response","content","schema","properties","httpStatusCodeOptions","map","label","_jsxs","jsxs","className","children","_jsx","style","backgroundColor","handleStatusColor","value","getDefaultOption","includes","find","opt","expanded","setExpanded","selectedResStatusCode","setSelectedResStatusCode","headersList","setHeadersList","parameters","param","in","toLowerCase","headerObj","headers","onClick","apiSpecId","type","SectionEnum","OVERVIEW","setTo","resetOthers","filterKeys","RESOURCE","SVGLoader","src","ArrowBack","Tooltip","title","summary","_e","_d","server","index","name","checked","readOnly","jsx","_f","method","prev","role","tabIndex","e","stopPropagation","copyToClipboard","newCopyIcon","arrowUp","arrowDown","description","tab","RequestOption","charAt","toUpperCase","_g","p","row","required","textTransform","items","color","fontSize","capitalizeFirstLetter","Array","isArray","enum","DownArrowIcon","height","width","marginLeft","_h","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","key","toString","_k","_j","_p","_o","_q"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as s}from"../../../../../_virtual/jsx-runtime.js";import e from"../../../../components/SVGLoader/SVGLoader.js";import i from"../../../../assets/icons/arrowRightGray.svg.js";import n from"../../../../assets/icons/arrow-down.svg.js";import t from"../../../../assets/icons/newCopyIcon.svg.js";import a from"../../../../assets/icons/arrow-up.svg.js";import{useSectionToggle as r,SectionEnum as l}from"../../../../context/SectionToggleContext.js";import{useState as o,useEffect as d}from"react";import{copyToClipboard as c}from"../../../../utils/index.js";const p=({data:p,setActiveItemData:m,setActiveType:v,onProductNavigate:h,apis:j})=>{var u,x,N,I;const{toggleSection:g}=r(),[O,E]=o((null===(x=null===(u=null==p?void 0:p.servers)||void 0===u?void 0:u[0])||void 0===x?void 0:x.url)||""),[S,f]=o(!1);d((
|
|
1
|
+
import{j as s}from"../../../../../_virtual/jsx-runtime.js";import e from"../../../../components/SVGLoader/SVGLoader.js";import i from"../../../../assets/icons/arrowRightGray.svg.js";import n from"../../../../assets/icons/arrow-down.svg.js";import t from"../../../../assets/icons/newCopyIcon.svg.js";import a from"../../../../assets/icons/arrow-up.svg.js";import{useSectionToggle as r,SectionEnum as l}from"../../../../context/SectionToggleContext.js";import{useState as o,useEffect as d}from"react";import{copyToClipboard as c}from"../../../../utils/index.js";const p=({data:p,setActiveItemData:m,setActiveType:v,onProductNavigate:h,apis:j})=>{var u,x,N,I;const{toggleSection:g}=r(),[O,E]=o((null===(x=null===(u=null==p?void 0:p.servers)||void 0===u?void 0:u[0])||void 0===x?void 0:x.url)||""),[S,f]=o(!1);d(()=>{var s,e;E((null===(e=null===(s=null==p?void 0:p.servers)||void 0===s?void 0:s[0])||void 0===e?void 0:e.url)||"")},[p]);return s.jsxs("div",{className:"api-details-page",children:[s.jsx("h2",{className:"welcome",children:"Welcome to"}),s.jsx("h1",{className:"api-title",children:null==p?void 0:p.title}),s.jsxs("p",{className:"api-version",children:["API Version: ",s.jsx("span",{children:null==p?void 0:p.version})]}),s.jsxs("div",{className:"custom-url-input",children:[s.jsx("label",{className:"input-label",children:"API Base URL"}),s.jsxs("div",{className:"url-container",children:[s.jsxs("div",{className:"type-ddl",onClick:()=>f(s=>!s),children:[s.jsx("span",{className:"url-text",children:O||"-"}),s.jsxs("div",{className:"icon-container",children:[0!==O.length&&s.jsx(e,{className:"icon",role:"button",tabIndex:0,onClick:s=>{s.stopPropagation(),c(O)},src:t}),0!==O.length&&s.jsx(e,{src:S?a:n})]})]}),S&&0!==O.length&&s.jsx("div",{className:"url-list",children:null===(N=null==p?void 0:p.servers)||void 0===N?void 0:N.map((e,i)=>s.jsxs("div",{className:"url-item",onClick:()=>{E(e.url),f(!1)},children:[s.jsx("input",{type:"radio",name:"api-method",checked:O===e.url,readOnly:!0}),s.jsx("span",{children:e.url})]},i))})]})]}),s.jsx("p",{className:"api-desc",children:`${p.description||"No Description"}`}),h&&s.jsxs("div",{className:"api-product-tag",children:["Product with this API"," ",s.jsx("span",{className:"product-tag",role:"button",tabIndex:-1,onClick:()=>h(p.associatedProduct.productId),children:p.associatedProduct.name})]}),s.jsx("h3",{className:"section-title",children:"Endpoints"}),Object.entries(null==p?void 0:p.tags).map(([n,t])=>s.jsxs("div",{className:"endpoint-group",children:[s.jsx("h4",{className:"tag-title",children:n}),s.jsx("div",{className:"endpoint-list",children:t.map((t,a)=>{var r,o,d;return s.jsxs("div",{className:"endpoint-card",onClick:()=>(s=>{m(Object.assign(Object.assign({},s),{api:Object.assign({id:p.apiSpecId,title:p.title,description:p.description,version:p.version},p)})),v("ENDPOINT"),Object.entries((null==p?void 0:p.tags)||{}).findIndex(([,e])=>e.some(e=>e.id===s.id));const e=Object.entries(p.tags).sort(([s],[e])=>"default"===s?1:"default"===e?-1:s.localeCompare(e)).findIndex(([e,i])=>i.find(e=>e.id===s.id));g(p.apiSpecId,[{type:l.API_SECTION,setTo:!0},{type:l.ENDPOINTS_SECTION,setTo:!0},{type:l.TAG_SECTION,setTo:!0,index:e},{type:l.RESOURCE,setTo:!0,id:s.id}],{resetOthers:!0,filterKeys:[l.OVERVIEW]})})(t),children:[s.jsxs("div",{children:[s.jsxs("div",{className:"endpoint-card-header",children:[s.jsx("span",{className:`method-label ${t.method.toLowerCase()}`,children:t.method}),s.jsx("div",{className:"title-wrapper",children:s.jsxs("h5",{children:[(t.summary||"Endpoint Name").slice(0,40),(null!==(o=null===(r=t.summary)||void 0===r?void 0:r.length)&&void 0!==o?o:0)>40&&"..."]})})]}),s.jsxs("div",{className:"endpoint-meta",children:[s.jsx("p",{children:t.path}),s.jsx("p",{className:"description",children:null!==(d=t.description)&&void 0!==d?d:"No Description "})]})]}),s.jsx("div",{className:"endpoint-arrow",children:s.jsx(e,{src:i})})]},`${n}-${a}`)})})]},n)),(null===(I=p.apiVersions)||void 0===I?void 0:I.length)>0&&s.jsxs("div",{className:"versions-section",children:[s.jsx("h4",{children:"API Versions"}),s.jsx("div",{className:"version-list",children:p.apiVersions.map((e,i)=>{var n;return s.jsx("button",{className:"version-btn",onClick:()=>(s=>{if(s.apiSpecId===p.apiSpecId)return void v("OVERVIEW");const e=p.apiVersions.find(e=>e.apiSpecId===s.apiSpecId);if(!e)return;const i=j.find(s=>s.apiSpecId===e.apiSpecId);m(i),v("OVERVIEW"),g(i.apiSpecId,[{type:l.API_SECTION,setTo:!0},{type:l.OVERVIEW,setTo:!0}],{resetOthers:!0,filterKeys:[l.OVERVIEW,l.API_SECTION,l.ENDPOINTS_SECTION,l.TAG_SECTION]})})(e),children:(null===(n=e.metaData)||void 0===n?void 0:n.version)||"N/A"},i)})})]})]})};export{p as OverviewPage};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/OverviewPage/index.tsx"],"sourcesContent":["import './style.scss'\nimport SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport { arrowDown, arrowRightGray, arrowUp, newCopyIcon } from '../../../../assets/icons/index'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { SectionEnum, useSectionToggle } from '../../../../../src/context/SectionToggleContext'\nimport React, { useEffect, useState } from 'react'\nimport { copyToClipboard } from '../../../../utils'\n\nexport const OverviewPage = ({\n data,\n setActiveItemData,\n setActiveType,\n onProductNavigate,\n apis,\n}: {\n data: OverviewData\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n onProductNavigate?: (productId: number) => void\n apis: OverviewData[]\n}) => {\n const { toggleSection } = useSectionToggle()\n const [selectedUrl, setSelectedUrl] = useState(data?.servers?.[0]?.url || '')\n const [isUrlDropdownOpen, setIsUrlDropdownOpen] = useState<boolean>(false)\n\n useEffect(() => {\n setSelectedUrl(data?.servers?.[0]?.url || '')\n }, [data])\n const handleVersionClick = (verObj) => {\n if (verObj.apiSpecId === data.apiSpecId) {\n setActiveType('OVERVIEW')\n return\n }\n\n const matchedVersion = data.apiVersions.find((v) => v.apiSpecId === verObj.apiSpecId)\n\n if (!matchedVersion) {\n return\n }\n\n const matchedApi = apis.find((api) => api.apiSpecId === matchedVersion.apiSpecId)\n setActiveItemData(matchedApi)\n\n setActiveType('OVERVIEW')\n toggleSection(\n matchedApi.apiSpecId,\n [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.OVERVIEW, setTo: true },\n ],\n {\n resetOthers: true,\n filterKeys: [\n SectionEnum.OVERVIEW,\n SectionEnum.API_SECTION,\n SectionEnum.ENDPOINTS_SECTION,\n SectionEnum.TAG_SECTION,\n ],\n }\n )\n }\n\n const handleClick = (endpoint) => {\n setActiveItemData({\n ...endpoint,\n api: {\n id: data.apiSpecId,\n title: data.title,\n description: data.description,\n version: data.version,\n ...data,\n },\n })\n setActiveType('ENDPOINT')\n const tagEntries = Object.entries(data?.tags || {})\n const sectionIndex = tagEntries.findIndex(([, endpoints]) =>\n endpoints.some((e) => e.id === endpoint.id)\n )\n\n const tagSectionIndex = Object.entries(data.tags)\n .sort(([a], [b]) => (a === 'default' ? 1 : b === 'default' ? -1 : a.localeCompare(b)))\n .findIndex(([_, tagData]) => tagData.find((t) => t.id === endpoint.id))\n\n toggleSection(\n data.apiSpecId,\n [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.ENDPOINTS_SECTION, setTo: true },\n { type: SectionEnum.TAG_SECTION, setTo: true, index: tagSectionIndex },\n { type: SectionEnum.RESOURCE, setTo: true, id: endpoint.id },\n ],\n { resetOthers: true, filterKeys: [SectionEnum.OVERVIEW] }\n )\n }\n\n return (\n <div className=\"api-details-page\">\n <h2 className=\"welcome\">Welcome to</h2>\n <h1 className=\"api-title\">{data?.title}</h1>\n <p className=\"api-version\">\n API Version: <span>{data?.version}</span>\n </p>\n <div className=\"custom-url-input\">\n <label className=\"input-label\">API Base URL</label>\n <div className=\"url-container\">\n <div className=\"type-ddl\" onClick={() => setIsUrlDropdownOpen((prev) => !prev)}>\n <span className=\"url-text\">{selectedUrl || '-'}</span>\n <div className=\"icon-container\">\n {selectedUrl.length !== 0 && (\n <SVGLoader\n className=\"icon\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation()\n copyToClipboard(selectedUrl)\n }}\n src={newCopyIcon}\n />\n )}\n {selectedUrl.length !== 0 && (\n <SVGLoader src={!isUrlDropdownOpen ? arrowDown : arrowUp} />\n )}\n </div>\n </div>\n {isUrlDropdownOpen && selectedUrl.length !== 0 && (\n <div className=\"url-list\">\n {data?.servers?.map((server, index) => (\n <div\n key={index}\n className=\"url-item\"\n onClick={() => {\n setSelectedUrl(server.url)\n setIsUrlDropdownOpen(false)\n }}\n >\n <input\n type=\"radio\"\n name=\"api-method\"\n checked={selectedUrl === server.url}\n readOnly\n />\n <span>{server.url}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n <p className=\"api-desc\">{`${data.description || 'No Description'}`}</p>\n {onProductNavigate && (\n <div className=\"api-product-tag\">\n Product with this API{' '}\n <span\n className=\"product-tag\"\n role=\"button\"\n tabIndex={-1}\n onClick={() => onProductNavigate(data.associatedProduct.productId)}\n >\n {data.associatedProduct.name}\n </span>\n </div>\n )}\n\n <h3 className=\"section-title\">Endpoints</h3>\n\n {Object.entries(data?.tags).map(([tag, endpoints]) => (\n <div className=\"endpoint-group\" key={tag}>\n <h4 className=\"tag-title\">{tag}</h4>\n <div className=\"endpoint-list\">\n {endpoints.map((endpoint, idx) => (\n <div\n className=\"endpoint-card\"\n onClick={() => handleClick(endpoint)}\n key={`${tag}-${idx}`}\n >\n <div>\n <div className=\"endpoint-card-header\">\n <span className={`method-label ${endpoint.method.toLowerCase()}`}>\n {endpoint.method}\n </span>\n <div className=\"title-wrapper\">\n <h5>\n {(endpoint.summary || 'Endpoint Name').slice(0, 40)}\n {(endpoint.summary?.length ?? 0) > 40 && '...'}\n </h5>\n </div>\n </div>\n <div className=\"endpoint-meta\">\n <p>{endpoint.path}</p>\n <p className=\"description\">{endpoint.description ?? 'No Description '}</p>\n </div>\n </div>\n\n <div className=\"endpoint-arrow\">\n <SVGLoader src={arrowRightGray} />\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n\n {data.apiVersions?.length > 0 && (\n <div className=\"versions-section\">\n <h4>API Versions</h4>\n <div className=\"version-list\">\n {data.apiVersions.map((verObj, index) => (\n <button\n key={index}\n className=\"version-btn\"\n onClick={() => handleVersionClick(verObj)}\n >\n {verObj.metaData?.version || 'N/A'}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["OverviewPage","data","setActiveItemData","setActiveType","onProductNavigate","apis","toggleSection","useSectionToggle","selectedUrl","setSelectedUrl","useState","_b","_a","servers","url","isUrlDropdownOpen","setIsUrlDropdownOpen","useEffect","_jsxs","className","children","_jsx","jsx","title","version","onClick","prev","jsxs","length","SVGLoader","role","tabIndex","e","stopPropagation","copyToClipboard","src","newCopyIcon","arrowUp","arrowDown","_c","map","server","index","type","name","checked","readOnly","description","associatedProduct","productId","Object","entries","tags","tag","endpoints","endpoint","idx","assign","api","id","apiSpecId","findIndex","some","tagSectionIndex","sort","a","b","localeCompare","_","tagData","find","t","SectionEnum","API_SECTION","setTo","ENDPOINTS_SECTION","TAG_SECTION","RESOURCE","resetOthers","filterKeys","OVERVIEW","handleClick","method","toLowerCase","summary","slice","path","arrowRightGray","_d","apiVersions","verObj","matchedVersion","v","matchedApi","handleVersionClick","metaData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/OverviewPage/index.tsx"],"sourcesContent":["import './style.scss'\nimport SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport { arrowDown, arrowRightGray, arrowUp, newCopyIcon } from '../../../../assets/icons/index'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { SectionEnum, useSectionToggle } from '../../../../../src/context/SectionToggleContext'\nimport React, { useEffect, useState } from 'react'\nimport { copyToClipboard } from '../../../../utils'\n\nexport const OverviewPage = ({\n data,\n setActiveItemData,\n setActiveType,\n onProductNavigate,\n apis,\n}: {\n data: OverviewData\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n onProductNavigate?: (productId: number) => void\n apis: OverviewData[]\n}) => {\n const { toggleSection } = useSectionToggle()\n const [selectedUrl, setSelectedUrl] = useState(data?.servers?.[0]?.url || '')\n const [isUrlDropdownOpen, setIsUrlDropdownOpen] = useState<boolean>(false)\n\n useEffect(() => {\n setSelectedUrl(data?.servers?.[0]?.url || '')\n }, [data])\n const handleVersionClick = (verObj) => {\n if (verObj.apiSpecId === data.apiSpecId) {\n setActiveType('OVERVIEW')\n return\n }\n\n const matchedVersion = data.apiVersions.find((v) => v.apiSpecId === verObj.apiSpecId)\n\n if (!matchedVersion) {\n return\n }\n\n const matchedApi = apis.find((api) => api.apiSpecId === matchedVersion.apiSpecId)\n setActiveItemData(matchedApi)\n\n setActiveType('OVERVIEW')\n toggleSection(\n matchedApi.apiSpecId,\n [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.OVERVIEW, setTo: true },\n ],\n {\n resetOthers: true,\n filterKeys: [\n SectionEnum.OVERVIEW,\n SectionEnum.API_SECTION,\n SectionEnum.ENDPOINTS_SECTION,\n SectionEnum.TAG_SECTION,\n ],\n }\n )\n }\n\n const handleClick = (endpoint) => {\n setActiveItemData({\n ...endpoint,\n api: {\n id: data.apiSpecId,\n title: data.title,\n description: data.description,\n version: data.version,\n ...data,\n },\n })\n setActiveType('ENDPOINT')\n const tagEntries = Object.entries(data?.tags || {})\n const sectionIndex = tagEntries.findIndex(([, endpoints]) =>\n endpoints.some((e) => e.id === endpoint.id)\n )\n\n const tagSectionIndex = Object.entries(data.tags)\n .sort(([a], [b]) => (a === 'default' ? 1 : b === 'default' ? -1 : a.localeCompare(b)))\n .findIndex(([_, tagData]) => tagData.find((t) => t.id === endpoint.id))\n\n toggleSection(\n data.apiSpecId,\n [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.ENDPOINTS_SECTION, setTo: true },\n { type: SectionEnum.TAG_SECTION, setTo: true, index: tagSectionIndex },\n { type: SectionEnum.RESOURCE, setTo: true, id: endpoint.id },\n ],\n { resetOthers: true, filterKeys: [SectionEnum.OVERVIEW] }\n )\n }\n\n return (\n <div className=\"api-details-page\">\n <h2 className=\"welcome\">Welcome to</h2>\n <h1 className=\"api-title\">{data?.title}</h1>\n <p className=\"api-version\">\n API Version: <span>{data?.version}</span>\n </p>\n <div className=\"custom-url-input\">\n <label className=\"input-label\">API Base URL</label>\n <div className=\"url-container\">\n <div className=\"type-ddl\" onClick={() => setIsUrlDropdownOpen((prev) => !prev)}>\n <span className=\"url-text\">{selectedUrl || '-'}</span>\n <div className=\"icon-container\">\n {selectedUrl.length !== 0 && (\n <SVGLoader\n className=\"icon\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation()\n copyToClipboard(selectedUrl)\n }}\n src={newCopyIcon}\n />\n )}\n {selectedUrl.length !== 0 && (\n <SVGLoader src={!isUrlDropdownOpen ? arrowDown : arrowUp} />\n )}\n </div>\n </div>\n {isUrlDropdownOpen && selectedUrl.length !== 0 && (\n <div className=\"url-list\">\n {data?.servers?.map((server, index) => (\n <div\n key={index}\n className=\"url-item\"\n onClick={() => {\n setSelectedUrl(server.url)\n setIsUrlDropdownOpen(false)\n }}\n >\n <input\n type=\"radio\"\n name=\"api-method\"\n checked={selectedUrl === server.url}\n readOnly\n />\n <span>{server.url}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n <p className=\"api-desc\">{`${data.description || 'No Description'}`}</p>\n {onProductNavigate && (\n <div className=\"api-product-tag\">\n Product with this API{' '}\n <span\n className=\"product-tag\"\n role=\"button\"\n tabIndex={-1}\n onClick={() => onProductNavigate(data.associatedProduct.productId)}\n >\n {data.associatedProduct.name}\n </span>\n </div>\n )}\n\n <h3 className=\"section-title\">Endpoints</h3>\n\n {Object.entries(data?.tags).map(([tag, endpoints]) => (\n <div className=\"endpoint-group\" key={tag}>\n <h4 className=\"tag-title\">{tag}</h4>\n <div className=\"endpoint-list\">\n {endpoints.map((endpoint, idx) => (\n <div\n className=\"endpoint-card\"\n onClick={() => handleClick(endpoint)}\n key={`${tag}-${idx}`}\n >\n <div>\n <div className=\"endpoint-card-header\">\n <span className={`method-label ${endpoint.method.toLowerCase()}`}>\n {endpoint.method}\n </span>\n <div className=\"title-wrapper\">\n <h5>\n {(endpoint.summary || 'Endpoint Name').slice(0, 40)}\n {(endpoint.summary?.length ?? 0) > 40 && '...'}\n </h5>\n </div>\n </div>\n <div className=\"endpoint-meta\">\n <p>{endpoint.path}</p>\n <p className=\"description\">{endpoint.description ?? 'No Description '}</p>\n </div>\n </div>\n\n <div className=\"endpoint-arrow\">\n <SVGLoader src={arrowRightGray} />\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n\n {data.apiVersions?.length > 0 && (\n <div className=\"versions-section\">\n <h4>API Versions</h4>\n <div className=\"version-list\">\n {data.apiVersions.map((verObj, index) => (\n <button\n key={index}\n className=\"version-btn\"\n onClick={() => handleVersionClick(verObj)}\n >\n {verObj.metaData?.version || 'N/A'}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["OverviewPage","data","setActiveItemData","setActiveType","onProductNavigate","apis","toggleSection","useSectionToggle","selectedUrl","setSelectedUrl","useState","_b","_a","servers","url","isUrlDropdownOpen","setIsUrlDropdownOpen","useEffect","_jsxs","className","children","_jsx","jsx","title","version","onClick","prev","jsxs","length","SVGLoader","role","tabIndex","e","stopPropagation","copyToClipboard","src","newCopyIcon","arrowUp","arrowDown","_c","map","server","index","type","name","checked","readOnly","description","associatedProduct","productId","Object","entries","tags","tag","endpoints","endpoint","idx","assign","api","id","apiSpecId","findIndex","some","tagSectionIndex","sort","a","b","localeCompare","_","tagData","find","t","SectionEnum","API_SECTION","setTo","ENDPOINTS_SECTION","TAG_SECTION","RESOURCE","resetOthers","filterKeys","OVERVIEW","handleClick","method","toLowerCase","summary","slice","path","arrowRightGray","_d","apiVersions","verObj","matchedVersion","v","matchedApi","handleVersionClick","metaData"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"../../../../_virtual/jsx-runtime.js";import{useState as s}from"react";import{d as o}from"../../../../_virtual/index.js";import t from"../../../components/SVGLoader/SVGLoader.js";import r from"../../../assets/icons/UpArrow.svg.js";import i from"../../../assets/icons/DownArrow.svg.js";import a from"../../../assets/icons/ApiIcon.svg.js";import n from"../../../assets/icons/FilterIcon.svg.js";import l from"../../../assets/icons/BookIcon.svg.js";import c from"../../../assets/icons/searchIcon.svg.js";import d from"../../../components/Tooltip/Tooltip.js";import m from"../../../components/dialog/index.js";import{METHOD_OPTIONS as h}from"../../../constants/methods.constant.js";import j from"./DocsHeader.module.scss.js";const p=({transformedOpenApis:p,updateFilteredData:u})=>{const[v,x]=s(!1),[f,g]=s(""),[N,b]=s([]),[_,C]=s(!1);return e.jsxs(e.Fragment,{children:[e.jsx("header",{className:j.api_docs_header,children:e.jsxs("div",{className:j.header_content,children:[e.jsxs(o.Button,{variant:"outlined",size:"small",className:j.search_filter_btn,onClick:()=>{x(!0)},children:["Search & Filter",e.jsx(t,{src:n})]}),e.jsxs("div",{className:j.nav_buttons,children:[e.jsx(d,{placement:"bottom",offset:[10,5],delay:[0,0],className:"guide-tooltip",content:e.jsx("div",{children:"Coming Soon"}),children:e.jsxs(o.Button,{variant:"outlined",size:"small",className:"guide-btn",disabled:!0,children:[e.jsx(t,{src:l}),"GUIDES"]})}),e.jsxs(o.Button,{variant:"outlined",size:"small",className:j.api_btn,children:[e.jsx(t,{src:a})," API reference"]})]})]})}),e.jsx(m,{size:"sm",open:v,onClose:()=>{x(!1),C(!1)},icon:!1,withClose:!1,noActions:!0,content:e.jsxs("div",{className:"search-filter-form "+(_?"expanded":""),children:[e.jsx("div",{className:"search-filter-form__header",children:e.jsx("p",{className:"search-filter-form__header__title",children:"Search & Filter"})}),e.jsx(o.Input,{className:"name-input",placeholder:"Search by API name",value:f,onChange:e=>g(e),size:o.Size.Medium,clearable:!0,endAdornment:e.jsx(t,{src:c})}),e.jsxs("div",{className:"method-container",children:[e.jsx("label",{children:"Method"}),e.jsxs("div",{className:"typeDdl",onClick:()=>C(
|
|
1
|
+
import{j as e}from"../../../../_virtual/jsx-runtime.js";import{useState as s}from"react";import{d as o}from"../../../../_virtual/index.js";import t from"../../../components/SVGLoader/SVGLoader.js";import r from"../../../assets/icons/UpArrow.svg.js";import i from"../../../assets/icons/DownArrow.svg.js";import a from"../../../assets/icons/ApiIcon.svg.js";import n from"../../../assets/icons/FilterIcon.svg.js";import l from"../../../assets/icons/BookIcon.svg.js";import c from"../../../assets/icons/searchIcon.svg.js";import d from"../../../components/Tooltip/Tooltip.js";import m from"../../../components/dialog/index.js";import{METHOD_OPTIONS as h}from"../../../constants/methods.constant.js";import j from"./DocsHeader.module.scss.js";const p=({transformedOpenApis:p,updateFilteredData:u})=>{const[v,x]=s(!1),[f,g]=s(""),[N,b]=s([]),[_,C]=s(!1);return e.jsxs(e.Fragment,{children:[e.jsx("header",{className:j.api_docs_header,children:e.jsxs("div",{className:j.header_content,children:[e.jsxs(o.Button,{variant:"outlined",size:"small",className:j.search_filter_btn,onClick:()=>{x(!0)},children:["Search & Filter",e.jsx(t,{src:n})]}),e.jsxs("div",{className:j.nav_buttons,children:[e.jsx(d,{placement:"bottom",offset:[10,5],delay:[0,0],className:"guide-tooltip",content:e.jsx("div",{children:"Coming Soon"}),children:e.jsxs(o.Button,{variant:"outlined",size:"small",className:"guide-btn",disabled:!0,children:[e.jsx(t,{src:l}),"GUIDES"]})}),e.jsxs(o.Button,{variant:"outlined",size:"small",className:j.api_btn,children:[e.jsx(t,{src:a})," API reference"]})]})]})}),e.jsx(m,{size:"sm",open:v,onClose:()=>{x(!1),C(!1)},icon:!1,withClose:!1,noActions:!0,content:e.jsxs("div",{className:"search-filter-form "+(_?"expanded":""),children:[e.jsx("div",{className:"search-filter-form__header",children:e.jsx("p",{className:"search-filter-form__header__title",children:"Search & Filter"})}),e.jsx(o.Input,{className:"name-input",placeholder:"Search by API name",value:f,onChange:e=>g(e),size:o.Size.Medium,clearable:!0,endAdornment:e.jsx(t,{src:c})}),e.jsxs("div",{className:"method-container",children:[e.jsx("label",{children:"Method"}),e.jsxs("div",{className:"typeDdl",onClick:()=>C(e=>!e),children:[e.jsx("span",{children:"Select Method"}),e.jsx(t,{src:_?r:i})]}),_&&e.jsx("div",{className:"methodList",children:h.map(s=>e.jsxs("div",{className:"method-item",children:[e.jsx("input",{type:"checkbox",className:"agreement-checkbox",checked:N.includes(s.value),onChange:e=>((e,s)=>{const{target:{checked:o}}=e;o?b(e=>[...e,s.value]):N.includes(s.value)&&b(e=>e.filter(e=>e!=s.value))})(e,s)}),e.jsx("span",{style:{color:s.color},children:s.label})]}))})]}),e.jsx("div",{className:"button-container",children:e.jsx(o.Button,{variant:"contained",color:"primary",size:"large",onClick:()=>{if(!((null==f?void 0:f.trim())||N&&0!==N.length))return u(p,!0),void x(!1);let e=[...p];if(null==f?void 0:f.trim()){const s=f.toLowerCase();e=e.filter(e=>e.title.toLowerCase().includes(s))}(null==N?void 0:N.length)&&(e=e.filter(e=>{const s=Object.values(e.tags||{}).flat().map(e=>{var s;return null===(s=e.method)||void 0===s?void 0:s.toLowerCase()});return N.some(e=>s.includes(e.toLowerCase()))})),u(e),x(!1)},className:"dialog-submit-btn",children:"Apply"})})]})})]})};export{p as default};
|
|
2
2
|
//# sourceMappingURL=DocsHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsHeader.js","sources":["../../../../../src/layout/docsComponents/DocsHeader/DocsHeader.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react'\nimport { Button, Size, Input } from 'digitinary-ui'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport {\n FilterIcon,\n BookIcon,\n ApiIcon,\n SearchIcon,\n UpArrowIcon,\n DownArrowIcon,\n} from '../../../assets/icons'\nimport Tooltip from '../../../components/Tooltip/Tooltip'\nimport CommonDialog from '../../../components/dialog/index'\nimport { METHOD_OPTIONS } from '../../../constants/methods.constant'\nimport styles from './DocsHeader.module.scss'\nimport { OverviewData } from '../../../../src/layout/docsLayout'\n\nconst DocsHeader = ({\n transformedOpenApis,\n updateFilteredData,\n}: {\n transformedOpenApis: OverviewData[]\n updateFilteredData: (filteredItems: OverviewData[], isReset?: boolean) => void\n}) => {\n const [showSearchFilter, setShowSearchFilter] = useState<boolean>(false)\n const [apiName, setApiName] = useState<string>('')\n const [selectedMethods, setSelectedMethods] = useState<any[]>([])\n const [isMethodDropdownOpen, setIsMethodDropdownOpen] = useState<boolean>(false)\n\n const handleOpenSearchFilter = (): void => {\n setShowSearchFilter(true)\n }\n\n const handleCloseSearchFilter = (): void => {\n setShowSearchFilter(false)\n setIsMethodDropdownOpen(false)\n }\n\n const handleApplyFilters = (): void => {\n // Reset: no filters applied\n if (!apiName?.trim() && (!selectedMethods || selectedMethods.length === 0)) {\n updateFilteredData(transformedOpenApis, true)\n setShowSearchFilter(false)\n return\n }\n\n let filteredItems = [...transformedOpenApis]\n\n // Filter by API name\n if (apiName?.trim()) {\n const lowerApiName = apiName.toLowerCase()\n filteredItems = filteredItems.filter((api) => api.title.toLowerCase().includes(lowerApiName))\n }\n\n // Filter by selected HTTP methods\n if (selectedMethods?.length) {\n filteredItems = filteredItems.filter((api) => {\n const allMethods = Object.values(api.tags || {})\n .flat()\n .map((endpoint: any) => endpoint.method?.toLowerCase())\n\n return selectedMethods.some((method) => allMethods.includes(method.toLowerCase()))\n })\n }\n\n updateFilteredData(filteredItems)\n setShowSearchFilter(false)\n }\n\n const handleCheckMethod = (e, method: (typeof METHOD_OPTIONS)[0]) => {\n const {\n target: { checked },\n } = e\n if (checked) {\n setSelectedMethods((prev) => [...prev, method.value])\n } else {\n if (selectedMethods.includes(method.value)) {\n setSelectedMethods((prev) => prev.filter((_m) => _m != method.value))\n }\n }\n }\n\n return (\n <>\n <header className={styles.api_docs_header}>\n <div className={styles.header_content}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n className={styles.search_filter_btn}\n onClick={handleOpenSearchFilter}\n >\n Search & Filter\n <SVGLoader src={FilterIcon} />\n </Button>\n <div className={styles.nav_buttons}>\n <Tooltip\n placement=\"bottom\"\n offset={[10, 5]}\n delay={[0, 0]}\n className=\"guide-tooltip\"\n content={<div>Coming Soon</div>}\n >\n <Button variant=\"outlined\" size=\"small\" className=\"guide-btn\" disabled={true}>\n <SVGLoader src={BookIcon} />\n GUIDES\n </Button>\n </Tooltip>\n <Button variant=\"outlined\" size=\"small\" className={styles.api_btn}>\n <SVGLoader src={ApiIcon} /> API reference\n </Button>\n </div>\n </div>\n </header>\n <CommonDialog\n size=\"sm\"\n open={showSearchFilter}\n onClose={handleCloseSearchFilter}\n icon={false}\n withClose={false}\n noActions\n content={\n <div className={`search-filter-form ${isMethodDropdownOpen ? 'expanded' : ''}`}>\n <div className=\"search-filter-form__header\">\n <p className=\"search-filter-form__header__title\">Search & Filter</p>\n </div>\n <Input\n className=\"name-input\"\n placeholder=\"Search by API name\"\n value={apiName}\n onChange={(value) => setApiName(value as string)}\n size={Size.Medium}\n clearable\n endAdornment={<SVGLoader src={SearchIcon} />}\n />\n <div className=\"method-container\">\n <label>Method</label>\n {/* <SelectGroup\n isMultiple={true}\n size={Size.Medium}\n placeholder=\"Select Method\"\n value={selectedMethods}\n onChange={(value) => setSelectedMethods(value || [])}\n options={[\n \n ]}\n withSearch={false}\n className=\"method-select custom-select-border\"\n /> */}\n <div className=\"typeDdl\" onClick={() => setIsMethodDropdownOpen((prev) => !prev)}>\n <span>Select Method</span>\n <SVGLoader src={!isMethodDropdownOpen ? DownArrowIcon : UpArrowIcon} />\n </div>\n {isMethodDropdownOpen && (\n <div className=\"methodList\">\n {METHOD_OPTIONS.map((_m) => (\n <div className=\"method-item\">\n <input\n type=\"checkbox\"\n className=\"agreement-checkbox\"\n checked={selectedMethods.includes(_m.value)}\n onChange={(e) => handleCheckMethod(e, _m)}\n />\n <span style={{ color: _m.color }}>{_m.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n <div className=\"button-container\">\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n onClick={handleApplyFilters}\n className=\"dialog-submit-btn\"\n >\n Apply\n </Button>\n </div>\n </div>\n }\n />\n </>\n )\n}\n\nexport default DocsHeader\n"],"names":["DocsHeader","transformedOpenApis","updateFilteredData","showSearchFilter","setShowSearchFilter","useState","apiName","setApiName","selectedMethods","setSelectedMethods","isMethodDropdownOpen","setIsMethodDropdownOpen","_jsxs","_jsx","jsx","className","styles","api_docs_header","children","header_content","Button","variant","size","search_filter_btn","onClick","SVGLoader","src","FilterIcon","nav_buttons","Tooltip","placement","offset","delay","content","jsxs","disabled","BookIcon","api_btn","ApiIcon","CommonDialog","open","onClose","icon","withClose","noActions","Input","placeholder","value","onChange","Size","Medium","clearable","endAdornment","SearchIcon","prev","UpArrowIcon","DownArrowIcon","METHOD_OPTIONS","map","_m","type","checked","includes","e","method","target","filter","handleCheckMethod","style","color","label","trim","length","filteredItems","lowerApiName","toLowerCase","api","title","allMethods","Object","values","tags","flat","endpoint","_a","some"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocsHeader.js","sources":["../../../../../src/layout/docsComponents/DocsHeader/DocsHeader.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react'\nimport { Button, Size, Input } from 'digitinary-ui'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport {\n FilterIcon,\n BookIcon,\n ApiIcon,\n SearchIcon,\n UpArrowIcon,\n DownArrowIcon,\n} from '../../../assets/icons'\nimport Tooltip from '../../../components/Tooltip/Tooltip'\nimport CommonDialog from '../../../components/dialog/index'\nimport { METHOD_OPTIONS } from '../../../constants/methods.constant'\nimport styles from './DocsHeader.module.scss'\nimport { OverviewData } from '../../../../src/layout/docsLayout'\n\nconst DocsHeader = ({\n transformedOpenApis,\n updateFilteredData,\n}: {\n transformedOpenApis: OverviewData[]\n updateFilteredData: (filteredItems: OverviewData[], isReset?: boolean) => void\n}) => {\n const [showSearchFilter, setShowSearchFilter] = useState<boolean>(false)\n const [apiName, setApiName] = useState<string>('')\n const [selectedMethods, setSelectedMethods] = useState<any[]>([])\n const [isMethodDropdownOpen, setIsMethodDropdownOpen] = useState<boolean>(false)\n\n const handleOpenSearchFilter = (): void => {\n setShowSearchFilter(true)\n }\n\n const handleCloseSearchFilter = (): void => {\n setShowSearchFilter(false)\n setIsMethodDropdownOpen(false)\n }\n\n const handleApplyFilters = (): void => {\n // Reset: no filters applied\n if (!apiName?.trim() && (!selectedMethods || selectedMethods.length === 0)) {\n updateFilteredData(transformedOpenApis, true)\n setShowSearchFilter(false)\n return\n }\n\n let filteredItems = [...transformedOpenApis]\n\n // Filter by API name\n if (apiName?.trim()) {\n const lowerApiName = apiName.toLowerCase()\n filteredItems = filteredItems.filter((api) => api.title.toLowerCase().includes(lowerApiName))\n }\n\n // Filter by selected HTTP methods\n if (selectedMethods?.length) {\n filteredItems = filteredItems.filter((api) => {\n const allMethods = Object.values(api.tags || {})\n .flat()\n .map((endpoint: any) => endpoint.method?.toLowerCase())\n\n return selectedMethods.some((method) => allMethods.includes(method.toLowerCase()))\n })\n }\n\n updateFilteredData(filteredItems)\n setShowSearchFilter(false)\n }\n\n const handleCheckMethod = (e, method: (typeof METHOD_OPTIONS)[0]) => {\n const {\n target: { checked },\n } = e\n if (checked) {\n setSelectedMethods((prev) => [...prev, method.value])\n } else {\n if (selectedMethods.includes(method.value)) {\n setSelectedMethods((prev) => prev.filter((_m) => _m != method.value))\n }\n }\n }\n\n return (\n <>\n <header className={styles.api_docs_header}>\n <div className={styles.header_content}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n className={styles.search_filter_btn}\n onClick={handleOpenSearchFilter}\n >\n Search & Filter\n <SVGLoader src={FilterIcon} />\n </Button>\n <div className={styles.nav_buttons}>\n <Tooltip\n placement=\"bottom\"\n offset={[10, 5]}\n delay={[0, 0]}\n className=\"guide-tooltip\"\n content={<div>Coming Soon</div>}\n >\n <Button variant=\"outlined\" size=\"small\" className=\"guide-btn\" disabled={true}>\n <SVGLoader src={BookIcon} />\n GUIDES\n </Button>\n </Tooltip>\n <Button variant=\"outlined\" size=\"small\" className={styles.api_btn}>\n <SVGLoader src={ApiIcon} /> API reference\n </Button>\n </div>\n </div>\n </header>\n <CommonDialog\n size=\"sm\"\n open={showSearchFilter}\n onClose={handleCloseSearchFilter}\n icon={false}\n withClose={false}\n noActions\n content={\n <div className={`search-filter-form ${isMethodDropdownOpen ? 'expanded' : ''}`}>\n <div className=\"search-filter-form__header\">\n <p className=\"search-filter-form__header__title\">Search & Filter</p>\n </div>\n <Input\n className=\"name-input\"\n placeholder=\"Search by API name\"\n value={apiName}\n onChange={(value) => setApiName(value as string)}\n size={Size.Medium}\n clearable\n endAdornment={<SVGLoader src={SearchIcon} />}\n />\n <div className=\"method-container\">\n <label>Method</label>\n {/* <SelectGroup\n isMultiple={true}\n size={Size.Medium}\n placeholder=\"Select Method\"\n value={selectedMethods}\n onChange={(value) => setSelectedMethods(value || [])}\n options={[\n \n ]}\n withSearch={false}\n className=\"method-select custom-select-border\"\n /> */}\n <div className=\"typeDdl\" onClick={() => setIsMethodDropdownOpen((prev) => !prev)}>\n <span>Select Method</span>\n <SVGLoader src={!isMethodDropdownOpen ? DownArrowIcon : UpArrowIcon} />\n </div>\n {isMethodDropdownOpen && (\n <div className=\"methodList\">\n {METHOD_OPTIONS.map((_m) => (\n <div className=\"method-item\">\n <input\n type=\"checkbox\"\n className=\"agreement-checkbox\"\n checked={selectedMethods.includes(_m.value)}\n onChange={(e) => handleCheckMethod(e, _m)}\n />\n <span style={{ color: _m.color }}>{_m.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n <div className=\"button-container\">\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n onClick={handleApplyFilters}\n className=\"dialog-submit-btn\"\n >\n Apply\n </Button>\n </div>\n </div>\n }\n />\n </>\n )\n}\n\nexport default DocsHeader\n"],"names":["DocsHeader","transformedOpenApis","updateFilteredData","showSearchFilter","setShowSearchFilter","useState","apiName","setApiName","selectedMethods","setSelectedMethods","isMethodDropdownOpen","setIsMethodDropdownOpen","_jsxs","_jsx","jsx","className","styles","api_docs_header","children","header_content","Button","variant","size","search_filter_btn","onClick","SVGLoader","src","FilterIcon","nav_buttons","Tooltip","placement","offset","delay","content","jsxs","disabled","BookIcon","api_btn","ApiIcon","CommonDialog","open","onClose","icon","withClose","noActions","Input","placeholder","value","onChange","Size","Medium","clearable","endAdornment","SearchIcon","prev","UpArrowIcon","DownArrowIcon","METHOD_OPTIONS","map","_m","type","checked","includes","e","method","target","filter","handleCheckMethod","style","color","label","trim","length","filteredItems","lowerApiName","toLowerCase","api","title","allMethods","Object","values","tags","flat","endpoint","_a","some"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"../../../../_virtual/jsx-runtime.js";import{useRef as s,useEffect as i}from"react";import t from"../../../components/SVGLoader/SVGLoader.js";import a from"../../../assets/icons/arrowDownGray.svg.js";import c from"../../../assets/icons/arrowRightGray.svg.js";import p from"../../../assets/icons/document.svg.js";import n from"../../../assets/icons/eye.svg.js";import{useSectionToggle as o,SectionEnum as r}from"../../../context/SectionToggleContext.js";const d=({apis:d,setActiveItemData:l,isFirstApiExpanded:I,setIsFirstApiExpanded:m,setActiveType:_,canSelectFirstApi:S,canFocusSection:E,setCanFocusSection:j,activeApiId:x,setCanSelectFirstApi:h})=>{const{expandedSections:v,toggleSection:O,generateSectionKey:N}=o(),u=s({});i((
|
|
1
|
+
import{j as e}from"../../../../_virtual/jsx-runtime.js";import{useRef as s,useEffect as i}from"react";import t from"../../../components/SVGLoader/SVGLoader.js";import a from"../../../assets/icons/arrowDownGray.svg.js";import c from"../../../assets/icons/arrowRightGray.svg.js";import p from"../../../assets/icons/document.svg.js";import n from"../../../assets/icons/eye.svg.js";import{useSectionToggle as o,SectionEnum as r}from"../../../context/SectionToggleContext.js";const d=({apis:d,setActiveItemData:l,isFirstApiExpanded:I,setIsFirstApiExpanded:m,setActiveType:_,canSelectFirstApi:S,canFocusSection:E,setCanFocusSection:j,activeApiId:x,setCanSelectFirstApi:h})=>{const{expandedSections:v,toggleSection:O,generateSectionKey:N}=o(),u=s({});i(()=>{if(S||!(null==d?void 0:d.length)||!I)return;const e=d[0];O(null==e?void 0:e.apiSpecId,[{type:r.API_SECTION,setTo:!0},{type:r.OVERVIEW,setTo:!0}]),l(e),_("OVERVIEW"),m(!1)},[d,I]),i(()=>{const e=null==d?void 0:d.find(e=>e.apiSpecId===x);x&&d.length>0&&e&&(O(e.apiSpecId,[{type:r.API_SECTION,setTo:!0},{type:r.OVERVIEW,setTo:!0}]),l(e),_("OVERVIEW"),m(!1),h(!0),j(!0))},[x,d]);const C=(s,i)=>s.map((s,t)=>{const a=N({apiId:i.apiSpecId,type:r.RESOURCE,id:s.id}),c=v[a];return e.jsxs("div",{className:`api-docs-api-tree__endpoint api-docs-api-tree__endpoint--${s.method.toLowerCase()}`,onClick:()=>{c||(l(Object.assign(Object.assign({},s),{api:i})),_("ENDPOINT"),O(i.apiSpecId,[{type:r.RESOURCE,id:s.id}],{resetOthers:!0,filterKeys:[r.RESOURCE,r.OVERVIEW]}))},"data-active":c,children:[e.jsx("span",{className:"api-docs-api-tree__endpoint-method",children:s.method}),e.jsx("span",{className:"api-docs-api-tree__endpoint-name",children:s.path})]},t)}),y=s=>{const i=N({apiId:s.apiSpecId,type:r.API_SECTION}),o=N({apiId:s.apiSpecId,type:r.ENDPOINTS_SECTION}),d=N({apiId:s.apiSpecId,type:r.OVERVIEW}),I=v[i],m=v[o],S=v[d];if(E){const e=u.current[s.apiSpecId];null==e||e.scrollIntoView({behavior:"smooth",block:"start"}),j(!1)}return e.jsxs("div",{className:"api-docs-api-tree__section","data-active":m||S,ref:e=>{u.current[s.apiSpecId]=e},children:[e.jsxs("div",{className:"api-docs-api-tree__section-header",onClick:()=>O(s.apiSpecId,[{type:r.API_SECTION}]),children:[I?e.jsx(t,{src:a}):e.jsx(t,{src:c}),e.jsx(t,{src:p}),e.jsx("span",{className:"api-docs-api-tree__section-title",children:s.title})]}),I&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"api-docs-api-tree__section__overview",onClick:()=>{S||(O(s.apiSpecId,[{type:r.OVERVIEW}],{resetOthers:!0,filterKeys:[r.RESOURCE]}),l(s),_("OVERVIEW"))},"data-active":S,children:[e.jsx(t,{src:n}),e.jsx("span",{children:"Overview"})]}),e.jsxs("div",{className:"api-docs-api-tree__section__endpoints",onClick:()=>O(s.apiSpecId,[{type:r.ENDPOINTS_SECTION}]),"data-active":m&&!S,children:[v[o]?e.jsx(t,{src:a}):e.jsx(t,{src:c}),e.jsx("span",{children:"Endpoints"})]}),v[o]&&e.jsx("div",{className:"api-docs-api-tree__subsections",children:Object.entries(s.tags).filter(([,e])=>e.length>0).sort(([e],[s])=>"default"===e?1:"default"===s?-1:e.localeCompare(s)).map(([i,p],n)=>((s,i,p,n)=>{const o=N({apiId:p.apiSpecId,type:r.TAG_SECTION,index:n}),d=v[o];return e.jsxs("div",{className:"api-docs-api-tree__subsection",children:[e.jsxs("div",{className:"api-docs-api-tree__subsection-header",onClick:()=>O(p.apiSpecId,[{type:r.TAG_SECTION,index:n}]),children:[d?e.jsx(t,{src:a}):e.jsx(t,{src:c}),e.jsx("span",{className:"api-docs-api-tree__subsection-title",children:s})]}),d&&e.jsx("div",{className:"api-docs-api-tree__endpoints",children:C(i,p)})]},o)})(i,p,s,n))})]})]},s.apiSpecId)};return e.jsx("aside",{className:"api-docs-api-tree",children:d.map(e=>y(e))})};export{d as default};
|
|
2
2
|
//# sourceMappingURL=DocsSideMenuTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsSideMenuTree.js","sources":["../../../../../src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx"],"sourcesContent":["import './style.scss'\nimport React, { useEffect, useRef } from 'react'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport { arrowDownGray, arrowRightGray, document, eye } from '../../../assets/icons'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { SectionEnum, useSectionToggle } from '../../../../src/context/SectionToggleContext'\n\nconst DocsSideMenuTree = ({\n apis,\n setActiveItemData,\n isFirstApiExpanded,\n setIsFirstApiExpanded,\n setActiveType,\n canSelectFirstApi,\n canFocusSection,\n setCanFocusSection,\n activeApiId,\n setCanSelectFirstApi,\n}: {\n apis: OverviewData[]\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n activeItemData: OverviewData | EndpointData\n isFirstApiExpanded: boolean\n setIsFirstApiExpanded: React.Dispatch<React.SetStateAction<boolean>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n activeType: 'OVERVIEW' | 'ENDPOINT'\n canSelectFirstApi?: boolean\n canFocusSection: boolean\n setCanFocusSection: React.Dispatch<React.SetStateAction<boolean>>\n activeApiId: string\n setCanSelectFirstApi: React.Dispatch<React.SetStateAction<boolean>>\n}) => {\n const { expandedSections, toggleSection, generateSectionKey } = useSectionToggle()\n const sectionRefs = useRef<Record<string, HTMLDivElement | null>>({})\n\n // Auto-expand first API only once\n useEffect(() => {\n if (canSelectFirstApi || !apis?.length || !isFirstApiExpanded) return\n\n const firstApi = apis[0]\n toggleSection(firstApi?.apiSpecId, [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.OVERVIEW, setTo: true },\n ])\n\n setActiveItemData(firstApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n }, [apis, isFirstApiExpanded])\n\n useEffect(() => {\n const activeApi = apis?.find((api) => api.apiSpecId === activeApiId)\n if (activeApiId && apis.length > 0 && !!activeApi) {\n toggleSection(activeApi.apiSpecId, [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.OVERVIEW, setTo: true },\n ])\n\n setActiveItemData(activeApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n setCanSelectFirstApi(true)\n setCanFocusSection(true)\n }\n }, [activeApiId, apis])\n\n const renderEndpoints = (endpoints: EndpointData[], api: OverviewData) =>\n endpoints.map((endpoint, index) => {\n const key = generateSectionKey({\n apiId: api.apiSpecId,\n type: SectionEnum.RESOURCE,\n id: endpoint.id,\n })\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 })\n setActiveType('ENDPOINT')\n toggleSection(api.apiSpecId, [{ type: SectionEnum.RESOURCE, id: endpoint.id }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE, SectionEnum.OVERVIEW],\n })\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 = generateSectionKey({\n apiId: api.apiSpecId,\n type: SectionEnum.TAG_SECTION,\n index: sectionIndex,\n })\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={() =>\n toggleSection(api.apiSpecId, [{ type: SectionEnum.TAG_SECTION, index: sectionIndex }])\n }\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 = generateSectionKey({ apiId: api.apiSpecId, type: SectionEnum.API_SECTION })\n const endpointsKey = generateSectionKey({\n apiId: api.apiSpecId,\n type: SectionEnum.ENDPOINTS_SECTION,\n })\n const overviewKey = generateSectionKey({ apiId: api.apiSpecId, type: SectionEnum.OVERVIEW })\n\n const isApiExpanded = expandedSections[sectionKey]\n const isEndpointActive = expandedSections[endpointsKey]\n const isOverviewExpanded = expandedSections[overviewKey]\n // Scroll to the section if it's expanded\n if (canFocusSection) {\n const sectionEl = sectionRefs.current[api.apiSpecId]\n sectionEl?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n setCanFocusSection(false)\n }\n\n return (\n <div\n key={api.apiSpecId}\n className=\"api-docs-api-tree__section\"\n data-active={isEndpointActive || isOverviewExpanded}\n ref={(el) => {\n sectionRefs.current[api.apiSpecId] = el\n }}\n >\n <div\n className=\"api-docs-api-tree__section-header\"\n onClick={() => toggleSection(api.apiSpecId, [{ type: SectionEnum.API_SECTION }])}\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, [{ type: SectionEnum.OVERVIEW }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE],\n })\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={() =>\n toggleSection(api.apiSpecId, [{ type: SectionEnum.ENDPOINTS_SECTION }])\n }\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 .filter(([, endpoints]) => endpoints.length > 0)\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","isFirstApiExpanded","setIsFirstApiExpanded","setActiveType","canSelectFirstApi","canFocusSection","setCanFocusSection","activeApiId","setCanSelectFirstApi","expandedSections","toggleSection","generateSectionKey","useSectionToggle","sectionRefs","useRef","useEffect","length","firstApi","apiSpecId","type","SectionEnum","API_SECTION","setTo","OVERVIEW","activeApi","find","api","renderEndpoints","endpoints","map","endpoint","index","key","apiId","RESOURCE","id","isExpanded","_jsxs","className","method","toLowerCase","onClick","Object","assign","resetOthers","filterKeys","children","_jsx","jsx","path","renderApiSection","sectionKey","endpointsKey","ENDPOINTS_SECTION","overviewKey","isApiExpanded","isEndpointActive","isOverviewExpanded","sectionEl","current","scrollIntoView","behavior","block","ref","el","SVGLoader","src","arrowDownGray","arrowRightGray","document","title","jsxs","_Fragment","Fragment","eye","entries","tags","filter","sort","a","b","localeCompare","tagName","data","i","sectionIndex","TAG_SECTION","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, useRef } from 'react'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport { arrowDownGray, arrowRightGray, document, eye } from '../../../assets/icons'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { SectionEnum, useSectionToggle } from '../../../../src/context/SectionToggleContext'\n\nconst DocsSideMenuTree = ({\n apis,\n setActiveItemData,\n isFirstApiExpanded,\n setIsFirstApiExpanded,\n setActiveType,\n canSelectFirstApi,\n canFocusSection,\n setCanFocusSection,\n activeApiId,\n setCanSelectFirstApi,\n}: {\n apis: OverviewData[]\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n activeItemData: OverviewData | EndpointData\n isFirstApiExpanded: boolean\n setIsFirstApiExpanded: React.Dispatch<React.SetStateAction<boolean>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n activeType: 'OVERVIEW' | 'ENDPOINT'\n canSelectFirstApi?: boolean\n canFocusSection: boolean\n setCanFocusSection: React.Dispatch<React.SetStateAction<boolean>>\n activeApiId: string\n setCanSelectFirstApi: React.Dispatch<React.SetStateAction<boolean>>\n}) => {\n const { expandedSections, toggleSection, generateSectionKey } = useSectionToggle()\n const sectionRefs = useRef<Record<string, HTMLDivElement | null>>({})\n\n // Auto-expand first API only once\n useEffect(() => {\n if (canSelectFirstApi || !apis?.length || !isFirstApiExpanded) return\n\n const firstApi = apis[0]\n toggleSection(firstApi?.apiSpecId, [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.OVERVIEW, setTo: true },\n ])\n\n setActiveItemData(firstApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n }, [apis, isFirstApiExpanded])\n\n useEffect(() => {\n const activeApi = apis?.find((api) => api.apiSpecId === activeApiId)\n if (activeApiId && apis.length > 0 && !!activeApi) {\n toggleSection(activeApi.apiSpecId, [\n { type: SectionEnum.API_SECTION, setTo: true },\n { type: SectionEnum.OVERVIEW, setTo: true },\n ])\n\n setActiveItemData(activeApi)\n setActiveType('OVERVIEW')\n setIsFirstApiExpanded(false)\n setCanSelectFirstApi(true)\n setCanFocusSection(true)\n }\n }, [activeApiId, apis])\n\n const renderEndpoints = (endpoints: EndpointData[], api: OverviewData) =>\n endpoints.map((endpoint, index) => {\n const key = generateSectionKey({\n apiId: api.apiSpecId,\n type: SectionEnum.RESOURCE,\n id: endpoint.id,\n })\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 })\n setActiveType('ENDPOINT')\n toggleSection(api.apiSpecId, [{ type: SectionEnum.RESOURCE, id: endpoint.id }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE, SectionEnum.OVERVIEW],\n })\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 = generateSectionKey({\n apiId: api.apiSpecId,\n type: SectionEnum.TAG_SECTION,\n index: sectionIndex,\n })\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={() =>\n toggleSection(api.apiSpecId, [{ type: SectionEnum.TAG_SECTION, index: sectionIndex }])\n }\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 = generateSectionKey({ apiId: api.apiSpecId, type: SectionEnum.API_SECTION })\n const endpointsKey = generateSectionKey({\n apiId: api.apiSpecId,\n type: SectionEnum.ENDPOINTS_SECTION,\n })\n const overviewKey = generateSectionKey({ apiId: api.apiSpecId, type: SectionEnum.OVERVIEW })\n\n const isApiExpanded = expandedSections[sectionKey]\n const isEndpointActive = expandedSections[endpointsKey]\n const isOverviewExpanded = expandedSections[overviewKey]\n // Scroll to the section if it's expanded\n if (canFocusSection) {\n const sectionEl = sectionRefs.current[api.apiSpecId]\n sectionEl?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n setCanFocusSection(false)\n }\n\n return (\n <div\n key={api.apiSpecId}\n className=\"api-docs-api-tree__section\"\n data-active={isEndpointActive || isOverviewExpanded}\n ref={(el) => {\n sectionRefs.current[api.apiSpecId] = el\n }}\n >\n <div\n className=\"api-docs-api-tree__section-header\"\n onClick={() => toggleSection(api.apiSpecId, [{ type: SectionEnum.API_SECTION }])}\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, [{ type: SectionEnum.OVERVIEW }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE],\n })\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={() =>\n toggleSection(api.apiSpecId, [{ type: SectionEnum.ENDPOINTS_SECTION }])\n }\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 .filter(([, endpoints]) => endpoints.length > 0)\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","isFirstApiExpanded","setIsFirstApiExpanded","setActiveType","canSelectFirstApi","canFocusSection","setCanFocusSection","activeApiId","setCanSelectFirstApi","expandedSections","toggleSection","generateSectionKey","useSectionToggle","sectionRefs","useRef","useEffect","length","firstApi","apiSpecId","type","SectionEnum","API_SECTION","setTo","OVERVIEW","activeApi","find","api","renderEndpoints","endpoints","map","endpoint","index","key","apiId","RESOURCE","id","isExpanded","_jsxs","className","method","toLowerCase","onClick","Object","assign","resetOthers","filterKeys","children","_jsx","jsx","path","renderApiSection","sectionKey","endpointsKey","ENDPOINTS_SECTION","overviewKey","isApiExpanded","isEndpointActive","isOverviewExpanded","sectionEl","current","scrollIntoView","behavior","block","ref","el","SVGLoader","src","arrowDownGray","arrowRightGray","document","title","jsxs","_Fragment","Fragment","eye","entries","tags","filter","sort","a","b","localeCompare","tagName","data","i","sectionIndex","TAG_SECTION","isSectionExpanded","renderSubSection"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"../../_virtual/jsx-runtime.js";import t,{useState as i,useRef as s,useEffect as o}from"react";import a from"./docsComponents/index.js";import{transformOpenApiToDocs as r}from"../helpers/docs.helper.js";import n from"../../_virtual/index3.js";import{SectionToggleProvider as c}from"../context/SectionToggleContext.js";import{ToastContainer as p}from"../../node_modules/react-toastify/dist/index.mjs.js";var d=t.memo((
|
|
1
|
+
import{j as e}from"../../_virtual/jsx-runtime.js";import t,{useState as i,useRef as s,useEffect as o}from"react";import a from"./docsComponents/index.js";import{transformOpenApiToDocs as r}from"../helpers/docs.helper.js";import n from"../../_virtual/index3.js";import{SectionToggleProvider as c}from"../context/SectionToggleContext.js";import{ToastContainer as p}from"../../node_modules/react-toastify/dist/index.mjs.js";var d=t.memo(({apis:t,activeApiId:n,onProductNavigate:d})=>{const[l,m]=i([]),[v,u]=i(!0),[j,x]=i({}),[A,f]=i("OVERVIEW"),C=s([]),[I,D]=i(!0),[T,g]=i(!1),[h,F]=i(!1);o(()=>{var e;if(0===l.length){g(!!n);const i=null===(e=structuredClone(t))||void 0===e?void 0:e.map(e=>r(e)).sort((e,t)=>e.title.toLowerCase().localeCompare(t.title.toLowerCase()));m(i),C.current=i,i.length>0&&D(!1)}},[t]);return e.jsxs(a,{children:[e.jsxs(c,{children:[e.jsx(a.DocsHeader,{transformedOpenApis:l,updateFilteredData:(e,t=!1)=>{m(t?C.current:e)}}),!I&&e.jsx(a.DocsSideMenuTree,{apis:l,setActiveItemData:x,activeItemData:j,isFirstApiExpanded:v,activeType:A,setIsFirstApiExpanded:u,setActiveType:f,canSelectFirstApi:T,canFocusSection:h,setCanFocusSection:F,activeApiId:n,setCanSelectFirstApi:g}),!I&&Object.keys(j).length>0&&e.jsx(a.DocsContent,{data:j,activeType:A,setActiveItemData:x,setActiveType:f,onProductNavigate:d,apis:l}),"ENDPOINT"===A&&e.jsx(a.DocsAside,{data:j})]}),e.jsx(p,{})]})},function(e,t){var i,s;return n(null!==(i=e.apis)&&void 0!==i?i:[])===n(null!==(s=t.apis)&&void 0!==s?s:[])&&e.activeApiId===t.activeApiId});export{d 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'\nimport stableStringify from 'fast-json-stable-stringify'\nimport { SectionToggleProvider } from '../../src/context/SectionToggleContext'\nimport { ToastContainer } from 'react-toastify'\n\ninterface ILayoutProps {\n apis?: ApiSpecModel[]\n activeApiId?: string\n onProductNavigate?: (productId: number) => void\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: OverviewData\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, onProductNavigate }: 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 allData = useRef([])\n const [pending, setPending] = useState(true)\n const [canSelectFirstApi, setCanSelectFirstApi] = useState(false)\n const [canFocusSection, setCanFocusSection] = useState(false)\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: OverviewData[], isReset = false) => {\n if (isReset) {\n setTransformedOpenApis(allData.current)\n return\n }\n setTransformedOpenApis(filteredItems)\n }\n\n return (\n <Layout>\n <SectionToggleProvider>\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 isFirstApiExpanded={isFirstApiExpanded}\n activeType={activeType}\n setIsFirstApiExpanded={setIsFirstApiExpanded}\n setActiveType={setActiveType}\n canSelectFirstApi={canSelectFirstApi}\n canFocusSection={canFocusSection}\n setCanFocusSection={setCanFocusSection}\n activeApiId={activeApiId}\n setCanSelectFirstApi={setCanSelectFirstApi}\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 onProductNavigate={onProductNavigate}\n apis={transformedOpenApis}\n />\n )}\n {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}\n </SectionToggleProvider>\n\n <ToastContainer />\n </Layout>\n )\n}\n\nexport default React.memo(DocsLayout, areEqual)\n"],"names":["docsLayout","React","memo","apis","activeApiId","onProductNavigate","transformedOpenApis","setTransformedOpenApis","useState","isFirstApiExpanded","setIsFirstApiExpanded","activeItemData","setActiveItemData","activeType","setActiveType","allData","useRef","pending","setPending","canSelectFirstApi","setCanSelectFirstApi","canFocusSection","setCanFocusSection","useEffect","length","t","_a","structuredClone","map","o3","transformOpenApiToDocs","sort","a","b","title","toLowerCase","localeCompare","current","_jsxs","jsxs","Layout","children","SectionToggleProvider","_jsx","DocsHeader","updateFilteredData","filteredItems","isReset","jsx","DocsSideMenuTree","Object","keys","DocsContent","data","DocsAside","ToastContainer","prev","next","stableStringify","_b"],"mappings":"qaA0HA,IAAAA,EAAeC,EAAMC,
|
|
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'\nimport { SectionToggleProvider } from '../../src/context/SectionToggleContext'\nimport { ToastContainer } from 'react-toastify'\n\ninterface ILayoutProps {\n apis?: ApiSpecModel[]\n activeApiId?: string\n onProductNavigate?: (productId: number) => void\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: OverviewData\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, onProductNavigate }: 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 allData = useRef([])\n const [pending, setPending] = useState(true)\n const [canSelectFirstApi, setCanSelectFirstApi] = useState(false)\n const [canFocusSection, setCanFocusSection] = useState(false)\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: OverviewData[], isReset = false) => {\n if (isReset) {\n setTransformedOpenApis(allData.current)\n return\n }\n setTransformedOpenApis(filteredItems)\n }\n\n return (\n <Layout>\n <SectionToggleProvider>\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 isFirstApiExpanded={isFirstApiExpanded}\n activeType={activeType}\n setIsFirstApiExpanded={setIsFirstApiExpanded}\n setActiveType={setActiveType}\n canSelectFirstApi={canSelectFirstApi}\n canFocusSection={canFocusSection}\n setCanFocusSection={setCanFocusSection}\n activeApiId={activeApiId}\n setCanSelectFirstApi={setCanSelectFirstApi}\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 onProductNavigate={onProductNavigate}\n apis={transformedOpenApis}\n />\n )}\n {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}\n </SectionToggleProvider>\n\n <ToastContainer />\n </Layout>\n )\n}\n\nexport default React.memo(DocsLayout, areEqual)\n"],"names":["docsLayout","React","memo","apis","activeApiId","onProductNavigate","transformedOpenApis","setTransformedOpenApis","useState","isFirstApiExpanded","setIsFirstApiExpanded","activeItemData","setActiveItemData","activeType","setActiveType","allData","useRef","pending","setPending","canSelectFirstApi","setCanSelectFirstApi","canFocusSection","setCanFocusSection","useEffect","length","t","_a","structuredClone","map","o3","transformOpenApiToDocs","sort","a","b","title","toLowerCase","localeCompare","current","_jsxs","jsxs","Layout","children","SectionToggleProvider","_jsx","DocsHeader","updateFilteredData","filteredItems","isReset","jsx","DocsSideMenuTree","Object","keys","DocsContent","data","DocsAside","ToastContainer","prev","next","stableStringify","_b"],"mappings":"qaA0HA,IAAAA,EAAeC,EAAMC,KA5EF,EAAGC,OAAMC,cAAaC,wBACvC,MAAOC,EAAqBC,GAA0BC,EAAyB,KACxEC,EAAoBC,GAAyBF,GAAS,IACtDG,EAAgBC,GAAqBJ,EAE1C,CAAE,IACGK,EAAYC,GAAiBN,EAAkC,YAChEO,EAAUC,EAAO,KAChBC,EAASC,GAAcV,GAAS,IAChCW,EAAmBC,GAAwBZ,GAAS,IACpDa,EAAiBC,GAAsBd,GAAS,GAEvDe,EAAU,WACR,GAAmC,IAA/BjB,EAAoBkB,OAAc,CACpCJ,IAAuBhB,GACvB,MAAMqB,UAAIC,EAAAC,gBAAgBxB,yBACtByB,IAAKC,GAAOC,EAAuBD,IACpCE,KAAK,CAACC,EAAGC,IAAMD,EAAEE,MAAMC,cAAcC,cAAcH,EAAEC,MAAMC,gBAC9D5B,EAAuBkB,GACvBV,EAAQsB,QAAUZ,EACdA,EAAED,OAAS,GACbN,GAAW,EAEd,GACA,CAACf,IAUJ,OACEmC,EAAAC,KAACC,EAAM,CAAAC,SAAA,CACLH,OAACI,EAAqB,CAAAD,SAAA,CACpBE,MAACH,EAAOI,WACN,CAAAtC,oBAAqBA,EACrBuC,mBAbmB,CAACC,EAA+BC,GAAU,KAEjExC,EADEwC,EACqBhC,EAAQsB,QAGVS,OAUjB7B,GACA0B,EAACK,IAAAR,EAAOS,iBAAgB,CACtB9C,KAAMG,EACNM,kBAAmBA,EACnBD,eAAgBA,EAChBF,mBAAoBA,EACpBI,WAAYA,EACZH,sBAAuBA,EACvBI,cAAeA,EACfK,kBAAmBA,EACnBE,gBAAiBA,EACjBC,mBAAoBA,EACpBlB,YAAaA,EACbgB,qBAAsBA,KAIxBH,GAAWiC,OAAOC,KAAKxC,GAAgBa,OAAS,GAChDmB,EAAAA,IAACH,EAAOY,YAAW,CACjBC,KAAM1C,EACNE,WAAYA,EACZD,kBAAmBA,EACnBE,cAAeA,EACfT,kBAAmBA,EACnBF,KAAMG,IAGM,aAAfO,GAA6B8B,EAAAK,IAACR,EAAOc,UAAS,CAACD,KAAM1C,OAGxDgC,EAACK,IAAAO,EAAiB,CAAA,OA9ExB,SAAkBC,EAAoBC,WACpC,OACEC,EAA6B,UAAbF,EAAKrD,YAAQ,IAAAuB,EAAAA,EAAA,MAAQgC,EAAyB,QAATC,EAAAF,EAAKtD,YAAI,IAAAwD,EAAAA,EAAI,KAClEH,EAAKpD,cAAgBqD,EAAKrD,WAE9B"}
|