@digi-frontend/dgate-api-documentation 1.0.25 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  2. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  3. package/dist/src/components/JsonInput/JsonInput.js +1 -1
  4. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  5. package/dist/src/components/LivePreview/LivePreview.js +1 -1
  6. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  7. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  8. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  9. package/dist/src/components/table/table.js +1 -1
  10. package/dist/src/components/table/table.js.map +1 -1
  11. package/dist/src/components/table/tags-table.js +1 -1
  12. package/dist/src/components/table/tags-table.js.map +1 -1
  13. package/dist/src/constants/regex.js +1 -1
  14. package/dist/src/constants/regex.js.map +1 -1
  15. package/dist/src/helpers/layout.helper.js +1 -1
  16. package/dist/src/helpers/layout.helper.js.map +1 -1
  17. package/dist/src/layout/layout.js +1 -1
  18. package/dist/src/layout/layout.js.map +1 -1
  19. package/dist/src/layout/layout.module.css.js +1 -1
  20. package/dist/src/validator/form.scheme.js +1 -1
  21. package/dist/src/validator/form.scheme.js.map +1 -1
  22. package/dist/styles.css +265 -232
  23. package/dist/types/components/MethodAccordion/MethodAccordion.d.ts +3 -1
  24. package/dist/types/constants/regex.d.ts +1 -0
  25. package/package.json +1 -1
  26. package/src/components/InfoForm/InfoForm.module.scss +24 -1
  27. package/src/components/InfoForm/InfoForm.tsx +56 -33
  28. package/src/components/JsonInput/JsonInput.tsx +11 -6
  29. package/src/components/LivePreview/LivePreview.module.scss +18 -5
  30. package/src/components/LivePreview/LivePreview.tsx +7 -4
  31. package/src/components/MethodAccordion/MethodAccordion.tsx +77 -63
  32. package/src/components/Tooltip/Tooltip.scss +9 -6
  33. package/src/components/table/style.scss +1 -1
  34. package/src/components/table/table.tsx +9 -8
  35. package/src/components/table/tags-table.tsx +26 -13
  36. package/src/constants/regex.ts +1 -0
  37. package/src/helpers/layout.helper.ts +1 -1
  38. package/src/layout/layout.module.css +5 -0
  39. package/src/layout/layout.tsx +4 -1
  40. package/src/validator/form.scheme.ts +1 -1
@@ -1,2 +1,2 @@
1
- import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as t,useEffect as i}from"react";import{useFormikContext as n}from"../../../node_modules/formik/dist/formik.esm.js";import{d as s}from"../../../_virtual/index.js";import o from"./InfoForm.module.scss.js";import r from"../../constants/regex.js";import l from"../Tooltip/Tooltip.js";import a from"../../assets/icons/DeleteIcon.svg.js";import c from"../../assets/icons/EditIcon.svg.js";import d from"../../assets/icons/deleteOutlinedIcon.svg.js";import m from"../SVGLoader/SVGLoader.js";import p from"../dialog/index.js";import{tagsTableHeaders as u}from"../../constants/index.js";import v from"../table/tags-table.js";const h=({readOnly:h})=>{var g,x,j,D,f;const[b,C]=t([]),[y,N]=t(),[k,I]=t(""),[w,T]=t(""),[A,O]=t(""),{values:B,setFieldValue:S,errors:_}=n(),[z,L]=t({}),[E,W]=t({}),[V,F]=t(null),[P,q]=t(null),[M,R]=t(!1),[$,G]=t(!1);i((()=>{if(B&&B.components&&B.components.securitySchemes){const e=Object.keys(B.components.securitySchemes);e.length&&I(B.components.securitySchemes[e[0]].scheme||B.components.securitySchemes[e[0]].type)}}),[]),i((()=>{N(U(b))}),[b]),i((()=>{B.tags&&B.tags.length&&(N(U(B.tags)),C(B.tags))}),[B.tags]);const H=(e,t,i)=>{const n=b.map(((n,s)=>s===i?Object.assign(Object.assign({},n),{[e]:t}):n));C(n)},U=t=>t.map(((t,i)=>{var n,r,d,p,u,v,g,x,j,D,f,b;return{id:i,tagName:t.name,description:e.jsxs("div",{className:o.paramDescContainer,children:[e.jsx(l,{allowHTML:!0,disabled:(null===(n=B.tags[i].description)||void 0===n?void 0:n.length)<=12,content:e.jsx("div",{style:{padding:"0.625rem"},children:B.tags[i].description}),arrowWithBorder:!0,placement:"bottom-end",type:"function",delay:[0,0],onShow:()=>{var e;return null===(e=E[i])||void 0===e?void 0:e.hide()},children:e.jsxs("p",{style:{alignSelf:"center",fontWeight:600,fontSize:"1rem"},children:[B.tags[i].description?B.tags[i].description.substring(0,12):h&&"-",B.tags[i].description&&B.tags[i].description.length>12?"...":""]})},`${i}-description`),e.jsx(l,{arrowWithBorder:!0,placement:"bottom-end",type:"function",trigger:"click",delay:[0,0],onCreate:e=>W((t=>Object.assign(Object.assign({},t),{[i]:e}))),content:e.jsxs("div",{className:o.editDescTooltipContent,children:[e.jsx("p",{className:o.editDescTooltipContent_header,children:"Description"}),e.jsx(s.TextArea,{placeholder:"Describe parameter...",value:t.description,disabled:h,onChange:e=>H("description",e,i)}),!h&&e.jsx(s.Button,{className:o.editDescTooltipContent_btn,variant:"outlined",size:"small",onClick:()=>{var e;S(`tags[${i}].description`,t.description),null===(e=E[i])||void 0===e||e.hide()},children:"Apply"})]}),children:h||B.tags[i].description?e.jsx(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:c,width:"1.5rem",height:"1.5rem"})}):e.jsx(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:c,width:"1.5rem",height:"1.5rem"}),children:h||B.tags[i].description?"View Description":"Add Description"})})]}),externalDocs:e.jsxs("div",{className:o.paramDescContainer,children:[e.jsx(l,{arrowWithBorder:!0,placement:"bottom-end",type:"function",trigger:"click",delay:[0,0],onCreate:e=>L((t=>Object.assign(Object.assign({},t),{[i]:e}))),content:e.jsxs("div",{className:o.editDescTooltipContent,children:[e.jsx("p",{className:o.editDescTooltipContent_header,children:"External Docs Description"}),e.jsx(s.TextArea,{placeholder:"Describe External Doc...",value:null===(r=t.externalDocs)||void 0===r?void 0:r.description,disabled:h,onChange:e=>{H("externalDocs",Object.assign(Object.assign({},t.externalDocs),{description:e}),i),T(e)}}),e.jsx("p",{className:o.editDescTooltipContent_header,children:"External Docs Link"}),e.jsx(s.TextArea,{placeholder:"External Docs Link...",value:null===(d=t.externalDocs)||void 0===d?void 0:d.url,disabled:h,onChange:e=>{H("externalDocs",Object.assign(Object.assign({},t.externalDocs),{url:e}),i),O(e)}}),!h&&e.jsx(s.Button,{className:o.editDescTooltipContent_btn,variant:"outlined",size:"small",onClick:()=>{var e;S(`tags[${i}].externalDocs`,{description:w,url:A}),T(""),O(""),null===(e=z[i])||void 0===e||e.hide()},children:"Apply"})]}),children:h||(null===(p=B.tags[i].externalDocs)||void 0===p?void 0:p.description)?e.jsxs(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:c,width:"1.5rem",height:"1.5rem"}),onClick:()=>{var e,i;T(null===(e=t.externalDocs)||void 0===e?void 0:e.description),O(null===(i=t.externalDocs)||void 0===i?void 0:i.url)},children:[(null===(u=B.tags[i].externalDocs)||void 0===u?void 0:u.description)?null===(g=null===(v=B.tags[i].externalDocs)||void 0===v?void 0:v.description)||void 0===g?void 0:g.substring(0,12):"-",(null===(x=B.tags[i].externalDocs)||void 0===x?void 0:x.description)&&(null===(D=null===(j=B.tags[i].externalDocs)||void 0===j?void 0:j.description)||void 0===D?void 0:D.length)>12?"...":""]}):e.jsxs(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:c,width:"1.5rem",height:"1.5rem"}),onClick:()=>{var e,i;T(null===(e=t.externalDocs)||void 0===e?void 0:e.description),O(null===(i=t.externalDocs)||void 0===i?void 0:i.url)},children:[h||t.externalDocs&&((null===(f=t.externalDocs)||void 0===f?void 0:f.url)||(null===(b=t.externalDocs)||void 0===b?void 0:b.description))?"View ":"Add "," ","External Docs Link"]})}),!h&&e.jsx("div",{className:o.paramDescContainer_separator}),!h&&e.jsx(s.Button,{className:o.deleteParamBtn,variant:"link",color:"error",endIcon:e.jsx(m,{src:a,width:"1.125rem",height:"1.125rem"}),onClick:()=>{return e=i,n=t.name,F(e),q(n),void R(!0);var e,n}})]})}}));return e.jsxs("form",{className:o.apiInfoForm,onSubmit:e=>e.preventDefault(),children:[e.jsx(s.Input,{size:"large",placeholder:"e.g. Payments",label:"API Name",required:!0,value:null===(g=null==B?void 0:B.info)||void 0===g?void 0:g.title,maxLength:25,onChange:e=>{S("info.title",e)},onClear:()=>{S("info.title","")},errorMsg:null===(x=null==_?void 0:_.info)||void 0===x?void 0:x.title,restrictedCharactersRegex:r.basic}),e.jsxs("div",{className:o.apiDocRow,children:[e.jsx(s.Input,{size:"large",label:"API Authentication Type",required:!0,value:(J=k,J?J.charAt(0).toUpperCase()+J.slice(1):""),disabled:!0}),e.jsx(s.Input,{size:"large",label:"Version",required:!0,value:null===(j=null==B?void 0:B.info)||void 0===j?void 0:j.version,disabled:!0})]}),e.jsx(s.TextArea,{size:"large",placeholder:"Enter a description of the API's functionality...",label:"Description",value:null===(D=null==B?void 0:B.info)||void 0===D?void 0:D.description,maxLength:120,required:!0,onChange:e=>{(""===e||r.ASCII.test(e))&&S("info.description",e)},onClear:()=>{S("info.description","")},errorMessage:null===(f=null==_?void 0:_.info)||void 0===f?void 0:f.description}),e.jsx("div",{className:o.paramsTable,children:e.jsx(v,{id:"paramter-table",data:y,headCells:u,isFormOpen:$,setIsFormOpen:G,saveNewRow:e=>{C([...b,e]);const t=B.tags||[];S("tags",[...t,e])},readOnly:h})}),e.jsx(p,{status:"error",content:e.jsxs("p",{style:{textAlign:"center",fontWeight:400,fontSize:"1rem",lineHeight:"1.4375rem"},className:"delete-msg-container",children:["Are you sure you want to delete",e.jsxs("span",{className:"plan-name",children:[" ","Tag ",e.jsx("strong",{children:P})]}),"?"]}),onSubmit:{onClick:()=>{var e;null!==V&&(C((e=>e.filter(((e,t)=>t!==V)))),S("tags",null===(e=B.tags)||void 0===e?void 0:e.filter(((e,t)=>t!==V)))),R(!1),F(null)},text:"Delete",color:"error",fullWidth:!0},onCancel:{text:"Cancel",color:"normal",fullWidth:!0},onClose:()=>R(!1),open:M,icon:e.jsx(m,{src:d,width:"4.0625rem",height:"4.0625rem"})})]});var J};export{h as default};
1
+ import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as t,useEffect as i}from"react";import{useFormikContext as n}from"../../../node_modules/formik/dist/formik.esm.js";import{d as s}from"../../../_virtual/index.js";import o from"./InfoForm.module.scss.js";import r from"../../constants/regex.js";import l from"../Tooltip/Tooltip.js";import a from"../../assets/icons/DeleteIcon.svg.js";import d from"../../assets/icons/EditIcon.svg.js";import c from"../../assets/icons/deleteOutlinedIcon.svg.js";import m from"../SVGLoader/SVGLoader.js";import p from"../dialog/index.js";import{tagsTableHeaders as v}from"../../constants/index.js";import u from"../table/tags-table.js";const x=({readOnly:x})=>{var g,h,j,D,f;const[b,C]=t([]),[y,I]=t(),[N,k]=t(""),[A,w]=t(""),[T,O]=t(""),{values:S,setFieldValue:B,errors:L}=n(),[_,E]=t({}),[z,W]=t({}),[P,V]=t(null),[F,q]=t(null),[R,M]=t(!1),[$,G]=t(!1);i((()=>{if(S&&S.components&&S.components.securitySchemes){const e=Object.keys(S.components.securitySchemes);e.length&&k(S.components.securitySchemes[e[0]].scheme||S.components.securitySchemes[e[0]].type)}}),[]),i((()=>{I(U(b))}),[b]),i((()=>{S.tags&&S.tags.length&&C(S.tags)}),[S.tags]);const H=(e,t,i)=>{const n=b.map(((n,s)=>s===i?Object.assign(Object.assign({},n),{[e]:t}):n));C(n)},U=t=>t.map(((t,i)=>{var n,c,p,v,u,g,h,j,D,f,b,C,y,I,N;return{id:i,tagName:t.name,description:e.jsxs("div",{className:o.paramDescContainer,children:[e.jsx(l,{allowHTML:!0,disabled:(null===(n=S.tags[i].description)||void 0===n?void 0:n.length)<=12,content:e.jsx("div",{style:{padding:"0.625rem"},children:S.tags[i].description}),arrowWithBorder:!0,placement:"bottom-end",type:"function",delay:[0,0],onShow:()=>{var e;return null===(e=z[i])||void 0===e?void 0:e.hide()},children:e.jsxs("p",{style:{alignSelf:"center",fontWeight:600,fontSize:"1rem"},children:[S.tags[i].description?S.tags[i].description.substring(0,12):x&&"-",S.tags[i].description&&S.tags[i].description.length>12?"...":""]})},`${i}-description`),e.jsx(l,{arrowWithBorder:!0,placement:"bottom-end",type:"function",trigger:"click",delay:[0,0],onCreate:e=>W((t=>Object.assign(Object.assign({},t),{[i]:e}))),content:e.jsxs("div",{className:o.editDescTooltipContent,children:[e.jsx("p",{className:o.editDescTooltipContent_header,children:"Description"}),e.jsx(s.TextArea,{placeholder:"Describe tag...",value:t.description,disabled:x,onChange:e=>{(""===e||r.ASCII.test(e))&&H("description",e,i)},maxLength:25}),!x&&e.jsx(s.Button,{className:o.editDescTooltipContent_btn,variant:"outlined",size:"small",onClick:()=>{var e,n;B(`tags[${i}].description`,null===(e=t.description)||void 0===e?void 0:e.trim()),null===(n=z[i])||void 0===n||n.hide()},disabled:!(null===(c=t.description)||void 0===c?void 0:c.trim()),children:"Apply"})]}),children:x||S.tags[i].description?e.jsx(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:d,width:"1.5rem",height:"1.5rem"})}):e.jsx(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:d,width:"1.5rem",height:"1.5rem"}),children:x||S.tags[i].description?"View Description":"Add Description"})})]}),externalDocs:e.jsxs("div",{className:o.paramDescContainer,children:[e.jsxs("a",{className:o.externalDocsLink,href:null===(p=S.tags[i].externalDocs)||void 0===p?void 0:p.url,target:"_blank",style:(null===(v=S.tags[i].externalDocs)||void 0===v?void 0:v.description)?{}:{textDecoration:"none",pointerEvents:"none"},children:[(null===(u=S.tags[i].externalDocs)||void 0===u?void 0:u.description)?null===(h=null===(g=S.tags[i].externalDocs)||void 0===g?void 0:g.description)||void 0===h?void 0:h.substring(0,12):"-",(null===(j=S.tags[i].externalDocs)||void 0===j?void 0:j.description)&&(null===(f=null===(D=S.tags[i].externalDocs)||void 0===D?void 0:D.description)||void 0===f?void 0:f.length)>12?"...":""]}),e.jsx(l,{arrowWithBorder:!0,placement:"bottom-end",type:"function",trigger:"click",delay:[0,0],onCreate:e=>E((t=>Object.assign(Object.assign({},t),{[i]:e}))),content:e.jsxs("div",{className:o.editDescTooltipContent,children:[e.jsx("p",{className:o.editDescTooltipContent_header,children:"External Docs Description"}),e.jsx(s.TextArea,{placeholder:"Describe External Doc...",value:null===(b=t.externalDocs)||void 0===b?void 0:b.description,disabled:x,maxLength:25,onChange:e=>{(""===e||r.ASCII.test(e))&&(H("externalDocs",Object.assign(Object.assign({},t.externalDocs),{description:e}),i),w(e))}}),e.jsx("p",{className:o.editDescTooltipContent_header,children:"External Docs Link"}),e.jsx(s.TextArea,{placeholder:"External Docs Link...",value:null===(C=t.externalDocs)||void 0===C?void 0:C.url,disabled:x,maxLength:200,onChange:e=>{(""===e||r.ASCII.test(e))&&(H("externalDocs",Object.assign(Object.assign({},t.externalDocs),{url:e}),i),O(e))}}),!x&&e.jsx(s.Button,{className:o.editDescTooltipContent_btn,variant:"outlined",size:"small",onClick:()=>{var e;B(`tags[${i}].externalDocs`,{description:null==A?void 0:A.trim(),url:null==T?void 0:T.trim()}),w(""),O(""),null===(e=_[i])||void 0===e||e.hide()},disabled:!(null==A?void 0:A.trim())||!(null==T?void 0:T.trim())||!r.urlRegex.test(T),children:"Apply"})]}),children:x||(null===(y=S.tags[i].externalDocs)||void 0===y?void 0:y.description)?e.jsx("div",{className:o.editExternalDocs,children:e.jsx(m,{src:d,width:"1.5rem",height:"1.5rem",onClick:e=>{var i,n;null==e||e.stopPropagation(),w(null===(i=t.externalDocs)||void 0===i?void 0:i.description),O(null===(n=t.externalDocs)||void 0===n?void 0:n.url)}})}):e.jsxs(s.Button,{className:o.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(m,{src:d,width:"1.5rem",height:"1.5rem"}),onClick:()=>{var e,i;w(null===(e=t.externalDocs)||void 0===e?void 0:e.description),O(null===(i=t.externalDocs)||void 0===i?void 0:i.url)},children:[x||t.externalDocs&&((null===(I=t.externalDocs)||void 0===I?void 0:I.url)||(null===(N=t.externalDocs)||void 0===N?void 0:N.description))?"View ":"Add "," ","External Docs Link"]})}),!x&&e.jsx("div",{className:o.paramDescContainer_separator}),!x&&e.jsx(s.Button,{className:o.deleteParamBtn,variant:"link",color:"error",endIcon:e.jsx(m,{src:a,width:"1.125rem",height:"1.125rem"}),onClick:()=>{return e=i,n=t.name,V(e),q(n),void M(!0);var e,n}})]})}}));return e.jsxs("form",{className:o.apiInfoForm,onSubmit:e=>e.preventDefault(),children:[e.jsx(s.Input,{size:"large",placeholder:"e.g. Payments",label:"API Name",required:!0,value:null===(g=null==S?void 0:S.info)||void 0===g?void 0:g.title,maxLength:35,onChange:e=>{B("info.title",e)},onClear:()=>{B("info.title","")},errorMsg:null===(h=null==L?void 0:L.info)||void 0===h?void 0:h.title,restrictedCharactersRegex:r.basic}),e.jsxs("div",{className:o.apiDocRow,children:[e.jsx(s.Input,{size:"large",label:"API Authentication Type",required:!0,value:(J=N,J?J.charAt(0).toUpperCase()+J.slice(1):""),disabled:!0}),e.jsx(s.Input,{size:"large",label:"Version",required:!0,value:null===(j=null==S?void 0:S.info)||void 0===j?void 0:j.version,disabled:!0})]}),e.jsx(s.TextArea,{size:"large",placeholder:"Enter a description of the API's functionality...",label:"Description",value:null===(D=null==S?void 0:S.info)||void 0===D?void 0:D.description,maxLength:120,required:!0,onChange:e=>{(""===e||r.ASCII.test(e))&&B("info.description",e)},onClear:()=>{B("info.description","")},errorMessage:null===(f=null==L?void 0:L.info)||void 0===f?void 0:f.description}),e.jsx("div",{className:o.paramsTable,children:e.jsx(u,{id:"paramter-table",data:y,headCells:v,isFormOpen:$,setIsFormOpen:G,saveNewRow:e=>{C([...b,e]);const t=S.tags||[];B("tags",[...t,e])},readOnly:x})}),e.jsx(p,{status:"error",content:e.jsxs("p",{style:{textAlign:"center",fontWeight:400,fontSize:"1rem",lineHeight:"1.4375rem"},className:"delete-msg-container",children:["Are you sure you want to delete",e.jsxs("span",{className:"plan-name",children:[" ","Tag ",e.jsx("strong",{children:F})]}),"?"]}),onSubmit:{onClick:()=>{var e;null!==P&&(C((e=>e.filter(((e,t)=>t!==P)))),B("tags",null===(e=S.tags)||void 0===e?void 0:e.filter(((e,t)=>t!==P)))),M(!1),V(null)},text:"Delete",color:"error",fullWidth:!0},onCancel:{text:"Cancel",color:"normal",fullWidth:!0},onClose:()=>M(!1),open:R,icon:e.jsx(m,{src:c,width:"4.0625rem",height:"4.0625rem"})})]});var J};export{x as default};
2
2
  //# sourceMappingURL=InfoForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InfoForm.js","sources":["../../../../src/components/InfoForm/InfoForm.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\n// @ts-ignore\r\nimport { useFormikContext } from 'formik'\r\nimport { Button, Input, TextArea } from 'digitinary-ui'\r\nimport styles from './InfoForm.module.scss'\r\nimport regex from '../../constants/regex'\r\nimport { TransformedOpenApi } from '../../types/transformedOpenApi'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\nimport { DeleteIcon, deleteOutlinedIcon, EditIcon } from '../../assets/icons'\r\nimport SVGLoader from '../../components/SVGLoader/SVGLoader'\r\nimport CommonDialog from '../../components/dialog'\r\nimport { tagsTableHeaders } from '../../constants/index'\r\nimport TagsTable from '../../components/table/tags-table'\r\n\r\nconst InfoForm = ({ readOnly }: { readOnly?: boolean }) => {\r\n const [tableData, setTableData] = useState([])\r\n const [tableRecords, setTableRecords] = useState()\r\n const [authType, setAuthType] = useState('')\r\n const [description, setDescription] = useState('')\r\n const [url, setURL] = useState('')\r\n const { values, setFieldValue, errors } = useFormikContext<TransformedOpenApi>()\r\n const [externalTooltipRefs, setExternalTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [selectedTagIndex, setSelectedTagIndex] = useState<number | null>(null)\r\n const [selectedTagName, setSelectedTagName] = useState<string | null>(null)\r\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false)\r\n const [isFormOpen, setIsFormOpen] = useState(false)\r\n\r\n useEffect(() => {\r\n if (values && values.components && values.components.securitySchemes) {\r\n const authenticatorKeys = Object.keys(values.components.securitySchemes)\r\n if (authenticatorKeys.length) {\r\n setAuthType(\r\n values.components.securitySchemes[authenticatorKeys[0]].scheme ||\r\n values.components.securitySchemes[authenticatorKeys[0]].type\r\n )\r\n }\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n setTableRecords(generateTableRecords(tableData))\r\n }, [tableData])\r\n\r\n useEffect(() => {\r\n if (values.tags && values.tags.length) {\r\n setTableRecords(generateTableRecords(values.tags))\r\n setTableData(values.tags)\r\n }\r\n }, [values.tags])\r\n\r\n const confirmDeleteTag = () => {\r\n if (selectedTagIndex !== null) {\r\n setTableData((prev) => prev.filter((_, i) => i !== selectedTagIndex))\r\n setFieldValue(\r\n `tags`,\r\n values.tags?.filter((_, i) => i !== selectedTagIndex)\r\n )\r\n }\r\n setOpenDeleteDialog(false)\r\n setSelectedTagIndex(null)\r\n }\r\n\r\n const capitalize = (str) => {\r\n if (!str) return ''\r\n return str.charAt(0).toUpperCase() + str.slice(1)\r\n }\r\n\r\n const onTableChange = (key, value, index) => {\r\n const newTableData = tableData.map((item, tIndex) => {\r\n if (tIndex === index) {\r\n return { ...item, [key]: value }\r\n } else {\r\n return item\r\n }\r\n })\r\n\r\n setTableData(newTableData)\r\n }\r\n\r\n const saveNewRow = (tag) => {\r\n setTableData([...tableData, tag])\r\n const oldTags = values.tags || []\r\n setFieldValue(`tags`, [...oldTags, tag])\r\n }\r\n\r\n const handleDeleteClick = (id: number, name: string) => {\r\n setSelectedTagIndex(id)\r\n setSelectedTagName(name)\r\n\r\n setOpenDeleteDialog(true)\r\n }\r\n\r\n const generateTableRecords = (items) => {\r\n return items.map((item, index) => ({\r\n id: index,\r\n tagName: item.name,\r\n description: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={values.tags[index].description?.length <= 12}\r\n content={<div style={{ padding: '0.625rem' }}>{values.tags[index].description}</div>}\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n onShow={() => tooltipRefs[index]?.hide()}\r\n >\r\n <p style={{ alignSelf: 'center', fontWeight: 600, fontSize: '1rem' }}>\r\n {values.tags[index].description\r\n ? values.tags[index].description.substring(0, 12)\r\n : readOnly && '-'}\r\n {values.tags[index].description && values.tags[index].description.length > 12\r\n ? '...'\r\n : ''}\r\n </p>\r\n </Tooltip>\r\n <Tooltip\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>Description</p>\r\n <TextArea\r\n placeholder=\"Describe parameter...\"\r\n value={item.description}\r\n disabled={readOnly}\r\n onChange={(value) => onTableChange('description', value, index)}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(`tags[${index}].description`, item.description)\r\n tooltipRefs[index]?.hide()\r\n }}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || values.tags[index].description ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n ></Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n >\r\n {readOnly || values.tags[index].description\r\n ? 'View Description'\r\n : 'Add Description'}\r\n </Button>\r\n )}\r\n </Tooltip>\r\n </div>\r\n ),\r\n externalDocs: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setExternalTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>External Docs Description</p>\r\n <TextArea\r\n placeholder=\"Describe External Doc...\"\r\n value={item.externalDocs?.description}\r\n disabled={readOnly}\r\n onChange={(value) => {\r\n onTableChange(\r\n 'externalDocs',\r\n { ...item.externalDocs, description: value },\r\n index\r\n )\r\n setDescription(value)\r\n }}\r\n />\r\n <p className={styles.editDescTooltipContent_header}>External Docs Link</p>\r\n <TextArea\r\n placeholder=\"External Docs Link...\"\r\n value={item.externalDocs?.url}\r\n disabled={readOnly}\r\n onChange={(value) => {\r\n onTableChange('externalDocs', { ...item.externalDocs, url: value }, index)\r\n setURL(value)\r\n }}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(`tags[${index}].externalDocs`, {\r\n description: description,\r\n url: url,\r\n })\r\n setDescription('')\r\n setURL('')\r\n externalTooltipRefs[index]?.hide()\r\n }}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || values.tags[index].externalDocs?.description ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n onClick={() => {\r\n setDescription(item.externalDocs?.description)\r\n setURL(item.externalDocs?.url)\r\n }}\r\n >\r\n {values.tags[index].externalDocs?.description\r\n ? values.tags[index].externalDocs?.description?.substring(0, 12)\r\n : '-'}\r\n {values.tags[index].externalDocs?.description &&\r\n values.tags[index].externalDocs?.description?.length > 12\r\n ? '...'\r\n : ''}\r\n </Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n onClick={() => {\r\n setDescription(item.externalDocs?.description)\r\n setURL(item.externalDocs?.url)\r\n }}\r\n >\r\n {readOnly ||\r\n (item.externalDocs && (item.externalDocs?.url || item.externalDocs?.description))\r\n ? 'View '\r\n : 'Add '}{' '}\r\n External Docs Link\r\n </Button>\r\n )}\r\n </Tooltip>\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n endIcon={<SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />}\r\n onClick={() => handleDeleteClick(index, item.name)}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }))\r\n }\r\n\r\n return (\r\n <form className={styles.apiInfoForm} onSubmit={(e) => e.preventDefault()}>\r\n <Input\r\n size=\"large\"\r\n placeholder=\"e.g. Payments\"\r\n label=\"API Name\"\r\n required\r\n value={values?.info?.title}\r\n maxLength={25}\r\n onChange={(value) => {\r\n setFieldValue('info.title', value)\r\n }}\r\n onClear={() => {\r\n setFieldValue('info.title', '')\r\n }}\r\n errorMsg={errors?.info?.title}\r\n restrictedCharactersRegex={regex.basic}\r\n />\r\n <div className={styles.apiDocRow}>\r\n <Input\r\n size=\"large\"\r\n label=\"API Authentication Type\"\r\n required\r\n value={capitalize(authType)}\r\n disabled\r\n />\r\n <Input size=\"large\" label=\"Version\" required value={values?.info?.version} disabled />\r\n </div>\r\n <TextArea\r\n size=\"large\"\r\n placeholder=\"Enter a description of the API's functionality...\"\r\n label=\"Description\"\r\n value={values?.info?.description}\r\n maxLength={120}\r\n required\r\n onChange={(value: string) => {\r\n if (value === '' || regex.ASCII.test(value)) {\r\n setFieldValue('info.description', value)\r\n }\r\n }}\r\n onClear={() => {\r\n setFieldValue('info.description', '')\r\n }}\r\n errorMessage={errors?.info?.description}\r\n />\r\n <div className={styles.paramsTable}>\r\n <TagsTable\r\n id=\"paramter-table\"\r\n data={tableRecords}\r\n headCells={tagsTableHeaders}\r\n isFormOpen={isFormOpen}\r\n setIsFormOpen={setIsFormOpen}\r\n saveNewRow={saveNewRow}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n <CommonDialog\r\n status=\"error\"\r\n content={\r\n <p\r\n style={{\r\n textAlign: 'center',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: '1.4375rem',\r\n }}\r\n className=\"delete-msg-container\"\r\n >\r\n Are you sure you want to delete\r\n <span className=\"plan-name\">\r\n {' '}\r\n Tag <strong>{selectedTagName}</strong>\r\n </span>\r\n ?\r\n </p>\r\n }\r\n onSubmit={{\r\n onClick: confirmDeleteTag,\r\n text: 'Delete',\r\n color: 'error',\r\n fullWidth: true,\r\n }}\r\n onCancel={{\r\n text: 'Cancel',\r\n color: 'normal',\r\n fullWidth: true,\r\n }}\r\n onClose={() => setOpenDeleteDialog(false)}\r\n open={openDeleteDialog}\r\n icon={<SVGLoader src={deleteOutlinedIcon} width=\"4.0625rem\" height=\"4.0625rem\" />}\r\n />\r\n </form>\r\n )\r\n}\r\n\r\nexport default InfoForm\r\n"],"names":["InfoForm","readOnly","tableData","setTableData","useState","tableRecords","setTableRecords","authType","setAuthType","description","setDescription","url","setURL","values","setFieldValue","errors","useFormikContext","externalTooltipRefs","setExternalTooltipRefs","tooltipRefs","setTooltipRefs","selectedTagIndex","setSelectedTagIndex","selectedTagName","setSelectedTagName","openDeleteDialog","setOpenDeleteDialog","isFormOpen","setIsFormOpen","useEffect","components","securitySchemes","authenticatorKeys","Object","keys","length","scheme","type","generateTableRecords","tags","onTableChange","key","value","index","newTableData","map","item","tIndex","assign","items","id","tagName","name","_jsxs","className","styles","paramDescContainer","children","_jsx","Tooltip","allowHTML","disabled","_a","content","style","padding","arrowWithBorder","placement","delay","onShow","hide","jsxs","alignSelf","fontWeight","fontSize","substring","jsx","trigger","onCreate","instance","prev","editDescTooltipContent","editDescTooltipContent_header","TextArea","placeholder","onChange","Button","editDescTooltipContent_btn","variant","size","onClick","editDescBtn","color","endIcon","SVGLoader","src","EditIcon","width","height","externalDocs","_b","_c","_d","_e","_g","_f","_k","_j","_l","_m","paramDescContainer_separator","deleteParamBtn","DeleteIcon","handleDeleteClick","apiInfoForm","onSubmit","e","preventDefault","Input","label","required","info","title","maxLength","onClear","errorMsg","restrictedCharactersRegex","regex","basic","apiDocRow","str","charAt","toUpperCase","slice","version","ASCII","test","errorMessage","paramsTable","TagsTable","data","headCells","tagsTableHeaders","saveNewRow","tag","oldTags","CommonDialog","status","textAlign","lineHeight","filter","_","i","text","fullWidth","onCancel","onClose","open","icon","deleteOutlinedIcon"],"mappings":"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"}
