@kylincloud/flamegraph 0.35.7 → 0.35.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 (33) hide show
  1. package/README.md +211 -62
  2. package/dist/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.d.ts.map +1 -1
  3. package/dist/FlameGraph/FlameGraphComponent/Header.d.ts +0 -3
  4. package/dist/FlameGraph/FlameGraphComponent/Header.d.ts.map +1 -1
  5. package/dist/FlameGraph/FlameGraphComponent/index.d.ts +2 -0
  6. package/dist/FlameGraph/FlameGraphComponent/index.d.ts.map +1 -1
  7. package/dist/FlameGraph/FlameGraphRenderer.d.ts +2 -0
  8. package/dist/FlameGraph/FlameGraphRenderer.d.ts.map +1 -1
  9. package/dist/FlamegraphRenderer.d.ts +23 -5
  10. package/dist/FlamegraphRenderer.d.ts.map +1 -1
  11. package/dist/Toolbar.d.ts +4 -1
  12. package/dist/Toolbar.d.ts.map +1 -1
  13. package/dist/i18n.d.ts +2 -0
  14. package/dist/i18n.d.ts.map +1 -1
  15. package/dist/index.cjs.js +4 -4
  16. package/dist/index.cjs.js.map +1 -1
  17. package/dist/index.esm.js +4 -4
  18. package/dist/index.esm.js.map +1 -1
  19. package/dist/index.node.cjs.js +6 -1
  20. package/dist/index.node.cjs.js.map +1 -1
  21. package/dist/index.node.esm.js +8 -3
  22. package/dist/index.node.esm.js.map +1 -1
  23. package/package.json +4 -2
  24. package/src/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.module.css +69 -21
  25. package/src/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.tsx +57 -86
  26. package/src/FlameGraph/FlameGraphComponent/Header.tsx +23 -36
  27. package/src/FlameGraph/FlameGraphComponent/index.tsx +13 -9
  28. package/src/FlameGraph/FlameGraphRenderer.tsx +14 -11
  29. package/src/FlamegraphRenderer.tsx +103 -20
  30. package/src/SharedQueryInput.module.scss +5 -2
  31. package/src/Toolbar.module.scss +13 -0
  32. package/src/Toolbar.tsx +29 -3
  33. package/src/i18n.tsx +11 -2
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # @kylincloud/flamegraph
2
2
 
3
- 一个可复用的 **火焰图 / 差分火焰图 React 组件库**,基于 Pyroscope 的 flamegraph 思路进行了工程化封装,方便在任意前端应用中渲染 CPU / 内存等采样型 Profiling 数据。:contentReference[oaicite:1]{index=1}
3
+ 一个可复用的 **火焰图 / 差分火焰图 React 组件库**,基于 Pyroscope 的 flamegraph 思路进行了工程化封装,方便在任意前端应用中渲染 CPU / 内存等采样型 Profiling 数据。
4
4
 
5
5
  > ⚠️ 说明
6
- > 本仓库主要服务于麒麟内部项目(如性能观测 / 智算平台等),API 在 0.x 阶段可能会有不兼容调整,请以当前版本导出的实际 API 为准。
6
+ > 本仓库主要服务于麒麟内部项目(如性能观测 / 智算平台等),API 在 0.x 阶段可能会有不兼容调整,请以当前版本导出的实际 API 为准。
7
+ > 从 `0.35.7` 起,构建方式已切换为 **Rollup + PostCSS + Sass**,并支持自动注入样式。
7
8
 
8
9
  ---
9
10
 
@@ -14,9 +15,13 @@
14
15
  - 🧭 丰富交互:
15
16
  - 鼠标悬停 Tooltip(展示占比、采样数、绝对值等)
16
17
  - 点击放大 / 回退、滚轮缩放、拖拽平移
17
- - 右键菜单(折叠、重置视图等)
18
+ - 右键菜单(折叠、重置视图、打开 Sandwich 视图等,**Sandwich 入口支持开关控制**)
18
19
  - 🔍 函数名搜索 & 高亮
19
20
  - 🎨 多种配色 / Diff 渐变色,适配普通与色弱模式
21
+ - 🌐 **内置 i18n 支持**:
22
+ - `locale="auto"` 时自动根据浏览器语言选择中英文
23
+ - 也可通过 `locale="en" | "zh-CN"` 强制指定语言
24
+ - 支持通过 `i18n` 精细覆盖各项文案
20
25
  - 🧱 基于 **Flamebearer** 数据结构,兼容 Pyroscope / Grafana Pyroscope 的 profile 数据
