Skip to content

Commit dc0e0c4

Browse files
committed
## 1.2.0
### Changed in 1.2.0 - Stabilized features introduced in previous releases for a more reliable interactive diagram experience. - Interactive diagrams now always fit and center themselves after rendering, theme updates, and Reset View actions. - Removed the `fitToContainer` option and its runtime update event; automatic fitting is now the standard interactive behavior. - Updated the English, Turkish, and Chinese documentation to describe automatic fitting without a separate configuration option. ### Fixed in 1.2.0 - Restored the container-centered transform origin required by the fitting calculation, fixing diagrams that were incorrectly scaled or positioned in 1.1.32. - Fixed sluggish diagram dragging by accounting for the fitted base scale, removing mousemove frame throttling, and stopping zoom transitions when a drag begins.
1 parent a94f5d4 commit dc0e0c4

19 files changed

Lines changed: 357 additions & 611 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 410 deletions
Large diffs are not rendered by default.

docs/.vitepress/theme/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ export default {
4343
theme: isDark.value ? 'dark' : 'forest',
4444
startOnLoad: false,
4545
securityLevel: 'strict',
46-
fitToContainer: true,
4746
});
4847
mermaidRenderer.setToolbar({
4948
showLanguageLabel: false,

docs/content/en/guide/configuration.md

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,31 +38,21 @@ const mermaidRenderer = createMermaidRenderer({
3838
| `gantt` | Customize date formatting or axis visibility when embedding project timelines. |
3939
| `securityLevel` | Mermaid security mode passed through to `mermaid.initialize()`. Use the strictness level that matches your content policy. **Changed:** the default is now `'strict'`, which disables inline HTML inside diagrams. Use `'loose'` only when you fully trust all diagram sources. |
4040
| `static` | When `true`, renders a plain SVG without the toolbar, zoom, pan, fullscreen, download, or keyboard controls. Theme updates continue to re-render the SVG. |
41-
| `fitToContainer` | When `true`, scales each interactive diagram to fit the available width and height, then centers it after rendering. Defaults to `true`. |
4241

4342
Calling `createMermaidRenderer()` again with a new Mermaid config
4443
**deep-merges** the config into the existing singleton (nested objects like
4544
`flowchart` are merged rather than replaced) and dispatches a runtime update to
4645
mounted diagrams.
4746

48-
## Fit and center diagrams
47+
## Automatic fit and centering
4948

50-
`fitToContainer` is enabled by default and sizes each interactive diagram to the
51-
largest scale that fits inside its `.diagram-wrapper`, preserving its aspect
52-
ratio and centering it in both directions. Set it to `false` to keep the
53-
unscaled 100% view.
49+
Every interactive diagram is automatically sized to the largest scale that fits
50+
inside its `.diagram-wrapper`, preserving its aspect ratio and centering it in
51+
both directions.
5452

55-
```typescript
56-
createMermaidRenderer({
57-
fitToContainer: true,
58-
});
59-
```
60-
61-
This option is applied after every Mermaid render, including theme-driven
62-
re-renders and runtime updates through another `createMermaidRenderer()` call.
63-
It does not affect `static: true` diagrams. The toolbar's **Reset View** action
64-
continues to restore the original 100% view so readers can return to the
65-
unscaled diagram.
53+
Fitting is applied after every Mermaid render, including theme-driven re-renders
54+
and runtime updates. It does not affect `static: true` diagrams. The toolbar's
55+
**Reset View** action restores the fitted and centered view.
6656

6757
## Static SVG mode
6858

docs/content/en/guide/types.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ in **VitePress Mermaid Renderer**.
88
`createMermaidRenderer()` accepts Mermaid configuration options directly. It
99
also accepts the renderer-specific options shown below.
1010

11-
| Option | Type | Default | Description |
12-
| :--------------- | :-------- | :------ | :---------------------------------------------------------------------------------- |
13-
| `static` | `boolean` | `false` | Renders a plain theme-aware SVG without controls or interactive navigation. |
14-
| `fitToContainer` | `boolean` | `true` | Fits and centers an interactive diagram in its container after each Mermaid render. |
11+
| Option | Type | Default | Description |
12+
| :------- | :-------- | :------ | :-------------------------------------------------------------------------- |
13+
| `static` | `boolean` | `false` | Renders a plain theme-aware SVG without controls or interactive navigation. |
1514

1615
All other renderer options, such as `theme`, `flowchart`, and `securityLevel`,
1716
follow the

docs/content/tr/guide/configuration.md

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,31 +39,22 @@ const mermaidRenderer = createMermaidRenderer({
3939
| `gantt` | Proje zaman çizelgelerinde tarih biçimlendirme veya eksen görünürlüğünü özelleştirir. |
4040
| `securityLevel` | `mermaid.initialize()` içine geçirilen Mermaid güvenlik modudur. **Değişiklik:** varsayılan artık `'strict'`; diyagramlardaki inline HTML devre dışı bırakılır. Yalnızca tüm diyagram kaynaklarına güveniyorsanız `'loose'` kullanın. |
4141
| `static` | `true` olduğunda araç çubuğu, yakınlaştırma, sürükleme, tam ekran, indirme ve klavye kontrolleri olmayan düz bir SVG oluşturur. Tema güncellemeleri SVG'yi yeniden render etmeye devam eder. |
42-
| `fitToContainer` | `true` olduğunda her etkileşimli diyagramı kullanılabilir genişlik ve yüksekliğe sığacak şekilde ölçekler, ardından render sonrasında ortalar. Varsayılanı `true` değeridir. |
4342

4443
`createMermaidRenderer()` yeni bir Mermaid config ile tekrar çağrıldığında
4544
mevcut singleton config'i **derin birleştirilir** (iç içe nesneler `flowchart`
4645
gibi replaced yerine merge edilir) ve mount edilmiş diyagramlara runtime update
4746
gönderilir.
4847

49-
## Diyagramları kapsayıcıya sığdırma ve ortalama
48+
## Otomatik sığdırma ve ortalama
5049

51-
`fitToContainer` varsayılan olarak etkindir ve her etkileşimli diyagramı en-boy
52-
oranı korunarak `.diagram-wrapper` içine sığacak en büyük ölçekte render eder ve
53-
her iki eksende ortalar. Ölçeklenmemiş %100 görünümünü korumak için `false`
54-
olarak ayarlayın.
50+
Her etkileşimli diyagram, en-boy oranı korunarak `.diagram-wrapper` içine
51+
sığacak en büyük ölçekte otomatik olarak render edilir ve her iki eksende
52+
ortalanır.
5553

56-
```typescript
57-
createMermaidRenderer({
58-
fitToContainer: true,
59-
});
60-
```
61-
62-
Bu seçenek, tema kaynaklı yeniden render işlemleri ve başka bir
63-
`createMermaidRenderer()` çağrısıyla yapılan runtime güncellemeleri dahil her
64-
Mermaid render işleminden sonra uygulanır. `static: true` diyagramları
65-
etkilemez. Araç çubuğundaki **Görünümü sıfırla** işlemi, okuyucuların
66-
ölçeklenmemiş diyagrama dönebilmesi için özgün %100 görünümünü geri yükler.
54+
Sığdırma, tema kaynaklı yeniden render işlemleri ve runtime güncellemeleri dahil
55+
her Mermaid render işleminden sonra uygulanır. `static: true` diyagramları
56+
etkilemez. Araç çubuğundaki **Görünümü sıfırla** işlemi sığdırılmış ve
57+
ortalanmış görünümü geri yükler.
6758

6859
## Tema farkındalığı
6960

docs/content/tr/guide/types.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ seçeneklerini özetler.
88
`createMermaidRenderer()` Mermaid yapılandırma seçeneklerini doğrudan alır.
99
Renderer'a özel aşağıdaki seçenekleri de destekler.
1010

11-
| Seçenek | Tip | Varsayılan | Açıklama |
12-
| :--------------- | :-------- | :--------- | :------------------------------------------------------------------------------------------- |
13-
| `static` | `boolean` | `false` | Kontrol ve etkileşimli gezinme olmadan tema uyumlu SVG üretir. |
14-
| `fitToContainer` | `boolean` | `true` | Her Mermaid render işleminden sonra etkileşimli diyagramı kapsayıcısına sığdırır ve ortalar. |
11+
| Seçenek | Tip | Varsayılan | Açıklama |
12+
| :------- | :-------- | :--------- | :------------------------------------------------------------- |
13+
| `static` | `boolean` | `false` | Kontrol ve etkileşimli gezinme olmadan tema uyumlu SVG üretir. |
1514

1615
`theme`, `flowchart` ve `securityLevel` gibi diğer seçenekler
1716
[Mermaid yapılandırma şemasını](https://mermaid.js.org/config/configuration.html)

docs/content/zh/guide/configuration.md

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,18 @@ const mermaidRenderer = createMermaidRenderer({
3838
| `gantt` | 嵌入项目时间线时自定义日期格式或坐标轴显示。 |
3939
| `securityLevel` | 传给 `mermaid.initialize()` 的 Mermaid 安全模式。**变更:** 默认值现在是 `'strict'`,禁用图表内的 inline HTML。仅在你信任所有图表来源时使用 `'loose'`|
4040
| `static` | 设为 `true` 时,渲染不含工具栏、缩放、拖拽、全屏、下载或键盘控制的纯 SVG。主题更新仍会重新渲染 SVG。 |
41-
| `fitToContainer` | 设为 `true` 时,会将每个交互式图表缩放到可用宽度和高度内,并在渲染后居中。默认值为 `true`|
4241

4342
如果再次调用 `createMermaidRenderer()` 并传入新的 Mermaid
4443
config,现有 singleton 会**深度合并**配置(嵌套对象如 `flowchart`
4544
会被合并而非替换),并向已挂载图表发送运行时更新。
4645

47-
## 将图表适配并居中到容器
46+
## 自动适配并居中
4847

49-
`fitToContainer` 默认启用。每个交互式图表会在保持宽高比的同时,以能够放入
50-
`.diagram-wrapper` 的最大比例渲染,并在水平和垂直方向居中。将其设置为 `false`
51-
可保留未缩放的 100% 视图。
48+
每个交互式图表都会在保持宽高比的同时,以能够放入 `.diagram-wrapper`
49+
的最大比例自动渲染,并在水平和垂直方向居中。
5250

53-
```typescript
54-
createMermaidRenderer({
55-
fitToContainer: true,
56-
});
57-
```
58-
59-
该选项会在每次 Mermaid 渲染后生效,包括主题触发的重新渲染,以及再次调用
60-
`createMermaidRenderer()` 进行的运行时更新。它不会影响 `static: true`
61-
图表。工具栏中的**重置视图**操作仍会恢复原始的 100% 视图,以便读者回到未缩放的图表。
51+
自动适配会在每次 Mermaid 渲染后生效,包括主题触发的重新渲染和运行时更新。它不会影响
52+
`static: true` 图表。工具栏中的**重置视图**操作会恢复适配并居中的视图。
6253

6354
## 主题感知
6455

docs/content/zh/guide/types.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77
`createMermaidRenderer()`
88
直接接收 Mermaid 配置选项,也支持下面的 renderer 专用选项。
99

10-
| 选项 | 类型 | 默认值 | 说明 |
11-
| :--------------- | :-------- | :------ | :---------------------------------------------------- |
12-
| `static` | `boolean` | `false` | 生成没有控件和交互式导航的主题感知 SVG。 |
13-
| `fitToContainer` | `boolean` | `true` | 在每次 Mermaid 渲染后将交互式图表适配并居中到其容器。 |
10+
| 选项 | 类型 | 默认值 | 说明 |
11+
| :------- | :-------- | :------ | :--------------------------------------- |
12+
| `static` | `boolean` | `false` | 生成没有控件和交互式导航的主题感知 SVG。 |
1413

1514
其他 renderer 选项(如 `theme``flowchart``securityLevel`)遵循
1615
[Mermaid 配置 schema](https://mermaid.js.org/config/configuration.html)

docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@
3737
"vitepress": "^1.6.4",
3838
"vitepress-mermaid-renderer": "^1.1.32"
3939
}
40-
}
40+
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vitepress-mermaid-renderer",
3-
"version": "1.1.32",
3+
"version": "1.2.0",
44
"description": "A VitePress plugin to render Mermaid diagrams with interactive controls",
55
"type": "module",
66
"main": "./dist/vitepress-mermaid-renderer.js",

0 commit comments

Comments
 (0)