@kylincloud/flamegraph 0.35.8 → 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.
- package/README.md +157 -23
- package/dist/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.d.ts.map +1 -1
- package/dist/FlameGraph/FlameGraphComponent/Header.d.ts +0 -3
- package/dist/FlameGraph/FlameGraphComponent/Header.d.ts.map +1 -1
- package/dist/FlameGraph/FlameGraphComponent/index.d.ts +2 -0
- package/dist/FlameGraph/FlameGraphComponent/index.d.ts.map +1 -1
- package/dist/FlameGraph/FlameGraphRenderer.d.ts +2 -0
- package/dist/FlameGraph/FlameGraphRenderer.d.ts.map +1 -1
- package/dist/FlamegraphRenderer.d.ts +23 -5
- package/dist/FlamegraphRenderer.d.ts.map +1 -1
- package/dist/Toolbar.d.ts +4 -1
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/i18n.d.ts +2 -0
- package/dist/i18n.d.ts.map +1 -1
- package/dist/index.cjs.js +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +4 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.node.cjs.js +6 -1
- package/dist/index.node.cjs.js.map +1 -1
- package/dist/index.node.esm.js +8 -3
- package/dist/index.node.esm.js.map +1 -1
- package/package.json +4 -1
- package/src/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.module.css +69 -21
- package/src/FlameGraph/FlameGraphComponent/DiffLegendPaletteDropdown.tsx +57 -86
- package/src/FlameGraph/FlameGraphComponent/Header.tsx +23 -36
- package/src/FlameGraph/FlameGraphComponent/index.tsx +13 -9
- package/src/FlameGraph/FlameGraphRenderer.tsx +14 -11
- package/src/FlamegraphRenderer.tsx +103 -20
- package/src/SharedQueryInput.module.scss +5 -2
- package/src/Toolbar.module.scss +13 -0
- package/src/Toolbar.tsx +29 -3
- package/src/i18n.tsx +11 -2
package/README.md
CHANGED
|
@@ -15,9 +15,13 @@
|
|
|
15
15
|
- 🧭 丰富交互:
|
|
16
16
|
- 鼠标悬停 Tooltip(展示占比、采样数、绝对值等)
|
|
17
17
|
- 点击放大 / 回退、滚轮缩放、拖拽平移
|
|
18
|
-
-
|
|
18
|
+
- 右键菜单(折叠、重置视图、打开 Sandwich 视图等,**Sandwich 入口支持开关控制**)
|
|
19
19
|
- 🔍 函数名搜索 & 高亮
|
|
20
20
|
- 🎨 多种配色 / Diff 渐变色,适配普通与色弱模式
|
|
21
|
+
- 🌐 **内置 i18n 支持**:
|
|
22
|
+
- `locale="auto"` 时自动根据浏览器语言选择中英文
|
|
23
|
+
- 也可通过 `locale="en" | "zh-CN"` 强制指定语言
|
|
24
|
+
- 支持通过 `i18n` 精细覆盖各项文案
|
|
21
25
|
- 🧱 基于 **Flamebearer** 数据结构,兼容 Pyroscope / Grafana Pyroscope 的 profile 数据
|
|
22
26
|
- 🧩 以 React 组件的方式独立封装,可作为「黑盒区域」嵌入任意业务页面
|
|
23
27
|
|
|
@@ -130,50 +134,177 @@ export default function App() {
|
|
|
130
134
|
<div style={{ height: 600 }}>
|
|
131
135
|
<FlamegraphRenderer
|
|
132
136
|
profile={simpleProfile}
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
// type="single" // 'single' | 'diff'
|
|
136
|
-
// showToolbar={true}
|
|
137
|
-
// showCredit={false}
|
|
137
|
+
// 可选:主题
|
|
138
|
+
// colorMode="light" | "dark" | "kylin"
|
|
138
139
|
/>
|
|
139
140
|
</div>
|
|
140
141
|
)
|
|
141
142
|
}
|
|
142
143
|
```
|
|
143
144
|
|
|
144
|
-
### 3.3
|
|
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:
|
|
145
275
|
|
|
146
276
|
```tsx
|
|
147
277
|
import React from 'react'
|
|
148
278
|
import {
|
|
149
279
|
FlamegraphRenderer,
|
|
150
280
|
FlamegraphI18nProvider,
|
|
151
|
-
flamegraphDefaultMessages,
|
|
152
281
|
flamegraphZhCNMessages,
|
|
282
|
+
type FlamegraphMessages,
|
|
153
283
|
} from '@kylincloud/flamegraph'
|
|
154
284
|
|
|
285
|
+
const customMessages: Partial<FlamegraphMessages> = {
|
|
286
|
+
...flamegraphZhCNMessages,
|
|
287
|
+
viewFlamegraph: '火焰图(自定义文案)',
|
|
288
|
+
}
|
|
289
|
+
|
|
155
290
|
export default function App() {
|
|
156
291
|
return (
|
|
157
|
-
<FlamegraphI18nProvider
|
|
158
|
-
messages={{
|
|
159
|
-
// 可按需合并多语言
|
|
160
|
-
en: flamegraphDefaultMessages,
|
|
161
|
-
zhCN: flamegraphZhCNMessages,
|
|
162
|
-
}}
|
|
163
|
-
locale="zhCN"
|
|
164
|
-
>
|
|
292
|
+
<FlamegraphI18nProvider messages={customMessages}>
|
|
165
293
|
<div style={{ height: 600 }}>
|
|
166
|
-
<FlamegraphRenderer
|
|
294
|
+
<FlamegraphRenderer
|
|
295
|
+
profile={/* your profile */}
|
|
296
|
+
// 此时可以不再传 locale / i18n,由上层 Provider 决定
|
|
297
|
+
/>
|
|
167
298
|
</div>
|
|
168
299
|
</FlamegraphI18nProvider>
|
|
169
300
|
)
|
|
170
301
|
}
|
|
171
302
|
```
|
|
172
303
|
|
|
173
|
-
>
|
|
304
|
+
> 建议:
|
|
174
305
|
>
|
|
175
|
-
> *
|
|
176
|
-
> *
|
|
306
|
+
> * 简单场景:直接在 `FlamegraphRenderer` 上使用 `locale` / `i18n`。
|
|
307
|
+
> * 多个火焰图共享同一套深度自定义文案时,再考虑使用 `FlamegraphI18nProvider`。
|
|
177
308
|
|
|
178
309
|
---
|
|
179
310
|
|
|
@@ -205,7 +336,7 @@ type FlamebearerProfile = {
|
|
|
205
336
|
```
|
|
206
337
|
|
|
207
338
|
* `names`:所有符号(函数名)列表,`levels` 中通过索引引用
|
|
208
|
-
* `levels
|
|
339
|
+
* `levels`:二维数组,每一行对应火焰图中的一层
|
|
209
340
|
|
|
210
341
|
* **单视图**:每 4 个数字为一组
|
|
211
342
|
* **Diff 视图**:每组数字扩展为左/右 profile 的宽度及差分值(通常 7 个)
|
|
@@ -254,6 +385,8 @@ type FlamebearerProfile = {
|
|
|
254
385
|
|
|
255
386
|
`package.json` 中已将 `*.css` / `*.scss` 标记为 `sideEffects`,确保在使用方构建时不会被错误 Tree-Shaking 掉。
|
|
256
387
|
|
|
388
|
+
默认情况下,组件会包裹在一个自定义元素 `<pyro-flamegraph>` 内部,在 `flamegraph.scss` 中会对该元素设置基础字体、颜色等样式,方便在不同业务系统中保持一致的视觉基线。
|
|
389
|
+
|
|
257
390
|
如需与业务系统整体主题统一,可以:
|
|
258
391
|
|
|
259
392
|
* 在外层容器控制背景色、边框、圆角等
|
|
@@ -353,7 +486,8 @@ type FlamebearerProfile = {
|
|
|
353
486
|
|
|
354
487
|
* 包名与发布渠道:使用 `@kylincloud/flamegraph`
|
|
355
488
|
* 构建链路调整为 Rollup + PostCSS + Sass,自动注入样式,兼容 ESM / CJS / Node 侧入口
|
|
356
|
-
*
|
|
489
|
+
* 在类型声明、主题适配与 i18n 导出上进行了补充,便于在 TypeScript 环境与多语言环境中使用
|
|
490
|
+
* 增加了 Sandwich 视图入口开关 `sandwich`,满足不同产品界面对交互复杂度的差异化需求
|
|
357
491
|
* 后续可能增加针对麒麟项目的定制功能(如与内部监控体系联动)
|
|
358
492
|
|
|
359
493
|
如需回溯或对比实现细节,可以参考源码中的注释与 commit 记录。
|
|
@@ -373,7 +507,7 @@ type FlamebearerProfile = {
|
|
|
373
507
|
|
|
374
508
|
1. 所有 PR 保持 `pnpm run type-check` 与 `pnpm run lint` 通过
|
|
375
509
|
2. 尽量避免破坏现有公开 API;如有必要,务必在 `CHANGELOG.md` 与本 README 中标注
|
|
376
|
-
3. 对关键交互(如 Diff
|
|
510
|
+
3. 对关键交互(如 Diff 视图、搜索、高亮、Sandwich 视图)补充最小可复现示例或 demo 代码
|
|
377
511
|
|
|
378
512
|
---
|
|
379
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;
|
|
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":"
|
|
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;
|
|
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":"
|
|
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 {
|
|
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
|
-
|
|
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;
|
|
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
|
package/dist/Toolbar.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
package/dist/i18n.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|