@rsdoctor/components 1.3.7 → 1.3.9

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 (281) hide show
  1. package/dist/common/imgs/connection-point.mjs.map +1 -1
  2. package/dist/common/imgs/webpack.mjs.map +1 -1
  3. package/dist/common/svg/bundle-size.mjs.map +1 -1
  4. package/dist/common/svg/error.mjs.map +1 -1
  5. package/dist/common/svg/file-css.mjs.map +1 -1
  6. package/dist/common/svg/file-html.mjs.map +1 -1
  7. package/dist/common/svg/file-image.mjs.map +1 -1
  8. package/dist/common/svg/file-js.mjs.map +1 -1
  9. package/dist/common/svg/file-unknown.mjs.map +1 -1
  10. package/dist/common/svg/file.mjs.map +1 -1
  11. package/dist/common/svg/files/css.mjs.map +1 -1
  12. package/dist/common/svg/files/html.mjs.map +1 -1
  13. package/dist/common/svg/files/image.mjs.map +1 -1
  14. package/dist/common/svg/files/js.mjs.map +1 -1
  15. package/dist/common/svg/files/unkown-file.mjs.map +1 -1
  16. package/dist/common/svg/loader/input.mjs.map +1 -1
  17. package/dist/common/svg/loader/output.mjs.map +1 -1
  18. package/dist/common/svg/loader/step.mjs.map +1 -1
  19. package/dist/common/svg/navbar/bundle-size-active.mjs.map +1 -1
  20. package/dist/common/svg/navbar/bundle-size-inactive.mjs.map +1 -1
  21. package/dist/common/svg/navbar/compile-analysis-active.mjs.map +1 -1
  22. package/dist/common/svg/navbar/compile-analysis-inactive.mjs.map +1 -1
  23. package/dist/common/svg/navbar/overall-active.mjs.map +1 -1
  24. package/dist/common/svg/navbar/overall-inactive.mjs.map +1 -1
  25. package/dist/common/svg/output.mjs.map +1 -1
  26. package/dist/common/svg/source-size.mjs.map +1 -1
  27. package/dist/common/svg/source.mjs.map +1 -1
  28. package/dist/common/svg/total-size.mjs.map +1 -1
  29. package/dist/common/svg/version.mjs.map +1 -1
  30. package/dist/components/Alert/change.d.ts +1 -1
  31. package/dist/components/Alert/change.mjs.map +1 -1
  32. package/dist/components/Alert/ecma-version-check.d.ts +1 -1
  33. package/dist/components/Alert/ecma-version-check.mjs.map +1 -1
  34. package/dist/components/Alert/ecma-version-check.module.mjs.map +1 -1
  35. package/dist/components/Alert/file-relation.d.ts +1 -1
  36. package/dist/components/Alert/file-relation.mjs.map +1 -1
  37. package/dist/components/Alert/package-relation.d.ts +1 -1
  38. package/dist/components/Alert/package-relation.mjs.map +1 -1
  39. package/dist/components/Alert/package-relation.module.mjs.map +1 -1
  40. package/dist/components/Alert/view.d.ts +1 -1
  41. package/dist/components/Alert/view.mjs.map +1 -1
  42. package/dist/components/Alerts/bundle-alert.d.ts +2 -2
  43. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  44. package/dist/components/Alerts/bundle-alert.module.mjs.map +1 -1
  45. package/dist/components/Alerts/bundle.mjs.map +1 -1
  46. package/dist/components/Alerts/collapse-cross-chunks.d.ts +1 -1
  47. package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
  48. package/dist/components/Alerts/collapse.d.ts +1 -1
  49. package/dist/components/Alerts/collapse.mjs.map +1 -1
  50. package/dist/components/Alerts/collapse.module.mjs.map +1 -1
  51. package/dist/components/Alerts/compile.mjs.map +1 -1
  52. package/dist/components/Alerts/index.d.ts +3 -3
  53. package/dist/components/Alerts/list.mjs.map +1 -1
  54. package/dist/components/Alerts/list.module.mjs.map +1 -1
  55. package/dist/components/Alerts/overlay.mjs.map +1 -1
  56. package/dist/components/Alerts/overlay.module.mjs.map +1 -1
  57. package/dist/components/Badge/index.mjs.map +1 -1
  58. package/dist/components/Card/diff.d.ts +1 -1
  59. package/dist/components/Card/diff.mjs.map +1 -1
  60. package/dist/components/Card/index.d.ts +1 -1
  61. package/dist/components/Card/index.mjs.map +1 -1
  62. package/dist/components/Card/size.mjs.map +1 -1
  63. package/dist/components/Card/size.module.mjs.map +1 -1
  64. package/dist/components/Card/statistic.mjs.map +1 -1
  65. package/dist/components/Charts/TimelineCharts/index.d.ts +2 -2
  66. package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
  67. package/dist/components/Charts/TreeMap.mjs.map +1 -1
  68. package/dist/components/Charts/bootstrap.d.ts +1 -1
  69. package/dist/components/Charts/bootstrap.mjs.map +1 -1
  70. package/dist/components/Charts/common.d.ts +2 -2
  71. package/dist/components/Charts/common.mjs.map +1 -1
  72. package/dist/components/Charts/constants.mjs.map +1 -1
  73. package/dist/components/Charts/done.d.ts +1 -1
  74. package/dist/components/Charts/done.mjs.map +1 -1
  75. package/dist/components/Charts/index.mjs.map +1 -1
  76. package/dist/components/Charts/loader.d.ts +1 -1
  77. package/dist/components/Charts/loader.mjs.map +1 -1
  78. package/dist/components/Charts/minify.d.ts +1 -1
  79. package/dist/components/Charts/minify.mjs.map +1 -1
  80. package/dist/components/Charts/treemap.module.mjs.map +1 -1
  81. package/dist/components/Charts/types.mjs.map +1 -1
  82. package/dist/components/Charts/utils.d.ts +1 -1
  83. package/dist/components/Charts/utils.mjs.map +1 -1
  84. package/dist/components/Configuration/builder.mjs.map +1 -1
  85. package/dist/components/Configuration/builder.module.mjs.map +1 -1
  86. package/dist/components/Configuration/index.d.ts +1 -1
  87. package/dist/components/FileTree/css.mjs.map +1 -1
  88. package/dist/components/FileTree/html.mjs.map +1 -1
  89. package/dist/components/FileTree/image.mjs.map +1 -1
  90. package/dist/components/FileTree/index.mjs.map +1 -1
  91. package/dist/components/FileTree/js.mjs.map +1 -1
  92. package/dist/components/FileTree/unkown-file.mjs.map +1 -1
  93. package/dist/components/Form/keyword.mjs.map +1 -1
  94. package/dist/components/Keyword/index.mjs.map +1 -1
  95. package/dist/components/Keyword/style.module.mjs.map +1 -1
  96. package/dist/components/Layout/builder-select.mjs.map +1 -1
  97. package/dist/components/Layout/bundle-size-icon.mjs.map +1 -1
  98. package/dist/components/Layout/compile-icon.mjs.map +1 -1
  99. package/dist/components/Layout/constants.mjs.map +1 -1
  100. package/dist/components/Layout/header.mjs.map +1 -1
  101. package/dist/components/Layout/index.mjs.map +1 -1
  102. package/dist/components/Layout/menus.mjs.map +1 -1
  103. package/dist/components/Layout/overall-icon.mjs.map +1 -1
  104. package/dist/components/Layout/progress.mjs.map +1 -1
  105. package/dist/components/Loader/Analysis/files.mjs.map +1 -1
  106. package/dist/components/Loader/Analysis/index.mjs.map +1 -1
  107. package/dist/components/Loader/Analysis/input.mjs.map +1 -1
  108. package/dist/components/Loader/Analysis/output.mjs.map +1 -1
  109. package/dist/components/Loader/Analysis/style.module.mjs.map +1 -1
  110. package/dist/components/Loader/executions.mjs.map +1 -1
  111. package/dist/components/Loader/step.mjs.map +1 -1
  112. package/dist/components/Manifest/api.mjs.map +1 -1
  113. package/dist/components/Manifest/data.mjs.map +1 -1
  114. package/dist/components/Manifest/index.d.ts +2 -2
  115. package/dist/components/Opener/code.mjs.map +1 -1
  116. package/dist/components/Opener/index.d.ts +2 -2
  117. package/dist/components/Opener/vscode.mjs.map +1 -1
  118. package/dist/components/Overall/DataSummary.mjs.map +1 -1
  119. package/dist/components/Overall/DataSummary.module.mjs.map +1 -1
  120. package/dist/components/Overall/bundle.mjs.map +1 -1
  121. package/dist/components/Overall/bundle.module.mjs.map +1 -1
  122. package/dist/components/Overall/card.module.mjs.map +1 -1
  123. package/dist/components/Overall/compile.mjs.map +1 -1
  124. package/dist/components/Overall/compile.module.mjs.map +1 -1
  125. package/dist/components/Overall/help-center.mjs.map +1 -1
  126. package/dist/components/Overall/help-center.module.mjs.map +1 -1
  127. package/dist/components/Overall/index.d.ts +3 -3
  128. package/dist/components/Overall/list.module.mjs.map +1 -1
  129. package/dist/components/Overall/overview.mjs.map +1 -1
  130. package/dist/components/Overall/overview.module.mjs.map +1 -1
  131. package/dist/components/Overall/project.mjs.map +1 -1
  132. package/dist/components/Overall/project.module.mjs.map +1 -1
  133. package/dist/components/Plugins/webpack.mjs.map +1 -1
  134. package/dist/components/Resolver/analysis.mjs.map +1 -1
  135. package/dist/components/Select/index.mjs.map +1 -1
  136. package/dist/components/Status/failed.mjs.map +1 -1
  137. package/dist/components/Status/index.d.ts +1 -1
  138. package/dist/components/TextDrawer/duplicate.d.ts +2 -2
  139. package/dist/components/TextDrawer/duplicate.mjs.map +1 -1
  140. package/dist/components/TextDrawer/index.d.ts +1 -1
  141. package/dist/components/TextDrawer/index.mjs.map +1 -1
  142. package/dist/components/Title/index.mjs.map +1 -1
  143. package/dist/components/base/CodeViewer/index.d.ts +4 -4
  144. package/dist/components/base/CodeViewer/index.mjs.map +1 -1
  145. package/dist/components/base/CodeViewer/index.module.mjs.map +1 -1
  146. package/dist/components/base/CodeViewer/useCodeDrawer.d.ts +1 -1
  147. package/dist/components/base/CodeViewer/useCodeDrawer.mjs.map +1 -1
  148. package/dist/components/base/CodeViewer/utils.mjs.map +1 -1
  149. package/dist/components/base/DiffViewer/index.d.ts +4 -4
  150. package/dist/components/base/DiffViewer/index.mjs.map +1 -1
  151. package/dist/components/base/DiffViewer/index.module.mjs.map +1 -1
  152. package/dist/components/base/DiffViewer/useDiffDrawer.d.ts +1 -1
  153. package/dist/components/base/DiffViewer/useDiffDrawer.mjs.map +1 -1
  154. package/dist/components/base/DiffViewer/utils.mjs.map +1 -1
  155. package/dist/components/base/index.d.ts +2 -2
  156. package/dist/components/index.d.ts +10 -10
  157. package/dist/config.d.ts +1 -1
  158. package/dist/config.mjs.map +1 -1
  159. package/dist/constants.mjs.map +1 -1
  160. package/dist/index.d.ts +3 -3
  161. package/dist/pages/BundleSize/components/asset.d.ts +1 -1
  162. package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
  163. package/dist/pages/BundleSize/components/card.module.mjs.map +1 -1
  164. package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
  165. package/dist/pages/BundleSize/components/index.mjs.map +1 -1
  166. package/dist/pages/BundleSize/components/index.module.mjs.map +1 -1
  167. package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
  168. package/dist/pages/BundleSize/config.mjs.map +1 -1
  169. package/dist/pages/BundleSize/constants.mjs.map +1 -1
  170. package/dist/pages/BundleSize/index.d.ts +1 -1
  171. package/dist/pages/BundleSize/index.mjs.map +1 -1
  172. package/dist/pages/ModuleAnalyze/chunks.mjs.map +1 -1
  173. package/dist/pages/ModuleAnalyze/components/fileTreeCom.d.ts +1 -1
  174. package/dist/pages/ModuleAnalyze/components/fileTreeCom.mjs.map +1 -1
  175. package/dist/pages/ModuleAnalyze/constants.mjs.map +1 -1
  176. package/dist/pages/ModuleAnalyze/dependency.mjs.map +1 -1
  177. package/dist/pages/ModuleAnalyze/fileTree.mjs.map +1 -1
  178. package/dist/pages/ModuleAnalyze/index.mjs.map +1 -1
  179. package/dist/pages/ModuleAnalyze/utils/hooks.mjs.map +1 -1
  180. package/dist/pages/ModuleAnalyze/utils/index.mjs.map +1 -1
  181. package/dist/pages/ModuleResolve/constants.mjs.map +1 -1
  182. package/dist/pages/ModuleResolve/index.d.ts +1 -1
  183. package/dist/pages/ModuleResolve/index.mjs.map +1 -1
  184. package/dist/pages/Overall/constants.mjs.map +1 -1
  185. package/dist/pages/Overall/index.d.ts +1 -1
  186. package/dist/pages/Overall/index.mjs.map +1 -1
  187. package/dist/pages/Overall/index.module.mjs.map +1 -1
  188. package/dist/pages/Overall/responsiveLayout.mjs.map +1 -1
  189. package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
  190. package/dist/pages/Resources/BundleDiff/DiffContainer/cards.d.ts +1 -1
  191. package/dist/pages/Resources/BundleDiff/DiffContainer/cards.mjs.map +1 -1
  192. package/dist/pages/Resources/BundleDiff/DiffContainer/changes.mjs.map +1 -1
  193. package/dist/pages/Resources/BundleDiff/DiffContainer/constants.mjs.map +1 -1
  194. package/dist/pages/Resources/BundleDiff/DiffContainer/index.d.ts +1 -1
  195. package/dist/pages/Resources/BundleDiff/DiffContainer/index.mjs.map +1 -1
  196. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.d.ts +2 -2
  197. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
  198. package/dist/pages/Resources/BundleDiff/DiffContainer/overview.mjs.map +1 -1
  199. package/dist/pages/Resources/BundleDiff/DiffContainer/packages.d.ts +1 -1
  200. package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs.map +1 -1
  201. package/dist/pages/Resources/BundleDiff/DiffContainer/row.d.ts +1 -1
  202. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs.map +1 -1
  203. package/dist/pages/Resources/BundleDiff/DiffContainer/types.d.ts +2 -2
  204. package/dist/pages/Resources/BundleDiff/DiffContainer/utils.mjs.map +1 -1
  205. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.d.ts +1 -1
  206. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs.map +1 -1
  207. package/dist/pages/Resources/BundleDiff/constants.mjs.map +1 -1
  208. package/dist/pages/Resources/BundleDiff/index.d.ts +2 -2
  209. package/dist/pages/Resources/BundleDiff/index.mjs.map +1 -1
  210. package/dist/pages/Resources/RuleIndex/constants.mjs.map +1 -1
  211. package/dist/pages/Resources/RuleIndex/index.d.ts +1 -1
  212. package/dist/pages/Resources/RuleIndex/index.mjs.map +1 -1
  213. package/dist/pages/TreeShaking/constants.mjs.map +1 -1
  214. package/dist/pages/TreeShaking/editor.d.ts +1 -1
  215. package/dist/pages/TreeShaking/editor.mjs.map +1 -1
  216. package/dist/pages/TreeShaking/index.d.ts +1 -1
  217. package/dist/pages/TreeShaking/index.mjs.map +1 -1
  218. package/dist/pages/TreeShaking/open-tag.mjs.map +1 -1
  219. package/dist/pages/TreeShaking/range.mjs.map +1 -1
  220. package/dist/pages/TreeShaking/space.mjs.map +1 -1
  221. package/dist/pages/TreeShaking/table.d.ts +1 -1
  222. package/dist/pages/TreeShaking/table.mjs.map +1 -1
  223. package/dist/pages/TreeShaking/utils.d.ts +1 -1
  224. package/dist/pages/TreeShaking/utils.mjs.map +1 -1
  225. package/dist/pages/Uploader/constants.mjs.map +1 -1
  226. package/dist/pages/Uploader/index.d.ts +1 -1
  227. package/dist/pages/Uploader/index.mjs.map +1 -1
  228. package/dist/pages/Uploader/utils.mjs.map +1 -1
  229. package/dist/pages/WebpackLoaders/Analysis/constants.mjs.map +1 -1
  230. package/dist/pages/WebpackLoaders/Analysis/index.d.ts +1 -1
  231. package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
  232. package/dist/pages/WebpackLoaders/Overall/constants.mjs.map +1 -1
  233. package/dist/pages/WebpackLoaders/Overall/index.d.ts +1 -1
  234. package/dist/pages/WebpackLoaders/Overall/index.mjs.map +1 -1
  235. package/dist/pages/WebpackLoaders/constants.mjs.map +1 -1
  236. package/dist/pages/WebpackPlugins/constants.mjs.map +1 -1
  237. package/dist/pages/WebpackPlugins/index.d.ts +1 -1
  238. package/dist/pages/WebpackPlugins/index.mjs.map +1 -1
  239. package/dist/pages/index.d.ts +11 -11
  240. package/dist/utils/data/base.mjs.map +1 -1
  241. package/dist/utils/data/brief.d.ts +1 -1
  242. package/dist/utils/data/brief.mjs.map +1 -1
  243. package/dist/utils/data/index.d.ts +1 -1
  244. package/dist/utils/data/index.mjs.map +1 -1
  245. package/dist/utils/data/local.d.ts +1 -1
  246. package/dist/utils/data/local.mjs.map +1 -1
  247. package/dist/utils/data/remote.d.ts +1 -1
  248. package/dist/utils/data/remote.mjs.map +1 -1
  249. package/dist/utils/file.mjs.map +1 -1
  250. package/dist/utils/hooks.d.ts +1 -1
  251. package/dist/utils/hooks.mjs +4 -3
  252. package/dist/utils/hooks.mjs.map +1 -1
  253. package/dist/utils/i18n/cn.d.ts +1 -1
  254. package/dist/utils/i18n/cn.mjs.map +1 -1
  255. package/dist/utils/i18n/en.mjs +3 -3
  256. package/dist/utils/i18n/en.mjs.map +1 -1
  257. package/dist/utils/i18n/index.mjs.map +1 -1
  258. package/dist/utils/index.d.ts +16 -16
  259. package/dist/utils/loader.mjs.map +1 -1
  260. package/dist/utils/locale.d.ts +1 -1
  261. package/dist/utils/locale.mjs.map +1 -1
  262. package/dist/utils/manifest.d.ts +4 -4
  263. package/dist/utils/manifest.mjs.map +1 -1
  264. package/dist/utils/request.mjs.map +1 -1
  265. package/dist/utils/routes.mjs.map +1 -1
  266. package/dist/utils/size.mjs.map +1 -1
  267. package/dist/utils/socket.mjs.map +1 -1
  268. package/dist/utils/stats.mjs.map +1 -1
  269. package/dist/utils/storage.d.ts +2 -2
  270. package/dist/utils/storage.mjs.map +1 -1
  271. package/dist/utils/string.mjs.map +1 -1
  272. package/dist/utils/time.mjs.map +1 -1
  273. package/dist/utils/url.mjs.map +1 -1
  274. package/dist/utils/worker/index.d.ts +4 -4
  275. package/dist/utils/worker/master.d.ts +2 -2
  276. package/dist/utils/worker/master.mjs.map +1 -1
  277. package/dist/utils/worker/utils.d.ts +1 -1
  278. package/dist/utils/worker/utils.mjs.map +1 -1
  279. package/dist/utils/worker/worker.d.ts +1 -1
  280. package/dist/utils/worker/worker.mjs.map +1 -1
  281. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/TimelineCharts/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/TimelineCharts/index.tsx"],"sourcesContent":["import React, { useState, useEffect, memo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { CustomChart } from 'echarts/charts';\nimport {\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\n\nimport dayjs from 'dayjs';\nimport { ChartProps, DurationMetric, ITraceEventData } from '../types';\nimport { groupBy } from 'es-toolkit/compat';\nimport { ChartTypes, PALETTE_COLORS } from '../constants';\n\ninterface CoordSysType {\n x: number;\n y: number;\n width: number;\n height: number;\n}\ntype LoaderType = {\n name: string;\n value: number[];\n itemStyle: { normal: { color: string; opacity?: number } };\n ext?: Record<string, any>;\n};\n\nconst LINE_HEIGHT = 60;\n\nexport const TimelineCom: React.FC<{\n loaderData?: DurationMetric[];\n pluginsData?: ITraceEventData[];\n formatterFn: Function;\n chartType?: ChartTypes;\n exts?: { endTimestamp: number; startTimestamp: number };\n}> = memo(\n ({\n loaderData,\n pluginsData,\n formatterFn,\n chartType = ChartTypes.Normal,\n exts = null,\n }) => {\n const data: LoaderType[] = [];\n let categories: string[] = [];\n const [optionsData, setOptionsData] = useState({});\n\n // Register the required components\n echarts.use([\n CustomChart,\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n CanvasRenderer,\n ]);\n\n useEffect(() => {\n if (!loaderData) return;\n const _categories: string[] = [];\n loaderData.forEach((_l) => {\n _categories.unshift(_l.n + ' total');\n _categories.unshift(_l.n);\n });\n\n // Generate mock data\n loaderData.forEach(function (_loaderData, _i) {\n data.push({\n name: _loaderData.n + ' total',\n value: [\n _categories.indexOf(_loaderData.n + ' total'),\n _loaderData.s,\n _loaderData.e,\n _loaderData.e - _loaderData.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n });\n\n if (!_loaderData?.c) return;\n for (let l = 0; l < _loaderData?.c?.length; l++) {\n data.push({\n name: _loaderData.n,\n value: [\n _categories.indexOf(_loaderData.n),\n _loaderData.c[l].s,\n _loaderData.c[l].e,\n _loaderData.c[l].e - _loaderData.c[l].s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _loaderData.c[l].ext as ChartProps['loaders'][0],\n });\n }\n });\n\n categories = _categories.map((val, i) => {\n if (i % 2 !== 0) {\n return val.replace(' total', '');\n } else {\n return '';\n }\n });\n }, [loaderData]);\n\n useEffect(() => {\n if (!pluginsData) return;\n\n const _pluginsData = groupBy(pluginsData, (e: ITraceEventData) => e.pid);\n\n Object.keys(_pluginsData)\n .reverse()\n .forEach(function (key, i) {\n _pluginsData[key].forEach((_plugin, _i) => {\n data.push({\n name: String(_plugin.pid),\n value: [\n i,\n _plugin.args.s,\n _plugin.args.e,\n _plugin.args.e - _plugin.args.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _plugin,\n });\n });\n categories.push(String(key.charAt(0).toUpperCase() + key.slice(1)));\n });\n }, [pluginsData]);\n\n useEffect(() => {\n function renderItem(\n params: { coordSys: CoordSysType },\n api: {\n value: (arg0: number) => number;\n coord: (arg0: number[]) => any;\n size: (arg0: number[]) => number[];\n style: () => string;\n },\n ) {\n const categoryIndex = api.value(0);\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const height = api.size([0, 1])[1] * 0.3;\n\n const rectShape = echarts.graphic.clipRectByRect(\n {\n x: start[0],\n y:\n chartType === ChartTypes.Loader\n ? start[1] - (categoryIndex % 2 !== 0 ? 0 : height * 2)\n : start[1],\n width: end[0] - start[0] || 5,\n height: height,\n },\n {\n x: params.coordSys.x,\n y: params.coordSys.y,\n width: params.coordSys.width,\n height: params.coordSys.height,\n },\n );\n return (\n rectShape && {\n type: 'rect',\n transition: ['shape'],\n shape: rectShape,\n style: api.style(),\n enterFrom: {\n style: { opacity: 0 },\n x: 0,\n },\n }\n );\n }\n\n const option = {\n tooltip: {\n formatter: (raw: any) => {\n return formatterFn(raw);\n },\n },\n dataZoom: [\n {\n type: 'slider',\n filterMode: 'weakFilter',\n showDataShadow: false,\n top: -10,\n },\n {\n type: 'inside',\n filterMode: 'weakFilter',\n },\n ],\n grid: {\n top: 10,\n left: 0,\n bottom: 10,\n right: 0,\n height:\n categories.length > (chartType === ChartTypes.Loader ? 6 : 3)\n ? 'auto'\n : categories.length * LINE_HEIGHT,\n containLabel: true,\n },\n xAxis: {\n interval:\n exts?.endTimestamp && exts?.startTimestamp\n ? Math.floor((exts.endTimestamp - exts.startTimestamp) / 8)\n : null,\n position: 'top',\n splitLine: {\n show: true,\n },\n scale: true,\n axisLine: {\n show: false,\n },\n axisLabel: {\n formatter(val: number) {\n return dayjs(val as number).format('HH:mm:ss:SSS');\n },\n },\n },\n yAxis: {\n type: 'category',\n splitLine: {\n show: false,\n },\n axisLabel: {\n inside: true,\n lineHeight: 20,\n width: 100,\n fontSize: 12,\n color: '#000',\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: categories,\n },\n series: [\n {\n type: 'custom',\n renderItem,\n itemStyle: {\n opacity: 0.8,\n },\n encode: {\n x: [1, 2],\n y: 0,\n },\n data,\n },\n ],\n };\n setOptionsData(option);\n }, [loaderData, pluginsData, exts]);\n\n return (\n <ReactEChartsCore\n option={optionsData}\n echarts={echarts}\n style={{\n width: '100%',\n minHeight:\n chartType === ChartTypes.Loader\n ? '500px'\n : chartType === ChartTypes.Minify\n ? '100px'\n : '200px',\n maxHeight: chartType === ChartTypes.Minify ? '100px' : '1000px',\n border: '1px solid #eee',\n borderRadius: '10px',\n }}\n />\n );\n },\n);\n"],"names":["LINE_HEIGHT","TimelineCom","memo","loaderData","pluginsData","formatterFn","chartType","ChartTypes","exts","data","categories","optionsData","setOptionsData","useState","echarts","CustomChart","TooltipComponent","GridComponent","DataZoomComponent","CanvasRenderer","useEffect","_categories","_l","_loaderData","_i","PALETTE_COLORS","Math","l","val","i","_pluginsData","groupBy","e","Object","key","_plugin","String","renderItem","params","api","categoryIndex","start","end","height","rectShape","option","raw","dayjs","ReactEChartsCore"],"mappings":"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"}
1
+ {"version":3,"file":"components/Charts/TimelineCharts/index.mjs","sources":["../../../../src/components/Charts/TimelineCharts/index.tsx"],"sourcesContent":["import React, { useState, useEffect, memo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { CustomChart } from 'echarts/charts';\nimport {\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\n\nimport dayjs from 'dayjs';\nimport { ChartProps, DurationMetric, ITraceEventData } from '../types';\nimport { groupBy } from 'es-toolkit/compat';\nimport { ChartTypes, PALETTE_COLORS } from '../constants';\n\ninterface CoordSysType {\n x: number;\n y: number;\n width: number;\n height: number;\n}\ntype LoaderType = {\n name: string;\n value: number[];\n itemStyle: { normal: { color: string; opacity?: number } };\n ext?: Record<string, any>;\n};\n\nconst LINE_HEIGHT = 60;\n\nexport const TimelineCom: React.FC<{\n loaderData?: DurationMetric[];\n pluginsData?: ITraceEventData[];\n formatterFn: Function;\n chartType?: ChartTypes;\n exts?: { endTimestamp: number; startTimestamp: number };\n}> = memo(\n ({\n loaderData,\n pluginsData,\n formatterFn,\n chartType = ChartTypes.Normal,\n exts = null,\n }) => {\n const data: LoaderType[] = [];\n let categories: string[] = [];\n const [optionsData, setOptionsData] = useState({});\n\n // Register the required components\n echarts.use([\n CustomChart,\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n CanvasRenderer,\n ]);\n\n useEffect(() => {\n if (!loaderData) return;\n const _categories: string[] = [];\n loaderData.forEach((_l) => {\n _categories.unshift(_l.n + ' total');\n _categories.unshift(_l.n);\n });\n\n // Generate mock data\n loaderData.forEach(function (_loaderData, _i) {\n data.push({\n name: _loaderData.n + ' total',\n value: [\n _categories.indexOf(_loaderData.n + ' total'),\n _loaderData.s,\n _loaderData.e,\n _loaderData.e - _loaderData.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n });\n\n if (!_loaderData?.c) return;\n for (let l = 0; l < _loaderData?.c?.length; l++) {\n data.push({\n name: _loaderData.n,\n value: [\n _categories.indexOf(_loaderData.n),\n _loaderData.c[l].s,\n _loaderData.c[l].e,\n _loaderData.c[l].e - _loaderData.c[l].s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _loaderData.c[l].ext as ChartProps['loaders'][0],\n });\n }\n });\n\n categories = _categories.map((val, i) => {\n if (i % 2 !== 0) {\n return val.replace(' total', '');\n } else {\n return '';\n }\n });\n }, [loaderData]);\n\n useEffect(() => {\n if (!pluginsData) return;\n\n const _pluginsData = groupBy(pluginsData, (e: ITraceEventData) => e.pid);\n\n Object.keys(_pluginsData)\n .reverse()\n .forEach(function (key, i) {\n _pluginsData[key].forEach((_plugin, _i) => {\n data.push({\n name: String(_plugin.pid),\n value: [\n i,\n _plugin.args.s,\n _plugin.args.e,\n _plugin.args.e - _plugin.args.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _plugin,\n });\n });\n categories.push(String(key.charAt(0).toUpperCase() + key.slice(1)));\n });\n }, [pluginsData]);\n\n useEffect(() => {\n function renderItem(\n params: { coordSys: CoordSysType },\n api: {\n value: (arg0: number) => number;\n coord: (arg0: number[]) => any;\n size: (arg0: number[]) => number[];\n style: () => string;\n },\n ) {\n const categoryIndex = api.value(0);\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const height = api.size([0, 1])[1] * 0.3;\n\n const rectShape = echarts.graphic.clipRectByRect(\n {\n x: start[0],\n y:\n chartType === ChartTypes.Loader\n ? start[1] - (categoryIndex % 2 !== 0 ? 0 : height * 2)\n : start[1],\n width: end[0] - start[0] || 5,\n height: height,\n },\n {\n x: params.coordSys.x,\n y: params.coordSys.y,\n width: params.coordSys.width,\n height: params.coordSys.height,\n },\n );\n return (\n rectShape && {\n type: 'rect',\n transition: ['shape'],\n shape: rectShape,\n style: api.style(),\n enterFrom: {\n style: { opacity: 0 },\n x: 0,\n },\n }\n );\n }\n\n const option = {\n tooltip: {\n formatter: (raw: any) => {\n return formatterFn(raw);\n },\n },\n dataZoom: [\n {\n type: 'slider',\n filterMode: 'weakFilter',\n showDataShadow: false,\n top: -10,\n },\n {\n type: 'inside',\n filterMode: 'weakFilter',\n },\n ],\n grid: {\n top: 10,\n left: 0,\n bottom: 10,\n right: 0,\n height:\n categories.length > (chartType === ChartTypes.Loader ? 6 : 3)\n ? 'auto'\n : categories.length * LINE_HEIGHT,\n containLabel: true,\n },\n xAxis: {\n interval:\n exts?.endTimestamp && exts?.startTimestamp\n ? Math.floor((exts.endTimestamp - exts.startTimestamp) / 8)\n : null,\n position: 'top',\n splitLine: {\n show: true,\n },\n scale: true,\n axisLine: {\n show: false,\n },\n axisLabel: {\n formatter(val: number) {\n return dayjs(val as number).format('HH:mm:ss:SSS');\n },\n },\n },\n yAxis: {\n type: 'category',\n splitLine: {\n show: false,\n },\n axisLabel: {\n inside: true,\n lineHeight: 20,\n width: 100,\n fontSize: 12,\n color: '#000',\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: categories,\n },\n series: [\n {\n type: 'custom',\n renderItem,\n itemStyle: {\n opacity: 0.8,\n },\n encode: {\n x: [1, 2],\n y: 0,\n },\n data,\n },\n ],\n };\n setOptionsData(option);\n }, [loaderData, pluginsData, exts]);\n\n return (\n <ReactEChartsCore\n option={optionsData}\n echarts={echarts}\n style={{\n width: '100%',\n minHeight:\n chartType === ChartTypes.Loader\n ? '500px'\n : chartType === ChartTypes.Minify\n ? '100px'\n : '200px',\n maxHeight: chartType === ChartTypes.Minify ? '100px' : '1000px',\n border: '1px solid #eee',\n borderRadius: '10px',\n }}\n />\n );\n },\n);\n"],"names":["LINE_HEIGHT","TimelineCom","memo","loaderData","pluginsData","formatterFn","chartType","ChartTypes","exts","data","categories","optionsData","setOptionsData","useState","echarts","CustomChart","TooltipComponent","GridComponent","DataZoomComponent","CanvasRenderer","useEffect","_categories","_l","_loaderData","_i","PALETTE_COLORS","Math","l","val","i","_pluginsData","groupBy","e","Object","key","_plugin","String","renderItem","params","api","categoryIndex","start","end","height","rectShape","option","raw","dayjs","ReactEChartsCore"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/TreeMap.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport EChartsReactCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Card, Typography, Space, Tooltip, Tag } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from 'src/utils';\nimport { SearchModal } from 'src/pages/BundleSize/components/search-modal';\nimport Styles from './treemap.module.scss';\n\n// TreeNode type should match the output of flattenTreemapData\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n};\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n valueKey?: 'sourceSize' | 'bundledSize'; // which value to show as area\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n}\n\n// Simple hash function for string (djb2)\nfunction hashString(str: string): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n }\n return hash >>> 0; // Ensure unsigned\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n color: 'white',\n borderColor: '#eee',\n borderWidth: 5,\n gapWidth: 5,\n },\n emphasis: {\n itemStyle: {\n borderColor: '#a29f9f',\n },\n },\n },\n {\n colorSaturation: [0.25, 0.5],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 5,\n borderColorSaturation: 0.5,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n valueKey = 'sourceSize',\n style,\n onChartClick,\n forwardedRef,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n\n // Expose chartRef to parent if forwardedRef is provided\n useEffect(() => {\n if (forwardedRef && chartRef.current) {\n if (typeof forwardedRef === 'function') {\n forwardedRef(chartRef.current);\n } else {\n (forwardedRef as React.MutableRefObject<any>).current =\n chartRef.current;\n }\n }\n }, [forwardedRef, chartRef.current]);\n\n // Register ECharts components\n useEffect(() => {\n echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n }, []);\n\n useEffect(() => {\n if (!treeData) return;\n // Helper to recursively add value field for ECharts\n function convert(\n node: TreeNode,\n colorGroup: keyof typeof BUNDLE_ANALYZER_COLORS,\n level = 0,\n ): any {\n const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];\n const children = node.children?.map((c, _i) =>\n convert(c, colorGroup, level + 1),\n );\n\n return {\n id: node.path ? hashString(node.path) : undefined,\n name: node.name,\n value: node[valueKey] || node.value || node['sourceSize'] || 0,\n path: node.path,\n sourceSize: node.sourceSize ?? node.value,\n bundledSize: node.bundledSize,\n gzipSize: node.gzipSize,\n children: children && children.length > 0 ? children : undefined,\n itemStyle: {\n borderWidth: 2,\n gapWidth: 2,\n borderColorSaturation: 0.2,\n colorSaturation: 0.2,\n color: groupColors[level % groupColors.length],\n borderColor: groupColors[level % groupColors.length],\n },\n level,\n };\n }\n const data = treeData.map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 0);\n });\n\n setOption({\n title: {\n text: 'Bundle Tree Map',\n left: 'center',\n },\n tooltip: {\n position: 'top',\n formatter: function (info: any) {\n var treePathInfo = info.treePathInfo;\n var treePath = [];\n for (var i = 1; i < treePathInfo.length; i++) {\n treePath.push(treePathInfo[i].name);\n }\n // Get extra info from node data\n var node = info.data || {};\n var path = node.path || treePath.join('/');\n var sourceSize = node.sourceSize;\n var bundledSize = node.bundledSize;\n var gzipSize = node.gzipSize;\n var level = node.level;\n\n function makeRow(\n label: string,\n value: string,\n valueColor?: string,\n ) {\n return (\n `<div class=\"${Styles['tooltip-row']}\">` +\n `<span class=\"${Styles['tooltip-label']}\">${label}</span>` +\n `<span${valueColor ? ` style=\"color: ${valueColor}\"` : ''}>${value}</span>` +\n '</div>'\n );\n }\n return [\n `<div class=\"${Styles['tooltip-path']}\">` +\n echarts.format.encodeHTML(path) +\n '</div>',\n makeRow(\n level === 0 ? 'Asset' : 'Source',\n sourceSize !== undefined ? formatSize(sourceSize) : '-',\n ),\n !bundledSize\n ? ''\n : makeRow('Bundled', formatSize(bundledSize), '#1890ff'),\n !gzipSize\n ? ''\n : makeRow('Gzipped', formatSize(gzipSize), '#52c41a'),\n ].join('');\n },\n },\n series: [\n {\n name: 'Bundle Tree Map',\n id: 'bundle-treemap',\n type: 'treemap',\n visibleMin: 300,\n left: 10,\n right: 10,\n top: 10,\n bottom: 10,\n label: {\n show: true,\n formatter: '{b}',\n color: '#000',\n },\n upperLabel: {\n show: true,\n height: 30,\n },\n\n levels: getLevelOption(),\n data: data,\n },\n ],\n });\n }, [treeData, valueKey]);\n\n return option ? (\n <div>\n <EChartsReactCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={onChartClick ? { click: onChartClick } : undefined}\n style={{\n width: '100%',\n minHeight: '500px',\n maxHeight: '1000px',\n border: '5px solid white',\n borderRadius: '10px',\n ...style,\n }}\n className={Styles['chart-container']}\n />\n </div>\n ) : null;\n },\n );\n\nexport const TreeMap = React.forwardRef<any, TreeMapProps>((props, ref) => (\n <TreeMapInner {...props} forwardedRef={ref} />\n));\n\nexport const AssetTreemapWithFilter: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n bundledSize?: boolean;\n}> = ({ treeData, onChartClick, bundledSize = false }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [searchModalOpen, setSearchModalOpen] = useState(false);\n const chartRef = React.useRef<any>(null);\n const { t } = useI18n();\n\n const filteredTreeData = useMemo(\n () => treeData.filter((item) => checkedAssets.includes(item.name)),\n [treeData, checkedAssets],\n );\n\n // Handler for search modal click\n const handleModuleClick = (module: any) => {\n if (!module?.path) return;\n const nodeId = hashString(module.path);\n if (chartRef.current) {\n const echartsInstance = chartRef.current.getEchartsInstance();\n echartsInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n }\n setSearchModalOpen(false);\n };\n\n return (\n <div\n style={{ display: 'flex', flexDirection: 'column', gap: 16 }}\n className={Styles.treemap}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card\n title={\n <Space>\n <Typography.Text>{t('Output Assets List')}</Typography.Text>\n <SearchModal\n onModuleClick={handleModuleClick}\n open={searchModalOpen}\n setOpen={setSearchModalOpen}\n isIcon={true}\n />\n <Tooltip\n color={'white'}\n title={\n <span>\n ✨ In Rspack, TreeMap proportions are always based on\n Bundled Size by default.\n <br />\n ✨ In Webpack, TreeMap proportions are based on Bundled Size\n only when SourceMap is enabled.\n <br />✨ <b>Bundled Size</b>: The size of a module after\n bundling and minification.\n <br />✨ <b>Source Size</b>: The size of a module after\n compilation (e.g., TypeScript/JSX to JS), but before\n bundling and minification.\n <br />✨ <b>Gzipped Size</b>: The compressed file size that\n users actually download, as most web servers use gzip\n compression.\n <br />\n </span>\n }\n overlayInnerStyle={{ width: 620, color: 'black' }}\n >\n <InfoCircleOutlined\n style={{ color: '#1890ff', marginLeft: 8 }}\n />\n </Tooltip>\n <Tag color=\"blue\">\n TreeMap area based on{' '}\n {bundledSize ? 'Bundled Size' : 'Source Size'}\n </Tag>\n </Space>\n }\n extra={\n <span\n className={Styles['collapse-icon']}\n onClick={() => setCollapsed((c) => !c)}\n aria-label={collapsed ? t('Expand') : t('Collapse')}\n >\n {collapsed ? (\n <VerticalAlignBottomOutlined />\n ) : (\n <VerticalAlignTopOutlined />\n )}\n </span>\n }\n size=\"small\"\n className={`card-body ${collapsed ? 'collapsed' : ''}`}\n >\n <div className={`checkbox-container ${collapsed ? 'collapsed' : ''}`}>\n <Checkbox\n key=\"all-none-checkbox\"\n indeterminate={\n checkedAssets.length > 0 &&\n checkedAssets.length < assetNames.length\n }\n checked={checkedAssets.length === assetNames.length}\n onChange={(e) =>\n setCheckedAssets(e.target.checked ? assetNames : [])\n }\n className={Styles['all-none-checkbox']}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n key=\"asset-checkbox-group\"\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n className={`checkbox-container ${collapsed ? 'collapsed' : ''} ${Styles['asset-checkbox-group']}`}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n valueKey={bundledSize ? 'bundledSize' : 'sourceSize'}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n"],"names":["hashString","str","hash","i","getLevelOption","TreeMapInner","memo","treeData","valueKey","style","onChartClick","forwardedRef","option","setOption","useState","chartRef","React","useEffect","echarts","TreemapChart","TooltipComponent","CanvasRenderer","convert","node","colorGroup","level","groupColors","BUNDLE_ANALYZER_COLORS","children","c","_i","undefined","data","item","index","group","COLOR_GROUPS","info","treePathInfo","treePath","path","sourceSize","bundledSize","gzipSize","makeRow","label","value","valueColor","Styles","formatSize","EChartsReactCore","TreeMap","props","ref","AssetTreemapWithFilter","assetNames","useMemo","checkedAssets","setCheckedAssets","collapsed","setCollapsed","searchModalOpen","setSearchModalOpen","t","useI18n","filteredTreeData","handleModuleClick","module","nodeId","echartsInstance","Space","Card","Typography","SearchModal","Tooltip","InfoCircleOutlined","Tag","VerticalAlignBottomOutlined","VerticalAlignTopOutlined","Checkbox","e"],"mappings":"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"}
1
+ {"version":3,"file":"components/Charts/TreeMap.mjs","sources":["../../../src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport EChartsReactCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Card, Typography, Space, Tooltip, Tag } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from 'src/utils';\nimport { SearchModal } from 'src/pages/BundleSize/components/search-modal';\nimport Styles from './treemap.module.scss';\n\n// TreeNode type should match the output of flattenTreemapData\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n};\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n valueKey?: 'sourceSize' | 'bundledSize'; // which value to show as area\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n}\n\n// Simple hash function for string (djb2)\nfunction hashString(str: string): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n }\n return hash >>> 0; // Ensure unsigned\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n color: 'white',\n borderColor: '#eee',\n borderWidth: 5,\n gapWidth: 5,\n },\n emphasis: {\n itemStyle: {\n borderColor: '#a29f9f',\n },\n },\n },\n {\n colorSaturation: [0.25, 0.5],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 5,\n borderColorSaturation: 0.5,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n valueKey = 'sourceSize',\n style,\n onChartClick,\n forwardedRef,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n\n // Expose chartRef to parent if forwardedRef is provided\n useEffect(() => {\n if (forwardedRef && chartRef.current) {\n if (typeof forwardedRef === 'function') {\n forwardedRef(chartRef.current);\n } else {\n (forwardedRef as React.MutableRefObject<any>).current =\n chartRef.current;\n }\n }\n }, [forwardedRef, chartRef.current]);\n\n // Register ECharts components\n useEffect(() => {\n echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n }, []);\n\n useEffect(() => {\n if (!treeData) return;\n // Helper to recursively add value field for ECharts\n function convert(\n node: TreeNode,\n colorGroup: keyof typeof BUNDLE_ANALYZER_COLORS,\n level = 0,\n ): any {\n const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];\n const children = node.children?.map((c, _i) =>\n convert(c, colorGroup, level + 1),\n );\n\n return {\n id: node.path ? hashString(node.path) : undefined,\n name: node.name,\n value: node[valueKey] || node.value || node['sourceSize'] || 0,\n path: node.path,\n sourceSize: node.sourceSize ?? node.value,\n bundledSize: node.bundledSize,\n gzipSize: node.gzipSize,\n children: children && children.length > 0 ? children : undefined,\n itemStyle: {\n borderWidth: 2,\n gapWidth: 2,\n borderColorSaturation: 0.2,\n colorSaturation: 0.2,\n color: groupColors[level % groupColors.length],\n borderColor: groupColors[level % groupColors.length],\n },\n level,\n };\n }\n const data = treeData.map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 0);\n });\n\n setOption({\n title: {\n text: 'Bundle Tree Map',\n left: 'center',\n },\n tooltip: {\n position: 'top',\n formatter: function (info: any) {\n var treePathInfo = info.treePathInfo;\n var treePath = [];\n for (var i = 1; i < treePathInfo.length; i++) {\n treePath.push(treePathInfo[i].name);\n }\n // Get extra info from node data\n var node = info.data || {};\n var path = node.path || treePath.join('/');\n var sourceSize = node.sourceSize;\n var bundledSize = node.bundledSize;\n var gzipSize = node.gzipSize;\n var level = node.level;\n\n function makeRow(\n label: string,\n value: string,\n valueColor?: string,\n ) {\n return (\n `<div class=\"${Styles['tooltip-row']}\">` +\n `<span class=\"${Styles['tooltip-label']}\">${label}</span>` +\n `<span${valueColor ? ` style=\"color: ${valueColor}\"` : ''}>${value}</span>` +\n '</div>'\n );\n }\n return [\n `<div class=\"${Styles['tooltip-path']}\">` +\n echarts.format.encodeHTML(path) +\n '</div>',\n makeRow(\n level === 0 ? 'Asset' : 'Source',\n sourceSize !== undefined ? formatSize(sourceSize) : '-',\n ),\n !bundledSize\n ? ''\n : makeRow('Bundled', formatSize(bundledSize), '#1890ff'),\n !gzipSize\n ? ''\n : makeRow('Gzipped', formatSize(gzipSize), '#52c41a'),\n ].join('');\n },\n },\n series: [\n {\n name: 'Bundle Tree Map',\n id: 'bundle-treemap',\n type: 'treemap',\n visibleMin: 300,\n left: 10,\n right: 10,\n top: 10,\n bottom: 10,\n label: {\n show: true,\n formatter: '{b}',\n color: '#000',\n },\n upperLabel: {\n show: true,\n height: 30,\n },\n\n levels: getLevelOption(),\n data: data,\n },\n ],\n });\n }, [treeData, valueKey]);\n\n return option ? (\n <div>\n <EChartsReactCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={onChartClick ? { click: onChartClick } : undefined}\n style={{\n width: '100%',\n minHeight: '500px',\n maxHeight: '1000px',\n border: '5px solid white',\n borderRadius: '10px',\n ...style,\n }}\n className={Styles['chart-container']}\n />\n </div>\n ) : null;\n },\n );\n\nexport const TreeMap = React.forwardRef<any, TreeMapProps>((props, ref) => (\n <TreeMapInner {...props} forwardedRef={ref} />\n));\n\nexport const AssetTreemapWithFilter: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n bundledSize?: boolean;\n}> = ({ treeData, onChartClick, bundledSize = false }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [searchModalOpen, setSearchModalOpen] = useState(false);\n const chartRef = React.useRef<any>(null);\n const { t } = useI18n();\n\n const filteredTreeData = useMemo(\n () => treeData.filter((item) => checkedAssets.includes(item.name)),\n [treeData, checkedAssets],\n );\n\n // Handler for search modal click\n const handleModuleClick = (module: any) => {\n if (!module?.path) return;\n const nodeId = hashString(module.path);\n if (chartRef.current) {\n const echartsInstance = chartRef.current.getEchartsInstance();\n echartsInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n }\n setSearchModalOpen(false);\n };\n\n return (\n <div\n style={{ display: 'flex', flexDirection: 'column', gap: 16 }}\n className={Styles.treemap}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card\n title={\n <Space>\n <Typography.Text>{t('Output Assets List')}</Typography.Text>\n <SearchModal\n onModuleClick={handleModuleClick}\n open={searchModalOpen}\n setOpen={setSearchModalOpen}\n isIcon={true}\n />\n <Tooltip\n color={'white'}\n title={\n <span>\n ✨ In Rspack, TreeMap proportions are always based on\n Bundled Size by default.\n <br />\n ✨ In Webpack, TreeMap proportions are based on Bundled Size\n only when SourceMap is enabled.\n <br />✨ <b>Bundled Size</b>: The size of a module after\n bundling and minification.\n <br />✨ <b>Source Size</b>: The size of a module after\n compilation (e.g., TypeScript/JSX to JS), but before\n bundling and minification.\n <br />✨ <b>Gzipped Size</b>: The compressed file size that\n users actually download, as most web servers use gzip\n compression.\n <br />\n </span>\n }\n overlayInnerStyle={{ width: 620, color: 'black' }}\n >\n <InfoCircleOutlined\n style={{ color: '#1890ff', marginLeft: 8 }}\n />\n </Tooltip>\n <Tag color=\"blue\">\n TreeMap area based on{' '}\n {bundledSize ? 'Bundled Size' : 'Source Size'}\n </Tag>\n </Space>\n }\n extra={\n <span\n className={Styles['collapse-icon']}\n onClick={() => setCollapsed((c) => !c)}\n aria-label={collapsed ? t('Expand') : t('Collapse')}\n >\n {collapsed ? (\n <VerticalAlignBottomOutlined />\n ) : (\n <VerticalAlignTopOutlined />\n )}\n </span>\n }\n size=\"small\"\n className={`card-body ${collapsed ? 'collapsed' : ''}`}\n >\n <div className={`checkbox-container ${collapsed ? 'collapsed' : ''}`}>\n <Checkbox\n key=\"all-none-checkbox\"\n indeterminate={\n checkedAssets.length > 0 &&\n checkedAssets.length < assetNames.length\n }\n checked={checkedAssets.length === assetNames.length}\n onChange={(e) =>\n setCheckedAssets(e.target.checked ? assetNames : [])\n }\n className={Styles['all-none-checkbox']}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n key=\"asset-checkbox-group\"\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n className={`checkbox-container ${collapsed ? 'collapsed' : ''} ${Styles['asset-checkbox-group']}`}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n valueKey={bundledSize ? 'bundledSize' : 'sourceSize'}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n"],"names":["hashString","str","hash","i","getLevelOption","TreeMapInner","memo","treeData","valueKey","style","onChartClick","forwardedRef","option","setOption","useState","chartRef","React","useEffect","echarts","TreemapChart","TooltipComponent","CanvasRenderer","convert","node","colorGroup","level","groupColors","BUNDLE_ANALYZER_COLORS","children","c","_i","undefined","data","item","index","group","COLOR_GROUPS","info","treePathInfo","treePath","path","sourceSize","bundledSize","gzipSize","makeRow","label","value","valueColor","Styles","formatSize","EChartsReactCore","TreeMap","props","ref","AssetTreemapWithFilter","assetNames","useMemo","checkedAssets","setCheckedAssets","collapsed","setCollapsed","searchModalOpen","setSearchModalOpen","t","useI18n","filteredTreeData","handleModuleClick","module","nodeId","echartsInstance","Space","Card","Typography","SearchModal","Tooltip","InfoCircleOutlined","Tag","VerticalAlignBottomOutlined","VerticalAlignTopOutlined","Checkbox","e"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import './loader.scss';
3
3
  import './tooltips.scss';
4
- import { CommonChartProps } from './common';
4
+ import { CommonChartProps } from './common.js';
5
5
  export declare const BootstrapChartContainer: React.FC<CommonChartProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/bootstrap.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/bootstrap.tsx"],"sourcesContent":["import React from 'react';\nimport { Space } from 'antd';\nimport { SDK } from '@rsdoctor/types';\nimport { TextDrawer } from '../TextDrawer';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport {\n CommonChartProps,\n CommonExecutionEmptyTips,\n CommonExecutionsChart,\n} from './common';\nimport { ServerAPIProvider } from '../Manifest';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { ChartTypes } from './constants';\n\nexport const BootstrapChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}) => {\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Bootstrap,\n );\n\n const hooks: string[] = [\n 'environment',\n 'afterEnvironment',\n 'entryOption',\n 'afterPlugins',\n 'afterResolvers',\n 'initialize',\n 'beforeRun',\n 'run',\n 'watchRun',\n 'normalModuleFactory',\n 'contextModuleFactory',\n 'beforeCompile',\n ];\n\n if (!target) return null;\n\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: 'Chart of the \"Bootstrap -> BeforeCompile\" stage' }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <CommonExecutionsChart plugins={res} type={ChartTypes.Bootstrap} />\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["BootstrapChartContainer","summary","costs","target","e","Summary","hooks","TextDrawer","Space","ServerAPIProvider","SDK","res","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;AAgBO,MAAMA,0BAAsD,CAAC,EAClEC,OAAO,EACR;IACC,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGD,WAAW,CAAC;IACnC,MAAME,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,SAAS;IAG1D,MAAMC,QAAkB;QACtB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,IAAI,CAACH,QAAQ,OAAO;IAEpB,OAAO,WAAP,GACE,IAACI,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO;QAAkD;QACxE,oBAAM,IAACC,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAEJ;YAAM;sBACpE,CAACK,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,IAACC,uBAAqBA;oBAAC,SAASD;oBAAK,MAAME,WAAW,SAAS;mCAE/D,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
1
+ {"version":3,"file":"components/Charts/bootstrap.mjs","sources":["../../../src/components/Charts/bootstrap.tsx"],"sourcesContent":["import React from 'react';\nimport { Space } from 'antd';\nimport { SDK } from '@rsdoctor/types';\nimport { TextDrawer } from '../TextDrawer';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport {\n CommonChartProps,\n CommonExecutionEmptyTips,\n CommonExecutionsChart,\n} from './common';\nimport { ServerAPIProvider } from '../Manifest';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { ChartTypes } from './constants';\n\nexport const BootstrapChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}) => {\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Bootstrap,\n );\n\n const hooks: string[] = [\n 'environment',\n 'afterEnvironment',\n 'entryOption',\n 'afterPlugins',\n 'afterResolvers',\n 'initialize',\n 'beforeRun',\n 'run',\n 'watchRun',\n 'normalModuleFactory',\n 'contextModuleFactory',\n 'beforeCompile',\n ];\n\n if (!target) return null;\n\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: 'Chart of the \"Bootstrap -> BeforeCompile\" stage' }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <CommonExecutionsChart plugins={res} type={ChartTypes.Bootstrap} />\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["BootstrapChartContainer","summary","costs","target","e","Summary","hooks","TextDrawer","Space","ServerAPIProvider","SDK","res","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;AAgBO,MAAMA,0BAAsD,CAAC,EAClEC,OAAO,EACR;IACC,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGD,WAAW,CAAC;IACnC,MAAME,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,SAAS;IAG1D,MAAMC,QAAkB;QACtB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,IAAI,CAACH,QAAQ,OAAO;IAEpB,OAAO,WAAP,GACE,IAACI,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO;QAAkD;QACxE,oBAAM,IAACC,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAEJ;YAAM;sBACpE,CAACK,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,IAACC,uBAAqBA;oBAAC,SAASD;oBAAK,MAAME,WAAW,SAAS;mCAE/D,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
@@ -2,8 +2,8 @@ import { SDK } from '@rsdoctor/types';
2
2
  import React from 'react';
3
3
  import './loader.scss';
4
4
  import './tooltips.scss';
5
- import { Metric } from './types';
6
- import { ChartTypes } from './constants';
5
+ import { Metric } from './types.js';
6
+ import { ChartTypes } from './constants.js';
7
7
  export interface CommonChartProps {
8
8
  summary: SDK.SummaryData;
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/common.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/common.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Alert, Typography } from 'antd';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTheme } from '../../utils';\nimport { TimelineCom } from './TimelineCharts';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport { DurationMetric, ITraceEventData, Metric } from './types';\nimport { formatterForPlugins, processTrans } from './utils';\nimport { ChartTypes } from './constants';\n\nexport interface CommonChartProps {\n summary: SDK.SummaryData;\n}\n\nexport const CommonExecutionsChart: React.FC<{\n plugins: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetPluginData>;\n defaultDatas?: Metric[];\n type?: ChartTypes;\n}> = ({ plugins, defaultDatas = [], type }) => {\n const { isDark } = useTheme();\n const ref = useRef(null);\n const [data, setData] = useState([] as ITraceEventData[]);\n\n useEffect(() => {\n const arr: Metric[] = [];\n\n plugins.forEach((item) => {\n item.data.forEach((el) => {\n arr.push({\n p: item.hook,\n n: `${item.tapName}`,\n s: el.startAt,\n e: el.endAt,\n });\n });\n });\n\n setData([\n ...processTrans(defaultDatas as DurationMetric[]),\n ...processTrans(arr as DurationMetric[]),\n ]);\n }, []);\n\n return (\n <div\n className={[\n 'loader-chart-container',\n isDark ? 'loader-chart-container_dark' : '',\n ]\n .join(' ')\n .trim()}\n ref={ref}\n style={{ width: '100%' }}\n >\n <TimelineCom\n pluginsData={data}\n formatterFn={formatterForPlugins}\n chartType={type}\n />\n </div>\n );\n};\n\nexport const CommonExecutionEmptyTips: React.FC = () => {\n return (\n <Alert\n message={\n <Typography.Text>\n <Typography.Text>make sure that you have turn on </Typography.Text>\n {/* <Typography.Text code> TODO::\n <a\n href={`http://${host}/api/webpack-plugin.html#features`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n features.plugins\n </a>\n </Typography.Text> */}\n <Typography.Text>\n {' '}\n in configuration for the Rsdoctor plugin.\n </Typography.Text>\n </Typography.Text>\n }\n type=\"info\"\n showIcon\n />\n );\n};\n"],"names":["CommonExecutionsChart","plugins","defaultDatas","type","isDark","useTheme","ref","useRef","data","setData","useState","useEffect","arr","item","el","processTrans","TimelineCom","formatterForPlugins","CommonExecutionEmptyTips","Alert","Typography"],"mappings":";;;;;;;;AAgBO,MAAMA,wBAIR,CAAC,EAAEC,OAAO,EAAEC,eAAe,EAAE,EAAEC,IAAI,EAAE;IACxC,MAAM,EAAEC,MAAM,EAAE,GAAGC;IACnB,MAAMC,MAAMC,OAAO;IACnB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS,EAAE;IAEnCC,UAAU;QACR,MAAMC,MAAgB,EAAE;QAExBX,QAAQ,OAAO,CAAC,CAACY;YACfA,KAAK,IAAI,CAAC,OAAO,CAAC,CAACC;gBACjBF,IAAI,IAAI,CAAC;oBACP,GAAGC,KAAK,IAAI;oBACZ,GAAG,GAAGA,KAAK,OAAO,EAAE;oBACpB,GAAGC,GAAG,OAAO;oBACb,GAAGA,GAAG,KAAK;gBACb;YACF;QACF;QAEAL,QAAQ;eACHM,aAAab;eACba,aAAaH;SACjB;IACH,GAAG,EAAE;IAEL,OAAO,WAAP,GACE,IAAC;QACC,WAAW;YACT;YACAR,SAAS,gCAAgC;SAC1C,CACE,IAAI,CAAC,KACL,IAAI;QACP,KAAKE;QACL,OAAO;YAAE,OAAO;QAAO;kBAEvB,kBAACU,aAAWA;YACV,aAAaR;YACb,aAAaS;YACb,WAAWd;;;AAInB;AAEO,MAAMe,2BAAqC,IACzC,WAAP,GACE,IAACC,OAAKA;QACJ,uBACE,KAACC,WAAW,IAAI;;8BACd,IAACA,WAAW,IAAI;8BAAC;;8BAUjB,KAACA,WAAW,IAAI;;wBACb;wBAAI;;;;;QAKX,MAAK;QACL,UAAQ"}
1
+ {"version":3,"file":"components/Charts/common.mjs","sources":["../../../src/components/Charts/common.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Alert, Typography } from 'antd';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTheme } from '../../utils';\nimport { TimelineCom } from './TimelineCharts';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport { DurationMetric, ITraceEventData, Metric } from './types';\nimport { formatterForPlugins, processTrans } from './utils';\nimport { ChartTypes } from './constants';\n\nexport interface CommonChartProps {\n summary: SDK.SummaryData;\n}\n\nexport const CommonExecutionsChart: React.FC<{\n plugins: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetPluginData>;\n defaultDatas?: Metric[];\n type?: ChartTypes;\n}> = ({ plugins, defaultDatas = [], type }) => {\n const { isDark } = useTheme();\n const ref = useRef(null);\n const [data, setData] = useState([] as ITraceEventData[]);\n\n useEffect(() => {\n const arr: Metric[] = [];\n\n plugins.forEach((item) => {\n item.data.forEach((el) => {\n arr.push({\n p: item.hook,\n n: `${item.tapName}`,\n s: el.startAt,\n e: el.endAt,\n });\n });\n });\n\n setData([\n ...processTrans(defaultDatas as DurationMetric[]),\n ...processTrans(arr as DurationMetric[]),\n ]);\n }, []);\n\n return (\n <div\n className={[\n 'loader-chart-container',\n isDark ? 'loader-chart-container_dark' : '',\n ]\n .join(' ')\n .trim()}\n ref={ref}\n style={{ width: '100%' }}\n >\n <TimelineCom\n pluginsData={data}\n formatterFn={formatterForPlugins}\n chartType={type}\n />\n </div>\n );\n};\n\nexport const CommonExecutionEmptyTips: React.FC = () => {\n return (\n <Alert\n message={\n <Typography.Text>\n <Typography.Text>make sure that you have turn on </Typography.Text>\n {/* <Typography.Text code> TODO::\n <a\n href={`http://${host}/api/webpack-plugin.html#features`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n features.plugins\n </a>\n </Typography.Text> */}\n <Typography.Text>\n {' '}\n in configuration for the Rsdoctor plugin.\n </Typography.Text>\n </Typography.Text>\n }\n type=\"info\"\n showIcon\n />\n );\n};\n"],"names":["CommonExecutionsChart","plugins","defaultDatas","type","isDark","useTheme","ref","useRef","data","setData","useState","useEffect","arr","item","el","processTrans","TimelineCom","formatterForPlugins","CommonExecutionEmptyTips","Alert","Typography"],"mappings":";;;;;;;;AAgBO,MAAMA,wBAIR,CAAC,EAAEC,OAAO,EAAEC,eAAe,EAAE,EAAEC,IAAI,EAAE;IACxC,MAAM,EAAEC,MAAM,EAAE,GAAGC;IACnB,MAAMC,MAAMC,OAAO;IACnB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS,EAAE;IAEnCC,UAAU;QACR,MAAMC,MAAgB,EAAE;QAExBX,QAAQ,OAAO,CAAC,CAACY;YACfA,KAAK,IAAI,CAAC,OAAO,CAAC,CAACC;gBACjBF,IAAI,IAAI,CAAC;oBACP,GAAGC,KAAK,IAAI;oBACZ,GAAG,GAAGA,KAAK,OAAO,EAAE;oBACpB,GAAGC,GAAG,OAAO;oBACb,GAAGA,GAAG,KAAK;gBACb;YACF;QACF;QAEAL,QAAQ;eACHM,aAAab;eACba,aAAaH;SACjB;IACH,GAAG,EAAE;IAEL,OAAO,WAAP,GACE,IAAC;QACC,WAAW;YACT;YACAR,SAAS,gCAAgC;SAC1C,CACE,IAAI,CAAC,KACL,IAAI;QACP,KAAKE;QACL,OAAO;YAAE,OAAO;QAAO;kBAEvB,kBAACU,aAAWA;YACV,aAAaR;YACb,aAAaS;YACb,WAAWd;;;AAInB;AAEO,MAAMe,2BAAqC,IACzC,WAAP,GACE,IAACC,OAAKA;QACJ,uBACE,KAACC,WAAW,IAAI;;8BACd,IAACA,WAAW,IAAI;8BAAC;;8BAUjB,KAACA,WAAW,IAAI;;wBACb;wBAAI;;;;;QAKX,MAAK;QACL,UAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/constants.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/constants.ts"],"sourcesContent":["export const PALETTE_COLORS = [\n '#F2793D',\n '#F28B24',\n '#F2A200',\n '#F5CC00',\n '#F5E000',\n '#A3D900',\n '#66CC00',\n '#0AC419',\n '#0AC496',\n '#0AC7D1',\n '#00A8E0',\n '#1471F5',\n '#4060FF',\n '#7559FF',\n '#884DFF',\n '#A526FF',\n '#BA39E5',\n '#C700D9',\n '#D900B5',\n '#E50099',\n '#E52E6B',\n '#F24957',\n '#30B2F2',\n '#00BF70',\n '#5959FF',\n '#9F40FF',\n '#528BFF',\n];\n\nexport enum ChartTypes {\n Bootstrap,\n Compile,\n Done,\n Minify,\n Loader,\n Normal,\n}\n\nexport const BUNDLE_ANALYZER_COLORS = {\n green: [\n hexToRgba('#32b26a', 0.6),\n hexToRgba('#5fcf92', 0.6),\n hexToRgba('#8ee2b6', 0.8),\n hexToRgba('#b7e1cd', 1),\n hexToRgba('#cdeee0', 1),\n hexToRgba('#e0f7ef', 1),\n hexToRgba('#c8e6d6', 1),\n ],\n blue: [\n hexToRgba('#3498f7', 0.6),\n hexToRgba('#5eb3fa', 0.6),\n hexToRgba('#8ccafc', 0.8),\n hexToRgba('#b3d8f8', 1),\n hexToRgba('#cde6fa', 1),\n hexToRgba('#e0f2fd', 1),\n hexToRgba('#c8e0ef', 1),\n ],\n purple: [\n hexToRgba('#a04ddb', 0.6),\n hexToRgba('#b26ef0', 0.6),\n hexToRgba('#c49ff5', 0.8),\n hexToRgba('#d1b3e6', 1),\n hexToRgba('#e0c8f2', 1),\n hexToRgba('#f0e6fa', 1),\n hexToRgba('#d6c8e6', 1),\n ],\n yellow: [\n hexToRgba('#ffe066', 0.6),\n hexToRgba('#ffec80', 0.6),\n hexToRgba('#fff599', 0.8),\n hexToRgba('#fff9c4', 1),\n hexToRgba('#fffbe0', 1),\n hexToRgba('#fffde7', 1),\n hexToRgba('#f5f2c8', 1),\n ],\n grey: [\n hexToRgba('#7a7a7a', 0.7),\n hexToRgba('#969696', 0.7),\n hexToRgba('#b0b0b0', 0.8),\n hexToRgba('#c8c8c8', 1),\n hexToRgba('#dcdcdc', 1),\n hexToRgba('#ededed', 1),\n hexToRgba('#f7f7f7', 1),\n ],\n} as const;\n\nfunction hexToRgba(hex: string, alpha = 1) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\ntype ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;\nexport const COLOR_GROUPS: ColorGroup[] = [\n 'blue',\n 'purple',\n 'yellow',\n 'grey',\n 'green',\n];\n"],"names":["PALETTE_COLORS","ChartTypes","BUNDLE_ANALYZER_COLORS","hexToRgba","hex","alpha","r","parseInt","g","b","COLOR_GROUPS"],"mappings":"AAAO,MAAMA,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAEM,IAAKC,uBAAUA,WAAAA,GAAAA,SAAVA,UAAU;;;;;;;WAAVA;;AASL,MAAMC,yBAAyB;IACpC,OAAO;QACLC,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;AACH;AAEA,SAASA,UAAUC,GAAW,EAAEC,QAAQ,CAAC;IACvC,MAAMC,IAAIC,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMI,IAAID,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMK,IAAIF,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,OAAO,CAAC,KAAK,EAAEE,EAAE,EAAE,EAAEE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAEJ,MAAM,CAAC,CAAC;AAC3C;AAGO,MAAMK,eAA6B;IACxC;IACA;IACA;IACA;IACA;CACD"}
1
+ {"version":3,"file":"components/Charts/constants.mjs","sources":["../../../src/components/Charts/constants.ts"],"sourcesContent":["export const PALETTE_COLORS = [\n '#F2793D',\n '#F28B24',\n '#F2A200',\n '#F5CC00',\n '#F5E000',\n '#A3D900',\n '#66CC00',\n '#0AC419',\n '#0AC496',\n '#0AC7D1',\n '#00A8E0',\n '#1471F5',\n '#4060FF',\n '#7559FF',\n '#884DFF',\n '#A526FF',\n '#BA39E5',\n '#C700D9',\n '#D900B5',\n '#E50099',\n '#E52E6B',\n '#F24957',\n '#30B2F2',\n '#00BF70',\n '#5959FF',\n '#9F40FF',\n '#528BFF',\n];\n\nexport enum ChartTypes {\n Bootstrap,\n Compile,\n Done,\n Minify,\n Loader,\n Normal,\n}\n\nexport const BUNDLE_ANALYZER_COLORS = {\n green: [\n hexToRgba('#32b26a', 0.6),\n hexToRgba('#5fcf92', 0.6),\n hexToRgba('#8ee2b6', 0.8),\n hexToRgba('#b7e1cd', 1),\n hexToRgba('#cdeee0', 1),\n hexToRgba('#e0f7ef', 1),\n hexToRgba('#c8e6d6', 1),\n ],\n blue: [\n hexToRgba('#3498f7', 0.6),\n hexToRgba('#5eb3fa', 0.6),\n hexToRgba('#8ccafc', 0.8),\n hexToRgba('#b3d8f8', 1),\n hexToRgba('#cde6fa', 1),\n hexToRgba('#e0f2fd', 1),\n hexToRgba('#c8e0ef', 1),\n ],\n purple: [\n hexToRgba('#a04ddb', 0.6),\n hexToRgba('#b26ef0', 0.6),\n hexToRgba('#c49ff5', 0.8),\n hexToRgba('#d1b3e6', 1),\n hexToRgba('#e0c8f2', 1),\n hexToRgba('#f0e6fa', 1),\n hexToRgba('#d6c8e6', 1),\n ],\n yellow: [\n hexToRgba('#ffe066', 0.6),\n hexToRgba('#ffec80', 0.6),\n hexToRgba('#fff599', 0.8),\n hexToRgba('#fff9c4', 1),\n hexToRgba('#fffbe0', 1),\n hexToRgba('#fffde7', 1),\n hexToRgba('#f5f2c8', 1),\n ],\n grey: [\n hexToRgba('#7a7a7a', 0.7),\n hexToRgba('#969696', 0.7),\n hexToRgba('#b0b0b0', 0.8),\n hexToRgba('#c8c8c8', 1),\n hexToRgba('#dcdcdc', 1),\n hexToRgba('#ededed', 1),\n hexToRgba('#f7f7f7', 1),\n ],\n} as const;\n\nfunction hexToRgba(hex: string, alpha = 1) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\ntype ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;\nexport const COLOR_GROUPS: ColorGroup[] = [\n 'blue',\n 'purple',\n 'yellow',\n 'grey',\n 'green',\n];\n"],"names":["PALETTE_COLORS","ChartTypes","BUNDLE_ANALYZER_COLORS","hexToRgba","hex","alpha","r","parseInt","g","b","COLOR_GROUPS"],"mappings":"AAAO,MAAMA,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAEM,IAAKC,uBAAUA,WAAAA,GAAAA,SAAVA,UAAU;;;;;;;WAAVA;;AASL,MAAMC,yBAAyB;IACpC,OAAO;QACLC,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;AACH;AAEA,SAASA,UAAUC,GAAW,EAAEC,QAAQ,CAAC;IACvC,MAAMC,IAAIC,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMI,IAAID,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMK,IAAIF,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,OAAO,CAAC,KAAK,EAAEE,EAAE,EAAE,EAAEE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAEJ,MAAM,CAAC,CAAC;AAC3C;AAGO,MAAMK,eAA6B;IACxC;IACA;IACA;IACA;IACA;CACD"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonChartProps } from './common';
2
+ import { CommonChartProps } from './common.js';
3
3
  import './loader.scss';
4
4
  import './tooltips.scss';
5
5
  export declare const DoneChartContainer: React.FC<CommonChartProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/done.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/done.tsx"],"sourcesContent":["import React from 'react';\nimport { Divider, Space } from 'antd';\nimport { SDK } from '@rsdoctor/types';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { TextDrawer } from '../TextDrawer';\nimport { Card } from '../Card';\nimport {\n CommonChartProps,\n CommonExecutionsChart,\n CommonExecutionEmptyTips,\n} from './common';\nimport { WebpackPluginsDataTable } from '../Plugins/webpack';\nimport { ServerAPIProvider } from '../Manifest';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport { ChartTypes } from './constants';\n\nexport const DoneChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}): JSX.Element | null => {\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Done,\n );\n\n const hooks: Array<string> = [\n 'afterCompile',\n 'shouldEmit',\n 'emit',\n 'afterEmit',\n 'assetEmitted',\n 'done',\n ];\n\n const suffix = 'of the \"AfterCompile -> Done\" stage';\n\n if (!target) return null;\n\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: `Details ${suffix}` }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title={`Plugin DataSource of ${suffix}`} collapsable>\n <WebpackPluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title={`Chart ${suffix}`}>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Done} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["DoneChartContainer","summary","costs","target","e","Summary","hooks","suffix","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","WebpackPluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,qBAAiD,CAAC,EAC7DC,OAAO,EACR;IACC,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGD,WAAW,CAAC;IACnC,MAAME,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,IAAI;IAGrD,MAAMC,QAAuB;QAC3B;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMC,SAAS;IAEf,IAAI,CAACJ,QAAQ,OAAO;IAEpB,OAAO,WAAP,GACE,IAACK,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO,CAAC,QAAQ,EAAED,QAAQ;QAAC;QAC1C,oBAAM,IAACE,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAEL;YAAM;sBACpE,CAACM,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAO,CAAC,qBAAqB,EAAEN,QAAQ;4BAAE,aAAW;sCACxD,kBAACO,yBAAuBA;gCAAC,YAAYF;;;sCAEvC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAO,CAAC,MAAM,EAAEN,QAAQ;sCAC5B,kBAACS,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,IAAI;;;;mCAI9D,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
1
+ {"version":3,"file":"components/Charts/done.mjs","sources":["../../../src/components/Charts/done.tsx"],"sourcesContent":["import React from 'react';\nimport { Divider, Space } from 'antd';\nimport { SDK } from '@rsdoctor/types';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { TextDrawer } from '../TextDrawer';\nimport { Card } from '../Card';\nimport {\n CommonChartProps,\n CommonExecutionsChart,\n CommonExecutionEmptyTips,\n} from './common';\nimport { WebpackPluginsDataTable } from '../Plugins/webpack';\nimport { ServerAPIProvider } from '../Manifest';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport { ChartTypes } from './constants';\n\nexport const DoneChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}): JSX.Element | null => {\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Done,\n );\n\n const hooks: Array<string> = [\n 'afterCompile',\n 'shouldEmit',\n 'emit',\n 'afterEmit',\n 'assetEmitted',\n 'done',\n ];\n\n const suffix = 'of the \"AfterCompile -> Done\" stage';\n\n if (!target) return null;\n\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: `Details ${suffix}` }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title={`Plugin DataSource of ${suffix}`} collapsable>\n <WebpackPluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title={`Chart ${suffix}`}>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Done} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["DoneChartContainer","summary","costs","target","e","Summary","hooks","suffix","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","WebpackPluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,qBAAiD,CAAC,EAC7DC,OAAO,EACR;IACC,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGD,WAAW,CAAC;IACnC,MAAME,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,IAAI;IAGrD,MAAMC,QAAuB;QAC3B;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMC,SAAS;IAEf,IAAI,CAACJ,QAAQ,OAAO;IAEpB,OAAO,WAAP,GACE,IAACK,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO,CAAC,QAAQ,EAAED,QAAQ;QAAC;QAC1C,oBAAM,IAACE,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAEL;YAAM;sBACpE,CAACM,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAO,CAAC,qBAAqB,EAAEN,QAAQ;4BAAE,aAAW;sCACxD,kBAACO,yBAAuBA;gCAAC,YAAYF;;;sCAEvC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAO,CAAC,MAAM,EAAEN,QAAQ;sCAC5B,kBAACS,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,IAAI;;;;mCAI9D,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SDK } from '@rsdoctor/types';\nimport { ISelectLoaderProps, LoaderCommonSelect } from '../Select';\nimport { ServerAPIProvider, withServerAPI } from '../Manifest';\nimport { LoaderExecutionsChart } from './loader';\nimport { filterLoader } from 'src/utils/loader';\nimport { Space } from 'antd';\n\nenum ChartDimension {\n Loader,\n Process,\n}\n\nexport const LoaderChartBase: React.FC<{\n project: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetProjectInfo>;\n}> = ({ project }) => {\n const { root: cwd } = project;\n const [store, setStore] = useState({\n filename: '',\n loaders: [] as string[],\n layer: '',\n } as ISelectLoaderProps);\n // @ts-ignore\n const [dimension, setDimension] = useState<ChartDimension>(\n ChartDimension.Loader,\n );\n\n return (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderNames}>\n {(loaderNames) => (\n <LoaderCommonSelect onChange={setStore} loaderNames={loaderNames} />\n )}\n </ServerAPIProvider>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderChartData}>\n {(res) => {\n const loaders = res.filter((el) =>\n filterLoader(\n el.resource,\n el.loader,\n store.filename,\n store.loaders,\n el.layer,\n store?.layer,\n ),\n );\n return dimension === ChartDimension.Loader ? (\n <LoaderExecutionsChart loaders={loaders} cwd={cwd} />\n ) : (\n // <ProcessExecutionsChart loaders={loaders} cwd={cwd} pid={pid} />\n <></>\n );\n }}\n </ServerAPIProvider>\n </Space>\n );\n};\n\nexport const LoaderChart = withServerAPI({\n api: SDK.ServerAPI.API.GetProjectInfo,\n responsePropName: 'project',\n Component: LoaderChartBase,\n});\n"],"names":["LoaderChartBase","project","cwd","store","setStore","useState","dimension","setDimension","Space","ServerAPIProvider","SDK","loaderNames","LoaderCommonSelect","res","loaders","el","filterLoader","LoaderExecutionsChart","LoaderChart","withServerAPI"],"mappings":";;;;;;;;AAaO,MAAMA,kBAER,CAAC,EAAEC,OAAO,EAAE;IACf,MAAM,EAAE,MAAMC,GAAG,EAAE,GAAGD;IACtB,MAAM,CAACE,OAAOC,SAAS,GAAGC,SAAS;QACjC,UAAU;QACV,SAAS,EAAE;QACX,OAAO;IACT;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGF,SAAQA;IAI1C,OAAO,WAAP,GACE,KAACG,OAAKA;QAAC,WAAU;QAAW,OAAO;YAAE,OAAO;QAAO;;0BACjD,IAACC,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;0BACrD,CAACC,cAAAA,WAAAA,GACA,IAACC,oBAAkBA;wBAAC,UAAUR;wBAAU,aAAaO;;;0BAGzD,IAACF,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB;0BACzD,CAACG;oBACA,MAAMC,UAAUD,IAAI,MAAM,CAAC,CAACE,KAC1BC,aACED,GAAG,QAAQ,EACXA,GAAG,MAAM,EACTZ,MAAM,QAAQ,EACdA,MAAM,OAAO,EACbY,GAAG,KAAK,EACRZ,OAAO;oBAGX,OAAOG,AAAc,MAAdA,YAAAA,WAAAA,GACL,IAACW,uBAAqBA;wBAAC,SAASH;wBAAS,KAAKZ;uCAG9C;gBAEJ;;;;AAIR;AAEO,MAAMgB,cAAcC,cAAc;IACvC,KAAKT,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;IACrC,kBAAkB;IAClB,WAAWV;AACb"}
1
+ {"version":3,"file":"components/Charts/index.mjs","sources":["../../../src/components/Charts/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SDK } from '@rsdoctor/types';\nimport { ISelectLoaderProps, LoaderCommonSelect } from '../Select';\nimport { ServerAPIProvider, withServerAPI } from '../Manifest';\nimport { LoaderExecutionsChart } from './loader';\nimport { filterLoader } from 'src/utils/loader';\nimport { Space } from 'antd';\n\nenum ChartDimension {\n Loader,\n Process,\n}\n\nexport const LoaderChartBase: React.FC<{\n project: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetProjectInfo>;\n}> = ({ project }) => {\n const { root: cwd } = project;\n const [store, setStore] = useState({\n filename: '',\n loaders: [] as string[],\n layer: '',\n } as ISelectLoaderProps);\n // @ts-ignore\n const [dimension, setDimension] = useState<ChartDimension>(\n ChartDimension.Loader,\n );\n\n return (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderNames}>\n {(loaderNames) => (\n <LoaderCommonSelect onChange={setStore} loaderNames={loaderNames} />\n )}\n </ServerAPIProvider>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderChartData}>\n {(res) => {\n const loaders = res.filter((el) =>\n filterLoader(\n el.resource,\n el.loader,\n store.filename,\n store.loaders,\n el.layer,\n store?.layer,\n ),\n );\n return dimension === ChartDimension.Loader ? (\n <LoaderExecutionsChart loaders={loaders} cwd={cwd} />\n ) : (\n // <ProcessExecutionsChart loaders={loaders} cwd={cwd} pid={pid} />\n <></>\n );\n }}\n </ServerAPIProvider>\n </Space>\n );\n};\n\nexport const LoaderChart = withServerAPI({\n api: SDK.ServerAPI.API.GetProjectInfo,\n responsePropName: 'project',\n Component: LoaderChartBase,\n});\n"],"names":["LoaderChartBase","project","cwd","store","setStore","useState","dimension","setDimension","Space","ServerAPIProvider","SDK","loaderNames","LoaderCommonSelect","res","loaders","el","filterLoader","LoaderExecutionsChart","LoaderChart","withServerAPI"],"mappings":";;;;;;;;AAaO,MAAMA,kBAER,CAAC,EAAEC,OAAO,EAAE;IACf,MAAM,EAAE,MAAMC,GAAG,EAAE,GAAGD;IACtB,MAAM,CAACE,OAAOC,SAAS,GAAGC,SAAS;QACjC,UAAU;QACV,SAAS,EAAE;QACX,OAAO;IACT;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGF,SAAQA;IAI1C,OAAO,WAAP,GACE,KAACG,OAAKA;QAAC,WAAU;QAAW,OAAO;YAAE,OAAO;QAAO;;0BACjD,IAACC,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;0BACrD,CAACC,cAAAA,WAAAA,GACA,IAACC,oBAAkBA;wBAAC,UAAUR;wBAAU,aAAaO;;;0BAGzD,IAACF,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB;0BACzD,CAACG;oBACA,MAAMC,UAAUD,IAAI,MAAM,CAAC,CAACE,KAC1BC,aACED,GAAG,QAAQ,EACXA,GAAG,MAAM,EACTZ,MAAM,QAAQ,EACdA,MAAM,OAAO,EACbY,GAAG,KAAK,EACRZ,OAAO;oBAGX,OAAOG,AAAc,MAAdA,YAAAA,WAAAA,GACL,IAACW,uBAAqBA;wBAAC,SAASH;wBAAS,KAAKZ;uCAG9C;gBAEJ;;;;AAIR;AAEO,MAAMgB,cAAcC,cAAc;IACvC,KAAKT,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;IACrC,kBAAkB;IAClB,WAAWV;AACb"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import './loader.scss';
3
- import { ChartProps } from './types';
3
+ import { ChartProps } from './types.js';
4
4
  export declare const LoaderExecutionsChart: React.FC<ChartProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/loader.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/loader.tsx"],"sourcesContent":["import React, {\n useCallback,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { groupBy } from 'es-toolkit/compat';\nimport { Empty } from 'antd';\nimport './loader.scss';\nimport { useTheme } from 'src/utils/manifest';\nimport { findLoaderTotalTiming } from 'src/utils/loader';\nimport { beautifyPath } from 'src/utils/file';\nimport { TimelineCom } from './TimelineCharts';\nimport { ChartProps, DurationMetric } from './types';\nimport {\n renderTotalLoadersTooltip,\n getTooltipHtmlForLoader,\n useDebounceHook,\n} from './utils';\nimport { ChartTypes } from './constants';\nlet startTimestamp = 0;\nlet endTimestamp = 0;\n\nexport const LoaderExecutionsChart: React.FC<ChartProps> = ({\n loaders,\n cwd,\n}) => {\n const { isDark } = useTheme();\n const ref = useRef(null);\n const [data, setData] = useState([] as DurationMetric[]);\n const durationMetricData = useDebounceHook(data, 200);\n // const [endTimestamp, setEndTimestamp] = useState(0);\n\n const groupByLoader = useMemo(\n () => groupBy(loaders, (e) => e.loader),\n [loaders],\n );\n\n const formatterForLoader = useCallback((raw: any) => {\n const { name, data } = raw;\n const loaderName = name.replace(' total', '');\n if (data?.ext) {\n return getTooltipHtmlForLoader(data.ext as (typeof loaders)[0]);\n }\n\n return renderTotalLoadersTooltip(loaderName, loaders, cwd);\n }, []);\n\n useEffect(() => {\n const _data = Object.keys(groupByLoader).map<DurationMetric>(\n (loaderName) => {\n const list = groupByLoader[loaderName] || [];\n const { start, end } = findLoaderTotalTiming(list);\n\n if (start < startTimestamp || startTimestamp === 0) {\n startTimestamp = start;\n }\n\n if (end > endTimestamp || endTimestamp === 0) {\n endTimestamp = end;\n }\n\n return {\n p: loaderName,\n n: loaderName,\n s: start,\n e: end,\n c: list.map((e) => {\n return {\n p: loaderName,\n // n: loaderName,\n n: beautifyPath(e.resource, cwd),\n s: e.startAt,\n e: e.endAt,\n ext: e,\n };\n }),\n };\n },\n );\n setData(_data);\n }, [groupByLoader]);\n\n return (\n <>\n {data?.length ? (\n <div\n className={[\n 'loader-chart-container',\n isDark ? 'loader-chart-container_dark' : '',\n ]\n .join(' ')\n .trim()}\n ref={ref}\n style={{ width: '100%' }}\n >\n <TimelineCom\n loaderData={durationMetricData}\n formatterFn={formatterForLoader}\n chartType={ChartTypes.Loader}\n exts={{ startTimestamp, endTimestamp }}\n />\n </div>\n ) : (\n <Empty />\n )}\n </>\n );\n};\n"],"names":["startTimestamp","endTimestamp","LoaderExecutionsChart","loaders","cwd","isDark","useTheme","ref","useRef","data","setData","useState","durationMetricData","useDebounceHook","groupByLoader","useMemo","groupBy","e","formatterForLoader","useCallback","raw","name","loaderName","getTooltipHtmlForLoader","renderTotalLoadersTooltip","useEffect","_data","Object","list","start","end","findLoaderTotalTiming","beautifyPath","TimelineCom","ChartTypes","Empty"],"mappings":";;;;;;;;;;;AAqBA,IAAIA,iBAAiB;AACrB,IAAIC,eAAe;AAEZ,MAAMC,wBAA8C,CAAC,EAC1DC,OAAO,EACPC,GAAG,EACJ;IACC,MAAM,EAAEC,MAAM,EAAE,GAAGC;IACnB,MAAMC,MAAMC,OAAO;IACnB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS,EAAE;IACnC,MAAMC,qBAAqBC,gBAAgBJ,MAAM;IAGjD,MAAMK,gBAAgBC,QACpB,IAAMC,QAAQb,SAAS,CAACc,IAAMA,EAAE,MAAM,GACtC;QAACd;KAAQ;IAGX,MAAMe,qBAAqBC,YAAY,CAACC;QACtC,MAAM,EAAEC,IAAI,EAAEZ,IAAI,EAAE,GAAGW;QACvB,MAAME,aAAaD,KAAK,OAAO,CAAC,UAAU;QAC1C,IAAIZ,MAAM,KACR,OAAOc,wBAAwBd,KAAK,GAAG;QAGzC,OAAOe,0BAA0BF,YAAYnB,SAASC;IACxD,GAAG,EAAE;IAELqB,UAAU;QACR,MAAMC,QAAQC,OAAO,IAAI,CAACb,eAAe,GAAG,CAC1C,CAACQ;YACC,MAAMM,OAAOd,aAAa,CAACQ,WAAW,IAAI,EAAE;YAC5C,MAAM,EAAEO,KAAK,EAAEC,GAAG,EAAE,GAAGC,sBAAsBH;YAE7C,IAAIC,QAAQ7B,kBAAkBA,AAAmB,MAAnBA,gBAC5BA,iBAAiB6B;YAGnB,IAAIC,MAAM7B,gBAAgBA,AAAiB,MAAjBA,cACxBA,eAAe6B;YAGjB,OAAO;gBACL,GAAGR;gBACH,GAAGA;gBACH,GAAGO;gBACH,GAAGC;gBACH,GAAGF,KAAK,GAAG,CAAC,CAACX,IACJ;wBACL,GAAGK;wBAEH,GAAGU,aAAaf,EAAE,QAAQ,EAAEb;wBAC5B,GAAGa,EAAE,OAAO;wBACZ,GAAGA,EAAE,KAAK;wBACV,KAAKA;oBACP;YAEJ;QACF;QAEFP,QAAQgB;IACV,GAAG;QAACZ;KAAc;IAElB,OAAO,WAAP,GACE;kBACGL,MAAM,SAAS,WAAT,GACL,IAAC;YACC,WAAW;gBACT;gBACAJ,SAAS,gCAAgC;aAC1C,CACE,IAAI,CAAC,KACL,IAAI;YACP,KAAKE;YACL,OAAO;gBAAE,OAAO;YAAO;sBAEvB,kBAAC0B,aAAWA;gBACV,YAAYrB;gBACZ,aAAaM;gBACb,WAAWgB,WAAW,MAAM;gBAC5B,MAAM;oBAAElC;oBAAgBC;gBAAa;;2BAIzC,IAACkC,OAAKA,CAAAA;;AAId"}
1
+ {"version":3,"file":"components/Charts/loader.mjs","sources":["../../../src/components/Charts/loader.tsx"],"sourcesContent":["import React, {\n useCallback,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { groupBy } from 'es-toolkit/compat';\nimport { Empty } from 'antd';\nimport './loader.scss';\nimport { useTheme } from 'src/utils/manifest';\nimport { findLoaderTotalTiming } from 'src/utils/loader';\nimport { beautifyPath } from 'src/utils/file';\nimport { TimelineCom } from './TimelineCharts';\nimport { ChartProps, DurationMetric } from './types';\nimport {\n renderTotalLoadersTooltip,\n getTooltipHtmlForLoader,\n useDebounceHook,\n} from './utils';\nimport { ChartTypes } from './constants';\nlet startTimestamp = 0;\nlet endTimestamp = 0;\n\nexport const LoaderExecutionsChart: React.FC<ChartProps> = ({\n loaders,\n cwd,\n}) => {\n const { isDark } = useTheme();\n const ref = useRef(null);\n const [data, setData] = useState([] as DurationMetric[]);\n const durationMetricData = useDebounceHook(data, 200);\n // const [endTimestamp, setEndTimestamp] = useState(0);\n\n const groupByLoader = useMemo(\n () => groupBy(loaders, (e) => e.loader),\n [loaders],\n );\n\n const formatterForLoader = useCallback((raw: any) => {\n const { name, data } = raw;\n const loaderName = name.replace(' total', '');\n if (data?.ext) {\n return getTooltipHtmlForLoader(data.ext as (typeof loaders)[0]);\n }\n\n return renderTotalLoadersTooltip(loaderName, loaders, cwd);\n }, []);\n\n useEffect(() => {\n const _data = Object.keys(groupByLoader).map<DurationMetric>(\n (loaderName) => {\n const list = groupByLoader[loaderName] || [];\n const { start, end } = findLoaderTotalTiming(list);\n\n if (start < startTimestamp || startTimestamp === 0) {\n startTimestamp = start;\n }\n\n if (end > endTimestamp || endTimestamp === 0) {\n endTimestamp = end;\n }\n\n return {\n p: loaderName,\n n: loaderName,\n s: start,\n e: end,\n c: list.map((e) => {\n return {\n p: loaderName,\n // n: loaderName,\n n: beautifyPath(e.resource, cwd),\n s: e.startAt,\n e: e.endAt,\n ext: e,\n };\n }),\n };\n },\n );\n setData(_data);\n }, [groupByLoader]);\n\n return (\n <>\n {data?.length ? (\n <div\n className={[\n 'loader-chart-container',\n isDark ? 'loader-chart-container_dark' : '',\n ]\n .join(' ')\n .trim()}\n ref={ref}\n style={{ width: '100%' }}\n >\n <TimelineCom\n loaderData={durationMetricData}\n formatterFn={formatterForLoader}\n chartType={ChartTypes.Loader}\n exts={{ startTimestamp, endTimestamp }}\n />\n </div>\n ) : (\n <Empty />\n )}\n </>\n );\n};\n"],"names":["startTimestamp","endTimestamp","LoaderExecutionsChart","loaders","cwd","isDark","useTheme","ref","useRef","data","setData","useState","durationMetricData","useDebounceHook","groupByLoader","useMemo","groupBy","e","formatterForLoader","useCallback","raw","name","loaderName","getTooltipHtmlForLoader","renderTotalLoadersTooltip","useEffect","_data","Object","list","start","end","findLoaderTotalTiming","beautifyPath","TimelineCom","ChartTypes","Empty"],"mappings":";;;;;;;;;;;AAqBA,IAAIA,iBAAiB;AACrB,IAAIC,eAAe;AAEZ,MAAMC,wBAA8C,CAAC,EAC1DC,OAAO,EACPC,GAAG,EACJ;IACC,MAAM,EAAEC,MAAM,EAAE,GAAGC;IACnB,MAAMC,MAAMC,OAAO;IACnB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS,EAAE;IACnC,MAAMC,qBAAqBC,gBAAgBJ,MAAM;IAGjD,MAAMK,gBAAgBC,QACpB,IAAMC,QAAQb,SAAS,CAACc,IAAMA,EAAE,MAAM,GACtC;QAACd;KAAQ;IAGX,MAAMe,qBAAqBC,YAAY,CAACC;QACtC,MAAM,EAAEC,IAAI,EAAEZ,IAAI,EAAE,GAAGW;QACvB,MAAME,aAAaD,KAAK,OAAO,CAAC,UAAU;QAC1C,IAAIZ,MAAM,KACR,OAAOc,wBAAwBd,KAAK,GAAG;QAGzC,OAAOe,0BAA0BF,YAAYnB,SAASC;IACxD,GAAG,EAAE;IAELqB,UAAU;QACR,MAAMC,QAAQC,OAAO,IAAI,CAACb,eAAe,GAAG,CAC1C,CAACQ;YACC,MAAMM,OAAOd,aAAa,CAACQ,WAAW,IAAI,EAAE;YAC5C,MAAM,EAAEO,KAAK,EAAEC,GAAG,EAAE,GAAGC,sBAAsBH;YAE7C,IAAIC,QAAQ7B,kBAAkBA,AAAmB,MAAnBA,gBAC5BA,iBAAiB6B;YAGnB,IAAIC,MAAM7B,gBAAgBA,AAAiB,MAAjBA,cACxBA,eAAe6B;YAGjB,OAAO;gBACL,GAAGR;gBACH,GAAGA;gBACH,GAAGO;gBACH,GAAGC;gBACH,GAAGF,KAAK,GAAG,CAAC,CAACX,IACJ;wBACL,GAAGK;wBAEH,GAAGU,aAAaf,EAAE,QAAQ,EAAEb;wBAC5B,GAAGa,EAAE,OAAO;wBACZ,GAAGA,EAAE,KAAK;wBACV,KAAKA;oBACP;YAEJ;QACF;QAEFP,QAAQgB;IACV,GAAG;QAACZ;KAAc;IAElB,OAAO,WAAP,GACE;kBACGL,MAAM,SAAS,WAAT,GACL,IAAC;YACC,WAAW;gBACT;gBACAJ,SAAS,gCAAgC;aAC1C,CACE,IAAI,CAAC,KACL,IAAI;YACP,KAAKE;YACL,OAAO;gBAAE,OAAO;YAAO;sBAEvB,kBAAC0B,aAAWA;gBACV,YAAYrB;gBACZ,aAAaM;gBACb,WAAWgB,WAAW,MAAM;gBAC5B,MAAM;oBAAElC;oBAAgBC;gBAAa;;2BAIzC,IAACkC,OAAKA,CAAAA;;AAId"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonChartProps } from './common';
2
+ import { CommonChartProps } from './common.js';
3
3
  import './loader.scss';
4
4
  import './tooltips.scss';
5
5
  export declare const MinifyChartContainer: React.FC<CommonChartProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/minify.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/minify.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Space } from 'antd';\nimport React from 'react';\nimport { TextDrawer } from '../TextDrawer';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { Card } from '../Card';\nimport { ServerAPIProvider } from '../Manifest';\nimport { WebpackPluginsDataTable } from '../Plugins/webpack';\nimport {\n CommonChartProps,\n CommonExecutionEmptyTips,\n CommonExecutionsChart,\n} from './common';\nimport { ChartTypes } from './constants';\n\nimport './loader.scss';\nimport './tooltips.scss';\n\nexport const MinifyChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}) => {\n const hooks: Array<string> = ['processAssets', 'optimizeChunkAssets'];\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Minify,\n );\n\n if (!target) return null;\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: 'Details of the \"Minify\" stage' }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title='Plugin DataSource of the \"Minify\"' collapsable>\n <WebpackPluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title='Chart of the \"Minify\"'>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Minify} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["MinifyChartContainer","summary","hooks","costs","target","e","Summary","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","WebpackPluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,uBAAmD,CAAC,EAC/DC,OAAO,EACR;IACC,MAAMC,QAAuB;QAAC;QAAiB;KAAsB;IACrE,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGF,WAAW,CAAC;IACnC,MAAMG,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,MAAM;IAGvD,IAAI,CAACF,QAAQ,OAAO;IACpB,OAAO,WAAP,GACE,IAACG,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO;QAAgC;QACtD,oBAAM,IAACC,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAER;YAAM;sBACpE,CAACS,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAM;4BAAoC,aAAW;sCACzD,kBAACC,yBAAuBA;gCAAC,YAAYF;;;sCAEvC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAM;sCACV,kBAACG,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,MAAM;;;;mCAIhE,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
1
+ {"version":3,"file":"components/Charts/minify.mjs","sources":["../../../src/components/Charts/minify.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Space } from 'antd';\nimport React from 'react';\nimport { TextDrawer } from '../TextDrawer';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { Card } from '../Card';\nimport { ServerAPIProvider } from '../Manifest';\nimport { WebpackPluginsDataTable } from '../Plugins/webpack';\nimport {\n CommonChartProps,\n CommonExecutionEmptyTips,\n CommonExecutionsChart,\n} from './common';\nimport { ChartTypes } from './constants';\n\nimport './loader.scss';\nimport './tooltips.scss';\n\nexport const MinifyChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}) => {\n const hooks: Array<string> = ['processAssets', 'optimizeChunkAssets'];\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Minify,\n );\n\n if (!target) return null;\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: 'Details of the \"Minify\" stage' }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title='Plugin DataSource of the \"Minify\"' collapsable>\n <WebpackPluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title='Chart of the \"Minify\"'>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Minify} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["MinifyChartContainer","summary","hooks","costs","target","e","Summary","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","WebpackPluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,uBAAmD,CAAC,EAC/DC,OAAO,EACR;IACC,MAAMC,QAAuB;QAAC;QAAiB;KAAsB;IACrE,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGF,WAAW,CAAC;IACnC,MAAMG,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,MAAM;IAGvD,IAAI,CAACF,QAAQ,OAAO;IACpB,OAAO,WAAP,GACE,IAACG,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO;QAAgC;QACtD,oBAAM,IAACC,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAER;YAAM;sBACpE,CAACS,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAM;4BAAoC,aAAW;sCACzD,kBAACC,yBAAuBA;gCAAC,YAAYF;;;sCAEvC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAM;sCACV,kBAACG,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,MAAM;;;;mCAIhE,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/treemap.module.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/treemap.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./treemap_module.css\"\nexport default {\"treemap\":\"treemap-DOrYiA\",\"tooltip-row\":\"tooltip-row-sZbl0R\",\"tooltipRow\":\"tooltip-row-sZbl0R\",\"tooltip-label\":\"tooltip-label-INs_JK\",\"tooltipLabel\":\"tooltip-label-INs_JK\",\"tooltip-path\":\"tooltip-path-djJmWx\",\"tooltipPath\":\"tooltip-path-djJmWx\",\"collapse-icon\":\"collapse-icon-wzQxAS\",\"collapseIcon\":\"collapse-icon-wzQxAS\"};"],"names":[],"mappings":";AAEA,uBAAe;IAAC,SAAU;IAAiB,eAAc;IAAqB,YAAa;IAAqB,iBAAgB;IAAuB,cAAe;IAAuB,gBAAe;IAAsB,aAAc;IAAsB,iBAAgB;IAAuB,cAAe;AAAsB"}
1
+ {"version":3,"file":"components/Charts/treemap.module.mjs","sources":["../../../src/components/Charts/treemap.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./treemap_module.css\"\nexport default {\"treemap\":\"treemap-DOrYiA\",\"tooltip-row\":\"tooltip-row-sZbl0R\",\"tooltipRow\":\"tooltip-row-sZbl0R\",\"tooltip-label\":\"tooltip-label-INs_JK\",\"tooltipLabel\":\"tooltip-label-INs_JK\",\"tooltip-path\":\"tooltip-path-djJmWx\",\"tooltipPath\":\"tooltip-path-djJmWx\",\"collapse-icon\":\"collapse-icon-wzQxAS\",\"collapseIcon\":\"collapse-icon-wzQxAS\"};"],"names":[],"mappings":";AAEA,uBAAe;IAAC,SAAU;IAAiB,eAAc;IAAqB,YAAa;IAAqB,iBAAgB;IAAuB,cAAe;IAAuB,gBAAe;IAAsB,aAAc;IAAsB,iBAAgB;IAAuB,cAAe;AAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/types.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/types.ts"],"sourcesContent":["import { SDK } from \"@rsdoctor/types\";\n\nexport interface ChartProps {\n loaders: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>;\n cwd: string;\n}\n\nexport interface CommonMetricPart<T extends string = string> {\n _n?: boolean;\n _c?: string;\n p: string;\n n: T;\n ext?: unknown;\n}\n\nexport declare type Metric = DurationMetric;\nexport interface DurationMetric extends CommonMetricPart {\n _r?: [start: string, end: string];\n s: number;\n e: number;\n c?: DurationMetric[];\n}\n\n// Trace Events.\nexport enum ETraceEventPhase {\n // Standard\n BEGIN = 'B',\n END = 'E',\n COMPLETE = 'X',\n INSTANT = 'I',\n\n // Mark\n MARK = 'R',\n}\n\ntype MicroSeconds = number;\ntype ProcessID = number | string;\ntype ArgsType = {\n p: string,\n n: string,\n s: number,\n e: number,\n}\n\nexport interface ITraceEventData {\n /**\n *Any arguments provided for the event. Some of the event types have required argument fields, otherwise, you can put any information you wish in here. The arguments are displayed in Trace Viewer when you view an event in the analysis section.\n */\n args: ArgsType;\n /**\n * The name of the event, as displayed in Chart.\n */\n name: string;\n /**\n * The event type. This is a single character which changes depending on the type of event being output.\n */\n ph: ETraceEventPhase;\n /**\n * The process ID for the process that output this event.\n */\n pid: ProcessID;\n /**\n * The tracing clock timestamp of the event. The timestamps are provided at microsecond granularity.\n */\n ts: MicroSeconds;\n /**\n * specify the tracing clock duration of complete events in microseconds.\n */\n dur?: MicroSeconds;\n}"],"names":["ETraceEventPhase"],"mappings":"AAwBO,IAAKA,yBAAgBA,WAAAA,GAAAA,SAAhBA,gBAAgB;;;;;;WAAhBA"}
1
+ {"version":3,"file":"components/Charts/types.mjs","sources":["../../../src/components/Charts/types.ts"],"sourcesContent":["import { SDK } from \"@rsdoctor/types\";\n\nexport interface ChartProps {\n loaders: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>;\n cwd: string;\n}\n\nexport interface CommonMetricPart<T extends string = string> {\n _n?: boolean;\n _c?: string;\n p: string;\n n: T;\n ext?: unknown;\n}\n\nexport declare type Metric = DurationMetric;\nexport interface DurationMetric extends CommonMetricPart {\n _r?: [start: string, end: string];\n s: number;\n e: number;\n c?: DurationMetric[];\n}\n\n// Trace Events.\nexport enum ETraceEventPhase {\n // Standard\n BEGIN = 'B',\n END = 'E',\n COMPLETE = 'X',\n INSTANT = 'I',\n\n // Mark\n MARK = 'R',\n}\n\ntype MicroSeconds = number;\ntype ProcessID = number | string;\ntype ArgsType = {\n p: string,\n n: string,\n s: number,\n e: number,\n}\n\nexport interface ITraceEventData {\n /**\n *Any arguments provided for the event. Some of the event types have required argument fields, otherwise, you can put any information you wish in here. The arguments are displayed in Trace Viewer when you view an event in the analysis section.\n */\n args: ArgsType;\n /**\n * The name of the event, as displayed in Chart.\n */\n name: string;\n /**\n * The event type. This is a single character which changes depending on the type of event being output.\n */\n ph: ETraceEventPhase;\n /**\n * The process ID for the process that output this event.\n */\n pid: ProcessID;\n /**\n * The tracing clock timestamp of the event. The timestamps are provided at microsecond granularity.\n */\n ts: MicroSeconds;\n /**\n * specify the tracing clock duration of complete events in microseconds.\n */\n dur?: MicroSeconds;\n}"],"names":["ETraceEventPhase"],"mappings":"AAwBO,IAAKA,yBAAgBA,WAAAA,GAAAA,SAAhBA,gBAAgB;;;;;;WAAhBA"}
@@ -1,6 +1,6 @@
1
1
  import { SDK } from '@rsdoctor/types';
2
2
  import './tooltips.scss';
3
- import { DurationMetric, ITraceEventData } from './types';
3
+ import { DurationMetric, ITraceEventData } from './types.js';
4
4
  export declare function getTooltipHtmlForLoader(loader: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>[0]): string;
5
5
  export declare function renderTotalLoadersTooltip(loaderName: string, loaders: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>, cwd: string): string;
6
6
  export declare function transformDurationMetric(rawData: DurationMetric[]): ITraceEventData[];
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/utils.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/utils.ts"],"sourcesContent":["import { Loader } from '@rsdoctor/utils/common';\nimport { SDK } from '@rsdoctor/types';\nimport dayjs from 'dayjs';\nimport { maxBy, minBy } from 'es-toolkit/compat';\nimport { formatCosts } from 'src/utils';\n\nimport './tooltips.scss';\nimport { DurationMetric, ETraceEventPhase, ITraceEventData } from './types';\nimport { useEffect, useState } from 'react';\n\nexport function getTooltipHtmlForLoader(\n loader: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>[0],\n) {\n return `\n <div class=\"loader-tooltip-container\">\n <div class=\"loader-tooltip-title\">${loader.loader}</div>\n <li class=\"loader-tooltip-item\">\n <span>isPitch</span>\n <span>${loader.isPitch}</span>\n </li>\n ${\n loader.layer && loader.layer !== 'undefined'\n ? `<li class=\"loader-tooltip-item\">\n <span>layer</span>\n <span>${loader.layer}</span>\n </li>`\n : ``\n }\n <li class=\"loader-tooltip-item\">\n <span>duration</span>\n <span class=\"loader-tooltip-text-bold\">${formatCosts(loader.costs)}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>filepath</span>\n <span>${loader.resource}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>start</span>\n <span class=\"loader-tooltip-text-bold\">${dayjs(loader.startAt).format(\n 'YYYY/MM/DD HH:mm:ss',\n )}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>end</span>\n <span class=\"loader-tooltip-text-bold\">${dayjs(loader.endAt).format(\n 'YYYY/MM/DD HH:mm:ss',\n )}</span>\n </li>\n </div>\n `.trim();\n}\n\nexport function renderTotalLoadersTooltip(\n loaderName: string,\n loaders: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>,\n cwd: string,\n) {\n const filter = (loader: { loader: string }) => loader.loader === loaderName;\n const filteredLoaders = loaders.filter(filter);\n const resources = filteredLoaders.map((e) => e.resource);\n const nodeModulesResources = resources.filter((e) =>\n e.includes('/node_modules/'),\n );\n const outsideResources = resources.filter((e) => !e.startsWith(cwd));\n const start = minBy(filteredLoaders, (e) => e.startAt)!.startAt;\n const end = maxBy(filteredLoaders, (e) => e.endAt)!.endAt;\n\n // const duration = sumBy(filteredLoaders, (e) => e.costs);\n const duration = Loader.getLoadersCosts(filter, loaders);\n\n return `\n<div class=\"loader-tooltip-container\">\n <div class=\"loader-tooltip-title\">${loaderName}</div>\n <li class=\"loader-tooltip-item\">\n <span>files</span>\n <span class=\"loader-tooltip-text-bold\">${resources.length}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>files(node_modules)</span>\n <span class=\"loader-tooltip-text-bold\">${nodeModulesResources.length}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>files(outside the cwd)</span>\n <span class=\"loader-tooltip-text-bold\">${outsideResources.length}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>duration(estimated)</span>\n <span class=\"loader-tooltip-text-bold\">${formatCosts(duration)}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>start(min)</span>\n <span>${dayjs(start).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>end(max)</span>\n <span>${dayjs(end).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n </div>\n `.trim();\n}\n\nexport function transformDurationMetric(\n rawData: DurationMetric[],\n): ITraceEventData[] {\n return rawData.reduce((acc, cur) => {\n if (cur.c) {\n const res = transformDurationMetric(cur.c);\n acc.push(\n {\n name: cur.n,\n ph: ETraceEventPhase.BEGIN,\n pid: cur.p,\n ts: cur.s,\n args: cur,\n },\n ...res,\n {\n name: cur.n,\n ph: ETraceEventPhase.END,\n pid: cur.p,\n ts: cur.e,\n args: cur,\n },\n );\n } else {\n acc.push({\n name: cur.n,\n ph: ETraceEventPhase.BEGIN,\n pid: cur.p,\n ts: cur.s,\n args: cur,\n });\n acc.push({\n name: cur.n,\n ph: ETraceEventPhase.END,\n pid: cur.p,\n ts: cur.e,\n args: cur,\n });\n }\n return acc;\n }, [] as ITraceEventData[]);\n}\n\n// DFS 遍历,取每层的最后一个元素与目标元素进行比较,如果目标元素可以存放至当前层,就push;如果不能就放到下一层\nexport function processTrans(rawData: DurationMetric[]) {\n const processedData = rawData\n .sort((a, b) => a.s - b.s)\n .reduce(\n (prev, cur) => {\n const ca = prev[cur.p];\n if (ca) {\n loop(ca, cur);\n } else {\n prev[cur.p] = [cur];\n }\n return prev;\n },\n {} as Record<string, DurationMetric[]>,\n );\n const data = Object.entries(processedData).reduce((prev, [_key, val]) => {\n // @ts-ignore\n prev.push(...val);\n return prev;\n }, [] as DurationMetric[]);\n return transformDurationMetric(data);\n}\n\nfunction loop(dur: DurationMetric[], target: DurationMetric) {\n const queue = [dur];\n while (queue.length > 0) {\n const floor = queue.shift() || [];\n if (floor.length === 0) return;\n const curFloorLast = floor[floor.length - 1];\n if (curFloorLast.e <= target.s) {\n return floor.push(target);\n }\n let nextFloor: DurationMetric[];\n for (let i = floor.length - 1; i >= 0; i--) {\n const { c } = floor[i];\n if (c) {\n nextFloor = c;\n }\n }\n // @ts-ignore\n if (nextFloor) {\n queue.push(nextFloor);\n } else {\n curFloorLast.c = [target];\n }\n }\n}\n\nexport function formatterForPlugins(raw: { data: { ext: ITraceEventData } }) {\n const { ext } = raw.data;\n return `\n <div class=\"loader-tooltip-container\">\n <div class=\"loader-tooltip-title\">[${ext.args.p}] ${ext.args.n}</div>\n <li class=\"loader-tooltip-item\">\n <span>hook</span>\n <span>${ext.args.p}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>tap name</span>\n <span>${ext.args.n}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>start</span>\n <span>${dayjs(ext.args.s).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>end</span>\n <span>${dayjs(ext.args.e).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>duration</span>\n <span>${formatCosts(ext.args.e - ext.args.s)}</span>\n </li>\n </div>\n `.trim();\n}\n\nexport function useDebounceHook(\n value: DurationMetric[],\n delay: number,\n): DurationMetric[] | undefined {\n const [debounceValue, setDebounceValue] = useState(value);\n useEffect(() => {\n let timer = setTimeout(() => setDebounceValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debounceValue;\n}\n"],"names":["getTooltipHtmlForLoader","loader","formatCosts","dayjs","renderTotalLoadersTooltip","loaderName","loaders","cwd","filter","filteredLoaders","resources","e","nodeModulesResources","outsideResources","start","minBy","end","maxBy","duration","Loader","transformDurationMetric","rawData","acc","cur","res","ETraceEventPhase","processTrans","processedData","a","b","prev","ca","loop","data","Object","_key","val","dur","target","queue","floor","curFloorLast","nextFloor","i","c","formatterForPlugins","raw","ext","useDebounceHook","value","delay","debounceValue","setDebounceValue","useState","useEffect","timer","setTimeout","clearTimeout"],"mappings":"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"}
1
+ {"version":3,"file":"components/Charts/utils.mjs","sources":["../../../src/components/Charts/utils.ts"],"sourcesContent":["import { Loader } from '@rsdoctor/utils/common';\nimport { SDK } from '@rsdoctor/types';\nimport dayjs from 'dayjs';\nimport { maxBy, minBy } from 'es-toolkit/compat';\nimport { formatCosts } from 'src/utils';\n\nimport './tooltips.scss';\nimport { DurationMetric, ETraceEventPhase, ITraceEventData } from './types';\nimport { useEffect, useState } from 'react';\n\nexport function getTooltipHtmlForLoader(\n loader: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>[0],\n) {\n return `\n <div class=\"loader-tooltip-container\">\n <div class=\"loader-tooltip-title\">${loader.loader}</div>\n <li class=\"loader-tooltip-item\">\n <span>isPitch</span>\n <span>${loader.isPitch}</span>\n </li>\n ${\n loader.layer && loader.layer !== 'undefined'\n ? `<li class=\"loader-tooltip-item\">\n <span>layer</span>\n <span>${loader.layer}</span>\n </li>`\n : ``\n }\n <li class=\"loader-tooltip-item\">\n <span>duration</span>\n <span class=\"loader-tooltip-text-bold\">${formatCosts(loader.costs)}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>filepath</span>\n <span>${loader.resource}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>start</span>\n <span class=\"loader-tooltip-text-bold\">${dayjs(loader.startAt).format(\n 'YYYY/MM/DD HH:mm:ss',\n )}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>end</span>\n <span class=\"loader-tooltip-text-bold\">${dayjs(loader.endAt).format(\n 'YYYY/MM/DD HH:mm:ss',\n )}</span>\n </li>\n </div>\n `.trim();\n}\n\nexport function renderTotalLoadersTooltip(\n loaderName: string,\n loaders: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderChartData>,\n cwd: string,\n) {\n const filter = (loader: { loader: string }) => loader.loader === loaderName;\n const filteredLoaders = loaders.filter(filter);\n const resources = filteredLoaders.map((e) => e.resource);\n const nodeModulesResources = resources.filter((e) =>\n e.includes('/node_modules/'),\n );\n const outsideResources = resources.filter((e) => !e.startsWith(cwd));\n const start = minBy(filteredLoaders, (e) => e.startAt)!.startAt;\n const end = maxBy(filteredLoaders, (e) => e.endAt)!.endAt;\n\n // const duration = sumBy(filteredLoaders, (e) => e.costs);\n const duration = Loader.getLoadersCosts(filter, loaders);\n\n return `\n<div class=\"loader-tooltip-container\">\n <div class=\"loader-tooltip-title\">${loaderName}</div>\n <li class=\"loader-tooltip-item\">\n <span>files</span>\n <span class=\"loader-tooltip-text-bold\">${resources.length}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>files(node_modules)</span>\n <span class=\"loader-tooltip-text-bold\">${nodeModulesResources.length}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>files(outside the cwd)</span>\n <span class=\"loader-tooltip-text-bold\">${outsideResources.length}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>duration(estimated)</span>\n <span class=\"loader-tooltip-text-bold\">${formatCosts(duration)}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>start(min)</span>\n <span>${dayjs(start).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>end(max)</span>\n <span>${dayjs(end).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n </div>\n `.trim();\n}\n\nexport function transformDurationMetric(\n rawData: DurationMetric[],\n): ITraceEventData[] {\n return rawData.reduce((acc, cur) => {\n if (cur.c) {\n const res = transformDurationMetric(cur.c);\n acc.push(\n {\n name: cur.n,\n ph: ETraceEventPhase.BEGIN,\n pid: cur.p,\n ts: cur.s,\n args: cur,\n },\n ...res,\n {\n name: cur.n,\n ph: ETraceEventPhase.END,\n pid: cur.p,\n ts: cur.e,\n args: cur,\n },\n );\n } else {\n acc.push({\n name: cur.n,\n ph: ETraceEventPhase.BEGIN,\n pid: cur.p,\n ts: cur.s,\n args: cur,\n });\n acc.push({\n name: cur.n,\n ph: ETraceEventPhase.END,\n pid: cur.p,\n ts: cur.e,\n args: cur,\n });\n }\n return acc;\n }, [] as ITraceEventData[]);\n}\n\n// DFS 遍历,取每层的最后一个元素与目标元素进行比较,如果目标元素可以存放至当前层,就push;如果不能就放到下一层\nexport function processTrans(rawData: DurationMetric[]) {\n const processedData = rawData\n .sort((a, b) => a.s - b.s)\n .reduce(\n (prev, cur) => {\n const ca = prev[cur.p];\n if (ca) {\n loop(ca, cur);\n } else {\n prev[cur.p] = [cur];\n }\n return prev;\n },\n {} as Record<string, DurationMetric[]>,\n );\n const data = Object.entries(processedData).reduce((prev, [_key, val]) => {\n // @ts-ignore\n prev.push(...val);\n return prev;\n }, [] as DurationMetric[]);\n return transformDurationMetric(data);\n}\n\nfunction loop(dur: DurationMetric[], target: DurationMetric) {\n const queue = [dur];\n while (queue.length > 0) {\n const floor = queue.shift() || [];\n if (floor.length === 0) return;\n const curFloorLast = floor[floor.length - 1];\n if (curFloorLast.e <= target.s) {\n return floor.push(target);\n }\n let nextFloor: DurationMetric[];\n for (let i = floor.length - 1; i >= 0; i--) {\n const { c } = floor[i];\n if (c) {\n nextFloor = c;\n }\n }\n // @ts-ignore\n if (nextFloor) {\n queue.push(nextFloor);\n } else {\n curFloorLast.c = [target];\n }\n }\n}\n\nexport function formatterForPlugins(raw: { data: { ext: ITraceEventData } }) {\n const { ext } = raw.data;\n return `\n <div class=\"loader-tooltip-container\">\n <div class=\"loader-tooltip-title\">[${ext.args.p}] ${ext.args.n}</div>\n <li class=\"loader-tooltip-item\">\n <span>hook</span>\n <span>${ext.args.p}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>tap name</span>\n <span>${ext.args.n}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>start</span>\n <span>${dayjs(ext.args.s).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>end</span>\n <span>${dayjs(ext.args.e).format('YYYY/MM/DD HH:mm:ss')}</span>\n </li>\n <li class=\"loader-tooltip-item\">\n <span>duration</span>\n <span>${formatCosts(ext.args.e - ext.args.s)}</span>\n </li>\n </div>\n `.trim();\n}\n\nexport function useDebounceHook(\n value: DurationMetric[],\n delay: number,\n): DurationMetric[] | undefined {\n const [debounceValue, setDebounceValue] = useState(value);\n useEffect(() => {\n let timer = setTimeout(() => setDebounceValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debounceValue;\n}\n"],"names":["getTooltipHtmlForLoader","loader","formatCosts","dayjs","renderTotalLoadersTooltip","loaderName","loaders","cwd","filter","filteredLoaders","resources","e","nodeModulesResources","outsideResources","start","minBy","end","maxBy","duration","Loader","transformDurationMetric","rawData","acc","cur","res","ETraceEventPhase","processTrans","processedData","a","b","prev","ca","loop","data","Object","_key","val","dur","target","queue","floor","curFloorLast","nextFloor","i","c","formatterForPlugins","raw","ext","useDebounceHook","value","delay","debounceValue","setDebounceValue","useState","useEffect","timer","setTimeout","clearTimeout"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Configuration/builder.mjs","sources":["webpack://@rsdoctor/components/./src/components/Configuration/builder.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Row, Select, Space, Typography } from 'antd';\nimport { RightOutlined } from '@ant-design/icons';\nimport React, { useState } from 'react';\nimport ReactJson from 'react-json-view';\nimport { useWebpackConfigurationByConfigs } from '../../utils';\nimport { withServerAPI } from '../Manifest';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\n\nimport styles from './builder.module.scss';\nimport { Lodash } from '@rsdoctor/utils/common';\n\ninterface WebpackConfigurationViewerBaseProps {\n defaultKeys?: string[];\n configs: SDK.ConfigData;\n}\n\nexport const WebpackConfigurationViewerBase: React.FC<\n WebpackConfigurationViewerBaseProps\n> = ({ defaultKeys, configs }) => {\n const builderConfigData = useWebpackConfigurationByConfigs(configs || []);\n\n if (!builderConfigData) return null;\n\n const { config, version, name } = builderConfigData;\n const keys = Object.keys(config);\n const [selectKeys, setSelectKeys] = useState<string[]>(defaultKeys || keys);\n\n return (\n <TextDrawer\n text={\n <div className={styles.title}>\n <span style={{ marginRight: '8px', fontSize: '13px' }}>\n View Bundler Config\n </span>\n <RightOutlined style={{ fontSize: '10px' }} />\n </div>\n }\n >\n <Row>\n <Title text={`Bundler Config Viewer`} />\n <Divider />\n <Space>\n <Typography.Text>Properties: </Typography.Text>\n <Select\n dropdownStyle={{ zIndex: 999 }}\n mode=\"multiple\"\n allowClear\n value={selectKeys.length === keys.length ? [] : selectKeys}\n style={{ width: 350 }}\n popupMatchSelectWidth\n placeholder={'Show Selected Properties Only.'}\n onChange={(e) => {\n setSelectKeys(e);\n }}\n >\n {keys.map((e) => {\n return (\n <Select.Option key={e} label={e} value={e}>\n {e}\n </Select.Option>\n );\n })}\n </Select>\n </Space>\n <Divider />\n </Row>\n <ReactJson\n name={\n version && version !== 'unknown'\n ? `${name}@${version}`\n : `webpack.config`\n }\n theme=\"monokai\"\n src={\n selectKeys.length === 0\n ? config\n : Lodash.pick(config, selectKeys as (keyof typeof config)[])\n }\n displayDataTypes={false}\n displayObjectSize={false}\n style={{ overflowX: 'auto' }}\n />\n </TextDrawer>\n );\n};\n\nexport const WebpackConfigurationViewer = withServerAPI({\n Component: WebpackConfigurationViewerBase,\n api: SDK.ServerAPI.API.LoadDataByKey,\n responsePropName: 'configs',\n body: {\n key: 'configs',\n },\n showSkeleton: false,\n});\n"],"names":["WebpackConfigurationViewerBase","defaultKeys","configs","builderConfigData","useWebpackConfigurationByConfigs","config","version","name","keys","Object","selectKeys","setSelectKeys","useState","TextDrawer","styles","RightOutlined","Row","Title","Divider","Space","Typography","Select","e","ReactJson","Lodash","WebpackConfigurationViewer","withServerAPI","SDK"],"mappings":";;;;;;;;;;;;AAkBO,MAAMA,iCAET,CAAC,EAAEC,WAAW,EAAEC,OAAO,EAAE;IAC3B,MAAMC,oBAAoBC,iCAAiCF,WAAW,EAAE;IAExE,IAAI,CAACC,mBAAmB,OAAO;IAE/B,MAAM,EAAEE,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAGJ;IAClC,MAAMK,OAAOC,OAAO,IAAI,CAACJ;IACzB,MAAM,CAACK,YAAYC,cAAc,GAAGC,SAAmBX,eAAeO;IAEtE,OAAO,WAAP,GACE,KAACK,YAAUA;QACT,oBACE,KAAC;YAAI,WAAWC,eAAAA,KAAY;;8BAC1B,IAAC;oBAAK,OAAO;wBAAE,aAAa;wBAAO,UAAU;oBAAO;8BAAG;;8BAGvD,IAACC,eAAaA;oBAAC,OAAO;wBAAE,UAAU;oBAAO;;;;;0BAI7C,KAACC,KAAGA;;kCACF,IAACC,OAAKA;wBAAC,MAAM;;kCACb,IAACC,SAAOA,CAAAA;kCACR,KAACC,OAAKA;;0CACJ,IAACC,WAAW,IAAI;0CAAC;;0CACjB,IAACC,QAAMA;gCACL,eAAe;oCAAE,QAAQ;gCAAI;gCAC7B,MAAK;gCACL,YAAU;gCACV,OAAOX,WAAW,MAAM,KAAKF,KAAK,MAAM,GAAG,EAAE,GAAGE;gCAChD,OAAO;oCAAE,OAAO;gCAAI;gCACpB,uBAAqB;gCACrB,aAAa;gCACb,UAAU,CAACY;oCACTX,cAAcW;gCAChB;0CAECd,KAAK,GAAG,CAAC,CAACc,IACF,WAAP,GACE,IAACD,OAAO,MAAM;wCAAS,OAAOC;wCAAG,OAAOA;kDACrCA;uCADiBA;;;;kCAO5B,IAACJ,SAAOA,CAAAA;;;0BAEV,IAACK,iBAASA;gBACR,MACEjB,WAAWA,AAAY,cAAZA,UACP,GAAGC,KAAK,CAAC,EAAED,SAAS,GACpB;gBAEN,OAAM;gBACN,KACEI,AAAsB,MAAtBA,WAAW,MAAM,GACbL,SACAmB,OAAO,IAAI,CAACnB,QAAQK;gBAE1B,kBAAkB;gBAClB,mBAAmB;gBACnB,OAAO;oBAAE,WAAW;gBAAO;;;;AAInC;AAEO,MAAMe,6BAA6BC,cAAc;IACtD,WAAW1B;IACX,KAAK2B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;IACpC,kBAAkB;IAClB,MAAM;QACJ,KAAK;IACP;IACA,cAAc;AAChB"}
1
+ {"version":3,"file":"components/Configuration/builder.mjs","sources":["../../../src/components/Configuration/builder.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Row, Select, Space, Typography } from 'antd';\nimport { RightOutlined } from '@ant-design/icons';\nimport React, { useState } from 'react';\nimport ReactJson from 'react-json-view';\nimport { useWebpackConfigurationByConfigs } from '../../utils';\nimport { withServerAPI } from '../Manifest';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\n\nimport styles from './builder.module.scss';\nimport { Lodash } from '@rsdoctor/utils/common';\n\ninterface WebpackConfigurationViewerBaseProps {\n defaultKeys?: string[];\n configs: SDK.ConfigData;\n}\n\nexport const WebpackConfigurationViewerBase: React.FC<\n WebpackConfigurationViewerBaseProps\n> = ({ defaultKeys, configs }) => {\n const builderConfigData = useWebpackConfigurationByConfigs(configs || []);\n\n if (!builderConfigData) return null;\n\n const { config, version, name } = builderConfigData;\n const keys = Object.keys(config);\n const [selectKeys, setSelectKeys] = useState<string[]>(defaultKeys || keys);\n\n return (\n <TextDrawer\n text={\n <div className={styles.title}>\n <span style={{ marginRight: '8px', fontSize: '13px' }}>\n View Bundler Config\n </span>\n <RightOutlined style={{ fontSize: '10px' }} />\n </div>\n }\n >\n <Row>\n <Title text={`Bundler Config Viewer`} />\n <Divider />\n <Space>\n <Typography.Text>Properties: </Typography.Text>\n <Select\n dropdownStyle={{ zIndex: 999 }}\n mode=\"multiple\"\n allowClear\n value={selectKeys.length === keys.length ? [] : selectKeys}\n style={{ width: 350 }}\n popupMatchSelectWidth\n placeholder={'Show Selected Properties Only.'}\n onChange={(e) => {\n setSelectKeys(e);\n }}\n >\n {keys.map((e) => {\n return (\n <Select.Option key={e} label={e} value={e}>\n {e}\n </Select.Option>\n );\n })}\n </Select>\n </Space>\n <Divider />\n </Row>\n <ReactJson\n name={\n version && version !== 'unknown'\n ? `${name}@${version}`\n : `webpack.config`\n }\n theme=\"monokai\"\n src={\n selectKeys.length === 0\n ? config\n : Lodash.pick(config, selectKeys as (keyof typeof config)[])\n }\n displayDataTypes={false}\n displayObjectSize={false}\n style={{ overflowX: 'auto' }}\n />\n </TextDrawer>\n );\n};\n\nexport const WebpackConfigurationViewer = withServerAPI({\n Component: WebpackConfigurationViewerBase,\n api: SDK.ServerAPI.API.LoadDataByKey,\n responsePropName: 'configs',\n body: {\n key: 'configs',\n },\n showSkeleton: false,\n});\n"],"names":["WebpackConfigurationViewerBase","defaultKeys","configs","builderConfigData","useWebpackConfigurationByConfigs","config","version","name","keys","Object","selectKeys","setSelectKeys","useState","TextDrawer","styles","RightOutlined","Row","Title","Divider","Space","Typography","Select","e","ReactJson","Lodash","WebpackConfigurationViewer","withServerAPI","SDK"],"mappings":";;;;;;;;;;;;AAkBO,MAAMA,iCAET,CAAC,EAAEC,WAAW,EAAEC,OAAO,EAAE;IAC3B,MAAMC,oBAAoBC,iCAAiCF,WAAW,EAAE;IAExE,IAAI,CAACC,mBAAmB,OAAO;IAE/B,MAAM,EAAEE,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAGJ;IAClC,MAAMK,OAAOC,OAAO,IAAI,CAACJ;IACzB,MAAM,CAACK,YAAYC,cAAc,GAAGC,SAAmBX,eAAeO;IAEtE,OAAO,WAAP,GACE,KAACK,YAAUA;QACT,oBACE,KAAC;YAAI,WAAWC,eAAAA,KAAY;;8BAC1B,IAAC;oBAAK,OAAO;wBAAE,aAAa;wBAAO,UAAU;oBAAO;8BAAG;;8BAGvD,IAACC,eAAaA;oBAAC,OAAO;wBAAE,UAAU;oBAAO;;;;;0BAI7C,KAACC,KAAGA;;kCACF,IAACC,OAAKA;wBAAC,MAAM;;kCACb,IAACC,SAAOA,CAAAA;kCACR,KAACC,OAAKA;;0CACJ,IAACC,WAAW,IAAI;0CAAC;;0CACjB,IAACC,QAAMA;gCACL,eAAe;oCAAE,QAAQ;gCAAI;gCAC7B,MAAK;gCACL,YAAU;gCACV,OAAOX,WAAW,MAAM,KAAKF,KAAK,MAAM,GAAG,EAAE,GAAGE;gCAChD,OAAO;oCAAE,OAAO;gCAAI;gCACpB,uBAAqB;gCACrB,aAAa;gCACb,UAAU,CAACY;oCACTX,cAAcW;gCAChB;0CAECd,KAAK,GAAG,CAAC,CAACc,IACF,WAAP,GACE,IAACD,OAAO,MAAM;wCAAS,OAAOC;wCAAG,OAAOA;kDACrCA;uCADiBA;;;;kCAO5B,IAACJ,SAAOA,CAAAA;;;0BAEV,IAACK,iBAASA;gBACR,MACEjB,WAAWA,AAAY,cAAZA,UACP,GAAGC,KAAK,CAAC,EAAED,SAAS,GACpB;gBAEN,OAAM;gBACN,KACEI,AAAsB,MAAtBA,WAAW,MAAM,GACbL,SACAmB,OAAO,IAAI,CAACnB,QAAQK;gBAE1B,kBAAkB;gBAClB,mBAAmB;gBACnB,OAAO;oBAAE,WAAW;gBAAO;;;;AAInC;AAEO,MAAMe,6BAA6BC,cAAc;IACtD,WAAW1B;IACX,KAAK2B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;IACpC,kBAAkB;IAClB,MAAM;QACJ,KAAK;IACP;IACA,cAAc;AAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Configuration/builder.module.mjs","sources":["webpack://@rsdoctor/components/./src/components/Configuration/builder.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./builder_module.css\"\nexport default {\"title\":\"title-BZ9xk1\"};"],"names":[],"mappings":";AAEA,uBAAe;IAAC,OAAQ;AAAc"}
1
+ {"version":3,"file":"components/Configuration/builder.module.mjs","sources":["../../../src/components/Configuration/builder.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./builder_module.css\"\nexport default {\"title\":\"title-BZ9xk1\"};"],"names":[],"mappings":";AAEA,uBAAe;IAAC,OAAQ;AAAc"}
@@ -1 +1 @@
1
- export * from './builder';
1
+ export * from './builder.js';
@@ -1 +1 @@
1
- {"version":3,"file":"components/FileTree/css.mjs","sources":["webpack://@rsdoctor/components/./src/components/FileTree/css.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgCss = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={12} height={14} fill=\"none\" viewBox=\"0 0 12 14\" {...props}><path fill=\"#FAAD14\" d=\"M11.409 3.51 8.046.146A.5.5 0 0 0 7.693 0H1.056a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3.864a.5.5 0 0 0-.147-.355M7.462 1.152l2.94 2.94h-2.94zm2.969 11.722H1.68V1.125h4.718V4.5a.656.656 0 0 0 .657.656h3.375z\" /><path fill=\"#FAAD14\" d=\"M6.927 9.651h.888a1.6 1.6 0 0 1-.24.775q-.211.339-.592.528-.377.19-.908.19a1.9 1.9 0 0 1-.745-.142 1.6 1.6 0 0 1-.564-.416 1.9 1.9 0 0 1-.354-.653 2.8 2.8 0 0 1-.121-.858v-.3q0-.474.124-.858.128-.386.362-.656.238-.27.567-.415.33-.146.737-.146.54 0 .911.196.375.195.58.54.206.345.249.784H6.93a1.15 1.15 0 0 0-.104-.442.6.6 0 0 0-.27-.276 1 1 0 0 0-.475-.095.86.86 0 0 0-.39.083.7.7 0 0 0-.278.252 1.3 1.3 0 0 0-.17.428q-.053.255-.053.6v.305q0 .335.05.591.051.251.155.428a.7.7 0 0 0 .273.26.9.9 0 0 0 .407.087q.28 0 .46-.09a.6.6 0 0 0 .276-.263q.098-.176.116-.437\" /><path fill=\"#FFF1B8\" fillRule=\"evenodd\" d=\"M6.4 1.125V4.5a.656.656 0 0 0 .656.656h3.375v7.719H1.68V1.125zm1.415 8.526h-.888q-.017.261-.116.437a.6.6 0 0 1-.276.264q-.18.09-.46.089a.9.9 0 0 1-.407-.086.7.7 0 0 1-.273-.261q-.104-.176-.154-.428a3 3 0 0 1-.05-.59v-.307q0-.345.053-.6.056-.258.169-.427a.7.7 0 0 1 .279-.252.86.86 0 0 1 .389-.083q.297 0 .475.095a.6.6 0 0 1 .27.276q.09.18.104.442h.89a1.8 1.8 0 0 0-.249-.784q-.205-.345-.579-.54-.37-.195-.911-.196-.407 0-.737.146-.33.145-.567.415-.234.27-.362.656a2.8 2.8 0 0 0-.124.858v.3q0 .476.121.858.122.383.354.653.234.27.564.416.33.143.745.143.531 0 .908-.19.38-.19.591-.529a1.6 1.6 0 0 0 .24-.775\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCss;"],"names":["SvgCss","props"],"mappings":";;AACA,MAAMA,SAASC,CAAAA,QAAAA,WAAAA,GAAS,KAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;;0BAAE,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAAoO,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAAsjB,IAAC;gBAAK,MAAK;gBAAU,UAAS;gBAAU,GAAE;gBAA+lB,UAAS;;;;AAC5lD,YAAeD"}
1
+ {"version":3,"file":"components/FileTree/css.mjs","sources":["../../../src/components/FileTree/css.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgCss = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={12} height={14} fill=\"none\" viewBox=\"0 0 12 14\" {...props}><path fill=\"#FAAD14\" d=\"M11.409 3.51 8.046.146A.5.5 0 0 0 7.693 0H1.056a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3.864a.5.5 0 0 0-.147-.355M7.462 1.152l2.94 2.94h-2.94zm2.969 11.722H1.68V1.125h4.718V4.5a.656.656 0 0 0 .657.656h3.375z\" /><path fill=\"#FAAD14\" d=\"M6.927 9.651h.888a1.6 1.6 0 0 1-.24.775q-.211.339-.592.528-.377.19-.908.19a1.9 1.9 0 0 1-.745-.142 1.6 1.6 0 0 1-.564-.416 1.9 1.9 0 0 1-.354-.653 2.8 2.8 0 0 1-.121-.858v-.3q0-.474.124-.858.128-.386.362-.656.238-.27.567-.415.33-.146.737-.146.54 0 .911.196.375.195.58.54.206.345.249.784H6.93a1.15 1.15 0 0 0-.104-.442.6.6 0 0 0-.27-.276 1 1 0 0 0-.475-.095.86.86 0 0 0-.39.083.7.7 0 0 0-.278.252 1.3 1.3 0 0 0-.17.428q-.053.255-.053.6v.305q0 .335.05.591.051.251.155.428a.7.7 0 0 0 .273.26.9.9 0 0 0 .407.087q.28 0 .46-.09a.6.6 0 0 0 .276-.263q.098-.176.116-.437\" /><path fill=\"#FFF1B8\" fillRule=\"evenodd\" d=\"M6.4 1.125V4.5a.656.656 0 0 0 .656.656h3.375v7.719H1.68V1.125zm1.415 8.526h-.888q-.017.261-.116.437a.6.6 0 0 1-.276.264q-.18.09-.46.089a.9.9 0 0 1-.407-.086.7.7 0 0 1-.273-.261q-.104-.176-.154-.428a3 3 0 0 1-.05-.59v-.307q0-.345.053-.6.056-.258.169-.427a.7.7 0 0 1 .279-.252.86.86 0 0 1 .389-.083q.297 0 .475.095a.6.6 0 0 1 .27.276q.09.18.104.442h.89a1.8 1.8 0 0 0-.249-.784q-.205-.345-.579-.54-.37-.195-.911-.196-.407 0-.737.146-.33.145-.567.415-.234.27-.362.656a2.8 2.8 0 0 0-.124.858v.3q0 .476.121.858.122.383.354.653.234.27.564.416.33.143.745.143.531 0 .908-.19.38-.19.591-.529a1.6 1.6 0 0 0 .24-.775\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCss;"],"names":["SvgCss","props"],"mappings":";;AACA,MAAMA,SAASC,CAAAA,QAAAA,WAAAA,GAAS,KAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;;0BAAE,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAAoO,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAAsjB,IAAC;gBAAK,MAAK;gBAAU,UAAS;gBAAU,GAAE;gBAA+lB,UAAS;;;;AAC5lD,YAAeD"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/FileTree/html.mjs","sources":["webpack://@rsdoctor/components/./src/components/FileTree/html.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgHtml = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={12} height={14} fill=\"none\" viewBox=\"0 0 12 14\" {...props}><path fill=\"#722ED1\" d=\"M6.076 7.58a.356.356 0 0 1 .646.299l-1.576 3.414a.356.356 0 0 1-.646-.298zM7.198 8.135a.356.356 0 0 0 0 .503l.8.799-.8.8a.356.356 0 1 0 .503.502l1.05-1.05a.356.356 0 0 0 0-.503l-1.05-1.05a.356.356 0 0 0-.503 0M4.024 8.135a.356.356 0 0 1 0 .503l-.799.799.8.8a.356.356 0 1 1-.504.502l-1.05-1.05a.356.356 0 0 1 0-.503l1.05-1.05a.356.356 0 0 1 .503 0\" /><path fill=\"#EFDBFF\" fillRule=\"evenodd\" d=\"M5.955 1.125V4.5a.656.656 0 0 0 .656.656h3.375v7.719h-8.75V1.125zm.121 6.456a.356.356 0 1 1 .646.298l-1.576 3.414a.356.356 0 1 1-.646-.298zm1.122.554a.356.356 0 0 0 0 .503l.8.799-.8.8a.356.356 0 1 0 .503.502l1.05-1.05a.356.356 0 0 0 0-.503l-1.05-1.05a.356.356 0 0 0-.503 0m-3.174.503a.356.356 0 1 0-.503-.503l-1.05 1.05a.356.356 0 0 0 0 .503l1.05 1.05a.355.355 0 1 0 .503-.502l-.799-.799z\" clipRule=\"evenodd\" /><path fill=\"#722ED1\" d=\"M10.964 3.51 7.602.146A.5.5 0 0 0 7.249 0H.61a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3.864a.5.5 0 0 0-.147-.355M7.017 1.152l2.941 2.94h-2.94zm2.97 11.722h-8.75V1.125h4.718V4.5a.656.656 0 0 0 .656.656h3.375z\" /></svg>;\nexport default SvgHtml;"],"names":["SvgHtml","props"],"mappings":";;AACA,MAAMA,UAAUC,CAAAA,QAAAA,WAAAA,GAAS,KAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;;0BAAE,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAA+V,IAAC;gBAAK,MAAK;gBAAU,UAAS;gBAAU,GAAE;gBAAuY,UAAS;;0BAAY,IAAC;gBAAK,MAAK;gBAAU,GAAE;;;;AACt9B,aAAeD"}
1
+ {"version":3,"file":"components/FileTree/html.mjs","sources":["../../../src/components/FileTree/html.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgHtml = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={12} height={14} fill=\"none\" viewBox=\"0 0 12 14\" {...props}><path fill=\"#722ED1\" d=\"M6.076 7.58a.356.356 0 0 1 .646.299l-1.576 3.414a.356.356 0 0 1-.646-.298zM7.198 8.135a.356.356 0 0 0 0 .503l.8.799-.8.8a.356.356 0 1 0 .503.502l1.05-1.05a.356.356 0 0 0 0-.503l-1.05-1.05a.356.356 0 0 0-.503 0M4.024 8.135a.356.356 0 0 1 0 .503l-.799.799.8.8a.356.356 0 1 1-.504.502l-1.05-1.05a.356.356 0 0 1 0-.503l1.05-1.05a.356.356 0 0 1 .503 0\" /><path fill=\"#EFDBFF\" fillRule=\"evenodd\" d=\"M5.955 1.125V4.5a.656.656 0 0 0 .656.656h3.375v7.719h-8.75V1.125zm.121 6.456a.356.356 0 1 1 .646.298l-1.576 3.414a.356.356 0 1 1-.646-.298zm1.122.554a.356.356 0 0 0 0 .503l.8.799-.8.8a.356.356 0 1 0 .503.502l1.05-1.05a.356.356 0 0 0 0-.503l-1.05-1.05a.356.356 0 0 0-.503 0m-3.174.503a.356.356 0 1 0-.503-.503l-1.05 1.05a.356.356 0 0 0 0 .503l1.05 1.05a.355.355 0 1 0 .503-.502l-.799-.799z\" clipRule=\"evenodd\" /><path fill=\"#722ED1\" d=\"M10.964 3.51 7.602.146A.5.5 0 0 0 7.249 0H.61a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3.864a.5.5 0 0 0-.147-.355M7.017 1.152l2.941 2.94h-2.94zm2.97 11.722h-8.75V1.125h4.718V4.5a.656.656 0 0 0 .656.656h3.375z\" /></svg>;\nexport default SvgHtml;"],"names":["SvgHtml","props"],"mappings":";;AACA,MAAMA,UAAUC,CAAAA,QAAAA,WAAAA,GAAS,KAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;;0BAAE,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAA+V,IAAC;gBAAK,MAAK;gBAAU,UAAS;gBAAU,GAAE;gBAAuY,UAAS;;0BAAY,IAAC;gBAAK,MAAK;gBAAU,GAAE;;;;AACt9B,aAAeD"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/FileTree/image.mjs","sources":["webpack://@rsdoctor/components/./src/components/FileTree/image.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgImage = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={12} height={14} fill=\"none\" viewBox=\"0 0 12 14\" {...props}><path fill=\"#E6F7FF\" d=\"M6.733 4.5V1.125h-4.72v11.75h8.75V5.156H7.39a.656.656 0 0 1-.656-.656m-2.094.781a.625.625 0 1 1 0 1.25.625.625 0 0 1 0-1.25m4.625 4.594H3.515a.125.125 0 0 1-.098-.202l1.56-1.987a.125.125 0 0 1 .196 0l.642.819 1.216-1.55a.126.126 0 0 1 .199 0l2.132 2.718a.125.125 0 0 1-.098.202\" /><path fill=\"#1890FF\" d=\"M11.742 3.51 8.38.146A.5.5 0 0 0 8.026 0H1.39a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3.864a.5.5 0 0 0-.147-.355M7.795 1.152l2.94 2.94h-2.94zm2.969 11.722h-8.75V1.125h4.719V4.5a.656.656 0 0 0 .656.656h3.375z\" /><path fill=\"#1890FF\" d=\"m7.031 6.955-1.215 1.55-.643-.82a.125.125 0 0 0-.196 0l-1.56 1.988a.125.125 0 0 0 .099.202h5.748c.105 0 .163-.12.098-.202L7.23 6.955a.127.127 0 0 0-.199 0M4.014 5.906a.625.625 0 1 0 1.25 0 .625.625 0 0 0-1.25 0\" /></svg>;\nexport default SvgImage;"],"names":["SvgImage","props"],"mappings":";;AACA,MAAMA,WAAWC,CAAAA,QAAAA,WAAAA,GAAS,KAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;;0BAAE,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAA0R,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAAmO,IAAC;gBAAK,MAAK;gBAAU,GAAE;;;;AACtsB,uBAAeD"}
1
+ {"version":3,"file":"components/FileTree/image.mjs","sources":["../../../src/components/FileTree/image.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgImage = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={12} height={14} fill=\"none\" viewBox=\"0 0 12 14\" {...props}><path fill=\"#E6F7FF\" d=\"M6.733 4.5V1.125h-4.72v11.75h8.75V5.156H7.39a.656.656 0 0 1-.656-.656m-2.094.781a.625.625 0 1 1 0 1.25.625.625 0 0 1 0-1.25m4.625 4.594H3.515a.125.125 0 0 1-.098-.202l1.56-1.987a.125.125 0 0 1 .196 0l.642.819 1.216-1.55a.126.126 0 0 1 .199 0l2.132 2.718a.125.125 0 0 1-.098.202\" /><path fill=\"#1890FF\" d=\"M11.742 3.51 8.38.146A.5.5 0 0 0 8.026 0H1.39a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3.864a.5.5 0 0 0-.147-.355M7.795 1.152l2.94 2.94h-2.94zm2.969 11.722h-8.75V1.125h4.719V4.5a.656.656 0 0 0 .656.656h3.375z\" /><path fill=\"#1890FF\" d=\"m7.031 6.955-1.215 1.55-.643-.82a.125.125 0 0 0-.196 0l-1.56 1.988a.125.125 0 0 0 .099.202h5.748c.105 0 .163-.12.098-.202L7.23 6.955a.127.127 0 0 0-.199 0M4.014 5.906a.625.625 0 1 0 1.25 0 .625.625 0 0 0-1.25 0\" /></svg>;\nexport default SvgImage;"],"names":["SvgImage","props"],"mappings":";;AACA,MAAMA,WAAWC,CAAAA,QAAAA,WAAAA,GAAS,KAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;;0BAAE,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAA0R,IAAC;gBAAK,MAAK;gBAAU,GAAE;;0BAAmO,IAAC;gBAAK,MAAK;gBAAU,GAAE;;;;AACtsB,uBAAeD"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/FileTree/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/FileTree/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Space, theme } from 'antd';\nimport {\n FileOutlined,\n FolderOpenTwoTone,\n FolderTwoTone,\n RightOutlined,\n} from '@ant-design/icons';\nimport Tree, { TreeProps } from 'rc-tree';\nimport CSSIcon from 'src/common/svg/files/css.svg';\nimport HtmlIcon from 'src/common/svg/files/html.svg';\nimport IMGIcon from 'src/common/svg/files/image.svg';\nimport JSIcon from 'src/common/svg/files/js.svg';\nimport FileIcon from 'src/common/svg/files/unkown-file.svg';\n\nimport './index.sass';\nimport { useTheme } from '../../utils';\nimport path from 'path';\n\nconst { useToken } = theme;\n\nfunction getFileType(filename: string) {\n const extension = path.extname(filename).slice(1).toLowerCase();\n\n switch (extension) {\n case 'js':\n case 'jsx':\n case 'ts':\n case 'mjs':\n case 'cjs':\n case 'mts':\n case 'cts':\n return <JSIcon />;\n case 'tsx':\n return <FileIcon />;\n case 'css':\n case 'scss':\n case 'sass':\n case 'less':\n case 'styl':\n case 'stylus':\n return <CSSIcon />;\n case 'html':\n return <HtmlIcon />;\n case 'png':\n case 'jpg':\n case 'jpeg':\n case 'gif':\n case 'svg':\n case 'bmp':\n case 'webp':\n case 'ico':\n case 'apng':\n case 'avif':\n case 'tif':\n case 'tiff':\n case 'jfif':\n case 'pjpeg':\n case 'pjp':\n return <IMGIcon />;\n default:\n return <FileIcon />;\n }\n}\n\nexport function getFileCom(filename: string) {\n const fileIcon = getFileType(filename);\n return <div className=\"file-icon\">{fileIcon}</div>;\n}\n\nexport const FileTree: React.FC<Partial<TreeProps>> = (props) => {\n const { isDark } = useTheme();\n\n const { token } = useToken();\n const color = isDark ? token.colorWhite : token.colorText;\n const style = { fontSize: token.fontSize };\n\n return (\n <Tree\n checkable={false}\n selectable={true}\n switcherIcon={({ data, expanded }) => {\n if (data?.children) {\n return (\n <Space style={{ color }}>\n <RightOutlined\n twoToneColor={color}\n className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n style={style}\n />\n {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n </Space>\n );\n }\n if (data?.key && typeof data.key === 'string') {\n return getFileCom(data.key);\n }\n return <FileOutlined />;\n }}\n expandAction=\"click\"\n {...props}\n />\n );\n};\n"],"names":["useToken","theme","getFileType","filename","extension","path","JSIcon","FileIcon","CSSIcon","HtmlIcon","IMGIcon","getFileCom","fileIcon","FileTree","props","isDark","useTheme","token","color","style","Tree","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","FileOutlined"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,EAAEA,QAAQ,EAAE,GAAGC;AAErB,SAASC,YAAYC,QAAgB;IACnC,MAAMC,YAAYC,KAAK,OAAO,CAACF,UAAU,KAAK,CAAC,GAAG,WAAW;IAE7D,OAAQC;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACE,IAAMA,CAAAA;QAChB,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,aAAQA,CAAAA;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,KAAOA,CAAAA;QACjB,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,MAAQA,CAAAA;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,aAAOA,CAAAA;QACjB;YACE,OAAO,WAAP,GAAO,IAACH,aAAQA,CAAAA;IACpB;AACF;AAEO,SAASI,WAAWR,QAAgB;IACzC,MAAMS,WAAWV,YAAYC;IAC7B,OAAO,WAAP,GAAO,IAAC;QAAI,WAAU;kBAAaS;;AACrC;AAEO,MAAMC,WAAyC,CAACC;IACrD,MAAM,EAAEC,MAAM,EAAE,GAAGC;IAEnB,MAAM,EAAEC,KAAK,EAAE,GAAGjB;IAClB,MAAMkB,QAAQH,SAASE,MAAM,UAAU,GAAGA,MAAM,SAAS;IACzD,MAAME,QAAQ;QAAE,UAAUF,MAAM,QAAQ;IAAC;IAEzC,OAAO,WAAP,GACE,IAACG,SAAIA;QACH,WAAW;QACX,YAAY;QACZ,cAAc,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAE;YAC/B,IAAID,MAAM,UACR,OAAO,WAAP,GACE,KAACE,OAAKA;gBAAC,OAAO;oBAAEL;gBAAM;;kCACpB,IAACM,eAAaA;wBACZ,cAAcN;wBACd,WAAW,CAAC,yBAAyB,EAAEI,WAAW,oCAAoC,IAAI;wBAC1F,OAAOH;;oBAERG,WAAW,WAAXA,GAAW,IAACG,mBAAiBA,CAAAA,KAAAA,WAAAA,GAAM,IAACC,eAAaA,CAAAA;;;YAIxD,IAAIL,MAAM,OAAO,AAAoB,YAApB,OAAOA,KAAK,GAAG,EAC9B,OAAOV,WAAWU,KAAK,GAAG;YAE5B,OAAO,WAAP,GAAO,IAACM,cAAYA,CAAAA;QACtB;QACA,cAAa;QACZ,GAAGb,KAAK;;AAGf"}
1
+ {"version":3,"file":"components/FileTree/index.mjs","sources":["../../../src/components/FileTree/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Space, theme } from 'antd';\nimport {\n FileOutlined,\n FolderOpenTwoTone,\n FolderTwoTone,\n RightOutlined,\n} from '@ant-design/icons';\nimport Tree, { TreeProps } from 'rc-tree';\nimport CSSIcon from 'src/common/svg/files/css.svg';\nimport HtmlIcon from 'src/common/svg/files/html.svg';\nimport IMGIcon from 'src/common/svg/files/image.svg';\nimport JSIcon from 'src/common/svg/files/js.svg';\nimport FileIcon from 'src/common/svg/files/unkown-file.svg';\n\nimport './index.sass';\nimport { useTheme } from '../../utils';\nimport path from 'path';\n\nconst { useToken } = theme;\n\nfunction getFileType(filename: string) {\n const extension = path.extname(filename).slice(1).toLowerCase();\n\n switch (extension) {\n case 'js':\n case 'jsx':\n case 'ts':\n case 'mjs':\n case 'cjs':\n case 'mts':\n case 'cts':\n return <JSIcon />;\n case 'tsx':\n return <FileIcon />;\n case 'css':\n case 'scss':\n case 'sass':\n case 'less':\n case 'styl':\n case 'stylus':\n return <CSSIcon />;\n case 'html':\n return <HtmlIcon />;\n case 'png':\n case 'jpg':\n case 'jpeg':\n case 'gif':\n case 'svg':\n case 'bmp':\n case 'webp':\n case 'ico':\n case 'apng':\n case 'avif':\n case 'tif':\n case 'tiff':\n case 'jfif':\n case 'pjpeg':\n case 'pjp':\n return <IMGIcon />;\n default:\n return <FileIcon />;\n }\n}\n\nexport function getFileCom(filename: string) {\n const fileIcon = getFileType(filename);\n return <div className=\"file-icon\">{fileIcon}</div>;\n}\n\nexport const FileTree: React.FC<Partial<TreeProps>> = (props) => {\n const { isDark } = useTheme();\n\n const { token } = useToken();\n const color = isDark ? token.colorWhite : token.colorText;\n const style = { fontSize: token.fontSize };\n\n return (\n <Tree\n checkable={false}\n selectable={true}\n switcherIcon={({ data, expanded }) => {\n if (data?.children) {\n return (\n <Space style={{ color }}>\n <RightOutlined\n twoToneColor={color}\n className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n style={style}\n />\n {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n </Space>\n );\n }\n if (data?.key && typeof data.key === 'string') {\n return getFileCom(data.key);\n }\n return <FileOutlined />;\n }}\n expandAction=\"click\"\n {...props}\n />\n );\n};\n"],"names":["useToken","theme","getFileType","filename","extension","path","JSIcon","FileIcon","CSSIcon","HtmlIcon","IMGIcon","getFileCom","fileIcon","FileTree","props","isDark","useTheme","token","color","style","Tree","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","FileOutlined"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,EAAEA,QAAQ,EAAE,GAAGC;AAErB,SAASC,YAAYC,QAAgB;IACnC,MAAMC,YAAYC,KAAK,OAAO,CAACF,UAAU,KAAK,CAAC,GAAG,WAAW;IAE7D,OAAQC;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACE,IAAMA,CAAAA;QAChB,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,aAAQA,CAAAA;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,KAAOA,CAAAA;QACjB,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,MAAQA,CAAAA;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,aAAOA,CAAAA;QACjB;YACE,OAAO,WAAP,GAAO,IAACH,aAAQA,CAAAA;IACpB;AACF;AAEO,SAASI,WAAWR,QAAgB;IACzC,MAAMS,WAAWV,YAAYC;IAC7B,OAAO,WAAP,GAAO,IAAC;QAAI,WAAU;kBAAaS;;AACrC;AAEO,MAAMC,WAAyC,CAACC;IACrD,MAAM,EAAEC,MAAM,EAAE,GAAGC;IAEnB,MAAM,EAAEC,KAAK,EAAE,GAAGjB;IAClB,MAAMkB,QAAQH,SAASE,MAAM,UAAU,GAAGA,MAAM,SAAS;IACzD,MAAME,QAAQ;QAAE,UAAUF,MAAM,QAAQ;IAAC;IAEzC,OAAO,WAAP,GACE,IAACG,SAAIA;QACH,WAAW;QACX,YAAY;QACZ,cAAc,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAE;YAC/B,IAAID,MAAM,UACR,OAAO,WAAP,GACE,KAACE,OAAKA;gBAAC,OAAO;oBAAEL;gBAAM;;kCACpB,IAACM,eAAaA;wBACZ,cAAcN;wBACd,WAAW,CAAC,yBAAyB,EAAEI,WAAW,oCAAoC,IAAI;wBAC1F,OAAOH;;oBAERG,WAAW,WAAXA,GAAW,IAACG,mBAAiBA,CAAAA,KAAAA,WAAAA,GAAM,IAACC,eAAaA,CAAAA;;;YAIxD,IAAIL,MAAM,OAAO,AAAoB,YAApB,OAAOA,KAAK,GAAG,EAC9B,OAAOV,WAAWU,KAAK,GAAG;YAE5B,OAAO,WAAP,GAAO,IAACM,cAAYA,CAAAA;QACtB;QACA,cAAa;QACZ,GAAGb,KAAK;;AAGf"}