1
+ {"version":3,"file":"InfoForm.js","sources":["../../../../src/components/InfoForm/InfoForm.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\n// @ts-ignore\r\nimport { useFormikContext } from 'formik'\r\nimport { Button, Input, TextArea } from 'digitinary-ui'\r\nimport styles from './InfoForm.module.scss'\r\nimport regex from '../../constants/regex'\r\nimport { TransformedOpenApi } from '../../types/transformedOpenApi'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\nimport { DeleteIcon, deleteOutlinedIcon, EditIcon } from '../../assets/icons'\r\nimport SVGLoader from '../../components/SVGLoader/SVGLoader'\r\nimport CommonDialog from '../../components/dialog'\r\nimport { tagsTableHeaders } from '../../constants/index'\r\nimport TagsTable from '../../components/table/tags-table'\r\n\r\nconst InfoForm = ({ readOnly }: { readOnly?: boolean }) => {\r\n const [tableData, setTableData] = useState([])\r\n const [tableRecords, setTableRecords] = useState()\r\n const [authType, setAuthType] = useState('')\r\n const [description, setDescription] = useState('')\r\n const [url, setURL] = useState('')\r\n const { values, setFieldValue, errors } = useFormikContext<TransformedOpenApi>()\r\n const [externalTooltipRefs, setExternalTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [selectedTagIndex, setSelectedTagIndex] = useState<number | null>(null)\r\n const [selectedTagName, setSelectedTagName] = useState<string | null>(null)\r\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false)\r\n const [isFormOpen, setIsFormOpen] = useState(false)\r\n\r\n useEffect(() => {\r\n if (values && values.components && values.components.securitySchemes) {\r\n const authenticatorKeys = Object.keys(values.components.securitySchemes)\r\n if (authenticatorKeys.length) {\r\n setAuthType(\r\n values.components.securitySchemes[authenticatorKeys[0]].scheme ||\r\n values.components.securitySchemes[authenticatorKeys[0]].type\r\n )\r\n }\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n setTableRecords(generateTableRecords(tableData))\r\n }, [tableData])\r\n\r\n useEffect(() => {\r\n if (values.tags && values.tags.length) {\r\n setTableData(values.tags)\r\n }\r\n }, [values.tags])\r\n\r\n const confirmDeleteTag = () => {\r\n if (selectedTagIndex !== null) {\r\n setTableData((prev) => prev.filter((_, i) => i !== selectedTagIndex))\r\n setFieldValue(\r\n `tags`,\r\n values.tags?.filter((_, i) => i !== selectedTagIndex)\r\n )\r\n }\r\n setOpenDeleteDialog(false)\r\n setSelectedTagIndex(null)\r\n }\r\n\r\n const capitalize = (str) => {\r\n if (!str) return ''\r\n return str.charAt(0).toUpperCase() + str.slice(1)\r\n }\r\n\r\n const onTableChange = (key, value, index) => {\r\n const newTableData = tableData.map((item, tIndex) => {\r\n if (tIndex === index) {\r\n return { ...item, [key]: value }\r\n } else {\r\n return item\r\n }\r\n })\r\n\r\n setTableData(newTableData)\r\n }\r\n\r\n const saveNewRow = (tag) => {\r\n setTableData([...tableData, tag])\r\n const oldTags = values.tags || []\r\n setFieldValue(`tags`, [...oldTags, tag])\r\n }\r\n\r\n const handleDeleteClick = (id: number, name: string) => {\r\n setSelectedTagIndex(id)\r\n setSelectedTagName(name)\r\n\r\n setOpenDeleteDialog(true)\r\n }\r\n\r\n const generateTableRecords = (items) => {\r\n return items.map((item, index) => ({\r\n id: index,\r\n tagName: item.name,\r\n description: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={values.tags[index].description?.length <= 12}\r\n content={<div style={{ padding: '0.625rem' }}>{values.tags[index].description}</div>}\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n onShow={() => tooltipRefs[index]?.hide()}\r\n >\r\n <p style={{ alignSelf: 'center', fontWeight: 600, fontSize: '1rem' }}>\r\n {values.tags[index].description\r\n ? values.tags[index].description.substring(0, 12)\r\n : readOnly && '-'}\r\n {values.tags[index].description && values.tags[index].description.length > 12\r\n ? '...'\r\n : ''}\r\n </p>\r\n </Tooltip>\r\n <Tooltip\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>Description</p>\r\n <TextArea\r\n placeholder=\"Describe tag...\"\r\n value={item.description}\r\n disabled={readOnly}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value))\r\n onTableChange('description', value, index)\r\n }}\r\n maxLength={25}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(`tags[${index}].description`, item.description?.trim())\r\n tooltipRefs[index]?.hide()\r\n }}\r\n disabled={!item.description?.trim()}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || values.tags[index].description ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n ></Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n >\r\n {readOnly || values.tags[index].description\r\n ? 'View Description'\r\n : 'Add Description'}\r\n </Button>\r\n )}\r\n </Tooltip>\r\n </div>\r\n ),\r\n externalDocs: (\r\n <div className={styles.paramDescContainer}>\r\n <a\r\n className={styles.externalDocsLink}\r\n href={values.tags[index].externalDocs?.url}\r\n target=\"_blank\"\r\n style={\r\n !values.tags[index].externalDocs?.description\r\n ? { textDecoration: 'none', pointerEvents: 'none' }\r\n : {}\r\n }\r\n >\r\n {values.tags[index].externalDocs?.description\r\n ? values.tags[index].externalDocs?.description?.substring(0, 12)\r\n : '-'}\r\n {values.tags[index].externalDocs?.description &&\r\n values.tags[index].externalDocs?.description?.length > 12\r\n ? '...'\r\n : ''}\r\n </a>\r\n <Tooltip\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setExternalTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>External Docs Description</p>\r\n <TextArea\r\n placeholder=\"Describe External Doc...\"\r\n value={item.externalDocs?.description}\r\n disabled={readOnly}\r\n maxLength={25}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value)) {\r\n onTableChange(\r\n 'externalDocs',\r\n { ...item.externalDocs, description: value },\r\n index\r\n )\r\n setDescription(value)\r\n }\r\n }}\r\n />\r\n <p className={styles.editDescTooltipContent_header}>External Docs Link</p>\r\n <TextArea\r\n placeholder=\"External Docs Link...\"\r\n value={item.externalDocs?.url}\r\n disabled={readOnly}\r\n maxLength={200}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value)) {\r\n onTableChange('externalDocs', { ...item.externalDocs, url: value }, index)\r\n setURL(value)\r\n }\r\n }}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(`tags[${index}].externalDocs`, {\r\n description: description?.trim(),\r\n url: url?.trim(),\r\n })\r\n setDescription('')\r\n setURL('')\r\n externalTooltipRefs[index]?.hide()\r\n }}\r\n disabled={!description?.trim() || !url?.trim() || !regex.urlRegex.test(url)}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || values.tags[index].externalDocs?.description ? (\r\n <div className={styles.editExternalDocs}>\r\n <SVGLoader\r\n src={EditIcon}\r\n width=\"1.5rem\"\r\n height=\"1.5rem\"\r\n onClick={(e) => {\r\n e?.stopPropagation()\r\n setDescription(item.externalDocs?.description)\r\n setURL(item.externalDocs?.url)\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n onClick={() => {\r\n setDescription(item.externalDocs?.description)\r\n setURL(item.externalDocs?.url)\r\n }}\r\n >\r\n {readOnly ||\r\n (item.externalDocs && (item.externalDocs?.url || item.externalDocs?.description))\r\n ? 'View '\r\n : 'Add '}{' '}\r\n External Docs Link\r\n </Button>\r\n )}\r\n </Tooltip>\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n endIcon={<SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />}\r\n onClick={() => handleDeleteClick(index, item.name)}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }))\r\n }\r\n\r\n return (\r\n <form className={styles.apiInfoForm} onSubmit={(e) => e.preventDefault()}>\r\n <Input\r\n size=\"large\"\r\n placeholder=\"e.g. Payments\"\r\n label=\"API Name\"\r\n required\r\n value={values?.info?.title}\r\n maxLength={35}\r\n onChange={(value) => {\r\n setFieldValue('info.title', value)\r\n }}\r\n onClear={() => {\r\n setFieldValue('info.title', '')\r\n }}\r\n errorMsg={errors?.info?.title}\r\n restrictedCharactersRegex={regex.basic}\r\n />\r\n <div className={styles.apiDocRow}>\r\n <Input\r\n size=\"large\"\r\n label=\"API Authentication Type\"\r\n required\r\n value={capitalize(authType)}\r\n disabled\r\n />\r\n <Input size=\"large\" label=\"Version\" required value={values?.info?.version} disabled />\r\n </div>\r\n <TextArea\r\n size=\"large\"\r\n placeholder=\"Enter a description of the API's functionality...\"\r\n label=\"Description\"\r\n value={values?.info?.description}\r\n maxLength={120}\r\n required\r\n onChange={(value: string) => {\r\n if (value === '' || regex.ASCII.test(value)) {\r\n setFieldValue('info.description', value)\r\n }\r\n }}\r\n onClear={() => {\r\n setFieldValue('info.description', '')\r\n }}\r\n errorMessage={errors?.info?.description}\r\n />\r\n <div className={styles.paramsTable}>\r\n <TagsTable\r\n id=\"paramter-table\"\r\n data={tableRecords}\r\n headCells={tagsTableHeaders}\r\n isFormOpen={isFormOpen}\r\n setIsFormOpen={setIsFormOpen}\r\n saveNewRow={saveNewRow}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n <CommonDialog\r\n status=\"error\"\r\n content={\r\n <p\r\n style={{\r\n textAlign: 'center',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: '1.4375rem',\r\n }}\r\n className=\"delete-msg-container\"\r\n >\r\n Are you sure you want to delete\r\n <span className=\"plan-name\">\r\n {' '}\r\n Tag <strong>{selectedTagName}</strong>\r\n </span>\r\n ?\r\n </p>\r\n }\r\n onSubmit={{\r\n onClick: confirmDeleteTag,\r\n text: 'Delete',\r\n color: 'error',\r\n fullWidth: true,\r\n }}\r\n onCancel={{\r\n text: 'Cancel',\r\n color: 'normal',\r\n fullWidth: true,\r\n }}\r\n onClose={() => setOpenDeleteDialog(false)}\r\n open={openDeleteDialog}\r\n icon={<SVGLoader src={deleteOutlinedIcon} width=\"4.0625rem\" height=\"4.0625rem\" />}\r\n />\r\n </form>\r\n )\r\n}\r\n\r\nexport default InfoForm\r\n"],"names":["InfoForm","readOnly","tableData","setTableData","useState","tableRecords","setTableRecords","authType","setAuthType","description","setDescription","url","setURL","values","setFieldValue","errors","useFormikContext","externalTooltipRefs","setExternalTooltipRefs","tooltipRefs","setTooltipRefs","selectedTagIndex","setSelectedTagIndex","selectedTagName","setSelectedTagName","openDeleteDialog","setOpenDeleteDialog","isFormOpen","setIsFormOpen","useEffect","components","securitySchemes","authenticatorKeys","Object","keys","length","scheme","type","generateTableRecords","tags","onTableChange","key","value","index","newTableData","map","item","tIndex","assign","items","id","tagName","name","_jsxs","className","styles","paramDescContainer","children","_jsx","Tooltip","allowHTML","disabled","_a","content","style","padding","arrowWithBorder","placement","delay","onShow","hide","jsxs","alignSelf","fontWeight","fontSize","substring","trigger","onCreate","instance","prev","editDescTooltipContent","editDescTooltipContent_header","TextArea","placeholder","onChange","regex","ASCII","test","maxLength","jsx","Button","editDescTooltipContent_btn","variant","size","onClick","trim","_b","editDescBtn","color","endIcon","SVGLoader","src","EditIcon","width","height","externalDocs","externalDocsLink","href","_c","target","_d","textDecoration","pointerEvents","_g","_f","_k","_j","_l","_m","urlRegex","_o","editExternalDocs","e","stopPropagation","_p","_q","paramDescContainer_separator","deleteParamBtn","DeleteIcon","handleDeleteClick","apiInfoForm","onSubmit","preventDefault","Input","label","required","info","title","onClear","errorMsg","restrictedCharactersRegex","basic","apiDocRow","str","charAt","toUpperCase","slice","version","errorMessage","_e","paramsTable","TagsTable","data","headCells","tagsTableHeaders","saveNewRow","tag","oldTags","CommonDialog","status","textAlign","lineHeight","filter","_","i","text","fullWidth","onCancel","onClose","open","icon","deleteOutlinedIcon"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as a,useEffect as t}from"react";import r from"../../../node_modules/js-yaml/dist/js-yaml.mjs.js";import s from"./style.module.scss.js";const l={BOTH:"Invalid JSON or YAML format",JSON:"Invalid JSON format",YML:"Invalid YAML format"},i=({placeholder:i,label:o,value:d,onValidation:n,onChange:c,dataId:m,className:u="",errorMessage:j,acceptType:N="BOTH",fieldIsDisabled:p,withFooter:f=!0})=>{const[h,v]=a(),[O,y]=a(!0),T=e=>{if(""!==d){e.preventDefault();try{let e;"BOTH"!==N&&"JSON"!==N||!b(d)?"BOTH"!==N&&"YML"!==N||(e=r.dump(r.load(d),{indent:0})):e=JSON.stringify(JSON.parse(d),null,2),c(e),v(!0)}catch(e){console.error(e),v(!1)}}},b=e=>{try{return JSON.parse(e),!0}catch(e){return!1}},x=()=>{if("BOTH"===N||"JSON"===N)return b(d);if("BOTH"===N||"YML"===N)try{return r.load(d),!0}catch(e){return console.error(e),!1}};return t((()=>{try{T(d)}catch(e){}}),[]),e.jsxs("div",{className:`${s["json-editor-container"]} ${u} ${p?s.disabled:""}`,children:[o&&e.jsx("p",{className:`${s["json-editor-label"]}`,children:o}),e.jsxs("div",{className:`${s["json-editor"]} ${""!==d&&!1===h?s.invalid:""}`,children:[e.jsx("textarea",{disabled:p,"data-id":m,value:d,onChange:e=>{p||(v(void 0),y(!0),c(e.target.value))},onPaste:e=>{p||(v(void 0),y(!0),c(e.target.value))},min:"1",placeholder:i}),f&&e.jsxs("div",{className:`${s["actions-container"]}`,children:[e.jsx("button",{type:"button",className:s.validate,onClick:()=>{const e=x();v(e),n(e),y(!x())},"data-id":`${m}-VALIDATE-BUTTON`,disabled:""===d,children:"Validate"}),e.jsx("button",{type:"button",disabled:""===d||O,"data-id":`${m}-BEAUTIFY-BUTTON`,className:s.beautify,onClick:T,children:"Beautify"})]})]}),(j||""!==d&&!1===h)&&e.jsx("p",{className:s["error-message"],children:j||l[N]})]})};export{i as default};
1
+ import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as a,useEffect as t}from"react";import r from"../../../node_modules/js-yaml/dist/js-yaml.mjs.js";import s from"./style.module.scss.js";import l from"../../constants/regex.js";const o={BOTH:"Invalid JSON or YAML format",JSON:"Invalid JSON format",YML:"Invalid YAML format"},i=({placeholder:i,label:n,value:d,onValidation:c,onChange:m,dataId:u,className:j="",errorMessage:p,acceptType:v="BOTH",fieldIsDisabled:N,withFooter:f=!0})=>{const[h,O]=a(),[y,T]=a(!0),b=e=>{if(""!==d){e.preventDefault();try{let e;"BOTH"!==v&&"JSON"!==v||!x(d)?"BOTH"!==v&&"YML"!==v||(e=r.dump(r.load(d),{indent:0})):e=JSON.stringify(JSON.parse(d),null,2),m(e),O(!0)}catch(e){console.error(e),O(!1)}}},x=e=>{try{return JSON.parse(e),!0}catch(e){return!1}},I=()=>{if("BOTH"===v||"JSON"===v)return x(d);if("BOTH"===v||"YML"===v)try{return r.load(d),!0}catch(e){return console.error(e),!1}};return t((()=>{try{b(d)}catch(e){}}),[]),e.jsxs("div",{className:`${s["json-editor-container"]} ${j} ${N?s.disabled:""}`,children:[n&&e.jsx("p",{className:`${s["json-editor-label"]}`,children:n}),e.jsxs("div",{className:`${s["json-editor"]} ${""!==d&&!1===h?s.invalid:""}`,children:[e.jsx("textarea",{disabled:N,"data-id":u,value:d,onChange:e=>{N||l.ASCII.test(e.target.value)&&(O(void 0),T(!0),m(e.target.value))},onPaste:e=>{N||l.ASCII.test(e.target.value)&&(O(void 0),T(!0),m(e.target.value))},min:"1",placeholder:i}),f&&e.jsxs("div",{className:`${s["actions-container"]}`,children:[e.jsx("button",{type:"button",className:s.validate,onClick:()=>{const e=I();O(e),c(e),T(!I())},"data-id":`${u}-VALIDATE-BUTTON`,disabled:""===d,children:"Validate"}),e.jsx("button",{type:"button",disabled:""===d||y,"data-id":`${u}-BEAUTIFY-BUTTON`,className:s.beautify,onClick:b,children:"Beautify"})]})]}),(p||""!==d&&!1===h)&&e.jsx("p",{className:s["error-message"],children:p||o[v]})]})};export{i as default};
2
2
  //# sourceMappingURL=JsonInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonInput.js","sources":["../../../../src/components/JsonInput/JsonInput.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport yaml from 'js-yaml'\r\nimport styles from './style.module.scss'\r\n\r\nconst errorMapping = {\r\n BOTH: 'Invalid JSON or YAML format',\r\n JSON: 'Invalid JSON format',\r\n YML: 'Invalid YAML format',\r\n}\r\n\r\nconst JsonInput = ({\r\n placeholder,\r\n label,\r\n value,\r\n onValidation,\r\n onChange,\r\n dataId,\r\n className = '',\r\n errorMessage,\r\n acceptType = 'BOTH',\r\n fieldIsDisabled,\r\n withFooter = true,\r\n}) => {\r\n const [isValid, setIsValid] = useState()\r\n const [disabledBeautify, setDisabledBeautify] = useState(true)\r\n\r\n const handlePrettify = (e) => {\r\n if (value === '') return\r\n e.preventDefault()\r\n try {\r\n let prettifiedData\r\n if ((acceptType === 'BOTH' || acceptType === 'JSON') && isValidJson(value)) {\r\n // If it's valid JSON, prettify JSON\r\n prettifiedData = JSON.stringify(JSON.parse(value), null, 2)\r\n } else if (acceptType === 'BOTH' || acceptType === 'YML') {\r\n // If it's not valid JSON, prettify YAML\r\n prettifiedData = yaml.dump(yaml.load(value), { indent: 0 })\r\n }\r\n onChange(prettifiedData)\r\n setIsValid(true) // Reset validity status\r\n } catch (error) {\r\n console.error(error)\r\n setIsValid(false)\r\n }\r\n }\r\n\r\n // Function to check if input is valid JSON\r\n const isValidJson = (str) => {\r\n try {\r\n JSON.parse(str)\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n }\r\n\r\n const checkIsValid = () => {\r\n if (acceptType === 'BOTH' || acceptType === 'JSON') {\r\n return isValidJson(value)\r\n } else if (acceptType === 'BOTH' || acceptType === 'YML') {\r\n try {\r\n // Try parsing as YAML\r\n yaml.load(value)\r\n return true\r\n } catch (error) {\r\n console.error(error)\r\n return false\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n try {\r\n handlePrettify(value)\r\n } catch {}\r\n }, [])\r\n\r\n return (\r\n <div\r\n className={`${styles['json-editor-container']} ${className} ${\r\n fieldIsDisabled ? styles.disabled : ''\r\n }`}\r\n >\r\n {label && <p className={`${styles['json-editor-label']}`}>{label}</p>}\r\n <div\r\n className={`${styles['json-editor']} ${\r\n value !== '' && isValid === false ? styles.invalid : ''\r\n }`}\r\n >\r\n <textarea\r\n disabled={fieldIsDisabled}\r\n data-id={dataId}\r\n value={value}\r\n onChange={(e) => {\r\n if (fieldIsDisabled) return\r\n setIsValid(undefined)\r\n setDisabledBeautify(true)\r\n onChange(e.target.value)\r\n }}\r\n onPaste={(e) => {\r\n if (fieldIsDisabled) return\r\n setIsValid(undefined)\r\n setDisabledBeautify(true)\r\n onChange(e.target.value)\r\n }}\r\n min=\"1\"\r\n placeholder={placeholder}\r\n />\r\n {withFooter && (\r\n <div className={`${styles['actions-container']}`}>\r\n <button\r\n type=\"button\"\r\n className={styles.validate}\r\n onClick={() => {\r\n const valid = checkIsValid()\r\n setIsValid(valid)\r\n onValidation(valid)\r\n setDisabledBeautify(!checkIsValid())\r\n }}\r\n data-id={`${dataId}-VALIDATE-BUTTON`}\r\n disabled={value === ''}\r\n >\r\n Validate\r\n </button>\r\n <button\r\n type=\"button\"\r\n disabled={value === '' || disabledBeautify}\r\n data-id={`${dataId}-BEAUTIFY-BUTTON`}\r\n className={styles.beautify}\r\n onClick={handlePrettify}\r\n >\r\n Beautify\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n {(errorMessage || (value !== '' && isValid === false)) && (\r\n <p className={styles['error-message']}>{errorMessage || errorMapping[acceptType]}</p>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default JsonInput\r\n"],"names":["errorMapping","BOTH","JSON","YML","JsonInput","placeholder","label","value","onValidation","onChange","dataId","className","errorMessage","acceptType","fieldIsDisabled","withFooter","isValid","setIsValid","useState","disabledBeautify","setDisabledBeautify","handlePrettify","e","preventDefault","prettifiedData","isValidJson","yaml","dump","load","indent","stringify","parse","error","console","str","checkIsValid","useEffect","_a","_jsxs","jsxs","styles","disabled","children","_jsx","jsx","invalid","undefined","target","onPaste","min","type","validate","onClick","valid","beautify"],"mappings":"4MAIA,MAAMA,EAAe,CACnBC,KAAM,8BACNC,KAAM,sBACNC,IAAK,uBAGDC,EAAY,EAChBC,cACAC,QACAC,QACAC,eACAC,WACAC,SACAC,YAAY,GACZC,eACAC,aAAa,OACbC,kBACAC,cAAa,MAEb,MAAOC,EAASC,GAAcC,KACvBC,EAAkBC,GAAuBF,GAAS,GAEnDG,EAAkBC,IACtB,GAAc,KAAVf,EAAJ,CACAe,EAAEC,iBACF,IACE,IAAIC,EACgB,SAAfX,GAAwC,SAAfA,IAA0BY,EAAYlB,GAG1C,SAAfM,GAAwC,QAAfA,IAElCW,EAAiBE,EAAKC,KAAKD,EAAKE,KAAKrB,GAAQ,CAAEsB,OAAQ,KAHvDL,EAAiBtB,KAAK4B,UAAU5B,KAAK6B,MAAMxB,GAAQ,KAAM,GAK3DE,EAASe,GACTP,GAAW,EACZ,CAAC,MAAOe,GACPC,QAAQD,MAAMA,GACdf,GAAW,EACZ,CAhBuB,CAgBvB,EAIGQ,EAAeS,IACnB,IAEE,OADAhC,KAAK6B,MAAMG,IACJ,CACR,CAAC,MAAOF,GACP,OAAO,CACR,GAGGG,EAAe,KACnB,GAAmB,SAAftB,GAAwC,SAAfA,EAC3B,OAAOY,EAAYlB,GACd,GAAmB,SAAfM,GAAwC,QAAfA,EAClC,IAGE,OADAa,EAAKE,KAAKrB,IACH,CACR,CAAC,MAAOyB,GAEP,OADAC,QAAQD,MAAMA,IACP,CACR,CACF,EASH,OANAI,GAAU,KACR,IACEf,EAAed,EAChB,CAAC,MAAM8B,GAAE,IACT,IAGDC,EACEC,KAAA,MAAA,CAAA5B,UAAW,GAAG6B,EAAO,4BAA4B7B,KAC/CG,EAAkB0B,EAAOC,SAAW,KACpCC,SAAA,CAEDpC,GAASqC,EAAAC,IAAA,IAAA,CAAGjC,UAAW,GAAG6B,EAAO,gCAAyBlC,IAC3DgC,EACEC,KAAA,MAAA,CAAA5B,UAAW,GAAG6B,EAAO,kBACT,KAAVjC,IAA4B,IAAZS,EAAoBwB,EAAOK,QAAU,KAGvDH,SAAA,CAAAC,EAAAC,IAAA,WAAA,CACEH,SAAU3B,YACDJ,EACTH,MAAOA,EACPE,SAAWa,IACLR,IACJG,OAAW6B,GACX1B,GAAoB,GACpBX,EAASa,EAAEyB,OAAOxC,OAAM,EAE1ByC,QAAU1B,IACJR,IACJG,OAAW6B,GACX1B,GAAoB,GACpBX,EAASa,EAAEyB,OAAOxC,OAAM,EAE1B0C,IAAI,IACJ5C,YAAaA,IAEdU,GACCuB,EAAAA,KAAK,MAAA,CAAA3B,UAAW,GAAG6B,EAAO,uBAAsBE,SAAA,CAC9CC,EAAAA,IACE,SAAA,CAAAO,KAAK,SACLvC,UAAW6B,EAAOW,SAClBC,QAAS,KACP,MAAMC,EAAQlB,IACdlB,EAAWoC,GACX7C,EAAa6C,GACbjC,GAAqBe,IAAe,YAE7B,GAAGzB,oBACZ+B,SAAoB,KAAVlC,wBAIZoC,EAAAC,IAAA,SAAA,CACEM,KAAK,SACLT,SAAoB,KAAVlC,GAAgBY,EAAgB,UACjC,GAAGT,oBACZC,UAAW6B,EAAOc,SAClBF,QAAS/B,EAGFqB,SAAA,oBAIb9B,GAA2B,KAAVL,IAA4B,IAAZS,IACjC2B,EAAGC,IAAA,IAAA,CAAAjC,UAAW6B,EAAO,0BAAmB5B,GAAgBZ,EAAaa,OAG1E"}
