@rsdoctor/components 1.5.17 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alert/ecma-version-check_module.css +1 -1
- package/dist/components/Alert/ecma-version-check_module.css.map +1 -1
- package/dist/components/Alerts/bundle-alert.d.ts +1 -1
- package/dist/components/Alerts/bundle-alert.mjs +82 -73
- package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
- package/dist/components/Alerts/bundle.mjs +1 -2
- package/dist/components/Alerts/bundle.mjs.map +1 -1
- package/dist/components/Alerts/collapse-cjs-require.mjs +6 -14
- package/dist/components/Alerts/collapse-cjs-require.mjs.map +1 -1
- package/dist/components/Alerts/collapse-cross-chunks.mjs +3 -8
- package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse-esm-cjs.mjs +6 -10
- package/dist/components/Alerts/collapse-esm-cjs.mjs.map +1 -1
- package/dist/components/Alerts/collapse-module-mixed-chunks.mjs +5 -12
- package/dist/components/Alerts/collapse-module-mixed-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse-side-effects-only-imports.mjs +5 -12
- package/dist/components/Alerts/collapse-side-effects-only-imports.mjs.map +1 -1
- package/dist/components/Alerts/collapse.mjs +3 -10
- package/dist/components/Alerts/collapse.mjs.map +1 -1
- package/dist/components/Alerts/collapse_module.css +1 -1
- package/dist/components/Alerts/collapse_module.css.map +1 -1
- package/dist/components/Alerts/index.module.mjs +7 -0
- package/dist/components/Alerts/index.module.mjs.map +1 -0
- package/dist/components/Alerts/index_module.css +9 -0
- package/dist/components/Alerts/index_module.css.map +1 -0
- package/dist/components/Alerts/list.d.ts +1 -0
- package/dist/components/Alerts/list.mjs +13 -8
- package/dist/components/Alerts/list.mjs.map +1 -1
- package/dist/components/Alerts/list.module.mjs +2 -1
- package/dist/components/Alerts/list.module.mjs.map +1 -1
- package/dist/components/Alerts/list_module.css +8 -0
- package/dist/components/Alerts/list_module.css.map +1 -1
- package/dist/components/Card/size_module.css +0 -2
- package/dist/components/Card/size_module.css.map +1 -1
- package/dist/components/Charts/TimelineCharts/index.mjs +63 -39
- package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
- package/dist/components/Charts/TreeMap.mjs +124 -107
- package/dist/components/Charts/TreeMap.mjs.map +1 -1
- package/dist/components/Charts/index.mjs +3 -1
- package/dist/components/Charts/index.mjs.map +1 -1
- package/dist/components/Charts/treemap_module.css +6 -5
- package/dist/components/Charts/treemap_module.css.map +1 -1
- package/dist/components/FileTree/index.css +0 -1
- package/dist/components/FileTree/index.css.map +1 -1
- package/dist/components/FileTree/index.mjs +3 -4
- package/dist/components/FileTree/index.mjs.map +1 -1
- package/dist/components/Keyword/style_module.css +0 -1
- package/dist/components/Keyword/style_module.css.map +1 -1
- package/dist/components/Layout/header.mjs +22 -6
- package/dist/components/Layout/header.mjs.map +1 -1
- package/dist/components/Layout/header.module.mjs +0 -1
- package/dist/components/Layout/header.module.mjs.map +1 -1
- package/dist/components/Layout/header_module.css +0 -6
- package/dist/components/Layout/header_module.css.map +1 -1
- package/dist/components/Layout/index.mjs +27 -8
- package/dist/components/Layout/index.mjs.map +1 -1
- package/dist/components/Layout/menus.mjs +3 -1
- package/dist/components/Layout/menus.mjs.map +1 -1
- package/dist/components/Layout/rsdoctor-title-logo-dark.mjs +2 -0
- package/dist/components/Loader/Analysis/files.mjs +16 -17
- package/dist/components/Loader/Analysis/files.mjs.map +1 -1
- package/dist/components/Loader/Analysis/style_module.css +13 -14
- package/dist/components/Loader/Analysis/style_module.css.map +1 -1
- package/dist/components/Loader/executions.mjs +5 -13
- package/dist/components/Loader/executions.mjs.map +1 -1
- package/dist/components/Opener/ide.mjs +36 -2
- package/dist/components/Opener/ide.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.mjs +21 -20
- package/dist/components/Overall/DataSummary.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.module.mjs +1 -12
- package/dist/components/Overall/DataSummary.module.mjs.map +1 -1
- package/dist/components/Overall/DataSummary_module.css +7 -72
- package/dist/components/Overall/DataSummary_module.css.map +1 -1
- package/dist/components/Overall/bundle_module.css +1 -4
- package/dist/components/Overall/bundle_module.css.map +1 -1
- package/dist/components/Overall/list_module.css +0 -2
- package/dist/components/Overall/list_module.css.map +1 -1
- package/dist/components/Overall/overview_module.css +1 -2
- package/dist/components/Overall/overview_module.css.map +1 -1
- package/dist/components/base/CodeViewer/index.d.ts +1 -1
- package/dist/components/base/CodeViewer/index.mjs +5 -3
- package/dist/components/base/CodeViewer/index.mjs.map +1 -1
- package/dist/components/base/CodeViewer/interface.d.ts +1 -2
- package/dist/components/base/DiffViewer/index.d.ts +1 -1
- package/dist/components/base/DiffViewer/index.mjs +4 -1
- package/dist/components/base/DiffViewer/index.mjs.map +1 -1
- package/dist/components/base/DiffViewer/interface.d.ts +1 -2
- package/dist/pages/BundleSize/components/asset-path.d.ts +7 -0
- package/dist/pages/BundleSize/components/asset-path.mjs +9 -0
- package/dist/pages/BundleSize/components/asset-path.mjs.map +1 -0
- package/dist/pages/BundleSize/components/asset-path.test.d.ts +1 -0
- package/dist/pages/BundleSize/components/asset-path.test.mjs +27 -0
- package/dist/pages/BundleSize/components/asset-path.test.mjs.map +1 -0
- package/dist/pages/BundleSize/components/asset_module.css +7 -5
- package/dist/pages/BundleSize/components/asset_module.css.map +1 -1
- package/dist/pages/BundleSize/components/card_module.css +2 -2
- package/dist/pages/BundleSize/components/card_module.css.map +1 -1
- package/dist/pages/BundleSize/components/cards.mjs +5 -6
- package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.mjs +15 -11
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.module.mjs +1 -6
- package/dist/pages/BundleSize/components/index.module.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index_module.css +0 -37
- package/dist/pages/BundleSize/components/index_module.css.map +1 -1
- package/dist/pages/BundleSize/components/search-modal.mjs +5 -5
- package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
- package/dist/pages/BundleSize/components/search-modal.module.mjs +10 -0
- package/dist/pages/BundleSize/components/search-modal.module.mjs.map +1 -0
- package/dist/pages/BundleSize/components/search-modal_module.css +39 -0
- package/dist/pages/BundleSize/components/search-modal_module.css.map +1 -0
- package/dist/pages/BundleSize/components/tree-graph.mjs +32 -15
- package/dist/pages/BundleSize/components/tree-graph.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/components/fileTreeCom.css +6 -2
- package/dist/pages/ModuleAnalyze/components/fileTreeCom.css.map +1 -1
- package/dist/pages/ModuleAnalyze/index.css +4 -6
- package/dist/pages/ModuleAnalyze/index.css.map +1 -1
- package/dist/pages/ModuleAnalyze/index.mjs +3 -4
- package/dist/pages/ModuleAnalyze/index.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Analysis/index.mjs +3 -3
- package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.mjs +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.mjs.map +1 -1
- package/dist/static/image/rsdoctor-title-logo-dark.png +0 -0
- package/dist/utils/assets.d.ts +1 -0
- package/dist/utils/assets.mjs +17 -0
- package/dist/utils/assets.mjs.map +1 -0
- package/dist/utils/assets.test.d.ts +1 -0
- package/dist/utils/assets.test.mjs +22 -0
- package/dist/utils/assets.test.mjs.map +1 -0
- package/dist/utils/hooks.d.ts +1 -0
- package/dist/utils/hooks.mjs +6 -1
- package/dist/utils/hooks.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Loader/executions.mjs","sources":["../../../src/components/Loader/executions.tsx"],"sourcesContent":["import { ClockCircleTwoTone } from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Col,\n Divider,\n Empty,\n List,\n Row,\n Space,\n Tabs,\n Tag,\n Timeline,\n Tooltip,\n Typography,\n} from 'antd';\nimport dayjs from 'dayjs';\nimport { PropsWithChildren, useCallback, useState } from 'react';\nimport InputIcon from 'src/common/svg/loader/input.svg';\nimport OutputIcon from 'src/common/svg/loader/output.svg';\nimport StepIcon from 'src/common/svg/loader/step.svg';\nimport { Size } from '../../constants';\nimport { beautifyPath, formatCosts, useTheme } from '../../utils';\nimport { CodeViewer, DiffViewer } from '../base';\nimport { Card } from '../Card';\nimport { CodeOpener } from '../Opener';\nimport { Title } from '../Title';\nimport { ServerAPIProvider } from '../Manifest';\nimport styles from './Analysis/style.module.scss';\n\ninterface LoaderExecutionsProps {\n cwd: string;\n data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileDetails>;\n index?: number;\n}\n\nconst LoaderPropsItem = ({\n loader,\n resource,\n cwd,\n}: {\n loader: Omit<SDK.LoaderTransformData, 'input' | 'result'> & {\n costs: number;\n };\n resource: SDK.ResourceData;\n cwd: string;\n}): React.JSX.Element => {\n return (\n <Card\n title={'Loader Details'}\n style={{ border: 'none' }}\n extra={\n <Tag icon={<ClockCircleTwoTone />} color=\"default\">\n {dayjs(loader.startAt).format('YYYY-MM-DD HH:mm:ss')}\n </Tag>\n }\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n {loader.isPitch ? <Typography.Text code>pitch</Typography.Text> : null}\n <List size=\"large\" bordered>\n <List.Item>\n <Typography.Text strong>{'File Path'}</Typography.Text>\n <div>{beautifyPath(resource.path, cwd)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={resource.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Query'}</Typography.Text>\n <div>{resource.queryRaw || '-'}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Duration'}</Typography.Text>\n <div>{formatCosts(loader.costs)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader'}</Typography.Text>\n <div>\n <Typography.Text code>{loader.loader}</Typography.Text>\n </div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Index'}</Typography.Text>\n <div>{`${loader.loaderIndex}`}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={loader.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <div style={{ width: 180 }}>\n <Typography.Text strong>{'Options'}</Typography.Text>\n </div>\n <Divider type=\"vertical\" />\n <Typography.Paragraph\n ellipsis={{\n rows: 2,\n expandable: true,\n symbol: 'more',\n }}\n copyable\n >\n {JSON.stringify(loader.options || '-')}\n </Typography.Paragraph>\n </List.Item>\n </List>\n </Space>\n </Card>\n );\n};\n\n// Component to render Loader Details content with lazy-loaded code\nconst LoaderDetailsContent = ({\n loader,\n resource,\n isLight,\n codeData,\n}: {\n loader: Omit<SDK.LoaderTransformData, 'input' | 'result'> & { costs: number };\n resource: SDK.ResourceData;\n isLight: boolean;\n codeData: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileInputAndOutput>;\n}): React.JSX.Element => {\n const hasError = loader.errors && loader.errors.length;\n const before = codeData?.input || '';\n const loaderResult = codeData?.output || '';\n\n return (\n <div style={{ height: '100%' }}>\n {hasError ? (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n padding: Size.BasePadding,\n borderTop: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={`the error stack of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n />\n </div>\n <div style={{ height: '90%' }}>\n <CodeViewer code={loader.errors[0].message} lang=\"javascript\" />\n </div>\n </Col>\n ) : (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n padding: Size.BasePadding,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={\n <>\n {`the result of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n {!loader.isPitch && (\n <span style={{ fontWeight: 400 }}>\n (\n <InputIcon\n style={{\n verticalAlign: 'middle',\n margin: '0 2px',\n }}\n />\n Input ⟷\n <OutputIcon\n style={{\n verticalAlign: 'middle',\n position: 'relative',\n top: -2,\n }}\n />\n Output)\n </span>\n )}\n </>\n }\n />\n <div style={{ flex: 1 }} />\n </div>\n {loader.isPitch ? (\n loaderResult ? (\n <div style={{ height: '90%' }}>\n <CodeViewer\n isEmbed\n code={loaderResult}\n filePath={resource.path}\n />\n </div>\n ) : (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n )\n ) : (\n <div style={{ minHeight: '700px' }}>\n <div style={{ height: '40rem', overflow: 'hidden' }}>\n {!loaderResult && !before ? (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n ) : (\n <DiffViewer\n isEmbed\n original={before}\n modified={loaderResult || ''}\n originalFilePath={resource.path}\n modifiedFilePath={resource.path}\n />\n )}\n </div>\n </div>\n )}\n </Col>\n )}\n </div>\n );\n};\n\nexport const LoaderExecutions = ({\n data,\n cwd,\n index,\n}: PropsWithChildren<LoaderExecutionsProps>): React.JSX.Element => {\n const { loaders, resource } = data;\n const [currentIndex, setCurrentIndex] = useState(index || 0);\n const { theme } = useTheme();\n const isLight = theme === 'light';\n const loader = loaders[currentIndex];\n const leftSpan = 5;\n const [activeKey, setActiveKey] = useState('loaderDetails');\n const onChange = useCallback((key: string) => {\n setActiveKey(key);\n }, []);\n\n return (\n <Row className={styles.executions} style={{ height: '100%' }}>\n <Col\n span={leftSpan}\n style={{\n borderRight: isLight ? `1px solid #f0f0f0` : undefined,\n padding: Size.BasePadding,\n }}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Title text=\"Executions\" />\n <Timeline mode=\"left\" style={{ marginTop: Size.BasePadding }}>\n {loaders.map((e, i, arr) => {\n const { loader, isPitch } = e;\n const costs = formatCosts(e.costs);\n return (\n <Timeline.Item\n dot={\n isPitch ? (\n <Tag style={{ marginLeft: 1, fontWeight: 500 }}>\n pitch\n </Tag>\n ) : (\n <ClockCircleTwoTone />\n )\n }\n style={{ paddingBottom: 10, textAlign: 'center' }}\n key={i}\n >\n <Row align=\"middle\" justify=\"space-between\" gutter={[0, 10]}>\n <Col span={24} className={styles.timeline}>\n <Tooltip title={loader} trigger=\"hover\">\n <div\n className={`${styles.box} ${currentIndex === i ? styles.selected : ''}`}\n onClick={() => {\n setCurrentIndex(i);\n }}\n style={{ textAlign: 'left' }}\n >\n <div>\n <Typography.Text style={{ color: '#000' }}>\n {costs.match(/[0-9]*\\.?[0-9]+/g)?.[0]}\n </Typography.Text>\n {` `}\n <Typography.Text\n style={{ color: 'rgba(0,0,0,0.45)' }}\n >\n {costs.match(/[a-zA-Z]+/g)}\n </Typography.Text>\n </div>\n <Typography.Text\n style={{ color: 'rgba(0,0,0,0.65)' }}\n className={styles.loader}\n >\n {loader}\n </Typography.Text>\n </div>\n </Tooltip>\n </Col>\n </Row>\n {i === arr.length - 1 ? null : (\n <div style={{ paddingTop: 10 }}>\n <StepIcon />\n </div>\n )}\n </Timeline.Item>\n );\n })}\n </Timeline>\n </Space>\n </Col>\n <Col span={24 - leftSpan} style={{ height: '100%' }}>\n <Tabs\n type=\"card\"\n defaultActiveKey=\"loaderDetails\"\n activeKey={activeKey}\n items={[\n {\n label: 'Loader Props',\n key: 'loaderProps',\n children: (\n <LoaderPropsItem\n loader={loader}\n resource={resource}\n cwd={cwd}\n />\n ),\n },\n {\n label: 'Loader Details',\n key: 'loaderDetails',\n children:\n activeKey === 'loaderDetails' ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetLoaderFileInputAndOutput}\n body={{\n file: resource.path,\n loader: loader.loader,\n loaderIndex: loader.loaderIndex,\n }}\n showSkeleton={false}\n >\n {(codeData) => (\n <LoaderDetailsContent\n loader={loader}\n resource={resource}\n isLight={isLight}\n codeData={codeData}\n />\n )}\n </ServerAPIProvider>\n ) : null,\n },\n ]}\n onChange={onChange}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["LoaderPropsItem","loader","resource","cwd","Card","Tag","ClockCircleTwoTone","dayjs","Space","Typography","List","beautifyPath","CodeOpener","formatCosts","Divider","JSON","LoaderDetailsContent","isLight","codeData","hasError","before","loaderResult","Col","Size","Title","CodeViewer","InputIcon","OutputIcon","Empty","DiffViewer","LoaderExecutions","data","index","loaders","currentIndex","setCurrentIndex","useState","theme","useTheme","leftSpan","activeKey","setActiveKey","onChange","useCallback","key","Row","styles","undefined","Timeline","e","i","arr","isPitch","costs","Tooltip","StepIcon","Tabs","ServerAPIProvider","SDK"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components/Loader/executions.mjs","sources":["../../../src/components/Loader/executions.tsx"],"sourcesContent":["import { ClockCircleTwoTone } from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Col,\n Divider,\n Empty,\n List,\n Row,\n Space,\n Tabs,\n Tag,\n Timeline,\n Tooltip,\n Typography,\n} from 'antd';\nimport dayjs from 'dayjs';\nimport { PropsWithChildren, useCallback, useState } from 'react';\nimport InputIcon from 'src/common/svg/loader/input.svg';\nimport OutputIcon from 'src/common/svg/loader/output.svg';\nimport StepIcon from 'src/common/svg/loader/step.svg';\nimport { Size } from '../../constants';\nimport { beautifyPath, formatCosts, useTheme } from '../../utils';\nimport { CodeViewer, DiffViewer } from '../base';\nimport { Card } from '../Card';\nimport { CodeOpener } from '../Opener';\nimport { Title } from '../Title';\nimport { ServerAPIProvider } from '../Manifest';\nimport styles from './Analysis/style.module.scss';\nimport clsx from 'clsx';\n\ninterface LoaderExecutionsProps {\n cwd: string;\n data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileDetails>;\n index?: number;\n}\n\nconst LoaderPropsItem = ({\n loader,\n resource,\n cwd,\n}: {\n loader: Omit<SDK.LoaderTransformData, 'input' | 'result'> & {\n costs: number;\n };\n resource: SDK.ResourceData;\n cwd: string;\n}): React.JSX.Element => {\n return (\n <Card\n title={'Loader Details'}\n style={{ border: 'none' }}\n extra={\n <Tag icon={<ClockCircleTwoTone />} color=\"default\">\n {dayjs(loader.startAt).format('YYYY-MM-DD HH:mm:ss')}\n </Tag>\n }\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n {loader.isPitch ? <Typography.Text code>pitch</Typography.Text> : null}\n <List size=\"large\" bordered>\n <List.Item>\n <Typography.Text strong>{'File Path'}</Typography.Text>\n <div>{beautifyPath(resource.path, cwd)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={resource.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Query'}</Typography.Text>\n <div>{resource.queryRaw || '-'}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Duration'}</Typography.Text>\n <div>{formatCosts(loader.costs)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader'}</Typography.Text>\n <div>\n <Typography.Text code>{loader.loader}</Typography.Text>\n </div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Index'}</Typography.Text>\n <div>{`${loader.loaderIndex}`}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={loader.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <div style={{ width: 180 }}>\n <Typography.Text strong>{'Options'}</Typography.Text>\n </div>\n <Divider type=\"vertical\" />\n <Typography.Paragraph\n ellipsis={{\n rows: 2,\n expandable: true,\n symbol: 'more',\n }}\n copyable\n >\n {JSON.stringify(loader.options || '-')}\n </Typography.Paragraph>\n </List.Item>\n </List>\n </Space>\n </Card>\n );\n};\n\n// Component to render Loader Details content with lazy-loaded code\nconst LoaderDetailsContent = ({\n loader,\n resource,\n isLight,\n codeData,\n}: {\n loader: Omit<SDK.LoaderTransformData, 'input' | 'result'> & { costs: number };\n resource: SDK.ResourceData;\n isLight: boolean;\n codeData: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileInputAndOutput>;\n}): React.JSX.Element => {\n const hasError = loader.errors && loader.errors.length;\n const before = codeData?.input || '';\n const loaderResult = codeData?.output || '';\n\n return (\n <div style={{ height: '100%' }}>\n {hasError ? (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n padding: Size.BasePadding,\n borderTop: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={`the error stack of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n />\n </div>\n <div style={{ height: '90%' }}>\n <CodeViewer code={loader.errors[0].message} lang=\"javascript\" />\n </div>\n </Col>\n ) : (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n padding: Size.BasePadding,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={\n <>\n {`the result of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n {!loader.isPitch && (\n <span style={{ fontWeight: 400 }}>\n (\n <InputIcon\n style={{\n verticalAlign: 'middle',\n margin: '0 2px',\n }}\n />\n Input ⟷\n <OutputIcon\n style={{\n verticalAlign: 'middle',\n position: 'relative',\n top: -2,\n }}\n />\n Output)\n </span>\n )}\n </>\n }\n />\n <div style={{ flex: 1 }} />\n </div>\n {loader.isPitch ? (\n loaderResult ? (\n <div style={{ height: '90%' }}>\n <CodeViewer\n isEmbed\n code={loaderResult}\n filePath={resource.path}\n />\n </div>\n ) : (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n )\n ) : (\n <div style={{ minHeight: '700px' }}>\n <div style={{ height: '40rem', overflow: 'hidden' }}>\n {!loaderResult && !before ? (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n ) : (\n <DiffViewer\n isEmbed\n original={before}\n modified={loaderResult || ''}\n originalFilePath={resource.path}\n modifiedFilePath={resource.path}\n />\n )}\n </div>\n </div>\n )}\n </Col>\n )}\n </div>\n );\n};\n\nexport const LoaderExecutions = ({\n data,\n cwd,\n index,\n}: PropsWithChildren<LoaderExecutionsProps>): React.JSX.Element => {\n const { loaders, resource } = data;\n const [currentIndex, setCurrentIndex] = useState(index || 0);\n const { isLight } = useTheme();\n const loader = loaders[currentIndex];\n const leftSpan = 5;\n const [activeKey, setActiveKey] = useState('loaderDetails');\n const onChange = useCallback((key: string) => {\n setActiveKey(key);\n }, []);\n\n return (\n <Row className={styles.executions} style={{ height: '100%' }}>\n <Col\n span={leftSpan}\n style={{\n borderRight: `1px solid var(--color-border-secondary)`,\n padding: Size.BasePadding,\n }}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Title text=\"Executions\" />\n <Timeline mode=\"left\" style={{ marginTop: Size.BasePadding }}>\n {loaders.map((e, i, arr) => {\n const { loader, isPitch } = e;\n const costs = formatCosts(e.costs);\n return (\n <Timeline.Item\n dot={\n isPitch ? (\n <Tag style={{ marginLeft: 1, fontWeight: 500 }}>\n pitch\n </Tag>\n ) : (\n <ClockCircleTwoTone />\n )\n }\n style={{ paddingBottom: 10, textAlign: 'center' }}\n key={i}\n >\n <Row align=\"middle\" justify=\"space-between\" gutter={[0, 10]}>\n <Col span={24} className={styles.timeline}>\n <Tooltip title={loader} trigger=\"hover\">\n <div\n className={clsx(\n styles.box,\n currentIndex === i && styles.selected,\n )}\n onClick={() => {\n setCurrentIndex(i);\n }}\n style={{ textAlign: 'left' }}\n >\n <div>\n <Typography.Text>\n {costs.match(/[0-9]*\\.?[0-9]+/g)?.[0]}\n </Typography.Text>\n {` `}\n <Typography.Text type=\"secondary\">\n {costs.match(/[a-zA-Z]+/g)}\n </Typography.Text>\n </div>\n <Typography.Text className={styles.loader}>\n {loader}\n </Typography.Text>\n </div>\n </Tooltip>\n </Col>\n </Row>\n {i === arr.length - 1 ? null : (\n <div style={{ paddingTop: 10 }}>\n <StepIcon />\n </div>\n )}\n </Timeline.Item>\n );\n })}\n </Timeline>\n </Space>\n </Col>\n <Col span={24 - leftSpan} style={{ height: '100%' }}>\n <Tabs\n type=\"card\"\n defaultActiveKey=\"loaderDetails\"\n activeKey={activeKey}\n items={[\n {\n label: 'Loader Props',\n key: 'loaderProps',\n children: (\n <LoaderPropsItem\n loader={loader}\n resource={resource}\n cwd={cwd}\n />\n ),\n },\n {\n label: 'Loader Details',\n key: 'loaderDetails',\n children:\n activeKey === 'loaderDetails' ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetLoaderFileInputAndOutput}\n body={{\n file: resource.path,\n loader: loader.loader,\n loaderIndex: loader.loaderIndex,\n }}\n showSkeleton={false}\n >\n {(codeData) => (\n <LoaderDetailsContent\n loader={loader}\n resource={resource}\n isLight={isLight}\n codeData={codeData}\n />\n )}\n </ServerAPIProvider>\n ) : null,\n },\n ]}\n onChange={onChange}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["LoaderPropsItem","loader","resource","cwd","Card","Tag","ClockCircleTwoTone","dayjs","Space","Typography","List","beautifyPath","CodeOpener","formatCosts","Divider","JSON","LoaderDetailsContent","isLight","codeData","hasError","before","loaderResult","Col","Size","Title","CodeViewer","InputIcon","OutputIcon","Empty","DiffViewer","LoaderExecutions","data","index","loaders","currentIndex","setCurrentIndex","useState","useTheme","leftSpan","activeKey","setActiveKey","onChange","useCallback","key","Row","styles","Timeline","e","i","arr","isPitch","costs","Tooltip","clsx","StepIcon","Tabs","ServerAPIProvider","SDK"],"mappings":"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"}
|
|
@@ -1,16 +1,50 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Lodash } from "@rsdoctor/utils/common";
|
|
3
|
+
import { SDK } from "@rsdoctor/types";
|
|
3
4
|
import "react";
|
|
4
5
|
import vscode from "../../common/svg/vscode.mjs";
|
|
5
6
|
const OPEN_IN_EDITOR_PATH = '/__open-in-editor';
|
|
7
|
+
let openInEditorTokenTask;
|
|
8
|
+
function clearOpenInEditorTokenTask(task = openInEditorTokenTask) {
|
|
9
|
+
if (openInEditorTokenTask === task) openInEditorTokenTask = void 0;
|
|
10
|
+
}
|
|
11
|
+
function getOpenInEditorTokenFromSocketUrl(socketUrl) {
|
|
12
|
+
if (!socketUrl) return;
|
|
13
|
+
try {
|
|
14
|
+
return new URL(socketUrl, window.location.origin).searchParams.get('token') || void 0;
|
|
15
|
+
} catch {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function getOpenInEditorToken(base) {
|
|
20
|
+
if (!base) return;
|
|
21
|
+
if (!openInEditorTokenTask) {
|
|
22
|
+
const task = fetch(`${base}${SDK.ServerAPI.API.Manifest}`).then((res)=>res.ok ? res.json() : void 0).then((manifest)=>{
|
|
23
|
+
const token = getOpenInEditorTokenFromSocketUrl(manifest?.__SOCKET__URL__);
|
|
24
|
+
if (!token) clearOpenInEditorTokenTask(task);
|
|
25
|
+
return token;
|
|
26
|
+
}).catch(()=>{
|
|
27
|
+
clearOpenInEditorTokenTask(task);
|
|
28
|
+
});
|
|
29
|
+
openInEditorTokenTask = task;
|
|
30
|
+
}
|
|
31
|
+
return openInEditorTokenTask;
|
|
32
|
+
}
|
|
6
33
|
async function openInEditor(file, line, column, editor, urlSchemeFallback) {
|
|
7
34
|
const fileSpec = `${file}:${line}:${column}`;
|
|
8
35
|
try {
|
|
9
36
|
const base = "u" > typeof window && window.location?.origin ? window.location.origin : '';
|
|
10
|
-
const
|
|
11
|
-
|
|
37
|
+
const token = await getOpenInEditorToken(base);
|
|
38
|
+
if (!token) return void urlSchemeFallback();
|
|
39
|
+
const params = new URLSearchParams({
|
|
40
|
+
file: fileSpec,
|
|
41
|
+
editor,
|
|
42
|
+
token
|
|
43
|
+
});
|
|
44
|
+
const res = await fetch(`${base}${OPEN_IN_EDITOR_PATH}?${params}`, {
|
|
12
45
|
method: 'GET'
|
|
13
46
|
});
|
|
47
|
+
if (403 === res.status) clearOpenInEditorTokenTask();
|
|
14
48
|
if (!res.ok) urlSchemeFallback();
|
|
15
49
|
} catch {
|
|
16
50
|
urlSchemeFallback();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Opener/ide.mjs","sources":["../../../src/components/Opener/ide.tsx"],"sourcesContent":["import { Lodash } from '@rsdoctor/utils/common';\nimport React from 'react';\nimport VSCodeIcon from '../../common/svg/vscode.svg';\n\ninterface VSCodeProps {\n file: string;\n line?: number | string;\n column?: number | string;\n windowId?: number;\n style?: React.CSSProperties;\n}\n\nconst OPEN_IN_EDITOR_PATH = '/__open-in-editor';\n\
|
|
1
|
+
{"version":3,"file":"components/Opener/ide.mjs","sources":["../../../src/components/Opener/ide.tsx"],"sourcesContent":["import { Lodash } from '@rsdoctor/utils/common';\nimport { SDK } from '@rsdoctor/types';\nimport React from 'react';\nimport VSCodeIcon from '../../common/svg/vscode.svg';\n\ninterface VSCodeProps {\n file: string;\n line?: number | string;\n column?: number | string;\n windowId?: number;\n style?: React.CSSProperties;\n}\n\nconst OPEN_IN_EDITOR_PATH = '/__open-in-editor';\n\nlet openInEditorTokenTask: Promise<string | undefined> | undefined;\n\nfunction clearOpenInEditorTokenTask(task = openInEditorTokenTask) {\n if (openInEditorTokenTask === task) {\n openInEditorTokenTask = undefined;\n }\n}\n\nfunction getOpenInEditorTokenFromSocketUrl(socketUrl?: string) {\n if (!socketUrl) return undefined;\n try {\n return (\n new URL(socketUrl, window.location.origin).searchParams.get('token') ||\n undefined\n );\n } catch {\n return undefined;\n }\n}\n\nasync function getOpenInEditorToken(base: string) {\n if (!base) return undefined;\n if (!openInEditorTokenTask) {\n const task = fetch(`${base}${SDK.ServerAPI.API.Manifest}`)\n .then((res) => (res.ok ? res.json() : undefined))\n .then((manifest) => {\n const token = getOpenInEditorTokenFromSocketUrl(\n manifest?.__SOCKET__URL__,\n );\n if (!token) {\n clearOpenInEditorTokenTask(task);\n }\n return token;\n })\n .catch(() => {\n clearOpenInEditorTokenTask(task);\n return undefined;\n });\n openInEditorTokenTask = task;\n }\n\n return openInEditorTokenTask;\n}\n\nasync function openInEditor(\n file: string,\n line: number | string,\n column: number | string,\n editor: SDK.OpenInEditorKind,\n urlSchemeFallback: () => void,\n) {\n const fileSpec = `${file}:${line}:${column}`;\n try {\n const base =\n typeof window !== 'undefined' && window.location?.origin\n ? window.location.origin\n : '';\n const token = await getOpenInEditorToken(base);\n if (!token) {\n urlSchemeFallback();\n return;\n }\n const params = new URLSearchParams({\n file: fileSpec,\n editor,\n token,\n });\n const res = await fetch(`${base}${OPEN_IN_EDITOR_PATH}?${params}`, {\n method: 'GET',\n });\n if (res.status === 403) {\n clearOpenInEditorTokenTask();\n }\n if (!res.ok) {\n urlSchemeFallback();\n }\n } catch {\n urlSchemeFallback();\n }\n}\n\nexport function openVSCode({\n file,\n line = 1,\n column = 1,\n windowId,\n}: VSCodeProps) {\n const query: Record<string, unknown> = { windowId };\n const queryString = Object.keys(query)\n .map((k) => {\n const v = query[k];\n if (Lodash.isNil(v) || v === '') return null;\n return `${k}=${v}`;\n })\n .filter(Boolean)\n .join('&');\n\n const fallback = () => {\n let url = `vscode://file/${file}:${line}:${column}`;\n if (queryString) url += `?${queryString}`;\n window.open(url);\n };\n\n openInEditor(file, line, column, 'code', fallback);\n}\n\nexport function openCursor({\n file,\n line = 1,\n column = 1,\n}: Pick<VSCodeProps, 'file' | 'line' | 'column'>) {\n const fallback = () => {\n window.open(`cursor://file/${file}:${line}:${column}`);\n };\n openInEditor(file, line, column, 'cursor', fallback);\n}\n\nexport function openTrae({\n file,\n line = 1,\n column = 1,\n}: Pick<VSCodeProps, 'file' | 'line' | 'column'>) {\n const fallback = () => {\n window.open(`trae://file/${file}:${line}:${column}`);\n };\n\n openInEditor(file, line, column, 'trae', fallback);\n}\n\nexport const VSCode = (props: VSCodeProps): React.JSX.Element => {\n return (\n <VSCodeIcon\n onClick={() => {\n openVSCode(props);\n }}\n style={{\n width: 14,\n cursor: 'pointer',\n verticalAlign: 'middle',\n display: 'inline',\n transform: 'translateY(-1.5px)',\n ...props.style,\n }}\n />\n );\n};\n"],"names":["OPEN_IN_EDITOR_PATH","openInEditorTokenTask","clearOpenInEditorTokenTask","task","undefined","getOpenInEditorTokenFromSocketUrl","socketUrl","URL","window","getOpenInEditorToken","base","fetch","SDK","res","manifest","token","openInEditor","file","line","column","editor","urlSchemeFallback","fileSpec","params","URLSearchParams","openVSCode","windowId","query","queryString","Object","k","v","Lodash","Boolean","fallback","url","openCursor","openTrae","VSCode","props","VSCodeIcon"],"mappings":"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"}
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import icons from "@ant-design/icons";
|
|
3
|
+
import { Alert } from "antd";
|
|
3
4
|
import total_size from "../../common/svg/total-size.mjs";
|
|
4
5
|
import file from "../../common/svg/file.mjs";
|
|
5
6
|
import DataSummary_module from "./DataSummary.module.mjs";
|
|
6
|
-
const DataSummary = ({ theme, number, description })=>/*#__PURE__*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
const DataSummary = ({ theme, number, description })=>/*#__PURE__*/ jsx(Alert, {
|
|
8
|
+
message: /*#__PURE__*/ jsxs(Fragment, {
|
|
9
|
+
children: [
|
|
10
|
+
/*#__PURE__*/ jsx(icons, {
|
|
11
|
+
className: DataSummary_module.icon,
|
|
12
|
+
component: 'common' === theme ? file : total_size
|
|
13
|
+
}),
|
|
14
|
+
/*#__PURE__*/ jsx("span", {
|
|
15
|
+
className: DataSummary_module.description,
|
|
16
|
+
children: description
|
|
17
|
+
}),
|
|
18
|
+
/*#__PURE__*/ jsx("span", {
|
|
19
|
+
className: DataSummary_module.data,
|
|
20
|
+
children: number
|
|
21
|
+
})
|
|
22
|
+
]
|
|
23
|
+
}),
|
|
24
|
+
className: DataSummary_module.container,
|
|
25
|
+
type: 'common' === theme ? 'info' : theme
|
|
25
26
|
});
|
|
26
27
|
export { DataSummary };
|
|
27
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Overall/DataSummary.mjs","sources":["../../../src/components/Overall/DataSummary.tsx"],"sourcesContent":["import Icon from '@ant-design/icons';\n\nimport TotalSizeSvg from '../../common/svg/total-size.svg';\nimport FileSvg from '../../common/svg/file.svg';\n\nimport styles from './DataSummary.module.scss';\n\nexport interface DataSummaryProps {\n theme: 'common' | 'warning';\n number: string | number;\n onClick?: () => void;\n description: string;\n numberFontSize?: string;\n}\n\nexport const DataSummary = ({\n theme,\n number,\n description,\n}: DataSummaryProps) => {\n return (\n <
|
|
1
|
+
{"version":3,"file":"components/Overall/DataSummary.mjs","sources":["../../../src/components/Overall/DataSummary.tsx"],"sourcesContent":["import Icon from '@ant-design/icons';\nimport { Alert } from 'antd';\n\nimport TotalSizeSvg from '../../common/svg/total-size.svg';\nimport FileSvg from '../../common/svg/file.svg';\n\nimport styles from './DataSummary.module.scss';\n\nexport interface DataSummaryProps {\n theme: 'common' | 'warning';\n number: string | number;\n onClick?: () => void;\n description: string;\n numberFontSize?: string;\n}\n\nexport const DataSummary = ({\n theme,\n number,\n description,\n}: DataSummaryProps) => {\n return (\n <Alert\n message={\n <>\n <Icon\n className={styles.icon}\n component={theme === 'common' ? FileSvg : TotalSizeSvg}\n />\n <span className={styles.description}>{description}</span>\n <span className={styles.data}>{number}</span>\n </>\n }\n className={styles.container}\n type={theme === 'common' ? 'info' : theme}\n ></Alert>\n );\n};\n"],"names":["DataSummary","theme","number","description","Alert","Icon","styles","FileSvg","TotalSizeSvg"],"mappings":";;;;;;AAgBO,MAAMA,cAAc,CAAC,EAC1BC,KAAK,EACLC,MAAM,EACNC,WAAW,EACM,GACV,WAAP,GACE,IAACC,OAAKA;QACJ,uBACE;;8BACE,IAACC,OAAIA;oBACH,WAAWC,mBAAAA,IAAW;oBACtB,WAAWL,AAAU,aAAVA,QAAqBM,OAAUC;;8BAE5C,IAAC;oBAAK,WAAWF,mBAAAA,WAAkB;8BAAGH;;8BACtC,IAAC;oBAAK,WAAWG,mBAAAA,IAAW;8BAAGJ;;;;QAGnC,WAAWI,mBAAAA,SAAgB;QAC3B,MAAML,AAAU,aAAVA,QAAqB,SAASA"}
|
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
import "./DataSummary_module.css";
|
|
2
2
|
const DataSummary_module = {
|
|
3
|
-
errorNumber: "errorNumber-NtnGpL",
|
|
4
|
-
warningNumber: "warningNumber-UgutU8",
|
|
5
|
-
successNumber: "successNumber-YOK23K",
|
|
6
|
-
errorText: "errorText-u5Q3ns",
|
|
7
|
-
warningText: "warningText-PymRi4",
|
|
8
|
-
successText: "successText-ddFAF_",
|
|
9
|
-
errorButton: "errorButton-jYRQzL",
|
|
10
|
-
warningButton: "warningButton-KAF3GT",
|
|
11
|
-
successButton: "successButton-clAJSx",
|
|
12
3
|
container: "container-ssAvLP",
|
|
13
4
|
icon: "icon-K6JtIV",
|
|
14
5
|
description: "description-Ik1PO7",
|
|
15
|
-
data: "data-J9Vxvq"
|
|
16
|
-
common: "common-sHeHRd",
|
|
17
|
-
warning: "warning-HnVMOj"
|
|
6
|
+
data: "data-J9Vxvq"
|
|
18
7
|
};
|
|
19
8
|
export default DataSummary_module;
|
|
20
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Overall/DataSummary.module.mjs","sources":["../../../src/components/Overall/DataSummary.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./DataSummary_module.css\"\nexport default {\"
|
|
1
|
+
{"version":3,"file":"components/Overall/DataSummary.module.mjs","sources":["../../../src/components/Overall/DataSummary.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./DataSummary_module.css\"\nexport default {\"container\":\"container-ssAvLP\",\"icon\":\"icon-K6JtIV\",\"description\":\"description-Ik1PO7\",\"data\":\"data-J9Vxvq\"};"],"names":[],"mappings":";AAEA,2BAAe;IAAC,WAAY;IAAmB,MAAO;IAAc,aAAc;IAAqB,MAAO;AAAa"}
|
|
@@ -1,95 +1,30 @@
|
|
|
1
|
-
.errorNumber-NtnGpL, .warningNumber-UgutU8, .successNumber-YOK23K {
|
|
2
|
-
font-size: 14px;
|
|
3
|
-
font-weight: 500;
|
|
4
|
-
line-height: 32px;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.errorNumber-NtnGpL, .errorText-u5Q3ns {
|
|
8
|
-
color: #f5222d;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.warningNumber-UgutU8, .warningText-PymRi4 {
|
|
12
|
-
color: #fa8c16;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.successNumber-YOK23K, .successText-ddFAF_ {
|
|
16
|
-
color: #52c41a;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.errorButton-jYRQzL, .warningButton-KAF3GT, .successButton-clAJSx {
|
|
20
|
-
width: 100%;
|
|
21
|
-
color: inherit;
|
|
22
|
-
height: 90px !important;
|
|
23
|
-
font-size: inherit !important;
|
|
24
|
-
border-radius: 12px !important;
|
|
25
|
-
padding: 4px 0 8px !important;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.errorButton-jYRQzL {
|
|
29
|
-
background-color: #f5222d14;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.errorButton-jYRQzL:hover {
|
|
33
|
-
background-color: #f5222d26 !important;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.warningButton-KAF3GT {
|
|
37
|
-
background-color: #fa8b1614;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.warningButton-KAF3GT:hover {
|
|
41
|
-
background-color: #fa8b1626 !important;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.successButton-clAJSx {
|
|
45
|
-
background-color: #52c41a14;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.successButton-clAJSx:hover {
|
|
49
|
-
background-color: #52c41a26 !important;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.errorText-u5Q3ns, .warningText-PymRi4, .successText-ddFAF_ {
|
|
53
|
-
opacity: .75;
|
|
54
|
-
margin-top: -2px;
|
|
55
|
-
padding-bottom: 6px;
|
|
56
|
-
font-size: 13px;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
1
|
.container-ssAvLP {
|
|
60
|
-
border-radius: 10px;
|
|
61
|
-
align-items: center;
|
|
62
2
|
height: 40px;
|
|
63
3
|
margin: 10px 0 20px;
|
|
64
4
|
padding: 10px 20px 10px 5px;
|
|
5
|
+
font-size: 14px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.container-ssAvLP .ant-alert-message {
|
|
9
|
+
align-items: center;
|
|
65
10
|
display: flex;
|
|
66
11
|
}
|
|
67
12
|
|
|
68
13
|
.container-ssAvLP .icon-K6JtIV {
|
|
69
|
-
margin: 0 5px
|
|
14
|
+
margin: 0 5px;
|
|
15
|
+
font-size: 18px;
|
|
70
16
|
}
|
|
71
17
|
|
|
72
18
|
.container-ssAvLP .description-Ik1PO7 {
|
|
73
|
-
color: #000000a6;
|
|
74
19
|
margin-right: 5px;
|
|
75
|
-
font-size: 14px;
|
|
76
20
|
font-weight: 400;
|
|
77
21
|
line-height: 20px;
|
|
78
22
|
}
|
|
79
23
|
|
|
80
24
|
.container-ssAvLP .data-J9Vxvq {
|
|
81
|
-
font-size: 14px;
|
|
82
25
|
font-weight: 500;
|
|
83
26
|
line-height: 32px;
|
|
84
27
|
}
|
|
85
28
|
|
|
86
|
-
.common-sHeHRd {
|
|
87
|
-
background: #f0f5ff;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.warning-HnVMOj {
|
|
91
|
-
background: #fff7e6;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
29
|
|
|
95
30
|
/*# sourceMappingURL=DataSummary_module.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/DataSummary.module.scss"],"names":[],"mappings":"AAAA;EACE,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/DataSummary.module.scss"],"names":[],"mappings":"AAAA;EACE,YAAY;EACZ,mBAAmB;EACnB,2BAA2B;EAC3B,eAAe;AACjB;;AALsF;EAQpF,mBAAmB;EACnB,aAAa;AACf;;AAV6J;EAa3J,aAAa;EACb,eAAe;AACjB;;AAf8N;EAkB5N,iBAAiB;EACjB,gBAAgB;EAChB,iBAAiB;AACnB;;AArBwS;EAwBtS,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".container{height:40px;padding:10px 20px 10px 5px;margin:10px 0 20px 0;font-size:14px}.container :global(.ant-alert-message){display:flex;align-items:center}.container .icon{margin:0 5px 0 10px;font-size:18px;margin:0 5px}.container .description{margin-right:5px;font-weight:400;line-height:20px}.container .data{font-weight:500;line-height:32px}"],"sourceRoot":""}
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.description-nwRikm {
|
|
19
|
-
color: #000;
|
|
20
19
|
margin-right: 5px;
|
|
21
20
|
font-size: 20px;
|
|
22
21
|
font-weight: 500;
|
|
@@ -30,7 +29,6 @@
|
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
.unit-poAoxV {
|
|
33
|
-
color: #000;
|
|
34
32
|
font-size: 12px;
|
|
35
33
|
font-weight: 400;
|
|
36
34
|
line-height: 32px;
|
|
@@ -41,7 +39,7 @@
|
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
.treeContainer-jcFlxc .line-Ia_8Yg {
|
|
44
|
-
border-bottom: 1px dashed #e5e6eb;
|
|
42
|
+
border-bottom: 1px dashed var(--color-divider, #e5e6eb);
|
|
45
43
|
flex: 1;
|
|
46
44
|
margin: 0 15px 0 10px;
|
|
47
45
|
transform: translateY(-45%);
|
|
@@ -66,7 +64,6 @@
|
|
|
66
64
|
text-underline-position: from-font;
|
|
67
65
|
-webkit-text-decoration-skip-ink: none;
|
|
68
66
|
text-decoration-skip-ink: none;
|
|
69
|
-
color: #000000a6;
|
|
70
67
|
font-size: 12px;
|
|
71
68
|
font-weight: 400;
|
|
72
69
|
line-height: 20px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/bundle.module.scss"],"names":[],"mappings":"AAAA;EACE,gBAAgB;EAChB,8BAA8B;EAC9B,mBAAmB;EACnB,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,aAAa;EACb,kBAAkB;EAClB,UAAU;AACZ;;AAX6K;EAc3K,mBAAmB;AACrB;;AAfwM;EAkBtM,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/bundle.module.scss"],"names":[],"mappings":"AAAA;EACE,gBAAgB;EAChB,8BAA8B;EAC9B,mBAAmB;EACnB,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,aAAa;EACb,kBAAkB;EAClB,UAAU;AACZ;;AAX6K;EAc3K,mBAAmB;AACrB;;AAfwM;EAkBtM,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAtBsR;EAA0B;IA0B5S,eAAe;EACjB;AACF;;AA5B6U;EA+B3U,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAlCmY;EAqCjY,aAAa;AACf;;AAtC+Z;EAyC7Z,uDAAuD;EACvD,OAAO;EACP,qBAAqB;EACrB,2BAA2B;AAC7B;;AA7CkiB;EAgDhiB,qBAAqB;EACrB,qBAAqB;EACrB,eAAe;AACjB;;AAnDqnB;EAsDnnB,eAAe;AACjB;;AAvDypB;EA0DvpB,YAAY;AACd;;AA3DyrB;EA8DvrB,gBAAgB;EAChB,kCAAkC;EAClC,sCAAsC;EACtC,8BAA8B;EAC9B,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".title{height:40px;display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:500;line-height:20px;text-align:left;position:relative;top:-10px}.column{margin-bottom:14px}.description{font-size:20px;font-weight:500;line-height:32px;margin-right:5px}@media(max-width: 1500px){.description{font-size:16px}}.unit{font-size:12px;font-weight:400;line-height:32px}.treeContainer{display:flex}.treeContainer .line{border-bottom:1px dashed var(--color-divider, #e5e6eb);flex:1;transform:translateY(-45%);margin:0 15px 0 10px}.treeContainer .treeTitle{word-wrap:break-word;word-break:break-all;flex-wrap:wrap}.treeContainer .icon{font-size:16px}.treeContainer .tag{height:23px}.label{font-size:12px;font-weight:400;line-height:20px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}"],"sourceRoot":""}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
:is(.projectOverall-T7onhG .ant-descriptions-item-label, .projectOverall-T7onhG .ant-descriptions-item-content) {
|
|
2
|
-
color: #000000a6;
|
|
3
2
|
font-size: 13px;
|
|
4
3
|
}
|
|
5
4
|
|
|
@@ -8,7 +7,6 @@
|
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
:is(.bundleOverall-Ay7WmZ .ant-descriptions-item-label, .bundleOverall-Ay7WmZ .ant-descriptions-item-content) {
|
|
11
|
-
color: #000000a6;
|
|
12
10
|
font-size: 13px;
|
|
13
11
|
}
|
|
14
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/list.module.scss"],"names":[],"mappings":"AAAA;EACE,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/list.module.scss"],"names":[],"mappings":"AAAA;EACE,eAAe;AACjB;;AAF6H;EAK3H,+BAA+B;AACjC;;AAN4M;EAS1M,eAAe;AACjB;;AAVuU;EAarU,4BAA4B;AAC9B","sourcesContent":[".projectOverall :global(.ant-descriptions-item-label),.projectOverall :global(.ant-descriptions-item-content){font-size:13px}.projectOverall :global(.ant-descriptions-item){padding-bottom:10px !important}.bundleOverall :global(.ant-descriptions-item-label),.bundleOverall :global(.ant-descriptions-item-content){font-size:13px}.bundleOverall :global(.ant-descriptions-item){padding-bottom:0px !important}"],"sourceRoot":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.container-KSV5DZ {
|
|
2
|
+
background: var(--color-bg-box-elevated);
|
|
2
3
|
white-space: nowrap;
|
|
3
|
-
background: #f6f8fa;
|
|
4
4
|
border-radius: 8px;
|
|
5
5
|
justify-content: space-between;
|
|
6
6
|
align-items: center;
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.container-KSV5DZ .content-BsjkSU .title-jUwqD5 {
|
|
18
|
-
color: #000000a6;
|
|
19
18
|
font-size: 12px;
|
|
20
19
|
font-weight: 400;
|
|
21
20
|
line-height: 20px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/overview.module.scss"],"names":[],"mappings":"AAAA;EACE,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/overview.module.scss"],"names":[],"mappings":"AAAA;EACE,wCAAwC;EACxC,mBAAmB;EACnB,kBAAkB;EAClB,8BAA8B;EAC9B,mBAAmB;EACnB,WAAW;EACX,kBAAkB;EAClB,iBAAiB;EACjB,aAAa;AACf;;AAV6M;EAa3M,OAAO;AACT;;AAdwO;EAiBtO,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AApBmT;EAuBjT,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".container{width:100%;display:flex;background:var(--color-bg-box-elevated);align-items:center;justify-content:space-between;border-radius:8px;padding:8px 20px 8px 20px;margin-right:10px;white-space:nowrap}.container .content{flex:1}.container .content .title{font-size:12px;font-weight:400;line-height:20px}.container .content .description{font-size:24px;font-weight:500;line-height:32px}"],"sourceRoot":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CodeViewerProps } from './interface.js';
|
|
2
|
-
export declare function CodeViewer({ className, style, code, lang, filePath, defaultLine, ranges, isEmbed, headerVisible, isLightTheme, formatOnMount, }: CodeViewerProps): import("react").JSX.Element;
|
|
2
|
+
export declare function CodeViewer({ className, style, code, lang, filePath, defaultLine, ranges, isEmbed, headerVisible, isLightTheme: isLightThemeProp, formatOnMount, }: CodeViewerProps): import("react").JSX.Element;
|
|
3
3
|
export type { CodeViewerProps } from './interface.js';
|
|
4
4
|
export { useCodeDrawer } from './useCodeDrawer.js';
|
|
5
5
|
export { defineMonacoOptions } from './utils.js';
|
|
@@ -6,7 +6,10 @@ import { defineMonacoOptions, editorShowRange, getFileName, getFilePathFormat }
|
|
|
6
6
|
import { Checkbox } from "antd";
|
|
7
7
|
import index_module from "./index.module.mjs";
|
|
8
8
|
import { Lodash } from "@rsdoctor/utils/common";
|
|
9
|
-
|
|
9
|
+
import { useTheme } from "../../../utils/index.mjs";
|
|
10
|
+
function CodeViewer({ className, style, code = '', lang, filePath = '', defaultLine, ranges, isEmbed = false, headerVisible = true, isLightTheme: isLightThemeProp, formatOnMount = false }) {
|
|
11
|
+
const { isLight: isLightMode } = useTheme();
|
|
12
|
+
const isLightTheme = isLightThemeProp ?? isLightMode;
|
|
10
13
|
const editor = useRef(void 0);
|
|
11
14
|
const monaco = useRef(void 0);
|
|
12
15
|
const language = useMemo(()=>lang || getFilePathFormat(filePath) || 'plaintext', [
|
|
@@ -34,7 +37,6 @@ function CodeViewer({ className, style, code = '', lang, filePath = '', defaultL
|
|
|
34
37
|
defaultLine,
|
|
35
38
|
formatOnMount
|
|
36
39
|
]);
|
|
37
|
-
const theme = isLightTheme ? 'vs-light' : 'vs-dark';
|
|
38
40
|
useEffect(()=>()=>{
|
|
39
41
|
editor.current?.setModel(null);
|
|
40
42
|
}, []);
|
|
@@ -69,7 +71,7 @@ function CodeViewer({ className, style, code = '', lang, filePath = '', defaultL
|
|
|
69
71
|
/*#__PURE__*/ jsx("div", {
|
|
70
72
|
className: clsx(index_module.content, 'editor-wrap'),
|
|
71
73
|
children: /*#__PURE__*/ jsx(Editor, {
|
|
72
|
-
theme:
|
|
74
|
+
theme: isLightTheme ? 'vs-light' : 'vs-dark',
|
|
73
75
|
language: language,
|
|
74
76
|
value: code,
|
|
75
77
|
options: options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/base/CodeViewer/index.mjs","sources":["../../../../src/components/base/CodeViewer/index.tsx"],"sourcesContent":["import { Editor, Monaco, OnMount } from '@monaco-editor/react';\nimport clsx from 'clsx';\nimport { editor } from 'monaco-editor';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { CodeViewerProps } from './interface';\nimport {\n defineMonacoOptions,\n editorShowRange,\n getFileName,\n getFilePathFormat,\n} from './utils';\n\nimport { Checkbox } from 'antd';\nimport styles from './index.module.scss';\nimport { Lodash } from '@rsdoctor/utils/common';\n\nexport function CodeViewer({\n className,\n style,\n code = '',\n lang,\n filePath = '',\n defaultLine,\n ranges,\n isEmbed = false,\n headerVisible = true,\n isLightTheme
|
|
1
|
+
{"version":3,"file":"components/base/CodeViewer/index.mjs","sources":["../../../../src/components/base/CodeViewer/index.tsx"],"sourcesContent":["import { Editor, Monaco, OnMount } from '@monaco-editor/react';\nimport clsx from 'clsx';\nimport { editor } from 'monaco-editor';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { CodeViewerProps } from './interface';\nimport {\n defineMonacoOptions,\n editorShowRange,\n getFileName,\n getFilePathFormat,\n} from './utils';\n\nimport { Checkbox } from 'antd';\nimport styles from './index.module.scss';\nimport { Lodash } from '@rsdoctor/utils/common';\nimport { useTheme } from 'src/utils';\n\nexport function CodeViewer({\n className,\n style,\n code = '',\n lang,\n filePath = '',\n defaultLine,\n ranges,\n isEmbed = false,\n headerVisible = true,\n isLightTheme: isLightThemeProp,\n formatOnMount = false,\n}: CodeViewerProps) {\n const { isLight: isLightMode } = useTheme();\n const isLightTheme: boolean = isLightThemeProp ?? isLightMode;\n const editor = useRef<editor.IStandaloneCodeEditor>(undefined);\n const monaco = useRef<Monaco>(undefined);\n const language = useMemo(\n () => lang || getFilePathFormat(filePath) || 'plaintext',\n [lang, filePath],\n );\n const [isWordWrap, setIsWordWrap] = useState(true);\n const options = useMemo(\n () => defineMonacoOptions({ wordWrap: isWordWrap ? 'on' : 'off' }),\n [isWordWrap],\n );\n const onEditorMount = useCallback<OnMount>(\n (editorInstance, monacoVal) => {\n editor.current = editorInstance;\n monaco.current = monacoVal;\n\n editorShowRange(editorInstance, monacoVal, ranges);\n if (Lodash.isNumber(defaultLine)) {\n setTimeout(() => {\n editorInstance.revealLine(defaultLine);\n });\n }\n\n if (formatOnMount) {\n // Use Monaco's built-in formatter to format the whole document\n setTimeout(() => {\n editorInstance.getAction('editor.action.formatDocument')?.run();\n }, 0);\n }\n },\n [ranges, defaultLine, formatOnMount],\n );\n\n useEffect(\n () => () => {\n editor.current?.setModel(null);\n },\n [],\n );\n\n return (\n <div\n className={clsx(\n 'monaco-component',\n 'code-viewer',\n styles['code-viewer'],\n isEmbed && styles['embed'],\n className,\n )}\n style={style}\n >\n {headerVisible && Boolean(filePath) && (\n <div className={styles['header']}>\n <div>{getFileName(filePath)}</div>\n <div style={{ flex: 1 }} />\n <div>\n <Checkbox\n className={styles['text']}\n title=\"side-by-side\"\n checked={isWordWrap}\n onChange={(evt) => {\n setIsWordWrap(evt.target.checked);\n }}\n >\n word-wrap\n </Checkbox>\n </div>\n </div>\n )}\n <div className={clsx(styles['content'], 'editor-wrap')}>\n <Editor\n theme={isLightTheme ? 'vs-light' : 'vs-dark'}\n language={language}\n value={code}\n options={options}\n onMount={onEditorMount}\n />\n </div>\n </div>\n );\n}\n\nexport type { CodeViewerProps } from './interface';\nexport { useCodeDrawer } from './useCodeDrawer';\nexport { defineMonacoOptions } from './utils';\n"],"names":["CodeViewer","className","style","code","lang","filePath","defaultLine","ranges","isEmbed","headerVisible","isLightThemeProp","formatOnMount","isLightMode","useTheme","isLightTheme","editor","useRef","undefined","monaco","language","useMemo","getFilePathFormat","isWordWrap","setIsWordWrap","useState","options","defineMonacoOptions","onEditorMount","useCallback","editorInstance","monacoVal","editorShowRange","Lodash","setTimeout","useEffect","clsx","styles","Boolean","getFileName","Checkbox","evt","Editor"],"mappings":";;;;;;;;;AAiBO,SAASA,WAAW,EACzBC,SAAS,EACTC,KAAK,EACLC,OAAO,EAAE,EACTC,IAAI,EACJC,WAAW,EAAE,EACbC,WAAW,EACXC,MAAM,EACNC,UAAU,KAAK,EACfC,gBAAgB,IAAI,EACpB,cAAcC,gBAAgB,EAC9BC,gBAAgB,KAAK,EACL;IAChB,MAAM,EAAE,SAASC,WAAW,EAAE,GAAGC;IACjC,MAAMC,eAAwBJ,oBAAoBE;IAClD,MAAMG,SAASC,OAAqCC;IACpD,MAAMC,SAASF,OAAeC;IAC9B,MAAME,WAAWC,QACf,IAAMhB,QAAQiB,kBAAkBhB,aAAa,aAC7C;QAACD;QAAMC;KAAS;IAElB,MAAM,CAACiB,YAAYC,cAAc,GAAGC,SAAS;IAC7C,MAAMC,UAAUL,QACd,IAAMM,oBAAoB;YAAE,UAAUJ,aAAa,OAAO;QAAM,IAChE;QAACA;KAAW;IAEd,MAAMK,gBAAgBC,YACpB,CAACC,gBAAgBC;QACff,OAAO,OAAO,GAAGc;QACjBX,OAAO,OAAO,GAAGY;QAEjBC,gBAAgBF,gBAAgBC,WAAWvB;QAC3C,IAAIyB,OAAO,QAAQ,CAAC1B,cAClB2B,WAAW;YACTJ,eAAe,UAAU,CAACvB;QAC5B;QAGF,IAAIK,eAEFsB,WAAW;YACTJ,eAAe,SAAS,CAAC,iCAAiC;QAC5D,GAAG;IAEP,GACA;QAACtB;QAAQD;QAAaK;KAAc;IAGtCuB,UACE,IAAM;YACJnB,OAAO,OAAO,EAAE,SAAS;QAC3B,GACA,EAAE;IAGJ,OAAO,WAAP,GACE,KAAC;QACC,WAAWoB,KACT,oBACA,eACAC,YAAAA,CAAAA,cAAqB,EACrB5B,WAAW4B,aAAAA,KAAe,EAC1BnC;QAEF,OAAOC;;YAENO,iBAAiB4B,QAAQhC,aAAa,WAAbA,GACxB,KAAC;gBAAI,WAAW+B,aAAAA,MAAgB;;kCAC9B,IAAC;kCAAKE,YAAYjC;;kCAClB,IAAC;wBAAI,OAAO;4BAAE,MAAM;wBAAE;;kCACtB,IAAC;kCACC,kBAACkC,UAAQA;4BACP,WAAWH,aAAAA,IAAc;4BACzB,OAAM;4BACN,SAASd;4BACT,UAAU,CAACkB;gCACTjB,cAAciB,IAAI,MAAM,CAAC,OAAO;4BAClC;sCACD;;;;;0BAMP,IAAC;gBAAI,WAAWL,KAAKC,aAAAA,OAAiB,EAAE;0BACtC,kBAACK,QAAMA;oBACL,OAAO3B,eAAe,aAAa;oBACnC,UAAUK;oBACV,OAAOhB;oBACP,SAASsB;oBACT,SAASE;;;;;AAKnB"}
|
|
@@ -10,8 +10,7 @@ export interface CodeViewerProps {
|
|
|
10
10
|
*/
|
|
11
11
|
isEmbed?: boolean;
|
|
12
12
|
/**
|
|
13
|
-
* Whether to use light theme configuration
|
|
14
|
-
* @default true
|
|
13
|
+
* Whether to use light theme configuration. If not specified the global theme is used.
|
|
15
14
|
*/
|
|
16
15
|
isLightTheme?: boolean;
|
|
17
16
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DiffViewerProps } from './interface.js';
|
|
2
|
-
export declare function DiffViewer({ className, style, original, modified, originalFilePath, modifiedFilePath, originalLang, modifiedLang, isEmbed, isLightTheme, headerVisible, }: DiffViewerProps): import("react").JSX.Element;
|
|
2
|
+
export declare function DiffViewer({ className, style, original, modified, originalFilePath, modifiedFilePath, originalLang, modifiedLang, isEmbed, isLightTheme: isLightThemeProp, headerVisible, }: DiffViewerProps): import("react").JSX.Element;
|
|
3
3
|
export type { DiffViewerProps } from './interface.js';
|
|
4
4
|
export { useDiffDrawer } from './useDiffDrawer.js';
|
|
5
5
|
export { defineMonacoDiffOptions } from './utils.js';
|
|
@@ -6,7 +6,10 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
6
6
|
import { getFileName, getFilePathFormat } from "../CodeViewer/utils.mjs";
|
|
7
7
|
import index_module from "./index.module.mjs";
|
|
8
8
|
import { defineMonacoDiffOptions } from "./utils.mjs";
|
|
9
|
-
|
|
9
|
+
import { useTheme } from "../../../utils/index.mjs";
|
|
10
|
+
function DiffViewer({ className, style, original = '', modified = '', originalFilePath = '', modifiedFilePath = '', originalLang, modifiedLang, isEmbed = false, isLightTheme: isLightThemeProp, headerVisible = true }) {
|
|
11
|
+
const { isLight: isLightMode } = useTheme();
|
|
12
|
+
const isLightTheme = isLightThemeProp ?? isLightMode;
|
|
10
13
|
const [isSideBySide, setIsSideBySide] = useState(true);
|
|
11
14
|
const editor = useRef(void 0);
|
|
12
15
|
const originalLanguage = useMemo(()=>originalLang || getFilePathFormat(originalFilePath) || 'plaintext', [
|