21
26
  - 🧩 以 React 组件的方式独立封装,可作为「黑盒区域」嵌入任意业务页面
22
27
 
@@ -37,18 +42,19 @@ pnpm add @kylincloud/flamegraph
37
42
  yarn add @kylincloud/flamegraph
38
43
  ````
39
44
 
40
- 本库对 React peer 依赖:
45
+ 本库对 React 及部分基础库有 peer 依赖,请确保工程中已安装并满足版本要求。例如:
41
46
 
42
47
  * `"react": ">=16.14.0"`
43
- * `"react-dom": ">=16.14.0"`
44
-
45
- 确保你的工程中 React 版本满足要求。
48
+ * `"react-dom": ">=16.14.0"`
49
+ * `"graphviz-react": "^1.2.5"`
50
+ * `"true-myth": "^5.1.2"`
51
+ * `"zod": "^3.11.6"`
46
52
 
47
53
  ---
48
54
 
49
55
  ## 3. 快速上手(React 示例)
50
56
 
51
- 当前包的入口文件导出了一些核心组件 / 工具函数 / i18n 能力,形态大致如下:
57
+ 当前包的入口文件导出了一些核心组件 / 工具函数 / i18n 能力,大致包括:
52
58
 
53
59
  * 组件与工具:
54
60
 
@@ -58,6 +64,7 @@ yarn add @kylincloud/flamegraph
58
64
  * `DefaultPalette`
59
65
  * `convertJaegerTraceToProfile`
60
66
  * `diffTwoProfiles`
67
+
61
68
  * i18n 导出:
62
69
 
63
70
  * `flamegraphDefaultMessages`
@@ -65,23 +72,18 @@ yarn add @kylincloud/flamegraph
65
72
  * `FlamegraphI18nProvider`
66
73
  * 类型 `FlamegraphMessages`
67
74
 
68
- ### 3.1 引入样式与组件
75
+ ### 3.1 引入组件(样式自动注入)
69
76
 
70
- 构建后会输出 ESM / CJS 两套 JS 以及对应的 CSS 文件:
77
+ `0.35.7` 起,本库在浏览器入口中会自动导入并注入全局样式:
71
78
 
72
- * `dist/index.esm.js`(ESM,`"module"`)
73
- * `dist/index.cjs.js`(CJS,`"main"`)
74
- * `dist/index.esm.css` / `dist/index.cjs.css`(样式)
79
+ * 源码中 `src/index.tsx` 内部已执行:`import './sass/flamegraph.scss'`
80
+ * Rollup 使用 `rollup-plugin-postcss` 将 Sass 编译为 CSS,并在运行时通过 `<style>` 标签自动注入
75
81
 
76
- 在业务工程中建议按 ESM 方式引入:
82
+ 因此,在业务工程中只需要正常导入组件即可,**无需再单独引入 CSS 文件**:
77
83
 
78
84
  ```tsx
79
85
  import React from 'react'
80
86
 
81
- // 必须:引入打包好的 CSS(推荐使用 ESM 版本)
82
- import '@kylincloud/flamegraph/dist/index.esm.css'
83
-
84
- // 典型用法:只用渲染器
85
87
  import {
86
88
  FlamegraphRenderer,
87
89
  Flamegraph,
@@ -97,15 +99,13 @@ import {
97
99
 
98
100
  > ✅ 提示:
99
101
  >
100
- > * CSS 路径请使用 `dist/index.esm.css` 或 `dist/index.cjs.css`,与当前打包结果一致。
101
- > * 若你的打包器不支持从 `exports` CSS 子路径,可使用显式路径
102
- > `@kylincloud/flamegraph/dist/index.esm.css`。
102
+ > * 对于浏览器端渲染:只要导入任意来自 `@kylincloud/flamegraph` 的组件,样式就会自动注入。
103
+ > * 对于 SSR 场景:Node 侧入口为 `dist/index.node.cjs.js` / `dist/index.node.esm.js`,不会在服务端注入样式,CSS 注入会在浏览器端 hydration 时发生。
103
104
 
104
105
  ### 3.2 最小可用示例:渲染单个 Flamebearer profile
105
106
 
106
107
  ```tsx
107
108
  import React from 'react'
108
- import '@kylincloud/flamegraph/dist/index.esm.css'
109
109
  import { FlamegraphRenderer } from '@kylincloud/flamegraph'