1
+ {"version":3,"file":"JsonInput.js","sources":["../../../../src/components/JsonInput/JsonInput.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport yaml from 'js-yaml'\r\nimport styles from './style.module.scss'\r\nimport regex from '../../constants/regex'\r\n\r\nconst errorMapping = {\r\n BOTH: 'Invalid JSON or YAML format',\r\n JSON: 'Invalid JSON format',\r\n YML: 'Invalid YAML format',\r\n}\r\n\r\nconst JsonInput = ({\r\n placeholder,\r\n label,\r\n value,\r\n onValidation,\r\n onChange,\r\n dataId,\r\n className = '',\r\n errorMessage,\r\n acceptType = 'BOTH',\r\n fieldIsDisabled,\r\n withFooter = true,\r\n}) => {\r\n const [isValid, setIsValid] = useState()\r\n const [disabledBeautify, setDisabledBeautify] = useState(true)\r\n\r\n const handlePrettify = (e) => {\r\n if (value === '') return\r\n e.preventDefault()\r\n try {\r\n let prettifiedData\r\n if ((acceptType === 'BOTH' || acceptType === 'JSON') && isValidJson(value)) {\r\n // If it's valid JSON, prettify JSON\r\n prettifiedData = JSON.stringify(JSON.parse(value), null, 2)\r\n } else if (acceptType === 'BOTH' || acceptType === 'YML') {\r\n // If it's not valid JSON, prettify YAML\r\n prettifiedData = yaml.dump(yaml.load(value), { indent: 0 })\r\n }\r\n onChange(prettifiedData)\r\n setIsValid(true) // Reset validity status\r\n } catch (error) {\r\n console.error(error)\r\n setIsValid(false)\r\n }\r\n }\r\n\r\n // Function to check if input is valid JSON\r\n const isValidJson = (str) => {\r\n try {\r\n JSON.parse(str)\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n }\r\n\r\n const checkIsValid = () => {\r\n if (acceptType === 'BOTH' || acceptType === 'JSON') {\r\n return isValidJson(value)\r\n } else if (acceptType === 'BOTH' || acceptType === 'YML') {\r\n try {\r\n // Try parsing as YAML\r\n yaml.load(value)\r\n return true\r\n } catch (error) {\r\n console.error(error)\r\n return false\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n try {\r\n handlePrettify(value)\r\n } catch {}\r\n }, [])\r\n\r\n return (\r\n <div\r\n className={`${styles['json-editor-container']} ${className} ${\r\n fieldIsDisabled ? styles.disabled : ''\r\n }`}\r\n >\r\n {label && <p className={`${styles['json-editor-label']}`}>{label}</p>}\r\n <div\r\n className={`${styles['json-editor']} ${\r\n value !== '' && isValid === false ? styles.invalid : ''\r\n }`}\r\n >\r\n <textarea\r\n disabled={fieldIsDisabled}\r\n data-id={dataId}\r\n value={value}\r\n onChange={(e) => {\r\n if (fieldIsDisabled) return\r\n if (regex.ASCII.test(e.target.value)) {\r\n setIsValid(undefined)\r\n setDisabledBeautify(true)\r\n onChange(e.target.value)\r\n }\r\n }}\r\n onPaste={(e) => {\r\n if (fieldIsDisabled) return\r\n if (regex.ASCII.test(e.target.value)) {\r\n setIsValid(undefined)\r\n setDisabledBeautify(true)\r\n onChange(e.target.value)\r\n }\r\n }}\r\n min=\"1\"\r\n placeholder={placeholder}\r\n />\r\n {withFooter && (\r\n <div className={`${styles['actions-container']}`}>\r\n <button\r\n type=\"button\"\r\n className={styles.validate}\r\n onClick={() => {\r\n const valid = checkIsValid()\r\n setIsValid(valid)\r\n onValidation(valid)\r\n setDisabledBeautify(!checkIsValid())\r\n }}\r\n data-id={`${dataId}-VALIDATE-BUTTON`}\r\n disabled={value === ''}\r\n >\r\n Validate\r\n </button>\r\n <button\r\n type=\"button\"\r\n disabled={value === '' || disabledBeautify}\r\n data-id={`${dataId}-BEAUTIFY-BUTTON`}\r\n className={styles.beautify}\r\n onClick={handlePrettify}\r\n >\r\n Beautify\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n {(errorMessage || (value !== '' && isValid === false)) && (\r\n <p className={styles['error-message']}>{errorMessage || errorMapping[acceptType]}</p>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default JsonInput\r\n"],"names":["errorMapping","BOTH","JSON","YML","JsonInput","placeholder","label","value","onValidation","onChange","dataId","className","errorMessage","acceptType","fieldIsDisabled","withFooter","isValid","setIsValid","useState","disabledBeautify","setDisabledBeautify","handlePrettify","e","preventDefault","prettifiedData","isValidJson","yaml","dump","load","indent","stringify","parse","error","console","str","checkIsValid","useEffect","_a","_jsxs","jsxs","styles","disabled","children","_jsx","jsx","invalid","regex","ASCII","test","target","undefined","onPaste","min","type","validate","onClick","valid","beautify"],"mappings":"oPAKA,MAAMA,EAAe,CACnBC,KAAM,8BACNC,KAAM,sBACNC,IAAK,uBAGDC,EAAY,EAChBC,cACAC,QACAC,QACAC,eACAC,WACAC,SACAC,YAAY,GACZC,eACAC,aAAa,OACbC,kBACAC,cAAa,MAEb,MAAOC,EAASC,GAAcC,KACvBC,EAAkBC,GAAuBF,GAAS,GAEnDG,EAAkBC,IACtB,GAAc,KAAVf,EAAJ,CACAe,EAAEC,iBACF,IACE,IAAIC,EACgB,SAAfX,GAAwC,SAAfA,IAA0BY,EAAYlB,GAG1C,SAAfM,GAAwC,QAAfA,IAElCW,EAAiBE,EAAKC,KAAKD,EAAKE,KAAKrB,GAAQ,CAAEsB,OAAQ,KAHvDL,EAAiBtB,KAAK4B,UAAU5B,KAAK6B,MAAMxB,GAAQ,KAAM,GAK3DE,EAASe,GACTP,GAAW,EACZ,CAAC,MAAOe,GACPC,QAAQD,MAAMA,GACdf,GAAW,EACZ,CAhBuB,CAgBvB,EAIGQ,EAAeS,IACnB,IAEE,OADAhC,KAAK6B,MAAMG,IACJ,CACR,CAAC,MAAOF,GACP,OAAO,CACR,GAGGG,EAAe,KACnB,GAAmB,SAAftB,GAAwC,SAAfA,EAC3B,OAAOY,EAAYlB,GACd,GAAmB,SAAfM,GAAwC,QAAfA,EAClC,IAGE,OADAa,EAAKE,KAAKrB,IACH,CACR,CAAC,MAAOyB,GAEP,OADAC,QAAQD,MAAMA,IACP,CACR,CACF,EASH,OANAI,GAAU,KACR,IACEf,EAAed,EAChB,CAAC,MAAM8B,GAAE,IACT,IAGDC,EACEC,KAAA,MAAA,CAAA5B,UAAW,GAAG6B,EAAO,4BAA4B7B,KAC/CG,EAAkB0B,EAAOC,SAAW,KACpCC,SAAA,CAEDpC,GAASqC,EAAAC,IAAA,IAAA,CAAGjC,UAAW,GAAG6B,EAAO,gCAAyBlC,IAC3DgC,EACEC,KAAA,MAAA,CAAA5B,UAAW,GAAG6B,EAAO,kBACT,KAAVjC,IAA4B,IAAZS,EAAoBwB,EAAOK,QAAU,KAGvDH,SAAA,CAAAC,EAAAC,IAAA,WAAA,CACEH,SAAU3B,YACDJ,EACTH,MAAOA,EACPE,SAAWa,IACLR,GACAgC,EAAMC,MAAMC,KAAK1B,EAAE2B,OAAO1C,SAC5BU,OAAWiC,GACX9B,GAAoB,GACpBX,EAASa,EAAE2B,OAAO1C,OACnB,EAEH4C,QAAU7B,IACJR,GACAgC,EAAMC,MAAMC,KAAK1B,EAAE2B,OAAO1C,SAC5BU,OAAWiC,GACX9B,GAAoB,GACpBX,EAASa,EAAE2B,OAAO1C,OACnB,EAEH6C,IAAI,IACJ/C,YAAaA,IAEdU,GACCuB,EAAAA,KAAK,MAAA,CAAA3B,UAAW,GAAG6B,EAAO,uBAAsBE,SAAA,CAC9CC,EAAAA,IACE,SAAA,CAAAU,KAAK,SACL1C,UAAW6B,EAAOc,SAClBC,QAAS,KACP,MAAMC,EAAQrB,IACdlB,EAAWuC,GACXhD,EAAagD,GACbpC,GAAqBe,IAAe,YAE7B,GAAGzB,oBACZ+B,SAAoB,KAAVlC,wBAIZoC,EAAAC,IAAA,SAAA,CACES,KAAK,SACLZ,SAAoB,KAAVlC,GAAgBY,EAAgB,UACjC,GAAGT,oBACZC,UAAW6B,EAAOiB,SAClBF,QAASlC,EAGFqB,SAAA,oBAIb9B,GAA2B,KAAVL,IAA4B,IAAZS,IACjC2B,EAAGC,IAAA,IAAA,CAAAjC,UAAW6B,EAAO,0BAAmB5B,GAAgBZ,EAAaa,OAG1E"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as o,useEffect as i}from"react";import s from"./LivePreview.module.scss.js";import l from"../SimpleLabelValue/SimpleLabelValue.js";import t from"../MethodAccordion/MethodAccordion.js";import{useFormikContext as n}from"../../../node_modules/formik/dist/formik.esm.js";import{tagsTableHeaders as r,methodColorMapping as a}from"../../constants/index.js";import d from"../table/tags-table.js";import{d as c}from"../../../_virtual/index.js";import p from"../Tooltip/Tooltip.js";const v=({transformedData:v})=>{const[m,u]=o();o({});const[x,h]=o([]);o({});const{values:j}=n(),{info:g,components:D,tags:f}=j,{securitySchemes:b}=D,y=b&&"object"==typeof b&&Object.keys(b).length?Object.keys(b)[0]:null;i((()=>{j.tags&&(u(N(j.tags,!0)),h(j.tags))}),[j.tags]);const N=(o,i)=>o.map(((o,l)=>{var t,n,r,a,d,v,m,u,x,h,j,g,D,f,b;return{id:l,tagName:o.name,description:e.jsx(p,{allowHTML:!0,disabled:(null===(t=o.description)||void 0===t?void 0:t.length)<=12,content:e.jsx("div",{style:{padding:"0.625rem"},children:o.description}),arrowWithBorder:!0,placement:"bottom-end",type:"function",delay:[0,0],children:e.jsx("div",{className:s.paramDescContainer,children:e.jsxs("p",{className:s.editDescBtn,children:[o.description?o.description.substring(0,12):"-",o.description&&o.description.length>12?"...":""]})})},`${l}-description`),externalDocs:e.jsxs("div",{className:s.paramDescContainer,children:[o.externalDocs&&o.externalDocs.url&&"-"!=o.externalDocs.url?e.jsxs("a",{className:s.editDescBtn,href:(null===(n=o.externalDocs)||void 0===n?void 0:n.url)&&(null===(r=o.externalDocs)||void 0===r?void 0:r.url.indexOf("http"))>-1?null===(a=o.externalDocs)||void 0===a?void 0:a.url:`https://${null===(d=o.externalDocs)||void 0===d?void 0:d.url}`,rel:"noopener noreferrer",target:"_blank",children:[(null===(v=null==o?void 0:o.externalDocs)||void 0===v?void 0:v.description)?null===(u=null===(m=null==o?void 0:o.externalDocs)||void 0===m?void 0:m.description)||void 0===u?void 0:u.substring(0,12):"-",(null===(x=null==o?void 0:o.externalDocs)||void 0===x?void 0:x.description)&&(null===(j=null===(h=null==o?void 0:o.externalDocs)||void 0===h?void 0:h.description)||void 0===j?void 0:j.length)>12?"...":""]}):e.jsxs(c.Button,{className:s.editDescBtn,variant:"link",color:"action",children:[(null===(g=o.externalDocs)||void 0===g?void 0:g.description)?null===(D=o.externalDocs)||void 0===D?void 0:D.description.substring(0,12):"-",(null===(f=o.externalDocs)||void 0===f?void 0:f.description)&&(null===(b=o.externalDocs)||void 0===b?void 0:b.description.length)>12?"...":""]}),!i&&e.jsx("div",{className:s.paramDescContainer_separator}),!i&&e.jsx(c.Button,{className:s.deleteParamBtn,variant:"link",color:"error",onClick:()=>null})]})}}));return e.jsx("div",{children:e.jsx("div",{className:"row",children:e.jsxs("div",{className:"col-md-12",children:[e.jsx("p",{className:s.apiName,children:null==g?void 0:g.title}),e.jsx(l,{label:"API authentication type: ",value:y?b[y].scheme||b[y].type:"-"},"APIAuthenticationType"),e.jsx(l,{label:"Version: ",value:(null==g?void 0:g.version)||"-"},"version"),e.jsx(l,{label:"Description: ",value:(null==g?void 0:g.description)||"-"},"description"),e.jsx(l,{label:"Tags: "},"tags"),e.jsx(d,{id:"tags-table",data:m,headCells:r,isFormOpen:!1,setIsFormOpen:()=>null,saveNewRow:()=>null,readOnly:!0}),e.jsx(l,{label:"Endpoints "},"endpoints"),j.paths.map((o=>e.jsx("div",{className:s.methodsContainer,children:Object.entries(o.methods.sort(((e,o)=>a[e.type].order+a[o.type].order)).reduce(((e,o)=>{var i;return((null===(i=o.tags)||void 0===i?void 0:i.length)?null==o?void 0:o.tags:["default"]).forEach((i=>{e[i]||(e[i]=[]),e[i].push(o)})),e}),{})).map((([i,s])=>e.jsxs("div",{children:[e.jsx("h3",{children:i}),null==s?void 0:s.map(((i,s)=>e.jsx(t,{readOnly:!0,method:i,path:o.path,tags:j.tags})))]},i)))},o.path)))]})})})};export{v as default};
1
+ import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as i,useEffect as l}from"react";import s from"./LivePreview.module.scss.js";import o from"../SimpleLabelValue/SimpleLabelValue.js";import t from"../MethodAccordion/MethodAccordion.js";import{useFormikContext as n}from"../../../node_modules/formik/dist/formik.esm.js";import{tagsTableHeaders as r,methodColorMapping as a}from"../../constants/index.js";import d from"../table/tags-table.js";import{d as c}from"../../../_virtual/index.js";import v from"../Tooltip/Tooltip.js";const p=({transformedData:p})=>{var m,u;const[x,h]=i();i({});const[j,g]=i([]);i({});const{values:D}=n(),{info:f,components:b,tags:N}=D,{securitySchemes:y}=b,C=y&&"object"==typeof y&&Object.keys(y).length?Object.keys(y)[0]:null;l((()=>{D.tags&&(h(w(D.tags,!0)),g(D.tags))}),[D.tags]);const w=(i,l)=>i.map(((i,o)=>{var t,n,r,a,d,p,m,u,x,h,j,g,D,f,b;return{id:o,tagName:i.name,description:e.jsx(v,{allowHTML:!0,disabled:(null===(t=i.description)||void 0===t?void 0:t.length)<=12,content:e.jsx("div",{style:{padding:"0.625rem"},children:i.description}),arrowWithBorder:!0,placement:"bottom-end",type:"function",delay:[0,0],children:e.jsx("div",{className:s.paramDescContainer,children:e.jsxs("p",{className:s.editDescBtn,children:[i.description?i.description.substring(0,12):"-",i.description&&i.description.length>12?"...":""]})})},`${o}-description`),externalDocs:e.jsxs("div",{className:s.paramDescContainer,children:[i.externalDocs&&i.externalDocs.url&&"-"!=i.externalDocs.url?e.jsxs("a",{className:s.editDescBtn,href:(null===(n=i.externalDocs)||void 0===n?void 0:n.url)&&(null===(r=i.externalDocs)||void 0===r?void 0:r.url.indexOf("http"))>-1?null===(a=i.externalDocs)||void 0===a?void 0:a.url:`https://${null===(d=i.externalDocs)||void 0===d?void 0:d.url}`,rel:"noopener noreferrer",target:"_blank",children:[(null===(p=null==i?void 0:i.externalDocs)||void 0===p?void 0:p.description)?null===(u=null===(m=null==i?void 0:i.externalDocs)||void 0===m?void 0:m.description)||void 0===u?void 0:u.substring(0,12):"-",(null===(x=null==i?void 0:i.externalDocs)||void 0===x?void 0:x.description)&&(null===(j=null===(h=null==i?void 0:i.externalDocs)||void 0===h?void 0:h.description)||void 0===j?void 0:j.length)>12?"...":""]}):e.jsxs(c.Button,{className:s.editDescBtn,variant:"link",color:"action",children:[(null===(g=i.externalDocs)||void 0===g?void 0:g.description)?null===(D=i.externalDocs)||void 0===D?void 0:D.description.substring(0,12):"-",(null===(f=i.externalDocs)||void 0===f?void 0:f.description)&&(null===(b=i.externalDocs)||void 0===b?void 0:b.description.length)>12?"...":""]}),!l&&e.jsx("div",{className:s.paramDescContainer_separator}),!l&&e.jsx(c.Button,{className:s.deleteParamBtn,variant:"link",color:"error",onClick:()=>null})]})}}));return e.jsx("div",{className:s.livePreviewContainer,children:e.jsx("div",{className:"row",children:e.jsxs("div",{className:"col-md-12",children:[e.jsxs("div",{className:s.titleContainer,children:[e.jsx("p",{className:s.apiName,children:(null===(m=null==f?void 0:f.title)||void 0===m?void 0:m.trim())||"-"}),e.jsx(c.Chip,{className:s.livePreviewChip,children:"Live Preview"})]}),e.jsx(o,{label:"API authentication type: ",value:C?y[C].scheme||y[C].type:"-"},"APIAuthenticationType"),e.jsx(o,{label:"Version: ",value:(null==f?void 0:f.version)||"-"},"version"),e.jsx(o,{label:"Description: ",value:(null===(u=null==f?void 0:f.description)||void 0===u?void 0:u.trim())||"-"},"description"),e.jsx(o,{label:"Tags: "},"tags"),e.jsx(d,{id:"tags-table",data:x,headCells:r,isFormOpen:!1,setIsFormOpen:()=>null,saveNewRow:()=>null,readOnly:!0}),e.jsx(o,{label:"Endpoints "},"endpoints"),D.paths.map((i=>e.jsx("div",{className:s.methodsContainer,children:Object.entries(i.methods.sort(((e,i)=>a[e.type].order+a[i.type].order)).reduce(((e,i)=>{var l;return((null===(l=i.tags)||void 0===l?void 0:l.length)?null==i?void 0:i.tags:["default"]).forEach((l=>{e[l]||(e[l]=[]),e[l].push(i)})),e}),{})).map((([l,s])=>e.jsxs("div",{children:[e.jsx("h3",{children:l}),null==s?void 0:s.map(((l,s)=>e.jsx(t,{readOnly:!0,method:l,path:i.path,tags:D.tags})))]},l)))},i.path)))]})})})};export{p as default};
2
2
  //# sourceMappingURL=LivePreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LivePreview.js","sources":["../../../../src/components/LivePreview/LivePreview.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport styles from './LivePreview.module.scss'\r\nimport SimpleLabelValue from '../../components/SimpleLabelValue'\r\nimport MethodsAccordion from '../../components/MethodAccordion/MethodAccordion'\r\nimport { TransformedOpenApi } from '../../types/transformedOpenApi'\r\nimport { useFormikContext } from 'formik'\r\nimport { methodColorMapping, tagsTableHeaders } from '../../constants/index'\r\nimport TagsTable from '../table/tags-table'\r\nimport { Button } from 'digitinary-ui'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\n\r\ninterface LivePreviewProps {\r\n transformedData?: TransformedOpenApi\r\n}\r\n\r\nconst LivePreview: React.FC<LivePreviewProps> = ({ transformedData }) => {\r\n const [tableRecords, setTableRecords] = useState()\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tableData, setTableData] = useState([])\r\n const [externalTooltipRefs, setExternalTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const { values } = useFormikContext<TransformedOpenApi>()\r\n const { info, components, tags } = values\r\n const { securitySchemes } = components\r\n const securityKey =\r\n securitySchemes && typeof securitySchemes == 'object' && Object.keys(securitySchemes).length\r\n ? Object.keys(securitySchemes)[0]\r\n : null\r\n\r\n useEffect(() => {\r\n if (values.tags) {\r\n setTableRecords(generateTableData(values.tags, true))\r\n setTableData(values.tags)\r\n }\r\n }, [values.tags])\r\n\r\n const generateTableData = (items, readOnly) => {\r\n return items.map((item, index) => ({\r\n id: index,\r\n tagName: item.name,\r\n description: (\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={item.description?.length <= 12}\r\n content={<div style={{ padding: '0.625rem' }}>{item.description}</div>}\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n >\r\n <div className={styles.paramDescContainer}>\r\n <p className={styles.editDescBtn}>\r\n {item.description ? item.description.substring(0, 12) : '-'}\r\n {item.description && item.description.length > 12 ? '...' : ''}\r\n </p>\r\n </div>\r\n </Tooltip>\r\n ),\r\n externalDocs: (\r\n <div className={styles.paramDescContainer}>\r\n {item.externalDocs && item.externalDocs.url && item.externalDocs.url != '-' ? (\r\n <a\r\n className={styles.editDescBtn}\r\n href={\r\n item.externalDocs?.url && item.externalDocs?.url.indexOf('http') > -1\r\n ? item.externalDocs?.url\r\n : `https://${item.externalDocs?.url}`\r\n }\r\n rel=\"noopener noreferrer\"\r\n target=\"_blank\"\r\n >\r\n {item?.externalDocs?.description\r\n ? item?.externalDocs?.description?.substring(0, 12)\r\n : '-'}\r\n {item?.externalDocs?.description && item?.externalDocs?.description?.length > 12\r\n ? '...'\r\n : ''}\r\n </a>\r\n ) : (\r\n <Button className={styles.editDescBtn} variant=\"link\" color=\"action\">\r\n {item.externalDocs?.description\r\n ? item.externalDocs?.description.substring(0, 12)\r\n : '-'}\r\n {item.externalDocs?.description && item.externalDocs?.description.length > 12\r\n ? '...'\r\n : ''}\r\n </Button>\r\n )}\r\n\r\n {/* </Tooltip> */}\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n onClick={() => null}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }))\r\n }\r\n\r\n return (\r\n <div>\r\n <div className=\"row\">\r\n <div className=\"col-md-12\">\r\n <p className={styles.apiName}>{info?.title}</p>\r\n <SimpleLabelValue\r\n key={'APIAuthenticationType'}\r\n label={'API authentication type: '}\r\n value={\r\n !!securityKey\r\n ? securitySchemes[securityKey].scheme || securitySchemes[securityKey].type\r\n : '-'\r\n }\r\n />\r\n <SimpleLabelValue key={'version'} label={'Version: '} value={info?.version || '-'} />\r\n <SimpleLabelValue\r\n key={'description'}\r\n label={'Description: '}\r\n value={info?.description || '-'}\r\n />\r\n\r\n <SimpleLabelValue key={'tags'} label={'Tags: '} />\r\n <TagsTable\r\n id=\"tags-table\"\r\n data={tableRecords}\r\n headCells={tagsTableHeaders}\r\n isFormOpen={false}\r\n setIsFormOpen={() => null}\r\n saveNewRow={() => null}\r\n readOnly={true}\r\n />\r\n\r\n <SimpleLabelValue key={'endpoints'} label={'Endpoints '} />\r\n {values.paths.map((path) => (\r\n <div className={styles.methodsContainer} key={path.path}>\r\n {Object.entries(\r\n path.methods\r\n .sort(\r\n (a, b) => methodColorMapping[a.type].order + methodColorMapping[b.type].order\r\n )\r\n .reduce((groupedMethods, method) => {\r\n // Handle methods without tags\r\n const tags = method.tags?.length ? method?.tags : ['default']\r\n\r\n tags.forEach((tag) => {\r\n if (!groupedMethods[tag]) {\r\n groupedMethods[tag] = []\r\n }\r\n groupedMethods[tag].push(method)\r\n })\r\n\r\n return groupedMethods\r\n }, {})\r\n ).map(([tag, methods]) => (\r\n <div key={tag}>\r\n <h3>{tag}</h3>\r\n {methods?.map((method, methodIndex) => (\r\n <MethodsAccordion\r\n readOnly\r\n method={method}\r\n path={path.path}\r\n tags={values.tags}\r\n />\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default LivePreview\r\n"],"names":["LivePreview","transformedData","tableRecords","setTableRecords","useState","tableData","setTableData","values","useFormikContext","info","components","tags","securitySchemes","securityKey","Object","keys","length","useEffect","generateTableData","items","readOnly","map","item","index","id","tagName","name","description","_jsx","jsx","Tooltip","allowHTML","disabled","_a","content","style","padding","children","arrowWithBorder","placement","type","delay","className","styles","paramDescContainer","_jsxs","jsxs","editDescBtn","substring","externalDocs","url","href","_b","_c","indexOf","_d","_e","rel","target","_f","_h","_g","_j","_l","_k","Button","variant","color","_m","_o","_p","_q","paramDescContainer_separator","deleteParamBtn","onClick","apiName","title","SimpleLabelValue","label","value","scheme","version","TagsTable","data","headCells","tagsTableHeaders","isFormOpen","setIsFormOpen","saveNewRow","paths","path","methodsContainer","entries","methods","sort","a","b","methodColorMapping","order","reduce","groupedMethods","method","forEach","tag","push","methodIndex","MethodsAccordion"],"mappings":"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"}
