{"version":3,"file":"components/base/CodeViewer/useCodeDrawer.mjs","sources":["../../../../src/components/base/CodeViewer/useCodeDrawer.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Drawer, Empty } from 'antd';\nimport { useState } from 'react';\nimport { CodeViewer } from '.';\nimport { CodeViewerProps } from './interface';\n\nconst defaultEmptyReason = 'No Code';\n\n/**\n * Use drawer to display code content\n * @param emptyReason Text to display when there is no code content\n */\nexport function useCodeDrawer(emptyReason: string) {\n  const [code, setCode] = useState('');\n  const [lang, setLang] = useState('');\n  const [filePath, setFilePath] = useState('');\n  const [visible, setVisible] = useState(false);\n  const [defaultLine, setDefaultLine] = useState<number>();\n  const [ranges, setRanges] = useState<SDK.SourceRange[]>();\n\n  const codeDrawerComponent = (\n    <Drawer\n      maskClosable\n      zIndex={999}\n      width={'70%'}\n      destroyOnClose\n      title={`Code of \"${filePath}\"`}\n      open={visible}\n      onClose={() => setVisible(false)}\n    >\n      {code ? (\n        <CodeViewer\n          code={code}\n          lang={lang}\n          filePath={filePath}\n          defaultLine={defaultLine}\n          ranges={ranges}\n        />\n      ) : (\n        <Empty description={emptyReason || defaultEmptyReason} />\n      )}\n    </Drawer>\n  );\n\n  return {\n    showCode(\n      codeConfig: Pick<\n        CodeViewerProps,\n        'code' | 'filePath' | 'ranges' | 'lang' | 'defaultLine'\n      >,\n    ) {\n      setCode(codeConfig.code || '');\n      setLang(codeConfig.lang || '');\n      setFilePath(codeConfig.filePath || '');\n      setDefaultLine(codeConfig.defaultLine);\n      setRanges(codeConfig.ranges);\n      setVisible(true);\n    },\n    codeDrawerComponent,\n  };\n}\n"],"names":["defaultEmptyReason","useCodeDrawer","emptyReason","code","setCode","useState","lang","setLang","filePath","setFilePath","visible","setVisible","defaultLine","setDefaultLine","ranges","setRanges","codeDrawerComponent","Drawer","CodeViewer","Empty","codeConfig"],"mappings":";;;;AAMA,MAAMA,qBAAqB;AAMpB,SAASC,cAAcC,WAAmB;IAC/C,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS;IACjC,MAAM,CAACC,MAAMC,QAAQ,GAAGF,SAAS;IACjC,MAAM,CAACG,UAAUC,YAAY,GAAGJ,SAAS;IACzC,MAAM,CAACK,SAASC,WAAW,GAAGN,SAAS;IACvC,MAAM,CAACO,aAAaC,eAAe,GAAGR;IACtC,MAAM,CAACS,QAAQC,UAAU,GAAGV;IAE5B,MAAMW,sBAAsB,WAAtBA,GACJ,IAACC,QAAMA;QACL,cAAY;QACZ,QAAQ;QACR,OAAO;QACP,gBAAc;QACd,OAAO,CAAC,SAAS,EAAET,SAAS,CAAC,CAAC;QAC9B,MAAME;QACN,SAAS,IAAMC,WAAW;kBAEzBR,OAAO,WAAPA,GACC,IAACe,YAAUA;YACT,MAAMf;YACN,MAAMG;YACN,UAAUE;YACV,aAAaI;YACb,QAAQE;2BAGV,IAACK,OAAKA;YAAC,aAAajB,eAAeF;;;IAKzC,OAAO;QACL,UACEoB,UAGC;YAEDhB,QAAQgB,WAAW,IAAI,IAAI;YAC3Bb,QAAQa,WAAW,IAAI,IAAI;YAC3BX,YAAYW,WAAW,QAAQ,IAAI;YACnCP,eAAeO,WAAW,WAAW;YACrCL,UAAUK,WAAW,MAAM;YAC3BT,WAAW;QACb;QACAK;IACF;AACF"}