@embedpdf/plugin-历史
撤消并重做 EmbedPDF, 每张打开的文档有一段历史 通过查看器更改:移动、休整、删除或打入 说明, 以及插件所做的其他更改 .
一次行动会立即消失 即使它还在前往 发动机。 引擎通过引用来取消一个变化: 它保存一个记录什么 每个变化都做了,所以历史没有保存文件的副本,还有一部分 别人变了 一个人待着.
设置
import { annotationPlugin } from '@embedpdf/react/annotation';
import { historyPlugin } from '@embedpdf/react/history';
const plugins = [
// ...stage, interaction, selection...
annotationPlugin(),
historyPlugin(), // { limit: 100 } steps by default
];
没有依赖性:它记录了该图上每个插件阶段的更改 文档的更改队列.
撤消和重做
import { useHistory, useHistoryState } from '@embedpdf/react/history';
const history = useHistory();
const { canUndo, canRedo, undoLabel } = useHistoryState();
<button disabled={!canUndo} onClick={() => history.undo()}>
Undo
</button>;
- 一步就是行动: 移动三个说明是一步,同样 在一个文本框中暂停一个打字段.
- 标签是数据 :
undoLabel实值{ key: 'annotation.move', count: 3 }, (中文(简体) ), 用于您自己的翻译("Undo moving of 3 Notes"). - 选择如下: 取消后,请在 如果动作仍然显示,则再次选择动作.
当引擎回复时
| 发生什么事 | 历史 |
|---|---|
| 应用的撤销或重做 | onUndone({ label, redo, skipped })· ; skipped 算起后来有人改变的零件,这些零件被留下 |
| 引擎拒绝行动 | 行动留下了历史;已经走在路上了,却一言不发 |
| 引擎拒绝撤销或重做 | onUndoFailed({ reason: 'refused', error }),该步骤又回到了后面:可以再次尝试 |
| 已经无法挽回了 | onUndoFailed({ reason: 'unavailable' })一步步走,前所未有 |
| 修改、平整、签名或形式修复 | 两种堆叠都清楚:没有东西可以撤销 |
| 文件的新版本 | 两堆都清空了 |
| 其他人更改文档 | 没什么,他们的变化并不在你的历史, 发动机留下了他们自那以后的变化 |
对于插件作者
历史记录了插件的阶段 ctx.changes。给出每个更改
a 一个 undo 所以在引擎前画出一个反面
答复; history: false 保持一个变化; 持有这个构成一个步骤通过
一个 merge 键。 规则在 docs/conventions/state-and-sync.md。 。 。 .