{"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 './tooltips.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":";;;;;;;;;;;;AAsBA,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,gBAAAA;oBAAgBC,cAAAA;gBAAa;;2BAIzC,IAACkC,OAAKA,CAAAA;;AAId"}