1
+ {"version":3,"file":"LivePreview.js","sources":["../../../../src/components/LivePreview/LivePreview.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport styles from './LivePreview.module.scss'\r\nimport SimpleLabelValue from '../../components/SimpleLabelValue'\r\nimport MethodsAccordion from '../../components/MethodAccordion/MethodAccordion'\r\nimport { TransformedOpenApi } from '../../types/transformedOpenApi'\r\nimport { useFormikContext } from 'formik'\r\nimport { methodColorMapping, tagsTableHeaders } from '../../constants/index'\r\nimport TagsTable from '../table/tags-table'\r\nimport { Button, Chip } from 'digitinary-ui'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\n\r\ninterface LivePreviewProps {\r\n transformedData?: TransformedOpenApi\r\n}\r\n\r\nconst LivePreview: React.FC<LivePreviewProps> = ({ transformedData }) => {\r\n const [tableRecords, setTableRecords] = useState()\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tableData, setTableData] = useState([])\r\n const [externalTooltipRefs, setExternalTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const { values } = useFormikContext<TransformedOpenApi>()\r\n const { info, components, tags } = values\r\n const { securitySchemes } = components\r\n const securityKey =\r\n securitySchemes && typeof securitySchemes == 'object' && Object.keys(securitySchemes).length\r\n ? Object.keys(securitySchemes)[0]\r\n : null\r\n\r\n useEffect(() => {\r\n if (values.tags) {\r\n setTableRecords(generateTableData(values.tags, true))\r\n setTableData(values.tags)\r\n }\r\n }, [values.tags])\r\n\r\n const generateTableData = (items, readOnly) => {\r\n return items.map((item, index) => ({\r\n id: index,\r\n tagName: item.name,\r\n description: (\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={item.description?.length <= 12}\r\n content={<div style={{ padding: '0.625rem' }}>{item.description}</div>}\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n >\r\n <div className={styles.paramDescContainer}>\r\n <p className={styles.editDescBtn}>\r\n {item.description ? item.description.substring(0, 12) : '-'}\r\n {item.description && item.description.length > 12 ? '...' : ''}\r\n </p>\r\n </div>\r\n </Tooltip>\r\n ),\r\n externalDocs: (\r\n <div className={styles.paramDescContainer}>\r\n {item.externalDocs && item.externalDocs.url && item.externalDocs.url != '-' ? (\r\n <a\r\n className={styles.editDescBtn}\r\n href={\r\n item.externalDocs?.url && item.externalDocs?.url.indexOf('http') > -1\r\n ? item.externalDocs?.url\r\n : `https://${item.externalDocs?.url}`\r\n }\r\n rel=\"noopener noreferrer\"\r\n target=\"_blank\"\r\n >\r\n {item?.externalDocs?.description\r\n ? item?.externalDocs?.description?.substring(0, 12)\r\n : '-'}\r\n {item?.externalDocs?.description && item?.externalDocs?.description?.length > 12\r\n ? '...'\r\n : ''}\r\n </a>\r\n ) : (\r\n <Button className={styles.editDescBtn} variant=\"link\" color=\"action\">\r\n {item.externalDocs?.description\r\n ? item.externalDocs?.description.substring(0, 12)\r\n : '-'}\r\n {item.externalDocs?.description && item.externalDocs?.description.length > 12\r\n ? '...'\r\n : ''}\r\n </Button>\r\n )}\r\n\r\n {/* </Tooltip> */}\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n onClick={() => null}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }))\r\n }\r\n\r\n return (\r\n <div className={styles.livePreviewContainer}>\r\n <div className=\"row\">\r\n <div className=\"col-md-12\">\r\n <div className={styles.titleContainer}>\r\n <p className={styles.apiName}>{info?.title?.trim() || '-'}</p>\r\n <Chip className={styles.livePreviewChip}>Live Preview</Chip>\r\n </div>\r\n <SimpleLabelValue\r\n key={'APIAuthenticationType'}\r\n label={'API authentication type: '}\r\n value={\r\n !!securityKey\r\n ? securitySchemes[securityKey].scheme || securitySchemes[securityKey].type\r\n : '-'\r\n }\r\n />\r\n <SimpleLabelValue key={'version'} label={'Version: '} value={info?.version || '-'} />\r\n <SimpleLabelValue\r\n key={'description'}\r\n label={'Description: '}\r\n value={info?.description?.trim() || '-'}\r\n />\r\n\r\n <SimpleLabelValue key={'tags'} label={'Tags: '} />\r\n <TagsTable\r\n id=\"tags-table\"\r\n data={tableRecords}\r\n headCells={tagsTableHeaders}\r\n isFormOpen={false}\r\n setIsFormOpen={() => null}\r\n saveNewRow={() => null}\r\n readOnly={true}\r\n />\r\n\r\n <SimpleLabelValue key={'endpoints'} label={'Endpoints '} />\r\n {values.paths.map((path) => (\r\n <div className={styles.methodsContainer} key={path.path}>\r\n {Object.entries(\r\n path.methods\r\n .sort(\r\n (a, b) => methodColorMapping[a.type].order + methodColorMapping[b.type].order\r\n )\r\n .reduce((groupedMethods, method) => {\r\n // Handle methods without tags\r\n const tags = method.tags?.length ? method?.tags : ['default']\r\n\r\n tags.forEach((tag) => {\r\n if (!groupedMethods[tag]) {\r\n groupedMethods[tag] = []\r\n }\r\n groupedMethods[tag].push(method)\r\n })\r\n\r\n return groupedMethods\r\n }, {})\r\n ).map(([tag, methods]) => (\r\n <div key={tag}>\r\n <h3>{tag}</h3>\r\n {methods?.map((method, methodIndex) => (\r\n <MethodsAccordion\r\n readOnly\r\n method={method}\r\n path={path.path}\r\n tags={values.tags}\r\n />\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default LivePreview\r\n"],"names":["LivePreview","transformedData","tableRecords","setTableRecords","useState","tableData","setTableData","values","useFormikContext","info","components","tags","securitySchemes","securityKey","Object","keys","length","useEffect","generateTableData","items","readOnly","map","item","index","id","tagName","name","description","_jsx","jsx","Tooltip","allowHTML","disabled","_a","content","style","padding","children","arrowWithBorder","placement","type","delay","className","styles","paramDescContainer","_jsxs","jsxs","editDescBtn","substring","externalDocs","url","href","_b","_c","indexOf","_d","_e","rel","target","_f","_h","_g","_j","_l","_k","Button","variant","color","_m","_o","_p","_q","paramDescContainer_separator","deleteParamBtn","onClick","livePreviewContainer","titleContainer","apiName","title","trim","Chip","livePreviewChip","SimpleLabelValue","label","value","scheme","version","TagsTable","data","headCells","tagsTableHeaders","isFormOpen","setIsFormOpen","saveNewRow","paths","path","methodsContainer","entries","methods","sort","a","b","methodColorMapping","order","reduce","groupedMethods","method","forEach","tag","push","methodIndex","MethodsAccordion"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as s,useEffect as r}from"react";import{d as o}from"../../../_virtual/index.js";import n from"../SVGLoader/SVGLoader.js";import t from"../../assets/icons/DownArrow.svg.js";import a from"../../assets/icons/DeleteIcon.svg.js";import i from"../../assets/icons/EditIcon.svg.js";import l from"../../assets/icons/deleteOutlinedIcon.svg.js";import{httpStatusCodes as d,methodColorMapping as c,paramsTableHeaders as m}from"../../constants/index.js";import p from"../Tooltip/Tooltip.js";import u from"../SimpleLabelValue/SimpleLabelValue.js";import{handleStatusColor as h,capitalize as v}from"../../helpers/methodAccordion.helper.js";import j from"../table/table.js";import x from"../dialog/index.js";import g from"../JsonInput/JsonInput.js";import b from"./MethodAccordion.module.scss.js";const y=d.map((s=>({label:e.jsxs("div",{className:b.statusCodeOptionContainer,children:[e.jsx("div",{className:b.statusCodeOptionCircle,style:{backgroundColor:h(s)}}),e.jsx("span",{children:s})]}),value:s}))),N=({method:d,path:h,setFieldValue:N,readOnly:f,tags:C})=>{var S,w,A,O,D,q,T,k;const[I,B]=s({request:!1,response:!1,method:!1}),[F,$]=s(!1),[V,L]=s({}),[_,J]=s([]),[M,W]=s(!1),[E,G]=s(null),[H,P]=s(null),[R,z]=s(),[K,Q]=s([]),[U,X]=s(y[4]),Y=d.responses.find((e=>Number(e.code)===U.value))||"{}",Z=(e,s,r)=>{const o=_.map(((o,n)=>n===r?Object.assign(Object.assign({},o),{[e]:s}):o));J(o)},ee=(e,s)=>{G(e),P(s),W(!0)};return r((()=>{z(_.map(((s,r)=>{var t,l,c;return{id:r,paramName:s.name,paramType:v(s.in),schemaType:v(null===(t=s.schema)||void 0===t?void 0:t.type)||"",required:e.jsx(e.Fragment,{children:f?s.required?"True":"False":e.jsx(o.Switch,{checked:s.required,onClick:()=>{if(f)return null;Z("required",!s.required,r),N(`parameters[${r}][required]`,!s.required)}})}),description:e.jsxs("div",{className:b.paramDescContainer,children:[e.jsx(p,{allowHTML:!0,disabled:(null===(l=d.parameters[r].description)||void 0===l?void 0:l.length)<=12,content:e.jsx("div",{style:{padding:"0.625rem"},children:d.parameters[r].description}),arrowWithBorder:!0,placement:"bottom-end",type:"function",delay:[0,0],onShow:()=>{var e;return null===(e=V[r])||void 0===e?void 0:e.hide()},children:e.jsxs("p",{style:{alignSelf:"center"},children:[d.parameters[r].description?d.parameters[r].description.substring(0,12):"-",d.parameters[r].description&&d.parameters[r].description.length>12?"...":""]})},`${r}-description`),e.jsx(p,{allowHTML:!0,arrowWithBorder:!0,placement:"bottom-end",type:"function",trigger:"click",delay:[0,0],onCreate:e=>L((s=>Object.assign(Object.assign({},s),{[r]:e}))),content:e.jsxs("div",{className:b.editDescTooltipContent,children:[e.jsx("p",{className:b.editDescTooltipContent_header,children:"Description"}),e.jsx(o.TextArea,{placeholder:"Describe parameter...",value:s.description,disabled:f,onChange:e=>Z("description",e,r)}),!f&&e.jsx(o.Button,{className:b.editDescTooltipContent_btn,variant:"outlined",size:"small",onClick:()=>{var e;N(`parameters[${r}].description`,s.description),null===(e=V[r])||void 0===e||e.hide()},children:"Apply"})]}),children:f||(null===(c=d.parameters[r].description)||void 0===c?void 0:c.length)>0?e.jsx(o.Button,{className:b.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(n,{src:i,width:"1.5rem",height:"1.5rem"})}):e.jsxs(o.Button,{className:b.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(n,{src:i,width:"1.5rem",height:"1.5rem"}),children:[f?"View ":"Add "," Description"]})},`${r}-add-edit-description`),!f&&e.jsx("div",{className:b.paramDescContainer_separator}),!f&&e.jsx(o.Button,{className:b.deleteParamBtn,variant:"link",color:"error",endIcon:e.jsx(n,{src:a,width:"1.125rem",height:"1.125rem"}),onClick:()=>ee(r,s.name)})]})}})))}),[_]),r((()=>{(null==d?void 0:d.parameters)&&J(d.parameters)}),[d,h]),r((()=>{var e;if((null==d?void 0:d.tags.length)||C.length){const s=[...null===(e=(null==d?void 0:d.tags)||[])||void 0===e?void 0:e.map((e=>({label:v(e),value:e}))),...(C||[]).map((e=>({label:v(e.name),value:e.name})))].filter(((e,s,r)=>s===r.findIndex((s=>s.value===e.value))));Q(s)}}),[C,d]),e.jsxs("div",{children:[e.jsx(o.Accordion,{expanded:I.method,onChange:()=>B((e=>Object.assign(Object.assign({},e),{method:!e.method}))),className:`${b.methodAccordion} ${f?b.readOnly:""}`,summary:e.jsxs("div",{className:b.methodSummaryContainer,children:[e.jsxs("div",{className:b.methodSummary,children:[e.jsx("span",{style:{backgroundColor:(null===(S=null==c?void 0:c[null==d?void 0:d.type])||void 0===S?void 0:S.color)||"#3A6CD1"},className:b.methodLabel,children:(null===(w=null==c?void 0:c[null==d?void 0:d.type])||void 0===w?void 0:w.label)||(null==d?void 0:d.type)}),e.jsx("span",{className:b.methodPath,children:h})]}),e.jsx("div",{className:`${b.methodExpandArrowContainer} ${I.method?b.expanded:""}`,children:e.jsx(n,{src:t,width:"2rem",height:"2rem"})})]}),children:e.jsxs("div",{className:b.methodAccordionContent,children:[e.jsx(o.SelectGroup,{className:b.methodDesc,disabled:f,placeholder:"Select Tags",label:"Tags",value:null===(A=d.tags)||void 0===A?void 0:A.map((e=>({label:v(e),value:e}))),onChange:e=>{N("tags",e.map((e=>e.value)))},options:[{list:K}],isMultiple:!0,withSearch:!1,clearable:!1}),f?e.jsx(u,{label:"Description: ",value:(null==d?void 0:d.description)||"-"},"description"):e.jsx(o.TextArea,{className:b.methodDesc,label:"Description",placeholder:"Describe the method's purpose and functionality...",value:null==d?void 0:d.description,onChange:e=>N("description",e)}),e.jsx("div",{className:b.paramsTable,children:e.jsx(j,{id:"paramter-table",data:R,headCells:m,isFormOpen:F,setIsFormOpen:$,saveNewRow:e=>{J([..._,e]),N("parameters",[...d.parameters,e])},readOnly:f})}),"get"!==(null==d?void 0:d.type)&&e.jsx(o.Accordion,{expanded:I.request,onChange:()=>null,className:b.requestAccordion,summary:e.jsx("span",{className:b.requestAccordionSummary,children:e.jsxs("div",{className:b.requestAccordionSummary_title,onClick:()=>B((e=>Object.assign(Object.assign({},e),{request:!e.request}))),children:[e.jsx(n,{className:I.request?b.expanded:"",src:t,width:"2rem",height:"2rem"}),"Request","delete"!==(null==d?void 0:d.type)&&e.jsx("span",{style:{color:"red"},children:"*"})]})}),children:e.jsx(g,{acceptType:"JSON",withFooter:!f,className:"jsonField",placeholder:"Enter your request body as a JSON object....",fieldIsDisabled:f,value:(null===(q=null===(D=null===(O=null==d?void 0:d.requestBody)||void 0===O?void 0:O.content)||void 0===D?void 0:D.schema)||void 0===q?void 0:q.properties)||"{}",onChange:e=>{N("requestBody.content.schema.properties",e)},onValidation:()=>null})}),e.jsx(o.Accordion,{expanded:I.response,onChange:()=>null,className:b.responseAccordion,summary:e.jsxs("span",{className:b.responseAccordionSummary,children:[e.jsxs("div",{className:b.responseAccordionSummary_title,onClick:()=>B((e=>Object.assign(Object.assign({},e),{response:!e.response}))),children:[e.jsx(n,{className:I.response?b.expanded:"",src:t,width:"2rem",height:"2rem"}),"Response",e.jsx("span",{style:{color:"red"},children:"*"})]}),e.jsx(o.SelectGroup,{withSearch:!1,isMultiple:!1,clearable:!1,placeholder:"200",options:[{list:y}],value:U,onChange:e=>{X(e)}})]}),children:e.jsx(g,{acceptType:"JSON",withFooter:!f,className:"jsonField",placeholder:"Enter your response as a JSON object...",fieldIsDisabled:f,value:(null===(k=null===(T=null==Y?void 0:Y.content)||void 0===T?void 0:T.schema)||void 0===k?void 0:k.properties)||"{}",onChange:e=>{const s=d.responses.findIndex((e=>e.code===Y.code));if(-1!==s)N(`responses[${s}].content.schema.properties`,e);else{const s=structuredClone(d.responses);s.push({code:U.value.toString(),content:{contentType:"application/json",schema:{type:"object",properties:e}}}),N("responses",s)}},onValidation:()=>null})})]})}),e.jsx(x,{status:"error",content:e.jsxs("p",{style:{textAlign:"center",fontWeight:400,fontSize:"1rem",lineHeight:"1.4375rem"},className:"delete-msg-container",children:["Are you sure you want to delete",e.jsxs("span",{className:"plan-name",children:["Parameter ",e.jsx("strong",{children:H})]}),"?"]}),onSubmit:{onClick:()=>{var e;null!==E&&(J((e=>e.filter(((e,s)=>s!==E)))),N("parameters",null===(e=null==d?void 0:d.parameters)||void 0===e?void 0:e.filter(((e,s)=>s!==E)))),W(!1),G(null)},text:"Delete",color:"error",fullWidth:!0},onCancel:{text:"Cancel",color:"normal",fullWidth:!0},onClose:()=>W(!1),open:M,icon:e.jsx(n,{src:l,width:"4.0625rem",height:"4.0625rem"})})]})};export{N as default};
1
+ import{j as e}from"../../../_virtual/jsx-runtime.js";import{useState as s,useEffect as r}from"react";import{d as o}from"../../../_virtual/index.js";import n from"../SVGLoader/SVGLoader.js";import t from"../../assets/icons/DownArrow.svg.js";import i from"../../assets/icons/DeleteIcon.svg.js";import a from"../../assets/icons/EditIcon.svg.js";import l from"../../assets/icons/deleteOutlinedIcon.svg.js";import{httpStatusCodes as d,methodColorMapping as c,paramsTableHeaders as m}from"../../constants/index.js";import p from"../Tooltip/Tooltip.js";import u from"../SimpleLabelValue/SimpleLabelValue.js";import{handleStatusColor as h,capitalize as v}from"../../helpers/methodAccordion.helper.js";import j from"../table/table.js";import x from"../dialog/index.js";import g from"../JsonInput/JsonInput.js";import b from"./MethodAccordion.module.scss.js";import y from"../../constants/regex.js";const N=d.map((s=>({label:e.jsxs("div",{className:b.statusCodeOptionContainer,children:[e.jsx("div",{className:b.statusCodeOptionCircle,style:{backgroundColor:h(s)}}),e.jsx("span",{children:s})]}),value:s}))),C=({method:d,path:h,setFieldValue:C,readOnly:f,tags:S,isOpen:w,setIsOpen:A})=>{var O,D,q,I,T,k,B,F;const[$,V]=s({request:!1,response:!1,method:!1}),[L,_]=s(!1),[J,M]=s({}),[W,E]=s([]),[G,H]=s(!1),[P,R]=s(null),[z,K]=s(null),[Q,U]=s(),[X,Y]=s([]),[Z,ee]=s(N[4]),se=d.responses.find((e=>Number(e.code)===Z.value))||"{}",re=(e,s,r)=>{const o=W.map(((o,n)=>n===r?Object.assign(Object.assign({},o),{[e]:s}):o));E(o)},oe=(e,s)=>{R(e),K(s),H(!0)};return r((()=>{U(W.map(((s,r)=>{var t,l,c,m;return{id:r,paramName:s.name,paramType:v(s.in),schemaType:v(null===(t=s.schema)||void 0===t?void 0:t.type)||"",required:e.jsx(e.Fragment,{children:f?s.required?"True":"False":e.jsx(o.Switch,{checked:s.required,onClick:()=>{if(f)return null;re("required",!s.required,r),C(`parameters[${r}][required]`,!s.required)}})}),description:e.jsxs("div",{className:b.paramDescContainer,children:[e.jsx(p,{allowHTML:!0,disabled:(null===(l=d.parameters[r].description)||void 0===l?void 0:l.length)<=12,content:e.jsx("div",{style:{padding:"0.625rem"},children:d.parameters[r].description}),arrowWithBorder:!0,placement:"bottom-end",type:"function",delay:[0,0],onShow:()=>{var e;return null===(e=J[r])||void 0===e?void 0:e.hide()},children:e.jsxs("p",{style:{alignSelf:"center"},children:[d.parameters[r].description?d.parameters[r].description.substring(0,12):f&&"-",d.parameters[r].description&&d.parameters[r].description.length>12?"...":""]})},`${r}-description`),!f&&e.jsx(p,{allowHTML:!0,arrowWithBorder:!0,placement:"bottom-end",type:"function",trigger:"click",delay:[0,0],onCreate:e=>M((s=>Object.assign(Object.assign({},s),{[r]:e}))),content:e.jsxs("div",{className:b.editDescTooltipContent,children:[e.jsx("p",{className:b.editDescTooltipContent_header,children:"Description"}),e.jsx(o.TextArea,{placeholder:"Describe parameter...",value:s.description,disabled:f,onChange:e=>{(""===e||y.ASCII.test(e))&&re("description",e,r)}}),!f&&e.jsx(o.Button,{className:b.editDescTooltipContent_btn,variant:"outlined",size:"small",onClick:()=>{var e,o;C(`parameters[${r}].description`,null===(e=s.description)||void 0===e?void 0:e.trim()),null===(o=J[r])||void 0===o||o.hide()},disabled:!(null===(c=s.description)||void 0===c?void 0:c.trim()),children:"Apply"})]}),children:f||(null===(m=d.parameters[r].description)||void 0===m?void 0:m.length)>0?e.jsx(o.Button,{className:b.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(n,{src:a,width:"1.5rem",height:"1.5rem"})}):e.jsxs(o.Button,{className:b.editDescBtn,variant:"link",color:"action",endIcon:e.jsx(n,{src:a,width:"1.5rem",height:"1.5rem"}),children:[f?"View ":"Add "," Description"]})},`${r}-add-edit-description`),!f&&e.jsx("div",{className:b.paramDescContainer_separator}),!f&&e.jsx(o.Button,{className:b.deleteParamBtn,variant:"link",color:"error",endIcon:e.jsx(n,{src:i,width:"1.125rem",height:"1.125rem"}),onClick:()=>oe(r,s.name)})]})}})))}),[W]),r((()=>{(null==d?void 0:d.parameters)&&E(d.parameters)}),[d,h]),r((()=>{var e;if((null==d?void 0:d.tags.length)||S.length){const s=[...null===(e=(null==d?void 0:d.tags)||[])||void 0===e?void 0:e.map((e=>({label:v(e),value:e}))),...(S||[]).map((e=>({label:v(e.name),value:e.name})))].filter(((e,s,r)=>s===r.findIndex((s=>s.value===e.value))));Y(s)}}),[S,d]),e.jsxs("div",{children:[e.jsx(o.Accordion,{expanded:w,onChange:()=>A(!w),className:`${b.methodAccordion} ${f?b.readOnly:""}`,summary:e.jsxs("div",{className:b.methodSummaryContainer,children:[e.jsxs("div",{className:b.methodSummary,children:[e.jsx("span",{style:{backgroundColor:(null===(O=null==c?void 0:c[null==d?void 0:d.type])||void 0===O?void 0:O.color)||"#3A6CD1"},className:b.methodLabel,children:(null===(D=null==c?void 0:c[null==d?void 0:d.type])||void 0===D?void 0:D.label)||(null==d?void 0:d.type)}),e.jsx("span",{className:b.methodPath,children:h})]}),e.jsx("div",{className:`${b.methodExpandArrowContainer} ${w?b.expanded:""}`,children:e.jsx(n,{src:t,width:"2rem",height:"2rem"})})]}),children:e.jsxs("div",{className:b.methodAccordionContent,children:[e.jsx(o.SelectGroup,{className:b.methodDesc,disabled:f,placeholder:"Select Tags",label:"Tags",value:null===(q=d.tags)||void 0===q?void 0:q.map((e=>({label:v(e),value:e}))),onChange:e=>{C("tags",e.map((e=>e.value)))},options:[{list:X}],isMultiple:!0,withSearch:!1,clearable:!1}),f?e.jsx(u,{label:"Description: ",value:(null==d?void 0:d.description)||"-"},"description"):e.jsx(o.TextArea,{className:b.methodDesc,label:"Description",placeholder:"Describe the method's purpose and functionality...",value:null==d?void 0:d.description,onChange:e=>{(""===e||y.ASCII.test(e))&&C("description",e)}}),e.jsx("div",{className:b.paramsTable,children:e.jsx(j,{id:"paramter-table",data:Q,headCells:m,isFormOpen:L,setIsFormOpen:_,saveNewRow:e=>{E([...W,e]),C("parameters",[...d.parameters,e])},readOnly:f})}),"get"!==(null==d?void 0:d.type)&&e.jsx(o.Accordion,{expanded:$.request,onChange:()=>null,className:b.requestAccordion,summary:e.jsx("span",{className:b.requestAccordionSummary,children:e.jsxs("div",{className:b.requestAccordionSummary_title,onClick:()=>V((e=>Object.assign(Object.assign({},e),{request:!e.request}))),children:[e.jsx(n,{className:$.request?b.expanded:"",src:t,width:"2rem",height:"2rem"}),"Request","delete"!==(null==d?void 0:d.type)&&e.jsx("span",{style:{color:"red"},children:"*"})]})}),children:e.jsx(g,{acceptType:"JSON",withFooter:!f,className:"jsonField",placeholder:"Enter your request body as a JSON object....",fieldIsDisabled:f,value:(null===(k=null===(T=null===(I=null==d?void 0:d.requestBody)||void 0===I?void 0:I.content)||void 0===T?void 0:T.schema)||void 0===k?void 0:k.properties)||"{}",onChange:e=>{C("requestBody.content.schema.properties",e)},onValidation:()=>null})}),e.jsx(o.Accordion,{expanded:$.response,onChange:()=>null,className:b.responseAccordion,summary:e.jsxs("span",{className:b.responseAccordionSummary,children:[e.jsxs("div",{className:b.responseAccordionSummary_title,onClick:()=>V((e=>Object.assign(Object.assign({},e),{response:!e.response}))),children:[e.jsx(n,{className:$.response?b.expanded:"",src:t,width:"2rem",height:"2rem"}),"Response",e.jsx("span",{style:{color:"red"},children:"*"})]}),e.jsx(o.SelectGroup,{withSearch:!1,isMultiple:!1,clearable:!1,placeholder:"200",options:[{list:N}],value:Z,onChange:e=>{ee(e)}})]}),children:e.jsx(g,{acceptType:"JSON",withFooter:!f,className:"jsonField",placeholder:"Enter your response as a JSON object...",fieldIsDisabled:f,value:(null===(F=null===(B=null==se?void 0:se.content)||void 0===B?void 0:B.schema)||void 0===F?void 0:F.properties)||"{}",onChange:e=>{const s=d.responses.findIndex((e=>e.code===se.code));if(-1!==s)C(`responses[${s}].content.schema.properties`,e);else{const s=structuredClone(d.responses);s.push({code:Z.value.toString(),content:{contentType:"application/json",schema:{type:"object",properties:e}}}),C("responses",s)}},onValidation:()=>null})})]})}),e.jsx(x,{status:"error",content:e.jsxs("p",{style:{textAlign:"center",fontWeight:400,fontSize:"1rem",lineHeight:"1.4375rem"},className:"delete-msg-container",children:["Are you sure you want to delete",e.jsxs("span",{className:"plan-name",children:["Parameter ",e.jsx("strong",{children:z})]}),"?"]}),onSubmit:{onClick:()=>{var e;null!==P&&(E((e=>e.filter(((e,s)=>s!==P)))),C("parameters",null===(e=null==d?void 0:d.parameters)||void 0===e?void 0:e.filter(((e,s)=>s!==P)))),H(!1),R(null)},text:"Delete",color:"error",fullWidth:!0},onCancel:{text:"Cancel",color:"normal",fullWidth:!0},onClose:()=>H(!1),open:G,icon:e.jsx(n,{src:l,width:"4.0625rem",height:"4.0625rem"})})]})};export{C as default};
2
2
  //# sourceMappingURL=MethodAccordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MethodAccordion.js","sources":["../../../../src/components/MethodAccordion/MethodAccordion.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { Accordion, Button, SelectGroup, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'\r\nimport SVGLoader from '../../components/SVGLoader/SVGLoader'\r\nimport { DeleteIcon, DownArrowIcon, EditIcon, deleteOutlinedIcon } from '../../assets/icons'\r\nimport { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\nimport { TransformedMethod } from '../../types/layout.type'\r\nimport SimpleLabelValue from '../../components/SimpleLabelValue'\r\nimport { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'\r\nimport ParamterTable from '../table/table'\r\nimport CommonDialog from '../../components/dialog'\r\nimport JsonInput from '../../components/JsonInput/JsonInput'\r\nimport styles from './MethodAccordion.module.scss'\r\nimport { Tags } from '@entities/openApi'\r\n\r\nconst httpStatusCodeOptions = httpStatusCodes.map((code) => ({\r\n label: (\r\n <div className={styles.statusCodeOptionContainer}>\r\n <div\r\n className={styles.statusCodeOptionCircle}\r\n style={{ backgroundColor: handleStatusColor(code) }}\r\n ></div>\r\n <span>{code}</span>\r\n </div>\r\n ),\r\n value: code,\r\n}))\r\n\r\nconst MethodsAccordion = ({\r\n method,\r\n path,\r\n setFieldValue,\r\n readOnly,\r\n tags,\r\n}: {\r\n method: TransformedMethod\r\n path: string\r\n setFieldValue?: (key: string, value: string | string[]) => void\r\n readOnly?: boolean\r\n tags: Tags[]\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState({\r\n request: false,\r\n response: false,\r\n method: false,\r\n })\r\n const [isFormOpen, setIsFormOpen] = useState(false)\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tableData, setTableData] = useState([])\r\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false)\r\n const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)\r\n const [selectedParamName, setSelectedParamName] = useState<string | null>(null)\r\n const [tableRecords, setTableRecords] = useState()\r\n const [selectionTags, setSelectionTags] = useState([])\r\n const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])\r\n const currentResponse =\r\n method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'\r\n\r\n const onTableChange = (key, value, index) => {\r\n const newTableData = tableData.map((item, tIndex) => {\r\n if (tIndex === index) {\r\n return { ...item, [key]: value }\r\n } else {\r\n return item\r\n }\r\n })\r\n\r\n setTableData(newTableData)\r\n }\r\n\r\n const generateTableData = (items) => {\r\n return items.map((item, index) => {\r\n return {\r\n id: index,\r\n paramName: item.name,\r\n paramType: capitalize(item.in),\r\n schemaType: capitalize(item.schema?.type) || '',\r\n required: (\r\n <>\r\n {readOnly ? (\r\n item.required ? (\r\n 'True'\r\n ) : (\r\n 'False'\r\n )\r\n ) : (\r\n <Switch\r\n checked={item.required}\r\n onClick={() => {\r\n if (readOnly) {\r\n return null\r\n }\r\n onTableChange('required', !item.required, index)\r\n setFieldValue(`parameters[${index}][required]`, !item.required)\r\n }}\r\n />\r\n )}\r\n </>\r\n ),\r\n description: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={method.parameters[index].description?.length <= 12}\r\n content={\r\n <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>\r\n }\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n onShow={() => tooltipRefs[index]?.hide()}\r\n >\r\n <p style={{ alignSelf: 'center' }}>\r\n {method.parameters[index].description\r\n ? method.parameters[index].description.substring(0, 12)\r\n : '-'}\r\n {method.parameters[index].description &&\r\n method.parameters[index].description.length > 12\r\n ? '...'\r\n : ''}\r\n </p>\r\n </Tooltip>\r\n <Tooltip\r\n key={`${index}-add-edit-description`}\r\n allowHTML\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>Description</p>\r\n <TextArea\r\n placeholder=\"Describe parameter...\"\r\n value={item.description}\r\n disabled={readOnly}\r\n onChange={(value) => onTableChange('description', value, index)}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(`parameters[${index}].description`, item.description)\r\n tooltipRefs[index]?.hide()\r\n }}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || method.parameters[index].description?.length > 0 ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n ></Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n >\r\n {readOnly ? 'View ' : 'Add '} Description\r\n </Button>\r\n )}\r\n </Tooltip>\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n endIcon={<SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />}\r\n onClick={() => handleDeleteClick(index, item.name)}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }\r\n })\r\n }\r\n\r\n const confirmDeleteParameter = () => {\r\n if (selectedParamIndex !== null) {\r\n setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))\r\n setFieldValue(\r\n `parameters`,\r\n method?.parameters?.filter((_, i) => i !== selectedParamIndex)\r\n )\r\n }\r\n setOpenDeleteDialog(false)\r\n setSelectedParamIndex(null)\r\n }\r\n\r\n const handleDeleteClick = (id: number, name: string) => {\r\n setSelectedParamIndex(id)\r\n setSelectedParamName(name)\r\n\r\n setOpenDeleteDialog(true)\r\n }\r\n\r\n const saveNewRow = (values) => {\r\n setTableData([...tableData, values])\r\n setFieldValue(`parameters`, [...method.parameters, values])\r\n }\r\n\r\n useEffect(() => {\r\n setTableRecords(generateTableData(tableData))\r\n }, [tableData])\r\n\r\n useEffect(() => {\r\n if (method?.parameters) {\r\n setTableData(method.parameters)\r\n }\r\n }, [method, path])\r\n\r\n useEffect(() => {\r\n // prepare tags selection list\r\n if (method?.tags.length || tags.length) {\r\n const convertedStringArray = (method?.tags || [])?.map((item) => ({\r\n label: capitalize(item),\r\n value: item,\r\n }))\r\n const mergedArray = [\r\n ...convertedStringArray,\r\n ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),\r\n ]\r\n\r\n const filteredArray = mergedArray.filter(\r\n (value, index, self) => index === self.findIndex((t) => t.value === value.value)\r\n )\r\n\r\n setSelectionTags(filteredArray)\r\n }\r\n }, [tags, method])\r\n\r\n return (\r\n <div>\r\n <Accordion\r\n expanded={isExpanded.method}\r\n onChange={() => setIsExpanded((prev) => ({ ...prev, method: !prev.method }))}\r\n className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}\r\n summary={\r\n <div className={styles.methodSummaryContainer}>\r\n <div className={styles.methodSummary}>\r\n <span\r\n style={{\r\n backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',\r\n }}\r\n className={styles.methodLabel}\r\n >\r\n {methodColorMapping?.[method?.type]?.label || method?.type}\r\n </span>\r\n <span className={styles.methodPath}>{path}</span>\r\n </div>\r\n <div\r\n className={`${styles.methodExpandArrowContainer} ${\r\n isExpanded.method ? styles.expanded : ''\r\n }`}\r\n >\r\n <SVGLoader src={DownArrowIcon} width=\"2rem\" height=\"2rem\" />\r\n </div>\r\n </div>\r\n }\r\n children={\r\n <div className={styles.methodAccordionContent}>\r\n <SelectGroup\r\n className={styles.methodDesc}\r\n disabled={readOnly}\r\n placeholder=\"Select Tags\"\r\n label=\"Tags\"\r\n value={method.tags?.map((t) => ({\r\n label: capitalize(t),\r\n value: t,\r\n }))}\r\n onChange={(item) => {\r\n setFieldValue(\r\n 'tags',\r\n item.map((i) => i.value)\r\n )\r\n }}\r\n options={[\r\n {\r\n list: selectionTags,\r\n },\r\n ]}\r\n isMultiple={true}\r\n withSearch={false}\r\n clearable={false}\r\n />\r\n {!readOnly ? (\r\n <TextArea\r\n className={styles.methodDesc}\r\n label=\"Description\"\r\n placeholder=\"Describe the method's purpose and functionality...\"\r\n value={method?.description}\r\n onChange={(value) => setFieldValue('description', value)}\r\n />\r\n ) : (\r\n <SimpleLabelValue\r\n key={'description'}\r\n label={'Description: '}\r\n value={method?.description || '-'}\r\n />\r\n )}\r\n <div className={styles.paramsTable}>\r\n <ParamterTable\r\n id=\"paramter-table\"\r\n data={tableRecords}\r\n headCells={paramsTableHeaders}\r\n isFormOpen={isFormOpen}\r\n setIsFormOpen={setIsFormOpen}\r\n saveNewRow={saveNewRow}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n {method?.type !== 'get' && (\r\n <Accordion\r\n expanded={isExpanded.request}\r\n onChange={() => null}\r\n className={styles.requestAccordion}\r\n summary={\r\n <span className={styles.requestAccordionSummary}>\r\n <div\r\n className={styles.requestAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n request: !prev.request,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.request ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Request\r\n {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}\r\n </div>\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your request body as a JSON object....\"\r\n fieldIsDisabled={readOnly}\r\n value={method?.requestBody?.content?.schema?.properties || '{}'}\r\n onChange={(value: string) => {\r\n setFieldValue('requestBody.content.schema.properties', value)\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n )}\r\n <Accordion\r\n expanded={isExpanded.response}\r\n onChange={() => null}\r\n className={styles.responseAccordion}\r\n summary={\r\n <span className={styles.responseAccordionSummary}>\r\n <div\r\n className={styles.responseAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n response: !prev.response,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.response ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Response<span style={{ color: 'red' }}>*</span>\r\n </div>\r\n\r\n <SelectGroup\r\n withSearch={false}\r\n isMultiple={false}\r\n clearable={false}\r\n placeholder=\"200\"\r\n options={[\r\n {\r\n list: httpStatusCodeOptions,\r\n },\r\n ]}\r\n value={selectedStatusCode}\r\n onChange={(value) => {\r\n setSelectedStatusCode(value)\r\n }}\r\n />\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your response as a JSON object...\"\r\n fieldIsDisabled={readOnly}\r\n value={currentResponse?.content?.schema?.properties || '{}'}\r\n onChange={(value) => {\r\n const currentResIndex = method.responses.findIndex(\r\n (res) => res.code === currentResponse.code\r\n )\r\n\r\n if (currentResIndex !== -1) {\r\n setFieldValue(\r\n `responses[${currentResIndex}].content.schema.properties`,\r\n value\r\n )\r\n } else {\r\n const clonedResponses = structuredClone(method.responses)\r\n\r\n clonedResponses.push({\r\n code: selectedStatusCode.value.toString(),\r\n content: {\r\n contentType: 'application/json',\r\n schema: {\r\n type: 'object',\r\n properties: value,\r\n },\r\n },\r\n })\r\n\r\n setFieldValue('responses', clonedResponses)\r\n }\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n </div>\r\n }\r\n />\r\n <CommonDialog\r\n status=\"error\"\r\n content={\r\n <p\r\n style={{\r\n textAlign: 'center',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: '1.4375rem',\r\n }}\r\n className=\"delete-msg-container\"\r\n >\r\n Are you sure you want to delete\r\n <span className=\"plan-name\">\r\n Parameter <strong>{selectedParamName}</strong>\r\n </span>\r\n ?\r\n </p>\r\n }\r\n onSubmit={{\r\n onClick: confirmDeleteParameter,\r\n text: 'Delete',\r\n color: 'error',\r\n fullWidth: true,\r\n }}\r\n onCancel={{\r\n text: 'Cancel',\r\n color: 'normal',\r\n fullWidth: true,\r\n }}\r\n onClose={() => setOpenDeleteDialog(false)}\r\n open={openDeleteDialog}\r\n icon={<SVGLoader src={deleteOutlinedIcon} width=\"4.0625rem\" height=\"4.0625rem\" />}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default MethodsAccordion\r\n"],"names":["httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","MethodsAccordion","method","path","setFieldValue","readOnly","tags","isExpanded","setIsExpanded","useState","request","response","isFormOpen","setIsFormOpen","tooltipRefs","setTooltipRefs","tableData","setTableData","openDeleteDialog","setOpenDeleteDialog","selectedParamIndex","setSelectedParamIndex","selectedParamName","setSelectedParamName","tableRecords","setTableRecords","selectionTags","setSelectionTags","selectedStatusCode","setSelectedStatusCode","currentResponse","responses","find","res","Number","onTableChange","key","index","newTableData","item","tIndex","Object","assign","handleDeleteClick","id","name","useEffect","paramName","paramType","capitalize","in","schemaType","_a","schema","type","required","jsx","_Fragment","Switch","checked","onClick","description","paramDescContainer","Tooltip","allowHTML","disabled","parameters","_b","length","content","padding","arrowWithBorder","placement","delay","onShow","hide","alignSelf","substring","trigger","onCreate","instance","prev","editDescTooltipContent","editDescTooltipContent_header","TextArea","placeholder","onChange","Button","editDescTooltipContent_btn","variant","size","_c","editDescBtn","color","endIcon","SVGLoader","src","EditIcon","width","height","paramDescContainer_separator","deleteParamBtn","DeleteIcon","filteredArray","filter","self","findIndex","t","jsxs","Accordion","expanded","methodAccordion","summary","methodSummaryContainer","methodSummary","methodColorMapping","methodLabel","methodPath","methodExpandArrowContainer","DownArrowIcon","methodAccordionContent","SelectGroup","methodDesc","i","options","list","isMultiple","withSearch","clearable","SimpleLabelValue","paramsTable","ParamterTable","data","headCells","paramsTableHeaders","saveNewRow","values","requestAccordion","requestAccordionSummary","requestAccordionSummary_title","JsonInput","acceptType","withFooter","fieldIsDisabled","_f","_e","_d","requestBody","properties","onValidation","responseAccordion","responseAccordionSummary","responseAccordionSummary_title","_h","_g","currentResIndex","clonedResponses","structuredClone","push","toString","contentType","CommonDialog","status","textAlign","fontWeight","fontSize","lineHeight","onSubmit","_","text","fullWidth","onCancel","onClose","open","icon","deleteOutlinedIcon"],"mappings":"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"}
1
+ {"version":3,"file":"MethodAccordion.js","sources":["../../../../src/components/MethodAccordion/MethodAccordion.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { Accordion, Button, SelectGroup, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'\r\nimport SVGLoader from '../../components/SVGLoader/SVGLoader'\r\nimport { DeleteIcon, DownArrowIcon, EditIcon, deleteOutlinedIcon } from '../../assets/icons'\r\nimport { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\nimport { TransformedMethod } from '../../types/layout.type'\r\nimport SimpleLabelValue from '../../components/SimpleLabelValue'\r\nimport { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'\r\nimport ParamterTable from '../table/table'\r\nimport CommonDialog from '../../components/dialog'\r\nimport JsonInput from '../../components/JsonInput/JsonInput'\r\nimport styles from './MethodAccordion.module.scss'\r\nimport { Tags } from '@entities/openApi'\r\nimport regex from '../../constants/regex'\r\n\r\nconst httpStatusCodeOptions = httpStatusCodes.map((code) => ({\r\n label: (\r\n <div className={styles.statusCodeOptionContainer}>\r\n <div\r\n className={styles.statusCodeOptionCircle}\r\n style={{ backgroundColor: handleStatusColor(code) }}\r\n ></div>\r\n <span>{code}</span>\r\n </div>\r\n ),\r\n value: code,\r\n}))\r\n\r\nconst MethodsAccordion = ({\r\n method,\r\n path,\r\n setFieldValue,\r\n readOnly,\r\n tags,\r\n isOpen,\r\n setIsOpen,\r\n}: {\r\n method: TransformedMethod\r\n path: string\r\n setFieldValue?: (key: string, value: string | string[]) => void\r\n readOnly?: boolean\r\n tags: Tags[]\r\n isOpen: boolean\r\n setIsOpen: (open: boolean) => void\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState({\r\n request: false,\r\n response: false,\r\n method: false,\r\n })\r\n const [isFormOpen, setIsFormOpen] = useState(false)\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tableData, setTableData] = useState([])\r\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false)\r\n const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)\r\n const [selectedParamName, setSelectedParamName] = useState<string | null>(null)\r\n const [tableRecords, setTableRecords] = useState()\r\n const [selectionTags, setSelectionTags] = useState([])\r\n const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])\r\n const currentResponse =\r\n method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'\r\n\r\n const onTableChange = (key, value, index) => {\r\n const newTableData = tableData.map((item, tIndex) => {\r\n if (tIndex === index) {\r\n return { ...item, [key]: value }\r\n } else {\r\n return item\r\n }\r\n })\r\n\r\n setTableData(newTableData)\r\n }\r\n\r\n const generateTableData = (items) => {\r\n return items.map((item, index) => {\r\n return {\r\n id: index,\r\n paramName: item.name,\r\n paramType: capitalize(item.in),\r\n schemaType: capitalize(item.schema?.type) || '',\r\n required: (\r\n <>\r\n {readOnly ? (\r\n item.required ? (\r\n 'True'\r\n ) : (\r\n 'False'\r\n )\r\n ) : (\r\n <Switch\r\n checked={item.required}\r\n onClick={() => {\r\n if (readOnly) {\r\n return null\r\n }\r\n onTableChange('required', !item.required, index)\r\n setFieldValue(`parameters[${index}][required]`, !item.required)\r\n }}\r\n />\r\n )}\r\n </>\r\n ),\r\n description: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={method.parameters[index].description?.length <= 12}\r\n content={\r\n <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>\r\n }\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n onShow={() => tooltipRefs[index]?.hide()}\r\n >\r\n <p style={{ alignSelf: 'center' }}>\r\n {method.parameters[index].description\r\n ? method.parameters[index].description.substring(0, 12)\r\n : readOnly && '-'}\r\n {method.parameters[index].description &&\r\n method.parameters[index].description.length > 12\r\n ? '...'\r\n : ''}\r\n </p>\r\n </Tooltip>\r\n {!readOnly && (\r\n <Tooltip\r\n key={`${index}-add-edit-description`}\r\n allowHTML\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>Description</p>\r\n <TextArea\r\n placeholder=\"Describe parameter...\"\r\n value={item.description}\r\n disabled={readOnly}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value))\r\n onTableChange('description', value, index)\r\n }}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(\r\n `parameters[${index}].description`,\r\n item.description?.trim()\r\n )\r\n tooltipRefs[index]?.hide()\r\n }}\r\n disabled={!item.description?.trim()}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || method.parameters[index].description?.length > 0 ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n ></Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n >\r\n {readOnly ? 'View ' : 'Add '} Description\r\n </Button>\r\n )}\r\n </Tooltip>\r\n )}\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n endIcon={<SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />}\r\n onClick={() => handleDeleteClick(index, item.name)}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }\r\n })\r\n }\r\n\r\n const confirmDeleteParameter = () => {\r\n if (selectedParamIndex !== null) {\r\n setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))\r\n setFieldValue(\r\n `parameters`,\r\n method?.parameters?.filter((_, i) => i !== selectedParamIndex)\r\n )\r\n }\r\n setOpenDeleteDialog(false)\r\n setSelectedParamIndex(null)\r\n }\r\n\r\n const handleDeleteClick = (id: number, name: string) => {\r\n setSelectedParamIndex(id)\r\n setSelectedParamName(name)\r\n\r\n setOpenDeleteDialog(true)\r\n }\r\n\r\n const saveNewRow = (values) => {\r\n setTableData([...tableData, values])\r\n setFieldValue(`parameters`, [...method.parameters, values])\r\n }\r\n\r\n useEffect(() => {\r\n setTableRecords(generateTableData(tableData))\r\n }, [tableData])\r\n\r\n useEffect(() => {\r\n if (method?.parameters) {\r\n setTableData(method.parameters)\r\n }\r\n }, [method, path])\r\n\r\n useEffect(() => {\r\n // prepare tags selection list\r\n if (method?.tags.length || tags.length) {\r\n const convertedStringArray = (method?.tags || [])?.map((item) => ({\r\n label: capitalize(item),\r\n value: item,\r\n }))\r\n const mergedArray = [\r\n ...convertedStringArray,\r\n ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),\r\n ]\r\n\r\n const filteredArray = mergedArray.filter(\r\n (value, index, self) => index === self.findIndex((t) => t.value === value.value)\r\n )\r\n\r\n setSelectionTags(filteredArray)\r\n }\r\n }, [tags, method])\r\n\r\n return (\r\n <div>\r\n <Accordion\r\n expanded={isOpen}\r\n onChange={() => setIsOpen(!isOpen)}\r\n className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}\r\n summary={\r\n <div className={styles.methodSummaryContainer}>\r\n <div className={styles.methodSummary}>\r\n <span\r\n style={{\r\n backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',\r\n }}\r\n className={styles.methodLabel}\r\n >\r\n {methodColorMapping?.[method?.type]?.label || method?.type}\r\n </span>\r\n <span className={styles.methodPath}>{path}</span>\r\n </div>\r\n <div\r\n className={`${styles.methodExpandArrowContainer} ${isOpen ? styles.expanded : ''}`}\r\n >\r\n <SVGLoader src={DownArrowIcon} width=\"2rem\" height=\"2rem\" />\r\n </div>\r\n </div>\r\n }\r\n children={\r\n <div className={styles.methodAccordionContent}>\r\n <SelectGroup\r\n className={styles.methodDesc}\r\n disabled={readOnly}\r\n placeholder=\"Select Tags\"\r\n label=\"Tags\"\r\n value={method.tags?.map((t) => ({\r\n label: capitalize(t),\r\n value: t,\r\n }))}\r\n onChange={(item) => {\r\n setFieldValue(\r\n 'tags',\r\n item.map((i) => i.value)\r\n )\r\n }}\r\n options={[\r\n {\r\n list: selectionTags,\r\n },\r\n ]}\r\n isMultiple={true}\r\n withSearch={false}\r\n clearable={false}\r\n />\r\n {!readOnly ? (\r\n <TextArea\r\n className={styles.methodDesc}\r\n label=\"Description\"\r\n placeholder=\"Describe the method's purpose and functionality...\"\r\n value={method?.description}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value)) setFieldValue('description', value)\r\n }}\r\n />\r\n ) : (\r\n <SimpleLabelValue\r\n key={'description'}\r\n label={'Description: '}\r\n value={method?.description || '-'}\r\n />\r\n )}\r\n <div className={styles.paramsTable}>\r\n <ParamterTable\r\n id=\"paramter-table\"\r\n data={tableRecords}\r\n headCells={paramsTableHeaders}\r\n isFormOpen={isFormOpen}\r\n setIsFormOpen={setIsFormOpen}\r\n saveNewRow={saveNewRow}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n {method?.type !== 'get' && (\r\n <Accordion\r\n expanded={isExpanded.request}\r\n onChange={() => null}\r\n className={styles.requestAccordion}\r\n summary={\r\n <span className={styles.requestAccordionSummary}>\r\n <div\r\n className={styles.requestAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n request: !prev.request,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.request ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Request\r\n {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}\r\n </div>\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your request body as a JSON object....\"\r\n fieldIsDisabled={readOnly}\r\n value={method?.requestBody?.content?.schema?.properties || '{}'}\r\n onChange={(value: string) => {\r\n setFieldValue('requestBody.content.schema.properties', value)\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n )}\r\n <Accordion\r\n expanded={isExpanded.response}\r\n onChange={() => null}\r\n className={styles.responseAccordion}\r\n summary={\r\n <span className={styles.responseAccordionSummary}>\r\n <div\r\n className={styles.responseAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n response: !prev.response,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.response ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Response<span style={{ color: 'red' }}>*</span>\r\n </div>\r\n\r\n <SelectGroup\r\n withSearch={false}\r\n isMultiple={false}\r\n clearable={false}\r\n placeholder=\"200\"\r\n options={[\r\n {\r\n list: httpStatusCodeOptions,\r\n },\r\n ]}\r\n value={selectedStatusCode}\r\n onChange={(value) => {\r\n setSelectedStatusCode(value)\r\n }}\r\n />\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your response as a JSON object...\"\r\n fieldIsDisabled={readOnly}\r\n value={currentResponse?.content?.schema?.properties || '{}'}\r\n onChange={(value) => {\r\n const currentResIndex = method.responses.findIndex(\r\n (res) => res.code === currentResponse.code\r\n )\r\n\r\n if (currentResIndex !== -1) {\r\n setFieldValue(\r\n `responses[${currentResIndex}].content.schema.properties`,\r\n value\r\n )\r\n } else {\r\n const clonedResponses = structuredClone(method.responses)\r\n\r\n clonedResponses.push({\r\n code: selectedStatusCode.value.toString(),\r\n content: {\r\n contentType: 'application/json',\r\n schema: {\r\n type: 'object',\r\n properties: value,\r\n },\r\n },\r\n })\r\n\r\n setFieldValue('responses', clonedResponses)\r\n }\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n </div>\r\n }\r\n />\r\n <CommonDialog\r\n status=\"error\"\r\n content={\r\n <p\r\n style={{\r\n textAlign: 'center',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: '1.4375rem',\r\n }}\r\n className=\"delete-msg-container\"\r\n >\r\n Are you sure you want to delete\r\n <span className=\"plan-name\">\r\n Parameter <strong>{selectedParamName}</strong>\r\n </span>\r\n ?\r\n </p>\r\n }\r\n onSubmit={{\r\n onClick: confirmDeleteParameter,\r\n text: 'Delete',\r\n color: 'error',\r\n fullWidth: true,\r\n }}\r\n onCancel={{\r\n text: 'Cancel',\r\n color: 'normal',\r\n fullWidth: true,\r\n }}\r\n onClose={() => setOpenDeleteDialog(false)}\r\n open={openDeleteDialog}\r\n icon={<SVGLoader src={deleteOutlinedIcon} width=\"4.0625rem\" height=\"4.0625rem\" />}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default MethodsAccordion\r\n"],"names":["httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","MethodsAccordion","method","path","setFieldValue","readOnly","tags","isOpen","setIsOpen","isExpanded","setIsExpanded","useState","request","response","isFormOpen","setIsFormOpen","tooltipRefs","setTooltipRefs","tableData","setTableData","openDeleteDialog","setOpenDeleteDialog","selectedParamIndex","setSelectedParamIndex","selectedParamName","setSelectedParamName","tableRecords","setTableRecords","selectionTags","setSelectionTags","selectedStatusCode","setSelectedStatusCode","currentResponse","responses","find","res","Number","onTableChange","key","index","newTableData","item","tIndex","Object","assign","handleDeleteClick","id","name","useEffect","paramName","paramType","capitalize","in","schemaType","_a","schema","type","required","jsx","_Fragment","Switch","checked","onClick","description","paramDescContainer","Tooltip","allowHTML","disabled","parameters","_b","length","content","padding","arrowWithBorder","placement","delay","onShow","hide","alignSelf","substring","trigger","onCreate","instance","prev","jsxs","editDescTooltipContent","editDescTooltipContent_header","TextArea","placeholder","onChange","regex","ASCII","test","Button","editDescTooltipContent_btn","variant","size","trim","_c","_d","editDescBtn","color","endIcon","SVGLoader","src","EditIcon","width","height","paramDescContainer_separator","deleteParamBtn","DeleteIcon","filteredArray","filter","self","findIndex","t","Accordion","expanded","methodAccordion","summary","methodSummaryContainer","methodSummary","methodColorMapping","methodLabel","methodPath","methodExpandArrowContainer","DownArrowIcon","methodAccordionContent","SelectGroup","methodDesc","i","options","list","isMultiple","withSearch","clearable","SimpleLabelValue","paramsTable","ParamterTable","data","headCells","paramsTableHeaders","saveNewRow","values","requestAccordion","requestAccordionSummary","requestAccordionSummary_title","JsonInput","acceptType","withFooter","fieldIsDisabled","_f","_e","requestBody","properties","onValidation","responseAccordion","responseAccordionSummary","responseAccordionSummary_title","_h","_g","currentResIndex","clonedResponses","structuredClone","push","toString","contentType","CommonDialog","status","textAlign","fontWeight","fontSize","lineHeight","onSubmit","_","text","fullWidth","onCancel","onClose","open","icon","deleteOutlinedIcon"],"mappings":"y3BAgBA,MAAMA,EAAwBC,EAAgBC,KAAKC,IAAU,CAC3DC,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,MAAOZ,MAGHa,EAAmB,EACvBC,SACAC,OACAC,gBACAC,WACAC,OACAC,SACAC,oCAUA,MAAOC,EAAYC,GAAiBC,EAAS,CAC3CC,SAAS,EACTC,UAAU,EACVX,QAAQ,KAEHY,EAAYC,GAAiBJ,GAAS,IACtCK,EAAaC,GAAkBN,EAAiC,CAAE,IAClEO,EAAWC,GAAgBR,EAAS,KACpCS,EAAkBC,GAAuBV,GAAS,IAClDW,EAAoBC,GAAyBZ,EAAwB,OACrEa,EAAmBC,GAAwBd,EAAwB,OACnEe,EAAcC,GAAmBhB,KACjCiB,EAAeC,GAAoBlB,EAAS,KAC5CmB,EAAoBC,IAAyBpB,EAAS1B,EAAsB,IAC7E+C,GACJ9B,EAAO+B,UAAUC,MAAMC,GAAQC,OAAOD,EAAI/C,QAAU0C,EAAmB9B,SAAU,KAE7EqC,GAAgB,CAACC,EAAKtC,EAAOuC,KACjC,MAAMC,EAAetB,EAAU/B,KAAI,CAACsD,EAAMC,IACpCA,IAAWH,EACbI,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAYH,GAAM,CAAAH,CAACA,GAAMtC,IAElByC,IAIXtB,EAAaqB,EAAa,EAyJtBK,GAAoB,CAACC,EAAYC,KACrCxB,EAAsBuB,GACtBrB,EAAqBsB,GAErB1B,GAAoB,EAAK,EAsC3B,OA9BA2B,GAAU,KACRrB,EAAkCT,EAlKrB/B,KAAI,CAACsD,EAAMF,iBACtB,MAAO,CACLO,GAAIP,EACJU,UAAWR,EAAKM,KAChBG,UAAWC,EAAWV,EAAKW,IAC3BC,WAAYF,EAAwB,QAAbG,EAAAb,EAAKc,cAAQ,IAAAD,OAAA,EAAAA,EAAAE,OAAS,GAC7CC,SACE9D,EAAA+D,IAAAC,WAAA,CAAAjE,SACGW,EACCoC,EAAKgB,SACH,OAEA,QAGF9D,MAACiE,SAAM,CACLC,QAASpB,EAAKgB,SACdK,QAAS,KACP,GAAIzD,EACF,OAAO,KAETgC,GAAc,YAAaI,EAAKgB,SAAUlB,GAC1CnC,EAAc,cAAcmC,gBAAqBE,EAAKgB,SAAS,MAMzEM,YACEzE,EAAAA,KAAK,MAAA,CAAAC,UAAWC,EAAOwE,mBAAkBtE,SAAA,CACvCC,EAAC+D,IAAAO,GAECC,WAAS,EACTC,UAA8C,UAApCjE,EAAOkE,WAAW7B,GAAOwB,mBAAW,IAAAM,OAAA,EAAAA,EAAEC,SAAU,GAC1DC,QACE5E,EAAK+D,IAAA,MAAA,CAAA7D,MAAO,CAAE2E,QAAS,YAAY9E,SAAGQ,EAAOkE,WAAW7B,GAAOwB,cAEjEU,iBAAe,EACfC,UAAU,aACVlB,KAAK,WACLmB,MAAO,CAAC,EAAG,GACXC,OAAQ,KAAM,IAAAtB,EAAA,eAAAA,EAAAtC,EAAYuB,yBAAQsC,MAAM,EAAAnF,SAExCJ,EAAAA,KAAG,IAAA,CAAAO,MAAO,CAAEiF,UAAW,UAAUpF,SAAA,CAC9BQ,EAAOkE,WAAW7B,GAAOwB,YACtB7D,EAAOkE,WAAW7B,GAAOwB,YAAYgB,UAAU,EAAG,IAClD1E,GAAY,IACfH,EAAOkE,WAAW7B,GAAOwB,aAC1B7D,EAAOkE,WAAW7B,GAAOwB,YAAYO,OAAS,GAC1C,MACA,OAnBD,GAAG/B,kBAsBRlC,GACAV,EAAA+D,IAACO,EAAO,CAENC,WAAS,EACTO,iBACA,EAAAC,UAAU,aACVlB,KAAK,WACLwB,QAAQ,QACRL,MAAO,CAAC,EAAG,GACXM,SAAWC,GACTjE,GAAgBkE,GAASxC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACpBuC,GACH,CAAA5C,CAACA,GAAQ2C,MAGbX,QACEjF,EAAA8F,KAAA,MAAA,CAAK7F,UAAWC,EAAO6F,uBACrB3F,SAAA,CAAAC,EAAAA,IAAA,IAAA,CAAGJ,UAAWC,EAAO8F,8BAA8C5F,SAAA,gBACnEC,MAAC4F,EAAQA,SAAA,CACPC,YAAY,wBACZxF,MAAOyC,EAAKsB,YACZI,SAAU9D,EACVoF,SAAWzF,KACK,KAAVA,GAAgB0F,EAAMC,MAAMC,KAAK5F,KACnCqC,GAAc,cAAerC,EAAOuC,EAAM,KAG9ClC,GACAV,EAAAA,IAACkG,EAAAA,OAAM,CACLtG,UAAWC,EAAOsG,2BAClBC,QAAQ,WACRC,KAAK,QACLlC,QAAS,aACP1D,EACE,cAAcmC,iBACE,QAAhBe,EAAAb,EAAKsB,mBAAW,IAAAT,OAAA,EAAAA,EAAE2C,QAEA,QAApB5B,EAAArD,EAAYuB,UAAQ,IAAA8B,GAAAA,EAAAQ,MAAM,EAE5BV,WAA2B,QAAhB+B,EAAAzD,EAAKsB,mBAAW,IAAAmC,OAAA,EAAAA,EAAED,uCAQpC5F,YAAY8F,EAAAjG,EAAOkE,WAAW7B,GAAOwB,kCAAaO,QAAS,EAC1D3E,EAAA+D,IAACmC,EAAMA,OACL,CAAAtG,UAAWC,EAAO4G,YAClBL,QAAQ,OACRM,MAAM,SACNC,QAAS3G,EAAAA,IAAC4G,EAAU,CAAAC,IAAKC,EAAUC,MAAM,SAASC,OAAO,aAG3DrH,EAAC8F,KAAAS,EAAMA,QACLtG,UAAWC,EAAO4G,YAClBL,QAAQ,OACRM,MAAM,SACNC,QAAS3G,EAAAA,IAAC4G,GAAUC,IAAKC,EAAUC,MAAM,SAASC,OAAO,WAExDjH,SAAA,CAAAW,EAAW,QAAU,OACf,mBA5DN,GAAGkC,2BAiEVlC,GAAYV,EAAK+D,IAAA,MAAA,CAAAnE,UAAWC,EAAOoH,gCAEnCvG,GACAV,EAAA+D,IAACmC,EAAMA,OAAA,CACLtG,UAAWC,EAAOqH,eAClBd,QAAQ,OACRM,MAAM,QACNC,QAAS3G,EAAAA,IAAC4G,GAAUC,IAAKM,EAAYJ,MAAM,WAAWC,OAAO,aAC7D7C,QAAS,IAAMjB,GAAkBN,EAAOE,EAAKM,WAKtD,IA6B0C,GAC5C,CAAC7B,IAEJ8B,GAAU,MACJ9C,aAAM,EAANA,EAAQkE,aACVjD,EAAajB,EAAOkE,WACrB,GACA,CAAClE,EAAQC,IAEZ6C,GAAU,WAER,IAAI9C,eAAAA,EAAQI,KAAKgE,SAAUhE,EAAKgE,OAAQ,CACtC,MASMyC,EALc,IAJ6B,QAApBzD,GAACpD,aAAM,EAANA,EAAQI,OAAQ,UAAG,IAAAgD,OAAA,EAAAA,EAAEnE,KAAKsD,IAAU,CAChEpD,MAAO8D,EAAWV,GAClBzC,MAAOyC,UAIHnC,GAAQ,IAAInB,KAAKsD,IAAU,CAAEpD,MAAO8D,EAAWV,EAAKM,MAAO/C,MAAOyC,EAAKM,UAG3CiE,QAChC,CAAChH,EAAOuC,EAAO0E,IAAS1E,IAAU0E,EAAKC,WAAWC,GAAMA,EAAEnH,QAAUA,EAAMA,UAG5E6B,EAAiBkF,EAClB,IACA,CAACzG,EAAMJ,IAGRZ,EACE8F,KAAA,MAAA,CAAA1F,SAAA,CAAAC,EAAAA,IAACyH,EAASA,UAAA,CACRC,SAAU9G,EACVkF,SAAU,IAAMjF,GAAWD,GAC3BhB,UAAW,GAAGC,EAAO8H,mBAAmBjH,EAAWb,EAAOa,SAAW,KACrEkH,QACEjI,OAAK,MAAA,CAAAC,UAAWC,EAAOgI,uBACrB9H,SAAA,CAAAJ,EAAA8F,KAAA,MAAA,CAAK7F,UAAWC,EAAOiI,cAAa/H,SAAA,CAClCC,EACE+D,IAAA,OAAA,CAAA7D,MAAO,CACLC,iBAAqD,QAApCwD,EAAAoE,aAAkB,EAAlBA,EAAqBxH,aAAM,EAANA,EAAQsD,aAAO,IAAAF,OAAA,EAAAA,EAAA+C,QAAS,WAEhE9G,UAAWC,EAAOmI,YAAWjI,UAEQ,QAApC2E,EAAAqD,aAAkB,EAAlBA,EAAqBxH,aAAM,EAANA,EAAQsD,aAAO,IAAAa,OAAA,EAAAA,EAAAhF,SAASa,eAAAA,EAAQsD,QAExD7D,EAAM+D,IAAA,OAAA,CAAAnE,UAAWC,EAAOoI,WAAalI,SAAAS,OAEvCR,EAAA+D,IAAA,MAAA,CACEnE,UAAW,GAAGC,EAAOqI,8BAA8BtH,EAASf,EAAO6H,SAAW,KAE9E3H,SAAAC,EAAA+D,IAAC6C,EAAS,CAACC,IAAKsB,EAAepB,MAAM,OAAOC,OAAO,cAIzDjH,SACEJ,EAAAA,KAAA,MAAA,CAAKC,UAAWC,EAAOuI,uBAAsBrI,SAAA,CAC3CC,MAACqI,cAAW,CACVzI,UAAWC,EAAOyI,WAClB9D,SAAU9D,EACVmF,YAAY,cACZnG,MAAM,OACNW,MAAkB,QAAXkG,EAAAhG,EAAOI,YAAI,IAAA4F,OAAA,EAAAA,EAAE/G,KAAKgI,IAAO,CAC9B9H,MAAO8D,EAAWgE,GAClBnH,MAAOmH,MAET1B,SAAWhD,IACTrC,EACE,OACAqC,EAAKtD,KAAK+I,GAAMA,EAAElI,QACnB,EAEHmI,QAAS,CACP,CACEC,KAAMxG,IAGVyG,YAAY,EACZC,YAAY,EACZC,WAAW,IAEXlI,EAWAV,MAAC6I,EAEC,CAAAnJ,MAAO,gBACPW,OAAOE,aAAM,EAANA,EAAQ6D,cAAe,KAFzB,eAXPpE,EAAAA,IAAC4F,EAAAA,SACC,CAAAhG,UAAWC,EAAOyI,WAClB5I,MAAM,cACNmG,YAAY,qDACZxF,MAAOE,aAAM,EAANA,EAAQ6D,YACf0B,SAAWzF,KACK,KAAVA,GAAgB0F,EAAMC,MAAMC,KAAK5F,KAAQI,EAAc,cAAeJ,EAAM,IAUtFL,MAAK,MAAA,CAAAJ,UAAWC,EAAOiJ,YACrB/I,SAAAC,EAAAA,IAAC+I,EAAa,CACZ5F,GAAG,iBACH6F,KAAMjH,EACNkH,UAAWC,EACX/H,WAAYA,EACZC,cAAeA,EACf+H,WA/GMC,IAClB5H,EAAa,IAAID,EAAW6H,IAC5B3I,EAAc,aAAc,IAAIF,EAAOkE,WAAY2E,GAAQ,EA8G/C1I,SAAUA,MAGI,SAAjBH,aAAA,EAAAA,EAAQsD,OACP7D,EAAAA,IAACyH,EAASA,UACR,CAAAC,SAAU5G,EAAWG,QACrB6E,SAAU,IAAM,KAChBlG,UAAWC,EAAOwJ,iBAClBzB,QACE5H,EAAAA,IAAM,OAAA,CAAAJ,UAAWC,EAAOyJ,wBACtBvJ,SAAAJ,EAAA8F,KAAA,MAAA,CACE7F,UAAWC,EAAO0J,8BAClBpF,QAAS,IACPpD,GAAeyE,GACVxC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAuC,GACH,CAAAvE,SAAUuE,EAAKvE,YACdlB,SAAA,CAGLC,EAAC+D,IAAA6C,EACC,CAAAhH,UAAWkB,EAAWG,QAAUpB,EAAO6H,SAAW,GAClDb,IAAKsB,EACLpB,MAAM,OACNC,OAAO,SACP,UAEgB,YAAjBzG,aAAA,EAAAA,EAAQsD,OAAqB7D,MAAA,OAAA,CAAME,MAAO,CAAEwG,MAAO,OAAO3G,SAAA,WAIjEA,SACEC,EAAAA,IAACwJ,EAAS,CACRC,WAAW,OACXC,YAAahJ,EACbd,UAAW,YACXiG,YAAY,+CACZ8D,gBAAiBjJ,EACjBL,OAA6C,QAAtCuJ,EAA8B,QAA9BC,EAAqB,QAArBrD,EAAAjG,aAAA,EAAAA,EAAQuJ,mBAAa,IAAAtD,OAAA,EAAAA,EAAA5B,eAAS,IAAAiF,OAAA,EAAAA,EAAAjG,cAAQ,IAAAgG,OAAA,EAAAA,EAAAG,aAAc,KAC3DjE,SAAWzF,IACTI,EAAc,wCAAyCJ,EAAM,EAE/D2J,aAAc,IAAM,SAK5BhK,MAACyH,EAAAA,UACC,CAAAC,SAAU5G,EAAWI,SACrB4E,SAAU,IAAM,KAChBlG,UAAWC,EAAOoK,kBAClBrC,QACEjI,EAAAA,KAAM,OAAA,CAAAC,UAAWC,EAAOqK,yBACtBnK,SAAA,CAAAJ,EAAAA,KAAA,MAAA,CACEC,UAAWC,EAAOsK,+BAClBhG,QAAS,IACPpD,GAAeyE,GACVxC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAuC,GACH,CAAAtE,UAAWsE,EAAKtE,aAIpBnB,SAAA,CAAAC,EAAAA,IAAC4G,EAAS,CACRhH,UAAWkB,EAAWI,SAAWrB,EAAO6H,SAAW,GACnDb,IAAKsB,EACLpB,MAAM,OACNC,OAAO,SACP,WACMhH,EAAAA,IAAM,OAAA,CAAAE,MAAO,CAAEwG,MAAO,OAAiB3G,SAAA,SAGjDC,EAAAA,IAACqI,EAAAA,YACC,CAAAM,YAAY,EACZD,YAAY,EACZE,WAAW,EACX/C,YAAY,MACZ2C,QAAS,CACP,CACEC,KAAMnJ,IAGVe,MAAO8B,EACP2D,SAAWzF,IACT+B,GAAsB/B,EAAM,OAKpCN,SACEC,MAACwJ,EAAS,CACRC,WAAW,OACXC,YAAahJ,EACbd,UAAW,YACXiG,YAAY,0CACZ8D,gBAAiBjJ,EACjBL,OAAyC,QAAlC+J,EAA0B,UAA1B/H,cAAe,EAAfA,GAAiBuC,eAAS,IAAAyF,OAAA,EAAAA,EAAAzG,cAAQ,IAAAwG,OAAA,EAAAA,EAAAL,aAAc,KACvDjE,SAAWzF,IACT,MAAMiK,EAAkB/J,EAAO+B,UAAUiF,WACtC/E,GAAQA,EAAI/C,OAAS4C,GAAgB5C,OAGxC,IAAyB,IAArB6K,EACF7J,EACE,aAAa6J,+BACbjK,OAEG,CACL,MAAMkK,EAAkBC,gBAAgBjK,EAAO+B,WAE/CiI,EAAgBE,KAAK,CACnBhL,KAAM0C,EAAmB9B,MAAMqK,WAC/B9F,QAAS,CACP+F,YAAa,mBACb/G,OAAQ,CACNC,KAAM,SACNkG,WAAY1J,MAKlBI,EAAc,YAAa8J,EAC5B,GAEHP,aAAc,IAAM,cAOhChK,EAAAA,IAAC4K,EACC,CAAAC,OAAO,QACPjG,QACEjF,EAAAA,KACE,IAAA,CAAAO,MAAO,CACL4K,UAAW,SACXC,WAAY,IACZC,SAAU,OACVC,WAAY,aAEdrL,UAAU,uBAGVG,SAAA,CAAA,kCAAAJ,OAAA,OAAA,CAAMC,UAAU,YACJG,SAAA,CAAA,aAAAC,EAAAA,IAAA,SAAA,CAAAD,SAAS8B,OAGnB,OAENqJ,SAAU,CACR/G,QAxRuB,WACF,OAAvBxC,IACFH,GAAcgE,GAASA,EAAK6B,QAAO,CAAC8D,EAAG5C,IAAMA,IAAM5G,MACnDlB,EACE,aACoB,QAApBkD,EAAApD,aAAA,EAAAA,EAAQkE,kBAAY,IAAAd,OAAA,EAAAA,EAAA0D,QAAO,CAAC8D,EAAG5C,IAAMA,IAAM5G,MAG/CD,GAAoB,GACpBE,EAAsB,KAAK,EAgRrBwJ,KAAM,SACN1E,MAAO,QACP2E,WAAW,GAEbC,SAAU,CACRF,KAAM,SACN1E,MAAO,SACP2E,WAAW,GAEbE,QAAS,IAAM7J,GAAoB,GACnC8J,KAAM/J,EACNgK,KAAMzL,EAAAA,IAAC4G,EAAS,CAACC,IAAK6E,EAAoB3E,MAAM,YAAYC,OAAO,kBAGxE"}