110
110
 
111
111
  const simpleProfile = {
@@ -134,57 +134,183 @@ export default function App() {
134
134
  <div style={{ height: 600 }}>
135
135
  <FlamegraphRenderer
136
136
  profile={simpleProfile}
137
- // 典型配置示例(具体以实现为准)
138
- // viewType="both" // 'flamegraph' | 'table' | 'both' | 'sandwich'
139
- // type="single" // 'single' | 'diff'
140
- // showToolbar={true}
141
- // showCredit={false}
137
+ // 可选:主题
138
+ // colorMode="light" | "dark" | "kylin"
142
139
  />
143
140
  </div>
144
141
  )
145
142
  }
146
143
  ```
147
144
 
148
- ### 3.3 使用 i18n 包装
145
+ ### 3.3 语言与 i18n 使用方式
146
+
147
+ `FlamegraphRenderer` 内部已经内置了 i18n 能力,支持两种层级的使用方式。
148
+
149
+ #### 3.3.1 推荐:直接使用 `locale` / `i18n` props
150
+
151
+ 组件对外暴露的部分类型如下:
152
+
153
+ ```ts
154
+ type FlamegraphLocale = 'auto' | 'en' | 'zh-CN'
155
+
156
+ type FlamegraphRendererProps = {
157
+ // ...
158
+
159
+ /** 语言设置(不传等价于 'auto') */
160
+ locale?: FlamegraphLocale
161
+
162
+ /**
163
+ * 文案覆盖:
164
+ * - 显式传入 i18n 时,优先使用这一套(不再根据 locale 推断)
165
+ * - 不传时,根据 locale / 浏览器语言自动选择内置英文 / 中文
166
+ */
167
+ i18n?: Partial<FlamegraphMessages>
168
+
169
+ /**
170
+ * 是否开启三明治视图入口(右键菜单中的 “Open in Sandwich View”)
171
+ * - 默认 true
172
+ * - 设为 false 时将隐藏右键菜单中的 Sandwich 入口,
173
+ * 不影响 Toolbar 中的视图切换(仍可切换到 Sandwich 视图)
174
+ */
175
+ sandwich?: boolean
176
+ }
177
+ ```
178
+
179
+ 典型用法:
180
+
181
+ ```tsx
182
+ import React from 'react'
183
+ import {
184
+ FlamegraphRenderer,
185
+ flamegraphZhCNMessages,
186
+ } from '@kylincloud/flamegraph'
187
+
188
+ // 1)默认:自动根据浏览器语言选择中英文
189
+ function AutoLocaleExample({ profile }: { profile: any }) {
190
+ return (
191
+ <FlamegraphRenderer
192
+ profile={profile}
193
+ // 不传 locale / i18n 时等价于 locale="auto"
194
+ />
195
+ )
196
+ }
197
+
198
+ // 2)强制中文
199
+ function ZhCNExample({ profile }: { profile: any }) {
200
+ return (
201
+ <FlamegraphRenderer
202
+ profile={profile}
203
+ locale="zh-CN"
204
+ />
205
+ )
206
+ }
207
+
208
+ // 3)强制英文
209
+ function EnExample({ profile }: { profile: any }) {
210
+ return (
211
+ <FlamegraphRenderer
212
+ profile={profile}
213
+ locale="en"
214
+ />
215
+ )
216
+ }
217
+
218
+ // 4)在中文基础上局部改写某些文案
219
+ function OverrideExample({ profile }: { profile: any }) {
220
+ return (
221
+ <FlamegraphRenderer
222
+ profile={profile}
223
+ locale="zh-CN"
224
+ i18n={{
225
+ viewFlamegraph: '火焰图视图',
226
+ more: '更多操作',
227
+ }}
228
+ />
229
+ )
230
+ }
231
+ ```
232
+
233
+ > 规则说明:
234
+ >
235
+ > * 若 **显式传入 `i18n`**,则以 `i18n` 为准,不再根据 `locale` / 浏览器语言推断。
236
+ > * 若未传入 `i18n`:
237
+ >
238
+ > * `locale` 未指定时视为 `"auto"`,组件会读取 `navigator.language` 进行选择:
239
+ >
240
+ > * `zh*` → 使用内置中文文案 `flamegraphZhCNMessages`
241
+ > * 其他 → 使用内置英文文案 `flamegraphDefaultMessages`
242
+
243
+ ### 3.4 Sandwich 视图入口开关
244
+
245
+ 默认情况下,右键菜单会提供「Open in Sandwich View」入口,用于快速从当前函数跳转到 **Sandwich 视图(Callers / Callees)**。
246
+
247
+ 可以通过 `sandwich` 属性控制该入口是否启用:
248
+
249
+ ```tsx
250
+ // 默认:右键菜单中包含 “Open in Sandwich View”
251
+ <FlamegraphRenderer
252
+ profile={profile}
253
+ />
254
+
255
+ // 关闭:隐藏右键菜单中的 Sandwich 入口(Toolbar 中的视图切换仍可用)
256
+ <FlamegraphRenderer
257
+ profile={profile}
258
+ sandwich={false}
259
+ />
260
+ ```
261
+
262
+ > 说明:
263
+ >
264
+ > * `sandwich` 只控制「右键菜单入口」,不会关闭整个 Sandwich 视图能力。
265
+ > * 当 `sandwich={false}` 时:
266
+ >
267
+ > * 右键菜单不再显示 「Open in Sandwich View」
268
+ > * 如 Toolbar 中仍暴露视图切换控件,用户依然可以手动切换到 `Sandwich` 视图。
269
+
270
+ ### 3.5 高级用法:手动使用 `FlamegraphI18nProvider`
271
+
272
+ 在绝大部分场景,**只使用 `FlamegraphRenderer` 的 `locale` / `i18n` 即可**,它内部已经自动套了一层 `FlamegraphI18nProvider`。
273
+
274
+ 如果希望在**更高层共享同一套翻译配置**(例如一整个页面内的多处 Flamegraph 统一使用某套覆盖文案),也可以手动使用 Provider:
149
275
 
150
276
  ```tsx
