- 渲染管线迁移至 MetonaEditor 内置解析器,移除 unified/rehype 全家桶(9 个依赖) - 修复相对路径图片修复的目录前缀碰撞与路径解析 bug - ConfirmDialog/useConfirm/LoadingSpinner/useDocStats 移除,改用 MeToast.confirm/loading/promise - 新增状态栏(字数/行数/阅读时间/光标位置)、Zen 模式、数据备份导出导入 - Sqlark: 版本化迁移(addMigration/migrateTo)、subscribe 表变更、备份 exportAll/importTable - 数据库损坏自愈:异常退出残留残缺 SSTable 导致打开失败时自动重建 - 大纲导航改用 scrollToLine 官方 API - 修复 rollup 平台包互删(postinstall 自动补齐)+ 集成测试(fake-indexeddb)
26 lines
666 B
TypeScript
26 lines
666 B
TypeScript
import React from 'react'
|
|
|
|
interface ModifiedBannerProps {
|
|
onReload: () => void
|
|
onDismiss: () => void
|
|
}
|
|
|
|
export const ModifiedBanner = React.memo(function ModifiedBanner({
|
|
onReload,
|
|
onDismiss,
|
|
}: ModifiedBannerProps) {
|
|
return (
|
|
<div id="modified-banner" role="alert" aria-live="assertive">
|
|
<span>文件已被外部程序修改</span>
|
|
<button className="banner-btn" onClick={onReload} aria-label="重新加载文件">
|
|
重新加载
|
|
</button>
|
|
<button className="banner-btn" onClick={onDismiss} aria-label="忽略外部修改">
|
|
忽略
|
|
</button>
|
|
</div>
|
|
)
|
|
})
|
|
|
|
ModifiedBanner.displayName = 'ModifiedBanner'
|