@digi-frontend/dgate-api-documentation 1.0.83 → 1.0.85
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/src/components/MethodAccordion/MethodAccordion.js +1 -1
- package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
- package/dist/src/components/table/table.js +1 -1
- package/dist/src/components/table/table.js.map +1 -1
- package/dist/src/helpers/layout.helper.js +1 -1
- package/dist/src/helpers/layout.helper.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
- package/dist/src/layout/layout.js +1 -1
- package/dist/src/layout/layout.js.map +1 -1
- package/dist/styles.css +45 -34
- package/dist/types/helpers/layout.helper.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/MethodAccordion/MethodAccordion.tsx +8 -1
- package/src/components/table/table.tsx +2 -2
- package/src/helpers/layout.helper.ts +71 -9
- package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +11 -4
- package/src/layout/docsComponents/DocsContent/EndpointPage/style.scss +60 -55
- package/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss +14 -2
- package/src/layout/layout.tsx +1 -5
- package/variables.txt +1 -1
|
@@ -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","_j","_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,2 +1,2 @@
|
|
|
1
|
-
import{__rest as e}from"../../node_modules/tslib/tslib.es6.js";const s=e=>{var s,t,
|
|
1
|
+
import{__rest as e}from"../../node_modules/tslib/tslib.es6.js";const s=(e,s)=>e.replace(/^#\//,"").split("/").reduce(((e,s)=>null==e?void 0:e[s]),s),t=e=>{var s,t,o,i;if(e.components&&e.components.securitySchemes){const n=null===(s=Object.keys(e.components.securitySchemes))||void 0===s?void 0:s.at(0);n&&(e.components.securitySchemes[n].type=null===(i=null===(o=null===(t=null==e?void 0:e.components)||void 0===t?void 0:t.securitySchemes)||void 0===o?void 0:o[n])||void 0===i?void 0:i.type)}else e.components=Object.assign({securitySchemes:{Public:{type:"http",scheme:"public"}}},e.components||{});return e.tags||(e.tags=[]),Object.assign(Object.assign({},e),{paths:n(e)})},o=e=>{var s,t,o,n;const i=Object.assign(Object.assign({},e),{paths:c(e.paths)});if(i.components&&i.components.securitySchemes){const e=null===(s=Object.keys(i.components.securitySchemes))||void 0===s?void 0:s.at(0);e&&(i.components.securitySchemes[e].type.toLowerCase()=="APIKEY".toLowerCase()&&(i.components.securitySchemes[e].in=i.components.securitySchemes[e].in),i.components.securitySchemes[e].type=null===(n=null===(o=null===(t=null==i?void 0:i.components)||void 0===t?void 0:t.securitySchemes)||void 0===o?void 0:o[e])||void 0===n?void 0:n.type)}return i},n=e=>{const t=e.paths;return Object.entries(t).map((([t,o])=>({path:t,methods:Object.entries(o).map((([t,o])=>{var n,i,c,r,l,d;const a=Object.assign(Object.assign({},o),{type:t,tags:o.tags||[],summary:o.summary||"",responses:Object.entries(o.responses).map((([t,o])=>{var n,i,c,r,l;const d=Object.keys(o.content||{})[0];let a=null!==(n=null==o?void 0:o.headers)&&void 0!==n?n:{};Object.keys(a).map((e=>{var s,t,o,n;let i=a[e];(null==i?void 0:i.schema)&&(null===(s=null==i?void 0:i.schema)||void 0===s?void 0:s.type)&&"array"!=(null===(t=null==i?void 0:i.schema)||void 0===t?void 0:t.type)&&(null===(n=null===(o=a[e])||void 0===o?void 0:o.schema)||void 0===n||delete n.items)}));let p=null===(c=null===(i=o.content)||void 0===i?void 0:i[d])||void 0===c?void 0:c.schema;if(null==p?void 0:p.$ref)p=s(null==p?void 0:p.$ref,e);else if("array"==(null==p?void 0:p.type)&&(null===(r=null==p?void 0:p.items)||void 0===r?void 0:r.$ref)){const t=s(p.items.$ref,e);p=Object.assign(Object.assign({},p),{items:t})}return{code:t,headers:a,content:{contentType:d,schema:Object.assign(Object.assign({},p),{properties:JSON.stringify((null==p?void 0:p.properties)||(null===(l=null==p?void 0:p.items)||void 0===l?void 0:l.properties))})}}}))});if(a.responses.find((e=>"200"==e.code))||a.responses.push({code:"200",content:{contentType:"application/json",schema:{}},headers:{}}),(null==o?void 0:o.parameters)||(a.parameters=[]),"get"!=t.toLowerCase()){const t=Object.keys((null===(n=null==o?void 0:o.requestBody)||void 0===n?void 0:n.content)||{})[0];let p=null===(r=null===(c=null===(i=null==o?void 0:o.requestBody)||void 0===i?void 0:i.content)||void 0===c?void 0:c[t])||void 0===r?void 0:r.schema;(null==p?void 0:p.$ref)?p=s(p.$ref,e):"array"===(null==p?void 0:p.type)&&(null===(l=p.items)||void 0===l?void 0:l.$ref)&&(p=Object.assign(Object.assign({},p),{items:s(p.items.$ref,e)}));const u=p?{content:{contentType:t,schema:Object.assign(Object.assign({},p),{properties:JSON.stringify((null==p?void 0:p.properties)||(null===(d=null==p?void 0:p.items)||void 0===d?void 0:d.properties))})}}:{content:{contentType:"application/json",schema:{properties:"{}",type:"object"}}};a.requestBody=u}return a}))})))},i=(e,s)=>{var t,o;if(!(null==e?void 0:e.schema)||!(null===(t=null==e?void 0:e.schema)||void 0===t?void 0:t.properties))return{};return JSON.parse(null===(o=null==e?void 0:e.schema)||void 0===o?void 0:o.properties)},c=s=>s.reduce(((s,{path:t,methods:o})=>(s[t]=o.reduce(((s,t)=>{var{type:o,tags:n,responses:c,summary:r,requestBody:l}=t,d=e(t,["type","tags","responses","summary","requestBody"]);let a=structuredClone(d||{});a&&a.parameters&&a.parameters.map((e=>{var s,t,o;return e&&(null===(s=null==e?void 0:e.schema)||void 0===s?void 0:s.items)&&"array"==(null===(o=null===(t=null==e?void 0:e.schema)||void 0===t?void 0:t.items)||void 0===o?void 0:o.type)&&(e.schema.items.items={}),e})),s[o]=Object.assign(Object.assign({},a),{tags:n,summary:r,responses:c.reduce(((e,{code:s,content:t,headers:o})=>{const n={};if(o)for(const[e,s]of Object.entries(o))n[e]={description:s.description||"",required:s.required||!1,schema:s.schema||{}};return e[s]={description:"Success",content:t.contentType?{[t.contentType]:{schema:Object.assign(Object.assign({},t.schema),{properties:i(t)})}}:{},headers:n},e}),{})});const p="get"!==o?JSON.parse(l.content.schema.properties):{};return"get"!==o&&(s[o].requestBody={content:{[l.content.contentType]:{schema:Object.assign(Object.assign({},l.content.schema),{properties:p})}}}),s}),{}),s)),{});export{t as transformOpenApiObject,o as transformOpenApiObjectToOrigin,c as transformPathsArrayToOrigin,n as transformPathsToArray};
|
|
2
2
|
//# sourceMappingURL=layout.helper.js.map
|
|
@@ -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\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 }\n }\n\n if (!openApiJson.tags) {\n openApiJson.tags = []\n }\n\n return {\n ...openApiJson,\n paths: transformPathsToArray(openApiJson.paths),\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 = (paths: OpenAPIFile['paths']): TransformedPathsArray | any => {\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 const headers = !codeProps?.headers ? {} : codeProps.headers\n return {\n code,\n headers,\n content: {\n contentType,\n schema: {\n ...codeProps.content?.[contentType]?.schema,\n properties: JSON.stringify(codeProps.content?.[contentType]?.schema?.properties),\n },\n },\n }\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 const reqSchema = methodProps?.requestBody?.content?.schema\n const requestBodyData = methodProps?.requestBody?.content?.schema?.properties\n ? {\n content: {\n contentType,\n schema: {\n ...reqSchema,\n properties: reqSchema?.properties ? JSON.stringify(reqSchema?.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 methodAcc[type] = {\n ...rest,\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":["transformOpenApiObject","openApiJson","components","securitySchemes","authKey","_a","Object","keys","at","type","_d","_c","_b","Public","scheme","tags","assign","paths","transformPathsToArray","transformOpenApiObjectToOrigin","values","object","transformPathsArrayToOrigin","toLowerCase","in","entries","map","path","methods","method","methodProps","obj","summary","responses","code","codeProps","contentType","content","headers","schema","properties","JSON","stringify","_e","parameters","requestBody","reqSchema","requestBodyData","validateBodyForResponse","parse","reduce","acc","methodAcc","rest","__rest","respAcc","formattedHeaders","key","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,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"../../../../../_virtual/jsx-runtime.js";import s from"../../../../components/SVGLoader/SVGLoader.js";import l from"../../../../assets/icons/DownArrow.svg.js";import i from"../../../../assets/icons/CopySticker.svg.js";import a from"../../../../assets/icons/RequestOption.svg.js";import t from"../../../../assets/icons/ArrowBack.svg.js";import{d}from"../../../../../_virtual/index.js";import{useState as r,useEffect as
|
|
1
|
+
import{j as e}from"../../../../../_virtual/jsx-runtime.js";import s from"../../../../components/SVGLoader/SVGLoader.js";import l from"../../../../assets/icons/DownArrow.svg.js";import i from"../../../../assets/icons/CopySticker.svg.js";import a from"../../../../assets/icons/RequestOption.svg.js";import t from"../../../../assets/icons/ArrowBack.svg.js";import{d}from"../../../../../_virtual/index.js";import{useState as r,useMemo as o,useEffect as n}from"react";import{handleStatusColor as c}from"../../../../helpers/methodAccordion.helper.js";import{httpStatusCodes as h}from"../../../../constants/index.js";import m from"../../../../components/Tooltip/Tooltip.js";import{useSectionToggle as v,SectionEnum as u}from"../../../../context/SectionToggleContext.js";import{capitalizeFirstLetter as p}from"../../../../utils/index.js";const j=({data:j,setActiveType:x,setActiveItemData:b})=>{var N,y,f;const[C,g]=r("header"),{toggleSection:w}=v(),S=o((()=>{var e,s,l;const i=null===(l=null===(s=null===(e=j.api)||void 0===e?void 0:e.servers)||void 0===s?void 0:s.filter((e=>"/"!==e.url))[0])||void 0===l?void 0:l.url,a=null==j?void 0:j.path.split("/").slice(2);return`${i}${(null==a?void 0:a.length)?"/"+a.join("/"):""}`}),[j]),T=h.map((s=>({label:e.jsxs("div",{className:"statusCodeOptionContainer",children:[e.jsx("div",{className:"statusCodeOptionCircle",style:{backgroundColor:c(s)}}),e.jsx("span",{children:s})]}),value:s}))),[k,q]=r(null),[O,R]=r(T[4]),[A,E]=r({});return((null==j?void 0:j.parameters)||[]).filter((e=>{var s;return(null===(s=e.in)||void 0===s?void 0:s.toLowerCase())===C.toLowerCase()})),n((()=>{if(O&&O.value){const e=null==j?void 0:j.responses[O.value];E(null==e?void 0:e.headers)}}),[O]),e.jsxs("div",{className:"api-details-expanded",children:[e.jsxs("div",{className:"test-button",children:[e.jsx("button",{className:"back-button",onClick:()=>{w(j.api.apiSpecId,[{type:u.OVERVIEW,setTo:!0}],{resetOthers:!0,filterKeys:[u.RESOURCE]}),x("OVERVIEW"),b(j.api)},children:e.jsx(s,{src:t})}),e.jsx(m,{content:"Comming soon",children:e.jsx("button",{className:"disabled",children:"Test"})})]}),e.jsx("h3",{children:j.api.title}),e.jsx("h1",{className:"api-title",children:null==j?void 0:j.summary}),e.jsxs("div",{className:"url-box",children:[e.jsxs("div",{className:"url-box_text-container",children:[e.jsx("span",{className:`method-label ${null===(N=null==j?void 0:j.method)||void 0===N?void 0:N.toLowerCase()}`,children:j.method}),e.jsx("span",{className:"url-text",children:S})]}),e.jsx("span",{className:"copy-icon",onClick:()=>navigator.clipboard.writeText(S),children:e.jsx(s,{src:i})})]}),e.jsx("p",{className:"api-desc",children:(null==j?void 0:j.description)||"No Description"}),e.jsx("h3",{children:"Request"}),e.jsxs("div",{className:"request-section",children:[e.jsx("div",{className:"request-tabs",children:["header","path","query"].map((l=>e.jsxs("button",{className:"tab "+(C===l?"active":""),onClick:()=>g(l),children:[e.jsx(s,{src:a,className:"icon-left"}),e.jsx("span",{className:"tab-label",children:"requestBody"===l?"Request Body":l.charAt(0).toUpperCase()+l.slice(1)})]},l)))}),e.jsx("div",{className:"table-wrapper",children:e.jsxs("table",{className:"param-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"head-table-label",children:"Parameter Name"}),e.jsx("th",{className:"head-table-label",children:"Required"}),e.jsx("th",{className:"head-table-label",children:"Type"}),e.jsx("th",{className:"head-table-label",children:"Enum"}),e.jsx("th",{className:"head-table-label",children:"Description"})]})}),e.jsx("tbody",{children:null===(y=j.parameters)||void 0===y?void 0:y.filter((e=>{var s;return(null===(s=e.in)||void 0===s?void 0:s.toLowerCase())===C.toLowerCase()})).map(((i,a)=>{var t,d,r,o,n,c,h;return e.jsxs("tr",{children:[e.jsx("td",{children:i.name}),e.jsx("td",{children:i.required?"True":"False"}),e.jsxs("td",{style:{textTransform:"capitalize"},children:[e.jsx("span",{children:(null===(t=null==i?void 0:i.schema)||void 0===t?void 0:t.type)||"-"}),"array"===(null===(d=null==i?void 0:i.schema)||void 0===d?void 0:d.type)&&(null===(o=null===(r=null==i?void 0:i.schema)||void 0===r?void 0:r.items)||void 0===o?void 0:o.type)&&e.jsxs("span",{style:{color:"#616874",fontSize:"0.75rem"},children:["_",p(null===(c=null===(n=i.schema)||void 0===n?void 0:n.items)||void 0===c?void 0:c.type)]})]}),e.jsx("td",{children:Array.isArray(null===(h=i.schema)||void 0===h?void 0:h.enum)?i.schema.enum.join(" / "):"-"}),e.jsxs("td",{className:"desc-cell",children:[e.jsx("div",{className:"desc-text "+(k===a?"expanded":""),children:i.description||"No description"}),e.jsx("button",{className:"desc-toggle",onClick:()=>q(k===a?null:a),children:e.jsx(s,{src:l,className:k===a?"rotated":""})})]})]},a)}))})]})})]}),e.jsxs("div",{className:"response-section",children:[e.jsx("h3",{children:"Response"}),e.jsxs("div",{children:[e.jsx("div",{style:{height:"0.5rem",width:"7.5rem",marginLeft:"auto"},children:(null===(f=Object.keys((null==j?void 0:j.responses)||{}))||void 0===f?void 0:f.length)>0&&e.jsx("div",{className:"codeboxSection",children:e.jsx("div",{className:"codeboxHeader",children:e.jsx(d.SelectGroup,{size:"small",withSearch:!1,isMultiple:!1,clearable:!1,placeholder:"200",options:[{list:T}],value:O,onChange:e=>{R(e)}})})})}),e.jsxs("button",{className:"tab active ",children:[e.jsx(s,{src:a,className:"icon-left"}),"Header"]})]}),e.jsx("div",{className:"table-wrapper",children:e.jsxs("table",{className:"param-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"head-table-label",children:"Header Name"}),e.jsx("th",{className:"head-table-label",children:"Required"}),e.jsx("th",{className:"head-table-label",children:"Type"}),e.jsx("th",{className:"head-table-label",children:"Enum"}),e.jsx("th",{className:"head-table-label",children:"Description"})]})}),e.jsx("tbody",{children:!!A&&Object.keys(A)&&Object.keys(A).map((s=>{var l,i,a,t,d,r,o,n,c,h,m,v,u,j,x;return e.jsxs("tr",{children:[e.jsx("td",{children:s}),e.jsx("td",{children:null===(l=A[s])||void 0===l?void 0:l.required.toString()}),e.jsxs("td",{style:{textTransform:"capitalize"},children:[e.jsx("span",{children:(null===(a=null===(i=A[s])||void 0===i?void 0:i.schema)||void 0===a?void 0:a.type)||"-"}),"array"===(null===(d=null===(t=A[s])||void 0===t?void 0:t.schema)||void 0===d?void 0:d.type)&&(null===(n=null===(o=null===(r=A[s])||void 0===r?void 0:r.schema)||void 0===o?void 0:o.items)||void 0===n?void 0:n.type)&&e.jsxs("span",{style:{color:"#616874",fontSize:"0.75rem"},children:["_",p(null===(m=null===(h=null===(c=A[s])||void 0===c?void 0:c.schema)||void 0===h?void 0:h.items)||void 0===m?void 0:m.type)]})]}),e.jsx("td",{children:null===(j=null===(u=null===(v=A[s])||void 0===v?void 0:v.schema)||void 0===u?void 0:u.enum)||void 0===j?void 0:j.join("/")}),e.jsx("td",{children:null===(x=A[s])||void 0===x?void 0:x.description})]})}))})]})})]})]})};export{j as EndpointPage};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/EndpointPage/index.tsx"],"sourcesContent":["import SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport {\n ArrowBack,\n CopySticker,\n DownArrowIcon,\n RequestOption,\n} from '../../../../assets/icons/index'\nimport { SelectGroup } from 'digitinary-ui'\nimport { useEffect, useState } from 'react'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { handleStatusColor } from '../../../../helpers/methodAccordion.helper'\nimport { httpStatusCodes } from '../../../../constants/index'\nimport styles from '../../Codebox/style.module.scss'\nimport Tooltip from '../../../../components/Tooltip/Tooltip'\nimport './style.scss'\nimport { SectionEnum, useSectionToggle } from '../../../../../src/context/SectionToggleContext'\nimport { capitalizeFirstLetter } from '../../../../../src/utils'\n\nexport const EndpointPage = ({\n data,\n setActiveType,\n setActiveItemData,\n}: {\n data: EndpointData\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n}) => {\n const [activeTab, setActiveTab] = useState('header')\n const { toggleSection } = useSectionToggle()\n\n const httpStatusCodeOptions = httpStatusCodes.map((code) => ({\n label: (\n <div className={'statusCodeOptionContainer'}>\n <div\n className={'statusCodeOptionCircle'}\n style={{ backgroundColor: handleStatusColor(code) }}\n ></div>\n <span>{code}</span>\n </div>\n ),\n value: code,\n }))\n\n const [expanded, setExpanded] = useState(null)\n const [selectedResStatusCode, setSelectedResStatusCode] = useState(httpStatusCodeOptions[4])\n const [headersList, setHeadersList] = useState({})\n const requestTableData = (data?.parameters || []).filter(\n (param) => param.in?.toLowerCase() === activeTab.toLowerCase()\n )\n\n useEffect(() => {\n if (selectedResStatusCode && selectedResStatusCode.value) {\n const headerObj = data?.responses[selectedResStatusCode.value]\n setHeadersList(headerObj?.headers)\n }\n }, [selectedResStatusCode])\n\n // ? TODO: 'body' should be returned after discussing with PO\n\n return (\n <div className=\"api-details-expanded\">\n <div className=\"test-button\">\n <button\n className=\"back-button\"\n onClick={() => {\n toggleSection(data.api.apiSpecId, [{ type: SectionEnum.OVERVIEW, setTo: true }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE],\n })\n setActiveType('OVERVIEW')\n setActiveItemData(data.api)\n }}\n >\n <SVGLoader src={ArrowBack} />\n </button>\n\n <Tooltip content=\"Comming soon\">\n <button className=\"disabled\">Test</button>\n </Tooltip>\n </div>\n <h3>{data.api.title}</h3>\n <h1 className=\"api-title\">{data?.summary}</h1>\n <div className=\"url-box\">\n <div style={{ textAlign: 'center' }}>\n <span className={`method-label ${data?.method?.toLowerCase()}`}>{data.method}</span>\n <span className=\"url-text\">{data?.path}</span>\n </div>\n <span className=\"icon\" onClick={() => navigator.clipboard.writeText(data?.path)}>\n <SVGLoader src={CopySticker} />\n </span>\n </div>\n\n <p className=\"api-desc\">{data?.description || 'No Description'}</p>\n\n <h3>Request</h3>\n\n <div className=\"request-section\">\n <div className=\"request-tabs\">\n {['header', 'path', 'query'].map((tab) => (\n <button\n key={tab}\n className={`tab ${activeTab === tab ? 'active' : ''}`}\n onClick={() => setActiveTab(tab)}\n >\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n <span className=\"tab-label\">\n {tab === 'requestBody'\n ? 'Request Body'\n : tab.charAt(0).toUpperCase() + tab.slice(1)}\n </span>\n </button>\n ))}\n </div>\n\n {\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Parameter Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {data.parameters\n ?.filter((p) => p.in?.toLowerCase() === activeTab.toLowerCase())\n .map((row, index) => (\n <tr key={index}>\n <td>{row.name}</td>\n <td>{row.required ? 'True' : 'False'}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{row?.schema?.type || '-'}</span>\n {row?.schema?.type === 'array' && row?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(row.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{Array.isArray(row.schema?.enum) ? row.schema.enum.join(' / ') : '-'}</td>\n <td className=\"desc-cell\">\n <div className={`desc-text ${expanded === index ? 'expanded' : ''}`}>\n {row.description || 'No description'}\n </div>\n <button\n className=\"desc-toggle\"\n onClick={() => setExpanded(expanded === index ? null : index)}\n >\n <SVGLoader\n src={DownArrowIcon}\n className={expanded === index ? 'rotated' : ''}\n />\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <div className=\"response-section\">\n <h3>Response</h3>\n\n <div>\n <div style={{ height: '0.5rem', width: '7.5rem', marginLeft: 'auto' }}>\n {Object.keys(data?.responses || {})?.length > 0 && (\n <div className={'codeboxSection'}>\n <div className={`${'codeboxHeader'}`}>\n <SelectGroup\n size=\"small\"\n withSearch={false}\n isMultiple={false}\n clearable={false}\n placeholder=\"200\"\n options={[\n {\n list: httpStatusCodeOptions,\n },\n ]}\n value={selectedResStatusCode}\n onChange={(value) => {\n setSelectedResStatusCode(value)\n }}\n />\n </div>\n </div>\n )}\n </div>\n <button className=\"tab active \">\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n Header\n </button>\n </div>\n\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Header Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {!!headersList &&\n Object.keys(headersList) &&\n Object.keys(headersList).map((key) => (\n <tr>\n <td>{key}</td>\n <td>{headersList[key]?.required.toString()}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{headersList[key]?.schema?.type || '-'}</span>\n {headersList[key]?.schema?.type === 'array' &&\n headersList[key]?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(headersList[key]?.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{headersList[key]?.schema?.enum?.join('/')}</td>\n <td>{headersList[key]?.description}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )\n}\n"],"names":["EndpointPage","data","setActiveType","setActiveItemData","activeTab","setActiveTab","useState","toggleSection","useSectionToggle","httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","jsxs","className","children","_jsx","style","backgroundColor","handleStatusColor","value","expanded","setExpanded","selectedResStatusCode","setSelectedResStatusCode","headersList","setHeadersList","parameters","filter","param","in","_a","toLowerCase","useEffect","headerObj","responses","headers","onClick","api","apiSpecId","type","SectionEnum","OVERVIEW","setTo","resetOthers","filterKeys","RESOURCE","SVGLoader","src","ArrowBack","Tooltip","content","jsx","title","summary","textAlign","method","path","navigator","clipboard","writeText","CopySticker","description","tab","RequestOption","charAt","toUpperCase","slice","_b","p","row","index","name","required","textTransform","schema","_d","_c","items","color","fontSize","capitalizeFirstLetter","_f","_e","Array","isArray","_g","enum","join","DownArrowIcon","height","width","marginLeft","Object","keys","length","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","key","toString","_h","_k","_j","_p","_o","_q"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/EndpointPage/index.tsx"],"sourcesContent":["import SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport {\n ArrowBack,\n CopySticker,\n DownArrowIcon,\n RequestOption,\n} from '../../../../assets/icons/index'\nimport { SelectGroup } from 'digitinary-ui'\nimport { useEffect, useMemo, useState } from 'react'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\nimport { handleStatusColor } from '../../../../helpers/methodAccordion.helper'\nimport { httpStatusCodes } from '../../../../constants/index'\nimport styles from '../../Codebox/style.module.scss'\nimport Tooltip from '../../../../components/Tooltip/Tooltip'\nimport './style.scss'\nimport { SectionEnum, useSectionToggle } from '../../../../../src/context/SectionToggleContext'\nimport { capitalizeFirstLetter } from '../../../../../src/utils'\n\nexport const EndpointPage = ({\n data,\n setActiveType,\n setActiveItemData,\n}: {\n data: EndpointData\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n}) => {\n const [activeTab, setActiveTab] = useState('header')\n const { toggleSection } = useSectionToggle()\n const fullUrl = useMemo(() => {\n // env gateway url + api version(if appended) + context path\n const url = data.api?.servers?.filter((s) => s.url !== '/')[0]?.url\n const pathParts = data?.path.split('/').slice(2) // slice from index 2 to skip the first empty \"\" and \"comments\"\n const fullPath = !!pathParts?.length ? '/' + pathParts.join('/') : '' // this will contain the full path without the context path\n return `${url}${fullPath}`\n }, [data])\n\n const httpStatusCodeOptions = httpStatusCodes.map((code) => ({\n label: (\n <div className={'statusCodeOptionContainer'}>\n <div\n className={'statusCodeOptionCircle'}\n style={{ backgroundColor: handleStatusColor(code) }}\n ></div>\n <span>{code}</span>\n </div>\n ),\n value: code,\n }))\n\n const [expanded, setExpanded] = useState(null)\n const [selectedResStatusCode, setSelectedResStatusCode] = useState(httpStatusCodeOptions[4])\n const [headersList, setHeadersList] = useState({})\n const requestTableData = (data?.parameters || []).filter(\n (param) => param.in?.toLowerCase() === activeTab.toLowerCase()\n )\n\n useEffect(() => {\n if (selectedResStatusCode && selectedResStatusCode.value) {\n const headerObj = data?.responses[selectedResStatusCode.value]\n setHeadersList(headerObj?.headers)\n }\n }, [selectedResStatusCode])\n\n // ? TODO: 'body' should be returned after discussing with PO\n\n return (\n <div className=\"api-details-expanded\">\n <div className=\"test-button\">\n <button\n className=\"back-button\"\n onClick={() => {\n toggleSection(data.api.apiSpecId, [{ type: SectionEnum.OVERVIEW, setTo: true }], {\n resetOthers: true,\n filterKeys: [SectionEnum.RESOURCE],\n })\n setActiveType('OVERVIEW')\n setActiveItemData(data.api)\n }}\n >\n <SVGLoader src={ArrowBack} />\n </button>\n\n <Tooltip content=\"Comming soon\">\n <button className=\"disabled\">Test</button>\n </Tooltip>\n </div>\n <h3>{data.api.title}</h3>\n <h1 className=\"api-title\">{data?.summary}</h1>\n <div className=\"url-box\">\n <div className=\"url-box_text-container\">\n <span className={`method-label ${data?.method?.toLowerCase()}`}>{data.method}</span>\n <span className=\"url-text\">{fullUrl}</span>\n </div>\n <span className=\"copy-icon\" onClick={() => navigator.clipboard.writeText(fullUrl)}>\n <SVGLoader src={CopySticker} />\n </span>\n </div>\n\n <p className=\"api-desc\">{data?.description || 'No Description'}</p>\n\n <h3>Request</h3>\n\n <div className=\"request-section\">\n <div className=\"request-tabs\">\n {['header', 'path', 'query'].map((tab) => (\n <button\n key={tab}\n className={`tab ${activeTab === tab ? 'active' : ''}`}\n onClick={() => setActiveTab(tab)}\n >\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n <span className=\"tab-label\">\n {tab === 'requestBody'\n ? 'Request Body'\n : tab.charAt(0).toUpperCase() + tab.slice(1)}\n </span>\n </button>\n ))}\n </div>\n\n {\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Parameter Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {data.parameters\n ?.filter((p) => p.in?.toLowerCase() === activeTab.toLowerCase())\n .map((row, index) => (\n <tr key={index}>\n <td>{row.name}</td>\n <td>{row.required ? 'True' : 'False'}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{row?.schema?.type || '-'}</span>\n {row?.schema?.type === 'array' && row?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(row.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{Array.isArray(row.schema?.enum) ? row.schema.enum.join(' / ') : '-'}</td>\n <td className=\"desc-cell\">\n <div className={`desc-text ${expanded === index ? 'expanded' : ''}`}>\n {row.description || 'No description'}\n </div>\n <button\n className=\"desc-toggle\"\n onClick={() => setExpanded(expanded === index ? null : index)}\n >\n <SVGLoader\n src={DownArrowIcon}\n className={expanded === index ? 'rotated' : ''}\n />\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <div className=\"response-section\">\n <h3>Response</h3>\n\n <div>\n <div style={{ height: '0.5rem', width: '7.5rem', marginLeft: 'auto' }}>\n {Object.keys(data?.responses || {})?.length > 0 && (\n <div className={'codeboxSection'}>\n <div className={`${'codeboxHeader'}`}>\n <SelectGroup\n size=\"small\"\n withSearch={false}\n isMultiple={false}\n clearable={false}\n placeholder=\"200\"\n options={[\n {\n list: httpStatusCodeOptions,\n },\n ]}\n value={selectedResStatusCode}\n onChange={(value) => {\n setSelectedResStatusCode(value)\n }}\n />\n </div>\n </div>\n )}\n </div>\n <button className=\"tab active \">\n <SVGLoader src={RequestOption} className=\"icon-left\" />\n Header\n </button>\n </div>\n\n <div className=\"table-wrapper\">\n <table className=\"param-table\">\n <thead>\n <tr>\n <th className=\"head-table-label\">Header Name</th>\n <th className=\"head-table-label\">Required</th>\n <th className=\"head-table-label\">Type</th>\n <th className=\"head-table-label\">Enum</th>\n <th className=\"head-table-label\">Description</th>\n </tr>\n </thead>\n <tbody>\n {!!headersList &&\n Object.keys(headersList) &&\n Object.keys(headersList).map((key) => (\n <tr>\n <td>{key}</td>\n <td>{headersList[key]?.required.toString()}</td>\n <td style={{ textTransform: 'capitalize' }}>\n <span>{headersList[key]?.schema?.type || '-'}</span>\n {headersList[key]?.schema?.type === 'array' &&\n headersList[key]?.schema?.items?.type && (\n <span style={{ color: '#616874', fontSize: '0.75rem' }}>\n _{capitalizeFirstLetter(headersList[key]?.schema?.items?.type)}\n </span>\n )}\n </td>\n <td>{headersList[key]?.schema?.enum?.join('/')}</td>\n <td>{headersList[key]?.description}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )\n}\n"],"names":["EndpointPage","data","setActiveType","setActiveItemData","activeTab","setActiveTab","useState","toggleSection","useSectionToggle","fullUrl","useMemo","url","_c","_b","_a","api","servers","filter","s","pathParts","path","split","slice","length","join","httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","jsxs","className","children","_jsx","style","backgroundColor","handleStatusColor","value","expanded","setExpanded","selectedResStatusCode","setSelectedResStatusCode","headersList","setHeadersList","parameters","param","in","toLowerCase","useEffect","headerObj","responses","headers","onClick","apiSpecId","type","SectionEnum","OVERVIEW","setTo","resetOthers","filterKeys","RESOURCE","SVGLoader","src","ArrowBack","jsx","Tooltip","content","title","summary","method","navigator","clipboard","writeText","CopySticker","description","tab","RequestOption","charAt","toUpperCase","p","row","index","name","required","textTransform","schema","_d","items","color","fontSize","capitalizeFirstLetter","_f","_e","Array","isArray","_g","enum","DownArrowIcon","height","width","marginLeft","Object","keys","SelectGroup","size","withSearch","isMultiple","clearable","placeholder","options","list","onChange","key","toString","_h","_k","_j","_p","_o","_q"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"../../_virtual/jsx-runtime.js";import{useState as t,useEffect as o}from"react";import{d as i}from"../../_virtual/index.js";import r from"../components/MethodAccordion/MethodAccordion.js";import s from"./layout.module.css.js";import n from"../components/InfoForm/InfoForm.js";import a from"../components/SectionHead/SectionHead.js";import{transformOpenApiObject as l,transformOpenApiObjectToOrigin as d}from"../helpers/layout.helper.js";import m from"../components/LivePreview/LivePreview.js";import{useFormik as c,FormikProvider as u}from"../../node_modules/formik/dist/formik.esm.js";import{schemaValidation as h}from"../validator/form.scheme.js";import{methodColorMapping as p}from"../constants/index.js";import v from"../components/dialog/index.js";const j=({openApiJson:j,handleSave:x,setIsFormDirty:f,openApiErrors:g})=>{const S=structuredClone(j),y=l(S),A=c({initialValues:structuredClone(y),validationSchema:h,validateOnMount:!0,onSubmit:(e,{validateForm:t,resetForm:o,setSubmitting:i})=>{try{const i=d(e);x(i),o({values:e}),t(e)}catch(e){i(!1)}}}),{dirty:b,isValid:F,isSubmitting:C,values:N,setFieldValue:w,handleSubmit:H,errors:P}=A,[$,_]=t(!1),[D,I]=t(null);return o((()=>{f&&f(b)}),[b]),
|
|
1
|
+
import{j as e}from"../../_virtual/jsx-runtime.js";import{useState as t,useEffect as o}from"react";import{d as i}from"../../_virtual/index.js";import r from"../components/MethodAccordion/MethodAccordion.js";import s from"./layout.module.css.js";import n from"../components/InfoForm/InfoForm.js";import a from"../components/SectionHead/SectionHead.js";import{transformOpenApiObject as l,transformOpenApiObjectToOrigin as d}from"../helpers/layout.helper.js";import m from"../components/LivePreview/LivePreview.js";import{useFormik as c,FormikProvider as u}from"../../node_modules/formik/dist/formik.esm.js";import{schemaValidation as h}from"../validator/form.scheme.js";import{methodColorMapping as p}from"../constants/index.js";import v from"../components/dialog/index.js";const j=({openApiJson:j,handleSave:x,setIsFormDirty:f,openApiErrors:g})=>{const S=structuredClone(j),y=l(S),A=c({initialValues:structuredClone(y),validationSchema:h,validateOnMount:!0,onSubmit:(e,{validateForm:t,resetForm:o,setSubmitting:i})=>{try{const i=d(e);x(i),o({values:e}),t(e)}catch(e){i(!1)}}}),{dirty:b,isValid:F,isSubmitting:C,values:N,setFieldValue:w,handleSubmit:H,errors:P}=A,[$,_]=t(!1),[D,I]=t(null);return o((()=>{f&&f(b)}),[b]),e.jsxs("div",{className:s.docsLayout,children:[b&&e.jsx(i.Alert,{className:s.apiDocAlert,color:"warning",severity:"warning",children:"There are changes you made may not be saved"}),e.jsxs("div",{className:s.layoutContainer,children:[e.jsxs("div",{className:`${s.editorSide} ${s.docSide}`,children:[e.jsx(a,{className:s.editorSectionHead_title,text:e.jsxs("div",{className:s.editorSectionHead_content,children:["API Documentation",e.jsx(i.Button,{className:s.methodForm_submitBtn,size:"medium",fullWidth:!1,type:"submit",variant:"contained",color:"primary",onClick:()=>_(!0),disabled:!F||C||!b,children:"Save"})]})}),e.jsx(u,{value:A,children:e.jsx(n,{})}),e.jsx(a,{className:s.editorSectionHead,text:"Endpoints"}),e.jsx(u,{value:A,children:N.paths.map(((t,o)=>e.jsx(e.Fragment,{children:t.methods.sort(((e,t)=>p[e.type].order-p[t.type].order)).map(((i,s)=>{var n,a,l;return e.jsx(r,{tags:N.tags,method:i,path:t.path,setFieldValue:(e,t)=>{w(`paths[${o}].methods[${s}].${e}`,t)},isOpen:D===s,setIsOpen:e=>I(e?s:null),errors:null===(l=null===(a=null===(n=A.errors.paths)||void 0===n?void 0:n[o])||void 0===a?void 0:a.methods)||void 0===l?void 0:l[s]})}))})))})]}),e.jsx("div",{className:`${s.livePreviewSide} ${s.docSide}`,children:y&&e.jsx(u,{value:A,children:e.jsx(m,{transformedData:y,openApiErrors:g})})})]}),e.jsx(v,{status:"warning",content:e.jsxs(e.Fragment,{children:[e.jsx("h5",{style:{fontWeight:600,fontSize:"1.5rem",lineHeight:"1.875rem",color:"#FAAD14",textAlign:"center",margin:0},children:"Publish Changes"}),e.jsx("p",{style:{textAlign:"center",fontWeight:400,fontSize:"1rem",lineHeight:"1.4375rem"},children:"Are you sure to Publish the changes?"})]}),onSubmit:{onClick:()=>{H(),_(!1)},text:"Publish",color:"warning",fullWidth:!0},onCancel:{text:"Cancel",color:"action",fullWidth:!0,variant:"outlined"},onClose:()=>_(!1),open:$})]})};export{j as default};
|
|
2
2
|
//# sourceMappingURL=layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sources":["../../../src/layout/layout.tsx"],"sourcesContent":["import { JSX, useEffect, useState } from 'react'\nimport { Alert, Button } from 'digitinary-ui'\nimport MethodsAccordion from '../components/MethodAccordion/MethodAccordion'\nimport styles from './layout.module.css'\nimport InfoForm from '../components/InfoForm/InfoForm'\nimport SectionHead from '../components/SectionHead/SectionHead'\nimport { transformOpenApiObject, transformOpenApiObjectToOrigin } from '../helpers/layout.helper'\nimport { OpenAPIFile } from '../types/openApi'\nimport LivePreview from '../components/LivePreview/LivePreview'\nimport { FormikProvider, useFormik } from 'formik'\nimport { schemaValidation } from '../validator/form.scheme'\nimport { TransformedOpenApi } from '@entities/transformedOpenApi'\nimport { methodColorMapping } from '../constants/index'\nimport CommonDialog from '../components/dialog'\n\ninterface ILayoutProps {\n openApiJson?: OpenAPIFile\n handleSave?: (values: unknown) => unknown\n setIsFormDirty?: any\n openApiErrors?: any\n}\n\nconst Layout = ({\n openApiJson,\n handleSave,\n setIsFormDirty,\n openApiErrors,\n}: ILayoutProps): JSX.Element => {\n const clonedOpenApiJson = structuredClone(openApiJson)\n const transformedOpenApi = transformOpenApiObject(clonedOpenApiJson)\n const formik = useFormik<TransformedOpenApi>({\n initialValues: structuredClone(transformedOpenApi),\n validationSchema: schemaValidation,\n validateOnMount: true,\n onSubmit: (values, { validateForm, resetForm, setSubmitting }) => {\n // Handle save logic\n try {\n const originalOpenApiForm = transformOpenApiObjectToOrigin(values)\n handleSave(originalOpenApiForm)\n resetForm({\n values: values, // You can reset it to the same values if you want\n })\n\n validateForm(values)\n } catch (err) {\n setSubmitting(false)\n }\n },\n })\n const { dirty, isValid, isSubmitting, values, setFieldValue, handleSubmit, errors } = formik\n const [isPublishDialogOpen, setIsPublishDialogOpen] = useState(false)\n const [openMethodIndex, setOpenMethodIndex] = useState<number | null>(null)\n\n useEffect(() => {\n if (setIsFormDirty) {\n setIsFormDirty(dirty)\n }\n }, [dirty])\n\n // TODO: keep it here until production\n useEffect(() => {\n console.log({ values, errors })\n }, [values])\n\n return (\n <div className={styles.docsLayout}>\n {dirty && (\n <Alert className={styles.apiDocAlert} color=\"warning\" severity=\"warning\">\n There are changes you made may not be saved\n </Alert>\n )}\n <div className={styles.layoutContainer}>\n <div className={`${styles.editorSide} ${styles.docSide}`}>\n <SectionHead\n className={styles.editorSectionHead_title}\n text={\n <div className={styles.editorSectionHead_content}>\n API Documentation\n <Button\n className={styles.methodForm_submitBtn}\n size=\"medium\"\n fullWidth={false}\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => setIsPublishDialogOpen(true)}\n disabled={!isValid || isSubmitting || !dirty}\n >\n Save\n </Button>\n </div>\n }\n />\n <FormikProvider value={formik}>\n <InfoForm />\n </FormikProvider>\n <SectionHead className={styles.editorSectionHead} text=\"Endpoints\" />\n <FormikProvider value={formik}>\n {values.paths.map((path, pathIndex) => (\n <>\n {path.methods\n .sort(\n (a, b) => methodColorMapping[a.type].order - methodColorMapping[b.type].order\n )\n .map((method, methodIndex) => (\n <MethodsAccordion\n tags={values.tags}\n method={method}\n path={path.path}\n setFieldValue={(key, value) => {\n const h = `paths[${pathIndex}].methods[${methodIndex}].${key}`\n setFieldValue(h, value)\n }}\n isOpen={openMethodIndex === methodIndex}\n setIsOpen={(open) => setOpenMethodIndex(open ? methodIndex : null)}\n errors={(formik.errors.paths?.[pathIndex] as any)?.methods?.[methodIndex]}\n />\n ))}\n </>\n ))}\n </FormikProvider>\n </div>\n <div className={`${styles.livePreviewSide} ${styles.docSide}`}>\n {transformedOpenApi && (\n <FormikProvider value={formik}>\n <LivePreview transformedData={transformedOpenApi} openApiErrors={openApiErrors} />\n </FormikProvider>\n )}\n </div>\n </div>\n <CommonDialog\n status=\"warning\"\n content={\n <>\n <h5\n style={{\n fontWeight: 600,\n fontSize: '1.5rem',\n lineHeight: '1.875rem',\n color: '#FAAD14',\n textAlign: 'center',\n margin: 0,\n }}\n >\n Publish Changes\n </h5>\n <p\n style={{\n textAlign: 'center',\n fontWeight: 400,\n fontSize: '1rem',\n lineHeight: '1.4375rem',\n }}\n >\n Are you sure to Publish the changes?\n </p>\n </>\n }\n onSubmit={{\n onClick: () => {\n handleSubmit()\n setIsPublishDialogOpen(false)\n },\n text: 'Publish',\n color: 'warning',\n fullWidth: true,\n }}\n onCancel={{\n text: 'Cancel',\n color: 'action',\n fullWidth: true,\n variant: 'outlined',\n }}\n onClose={() => setIsPublishDialogOpen(false)}\n open={isPublishDialogOpen}\n />\n </div>\n )\n}\n\nexport default Layout\n"],"names":["Layout","openApiJson","handleSave","setIsFormDirty","openApiErrors","clonedOpenApiJson","structuredClone","transformedOpenApi","transformOpenApiObject","formik","useFormik","initialValues","validationSchema","schemaValidation","validateOnMount","onSubmit","values","validateForm","resetForm","setSubmitting","originalOpenApiForm","transformOpenApiObjectToOrigin","err","dirty","isValid","isSubmitting","setFieldValue","handleSubmit","errors","isPublishDialogOpen","setIsPublishDialogOpen","useState","openMethodIndex","setOpenMethodIndex","useEffect","console","log","_jsxs","jsxs","className","styles","docsLayout","children","_jsx","Alert","apiDocAlert","color","severity","layoutContainer","editorSide","docSide","SectionHead","editorSectionHead_title","text","editorSectionHead_content","Button","methodForm_submitBtn","size","fullWidth","type","variant","onClick","disabled","FormikProvider","value","InfoForm","jsx","editorSectionHead","paths","map","path","pathIndex","_Fragment","methods","sort","a","b","methodColorMapping","order","method","methodIndex","MethodsAccordion","tags","key","isOpen","setIsOpen","open","_b","_a","livePreviewSide","LivePreview","transformedData","CommonDialog","status","content","style","fontWeight","fontSize","lineHeight","textAlign","margin","onCancel","onClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout.js","sources":["../../../src/layout/layout.tsx"],"sourcesContent":["import { JSX, useEffect, useState } from 'react'\nimport { Alert, Button } from 'digitinary-ui'\nimport MethodsAccordion from '../components/MethodAccordion/MethodAccordion'\nimport styles from './layout.module.css'\nimport InfoForm from '../components/InfoForm/InfoForm'\nimport SectionHead from '../components/SectionHead/SectionHead'\nimport { transformOpenApiObject, transformOpenApiObjectToOrigin } from '../helpers/layout.helper'\nimport { OpenAPIFile } from '../types/openApi'\nimport LivePreview from '../components/LivePreview/LivePreview'\nimport { FormikProvider, useFormik } from 'formik'\nimport { schemaValidation } from '../validator/form.scheme'\nimport { TransformedOpenApi } from '@entities/transformedOpenApi'\nimport { methodColorMapping } from '../constants/index'\nimport CommonDialog from '../components/dialog'\n\ninterface ILayoutProps {\n openApiJson?: OpenAPIFile\n handleSave?: (values: unknown) => unknown\n setIsFormDirty?: any\n openApiErrors?: any\n}\n\nconst Layout = ({\n openApiJson,\n handleSave,\n setIsFormDirty,\n openApiErrors,\n}: ILayoutProps): JSX.Element => {\n const clonedOpenApiJson = structuredClone(openApiJson)\n const transformedOpenApi = transformOpenApiObject(clonedOpenApiJson)\n const formik = useFormik<TransformedOpenApi>({\n initialValues: structuredClone(transformedOpenApi),\n validationSchema: schemaValidation,\n validateOnMount: true,\n onSubmit: (values, { validateForm, resetForm, setSubmitting }) => {\n // Handle save logic\n try {\n const originalOpenApiForm = transformOpenApiObjectToOrigin(values)\n handleSave(originalOpenApiForm)\n resetForm({\n values: values, // You can reset it to the same values if you want\n })\n\n validateForm(values)\n } catch (err) {\n setSubmitting(false)\n }\n },\n })\n const { dirty, isValid, isSubmitting, values, setFieldValue, handleSubmit, errors } = formik\n const [isPublishDialogOpen, setIsPublishDialogOpen] = useState(false)\n\n const [openMethodIndex, setOpenMethodIndex] = useState<number | null>(null)\n\n useEffect(() => {\n if (setIsFormDirty) {\n setIsFormDirty(dirty)\n }\n }, [dirty])\n\n return (\n <div className={styles.docsLayout}>\n {dirty && (\n <Alert className={styles.apiDocAlert} color=\"warning\" severity=\"warning\">\n There are changes you made may not be saved\n </Alert>\n )}\n <div className={styles.layoutContainer}>\n <div className={`${styles.editorSide} ${styles.docSide}`}>\n <SectionHead\n className={styles.editorSectionHead_title}\n text={\n <div className={styles.editorSectionHead_content}>\n API Documentation\n <Button\n className={styles.methodForm_submitBtn}\n size=\"medium\"\n fullWidth={false}\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => setIsPublishDialogOpen(true)}\n disabled={!isValid || isSubmitting || !dirty}\n >\n Save\n </Button>\n </div>\n }\n />\n <FormikProvider value={formik}>\n <InfoForm />\n </FormikProvider>\n <SectionHead className={styles.editorSectionHead} text=\"Endpoints\" />\n <FormikProvider value={formik}>\n {values.paths.map((path, pathIndex) => (\n <>\n {path.methods\n .sort(\n (a, b) => methodColorMapping[a.type].order - methodColorMapping[b.type].order\n )\n .map((method, methodIndex) => (\n <MethodsAccordion\n tags={values.tags}\n method={method}\n path={path.path}\n setFieldValue={(key, value) => {\n const h = `paths[${pathIndex}].methods[${methodIndex}].${key}`\n setFieldValue(h, value)\n }}\n isOpen={openMethodIndex === methodIndex}\n setIsOpen={(open) => setOpenMethodIndex(open ? methodIndex : null)}\n errors={(formik.errors.paths?.[pathIndex] as any)?.methods?.[methodIndex]}\n />\n ))}\n </>\n ))}\n </FormikProvider>\n </div>\n <div className={`${styles.livePreviewSide} ${styles.docSide}`}>\n {transformedOpenApi && (\n <FormikProvider value={formik}>\n <LivePreview transformedData={transformedOpenApi} openApiErrors={openApiErrors} />\n </FormikProvider>\n )}\n </div>\n </div>\n <CommonDialog\n status=\"warning\"\n content={\n <>\n <h5\n style={{\n fontWeight: 600,\n fontSize: '1.5rem',\n lineHeight: '1.875rem',\n color: '#FAAD14',\n textAlign: 'center',\n margin: 0,\n }}\n >\n Publish Changes\n </h5>\n <p\n style={{\n textAlign: 'center',\n fontWeight: 400,\n fontSize: '1rem',\n lineHeight: '1.4375rem',\n }}\n >\n Are you sure to Publish the changes?\n </p>\n </>\n }\n onSubmit={{\n onClick: () => {\n handleSubmit()\n setIsPublishDialogOpen(false)\n },\n text: 'Publish',\n color: 'warning',\n fullWidth: true,\n }}\n onCancel={{\n text: 'Cancel',\n color: 'action',\n fullWidth: true,\n variant: 'outlined',\n }}\n onClose={() => setIsPublishDialogOpen(false)}\n open={isPublishDialogOpen}\n />\n </div>\n )\n}\n\nexport default Layout\n"],"names":["Layout","openApiJson","handleSave","setIsFormDirty","openApiErrors","clonedOpenApiJson","structuredClone","transformedOpenApi","transformOpenApiObject","formik","useFormik","initialValues","validationSchema","schemaValidation","validateOnMount","onSubmit","values","validateForm","resetForm","setSubmitting","originalOpenApiForm","transformOpenApiObjectToOrigin","err","dirty","isValid","isSubmitting","setFieldValue","handleSubmit","errors","isPublishDialogOpen","setIsPublishDialogOpen","useState","openMethodIndex","setOpenMethodIndex","useEffect","_jsxs","jsxs","className","styles","docsLayout","children","_jsx","Alert","apiDocAlert","color","severity","layoutContainer","editorSide","docSide","SectionHead","editorSectionHead_title","text","editorSectionHead_content","Button","methodForm_submitBtn","size","fullWidth","type","variant","onClick","disabled","FormikProvider","value","InfoForm","jsx","editorSectionHead","paths","map","path","pathIndex","_Fragment","methods","sort","a","b","methodColorMapping","order","method","methodIndex","MethodsAccordion","tags","key","isOpen","setIsOpen","open","_b","_a","livePreviewSide","LivePreview","transformedData","CommonDialog","status","content","style","fontWeight","fontSize","lineHeight","textAlign","margin","onCancel","onClose"],"mappings":"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"}
|