@digi-frontend/dgate-api-documentation 1.0.87 → 1.0.89
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/dist/_virtual/index4.js +1 -1
- package/dist/_virtual/index5.js +1 -1
- package/dist/node_modules/digitinary-ui/dist/index.js.map +1 -1
- package/dist/node_modules/highlight.js/lib/core.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-fast-compare/index.js +1 -1
- package/dist/node_modules/react-fast-compare/index.js.map +1 -1
- package/dist/node_modules/react-property/lib/index.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.map +1 -1
- package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
- package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
- package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
- package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
- package/dist/src/components/SectionHead/SectionHead.js.map +1 -1
- package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -1
- package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/src/components/dialog/index.js.map +1 -1
- package/dist/src/components/table/table.js.map +1 -1
- package/dist/src/components/table/tags-table.js.map +1 -1
- package/dist/src/context/SectionToggleContext.js.map +1 -1
- package/dist/src/helpers/docs.helper.js.map +1 -1
- package/dist/src/helpers/layout.helper.js.map +1 -1
- package/dist/src/layout/docsComponents/Codebox/Codebox.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js +2 -0
- package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js.map +1 -0
- package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
- package/dist/src/layout/docsLayout.js.map +1 -1
- package/dist/src/layout/layout.js.map +1 -1
- package/dist/styles.css +839 -839
- package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +8 -0
- package/package.json +1 -1
- package/variables.txt +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SVGLoader.js","sources":["../../../../src/components/SVGLoader/SVGLoader.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport parse from 'html-react-parser'\n\n// Utility function to create an SVG element from a string\nconst createSvgElement = (svgString: string): SVGSVGElement | null => {\n const parser = new DOMParser()\n const doc = parser.parseFromString(svgString, 'image/svg+xml')\n return doc.querySelector('svg')\n}\n\n// Define the type for SVG attributes\ntype SVGAttributes = React.SVGProps<SVGSVGElement>\n\ninterface SVGLoaderProps extends SVGAttributes {\n src: string\n cache?: boolean\n}\n\nconst SVGLoader: React.FC<SVGLoaderProps> | any = ({ src, cache = true, ...props }) => {\n const [svgMarkup, setSvgMarkup] = useState<string | null>(null)\n\n useEffect(() => {\n if (!src) return\n if (typeof src !== 'string') console.log({ src })\n const isUrl = src.startsWith('http') || src.startsWith('/')\n\n const cacheName = 'svg-cache'\n\n const fetchSvg = async () => {\n try {\n let svgString: string | null = null\n\n // Use the Cache API if caching is enabled\n if (cache && isUrl && 'caches' in window) {\n const cacheStorage = await caches.open(cacheName)\n const cachedResponse = await cacheStorage.match(src)\n\n // If SVG is found in cache, use it\n if (cachedResponse && cachedResponse.ok) {\n svgString = await cachedResponse.text()\n setSvgMarkup(svgString)\n return\n }\n }\n\n // If not cached, fetch from URL\n if (isUrl) {\n const response = await fetch(src)\n\n // Clone the response before consuming it\n const responseClone = response.clone()\n\n // Consume the response body for the SVG content\n svgString = await response.text()\n\n // Store the cloned response in the cache\n if (cache && 'caches' in window) {\n const cacheStorage = await caches.open(cacheName)\n await cacheStorage.put(src, responseClone)\n }\n } else {\n // If it's not a URL (it's inline), just use the source string\n svgString = src\n }\n\n // If we have valid SVG content, set it\n if (svgString) {\n const svg = createSvgElement(svgString)\n if (svg) {\n const svgStringWithProps = new XMLSerializer().serializeToString(svg)\n setSvgMarkup(svgStringWithProps)\n }\n }\n } catch (error) {\n console.error('Error loading SVG:', error)\n }\n }\n\n fetchSvg()\n }, [src, props])\n\n if (!svgMarkup) return null\n\n // Parse the SVG string and return it as JSX\n const parsedSvg = parse(svgMarkup)\n // Sometimes parse returns an array which includes the element\n const toBeClonedElement = Array.isArray(parsedSvg)\n ? parsedSvg.find((item) => React.isValidElement(item))\n : parsedSvg\n // Clone the parsed SVG element to apply the props\n const clonedSvg = React.cloneElement(toBeClonedElement as React.ReactElement, props)\n\n return <>{clonedSvg}</>\n}\n\nexport default SVGLoader\n"],"names":["SVGLoader","_a","src","cache","props","__rest","svgMarkup","setSvgMarkup","useState","useEffect","console","log","isUrl","startsWith","cacheName","__awaiter","svgString","window","cacheStorage","caches","open","cachedResponse","match","ok","text","response","fetch","responseClone","clone","put","svg","DOMParser","parseFromString","querySelector","createSvgElement","svgStringWithProps","XMLSerializer","serializeToString","error","parsedSvg","parse","toBeClonedElement","Array","isArray","find","item","React","isValidElement","clonedSvg","cloneElement","_jsx","jsx","_Fragment","Fragment","children"],"mappings":"iQAIA,MAcMA,EAA6CC,QAAAC,IAAEA,EAAGC,MAAEA,GAAQ,KAASC,EAAxBC,EAAAJ,EAAA,CAAA,MAAA,UACjD,MAAOK,EAAWC,GAAgBC,EAAwB,MA8D1D,GA5DAC,GAAU,KACR,IAAKP,EAAK,OACS,iBAARA,GAAkBQ,QAAQC,IAAI,CAAET,QAC3C,MAAMU,EAAQV,EAAIW,WAAW,SAAWX,EAAIW,WAAW,KAEjDC,EAAY,YAEUC,OAAA,OAAA,OAAA,GAAA,YAC1B,IACE,IAAIC,EAA2B,KAG/B,GAAIb,GAASS,GAAS,WAAYK,OAAQ,CACxC,MAAMC,QAAqBC,OAAOC,KAAKN,GACjCO,QAAuBH,EAAaI,MAAMpB,GAGhD,GAAImB,GAAkBA,EAAeE,GAGnC,OAFAP,QAAkBK,EAAeG,YACjCjB,EAAaS,EAGhB,CAGD,GAAIJ,EAAO,CACT,MAAMa,QAAiBC,MAAMxB,GAGvByB,EAAgBF,EAASG,QAM/B,GAHAZ,QAAkBS,EAASD,OAGvBrB,GAAS,WAAYc,OAAQ,CAC/B,MAAMC,QAAqBC,OAAOC,KAAKN,SACjCI,EAAaW,IAAI3B,EAAKyB,EAC7B,CACF,MAECX,EAAYd,EAId,GAAIc,EAAW,CACb,MAAMc,EA/DS,CAACd,IACT,IAAIe,WACAC,gBAAgBhB,EAAW,iBACnCiB,cAAc,OA4DLC,CAAiBlB,GAC7B,GAAIc,EAAK,CACP,MAAMK,GAAqB,IAAIC,eAAgBC,kBAAkBP,GACjEvB,EAAa4B,EACd,CACF,CACF,CAAC,MAAOG,GACP5B,QAAQ4B,MAAM,qBAAsBA,EACrC,CACH,
|
|
1
|
+
{"version":3,"file":"SVGLoader.js","sources":["../../../../src/components/SVGLoader/SVGLoader.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport parse from 'html-react-parser'\n\n// Utility function to create an SVG element from a string\nconst createSvgElement = (svgString: string): SVGSVGElement | null => {\n const parser = new DOMParser()\n const doc = parser.parseFromString(svgString, 'image/svg+xml')\n return doc.querySelector('svg')\n}\n\n// Define the type for SVG attributes\ntype SVGAttributes = React.SVGProps<SVGSVGElement>\n\ninterface SVGLoaderProps extends SVGAttributes {\n src: string\n cache?: boolean\n}\n\nconst SVGLoader: React.FC<SVGLoaderProps> | any = ({ src, cache = true, ...props }) => {\n const [svgMarkup, setSvgMarkup] = useState<string | null>(null)\n\n useEffect(() => {\n if (!src) return\n if (typeof src !== 'string') console.log({ src })\n const isUrl = src.startsWith('http') || src.startsWith('/')\n\n const cacheName = 'svg-cache'\n\n const fetchSvg = async () => {\n try {\n let svgString: string | null = null\n\n // Use the Cache API if caching is enabled\n if (cache && isUrl && 'caches' in window) {\n const cacheStorage = await caches.open(cacheName)\n const cachedResponse = await cacheStorage.match(src)\n\n // If SVG is found in cache, use it\n if (cachedResponse && cachedResponse.ok) {\n svgString = await cachedResponse.text()\n setSvgMarkup(svgString)\n return\n }\n }\n\n // If not cached, fetch from URL\n if (isUrl) {\n const response = await fetch(src)\n\n // Clone the response before consuming it\n const responseClone = response.clone()\n\n // Consume the response body for the SVG content\n svgString = await response.text()\n\n // Store the cloned response in the cache\n if (cache && 'caches' in window) {\n const cacheStorage = await caches.open(cacheName)\n await cacheStorage.put(src, responseClone)\n }\n } else {\n // If it's not a URL (it's inline), just use the source string\n svgString = src\n }\n\n // If we have valid SVG content, set it\n if (svgString) {\n const svg = createSvgElement(svgString)\n if (svg) {\n const svgStringWithProps = new XMLSerializer().serializeToString(svg)\n setSvgMarkup(svgStringWithProps)\n }\n }\n } catch (error) {\n console.error('Error loading SVG:', error)\n }\n }\n\n fetchSvg()\n }, [src, props])\n\n if (!svgMarkup) return null\n\n // Parse the SVG string and return it as JSX\n const parsedSvg = parse(svgMarkup)\n // Sometimes parse returns an array which includes the element\n const toBeClonedElement = Array.isArray(parsedSvg)\n ? parsedSvg.find((item) => React.isValidElement(item))\n : parsedSvg\n // Clone the parsed SVG element to apply the props\n const clonedSvg = React.cloneElement(toBeClonedElement as React.ReactElement, props)\n\n return <>{clonedSvg}</>\n}\n\nexport default SVGLoader\n"],"names":["SVGLoader","_a","src","cache","props","__rest","svgMarkup","setSvgMarkup","useState","useEffect","console","log","isUrl","startsWith","cacheName","__awaiter","svgString","window","cacheStorage","caches","open","cachedResponse","match","ok","text","response","fetch","responseClone","clone","put","svg","DOMParser","parseFromString","querySelector","createSvgElement","svgStringWithProps","XMLSerializer","serializeToString","error","parsedSvg","parse","toBeClonedElement","Array","isArray","find","item","React","isValidElement","clonedSvg","cloneElement","_jsx","jsx","_Fragment","Fragment","children"],"mappings":"iQAIA,MAcMA,EAA6CC,QAAAC,IAAEA,EAAGC,MAAEA,GAAQ,KAASC,EAAxBC,EAAAJ,EAAA,CAAA,MAAA,UACjD,MAAOK,EAAWC,GAAgBC,EAAwB,MA8D1D,GA5DAC,GAAU,KACR,IAAKP,EAAK,OACS,iBAARA,GAAkBQ,QAAQC,IAAI,CAAET,QAC3C,MAAMU,EAAQV,EAAIW,WAAW,SAAWX,EAAIW,WAAW,KAEjDC,EAAY,YAEUC,OAAA,OAAA,OAAA,GAAA,YAC1B,IACE,IAAIC,EAA2B,KAG/B,GAAIb,GAASS,GAAS,WAAYK,OAAQ,CACxC,MAAMC,QAAqBC,OAAOC,KAAKN,GACjCO,QAAuBH,EAAaI,MAAMpB,GAGhD,GAAImB,GAAkBA,EAAeE,GAGnC,OAFAP,QAAkBK,EAAeG,YACjCjB,EAAaS,EAGhB,CAGD,GAAIJ,EAAO,CACT,MAAMa,QAAiBC,MAAMxB,GAGvByB,EAAgBF,EAASG,QAM/B,GAHAZ,QAAkBS,EAASD,OAGvBrB,GAAS,WAAYc,OAAQ,CAC/B,MAAMC,QAAqBC,OAAOC,KAAKN,SACjCI,EAAaW,IAAI3B,EAAKyB,EAC7B,CACF,MAECX,EAAYd,EAId,GAAIc,EAAW,CACb,MAAMc,EA/DS,CAACd,IACT,IAAIe,WACAC,gBAAgBhB,EAAW,iBACnCiB,cAAc,OA4DLC,CAAiBlB,GAC7B,GAAIc,EAAK,CACP,MAAMK,GAAqB,IAAIC,eAAgBC,kBAAkBP,GACjEvB,EAAa4B,EACd,CACF,CACF,CAAC,MAAOG,GACP5B,QAAQ4B,MAAM,qBAAsBA,EACrC,CACH,GAEU,GACT,CAACpC,EAAKE,KAEJE,EAAW,OAAO,KAGvB,MAAMiC,EAAYC,EAAMlC,GAElBmC,EAAoBC,MAAMC,QAAQJ,GACpCA,EAAUK,MAAMC,GAASC,EAAMC,eAAeF,KAC9CN,EAEES,EAAYF,EAAMG,aAAaR,EAAyCrC,GAE9E,OAAO8C,EAAAC,IAAAC,EAAAC,SAAA,CAAAC,SAAGN,GAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionHead.js","sources":["../../../../src/components/SectionHead/SectionHead.tsx"],"sourcesContent":["import React, { type JSX } from 'react'\nimport './SectionHead.scss'\nimport SVGLoader from '../SVGLoader/SVGLoader'\n\ntype SectionHeadProps = {\n text: string | JSX.Element\n closeFunction?: () => void\n children?: JSX.Element\n className?: string\n}\n\nconst SectionHead: React.FC<SectionHeadProps> = ({ text, closeFunction, children, className = '' }: SectionHeadProps): any => {\n return (\n <div className={`containerTitleDrawer ${className}`}>\n <span data-id={`${String(text)?.toUpperCase()?.replaceAll(' ', '_')}_ID`}>{text}</span>\n {children}\n\n {closeFunction && <SVGLoader className='closeIcon' onClick={closeFunction} width='1.5rem' height='1.5rem' />}\n </div>\n )\n}\nexport default SectionHead\n"],"names":["SectionHead","text","closeFunction","children","className","_jsxs","jsxs","_jsx","_b","_a","String","toUpperCase","replaceAll","SVGLoader","onClick","width","height"],"mappings":"8FAWA,MAAMA,EAA0C,EAAGC,OAAMC,gBAAeC,WAAUC,YAAY,eAC5F,OACEC,EAAKC,KAAA,MAAA,CAAAF,UAAW,wBAAwBA,IACtCD,SAAA,CAAAI,EAAAA,IAAA,OAAA,CAAA,UAAe,GAA8B,QAA3BC,EAAc,QAAdC,EAAAC,OAAOT,UAAO,IAAAQ,OAAA,EAAAA,EAAAE,qBAAa,IAAAH,OAAA,EAAAA,EAAEI,WAAW,IAAK,UAAST,SAAGF,IAC1EE,EAEAD,GAAiBK,EAAAA,IAACM,EAAU,CAAAT,UAAU,YAAYU,QAASZ,EAAea,MAAM,SAASC,OAAO"}
|
|
1
|
+
{"version":3,"file":"SectionHead.js","sources":["../../../../src/components/SectionHead/SectionHead.tsx"],"sourcesContent":["import React, { type JSX } from 'react'\nimport './SectionHead.scss'\nimport SVGLoader from '../SVGLoader/SVGLoader'\n\ntype SectionHeadProps = {\n text: string | JSX.Element\n closeFunction?: () => void\n children?: JSX.Element\n className?: string\n}\n\nconst SectionHead: React.FC<SectionHeadProps> = ({ text, closeFunction, children, className = '' }: SectionHeadProps): any => {\n return (\n <div className={`containerTitleDrawer ${className}`}>\n <span data-id={`${String(text)?.toUpperCase()?.replaceAll(' ', '_')}_ID`}>{text}</span>\n {children}\n\n {closeFunction && <SVGLoader className='closeIcon' onClick={closeFunction} width='1.5rem' height='1.5rem' />}\n </div>\n )\n}\nexport default SectionHead\n"],"names":["SectionHead","text","closeFunction","children","className","_jsxs","jsxs","_jsx","_b","_a","String","toUpperCase","replaceAll","SVGLoader","onClick","width","height"],"mappings":"8FAWA,MAAMA,EAA0C,EAAGC,OAAMC,gBAAeC,WAAUC,YAAY,eAC5F,OACEC,EAAKC,KAAA,MAAA,CAAAF,UAAW,wBAAwBA,IACtCD,SAAA,CAAAI,EAAAA,IAAA,OAAA,CAAA,UAAe,GAA8B,QAA3BC,EAAc,QAAdC,EAAAC,OAAOT,UAAO,IAAAQ,OAAA,EAAAA,EAAAE,qBAAa,IAAAH,OAAA,EAAAA,EAAEI,WAAW,IAAK,UAAST,SAAGF,IAC1EE,EAEAD,GAAiBK,EAAAA,IAACM,EAAU,CAAAT,UAAU,YAAYU,QAASZ,EAAea,MAAM,SAASC,OAAO,aAEpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleLabelValue.js","sources":["../../../../src/components/SimpleLabelValue/SimpleLabelValue.tsx"],"sourcesContent":["import React from 'react'\nimport './style.scss'\n\ntype SimpleLabelValueProps = {\n label?: string | JSX.Element\n value?: string | number | JSX.Element | JSX.Element[]\n color?: string\n className?: string\n dataId?: string\n}\n\nconst SimpleLabelValue: React.FC<SimpleLabelValueProps> = ({\n label,\n value,\n color,\n className = '',\n dataId,\n}: SimpleLabelValueProps) => {\n const dataIdLabel =\n typeof label === 'string' ? label?.toUpperCase()?.replaceAll(' ', '_') + '_LABEL_ID' : dataId\n return (\n <div className={`drawerItemContainer ${className}`}>\n <span className=\"title\" data-id={dataIdLabel}>\n {label}\n </span>\n <span className={`text ${color ? `color-${color}` : ''}`}>{value}</span>\n </div>\n )\n}\n\nexport default SimpleLabelValue\n"],"names":["SimpleLabelValue","label","value","color","className","dataId","dataIdLabel","_a","toUpperCase","replaceAll","_jsxs","children","_jsx","jsx"],"mappings":"qDAWA,MAAMA,EAAoD,EACxDC,QACAC,QACAC,QACAC,YAAY,GACZC,mBAEA,MAAMC,EACa,iBAAVL,GAAyC,QAApBM,EAAAN,aAAA,EAAAA,EAAOO,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,WAAW,IAAK,MAAO,YAAcJ,EACzF,OACEK,EAAAA,KAAK,MAAA,CAAAN,UAAW,uBAAuBA,IAAWO,SAAA,CAChDC,EAAMC,IAAA,OAAA,CAAAT,UAAU,QAAO,UAAUE,EAC9BK,SAAAV,IAEHW,EAAAA,IAAA,OAAA,CAAMR,UAAW,SAAQD,EAAQ,SAASA,IAAU,IAAIQ,SAAGT"}
|
|
1
|
+
{"version":3,"file":"SimpleLabelValue.js","sources":["../../../../src/components/SimpleLabelValue/SimpleLabelValue.tsx"],"sourcesContent":["import React from 'react'\nimport './style.scss'\n\ntype SimpleLabelValueProps = {\n label?: string | JSX.Element\n value?: string | number | JSX.Element | JSX.Element[]\n color?: string\n className?: string\n dataId?: string\n}\n\nconst SimpleLabelValue: React.FC<SimpleLabelValueProps> = ({\n label,\n value,\n color,\n className = '',\n dataId,\n}: SimpleLabelValueProps) => {\n const dataIdLabel =\n typeof label === 'string' ? label?.toUpperCase()?.replaceAll(' ', '_') + '_LABEL_ID' : dataId\n return (\n <div className={`drawerItemContainer ${className}`}>\n <span className=\"title\" data-id={dataIdLabel}>\n {label}\n </span>\n <span className={`text ${color ? `color-${color}` : ''}`}>{value}</span>\n </div>\n )\n}\n\nexport default SimpleLabelValue\n"],"names":["SimpleLabelValue","label","value","color","className","dataId","dataIdLabel","_a","toUpperCase","replaceAll","_jsxs","children","_jsx","jsx"],"mappings":"qDAWA,MAAMA,EAAoD,EACxDC,QACAC,QACAC,QACAC,YAAY,GACZC,mBAEA,MAAMC,EACa,iBAAVL,GAAyC,QAApBM,EAAAN,aAAA,EAAAA,EAAOO,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,WAAW,IAAK,MAAO,YAAcJ,EACzF,OACEK,EAAAA,KAAK,MAAA,CAAAN,UAAW,uBAAuBA,IAAWO,SAAA,CAChDC,EAAMC,IAAA,OAAA,CAAAT,UAAU,QAAO,UAAUE,EAC9BK,SAAAV,IAEHW,EAAAA,IAAA,OAAA,CAAMR,UAAW,SAAQD,EAAQ,SAASA,IAAU,IAAIQ,SAAGT,MAE9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useState, useEffect, ReactNode } from 'react'\nimport Tippy, { TippyProps } from '@tippyjs/react'\nimport 'tippy.js/dist/tippy.css'\nimport './Tooltip.scss'\n\ninterface TooltipProps extends TippyProps {\n content: ReactNode\n success?: boolean\n onMouseEnter?: (event: React.MouseEvent<HTMLDivElement>) => void\n onMouseLeave?: (event: React.MouseEvent<HTMLDivElement>) => void\n visible?: boolean\n delay?: [number, number]\n type?: 'info' | 'function'\n maxWidth?: number\n className?: string\n arrowWithBorder?: boolean\n disabled?: boolean\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n children,\n content,\n success,\n onMouseEnter,\n onMouseLeave,\n visible,\n delay = [200, 400],\n type = 'info',\n maxWidth = 390,\n className,\n arrowWithBorder,\n disabled,\n ...props\n}) => {\n const [rootFontSize, setRootFontSize] = useState(16)\n\n useEffect(() => {\n const handleFontSizeChange = (fontSize: number) => {\n setRootFontSize((prev) => (prev !== fontSize ? fontSize : prev))\n }\n\n if (\n // @ts-ignore - Ignoring if `applicationUIScaling` doesn't exist\n window.applicationUIScaling &&\n // @ts-ignore - Ignoring if `applicationUIScaling` doesn't exist\n typeof window.applicationUIScaling.addEventHandler === 'function'\n ) {\n // @ts-ignore - Ignoring if `applicationUIScaling` doesn't exist\n window.applicationUIScaling.addEventHandler(handleFontSizeChange)\n }\n }, [])\n\n return (\n <Tippy\n visible={visible}\n allowHTML={typeof content !== 'string'}\n interactive\n maxWidth={(maxWidth / 16) * rootFontSize}\n delay={delay}\n content={content}\n placement=\"bottom-start\"\n className={`${success ? 'success' : ''} ${type} ${className || ''} ${\n arrowWithBorder ? 'arrow-with-border' : ''\n }`}\n disabled={disabled}\n {...props}\n >\n <div\n className=\"tooltip-custom-wrapper\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <div\n className=\"tooltip-custom-wrapper\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {children}\n </div>\n </div>\n </Tippy>\n )\n}\n\nexport default Tooltip\n"],"names":["Tooltip","_a","children","content","success","onMouseEnter","onMouseLeave","visible","delay","type","maxWidth","className","arrowWithBorder","disabled","props","__rest","rootFontSize","setRootFontSize","useState","useEffect","handleFontSizeChange","fontSize","prev","window","applicationUIScaling","addEventHandler","_jsx","Tippy","Object","assign","allowHTML","interactive","placement"],"mappings":"4SAmBA,MAAMA,EAAmCC,IAAA,IAAAC,SACvCA,EAAQC,QACRA,EAAOC,QACPA,EAAOC,aACPA,EAAYC,aACZA,EAAYC,QACZA,EAAOC,MACPA,EAAQ,CAAC,IAAK,KAAIC,KAClBA,EAAO,OAAMC,SACbA,EAAW,IAAGC,UACdA,EAASC,gBACTA,EAAeC,SACfA,GAAQZ,EACLa,EAAKC,EAAAd,EAb+B,6IAevC,MAAOe,EAAcC,GAAmBC,EAAS,IAkBjD,OAhBAC,GAAU,KACR,MAAMC,EAAwBC,IAC5BJ,GAAiBK,GAAUA,IAASD,EAAWA,EAAWC,
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useState, useEffect, ReactNode } from 'react'\nimport Tippy, { TippyProps } from '@tippyjs/react'\nimport 'tippy.js/dist/tippy.css'\nimport './Tooltip.scss'\n\ninterface TooltipProps extends TippyProps {\n content: ReactNode\n success?: boolean\n onMouseEnter?: (event: React.MouseEvent<HTMLDivElement>) => void\n onMouseLeave?: (event: React.MouseEvent<HTMLDivElement>) => void\n visible?: boolean\n delay?: [number, number]\n type?: 'info' | 'function'\n maxWidth?: number\n className?: string\n arrowWithBorder?: boolean\n disabled?: boolean\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n children,\n content,\n success,\n onMouseEnter,\n onMouseLeave,\n visible,\n delay = [200, 400],\n type = 'info',\n maxWidth = 390,\n className,\n arrowWithBorder,\n disabled,\n ...props\n}) => {\n const [rootFontSize, setRootFontSize] = useState(16)\n\n useEffect(() => {\n const handleFontSizeChange = (fontSize: number) => {\n setRootFontSize((prev) => (prev !== fontSize ? fontSize : prev))\n }\n\n if (\n // @ts-ignore - Ignoring if `applicationUIScaling` doesn't exist\n window.applicationUIScaling &&\n // @ts-ignore - Ignoring if `applicationUIScaling` doesn't exist\n typeof window.applicationUIScaling.addEventHandler === 'function'\n ) {\n // @ts-ignore - Ignoring if `applicationUIScaling` doesn't exist\n window.applicationUIScaling.addEventHandler(handleFontSizeChange)\n }\n }, [])\n\n return (\n <Tippy\n visible={visible}\n allowHTML={typeof content !== 'string'}\n interactive\n maxWidth={(maxWidth / 16) * rootFontSize}\n delay={delay}\n content={content}\n placement=\"bottom-start\"\n className={`${success ? 'success' : ''} ${type} ${className || ''} ${\n arrowWithBorder ? 'arrow-with-border' : ''\n }`}\n disabled={disabled}\n {...props}\n >\n <div\n className=\"tooltip-custom-wrapper\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <div\n className=\"tooltip-custom-wrapper\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {children}\n </div>\n </div>\n </Tippy>\n )\n}\n\nexport default Tooltip\n"],"names":["Tooltip","_a","children","content","success","onMouseEnter","onMouseLeave","visible","delay","type","maxWidth","className","arrowWithBorder","disabled","props","__rest","rootFontSize","setRootFontSize","useState","useEffect","handleFontSizeChange","fontSize","prev","window","applicationUIScaling","addEventHandler","_jsx","Tippy","Object","assign","allowHTML","interactive","placement"],"mappings":"4SAmBA,MAAMA,EAAmCC,IAAA,IAAAC,SACvCA,EAAQC,QACRA,EAAOC,QACPA,EAAOC,aACPA,EAAYC,aACZA,EAAYC,QACZA,EAAOC,MACPA,EAAQ,CAAC,IAAK,KAAIC,KAClBA,EAAO,OAAMC,SACbA,EAAW,IAAGC,UACdA,EAASC,gBACTA,EAAeC,SACfA,GAAQZ,EACLa,EAAKC,EAAAd,EAb+B,6IAevC,MAAOe,EAAcC,GAAmBC,EAAS,IAkBjD,OAhBAC,GAAU,KACR,MAAMC,EAAwBC,IAC5BJ,GAAiBK,GAAUA,IAASD,EAAWA,EAAWC,GAAM,EAKhEC,OAAOC,sBAEgD,mBAAhDD,OAAOC,qBAAqBC,iBAGnCF,OAAOC,qBAAqBC,gBAAgBL,EAC7C,GACA,IAGDM,EAAAA,IAACC,EAAKC,OAAAC,OAAA,CACJtB,QAASA,EACTuB,UAA8B,iBAAZ3B,EAClB4B,aACA,EAAArB,SAAWA,EAAW,GAAMM,EAC5BR,MAAOA,EACPL,QAASA,EACT6B,UAAU,eACVrB,UAAW,GAAGP,EAAU,UAAY,MAAMK,KAAQE,GAAa,MAC7DC,EAAkB,oBAAsB,KAE1CC,SAAUA,GACNC,EAEJ,CAAAZ,SAAAwB,EAAAA,IAAA,MAAA,CACEf,UAAU,yBACVN,aAAcA,EACdC,aAAcA,WAEdoB,EAAAA,IACE,MAAA,CAAAf,UAAU,yBACVN,aAAcA,EACdC,aAAcA,EAAYJ,SAEzBA,QAIR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/dialog/index.tsx"],"sourcesContent":["import React from 'react'\n// @ts-ignore\nimport { Dialog, Button } from 'digitinary-ui'\nimport SVGLoader from '../SVGLoader/SVGLoader'\nimport './style.scss'\nimport { CommonDialogProps } from './dialog'\nimport { Closecircle, InfoIcon } from './../../assets/icons'\n\nconst CommonDialog = ({\n status = 'info',\n content,\n onSubmit,\n onCancel,\n onClose,\n open,\n size = 'xs',\n icon = (\n <>\n <SVGLoader src={InfoIcon} width=\"4.0625rem\" height=\"4.0625rem\" />\n </>\n ),\n noActions = false,\n closeIcon,\n}: CommonDialogProps) => {\n const handleClose = () => {\n onClose() // Always close the dialog first\n\n if (onCancel && onCancel.onClick) {\n onCancel.onClick() // If onCancel.onClick is provided, invoke it after closing the dialog\n }\n }\n\n const body = (\n <div className=\"common-dialog\">\n {icon && (\n <div className=\"confirmation-dialog-header\">\n <div className={`icon ${status}`}>{icon}</div>\n </div>\n )}\n <div className=\"close-icon\">\n {closeIcon ?? (\n <SVGLoader src={Closecircle} width={'1.5rem'} height={'1.5rem'} onClick={handleClose} />\n )}\n </div>\n\n {content}\n {!!noActions ? null : (\n <div\n className=\"confirmation-dialog-footer\"\n style={{ marginBottom: onCancel || onSubmit ? '1.5rem' : '1rem' }}\n >\n {onCancel && (\n <Button\n {...onCancel}\n onClick={handleClose}\n variant={onCancel.variant || 'outlined'}\n color={onCancel.color || 'normal'}\n >\n {onCancel.text}\n </Button>\n )}\n {onSubmit && (\n <Button\n {...onSubmit}\n variant={onSubmit.variant || 'contained'}\n color={onSubmit.color || 'secondary'}\n >\n {onSubmit.text}\n </Button>\n )}\n </div>\n )}\n </div>\n )\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n content={body}\n fullWidth={false}\n size={size}\n id=\"common-dialog\"\n />\n )\n}\n\nexport default CommonDialog\n"],"names":["CommonDialog","status","content","onSubmit","onCancel","onClose","open","size","icon","_jsx","jsx","SVGLoader","src","InfoIcon","width","height","noActions","closeIcon","handleClose","onClick","body","_jsxs","jsxs","className","children","Closecircle","style","marginBottom","Button","Object","assign","variant","color","text","Dialog","fullWidth","id"],"mappings":"qPAQM,MAAAA,EAAe,EACnBC,SAAS,OACTC,UACAC,WACAC,WACAC,UACAC,OACAC,OAAO,KACPC,OACEC,EAAAA,yBACEA,EAACC,IAAAC,EAAU,CAAAC,IAAKC,EAAUC,MAAM,YAAYC,OAAO,gBAGvDC,aAAY,EACZC,gBAEA,MAAMC,EAAc,KAClBb,IAEID,GAAYA,EAASe,SACvBf,EAASe,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/dialog/index.tsx"],"sourcesContent":["import React from 'react'\n// @ts-ignore\nimport { Dialog, Button } from 'digitinary-ui'\nimport SVGLoader from '../SVGLoader/SVGLoader'\nimport './style.scss'\nimport { CommonDialogProps } from './dialog'\nimport { Closecircle, InfoIcon } from './../../assets/icons'\n\nconst CommonDialog = ({\n status = 'info',\n content,\n onSubmit,\n onCancel,\n onClose,\n open,\n size = 'xs',\n icon = (\n <>\n <SVGLoader src={InfoIcon} width=\"4.0625rem\" height=\"4.0625rem\" />\n </>\n ),\n noActions = false,\n closeIcon,\n}: CommonDialogProps) => {\n const handleClose = () => {\n onClose() // Always close the dialog first\n\n if (onCancel && onCancel.onClick) {\n onCancel.onClick() // If onCancel.onClick is provided, invoke it after closing the dialog\n }\n }\n\n const body = (\n <div className=\"common-dialog\">\n {icon && (\n <div className=\"confirmation-dialog-header\">\n <div className={`icon ${status}`}>{icon}</div>\n </div>\n )}\n <div className=\"close-icon\">\n {closeIcon ?? (\n <SVGLoader src={Closecircle} width={'1.5rem'} height={'1.5rem'} onClick={handleClose} />\n )}\n </div>\n\n {content}\n {!!noActions ? null : (\n <div\n className=\"confirmation-dialog-footer\"\n style={{ marginBottom: onCancel || onSubmit ? '1.5rem' : '1rem' }}\n >\n {onCancel && (\n <Button\n {...onCancel}\n onClick={handleClose}\n variant={onCancel.variant || 'outlined'}\n color={onCancel.color || 'normal'}\n >\n {onCancel.text}\n </Button>\n )}\n {onSubmit && (\n <Button\n {...onSubmit}\n variant={onSubmit.variant || 'contained'}\n color={onSubmit.color || 'secondary'}\n >\n {onSubmit.text}\n </Button>\n )}\n </div>\n )}\n </div>\n )\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n content={body}\n fullWidth={false}\n size={size}\n id=\"common-dialog\"\n />\n )\n}\n\nexport default CommonDialog\n"],"names":["CommonDialog","status","content","onSubmit","onCancel","onClose","open","size","icon","_jsx","jsx","SVGLoader","src","InfoIcon","width","height","noActions","closeIcon","handleClose","onClick","body","_jsxs","jsxs","className","children","Closecircle","style","marginBottom","Button","Object","assign","variant","color","text","Dialog","fullWidth","id"],"mappings":"qPAQM,MAAAA,EAAe,EACnBC,SAAS,OACTC,UACAC,WACAC,WACAC,UACAC,OACAC,OAAO,KACPC,OACEC,EAAAA,yBACEA,EAACC,IAAAC,EAAU,CAAAC,IAAKC,EAAUC,MAAM,YAAYC,OAAO,gBAGvDC,aAAY,EACZC,gBAEA,MAAMC,EAAc,KAClBb,IAEID,GAAYA,EAASe,SACvBf,EAASe,SACV,EAGGC,EACJC,EAAKC,KAAA,MAAA,CAAAC,UAAU,gBAAeC,SAAA,CAC3BhB,GACCC,EAAKC,IAAA,MAAA,CAAAa,UAAU,6BAA4BC,SACzCf,EAAAA,WAAKc,UAAW,QAAQtB,IAAWuB,SAAAhB,MAGvCC,EAAAC,IAAA,MAAA,CAAKa,UAAU,aACZC,SAAAP,QAAAA,EACCR,EAAAA,IAACE,GAAUC,IAAKa,EAAaX,MAAO,SAAUC,OAAQ,SAAUI,QAASD,MAI5EhB,EACEc,EAAY,KACbK,EAAAC,KAAA,MAAA,CACEC,UAAU,6BACVG,MAAO,CAAEC,aAAcvB,GAAYD,EAAW,SAAW,kBAExDC,GACCK,EAACC,IAAAkB,EAAMA,OACDC,OAAAC,OAAA,CAAA,EAAA1B,GACJe,QAASD,EACTa,QAAS3B,EAAS2B,SAAW,WAC7BC,MAAO5B,EAAS4B,OAAS,SAAQR,SAEhCpB,EAAS6B,QAGb9B,GACCM,EAAAC,IAACkB,EAAMA,OACDC,OAAAC,OAAA,CAAA,EAAA3B,GACJ4B,QAAS5B,EAAS4B,SAAW,YAC7BC,MAAO7B,EAAS6B,OAAS,YAAWR,SAEnCrB,EAAS8B,cAQtB,OACExB,EAAAA,IAACyB,EAAAA,OAAM,CACL5B,KAAMA,EACND,QAASa,EACThB,QAASkB,EACTe,WAAW,EACX5B,KAAMA,EACN6B,GAAG,iBAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../../src/components/table/table.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport './style.scss'\nimport { Button, Input, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'\nimport Tooltip from '../Tooltip/Tooltip'\nimport SVGLoader from '../SVGLoader/SVGLoader'\nimport { AddRow, EditIcon, DeleteIcon } from '../../assets/icons'\nimport PlusIcon from '../../assets/icons/Plus.svg'\nimport PlusSquare from '../../assets/icons/PlusSquare.svg'\nimport styles from '../MethodAccordion/MethodAccordion.module.scss'\nimport { useFormik } from 'formik'\nimport * as yup from 'yup'\nimport { capitalize } from '../../helpers/methodAccordion.helper'\nimport regex from '../../constants/regex'\n\nconst ParamterTable = ({\n id,\n headCells,\n data,\n isFormOpen,\n setIsFormOpen,\n saveNewRow,\n readOnly,\n isRequest = true,\n}) => {\n const [text, setText] = useState('')\n const [tooltipRef, setTooltipRef] = useState(null)\n const [tooltipEnumRef, setTooltipEnumRef] = useState(null)\n const [enumFields, setEnumFields] = useState<string[]>([])\n const { values, errors, setFieldValue, isValid, submitForm, resetForm } = useFormik({\n validateOnMount: true,\n initialValues: {\n name: '',\n in: isRequest ? 'query' : 'header',\n schema: {\n type: 'string',\n enum: [],\n items: {\n type: 'string',\n },\n },\n required: true,\n description: '',\n },\n validationSchema: yup.object().shape({\n name: yup.string().default('').trim().required('Parameter name is required'),\n in: yup.string().required('Paramter type is required'),\n schema: yup.object().shape({\n type: yup.string().required('Parameter schema type is required'),\n enum: yup.array(yup.string()).optional(),\n items: yup.object().shape({\n type: yup.string().optional(),\n }),\n }),\n required: yup.boolean().when('in', {\n is: 'path',\n then: (schema) => schema.oneOf([true], 'Path parameters must be required.'),\n otherwise: (schema) => schema.optional(),\n }),\n description: yup.string().default('').trim().optional(),\n }),\n onSubmit: (values) => {\n if (values && !values?.schema?.items?.type) {\n delete values?.schema?.items?.type\n }\n saveNewRow(values)\n setIsFormOpen(undefined)\n setText('')\n resetForm()\n },\n })\n\n return (\n <div className=\"tableSectionContainer\">\n <div className=\"tableContainer\">\n <table id={id || ''} className={`table borderRadiusTop borderRadiusBottom`}>\n <thead className=\"tableHead\">\n <tr>\n {headCells?.map((headCell) => (\n <th\n key={headCell.id}\n className={`tableHeadCell ${headCell.classes || ''}`}\n style={{ width: headCell.width, minWidth: headCell.minWidth }}\n >\n <div\n className=\"headContainer\"\n data-id={`${\n typeof headCell.label === 'string'\n ? headCell.label.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_')\n : 'UNKNOWN_LABEL'\n }_COLUMN`}\n >\n {headCell.label}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"tableBody\" data-id=\"TABLE_BODY\">\n {data?.map((row, rowIndex) => {\n return (\n <tr key={rowIndex} data-i={rowIndex} className={`row`}>\n {headCells?.map((headCell) => {\n const cellContent = row[headCell.id] !== '_' && (\n <div\n data-id=\"TEXT_DESCRIPTION\"\n className=\"tableData\"\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {row[headCell.id]}\n </div>\n )\n\n return (\n <td\n key={headCell.id}\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {cellContent}\n </td>\n )\n })}\n </tr>\n )\n })}\n {data?.length === 0 && readOnly && (\n <tr className=\"fallbackTableRow\">\n <td className=\"fallbackContainer\" colSpan={headCells?.length}>\n <div className=\"fallbackTextContainer\">\n <span className=\"fallbackText\"> No Data Available</span>\n </div>\n </td>\n </tr>\n )}\n\n {isFormOpen && !readOnly ? (\n <tr className={`row`}>\n <td key={'Parameter name'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <Input\n placeholder=\"Parameter name\"\n size=\"large\"\n type=\"text\"\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value as string))\n setFieldValue('name', value)\n }}\n value={values.name}\n disabled={readOnly}\n />\n </div>\n </td>\n\n <td key={'parameter in'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <SelectGroupV2\n disabled={readOnly}\n value={{\n label: capitalize(values.in),\n value: values.in,\n }}\n onChange={(item) => {\n setFieldValue('in', item?.value?.toLowerCase())\n if (item?.value == 'in') {\n setFieldValue('required', true)\n }\n }} // Updates state on selection\n options={[\n {\n list: isRequest\n ? [\n { label: 'Query', value: 'query' },\n { label: 'Header', value: 'header' },\n { label: 'Path', value: 'path' },\n ]\n : [{ label: 'Header', value: 'header' }],\n },\n ]}\n errorMsg={!!errors.in && errors.in}\n isMultiple={false}\n withSearch={false}\n clearable={false}\n />{' '}\n </div>\n </td>\n\n <td key={'parameter schema type'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData select-inputs\">\n <SelectGroupV2\n disabled={readOnly}\n clearable={false}\n value={{\n label: capitalize(values?.schema?.type),\n value: values?.schema?.type,\n }}\n errorMsg={!!errors.schema && errors.schema}\n onChange={(item) => setFieldValue('schema.type', item?.value?.toLowerCase())} // Updates state on selection\n options={[\n {\n list: [\n { label: 'String', value: 'string' },\n { label: 'Integer', value: 'integer' },\n { label: 'Boolean', value: 'boolean' },\n { label: 'Object', value: 'object' },\n { label: 'Array', value: 'array' },\n { label: 'Number', value: 'number' },\n ],\n },\n ]}\n isMultiple={false}\n withSearch={false}\n />{' '}\n {!!values?.schema?.type && values?.schema?.type.toLowerCase() === 'array' ? (\n <SelectGroupV2\n disabled={readOnly}\n clearable={false}\n value={{\n label: capitalize(values?.schema?.items?.type),\n value: values.schema?.items?.type,\n }}\n errorMsg={!!errors?.schema?.items?.type && errors?.schema?.items?.type}\n onChange={(item) => {\n setFieldValue('schema.items.type', item?.value?.toLowerCase())\n }} // Updates state on selection\n options={[\n {\n list: [\n { label: 'String', value: 'string' },\n { label: 'Integer', value: 'integer' },\n { label: 'Boolean', value: 'boolean' },\n { label: 'Object', value: 'object' },\n { label: 'Array', value: 'array' },\n { label: 'Number', value: 'number' },\n ],\n },\n ]}\n isMultiple={false}\n withSearch={false}\n />\n ) : (\n ''\n )}\n </div>\n </td>\n\n <td key={'parameter enum'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <Tooltip\n disabled={\n values?.schema?.type?.toLowerCase() == 'array' ||\n values?.schema?.type?.toLowerCase() == 'object'\n }\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setTooltipEnumRef(instance)}\n content={\n <div className={styles.editDescTooltipContent}>\n <p className={styles.editDescTooltipContent_header}>Enum</p>\n {!!values?.schema?.enum &&\n !!values?.schema?.enum.length &&\n values?.schema?.enum?.map((item, index) => (\n <Input\n key={index}\n className={'methodDescForEnum'}\n required\n clearable={false}\n placeholder=\"Enter Enum value...\"\n value={item}\n onChange={(value) => {\n setFieldValue(`schema.enum[${index}]`, value)\n }}\n />\n ))}\n {enumFields &&\n enumFields?.map((item, index) => (\n <Input\n key={index}\n className={'methodDescForEnum'}\n required\n clearable={false}\n placeholder={`Enter Enum value...`}\n value={item}\n onChange={(value) => {\n let _values = [...enumFields]\n _values[index] = value\n setEnumFields(_values)\n }}\n />\n ))}\n <p\n className={'addEnumButton'}\n onClick={() => {\n setEnumFields((prev) => [...prev, ''])\n }}\n >\n <SVGLoader src={PlusSquare} />\n Add New Enum\n </p>\n {!readOnly && (\n <Button\n className={styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n type=\"button\"\n onClick={() => {\n setFieldValue('schema.enum', [\n ...values?.schema?.enum,\n ...enumFields,\n ])\n setEnumFields([])\n tooltipEnumRef?.hide()\n }}\n disabled={\n (enumFields.length > 0 &&\n enumFields?.filter((item) => !item).length) ||\n (values?.schema?.enum.length > 0 &&\n values?.schema?.enum?.filter((item) => !item).length)\n }\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n <Button\n className={styles.editDescBtn}\n id=\"EnumButton\"\n variant=\"link\"\n color=\"action\"\n disabled={\n values?.schema?.type?.toLowerCase() == 'array' ||\n values?.schema?.type?.toLowerCase() == 'object'\n }\n endIcon={\n <SVGLoader id=\"enumIcon\" src={PlusIcon} width=\"1.5rem\" height=\"1.5rem\" />\n }\n >\n Add\n </Button>\n </Tooltip>\n </div>\n </td>\n\n <td key={'parameter required'}>\n <div data-id=\"is required\" className=\"tableData\">\n {readOnly ? (\n <>{values.required ? 'True' : 'False'}</>\n ) : (\n <Switch\n checked={\n values && values.in && values.in.toLowerCase() == 'path'\n ? true\n : values.required\n }\n disabled={values && values.in && values.in.toLowerCase() == 'path'}\n onClick={() => {\n if (readOnly) {\n return\n }\n setFieldValue('required', !values.required)\n }}\n />\n )}\n </div>\n </td>\n\n <td key={'parameter schema desc'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <div className={styles.paramDescContainer}>\n <Tooltip\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setTooltipRef(instance)}\n content={\n <div className={styles.editDescTooltipContent}>\n <p className={styles.editDescTooltipContent_header}>Description</p>\n <TextArea\n value={text || values.description}\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setText(value)\n }}\n disabled={readOnly}\n placeholder=\"Describe parameter...\"\n maxLength={120}\n />\n {!readOnly && (\n <Button\n className={styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n setFieldValue('description', text?.trim())\n tooltipRef?.hide()\n }}\n disabled={text?.trim() === ''}\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n <Button\n className={styles.editDescBtn}\n variant=\"link\"\n color=\"action\"\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\n >\n {readOnly ? 'View ' : 'Add '} Description\n </Button>\n </Tooltip>\n\n <div className={styles.paramDescContainer_separator}></div>\n {!readOnly && (\n <Button\n className={styles.deleteParamBtn}\n variant=\"link\"\n color=\"error\"\n endIcon={\n <SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />\n }\n onClick={() => {\n resetForm()\n setText('')\n setIsFormOpen(undefined)\n }} // Correctly delete the new row\n />\n )}\n\n {!readOnly && (\n <Tooltip\n disabled={!!values.name.trim()}\n content={`Parameter name can't be empty `}\n >\n <Button\n className={styles.deleteParamBtn}\n variant=\"link\"\n color=\"success\"\n disabled={!values.name.trim()}\n endIcon={<SVGLoader src={AddRow} width=\"0.125rem\" height=\"0.125rem\" />}\n onClick={() => {\n setText('')\n submitForm()\n }} // Save the new row when clicked\n />\n </Tooltip>\n )}\n </div>{' '}\n </div>\n </td>\n </tr>\n ) : (\n <>\n {!readOnly && (\n <tr key={'addNew'} data-i={'addNew'} className={`row`}>\n <td colSpan={6}>\n <Button\n variant=\"link\"\n color=\"primary\"\n onClick={() => {\n setIsFormOpen((prev) => (!prev ? (isRequest ? 'Req' : 'Res') : undefined))\n }}\n >\n + Add Parameter\n </Button>\n </td>\n </tr>\n )}\n </>\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nexport default ParamterTable\n"],"names":["ParamterTable","id","headCells","data","isFormOpen","setIsFormOpen","saveNewRow","readOnly","isRequest","text","setText","useState","tooltipRef","setTooltipRef","tooltipEnumRef","setTooltipEnumRef","enumFields","setEnumFields","values","errors","setFieldValue","isValid","submitForm","resetForm","useFormik","validateOnMount","initialValues","name","in","schema","type","enum","items","required","description","validationSchema","yup.object","shape","yup.string","default","trim","yup.array","optional","yup.boolean","when","is","then","oneOf","otherwise","onSubmit","_b","_a","_d","_c","undefined","_jsx","className","_jsxs","jsxs","children","map","headCell","classes","style","width","minWidth","jsx","label","toUpperCase","replace","row","rowIndex","cellContent","length","colSpan","Input","placeholder","size","onChange","value","regex","ASCII","test","disabled","SelectGroupV2","capitalize","item","toLowerCase","options","list","errorMsg","isMultiple","withSearch","clearable","_f","_e","_g","_h","_k","_m","_l","Tooltip","_p","_o","_q","_r","arrowWithBorder","placement","trigger","delay","onCreate","instance","content","styles","editDescTooltipContent","editDescTooltipContent_header","_s","_t","_v","_u","index","_values","onClick","prev","SVGLoader","src","PlusSquare","Button","editDescTooltipContent_btn","variant","hide","filter","_w","_y","_x","editDescBtn","color","_0","_z","_2","_1","endIcon","PlusIcon","height","_Fragment","Fragment","Switch","checked","paramDescContainer","TextArea","maxLength","EditIcon","paramDescContainer_separator","deleteParamBtn","DeleteIcon","AddRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../../src/components/table/table.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport './style.scss'\nimport { Button, Input, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'\nimport Tooltip from '../Tooltip/Tooltip'\nimport SVGLoader from '../SVGLoader/SVGLoader'\nimport { AddRow, EditIcon, DeleteIcon } from '../../assets/icons'\nimport PlusIcon from '../../assets/icons/Plus.svg'\nimport PlusSquare from '../../assets/icons/PlusSquare.svg'\nimport styles from '../MethodAccordion/MethodAccordion.module.scss'\nimport { useFormik } from 'formik'\nimport * as yup from 'yup'\nimport { capitalize } from '../../helpers/methodAccordion.helper'\nimport regex from '../../constants/regex'\n\nconst ParamterTable = ({\n id,\n headCells,\n data,\n isFormOpen,\n setIsFormOpen,\n saveNewRow,\n readOnly,\n isRequest = true,\n}) => {\n const [text, setText] = useState('')\n const [tooltipRef, setTooltipRef] = useState(null)\n const [tooltipEnumRef, setTooltipEnumRef] = useState(null)\n const [enumFields, setEnumFields] = useState<string[]>([])\n const { values, errors, setFieldValue, isValid, submitForm, resetForm } = useFormik({\n validateOnMount: true,\n initialValues: {\n name: '',\n in: isRequest ? 'query' : 'header',\n schema: {\n type: 'string',\n enum: [],\n items: {\n type: 'string',\n },\n },\n required: true,\n description: '',\n },\n validationSchema: yup.object().shape({\n name: yup.string().default('').trim().required('Parameter name is required'),\n in: yup.string().required('Paramter type is required'),\n schema: yup.object().shape({\n type: yup.string().required('Parameter schema type is required'),\n enum: yup.array(yup.string()).optional(),\n items: yup.object().shape({\n type: yup.string().optional(),\n }),\n }),\n required: yup.boolean().when('in', {\n is: 'path',\n then: (schema) => schema.oneOf([true], 'Path parameters must be required.'),\n otherwise: (schema) => schema.optional(),\n }),\n description: yup.string().default('').trim().optional(),\n }),\n onSubmit: (values) => {\n if (values && !values?.schema?.items?.type) {\n delete values?.schema?.items?.type\n }\n saveNewRow(values)\n setIsFormOpen(undefined)\n setText('')\n resetForm()\n },\n })\n\n return (\n <div className=\"tableSectionContainer\">\n <div className=\"tableContainer\">\n <table id={id || ''} className={`table borderRadiusTop borderRadiusBottom`}>\n <thead className=\"tableHead\">\n <tr>\n {headCells?.map((headCell) => (\n <th\n key={headCell.id}\n className={`tableHeadCell ${headCell.classes || ''}`}\n style={{ width: headCell.width, minWidth: headCell.minWidth }}\n >\n <div\n className=\"headContainer\"\n data-id={`${\n typeof headCell.label === 'string'\n ? headCell.label.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_')\n : 'UNKNOWN_LABEL'\n }_COLUMN`}\n >\n {headCell.label}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"tableBody\" data-id=\"TABLE_BODY\">\n {data?.map((row, rowIndex) => {\n return (\n <tr key={rowIndex} data-i={rowIndex} className={`row`}>\n {headCells?.map((headCell) => {\n const cellContent = row[headCell.id] !== '_' && (\n <div\n data-id=\"TEXT_DESCRIPTION\"\n className=\"tableData\"\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {row[headCell.id]}\n </div>\n )\n\n return (\n <td\n key={headCell.id}\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {cellContent}\n </td>\n )\n })}\n </tr>\n )\n })}\n {data?.length === 0 && readOnly && (\n <tr className=\"fallbackTableRow\">\n <td className=\"fallbackContainer\" colSpan={headCells?.length}>\n <div className=\"fallbackTextContainer\">\n <span className=\"fallbackText\"> No Data Available</span>\n </div>\n </td>\n </tr>\n )}\n\n {isFormOpen && !readOnly ? (\n <tr className={`row`}>\n <td key={'Parameter name'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <Input\n placeholder=\"Parameter name\"\n size=\"large\"\n type=\"text\"\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value as string))\n setFieldValue('name', value)\n }}\n value={values.name}\n disabled={readOnly}\n />\n </div>\n </td>\n\n <td key={'parameter in'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <SelectGroupV2\n disabled={readOnly}\n value={{\n label: capitalize(values.in),\n value: values.in,\n }}\n onChange={(item) => {\n setFieldValue('in', item?.value?.toLowerCase())\n if (item?.value == 'in') {\n setFieldValue('required', true)\n }\n }} // Updates state on selection\n options={[\n {\n list: isRequest\n ? [\n { label: 'Query', value: 'query' },\n { label: 'Header', value: 'header' },\n { label: 'Path', value: 'path' },\n ]\n : [{ label: 'Header', value: 'header' }],\n },\n ]}\n errorMsg={!!errors.in && errors.in}\n isMultiple={false}\n withSearch={false}\n clearable={false}\n />{' '}\n </div>\n </td>\n\n <td key={'parameter schema type'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData select-inputs\">\n <SelectGroupV2\n disabled={readOnly}\n clearable={false}\n value={{\n label: capitalize(values?.schema?.type),\n value: values?.schema?.type,\n }}\n errorMsg={!!errors.schema && errors.schema}\n onChange={(item) => setFieldValue('schema.type', item?.value?.toLowerCase())} // Updates state on selection\n options={[\n {\n list: [\n { label: 'String', value: 'string' },\n { label: 'Integer', value: 'integer' },\n { label: 'Boolean', value: 'boolean' },\n { label: 'Object', value: 'object' },\n { label: 'Array', value: 'array' },\n { label: 'Number', value: 'number' },\n ],\n },\n ]}\n isMultiple={false}\n withSearch={false}\n />{' '}\n {!!values?.schema?.type && values?.schema?.type.toLowerCase() === 'array' ? (\n <SelectGroupV2\n disabled={readOnly}\n clearable={false}\n value={{\n label: capitalize(values?.schema?.items?.type),\n value: values.schema?.items?.type,\n }}\n errorMsg={!!errors?.schema?.items?.type && errors?.schema?.items?.type}\n onChange={(item) => {\n setFieldValue('schema.items.type', item?.value?.toLowerCase())\n }} // Updates state on selection\n options={[\n {\n list: [\n { label: 'String', value: 'string' },\n { label: 'Integer', value: 'integer' },\n { label: 'Boolean', value: 'boolean' },\n { label: 'Object', value: 'object' },\n { label: 'Array', value: 'array' },\n { label: 'Number', value: 'number' },\n ],\n },\n ]}\n isMultiple={false}\n withSearch={false}\n />\n ) : (\n ''\n )}\n </div>\n </td>\n\n <td key={'parameter enum'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <Tooltip\n disabled={\n values?.schema?.type?.toLowerCase() == 'array' ||\n values?.schema?.type?.toLowerCase() == 'object'\n }\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setTooltipEnumRef(instance)}\n content={\n <div className={styles.editDescTooltipContent}>\n <p className={styles.editDescTooltipContent_header}>Enum</p>\n {!!values?.schema?.enum &&\n !!values?.schema?.enum.length &&\n values?.schema?.enum?.map((item, index) => (\n <Input\n key={index}\n className={'methodDescForEnum'}\n required\n clearable={false}\n placeholder=\"Enter Enum value...\"\n value={item}\n onChange={(value) => {\n setFieldValue(`schema.enum[${index}]`, value)\n }}\n />\n ))}\n {enumFields &&\n enumFields?.map((item, index) => (\n <Input\n key={index}\n className={'methodDescForEnum'}\n required\n clearable={false}\n placeholder={`Enter Enum value...`}\n value={item}\n onChange={(value) => {\n let _values = [...enumFields]\n _values[index] = value\n setEnumFields(_values)\n }}\n />\n ))}\n <p\n className={'addEnumButton'}\n onClick={() => {\n setEnumFields((prev) => [...prev, ''])\n }}\n >\n <SVGLoader src={PlusSquare} />\n Add New Enum\n </p>\n {!readOnly && (\n <Button\n className={styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n type=\"button\"\n onClick={() => {\n setFieldValue('schema.enum', [\n ...values?.schema?.enum,\n ...enumFields,\n ])\n setEnumFields([])\n tooltipEnumRef?.hide()\n }}\n disabled={\n (enumFields.length > 0 &&\n enumFields?.filter((item) => !item).length) ||\n (values?.schema?.enum.length > 0 &&\n values?.schema?.enum?.filter((item) => !item).length)\n }\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n <Button\n className={styles.editDescBtn}\n id=\"EnumButton\"\n variant=\"link\"\n color=\"action\"\n disabled={\n values?.schema?.type?.toLowerCase() == 'array' ||\n values?.schema?.type?.toLowerCase() == 'object'\n }\n endIcon={\n <SVGLoader id=\"enumIcon\" src={PlusIcon} width=\"1.5rem\" height=\"1.5rem\" />\n }\n >\n Add\n </Button>\n </Tooltip>\n </div>\n </td>\n\n <td key={'parameter required'}>\n <div data-id=\"is required\" className=\"tableData\">\n {readOnly ? (\n <>{values.required ? 'True' : 'False'}</>\n ) : (\n <Switch\n checked={\n values && values.in && values.in.toLowerCase() == 'path'\n ? true\n : values.required\n }\n disabled={values && values.in && values.in.toLowerCase() == 'path'}\n onClick={() => {\n if (readOnly) {\n return\n }\n setFieldValue('required', !values.required)\n }}\n />\n )}\n </div>\n </td>\n\n <td key={'parameter schema desc'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <div className={styles.paramDescContainer}>\n <Tooltip\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setTooltipRef(instance)}\n content={\n <div className={styles.editDescTooltipContent}>\n <p className={styles.editDescTooltipContent_header}>Description</p>\n <TextArea\n value={text || values.description}\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setText(value)\n }}\n disabled={readOnly}\n placeholder=\"Describe parameter...\"\n maxLength={120}\n />\n {!readOnly && (\n <Button\n className={styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n setFieldValue('description', text?.trim())\n tooltipRef?.hide()\n }}\n disabled={text?.trim() === ''}\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n <Button\n className={styles.editDescBtn}\n variant=\"link\"\n color=\"action\"\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\n >\n {readOnly ? 'View ' : 'Add '} Description\n </Button>\n </Tooltip>\n\n <div className={styles.paramDescContainer_separator}></div>\n {!readOnly && (\n <Button\n className={styles.deleteParamBtn}\n variant=\"link\"\n color=\"error\"\n endIcon={\n <SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />\n }\n onClick={() => {\n resetForm()\n setText('')\n setIsFormOpen(undefined)\n }} // Correctly delete the new row\n />\n )}\n\n {!readOnly && (\n <Tooltip\n disabled={!!values.name.trim()}\n content={`Parameter name can't be empty `}\n >\n <Button\n className={styles.deleteParamBtn}\n variant=\"link\"\n color=\"success\"\n disabled={!values.name.trim()}\n endIcon={<SVGLoader src={AddRow} width=\"0.125rem\" height=\"0.125rem\" />}\n onClick={() => {\n setText('')\n submitForm()\n }} // Save the new row when clicked\n />\n </Tooltip>\n )}\n </div>{' '}\n </div>\n </td>\n </tr>\n ) : (\n <>\n {!readOnly && (\n <tr key={'addNew'} data-i={'addNew'} className={`row`}>\n <td colSpan={6}>\n <Button\n variant=\"link\"\n color=\"primary\"\n onClick={() => {\n setIsFormOpen((prev) => (!prev ? (isRequest ? 'Req' : 'Res') : undefined))\n }}\n >\n + Add Parameter\n </Button>\n </td>\n </tr>\n )}\n </>\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nexport default ParamterTable\n"],"names":["ParamterTable","id","headCells","data","isFormOpen","setIsFormOpen","saveNewRow","readOnly","isRequest","text","setText","useState","tooltipRef","setTooltipRef","tooltipEnumRef","setTooltipEnumRef","enumFields","setEnumFields","values","errors","setFieldValue","isValid","submitForm","resetForm","useFormik","validateOnMount","initialValues","name","in","schema","type","enum","items","required","description","validationSchema","yup.object","shape","yup.string","default","trim","yup.array","optional","yup.boolean","when","is","then","oneOf","otherwise","onSubmit","_b","_a","_d","_c","undefined","_jsx","className","_jsxs","jsxs","children","map","headCell","classes","style","width","minWidth","jsx","label","toUpperCase","replace","row","rowIndex","cellContent","length","colSpan","Input","placeholder","size","onChange","value","regex","ASCII","test","disabled","SelectGroupV2","capitalize","item","toLowerCase","options","list","errorMsg","isMultiple","withSearch","clearable","_f","_e","_g","_h","_k","_m","_l","Tooltip","_p","_o","_q","_r","arrowWithBorder","placement","trigger","delay","onCreate","instance","content","styles","editDescTooltipContent","editDescTooltipContent_header","_s","_t","_v","_u","index","_values","onClick","prev","SVGLoader","src","PlusSquare","Button","editDescTooltipContent_btn","variant","hide","filter","_w","_y","_x","editDescBtn","color","_0","_z","_2","_1","endIcon","PlusIcon","height","_Fragment","Fragment","Switch","checked","paramDescContainer","TextArea","maxLength","EditIcon","paramDescContainer_separator","deleteParamBtn","DeleteIcon","AddRow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags-table.js","sources":["../../../../src/components/table/tags-table.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport './style.scss'\nimport _styles from '../InfoForm/InfoForm.module.scss'\nimport { Button, Input, TextArea } from 'digitinary-ui'\nimport Tooltip from '../Tooltip/Tooltip'\nimport SVGLoader from '../SVGLoader/SVGLoader'\nimport { AddRow, EditIcon, DeleteIcon } from '../../assets/icons'\nimport styles from '../MethodAccordion/MethodAccordion.module.scss'\nimport { useFormik } from 'formik'\nimport * as yup from 'yup'\nimport regex from '../../constants/regex'\n\nconst TagsTable = ({ id, headCells, data, isFormOpen, setIsFormOpen, saveNewRow, readOnly }) => {\n const [text, setText] = useState('')\n const [externalDesc, setExternalDesc] = useState('')\n const [externalUrl, setExternalUrl] = useState('')\n const [tooltipRef, setTooltipRef] = useState(null)\n const [externalTooltipRefs, setExternalTooltipRefs] = useState(null)\n const { values, errors, setFieldValue, isValid, submitForm, resetForm,dirty } = useFormik({\n validateOnMount: true,\n initialValues: {\n name: '',\n description: '',\n externalDocs: {\n url: '',\n description: '',\n },\n },\n validationSchema: yup.object().shape({\n name: yup.string().trim().required('Tag name is required'),\n description: yup.string().optional(),\n externalDocs: yup\n .object()\n .shape({\n url: yup\n .string()\n .trim()\n .matches(regex.urlRegex, 'Invalid URL')\n .when('description', (description, schema) => {\n return description?.at(0)\n ? schema.required('URL is required when description is provided')\n : schema.optional()\n }),\n description: yup.string().trim().optional(),\n })\n .optional(),\n }),\n onSubmit: (values) => {\n saveNewRow(values)\n setText('')\n resetForm()\n setIsFormOpen(false)\n },\n validateOnChange: true,\n })\n\n return (\n <div className=\"tableSectionContainer\">\n <div className=\"tableContainer\">\n <table id={id || ''} className={`table borderRadiusTop borderRadiusBottom`}>\n <thead className=\"tableHead\">\n <tr>\n {headCells?.map((headCell) => (\n <th\n key={headCell.id}\n className={`tableHeadCell ${headCell.classes || ''}`}\n style={{ width: headCell.width, minWidth: headCell.minWidth }}\n >\n <div\n className=\"headContainer\"\n data-id={`${\n typeof headCell.label === 'string'\n ? headCell.label.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_')\n : 'UNKNOWN_LABEL'\n }_COLUMN`}\n >\n {headCell.label}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"tableBody\" data-id=\"TABLE_BODY\">\n {data?.map((row, rowIndex) => {\n return (\n <tr key={rowIndex} data-i={rowIndex} className={`row`}>\n {headCells?.map((headCell) => {\n const cellContent = row[headCell.id] !== '_' && (\n <div\n data-id=\"TEXT_DESCRIPTION\"\n className=\"tableData\"\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {row[headCell.id]}\n </div>\n )\n\n return (\n <td\n key={headCell.id}\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {cellContent}\n </td>\n )\n })}\n </tr>\n )\n })}\n {isFormOpen ? (\n <tr key={''} data-i={''} className={`row`}>\n <td key={'tag name'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <Input\n placeholder=\"Tag name\"\n size=\"large\"\n type=\"text\"\n maxLength={25}\n onChange={(value) => {\n !regex.basic.test(value) && setFieldValue('name', value)\n }} // Pass the value directly\n value={values.name} // Bind value to the state\n disabled={readOnly}\n />\n </div>\n </td>\n\n <td key={'tagDescRequired'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <div className={styles.paramDescContainer}>\n <Tooltip\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setTooltipRef(instance)}\n onShow={() => {\n setText(values.description || '') // Reset to current value when shown\n }}\n onHidden={() => {\n setText(values.description || '') // Reset on close\n }}\n content={\n <div className={_styles.editDescTooltipContent}>\n <p className={_styles.editDescTooltipContent_header}>Description</p>\n <TextArea\n value={text || values.description}\n disabled={readOnly}\n maxLength={25}\n placeholder=\"Describe Tag...\"\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setText(value)\n }}\n />\n {!readOnly && (\n <Button\n className={_styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n setFieldValue('description', text?.trim())\n tooltipRef?.hide()\n }}\n disabled={!(text || values.description)?.trim()}\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n <Button\n className={_styles.editDescBtn}\n style={{ paddingLeft: 0 }}\n variant=\"link\"\n color=\"action\"\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\n >\n {readOnly ? 'View ' : 'Add '} Description\n </Button>\n </Tooltip>\n </div>{' '}\n </div>\n </td>\n <td key={'tagExternal'}>\n <div className=\"tableData\">\n <div className={_styles.paramDescContainer}>\n <Tooltip\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setExternalTooltipRefs(instance)}\n onShow={() => {\n setExternalDesc(values.externalDocs.description || '')\n setExternalUrl(values.externalDocs.url || '')\n }}\n onHidden={() => {\n setExternalDesc(values.externalDocs.description || '')\n setExternalUrl(values.externalDocs.url || '')\n }}\n content={\n <div className={_styles.editDescTooltipContent}>\n <p className={_styles.editDescTooltipContent_header}>\n External Docs Description\n </p>\n <TextArea\n placeholder=\"Describe External Doc...\"\n value={externalDesc || values.externalDocs.description}\n disabled={readOnly}\n maxLength={25}\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setExternalDesc(value)\n }}\n />\n <p className={_styles.editDescTooltipContent_header}>\n External Docs Link\n </p>\n <TextArea\n placeholder=\"External Docs Link...\"\n restrictedCharsRegex={regex.urlRegex}\n value={externalUrl || values.externalDocs.url}\n disabled={readOnly}\n maxLength={200}\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setExternalUrl(value)\n }}\n />\n {!readOnly && (\n <Button\n className={_styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n setFieldValue(`externalDocs`, {\n description: externalDesc,\n url: externalUrl,\n })\n\n externalTooltipRefs?.hide()\n }}\n disabled={\n !(externalUrl || values.externalDocs.url)?.trim() ||\n !regex.urlRegex.test(externalUrl || values.externalDocs.url)\n }\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n {readOnly ? (\n <a\n className={_styles.editDescBtn}\n variant=\"link\"\n color=\"action\"\n href={values.externalDocs?.url}\n target=\"_blank\"\n >\n {values?.externalDocs?.description\n ? values?.externalDocs?.description?.substring(0, 12)\n : '-'}\n {values?.externalDocs?.description &&\n values?.externalDocs?.description?.length > 12\n ? '...'\n : ''}\n </a>\n ) : (\n <Button\n className={_styles.editDescBtn}\n variant=\"link\"\n color=\"action\"\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\n >\n {readOnly ? 'View ' : 'Add '} External Docs Link\n </Button>\n )}\n </Tooltip>\n <div className={_styles.paramDescContainer_separator}></div>\n {!readOnly && (\n <Button\n className={_styles.deleteParamBtn}\n variant=\"link\"\n color=\"error\"\n endIcon={\n <SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />\n }\n onClick={() => {\n resetForm()\n setText('')\n setIsFormOpen(false)\n }} // Correctly delete the new row\n />\n )}\n\n {!readOnly && (\n <Button\n className={_styles.deleteParamBtn}\n variant=\"link\"\n color=\"success\"\n disabled={!isValid || !dirty}\n endIcon={<SVGLoader src={AddRow} width=\"0.125rem\" height=\"0.125rem\" />}\n onClick={() => {\n setText('')\n submitForm()\n }} // Save the new row when clicked\n />\n )}\n </div>\n </div>\n </td>\n </tr>\n ) : (\n <>\n {!readOnly && (\n <tr key={'addNew'} data-i={'addNew'} className={`row`}>\n <td colSpan={5}>\n <Button\n variant=\"link\"\n color=\"primary\"\n onClick={() => {\n setIsFormOpen((prev) => !prev)\n }}\n >\n + Add Tag\n </Button>\n </td>\n </tr>\n )}\n </>\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nexport default TagsTable\n"],"names":["TagsTable","id","headCells","data","isFormOpen","setIsFormOpen","saveNewRow","readOnly","text","setText","useState","externalDesc","setExternalDesc","externalUrl","setExternalUrl","tooltipRef","setTooltipRef","externalTooltipRefs","setExternalTooltipRefs","values","errors","setFieldValue","isValid","submitForm","resetForm","dirty","useFormik","validateOnMount","initialValues","name","description","externalDocs","url","validationSchema","yup.object","shape","yup.string","trim","required","optional","yup\n .object","yup\n .string","matches","regex","urlRegex","when","schema","at","onSubmit","validateOnChange","_jsx","className","_jsxs","jsxs","children","map","headCell","classes","style","width","minWidth","jsx","label","toUpperCase","replace","row","rowIndex","cellContent","Input","placeholder","size","type","maxLength","onChange","value","basic","test","disabled","styles","paramDescContainer","Tooltip","arrowWithBorder","placement","trigger","delay","onCreate","instance","onShow","onHidden","content","_styles","editDescTooltipContent","editDescTooltipContent_header","TextArea","ASCII","Button","editDescTooltipContent_btn","variant","onClick","hide","_a","editDescBtn","paddingLeft","color","endIcon","SVGLoader","src","EditIcon","height","restrictedCharsRegex","_b","href","_c","target","_d","_f","_e","substring","_g","_j","_h","length","paramDescContainer_separator","deleteParamBtn","DeleteIcon","AddRow","_Fragment","Fragment","colSpan","prev"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tags-table.js","sources":["../../../../src/components/table/tags-table.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport './style.scss'\nimport _styles from '../InfoForm/InfoForm.module.scss'\nimport { Button, Input, TextArea } from 'digitinary-ui'\nimport Tooltip from '../Tooltip/Tooltip'\nimport SVGLoader from '../SVGLoader/SVGLoader'\nimport { AddRow, EditIcon, DeleteIcon } from '../../assets/icons'\nimport styles from '../MethodAccordion/MethodAccordion.module.scss'\nimport { useFormik } from 'formik'\nimport * as yup from 'yup'\nimport regex from '../../constants/regex'\n\nconst TagsTable = ({ id, headCells, data, isFormOpen, setIsFormOpen, saveNewRow, readOnly }) => {\n const [text, setText] = useState('')\n const [externalDesc, setExternalDesc] = useState('')\n const [externalUrl, setExternalUrl] = useState('')\n const [tooltipRef, setTooltipRef] = useState(null)\n const [externalTooltipRefs, setExternalTooltipRefs] = useState(null)\n const { values, errors, setFieldValue, isValid, submitForm, resetForm,dirty } = useFormik({\n validateOnMount: true,\n initialValues: {\n name: '',\n description: '',\n externalDocs: {\n url: '',\n description: '',\n },\n },\n validationSchema: yup.object().shape({\n name: yup.string().trim().required('Tag name is required'),\n description: yup.string().optional(),\n externalDocs: yup\n .object()\n .shape({\n url: yup\n .string()\n .trim()\n .matches(regex.urlRegex, 'Invalid URL')\n .when('description', (description, schema) => {\n return description?.at(0)\n ? schema.required('URL is required when description is provided')\n : schema.optional()\n }),\n description: yup.string().trim().optional(),\n })\n .optional(),\n }),\n onSubmit: (values) => {\n saveNewRow(values)\n setText('')\n resetForm()\n setIsFormOpen(false)\n },\n validateOnChange: true,\n })\n\n return (\n <div className=\"tableSectionContainer\">\n <div className=\"tableContainer\">\n <table id={id || ''} className={`table borderRadiusTop borderRadiusBottom`}>\n <thead className=\"tableHead\">\n <tr>\n {headCells?.map((headCell) => (\n <th\n key={headCell.id}\n className={`tableHeadCell ${headCell.classes || ''}`}\n style={{ width: headCell.width, minWidth: headCell.minWidth }}\n >\n <div\n className=\"headContainer\"\n data-id={`${\n typeof headCell.label === 'string'\n ? headCell.label.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_')\n : 'UNKNOWN_LABEL'\n }_COLUMN`}\n >\n {headCell.label}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"tableBody\" data-id=\"TABLE_BODY\">\n {data?.map((row, rowIndex) => {\n return (\n <tr key={rowIndex} data-i={rowIndex} className={`row`}>\n {headCells?.map((headCell) => {\n const cellContent = row[headCell.id] !== '_' && (\n <div\n data-id=\"TEXT_DESCRIPTION\"\n className=\"tableData\"\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {row[headCell.id]}\n </div>\n )\n\n return (\n <td\n key={headCell.id}\n style={{\n width: headCell.width,\n minWidth: headCell.minWidth,\n }}\n >\n {cellContent}\n </td>\n )\n })}\n </tr>\n )\n })}\n {isFormOpen ? (\n <tr key={''} data-i={''} className={`row`}>\n <td key={'tag name'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <Input\n placeholder=\"Tag name\"\n size=\"large\"\n type=\"text\"\n maxLength={25}\n onChange={(value) => {\n !regex.basic.test(value) && setFieldValue('name', value)\n }} // Pass the value directly\n value={values.name} // Bind value to the state\n disabled={readOnly}\n />\n </div>\n </td>\n\n <td key={'tagDescRequired'}>\n <div data-id=\"TEXT_DESCRIPTION\" className=\"tableData\">\n <div className={styles.paramDescContainer}>\n <Tooltip\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setTooltipRef(instance)}\n onShow={() => {\n setText(values.description || '') // Reset to current value when shown\n }}\n onHidden={() => {\n setText(values.description || '') // Reset on close\n }}\n content={\n <div className={_styles.editDescTooltipContent}>\n <p className={_styles.editDescTooltipContent_header}>Description</p>\n <TextArea\n value={text || values.description}\n disabled={readOnly}\n maxLength={25}\n placeholder=\"Describe Tag...\"\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setText(value)\n }}\n />\n {!readOnly && (\n <Button\n className={_styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n setFieldValue('description', text?.trim())\n tooltipRef?.hide()\n }}\n disabled={!(text || values.description)?.trim()}\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n <Button\n className={_styles.editDescBtn}\n style={{ paddingLeft: 0 }}\n variant=\"link\"\n color=\"action\"\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\n >\n {readOnly ? 'View ' : 'Add '} Description\n </Button>\n </Tooltip>\n </div>{' '}\n </div>\n </td>\n <td key={'tagExternal'}>\n <div className=\"tableData\">\n <div className={_styles.paramDescContainer}>\n <Tooltip\n arrowWithBorder\n placement=\"bottom-end\"\n type=\"function\"\n trigger=\"click\"\n delay={[0, 0]}\n onCreate={(instance) => setExternalTooltipRefs(instance)}\n onShow={() => {\n setExternalDesc(values.externalDocs.description || '')\n setExternalUrl(values.externalDocs.url || '')\n }}\n onHidden={() => {\n setExternalDesc(values.externalDocs.description || '')\n setExternalUrl(values.externalDocs.url || '')\n }}\n content={\n <div className={_styles.editDescTooltipContent}>\n <p className={_styles.editDescTooltipContent_header}>\n External Docs Description\n </p>\n <TextArea\n placeholder=\"Describe External Doc...\"\n value={externalDesc || values.externalDocs.description}\n disabled={readOnly}\n maxLength={25}\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setExternalDesc(value)\n }}\n />\n <p className={_styles.editDescTooltipContent_header}>\n External Docs Link\n </p>\n <TextArea\n placeholder=\"External Docs Link...\"\n restrictedCharsRegex={regex.urlRegex}\n value={externalUrl || values.externalDocs.url}\n disabled={readOnly}\n maxLength={200}\n onChange={(value) => {\n if (value === '' || regex.ASCII.test(value)) setExternalUrl(value)\n }}\n />\n {!readOnly && (\n <Button\n className={_styles.editDescTooltipContent_btn}\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n setFieldValue(`externalDocs`, {\n description: externalDesc,\n url: externalUrl,\n })\n\n externalTooltipRefs?.hide()\n }}\n disabled={\n !(externalUrl || values.externalDocs.url)?.trim() ||\n !regex.urlRegex.test(externalUrl || values.externalDocs.url)\n }\n >\n Apply\n </Button>\n )}\n </div>\n }\n >\n {readOnly ? (\n <a\n className={_styles.editDescBtn}\n variant=\"link\"\n color=\"action\"\n href={values.externalDocs?.url}\n target=\"_blank\"\n >\n {values?.externalDocs?.description\n ? values?.externalDocs?.description?.substring(0, 12)\n : '-'}\n {values?.externalDocs?.description &&\n values?.externalDocs?.description?.length > 12\n ? '...'\n : ''}\n </a>\n ) : (\n <Button\n className={_styles.editDescBtn}\n variant=\"link\"\n color=\"action\"\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\n >\n {readOnly ? 'View ' : 'Add '} External Docs Link\n </Button>\n )}\n </Tooltip>\n <div className={_styles.paramDescContainer_separator}></div>\n {!readOnly && (\n <Button\n className={_styles.deleteParamBtn}\n variant=\"link\"\n color=\"error\"\n endIcon={\n <SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />\n }\n onClick={() => {\n resetForm()\n setText('')\n setIsFormOpen(false)\n }} // Correctly delete the new row\n />\n )}\n\n {!readOnly && (\n <Button\n className={_styles.deleteParamBtn}\n variant=\"link\"\n color=\"success\"\n disabled={!isValid || !dirty}\n endIcon={<SVGLoader src={AddRow} width=\"0.125rem\" height=\"0.125rem\" />}\n onClick={() => {\n setText('')\n submitForm()\n }} // Save the new row when clicked\n />\n )}\n </div>\n </div>\n </td>\n </tr>\n ) : (\n <>\n {!readOnly && (\n <tr key={'addNew'} data-i={'addNew'} className={`row`}>\n <td colSpan={5}>\n <Button\n variant=\"link\"\n color=\"primary\"\n onClick={() => {\n setIsFormOpen((prev) => !prev)\n }}\n >\n + Add Tag\n </Button>\n </td>\n </tr>\n )}\n </>\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nexport default TagsTable\n"],"names":["TagsTable","id","headCells","data","isFormOpen","setIsFormOpen","saveNewRow","readOnly","text","setText","useState","externalDesc","setExternalDesc","externalUrl","setExternalUrl","tooltipRef","setTooltipRef","externalTooltipRefs","setExternalTooltipRefs","values","errors","setFieldValue","isValid","submitForm","resetForm","dirty","useFormik","validateOnMount","initialValues","name","description","externalDocs","url","validationSchema","yup.object","shape","yup.string","trim","required","optional","yup\n .object","yup\n .string","matches","regex","urlRegex","when","schema","at","onSubmit","validateOnChange","_jsx","className","_jsxs","jsxs","children","map","headCell","classes","style","width","minWidth","jsx","label","toUpperCase","replace","row","rowIndex","cellContent","Input","placeholder","size","type","maxLength","onChange","value","basic","test","disabled","styles","paramDescContainer","Tooltip","arrowWithBorder","placement","trigger","delay","onCreate","instance","onShow","onHidden","content","_styles","editDescTooltipContent","editDescTooltipContent_header","TextArea","ASCII","Button","editDescTooltipContent_btn","variant","onClick","hide","_a","editDescBtn","paddingLeft","color","endIcon","SVGLoader","src","EditIcon","height","restrictedCharsRegex","_b","href","_c","target","_d","_f","_e","substring","_g","_j","_h","length","paramDescContainer_separator","deleteParamBtn","DeleteIcon","AddRow","_Fragment","Fragment","colSpan","prev"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionToggleContext.js","sources":["../../../src/context/SectionToggleContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, ReactNode, useMemo, useCallback } from 'react'\n\nexport enum SectionEnum {\n OVERVIEW = 'overview',\n RESOURCE = 'resource',\n API_SECTION = 'apiSection',\n TAG_SECTION = 'tagSection',\n ENDPOINTS_SECTION = 'endpointsSection',\n}\n\ntype SectionKey =\n | `api_${string}_${SectionEnum}`\n | `api_${string}_${SectionEnum}_${string | number}`\n | `api_${string}_${SectionEnum}_${string | number}_${string | number}`\ntype ExpandedSections = Record<SectionKey, boolean>\n\ninterface SectionToggleContextType {\n expandedSections: ExpandedSections\n toggleSection: (\n apiId: string,\n sections: ToggleSectionDescriptor[],\n options?: ToggleOptions\n ) => void\n generateSectionKey: ({ apiId, type, index, id }: GenerateSectionKeyParams) => SectionKey\n}\n\ninterface SectionToggleProviderProps {\n children: ReactNode\n}\n\nexport interface ToggleSectionDescriptor {\n type: SectionEnum\n index?: string | number\n setTo?: boolean\n id?: string\n}\n\nexport interface ToggleOptions {\n resetOthers?: boolean\n filterKeys?: SectionEnum[]\n}\n\ninterface GenerateSectionKeyParams {\n apiId: string\n type: SectionEnum\n index?: string | number\n id?: string | number\n}\n\nconst SectionToggleContext = createContext<SectionToggleContextType | null>(null)\n\nexport const useSectionToggle = () => {\n const context = useContext(SectionToggleContext)\n if (!context) {\n throw new Error('useSectionToggle must be used within SectionToggleProvider')\n }\n return context\n}\n\nexport const SectionToggleProvider = ({ children }: SectionToggleProviderProps) => {\n const [expandedSections, setExpandedSections] = useState<ExpandedSections>({})\n\n const generateSectionKey = ({ apiId, type, index, id }: GenerateSectionKeyParams): SectionKey => {\n let key = `api_${apiId}_${type}`\n\n if (index !== undefined) key += `_${index}`\n if (id !== undefined) key += `_${id}`\n\n return key as SectionKey\n }\n\n const toggleSection = useCallback(\n (apiId: string, sections: ToggleSectionDescriptor[], options: ToggleOptions = {}) => {\n const { resetOthers = false, filterKeys = [] } = options\n\n const sectionIds = sections.map(({ type, index, id }) =>\n generateSectionKey({ apiId, type, index, id })\n )\n\n const sectionToggles = Object.fromEntries(\n sections.map(({ type, index, setTo, id }) => {\n const sectionId = generateSectionKey({ apiId, type, index, id })\n const currentValue = expandedSections[sectionId]\n\n return [sectionId, setTo !== undefined ? setTo : !currentValue]\n })\n )\n\n if (resetOthers && filterKeys.length > 0) {\n const filtered = Object.fromEntries(\n Object.entries(expandedSections).filter(([key]) => {\n const shouldKeep = key.includes(apiId) && !filterKeys.some((k) => key.includes(k))\n return shouldKeep || sectionIds.includes(key as SectionKey)\n })\n )\n const newState = { ...filtered, ...sectionToggles }\n setExpandedSections(newState)\n } else {\n setExpandedSections((prev) => {\n const next = { ...prev, ...sectionToggles }\n\n return next\n })\n }\n },\n [expandedSections]\n )\n\n const contextValue = useMemo(\n () => ({\n expandedSections,\n toggleSection,\n generateSectionKey,\n }),\n [expandedSections, toggleSection]\n )\n\n return (\n <SectionToggleContext.Provider value={contextValue}>{children}</SectionToggleContext.Provider>\n )\n}\n"],"names":["SectionEnum","SectionToggleContext","createContext","useSectionToggle","context","useContext","Error","SectionToggleProvider","children","expandedSections","setExpandedSections","useState","generateSectionKey","apiId","type","index","id","key","undefined","toggleSection","useCallback","sections","options","resetOthers","filterKeys","sectionIds","map","sectionToggles","Object","fromEntries","setTo","sectionId","currentValue","length","filtered","entries","filter","includes","some","k","newState","assign","prev","contextValue","useMemo","_jsx","jsx","Provider","value"],"mappings":"wJAEYA,GAAZ,SAAYA,GACVA,EAAA,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,YAAA,aACAA,EAAA,YAAA,aACAA,EAAA,kBAAA,kBACD,CAND,CAAYA,IAAAA,EAMX,CAAA,IAyCD,MAAMC,EAAuBC,EAA+C,MAE/DC,EAAmB,KAC9B,MAAMC,EAAUC,EAAWJ,GAC3B,IAAKG,EACH,MAAM,IAAIE,MAAM,8DAElB,OAAOF,
|
|
1
|
+
{"version":3,"file":"SectionToggleContext.js","sources":["../../../src/context/SectionToggleContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, ReactNode, useMemo, useCallback } from 'react'\n\nexport enum SectionEnum {\n OVERVIEW = 'overview',\n RESOURCE = 'resource',\n API_SECTION = 'apiSection',\n TAG_SECTION = 'tagSection',\n ENDPOINTS_SECTION = 'endpointsSection',\n}\n\ntype SectionKey =\n | `api_${string}_${SectionEnum}`\n | `api_${string}_${SectionEnum}_${string | number}`\n | `api_${string}_${SectionEnum}_${string | number}_${string | number}`\ntype ExpandedSections = Record<SectionKey, boolean>\n\ninterface SectionToggleContextType {\n expandedSections: ExpandedSections\n toggleSection: (\n apiId: string,\n sections: ToggleSectionDescriptor[],\n options?: ToggleOptions\n ) => void\n generateSectionKey: ({ apiId, type, index, id }: GenerateSectionKeyParams) => SectionKey\n}\n\ninterface SectionToggleProviderProps {\n children: ReactNode\n}\n\nexport interface ToggleSectionDescriptor {\n type: SectionEnum\n index?: string | number\n setTo?: boolean\n id?: string\n}\n\nexport interface ToggleOptions {\n resetOthers?: boolean\n filterKeys?: SectionEnum[]\n}\n\ninterface GenerateSectionKeyParams {\n apiId: string\n type: SectionEnum\n index?: string | number\n id?: string | number\n}\n\nconst SectionToggleContext = createContext<SectionToggleContextType | null>(null)\n\nexport const useSectionToggle = () => {\n const context = useContext(SectionToggleContext)\n if (!context) {\n throw new Error('useSectionToggle must be used within SectionToggleProvider')\n }\n return context\n}\n\nexport const SectionToggleProvider = ({ children }: SectionToggleProviderProps) => {\n const [expandedSections, setExpandedSections] = useState<ExpandedSections>({})\n\n const generateSectionKey = ({ apiId, type, index, id }: GenerateSectionKeyParams): SectionKey => {\n let key = `api_${apiId}_${type}`\n\n if (index !== undefined) key += `_${index}`\n if (id !== undefined) key += `_${id}`\n\n return key as SectionKey\n }\n\n const toggleSection = useCallback(\n (apiId: string, sections: ToggleSectionDescriptor[], options: ToggleOptions = {}) => {\n const { resetOthers = false, filterKeys = [] } = options\n\n const sectionIds = sections.map(({ type, index, id }) =>\n generateSectionKey({ apiId, type, index, id })\n )\n\n const sectionToggles = Object.fromEntries(\n sections.map(({ type, index, setTo, id }) => {\n const sectionId = generateSectionKey({ apiId, type, index, id })\n const currentValue = expandedSections[sectionId]\n\n return [sectionId, setTo !== undefined ? setTo : !currentValue]\n })\n )\n\n if (resetOthers && filterKeys.length > 0) {\n const filtered = Object.fromEntries(\n Object.entries(expandedSections).filter(([key]) => {\n const shouldKeep = key.includes(apiId) && !filterKeys.some((k) => key.includes(k))\n return shouldKeep || sectionIds.includes(key as SectionKey)\n })\n )\n const newState = { ...filtered, ...sectionToggles }\n setExpandedSections(newState)\n } else {\n setExpandedSections((prev) => {\n const next = { ...prev, ...sectionToggles }\n\n return next\n })\n }\n },\n [expandedSections]\n )\n\n const contextValue = useMemo(\n () => ({\n expandedSections,\n toggleSection,\n generateSectionKey,\n }),\n [expandedSections, toggleSection]\n )\n\n return (\n <SectionToggleContext.Provider value={contextValue}>{children}</SectionToggleContext.Provider>\n )\n}\n"],"names":["SectionEnum","SectionToggleContext","createContext","useSectionToggle","context","useContext","Error","SectionToggleProvider","children","expandedSections","setExpandedSections","useState","generateSectionKey","apiId","type","index","id","key","undefined","toggleSection","useCallback","sections","options","resetOthers","filterKeys","sectionIds","map","sectionToggles","Object","fromEntries","setTo","sectionId","currentValue","length","filtered","entries","filter","includes","some","k","newState","assign","prev","contextValue","useMemo","_jsx","jsx","Provider","value"],"mappings":"wJAEYA,GAAZ,SAAYA,GACVA,EAAA,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,YAAA,aACAA,EAAA,YAAA,aACAA,EAAA,kBAAA,kBACD,CAND,CAAYA,IAAAA,EAMX,CAAA,IAyCD,MAAMC,EAAuBC,EAA+C,MAE/DC,EAAmB,KAC9B,MAAMC,EAAUC,EAAWJ,GAC3B,IAAKG,EACH,MAAM,IAAIE,MAAM,8DAElB,OAAOF,CAAO,EAGHG,EAAwB,EAAGC,eACtC,MAAOC,EAAkBC,GAAuBC,EAA2B,CAAE,GAEvEC,EAAqB,EAAGC,QAAOC,OAAMC,QAAOC,SAChD,IAAIC,EAAM,OAAOJ,KAASC,IAK1B,YAHcI,IAAVH,IAAqBE,GAAO,IAAIF,UACzBG,IAAPF,IAAkBC,GAAO,IAAID,KAE1BC,CAAiB,EAGpBE,EAAgBC,GACpB,CAACP,EAAeQ,EAAqCC,EAAyB,MAC5E,MAAMC,YAAEA,GAAc,EAAKC,WAAEA,EAAa,IAAOF,EAE3CG,EAAaJ,EAASK,KAAI,EAAGZ,OAAMC,QAAOC,QAC9CJ,EAAmB,CAAEC,QAAOC,OAAMC,QAAOC,SAGrCW,EAAiBC,OAAOC,YAC5BR,EAASK,KAAI,EAAGZ,OAAMC,QAAOe,QAAOd,SAClC,MAAMe,EAAYnB,EAAmB,CAAEC,QAAOC,OAAMC,QAAOC,OACrDgB,EAAevB,EAAiBsB,GAEtC,MAAO,CAACA,OAAqBb,IAAVY,EAAsBA,GAASE,EAAa,KAInE,GAAIT,GAAeC,EAAWS,OAAS,EAAG,CACxC,MAAMC,EAAWN,OAAOC,YACtBD,OAAOO,QAAQ1B,GAAkB2B,QAAO,EAAEnB,KACrBA,EAAIoB,SAASxB,KAAWW,EAAWc,MAAMC,GAAMtB,EAAIoB,SAASE,MAC1Dd,EAAWY,SAASpB,MAGvCuB,EAAgBZ,OAAAa,OAAAb,OAAAa,OAAA,GAAAP,GAAaP,GACnCjB,EAAoB8B,EACrB,MACC9B,GAAqBgC,GACDd,OAAAa,OAAAb,OAAAa,OAAA,GAAAC,GAASf,IAI9B,GAEH,CAAClB,IAGGkC,EAAeC,GACnB,KAAO,CACLnC,mBACAU,gBACAP,wBAEF,CAACH,EAAkBU,IAGrB,OACE0B,EAAAC,IAAC7C,EAAqB8C,SAAQ,CAACC,MAAOL,EAAYnC,SAAGA,GACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.helper.js","sources":["../../../src/helpers/docs.helper.ts"],"sourcesContent":["import { ApiSpecModel } from '@entities/index'\nimport { HTTPMethod, OpenAPIFile } from '@entities/openApi'\nimport { nanoid } from 'nanoid'\nimport { OverviewData, TagData } from 'src/layout/docsLayout'\n\nexport const transformOpenApiToDocs = (api: ApiSpecModel): OverviewData => {\n const parsedOpenApi: OpenAPIFile =\n typeof api.metaData.openApiJson === 'string'\n ? JSON.parse(api.metaData.openApiJson)\n : api.metaData.openApiJson\n\n const groupedPathsByTags: Record<string, TagData[]> = { default: [] }\n const validTags = new Set(parsedOpenApi?.tags?.map(({ name }) => name) || [])\n\n for (const [path, methods] of Object.entries(parsedOpenApi.paths)) {\n for (const [method, methodData] of Object.entries(methods)) {\n const entry = { ...methodData, method: method as HTTPMethod, path }\n const resourceTags = methodData.tags ?? []\n\n const matchedTags = resourceTags.filter((tag) => validTags.has(tag))\n\n if (matchedTags.length > 0) {\n matchedTags.forEach((tag) => {\n if (!groupedPathsByTags[tag]) groupedPathsByTags[tag] = []\n groupedPathsByTags[tag].push({ ...entry, id: nanoid(8) } as TagData)\n })\n } else {\n groupedPathsByTags.default.push({ ...entry, id: nanoid(8) } as TagData)\n }\n }\n }\n\n return {\n ...parsedOpenApi.info,\n apiSpecId: api.apiSpecId,\n contextPath: api.contextPath,\n associatedProduct: api.associatedProduct,\n apiVersions: api.apiVersions,\n tags: groupedPathsByTags,\n servers: parsedOpenApi.servers,\n }\n}\n"],"names":["transformOpenApiToDocs","api","parsedOpenApi","metaData","openApiJson","JSON","parse","groupedPathsByTags","default","validTags","Set","_a","tags","map","name","path","methods","Object","entries","paths","method","methodData","entry","assign","matchedTags","_b","filter","tag","has","length","forEach","push","id","nanoid","info","apiSpecId","contextPath","associatedProduct","apiVersions","servers"],"mappings":"4DAKa,MAAAA,EAA0BC,YACrC,MAAMC,EACgC,iBAA7BD,EAAIE,SAASC,YAChBC,KAAKC,MAAML,EAAIE,SAASC,aACxBH,EAAIE,SAASC,YAEbG,EAAgD,CAAEC,QAAS,IAC3DC,EAAY,IAAIC,KAAyB,QAArBC,EAAAT,aAAA,EAAAA,EAAeU,YAAM,IAAAD,OAAA,EAAAA,EAAAE,KAAI,EAAGC,UAAWA,MAAS,IAE1E,IAAK,MAAOC,EAAMC,KAAYC,OAAOC,QAAQhB,EAAciB,OACzD,IAAK,MAAOC,EAAQC,KAAeJ,OAAOC,QAAQF,GAAU,CAC1D,MAAMM,EAAaL,OAAAM,OAAAN,OAAAM,OAAA,CAAA,EAAAF,GAAY,CAAAD,OAAQA,EAAsBL,SAGvDS,GAF8B,QAAfC,EAAAJ,EAAWT,YAAI,IAAAa,EAAAA,EAAI,IAEPC,QAAQC,GAAQlB,EAAUmB,IAAID,KAE3DH,EAAYK,OAAS,EACvBL,EAAYM,SAASH,IACdpB,EAAmBoB,KAAMpB,EAAmBoB,GAAO,IACxDpB,EAAmBoB,GAAKI,KAAKd,OAAKM,OAAAN,OAAAM,OAAA,CAAA,EAAAD,GAAO,CAAAU,GAAIC,EAAO,
|
|
1
|
+
{"version":3,"file":"docs.helper.js","sources":["../../../src/helpers/docs.helper.ts"],"sourcesContent":["import { ApiSpecModel } from '@entities/index'\nimport { HTTPMethod, OpenAPIFile } from '@entities/openApi'\nimport { nanoid } from 'nanoid'\nimport { OverviewData, TagData } from 'src/layout/docsLayout'\n\nexport const transformOpenApiToDocs = (api: ApiSpecModel): OverviewData => {\n const parsedOpenApi: OpenAPIFile =\n typeof api.metaData.openApiJson === 'string'\n ? JSON.parse(api.metaData.openApiJson)\n : api.metaData.openApiJson\n\n const groupedPathsByTags: Record<string, TagData[]> = { default: [] }\n const validTags = new Set(parsedOpenApi?.tags?.map(({ name }) => name) || [])\n\n for (const [path, methods] of Object.entries(parsedOpenApi.paths)) {\n for (const [method, methodData] of Object.entries(methods)) {\n const entry = { ...methodData, method: method as HTTPMethod, path }\n const resourceTags = methodData.tags ?? []\n\n const matchedTags = resourceTags.filter((tag) => validTags.has(tag))\n\n if (matchedTags.length > 0) {\n matchedTags.forEach((tag) => {\n if (!groupedPathsByTags[tag]) groupedPathsByTags[tag] = []\n groupedPathsByTags[tag].push({ ...entry, id: nanoid(8) } as TagData)\n })\n } else {\n groupedPathsByTags.default.push({ ...entry, id: nanoid(8) } as TagData)\n }\n }\n }\n\n return {\n ...parsedOpenApi.info,\n apiSpecId: api.apiSpecId,\n contextPath: api.contextPath,\n associatedProduct: api.associatedProduct,\n apiVersions: api.apiVersions,\n tags: groupedPathsByTags,\n servers: parsedOpenApi.servers,\n }\n}\n"],"names":["transformOpenApiToDocs","api","parsedOpenApi","metaData","openApiJson","JSON","parse","groupedPathsByTags","default","validTags","Set","_a","tags","map","name","path","methods","Object","entries","paths","method","methodData","entry","assign","matchedTags","_b","filter","tag","has","length","forEach","push","id","nanoid","info","apiSpecId","contextPath","associatedProduct","apiVersions","servers"],"mappings":"4DAKa,MAAAA,EAA0BC,YACrC,MAAMC,EACgC,iBAA7BD,EAAIE,SAASC,YAChBC,KAAKC,MAAML,EAAIE,SAASC,aACxBH,EAAIE,SAASC,YAEbG,EAAgD,CAAEC,QAAS,IAC3DC,EAAY,IAAIC,KAAyB,QAArBC,EAAAT,aAAA,EAAAA,EAAeU,YAAM,IAAAD,OAAA,EAAAA,EAAAE,KAAI,EAAGC,UAAWA,MAAS,IAE1E,IAAK,MAAOC,EAAMC,KAAYC,OAAOC,QAAQhB,EAAciB,OACzD,IAAK,MAAOC,EAAQC,KAAeJ,OAAOC,QAAQF,GAAU,CAC1D,MAAMM,EAAaL,OAAAM,OAAAN,OAAAM,OAAA,CAAA,EAAAF,GAAY,CAAAD,OAAQA,EAAsBL,SAGvDS,GAF8B,QAAfC,EAAAJ,EAAWT,YAAI,IAAAa,EAAAA,EAAI,IAEPC,QAAQC,GAAQlB,EAAUmB,IAAID,KAE3DH,EAAYK,OAAS,EACvBL,EAAYM,SAASH,IACdpB,EAAmBoB,KAAMpB,EAAmBoB,GAAO,IACxDpB,EAAmBoB,GAAKI,KAAKd,OAAKM,OAAAN,OAAAM,OAAA,CAAA,EAAAD,GAAO,CAAAU,GAAIC,EAAO,KAAgB,IAGtE1B,EAAmBC,QAAQuB,KAAKd,+BAAKK,GAAK,CAAEU,GAAIC,EAAO,KAE1D,CAGH,OAAAhB,OAAAM,OAAAN,OAAAM,OAAA,CAAA,EACKrB,EAAcgC,MACjB,CAAAC,UAAWlC,EAAIkC,UACfC,YAAanC,EAAImC,YACjBC,kBAAmBpC,EAAIoC,kBACvBC,YAAarC,EAAIqC,YACjB1B,KAAML,EACNgC,QAASrC,EAAcqC,SACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.helper.js","sources":["../../../src/helpers/layout.helper.ts"],"sourcesContent":["import { TransformedPathsArray } from '@entities/layout.type'\nimport { OpenAPIFile, SecurityScheme } from '@entities/openApi'\nimport { TransformedOpenApi } from '@entities/transformedOpenApi'\n\nconst resolveRef = (ref: string, openApiJson: OpenAPIFile): Object => {\n const parts = ref.replace(/^#\\//, '').split('/')\n return parts.reduce((obj, key) => obj?.[key], openApiJson)\n}\n\nexport const transformOpenApiObject = (openApiJson: OpenAPIFile): TransformedOpenApi => {\n if (openApiJson.components && openApiJson.components.securitySchemes) {\n const authKey = Object.keys(openApiJson.components.securitySchemes)?.at(0)\n if (authKey) {\n openApiJson.components.securitySchemes[authKey].type = openApiJson?.components\n ?.securitySchemes?.[authKey]?.type as SecurityScheme['type']\n }\n } else {\n openApiJson.components = {\n securitySchemes: {\n Public: {\n type: 'http',\n scheme: 'public',\n },\n },\n ...(openApiJson.components || {}),\n }\n }\n\n if (!openApiJson.tags) {\n openApiJson.tags = []\n }\n\n return {\n ...openApiJson,\n paths: transformPathsToArray(openApiJson),\n } as TransformedOpenApi\n}\n\nexport const transformOpenApiObjectToOrigin = (values: TransformedOpenApi): OpenAPIFile => {\n const object = {\n ...values,\n paths: transformPathsArrayToOrigin(values.paths),\n }\n if (object.components && object.components.securitySchemes) {\n const authKey = Object.keys(object.components.securitySchemes)?.at(0)\n if (authKey) {\n if (object.components.securitySchemes[authKey].type.toLowerCase() == 'APIKEY'.toLowerCase()) {\n object.components.securitySchemes[authKey].in = object.components.securitySchemes[authKey]\n .in as SecurityScheme['in']\n }\n object.components.securitySchemes[authKey].type = object?.components?.securitySchemes?.[\n authKey\n ]?.type as SecurityScheme['type']\n }\n }\n return object\n}\n\nexport const transformPathsToArray = (openApiJson: OpenAPIFile): TransformedPathsArray | any => {\n const paths: OpenAPIFile['paths'] = openApiJson.paths\n const transformedPaths = Object.entries(paths).map(([path, methods]) => ({\n path,\n methods: Object.entries(methods).map(([method, methodProps]) => {\n const obj: any = {\n ...methodProps,\n type: method,\n tags: methodProps.tags || [],\n summary: methodProps.summary || '',\n responses: Object.entries(methodProps.responses).map(([code, codeProps]) => {\n const contentType = Object.keys(codeProps.content || {})[0]\n let headers = codeProps?.headers ?? {}\n\n // ? Fix headers with items property\n Object.keys(headers).map((header: string) => {\n let headerObj = headers[header]\n if (\n headerObj?.schema &&\n headerObj?.schema?.type &&\n headerObj?.schema?.type != 'array'\n ) {\n delete headers[header]?.schema?.items\n }\n })\n\n let schema = codeProps.content?.[contentType]?.schema\n if (schema?.$ref) {\n schema = resolveRef(schema?.$ref, openApiJson)\n } else if (schema?.type == 'array' && schema?.items?.$ref) {\n const resolvedItemSchema = resolveRef(schema.items.$ref, openApiJson)\n schema = {\n ...schema,\n items: resolvedItemSchema,\n }\n }\n\n return {\n code,\n headers,\n content: {\n contentType,\n schema: {\n ...schema,\n properties: JSON.stringify(schema?.properties || schema?.items?.properties),\n },\n },\n }\n }),\n }\n\n if (!obj.responses.find((item) => item.code == '200')) {\n obj.responses.push({\n code: '200',\n content: {\n contentType: 'application/json',\n schema: {},\n },\n headers: {},\n })\n }\n // Add parameters if it does not exist in the original JSON\n if (!methodProps?.parameters) {\n obj.parameters = []\n }\n\n // load response headers parameters\n\n if (method.toLowerCase() != 'get') {\n const contentType = Object.keys(methodProps?.requestBody?.content || {})[0]\n let reqSchema = methodProps?.requestBody?.content?.[contentType]?.schema\n\n if (reqSchema?.$ref) {\n reqSchema = resolveRef(reqSchema.$ref, openApiJson)\n } else if (reqSchema?.type === 'array' && reqSchema.items?.$ref) {\n reqSchema = {\n ...reqSchema,\n items: resolveRef(reqSchema.items.$ref, openApiJson),\n }\n }\n\n const requestBodyData = reqSchema\n ? {\n content: {\n contentType,\n schema: {\n ...reqSchema,\n properties: JSON.stringify(reqSchema?.properties || reqSchema?.items?.properties),\n },\n },\n }\n : {\n content: {\n contentType: 'application/json',\n schema: {\n properties: '{}',\n type: 'object',\n },\n },\n }\n\n obj['requestBody'] = requestBodyData\n }\n return obj\n }),\n }))\n\n return transformedPaths\n}\n\nconst validateBodyForResponse = (content, method) => {\n if (!(content?.schema as any) || !(content?.schema as any)?.properties) {\n return {}\n }\n let _content = JSON.parse((content?.schema as any)?.properties as string)\n\n return _content\n}\n\nexport const transformPathsArrayToOrigin = (paths: TransformedPathsArray): OpenAPIFile['paths'] => {\n return paths.reduce((acc, { path, methods }) => {\n acc[path] = methods.reduce(\n (methodAcc, { type, tags, responses, summary, requestBody, ...rest }) => {\n // Initialize the method object\n // ? Validate (rest) [parameters]\n let copiedRest = structuredClone(rest || {})\n if (copiedRest && copiedRest.parameters) {\n copiedRest.parameters.map((param) => {\n if (param && param?.schema?.items && param?.schema?.items?.type == 'array') {\n param.schema.items.items = {}\n }\n return param\n })\n }\n methodAcc[type] = {\n ...copiedRest,\n tags,\n summary,\n responses: responses.reduce((respAcc, { code, content, headers }) => {\n const formattedHeaders: Record<string, any> = {}\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n formattedHeaders[key] = {\n description: value.description || '',\n required: value.required || false,\n schema: value.schema || {},\n }\n }\n }\n respAcc[code] = {\n description: 'Success', // Assuming this is static from the original data\n content: content.contentType\n ? {\n [content.contentType]: {\n schema: {\n ...(content.schema as object),\n properties: validateBodyForResponse(content, type),\n },\n },\n }\n : {},\n headers: formattedHeaders,\n }\n return respAcc\n }, {} as Record<string, any>),\n }\n\n const parsedRequestBodyProps =\n type !== 'get' ? JSON.parse(requestBody.content.schema.properties) : {}\n // Add requestBody for non-GET methods\n if (type !== 'get') {\n methodAcc[type].requestBody = {\n content: {\n [requestBody.content.contentType]: {\n schema: {\n ...requestBody.content.schema,\n properties: parsedRequestBodyProps,\n },\n },\n },\n }\n }\n\n return methodAcc\n },\n {} as Record<string, any>\n )\n\n return acc\n }, {} as OpenAPIFile['paths'])\n}\n"],"names":["resolveRef","ref","openApiJson","replace","split","reduce","obj","key","transformOpenApiObject","components","securitySchemes","authKey","_a","Object","keys","at","type","_d","_c","_b","assign","Public","scheme","tags","paths","transformPathsToArray","transformOpenApiObjectToOrigin","values","object","transformPathsArrayToOrigin","toLowerCase","in","entries","map","path","methods","method","methodProps","summary","responses","code","codeProps","contentType","content","headers","header","headerObj","schema","items","$ref","resolvedItemSchema","properties","JSON","stringify","_e","find","item","push","parameters","requestBody","reqSchema","requestBodyData","_f","validateBodyForResponse","parse","acc","methodAcc","rest","__rest","copiedRest","structuredClone","param","respAcc","formattedHeaders","value","description","required","parsedRequestBodyProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout.helper.js","sources":["../../../src/helpers/layout.helper.ts"],"sourcesContent":["import { TransformedPathsArray } from '@entities/layout.type'\nimport { OpenAPIFile, SecurityScheme } from '@entities/openApi'\nimport { TransformedOpenApi } from '@entities/transformedOpenApi'\n\nconst resolveRef = (ref: string, openApiJson: OpenAPIFile): Object => {\n const parts = ref.replace(/^#\\//, '').split('/')\n return parts.reduce((obj, key) => obj?.[key], openApiJson)\n}\n\nexport const transformOpenApiObject = (openApiJson: OpenAPIFile): TransformedOpenApi => {\n if (openApiJson.components && openApiJson.components.securitySchemes) {\n const authKey = Object.keys(openApiJson.components.securitySchemes)?.at(0)\n if (authKey) {\n openApiJson.components.securitySchemes[authKey].type = openApiJson?.components\n ?.securitySchemes?.[authKey]?.type as SecurityScheme['type']\n }\n } else {\n openApiJson.components = {\n securitySchemes: {\n Public: {\n type: 'http',\n scheme: 'public',\n },\n },\n ...(openApiJson.components || {}),\n }\n }\n\n if (!openApiJson.tags) {\n openApiJson.tags = []\n }\n\n return {\n ...openApiJson,\n paths: transformPathsToArray(openApiJson),\n } as TransformedOpenApi\n}\n\nexport const transformOpenApiObjectToOrigin = (values: TransformedOpenApi): OpenAPIFile => {\n const object = {\n ...values,\n paths: transformPathsArrayToOrigin(values.paths),\n }\n if (object.components && object.components.securitySchemes) {\n const authKey = Object.keys(object.components.securitySchemes)?.at(0)\n if (authKey) {\n if (object.components.securitySchemes[authKey].type.toLowerCase() == 'APIKEY'.toLowerCase()) {\n object.components.securitySchemes[authKey].in = object.components.securitySchemes[authKey]\n .in as SecurityScheme['in']\n }\n object.components.securitySchemes[authKey].type = object?.components?.securitySchemes?.[\n authKey\n ]?.type as SecurityScheme['type']\n }\n }\n return object\n}\n\nexport const transformPathsToArray = (openApiJson: OpenAPIFile): TransformedPathsArray | any => {\n const paths: OpenAPIFile['paths'] = openApiJson.paths\n const transformedPaths = Object.entries(paths).map(([path, methods]) => ({\n path,\n methods: Object.entries(methods).map(([method, methodProps]) => {\n const obj: any = {\n ...methodProps,\n type: method,\n tags: methodProps.tags || [],\n summary: methodProps.summary || '',\n responses: Object.entries(methodProps.responses).map(([code, codeProps]) => {\n const contentType = Object.keys(codeProps.content || {})[0]\n let headers = codeProps?.headers ?? {}\n\n // ? Fix headers with items property\n Object.keys(headers).map((header: string) => {\n let headerObj = headers[header]\n if (\n headerObj?.schema &&\n headerObj?.schema?.type &&\n headerObj?.schema?.type != 'array'\n ) {\n delete headers[header]?.schema?.items\n }\n })\n\n let schema = codeProps.content?.[contentType]?.schema\n if (schema?.$ref) {\n schema = resolveRef(schema?.$ref, openApiJson)\n } else if (schema?.type == 'array' && schema?.items?.$ref) {\n const resolvedItemSchema = resolveRef(schema.items.$ref, openApiJson)\n schema = {\n ...schema,\n items: resolvedItemSchema,\n }\n }\n\n return {\n code,\n headers,\n content: {\n contentType,\n schema: {\n ...schema,\n properties: JSON.stringify(schema?.properties || schema?.items?.properties),\n },\n },\n }\n }),\n }\n\n if (!obj.responses.find((item) => item.code == '200')) {\n obj.responses.push({\n code: '200',\n content: {\n contentType: 'application/json',\n schema: {},\n },\n headers: {},\n })\n }\n // Add parameters if it does not exist in the original JSON\n if (!methodProps?.parameters) {\n obj.parameters = []\n }\n\n // load response headers parameters\n\n if (method.toLowerCase() != 'get') {\n const contentType = Object.keys(methodProps?.requestBody?.content || {})[0]\n let reqSchema = methodProps?.requestBody?.content?.[contentType]?.schema\n\n if (reqSchema?.$ref) {\n reqSchema = resolveRef(reqSchema.$ref, openApiJson)\n } else if (reqSchema?.type === 'array' && reqSchema.items?.$ref) {\n reqSchema = {\n ...reqSchema,\n items: resolveRef(reqSchema.items.$ref, openApiJson),\n }\n }\n\n const requestBodyData = reqSchema\n ? {\n content: {\n contentType,\n schema: {\n ...reqSchema,\n properties: JSON.stringify(reqSchema?.properties || reqSchema?.items?.properties),\n },\n },\n }\n : {\n content: {\n contentType: 'application/json',\n schema: {\n properties: '{}',\n type: 'object',\n },\n },\n }\n\n obj['requestBody'] = requestBodyData\n }\n return obj\n }),\n }))\n\n return transformedPaths\n}\n\nconst validateBodyForResponse = (content, method) => {\n if (!(content?.schema as any) || !(content?.schema as any)?.properties) {\n return {}\n }\n let _content = JSON.parse((content?.schema as any)?.properties as string)\n\n return _content\n}\n\nexport const transformPathsArrayToOrigin = (paths: TransformedPathsArray): OpenAPIFile['paths'] => {\n return paths.reduce((acc, { path, methods }) => {\n acc[path] = methods.reduce(\n (methodAcc, { type, tags, responses, summary, requestBody, ...rest }) => {\n // Initialize the method object\n // ? Validate (rest) [parameters]\n let copiedRest = structuredClone(rest || {})\n if (copiedRest && copiedRest.parameters) {\n copiedRest.parameters.map((param) => {\n if (param && param?.schema?.items && param?.schema?.items?.type == 'array') {\n param.schema.items.items = {}\n }\n return param\n })\n }\n methodAcc[type] = {\n ...copiedRest,\n tags,\n summary,\n responses: responses.reduce((respAcc, { code, content, headers }) => {\n const formattedHeaders: Record<string, any> = {}\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n formattedHeaders[key] = {\n description: value.description || '',\n required: value.required || false,\n schema: value.schema || {},\n }\n }\n }\n respAcc[code] = {\n description: 'Success', // Assuming this is static from the original data\n content: content.contentType\n ? {\n [content.contentType]: {\n schema: {\n ...(content.schema as object),\n properties: validateBodyForResponse(content, type),\n },\n },\n }\n : {},\n headers: formattedHeaders,\n }\n return respAcc\n }, {} as Record<string, any>),\n }\n\n const parsedRequestBodyProps =\n type !== 'get' ? JSON.parse(requestBody.content.schema.properties) : {}\n // Add requestBody for non-GET methods\n if (type !== 'get') {\n methodAcc[type].requestBody = {\n content: {\n [requestBody.content.contentType]: {\n schema: {\n ...requestBody.content.schema,\n properties: parsedRequestBodyProps,\n },\n },\n },\n }\n }\n\n return methodAcc\n },\n {} as Record<string, any>\n )\n\n return acc\n }, {} as OpenAPIFile['paths'])\n}\n"],"names":["resolveRef","ref","openApiJson","replace","split","reduce","obj","key","transformOpenApiObject","components","securitySchemes","authKey","_a","Object","keys","at","type","_d","_c","_b","assign","Public","scheme","tags","paths","transformPathsToArray","transformOpenApiObjectToOrigin","values","object","transformPathsArrayToOrigin","toLowerCase","in","entries","map","path","methods","method","methodProps","summary","responses","code","codeProps","contentType","content","headers","header","headerObj","schema","items","$ref","resolvedItemSchema","properties","JSON","stringify","_e","find","item","push","parameters","requestBody","reqSchema","requestBodyData","_f","validateBodyForResponse","parse","acc","methodAcc","rest","__rest","copiedRest","structuredClone","param","respAcc","formattedHeaders","value","description","required","parsedRequestBodyProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Codebox.js","sources":["../../../../../src/layout/docsComponents/Codebox/Codebox.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Light as SyntaxHighlighter } from 'react-syntax-highlighter'\nimport json from 'react-syntax-highlighter/dist/esm/languages/hljs/json'\nimport * as hljs from 'react-syntax-highlighter/dist/esm/styles/hljs'\nimport styles from './style.module.scss'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport { Copy } from '../../../assets/icons'\nimport { copyToClipboard } from '../../../utils'\n\nSyntaxHighlighter.registerLanguage('json', json)\n\nconst Codebox = ({ code }: { code: string }) => {\n const [theme, setTheme] = useState<'LIGHT' | 'DARK'>('DARK')\n\n return (\n <div className={styles.codebox}>\n <div className={styles.codebox_header}>\n <div\n role=\"button\"\n tabIndex={-1}\n onClick={() => theme !== 'LIGHT' && setTheme('LIGHT')}\n className={`${styles.codebox_header_themeToggle} ${styles.codebox_header_themeToggle_light}`}\n title=\"Light theme\"\n ></div>\n <div\n role=\"button\"\n tabIndex={-1}\n onClick={() => theme !== 'DARK' && setTheme('DARK')}\n className={`${styles.codebox_header_themeToggle} ${styles.codebox_header_themeToggle_dark}`}\n title=\"Dark theme\"\n ></div>\n <SVGLoader\n src={Copy}\n width=\"0.75rem\"\n height=\"0.75rem\"\n className={styles.codebox_header_copyIcon}\n onClick={() => copyToClipboard(code)}\n />\n </div>\n <SyntaxHighlighter\n language=\"json\"\n style={theme === 'LIGHT' ? hljs.stackoverflowLight : hljs.stackoverflowDark}\n showLineNumbers\n wrapLines\n customStyle={{\n margin: 0,\n height: '13.75rem',\n overflowY: 'auto',\n padding: '0.75rem 1rem 0 1.5rem',\n backgroundColor: theme === 'DARK' ? '#455162' : '#F7F7F7',\n fontSize: '0.75rem',\n }}\n lineProps={{ className: 'custom-code-line' }}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n )\n}\n\nexport default Codebox\n"],"names":["SyntaxHighlighter","registerLanguage","json","Codebox","code","theme","setTheme","useState","_jsxs","className","styles","codebox","children","codebox_header","_jsx","role","tabIndex","onClick","codebox_header_themeToggle","codebox_header_themeToggle_light","title","codebox_header_themeToggle_dark","SVGLoader","src","Copy","width","height","codebox_header_copyIcon","copyToClipboard","jsx","language","style","hljs.stackoverflowLight","hljs.stackoverflowDark","showLineNumbers","wrapLines","customStyle","margin","overflowY","padding","backgroundColor","fontSize","lineProps"],"mappings":"4nBASAA,EAAkBC,iBAAiB,OAAQC,GAE3C,MAAMC,EAAU,EAAGC,WACjB,MAAOC,EAAOC,GAAYC,EAA2B,QAErD,OACEC,OAAK,MAAA,CAAAC,UAAWC,EAAOC,QAAOC,SAAA,CAC5BJ,EAAAA,KAAK,MAAA,CAAAC,UAAWC,EAAOG,eAAcD,SAAA,CACnCE,aACEC,KAAK,SACLC,UAAW,EACXC,QAAS,IAAgB,UAAVZ,GAAqBC,EAAS,SAC7CG,UAAW,GAAGC,EAAOQ,8BAA8BR,EAAOS,mCAC1DC,MAAM,gBAERN,aACEC,KAAK,SACLC,UAAW,EACXC,QAAS,IAAgB,SAAVZ,GAAoBC,EAAS,QAC5CG,UAAW,GAAGC,EAAOQ,8BAA8BR,EAAOW,kCAC1DD,MAAM,eAERN,MAACQ,EAAS,CACRC,IAAKC,EACLC,MAAM,UACNC,OAAO,UACPjB,UAAWC,EAAOiB,wBAClBV,QAAS,IAAMW,EAAgBxB,QAGnCU,EAAAe,IAAC7B,EAAiB,CAChB8B,SAAS,OACTC,MAAiB,UAAV1B,EAAoB2B,EAA0BC,EACrDC,mBACAC,WAAS,EACTC,YAAa,CACXC,OAAQ,EACRX,OAAQ,WACRY,UAAW,OACXC,QAAS,wBACTC,gBAA2B,SAAVnC,EAAmB,UAAY,UAChDoC,SAAU,WAEZC,UAAW,CAAEjC,UAAW,oBAAoBG,SAE3CR"}
|
|
1
|
+
{"version":3,"file":"Codebox.js","sources":["../../../../../src/layout/docsComponents/Codebox/Codebox.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Light as SyntaxHighlighter } from 'react-syntax-highlighter'\nimport json from 'react-syntax-highlighter/dist/esm/languages/hljs/json'\nimport * as hljs from 'react-syntax-highlighter/dist/esm/styles/hljs'\nimport styles from './style.module.scss'\nimport SVGLoader from '../../../components/SVGLoader/SVGLoader'\nimport { Copy } from '../../../assets/icons'\nimport { copyToClipboard } from '../../../utils'\n\nSyntaxHighlighter.registerLanguage('json', json)\n\nconst Codebox = ({ code }: { code: string }) => {\n const [theme, setTheme] = useState<'LIGHT' | 'DARK'>('DARK')\n\n return (\n <div className={styles.codebox}>\n <div className={styles.codebox_header}>\n <div\n role=\"button\"\n tabIndex={-1}\n onClick={() => theme !== 'LIGHT' && setTheme('LIGHT')}\n className={`${styles.codebox_header_themeToggle} ${styles.codebox_header_themeToggle_light}`}\n title=\"Light theme\"\n ></div>\n <div\n role=\"button\"\n tabIndex={-1}\n onClick={() => theme !== 'DARK' && setTheme('DARK')}\n className={`${styles.codebox_header_themeToggle} ${styles.codebox_header_themeToggle_dark}`}\n title=\"Dark theme\"\n ></div>\n <SVGLoader\n src={Copy}\n width=\"0.75rem\"\n height=\"0.75rem\"\n className={styles.codebox_header_copyIcon}\n onClick={() => copyToClipboard(code)}\n />\n </div>\n <SyntaxHighlighter\n language=\"json\"\n style={theme === 'LIGHT' ? hljs.stackoverflowLight : hljs.stackoverflowDark}\n showLineNumbers\n wrapLines\n customStyle={{\n margin: 0,\n height: '13.75rem',\n overflowY: 'auto',\n padding: '0.75rem 1rem 0 1.5rem',\n backgroundColor: theme === 'DARK' ? '#455162' : '#F7F7F7',\n fontSize: '0.75rem',\n }}\n lineProps={{ className: 'custom-code-line' }}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n )\n}\n\nexport default Codebox\n"],"names":["SyntaxHighlighter","registerLanguage","json","Codebox","code","theme","setTheme","useState","_jsxs","className","styles","codebox","children","codebox_header","_jsx","role","tabIndex","onClick","codebox_header_themeToggle","codebox_header_themeToggle_light","title","codebox_header_themeToggle_dark","SVGLoader","src","Copy","width","height","codebox_header_copyIcon","copyToClipboard","jsx","language","style","hljs.stackoverflowLight","hljs.stackoverflowDark","showLineNumbers","wrapLines","customStyle","margin","overflowY","padding","backgroundColor","fontSize","lineProps"],"mappings":"4nBASAA,EAAkBC,iBAAiB,OAAQC,GAE3C,MAAMC,EAAU,EAAGC,WACjB,MAAOC,EAAOC,GAAYC,EAA2B,QAErD,OACEC,OAAK,MAAA,CAAAC,UAAWC,EAAOC,QAAOC,SAAA,CAC5BJ,EAAAA,KAAK,MAAA,CAAAC,UAAWC,EAAOG,eAAcD,SAAA,CACnCE,aACEC,KAAK,SACLC,UAAW,EACXC,QAAS,IAAgB,UAAVZ,GAAqBC,EAAS,SAC7CG,UAAW,GAAGC,EAAOQ,8BAA8BR,EAAOS,mCAC1DC,MAAM,gBAERN,aACEC,KAAK,SACLC,UAAW,EACXC,QAAS,IAAgB,SAAVZ,GAAoBC,EAAS,QAC5CG,UAAW,GAAGC,EAAOQ,8BAA8BR,EAAOW,kCAC1DD,MAAM,eAERN,MAACQ,EAAS,CACRC,IAAKC,EACLC,MAAM,UACNC,OAAO,UACPjB,UAAWC,EAAOiB,wBAClBV,QAAS,IAAMW,EAAgBxB,QAGnCU,EAAAe,IAAC7B,EAAiB,CAChB8B,SAAS,OACTC,MAAiB,UAAV1B,EAAoB2B,EAA0BC,EACrDC,mBACAC,WAAS,EACTC,YAAa,CACXC,OAAQ,EACRX,OAAQ,WACRY,UAAW,OACXC,QAAS,wBACTC,gBAA2B,SAAVnC,EAAmB,UAAY,UAChDoC,SAAU,WAEZC,UAAW,CAAEjC,UAAW,oBAAoBG,SAE3CR,MAGN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsAside.js","sources":["../../../../../src/layout/docsComponents/DocsAside/DocsAside.tsx"],"sourcesContent":["import React, { 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 httpStatusCodeOptions: Option[] = httpStatusCodes.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\nconst DocsAside = ({ data }: { data: EndpointData }) => {\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":["httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","String","DocsAside","data","selectedResStatusCode","setSelectedResStatusCode","useState","currentResponse","Object","entries","responses","find","res","jsxs","apiDocsAside","apiDocsAside_title","summary","apiDocsAside_subtitle","apiDocsAside_subtitle_method","method","path","includes","_a","requestBody","content","codeboxSection","codeboxHeader","codeboxTitle","jsx","Codebox","contentKey","keys","_b","JSON","stringify","_e","_d","_c","schema","properties","stringifyRequestBody","length","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","stringifyResponseBody"],"mappings":"mWAQA,MAAMA,EAAkCC,EAAgBC,KAAKC,IAAU,CACrEC,MACEC,EAAAA,KAAK,MAAA,CAAAC,UAAWC,EAAOC,0BAAyBC,SAAA,CAC9CC,EAAAA,IACE,MAAA,CAAAJ,UAAWC,EAAOI,uBAClBC,MAAO,CAAEC,gBAAiBC,EAAkBX,MAE9CO,MAAA,OAAA,CAAAD,SAAON,OAGXY,MAAOC,OAAOb,OAGVc,EAAY,EAAGC,mBACnB,MAAOC,EAAuBC,GAA4BC,EAASrB,EAAsB,IACnFsB,EAAkBC,OAAOC,QAAQN,EAAKO,WACzCvB,KAAI,EAAEC,EAAMe,MAAK,CAAQf,OAAMe,WAC/BQ,MAAMC,GAAQA,EAAIxB,OAASgB,EAAsBJ,QAoBpD,OACEV,EAAOuB,KAAA,QAAA,CAAAtB,UAAWC,EAAOsB,aACvBpB,SAAA,CAAAC,MAAA,KAAA,CAAIJ,UAAWC,EAAOuB,mBAAkBrB,SAAGS,EAAKa,UAChD1B,EAAAA,KAAA,KAAA,CAAIC,UAAWC,EAAOyB,sBAAqBvB,SAAA,CACzCC,cAAMJ,UAAWC,EAAO0B,2CAA2Cf,EAAKgB,OACrEzB,SAAAS,EAAKgB,SACA,IACRxB,EAAAA,IAAO,OAAA,CAAAD,SAAAS,EAAKiB,WAEZ,CAAC,SAAU,OAAOC,SAASlB,EAAKgB,kBAAWG,EAAAnB,aAAI,EAAJA,EAAMoB,kCAAaC,UAC9DlC,EAAAuB,KAAA,MAAA,CAAKtB,UAAWC,EAAOiC,eAAc/B,SAAA,CACnCC,EAAAA,WAAKJ,UAAWC,EAAOkC,cACrBhC,SAAAC,EAAAA,IAAA,KAAA,CAAIJ,UAAWC,EAAOmC,aAAYjC,SAAA,cAGpCC,EAAAiC,IAACC,EAAQ,CAAAzC,KAjCY,oBAC3B,GAAqB,QAAjBkC,EAAAnB,aAAI,EAAJA,EAAMoB,mBAAW,IAAAD,OAAA,EAAAA,EAAEE,QAAS,CAC9B,MAAMM,EAAatB,OAAOuB,KAAwB,QAAnBC,EAAA7B,eAAAA,EAAMoB,mBAAa,IAAAS,OAAA,EAAAA,EAAAR,SAAS,GAC3D,OAAOS,KAAKC,UAAwD,QAA9CC,EAAsC,QAAtCC,EAAmB,QAAnBC,EAAAlC,aAAA,EAAAA,EAAMoB,mBAAa,IAAAc,OAAA,EAAAA,EAAAb,QAAQM,UAAW,IAAAM,OAAA,EAAAA,EAAEE,cAAM,IAAAH,OAAA,EAAAA,EAAEI,WAAY,KAAM,EACzF,CACC,MAAO,
|
|
1
|
+
{"version":3,"file":"DocsAside.js","sources":["../../../../../src/layout/docsComponents/DocsAside/DocsAside.tsx"],"sourcesContent":["import React, { 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 httpStatusCodeOptions: Option[] = httpStatusCodes.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\nconst DocsAside = ({ data }: { data: EndpointData }) => {\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":["httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","String","DocsAside","data","selectedResStatusCode","setSelectedResStatusCode","useState","currentResponse","Object","entries","responses","find","res","jsxs","apiDocsAside","apiDocsAside_title","summary","apiDocsAside_subtitle","apiDocsAside_subtitle_method","method","path","includes","_a","requestBody","content","codeboxSection","codeboxHeader","codeboxTitle","jsx","Codebox","contentKey","keys","_b","JSON","stringify","_e","_d","_c","schema","properties","stringifyRequestBody","length","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","stringifyResponseBody"],"mappings":"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"}
|