151
277
  import React from 'react'
152
- import '@kylincloud/flamegraph/dist/index.esm.css'
153
278
  import {
154
279
  FlamegraphRenderer,
155
280
  FlamegraphI18nProvider,
156
- flamegraphDefaultMessages,
157
281
  flamegraphZhCNMessages,
282
+ type FlamegraphMessages,
158
283
  } from '@kylincloud/flamegraph'
159
284
 
285
+ const customMessages: Partial<FlamegraphMessages> = {
286
+ ...flamegraphZhCNMessages,
287
+ viewFlamegraph: '火焰图(自定义文案)',
288
+ }
289
+
160
290
  export default function App() {
161
291
  return (
162
- <FlamegraphI18nProvider
163
- messages={{
164
- // 可按需合并多语言
165
- en: flamegraphDefaultMessages,
166
- zhCN: flamegraphZhCNMessages,
167
- }}
168
- locale="zhCN"
169
- >
292
+ <FlamegraphI18nProvider messages={customMessages}>
170
293
  <div style={{ height: 600 }}>
171
- <FlamegraphRenderer profile={/* your profile */} />
294
+ <FlamegraphRenderer
295
+ profile={/* your profile */}
296
+ // 此时可以不再传 locale / i18n,由上层 Provider 决定
297
+ />
172
298
  </div>
173
299
  </FlamegraphI18nProvider>
174
300
  )
175
301
  }
176
302
  ```
177
303
 
178
- > 建议:
304
+ > 建议:
179
305
  >
180
- > * 将容器高度固定(如 400–800px),避免页面滚动条与内部滚动冲突
181
- > * App 入口处只需引入一次 CSS;组件可在各处复用
306
+ > * 简单场景:直接在 `FlamegraphRenderer` 上使用 `locale` / `i18n`。
307
+ > * 多个火焰图共享同一套深度自定义文案时,再考虑使用 `FlamegraphI18nProvider`。
182
308
 
183
309
  ---
184
310
 
185
311
  ## 4. 数据格式说明(Flamebearer 简要约定)
186
312
 
187
- 组件默认消费的数据结构与 Pyroscope 的 **Flamebearer** 格式保持兼容,整体上可理解为:
313
+ 组件默认消费的数据结构与 Pyroscope 的 **Flamebearer** 格式保持兼容,可以理解为:
188
314
 
189
315
  ```ts
