diff --git a/packages/devtools/src/app/components/assets/Treemap.vue b/packages/devtools/src/app/components/assets/Treemap.vue
new file mode 100644
index 00000000..5047ac78
--- /dev/null
+++ b/packages/devtools/src/app/components/assets/Treemap.vue
@@ -0,0 +1,249 @@
+
+
+
+ selectNode(x)"
+ />
+
+
+ {{ nodeHover.text }}
+
+
+
+
+
+
diff --git a/packages/devtools/src/app/components/chart/AssetNavBreadcrumb.vue b/packages/devtools/src/app/components/chart/AssetNavBreadcrumb.vue
new file mode 100644
index 00000000..24951dc2
--- /dev/null
+++ b/packages/devtools/src/app/components/chart/AssetNavBreadcrumb.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/devtools/src/app/components/chart/AssetTreemap.vue b/packages/devtools/src/app/components/chart/AssetTreemap.vue
new file mode 100644
index 00000000..129e193d
--- /dev/null
+++ b/packages/devtools/src/app/components/chart/AssetTreemap.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
diff --git a/packages/devtools/src/app/pages/session/[session]/assets.vue b/packages/devtools/src/app/pages/session/[session]/assets.vue
index 49654ab5..2c0ac940 100644
--- a/packages/devtools/src/app/pages/session/[session]/assets.vue
+++ b/packages/devtools/src/app/pages/session/[session]/assets.vue
@@ -21,9 +21,9 @@ const assetViewTpyes = [
icon: 'i-ph-folder-duotone',
},
{
- label: 'Flamechart',
- value: 'flamechart',
- icon: 'i-ph-chart-donut-duotone',
+ label: 'Treemap',
+ value: 'treemap',
+ icon: 'i-ph-checkerboard-duotone',
},
] as const
const rpc = useRpc()
@@ -62,8 +62,8 @@ function toggleDisplay(type: ClientSettings['assetViewType']) {
-
- WIP: Flamechart view
+
+
diff --git a/packages/devtools/src/app/state/settings.ts b/packages/devtools/src/app/state/settings.ts
index 7d27ab6e..4fbd5dce 100644
--- a/packages/devtools/src/app/state/settings.ts
+++ b/packages/devtools/src/app/state/settings.ts
@@ -13,7 +13,8 @@ export interface ClientSettings {
flowExpandAssets: boolean
flowShowAllTransforms: boolean
flowShowAllLoads: boolean
- assetViewType: 'list' | 'folder' | 'flamechart'
+ assetViewType: 'list' | 'folder' | 'treemap'
+ chartAnimation: boolean
}
export const settings = useLocalStorage(
@@ -30,6 +31,7 @@ export const settings = useLocalStorage(
flowShowAllTransforms: false,
flowShowAllLoads: false,
assetViewType: 'list',
+ chartAnimation: true,
},
{
mergeDefaults: true,
diff --git a/packages/devtools/src/app/types/assets.ts b/packages/devtools/src/app/types/assets.ts
new file mode 100644
index 00000000..d3e20c58
--- /dev/null
+++ b/packages/devtools/src/app/types/assets.ts
@@ -0,0 +1,8 @@
+import type { Asset as AssetInfo } from '@rolldown/debug'
+import type { TreeNode } from 'nanovis'
+
+export type AssetChartInfo = AssetInfo & {
+ path: string
+ type: 'folder' | 'file'
+}
+export type AssetChartNode = TreeNode