190
316
  type FlamebearerProfile = {
@@ -210,7 +336,7 @@ type FlamebearerProfile = {
210
336
  ```
211
337
 
212
338
  * `names`:所有符号(函数名)列表,`levels` 中通过索引引用
213
- * `levels`:二维数组,每一行对应火焰图中的一层;
339
+ * `levels`:二维数组,每一行对应火焰图中的一层
214
340
 
215
341
  * **单视图**:每 4 个数字为一组
216
342
  * **Diff 视图**:每组数字扩展为左/右 profile 的宽度及差分值(通常 7 个)
@@ -251,11 +377,15 @@ type FlamebearerProfile = {
251
377
 
252
378
  ## 6. 样式与主题
253
379
 
254
- * 核心样式文件为:`src/sass/flamegraph.scss`,打包后输出为:
380
+ * 核心样式源文件为:`src/sass/flamegraph.scss`
381
+ * 浏览器入口 `src/index.tsx` 中默认会导入该样式文件:
382
+
383
+ * `import './sass/flamegraph.scss'`
384
+ * Rollup + PostCSS + Sass 会在构建时将其编译为 CSS,并在运行时自动注入 `<style>` 标签,不再额外生成独立的 `dist/index.css` / `dist/index.esm.css` 等文件。
385
+
386
+ `package.json` 中已将 `*.css` / `*.scss` 标记为 `sideEffects`,确保在使用方构建时不会被错误 Tree-Shaking 掉。
255
387
 
256
- * `dist/index.esm.css`
257
- * `dist/index.cjs.css`
258
- * 打包配置中已将 `*.css` / `*.scss` 标记为 `sideEffects`,确保在使用方构建时不会被错误 Tree-Shaking 掉。
388
+ 默认情况下,组件会包裹在一个自定义元素 `<pyro-flamegraph>` 内部,在 `flamegraph.scss` 中会对该元素设置基础字体、颜色等样式,方便在不同业务系统中保持一致的视觉基线。
259
389
 
260
390
  如需与业务系统整体主题统一,可以:
261
391
 
@@ -275,9 +405,10 @@ type FlamebearerProfile = {
275
405
  {
276
406
  "scripts": {
277
407
  "clean": "rm -rf dist",
278
- "build": "pnpm run clean && pnpm run build:types && pnpm run build:js",
408
+ "build": "pnpm run clean && pnpm run build:types && pnpm run build:js && pnpm run build:assets",
279
409
  "build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly",
280
- "build:js": "node scripts/build-esbuild.mjs",
410
+ "build:js": "rollup -c",
411
+ "build:assets": "cp src/logo-v3-small.svg dist/logo-v3-small.svg || true",
281
412
  "type-check": "tsc -p tsconfig.build.json --noEmit",
282
413
  "lint": "eslint ./ --cache --fix"
283
414
  }
@@ -292,18 +423,31 @@ type FlamebearerProfile = {
292
423
 
293
424
  输出:`dist/**/*.d.ts`(由 `tsconfig.build.json` 控制)。
294
425
 
295
- * **构建 JS & CSS**
426
+ * **构建 JS & 样式**
296
427
 
297
428
  ```bash
298
429
  pnpm run build:js
299
430
  ```
300
431
 
301
- 基于 esbuild + sass 插件,将 TSX + Sass 打包成:
432
+ 基于 **Rollup + PostCSS + Sass** 构建,生成:
302
433
 
303
- * `dist/index.esm.js`(ESM 入口,对应 `module`)
304
- * `dist/index.cjs.js`(CJS 入口,对应 `main`)
305
- * `dist/index.esm.css`
306
- * `dist/index.cjs.css`
434
+ * 浏览器入口:
435
+
436
+ * `dist/index.esm.js`(ESM 入口,对应 `"module"`)
437
+ * `dist/index.cjs.js`(CJS 入口)
438
+ * 内部包含自动注入样式逻辑
439
+ * Node 入口:
440
+
441
+ * `dist/index.node.cjs.js`(CJS,给 Node / SSR 使用)
442
+ * `dist/index.node.esm.js`(ESM)
443
+
444
+ * **拷贝静态资源**
445
+
446
+ ```bash
447
+ pnpm run build:assets
448
+ ```
449
+
450
+ 将 `src/logo-v3-small.svg` 拷贝到 `dist/`,以便在组件内部引用。
307
451
 
308
452
  * **完整构建**
309
453
 
@@ -311,7 +455,7 @@ type FlamebearerProfile = {
311
455
  pnpm run build
312
456
  ```
313
457
 
314
- 等价于:清理 `dist` → 生成类型声明 → 生成 JS/CSS。
458
+ 等价于:清理 `dist` → 生成类型声明 → 生成 JS(含样式)→ 拷贝静态资源。
315
459
 
316
460
  * **类型检查**
317
461
 
@@ -325,10 +469,13 @@ type FlamebearerProfile = {
325
469
  pnpm run lint
326
470
  ```
327
471
 
328
- > ✅ 建议:
472
+ > ✅ 说明:
473
+ >
474
+ > * 旧版本使用的 esbuild 构建脚本已移除,当前仓库仅保留 rollup 方案,避免多套构建链路带来的维护成本。
475
+ > * 若需要在 CI 中校验,可至少执行:
329
476
  >
330
- > * 在 CI 中至少执行 `pnpm run build` 与 `pnpm run type-check`,保证包的构建与类型安全。
331
- > * 本项目使用 TypeScript 5.x 与 esbuild 进行打包,建议 Node 版本与麒麟内部前端工程保持一致。
477
+ > * `pnpm run type-check`
478
+ > * `pnpm run build`
332
479
 
333
480
  ---
334
481
 
@@ -338,7 +485,9 @@ type FlamebearerProfile = {
338
485
  * 主要差异点集中在:
339
486
 
340
487
  * 包名与发布渠道:使用 `@kylincloud/flamegraph`
341
- * 构建链路与样式组织适配麒麟内部前端工程(ESM/CJS 双入口、CSS 独立导出)
488
+ * 构建链路调整为 Rollup + PostCSS + Sass,自动注入样式,兼容 ESM / CJS / Node 侧入口
489
+ * 在类型声明、主题适配与 i18n 导出上进行了补充,便于在 TypeScript 环境与多语言环境中使用
490
+ * 增加了 Sandwich 视图入口开关 `sandwich`,满足不同产品界面对交互复杂度的差异化需求
342
491
  * 后续可能增加针对麒麟项目的定制功能(如与内部监控体系联动)
343
492
 
344
493
  如需回溯或对比实现细节,可以参考源码中的注释与 commit 记录。
@@ -358,7 +507,7 @@ type FlamebearerProfile = {
358
507
 
359
508
  1. 所有 PR 保持 `pnpm run type-check` 与 `pnpm run lint` 通过
360
509
  2. 尽量避免破坏现有公开 API;如有必要,务必在 `CHANGELOG.md` 与本 README 中标注
361
- 3. 对关键交互(如 Diff 视图、搜索、高亮)补充最小可复现示例或 demo 代码
510
+ 3. 对关键交互(如 Diff 视图、搜索、高亮、Sandwich 视图)补充最小可复现示例或 demo 代码
362
511
 
363
512
  ---
364
513
 
@@ -1 +1 @@
1
- {"version":3,"file":"DiffLegendPaletteDropdown.d.ts","sourceRoot":"","sources":["../../../src/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGL,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAcxB,UAAU,8BAA8B;IACtC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,yBAAyB,UAC7B,8BAA8B,4CA+DtC,CAAC;AAqCF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"DiffLegendPaletteDropdown.d.ts","sourceRoot":"","sources":["../../../src/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGL,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAexB,UAAU,8BAA8B;IAEtC,OAAO,EAAE,iBAAiB,CAAC;IAE3B,QAAQ,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,yBAAyB,UAC7B,8BAA8B,4CAkEtC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -1,10 +1,7 @@
1
1
  import { Flamebearer } from '../../models';
2
- import { FlamegraphPalette } from './colorPalette';
3
2
  interface HeaderProps {
4
3
  format: Flamebearer['format'];
5
4
  units: Flamebearer['units'];
6
- palette: FlamegraphPalette;
7
- setPalette: (p: FlamegraphPalette) => void;
8
5
  toolbarVisible?: boolean;
9
6
  }
10
7
  export default function Header(props: HeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/FlameGraph/FlameGraphComponent/Header.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,UAAU,WAAW;IACnB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW,2CAwDhD"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/FlameGraph/FlameGraphComponent/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,UAAU,WAAW;IACnB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW,2CA8ChD"}
@@ -31,6 +31,8 @@ interface FlamegraphProps {
31
31
  headerVisible?: boolean;
32
32
  disableClick?: boolean;
33
33
  showSingleLevel?: boolean;
34
+ /** 是否显示右键菜单中的「打开 Sandwich 视图」项,默认 true */
35
+ enableSandwichView?: boolean;
34
36
  }
35
37
  export default function FlameGraphComponent(props: FlamegraphProps): import("react/jsx-runtime").JSX.Element;
36
38
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/FlameGraph/FlameGraphComponent/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,UAAU,MAAM,cAAc,CAAC;AAStC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAsB,MAAM,uBAAuB,CAAC;AAIrE,UAAU,eAAe;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IACvD,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAEpC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,eAAe,2CAiWjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/FlameGraph/FlameGraphComponent/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,UAAU,MAAM,cAAc,CAAC;AAStC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAsB,MAAM,uBAAuB,CAAC;AAIrE,UAAU,eAAe;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IACvD,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAEpC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,eAAe,2CAkWjE"}
@@ -29,6 +29,7 @@ export interface FlamegraphRendererProps {
29
29
  id: string;
30
30
  };
31
31
  children?: ReactNode;
32
+ enableSandwichView?: boolean;
32
33
  }
33
34
  interface FlamegraphRendererState {
34
35
  /** A dirty flamegraph refers to a flamegraph where its original state can be reset */
@@ -80,6 +81,7 @@ declare class FlameGraphRenderer extends Component<FlamegraphRendererProps, Flam
80
81
  updateFitMode: (newFitMode: FitModes) => void;
81
82
  isDirty: () => boolean;
82
83
  shouldShowToolbar(): boolean;
84
+ handleSetPalette: (p: typeof DefaultPalette) => void;
83
85
  render: () => import("react/jsx-runtime").JSX.Element;
84
86
  }
85
87
  export default FlameGraphRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"FlameGraphRenderer.d.ts","sourceRoot":"","sources":["../../src/FlameGraph/FlameGraphRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlameGraphRenderer.d.ts","sourceRoot":"","sources":["../../src/FlameGraph/FlameGraphRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,37 @@
1
1
  import React from 'react';
2
- import { FlamegraphRendererProps as InnerFlamegraphRendererProps } from './FlameGraph/FlameGraphRenderer';
2
+ import type { FlamegraphRendererProps as InnerFlamegraphRendererProps } from './FlameGraph/FlameGraphRenderer';
3
3
  import './sass/flamegraph.scss';
4
- import { type FlamegraphMessages } from './i18n';
4
+ import type { FlamegraphMessages } from './i18n';
5
+ /** 对外暴露的 locale 类型 */
6
+ export type FlamegraphLocale = 'auto' | 'en' | 'zh-CN';
5
7
  export type FlamegraphRendererProps = Omit<InnerFlamegraphRendererProps, 'showPyroscopeLogo'> & {
6
8
  /** 颜色模式:原生 light/dark + 新增 kylin */
7
9
  colorMode?: 'light' | 'dark' | 'kylin';
8
- /** 文案覆盖(不传就是内置默认英文/中文) */
10
+ /**
11
+ * 文案覆盖:
12
+ * - 如果显式传入 i18n,则优先使用这一套(不再根据 locale 推断)
13
+ * - 如果不传,则根据 locale(或浏览器语言)自动选择内置英文 / 中文
14
+ */
9
15
  i18n?: Partial<FlamegraphMessages>;
16
+ /**
17
+ * 语言设置:
18
+ * - 不传时等价于 "auto"
19
+ * - "auto" 表示根据浏览器语言(navigator.language)自动选择
20
+ * - "en" / "zh-CN" 为强制指定
21
+ */
22
+ locale?: FlamegraphLocale;
23
+ /** 是否开启三明治视图菜单 */
24
+ sandwich?: boolean;
10
25
  };
11
26
  declare global {
12
27
  namespace JSX {
13
28
  interface IntrinsicElements {
14
- 'pyro-flamegraph': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
29
+ 'pyro-flamegraph': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
30
+ profile?: any;
31
+ };
15
32
  }
16
33
  }
17
34
  }
18
- export declare const FlamegraphRenderer: React.FC<FlamegraphRendererProps>;
35
+ declare const FlamegraphRenderer: React.FC<FlamegraphRendererProps>;
36
+ export { FlamegraphRenderer };
19
37
  //# sourceMappingURL=FlamegraphRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlamegraphRenderer.d.ts","sourceRoot":"","sources":["../src/FlamegraphRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAA2B,EACzB,uBAAuB,IAAI,4BAA4B,EACxD,MAAM,iCAAiC,CAAC;AACzC,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,QAAQ,CAAC;AAOhB,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,4BAA4B,EAC5B,mBAAmB,CACpB,GAAG;IACF,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACvC,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACpC,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CACxC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EACjC,WAAW,CACZ,CAAC;SACH;KACF;CACF;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqBhE,CAAC"}
1
+ {"version":3,"file":"FlamegraphRenderer.d.ts","sourceRoot":"","sources":["../src/FlamegraphRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EACV,uBAAuB,IAAI,4BAA4B,EACxD,MAAM,iCAAiC,CAAC;AAEzC,OAAO,wBAAwB,CAAC;AAOhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAOjD,sBAAsB;AACtB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,4BAA4B,EAC5B,mBAAmB,CACpB,GAAG;IACF,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAEvC;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,kBAAkB;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CACxC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EACjC,WAAW,CACZ,GAAG;gBACF,OAAO,CAAC,EAAE,GAAG,CAAC;aACf,CAAC;SACH;KACF;CACF;AA2DD,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoBzD,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/Toolbar.d.ts CHANGED
@@ -3,6 +3,7 @@ import { Maybe } from 'true-myth';
3
3
  import { FitModes } from './fitMode/fitMode';
4
4
  import type { ViewTypes } from './FlameGraph/FlameGraphComponent/viewTypes';
5
5
  import type { FlamegraphRendererProps } from './FlameGraph/FlameGraphRenderer';
6
+ import { FlamegraphPalette } from './FlameGraph/FlameGraphComponent/colorPalette';
6
7
  export interface ProfileHeaderProps {
7
8
  view: ViewTypes;
8
9
  enableChangingDisplay?: boolean;
@@ -25,7 +26,9 @@ export interface ProfileHeaderProps {
25
26
  }>;
26
27
  onFocusOnSubtree: (i: number, j: number) => void;
27
28
  sharedQuery?: FlamegraphRendererProps['sharedQuery'];
29
+ palette?: FlamegraphPalette;
30
+ setPalette?: (p: FlamegraphPalette) => void;
28
31
  }
29
- declare const Toolbar: React.MemoExoticComponent<({ view, handleSearchChange, highlightQuery, isFlamegraphDirty, reset, updateFitMode, fitMode, updateView, selectedNode, onFocusOnSubtree, flamegraphType, enableChangingDisplay, sharedQuery, ExportData, }: ProfileHeaderProps) => import("react/jsx-runtime").JSX.Element>;
32
+ declare const Toolbar: React.MemoExoticComponent<({ view, handleSearchChange, highlightQuery, isFlamegraphDirty, reset, updateFitMode, fitMode, updateView, selectedNode, onFocusOnSubtree, flamegraphType, enableChangingDisplay, sharedQuery, ExportData, palette, setPalette, }: ProfileHeaderProps) => import("react/jsx-runtime").JSX.Element>;
30
33
  export default Toolbar;
31
34
  //# sourceMappingURL=Toolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,SAAS,EAOV,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAQlC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAyF/E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,kEAAkE;IAClE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,QAAQ,CAAC;IAClB,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;CACtD;AASD,QAAA,MAAM,OAAO,0OAgBR,kBAAkB,6CAwItB,CAAC;AA4KF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,SAAS,EAOV,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAQlC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AA0FlF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,kEAAkE;IAClE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,QAAQ,CAAC;IAClB,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAGrD,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC7C;AASD,QAAA,MAAM,OAAO,+PAkBR,kBAAkB,6CA0JtB,CAAC;AA4KF,eAAe,OAAO,CAAC"}
package/dist/i18n.d.ts CHANGED
@@ -40,6 +40,8 @@ export type FlamegraphMessages = {
40
40
  diffLegendSelectPalette: string;
41
41
  paletteDefaultName: string;
42
42
  paletteColorBlindName: string;
43
+ paletteDefaultDesc: string;
44
+ paletteColorBlindDesc: string;
43
45
  searchPlaceholder: string;
44
46
  syncSearchBars: string;
45
47
  unsyncSearchBars: string;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAE/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IAGb,YAAY,EAAE,MAAM,CAAC;IAGrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAGpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAGtD,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IAGrC,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IAGb,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAG9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAkGF,eAAO,MAAM,eAAe,EAAE,kBAgD7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,kBAiD1B,CAAC;AAIF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiBxE,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAAgC,CAAC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAE/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IAGb,YAAY,EAAE,MAAM,CAAC;IAGrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAGpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAGtD,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IAGrC,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IAGb,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAE9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAG9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAkGF,eAAO,MAAM,eAAe,EAAE,kBAmD7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,kBAoD1B,CAAC;AAIF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiBxE,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAAgC,CAAC"}