@atri-editor/core 0.3.0 → 0.5.0
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/CHANGELOG.md +155 -0
- package/dist/AtriEditor.d.ts +20 -1
- package/dist/AtriEditor.d.ts.map +1 -1
- package/dist/AtriEditorElement.d.ts +26 -2
- package/dist/AtriEditorElement.d.ts.map +1 -1
- package/dist/ai/AICommandMenu.d.ts +1 -0
- package/dist/ai/AICommandMenu.d.ts.map +1 -1
- package/dist/ai/AIInterceptor.d.ts.map +1 -1
- package/dist/ai/AIService.d.ts.map +1 -1
- package/dist/core/CoreEditor.d.ts +9 -0
- package/dist/core/CoreEditor.d.ts.map +1 -1
- package/dist/core/I18nManager.d.ts +25 -0
- package/dist/core/I18nManager.d.ts.map +1 -1
- package/dist/core/LinkPanel.d.ts +1 -0
- package/dist/core/LinkPanel.d.ts.map +1 -1
- package/dist/core/MarkdownService.d.ts +12 -1
- package/dist/core/MarkdownService.d.ts.map +1 -1
- package/dist/core/StyleOptionPanel.d.ts +73 -0
- package/dist/core/StyleOptionPanel.d.ts.map +1 -0
- package/dist/core/TableGridPanel.d.ts +1 -0
- package/dist/core/TableGridPanel.d.ts.map +1 -1
- package/dist/core/TableMenu.d.ts +1 -0
- package/dist/core/TableMenu.d.ts.map +1 -1
- package/dist/core/ThemeManager.d.ts.map +1 -1
- package/dist/core/ToolbarManager.d.ts +50 -1
- package/dist/core/ToolbarManager.d.ts.map +1 -1
- package/dist/core/ToolbarMenuPanel.d.ts +58 -0
- package/dist/core/ToolbarMenuPanel.d.ts.map +1 -0
- package/dist/core/bubble-toolbar.d.ts +8 -2
- package/dist/core/bubble-toolbar.d.ts.map +1 -1
- package/dist/core/floating-panel.d.ts +24 -1
- package/dist/core/floating-panel.d.ts.map +1 -1
- package/dist/core/icons.d.ts.map +1 -1
- package/dist/core/markdown-losses.d.ts +26 -0
- package/dist/core/markdown-losses.d.ts.map +1 -0
- package/dist/core/style-presets.d.ts +47 -0
- package/dist/core/style-presets.d.ts.map +1 -0
- package/dist/extensions/Attachment.d.ts.map +1 -1
- package/dist/extensions/AttachmentLink.d.ts.map +1 -1
- package/dist/extensions/attachment-attrs.d.ts.map +1 -1
- package/dist/extensions/formatting.d.ts +24 -0
- package/dist/extensions/formatting.d.ts.map +1 -0
- package/dist/extensions/markdown-inline-html.d.ts +73 -0
- package/dist/extensions/markdown-inline-html.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1529 -199
- package/dist/index.js.map +1 -1
- package/dist/media/InsertPanel.d.ts +1 -0
- package/dist/media/InsertPanel.d.ts.map +1 -1
- package/dist/media/MediaRuntime.d.ts +13 -0
- package/dist/media/MediaRuntime.d.ts.map +1 -1
- package/dist/media/MediaStatusStrip.d.ts.map +1 -1
- package/dist/media/Uploader.d.ts.map +1 -1
- package/dist/style.css +186 -0
- package/dist/types/ai.d.ts +5 -0
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/editor.d.ts +23 -2
- package/dist/types/editor.d.ts.map +1 -1
- package/dist/types/markdown.d.ts +32 -0
- package/dist/types/markdown.d.ts.map +1 -1
- package/dist/types/media.d.ts +5 -0
- package/dist/types/media.d.ts.map +1 -1
- package/dist/utils/escape.d.ts +30 -0
- package/dist/utils/escape.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +18 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/markdown.d.ts +5 -3
- package/dist/utils/markdown.d.ts.map +1 -1
- package/dist/utils/safe-call.d.ts +15 -0
- package/dist/utils/safe-call.d.ts.map +1 -0
- package/dist/utils/url.d.ts +20 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/package.json +16 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,160 @@
|
|
|
1
1
|
# @atri-editor/core
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- c69bd5b: 新增 `getMarkdownLosses()` 与 `hasLossyContent()`
|
|
8
|
+
|
|
9
|
+
序列化器对没有 `renderMarkdown` 钩子的类型是静默丢弃,`getMarkdown()` 的返回值里看不出少了什么。现在可以在导出之前问一遍:返回 `{ kind: 'node' | 'mark' | 'attribute', type, attribute?, count }` 的数组。会进报告的有段落与标题对齐、合并单元格与拖过的列宽(pipe table 表达不了,合并会退化成一格有内容一格空着)、`inlineStyles: 'drop'` 下的颜色与上下标,以及没有 markdown 钩子的第三方节点。`count` 按连续区间合并,一个被加粗切成三段的红色短语算一处。
|
|
10
|
+
|
|
11
|
+
## 0.4.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- 814cd5d: 新增 `@atri-editor/code-highlight`:代码块语法高亮,语法库由你自己带
|
|
16
|
+
|
|
17
|
+
core 侧新增一档配置:
|
|
18
|
+
|
|
19
|
+
- `codeBlock?: false` 关掉 StarterKit 内置的代码块,把 `codeBlock` 这个节点名让给你的实现。
|
|
20
|
+
配套地,节点不存在时工具栏的「代码块」项不再注册(与 `table: false` / `media: false` 同一套做法)。
|
|
21
|
+
这不是可选的整理:只写 `codeBlock: false` 而不给替代实现时,`toggleCodeBlock` 命令根本不存在,
|
|
22
|
+
而按钮状态判定会无条件调它——实测是每次事务都抛 `editor.can(...).toggleCodeBlock is not a function`。
|
|
23
|
+
|
|
24
|
+
新包 `@atri-editor/code-highlight`:
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { withCodeHighlight } from '@atri-editor/code-highlight';
|
|
28
|
+
import { createLowlight, common } from 'lowlight';
|
|
29
|
+
|
|
30
|
+
new AtriEditor({ element, ...withCodeHighlight({ lowlight: createLowlight(common) }) });
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- **单独成包的理由是体积**:高亮的真实成本是 highlight.js(整包约 5.5 MB 未压缩),
|
|
34
|
+
而 lowlight 支持只注册用到的语言。本包产物 500 B,语法库一个字节都不进来,
|
|
35
|
+
并配了一条 4 KB gzip 的预算守着这条线。
|
|
36
|
+
- **`withCodeHighlight` 一次给全两样东西**(关内置 + 上 lowlight 版)。只传 `extensions`
|
|
37
|
+
也能工作——实测同名扩展是后注册的赢——但那踩的是 Tiptap 内部去重顺序,
|
|
38
|
+
且每建一次编辑器都会打一句重名 warning。
|
|
39
|
+
- **Markdown 往返不受影响**:`CodeBlockLowlight` 继承 `CodeBlock` 的围栏与 `language`
|
|
40
|
+
双向钩子,` ```javascript ` 照原样回来。
|
|
41
|
+
- 附一份最小 token 主题(`@atri-editor/code-highlight/theme`),作用域限定在 `.atri-editor` 内、
|
|
42
|
+
颜色跟 core 的主题变量走。**没有它的话装上高亮在屏幕上看不出任何变化**——
|
|
43
|
+
lowlight 只给 `<span class="hljs-keyword">` 这类标记,一个颜色都不给。
|
|
44
|
+
- **高亮不会出现在 `getHTML()` 里**:分词是 ProseMirror decoration,只存在于视图 DOM,
|
|
45
|
+
而 `getHTML()` 走 schema 序列化。保存的 HTML 与服务端渲染片段都没有着色,只有编辑期可见。
|
|
46
|
+
|
|
47
|
+
`lowlight` 与 `@tiptap/extension-code-block-lowlight` 都是 peer,要自己装。
|
|
48
|
+
|
|
49
|
+
- a969f68: 新增基础格式能力(文字颜色 / 背景色 / 字号 / 字体 / 高亮 / 上下标),并把它们的 Markdown 往返一并接通
|
|
50
|
+
|
|
51
|
+
这组能力此前只有 Tiptap 原生命令、本包完全没注册,所以既没有按钮、外来 HTML 里的
|
|
52
|
+
`<span style="color:…">` 也不会变成带样式的文字。本条补的是 mark 与数据链路;
|
|
53
|
+
**工具栏按钮和取色面板还没接**,眼下要经 `editor.editor.commands.setColor(…)` 这类原生命令使用。
|
|
54
|
+
|
|
55
|
+
- **默认注册** `textStyle`(承载颜色 / 背景色 / 字号 / 字体)、`highlight`(开 multicolor)、`subscript`、`superscript` 四类 mark;`formatting: false` 整片关掉。
|
|
56
|
+
- **颜色等样式现在会随 Markdown 往返**。Markdown 没有这些的表示法,而序列化器对没有 `renderMarkdown` 钩子的类型是**静默丢弃**——正文照常输出、样式无痕消失、不报错也不留痕迹,导出侧一个钩子都没给。这里补上,落点是内联 HTML:`<span style="…">` / `<sub>` / `<sup>` / `<mark data-color>`。
|
|
57
|
+
- **发出与载入逐字节幂等**:`getMarkdown → setMarkdown → getMarkdown` 输出不变。这是本条里真正难的部分。只挂 `renderMarkdown` 做不到——`<span>` 的内容走的是 HTML 解析而非 Markdown 解析,里面的 `**粗体**` 会回来成字面文本,且正文里的反斜杠每导出一次翻一倍,等于每存一次都再损坏一点。为此给内联片段写了自定义 tokenizer,对内层重新分词。
|
|
58
|
+
- **彩色高亮的颜色不再丢**。上游 `Highlight` 的导出是 `==正文==` 且从不读属性,`multicolor` 一开颜色就在导出时消失;现在无色仍出 `==`、有色出 `<mark data-color>`。
|
|
59
|
+
- **上下标不提供 `~x~` / `^x^` 写法**。marked 把单波浪线当 GFM 删除线,`H~2~O` 回来是 `<s>2</s>`——下标没做成还平白吃掉一个删除线语法。
|
|
60
|
+
- 新增 `markdown.inlineStyles: 'html' | 'drop'`(默认 `'html'`)。`'drop'` 导出严格 CommonMark、代价是这次导出丢内容;两种模式下**导入都照常解析**,关掉一个导出偏好不会连带削掉导入能力。
|
|
61
|
+
- 降级转换器(`markdown.enabled: false`)补上 `####` / `#####` / `######`,此前两个方向都只认到三级标题。
|
|
62
|
+
|
|
63
|
+
**可见行为变化**:默认开启的前提下,粘贴 Word / 网页 HTML 从此会真的生成带颜色的文字,而 `getMarkdown()` 的输出里会出现内联 HTML 标签。要严格 Markdown 的下游设 `markdown.inlineStyles: 'drop'`;完全不想要这组能力设 `formatting: false`。
|
|
64
|
+
|
|
65
|
+
**仍然存在的一处丢失**:段落与标题的对齐导出 Markdown 时会消失(node 属性没有 Markdown 归宿)。这是本条之前既有的行为,不是本次引入,下一次补上显式的丢失报告。
|
|
66
|
+
|
|
67
|
+
包体积 +1.2 KB gzip(24.6 → 25.8 KB),四个上游扩展自身都零运行时依赖。
|
|
68
|
+
|
|
69
|
+
- f8cd129: 修复若干会导致内容丢失、安全漏洞与静默失败的问题
|
|
70
|
+
|
|
71
|
+
- **Web Component 用法在生产构建里可能整个失效**:`package.json` 曾把 JS 入口声明为无副作用,而自定义元素的注册就在模块顶层。裸导入 `import '@atri-editor/core'` 经 esbuild 一类打包器会产出空包,`<atri-editor>` 永远不会被升级。已修正声明,并加了构建期校验。
|
|
72
|
+
- **搬动节点不再丢内容**:过去 `disconnectedCallback` 同步销毁编辑器,于是 DOM 重排、框架 re-parent、虚拟列表滚动都会清空用户输入并中止在途上传。现在拆除排在微任务边界,重挂会接回断连前的内容。新增 `destroy()` 供"卸载后不再重建"使用。
|
|
73
|
+
- **附件地址过协议白名单**:`javascript:` 之类的地址此前会原样写进 `href`。现在渲染层统一拒绝,非法地址退化成没有链接的文字。`insertAttachment()` 遇到非法地址返回 `false`。
|
|
74
|
+
**可见行为变化**:`insertAttachment({ src: 'blob:…' })` / `'data:…'` 现在也被拒。这两类是媒体资源地址、不是可点击地址,过去的问题是"命令返回成功、节点却不带链接"。上传管线不受影响——它的本地预览地址是直接写节点属性进去的,不经这条命令。
|
|
75
|
+
- **`upload.transformResult` 抛错不再把上传悬在半空**:过去异常绕过了 reject,卡片永久停在"上传中"、`hasPendingUploads()` 恒为 true,宿主"等上传落定再保存"的闸门被卡死。现在落成一个明确错误,并校验其返回的 `url` 确实可用。
|
|
76
|
+
- **Markdown 降级转换器现在会转义**:`markdown.enabled: false` 时 `markdownToHTML()` 返回的裸 HTML 不转义尖括号与引号,不校验链接协议。宿主把它 `innerHTML` 进页面即有风险。
|
|
77
|
+
- **失败不再静默**:AI 端点报错而未配 `ai.onError` 时过去既不日志也不抛出;空 `ai.functions` 会浮出一个没有选项的菜单并吃掉 Enter 键;上传重试、销毁后的回调等四处不完整的销毁路径已补齐。
|
|
78
|
+
- **新增可选配置** `media.upload.timeout` 与 `ai.timeout`,**默认均不超时**,因此不配置时行为与之前完全一致。
|
|
79
|
+
- 内部:工具栏与表格菜单共 40 处中文文案改为直接取 i18n 词条,不再各抄一份兜底字面量。
|
|
80
|
+
|
|
81
|
+
- 1eace9c: 基础格式接上 UI:顶栏开箱就有颜色、高亮、字号、字体、上下标与清除格式
|
|
82
|
+
|
|
83
|
+
上一条提交补了这批 mark 的数据链路与 Markdown 往返,但只有命令、没有按钮。本条接上界面。
|
|
84
|
+
|
|
85
|
+
- **顶栏新增八项**:`textColor` `highlight` `highlightColor` `fontSize` `fontFamily` `subscript` `superscript` `clearFormat`。默认布局从 25 项变 33 项、9 组;窄容器下换行而不是横向溢出。
|
|
86
|
+
- **颜色 / 字号 / 字体是选择面板不是按钮**:色板 12 格 + 一行「其他颜色」(原生取色器)+「无」;字号 10 档 +「默认」;字体 7 项 +「默认」。面板沿用既有浮层底盘(`floating-panel`),键盘方向键可走完整个列表,Escape 与点击外部都关闭,主题类照常复制。
|
|
87
|
+
- **换个入口点过去是改开那个**,而不是因为"面板已经开着"就直接关掉——四个入口共用一个面板实例,做成后者会得到"点了字号再点字体,什么都没发生"。按下态也只归当前那一个入口,不会四个一起亮。
|
|
88
|
+
- **逐项按能力判定,不同生共死**:`textColor` / `fontSize` / `fontFamily` 要求 `textStyle` mark 上真的有那个属性**并且**对应命令存在(两条都看,只看配置会做出"按钮摆出来、点了没反应");`highlight` / `subscript` / `superscript` 各看自己的 mark。`formatting: false` 收掉这七项。
|
|
89
|
+
- **`clearFormat` 不受 `formatting` 牵连**:它走 `unsetAllMarks` + `clearNodes`,加粗斜体本来就有,把它绑在这批 mark 上是错绑。
|
|
90
|
+
- **整组空了连分隔符一起撤掉**:分隔符是按组序插的,`formatting: false` 时颜色组全空,不过滤就会在顶栏上吊出两根相邻的光杆。
|
|
91
|
+
- 浮动工具栏的文字组从 5 项增到 8 项(加 `highlight` `subscript` `superscript`),仍只放纯开关——带面板的项锚不住按钮(按钮随浮层一起被摘出文档)。加了 8 项的宽度守卫测试与 CSS 上限(`max-width: min(90vw, 320px)` + 折行),再往下加必须先显式抬那个数。
|
|
92
|
+
- 语言:新增 14 条中英词条,都各有真实读取方,没有一条是躺着没人读的。
|
|
93
|
+
|
|
94
|
+
**可见行为变化**:默认顶栏的按钮数量与分组变了。把 `toolbar.items` 写死成一份列表的接入方不受影响(那条路径本来就不读默认布局);依赖默认布局截图或对齐 CSS 的会看到差异。
|
|
95
|
+
|
|
96
|
+
包体积 +3.1 KB gzip(25.8 → 28.9 KB),仍在预算内。其中 `icons.ts` 单个模块 +2.9 KB(八个内联 SVG),它已经是本包最大源模块。
|
|
97
|
+
|
|
98
|
+
- 7a1e00e: 可以注册内置中英文之外的语言了
|
|
99
|
+
|
|
100
|
+
README 早就写着"可扩展其他语言",但实际没有入口:资源清单是源码里的两个字面量对象,
|
|
101
|
+
`lang: 'ja'` 不报错,只是安静地回退中文——看起来像生效了,词条却一个字都没换。
|
|
102
|
+
|
|
103
|
+
- 新增 `editor.i18n.addResources(lang, resources)` 与 `editor.i18n.hasLanguage(lang)`。
|
|
104
|
+
前者注册语言包,后者是**唯一**能问出"这门语言到底有没有被收录"的地方:没收录时 `t()` 不抛错也不留痕迹,只会按 `fallbackLng` 给出中文。
|
|
105
|
+
- **注册只影响这一个编辑器**。每个编辑器本来就持有独立的 i18next 实例,但注册语言包会就地合并进那份词条表,而这份表过去是模块级字面量的引用——于是一次 `addResources` 会污染页面上所有编辑器,**包括之后新建的**,还会连带改掉工具栏默认文案的单一来源。现在每个实例持有自己的拷贝。
|
|
106
|
+
- **盖不掉内置文案**。同名 key 以先注册的一方为准,后加载的代码改不动 `editor.bold`。要自定义措辞请走 `toolbar.items` 的 `tooltip`,那是本来就优先级更高的显式入口。
|
|
107
|
+
- 注册**当前**语言会立刻重刷已挂载界面的文案(工具栏 tooltip、浮层、上传状态条),注册别的语言则不打扰界面,等 `setLanguage` 过去再生效。
|
|
108
|
+
|
|
109
|
+
- ee07bdf: `ToolbarItem.children` 从桩变成真下拉;标题与对齐收成两个菜单
|
|
110
|
+
|
|
111
|
+
`children` 这个字段类型上早就有,但实现只会在 `ToolbarManager` 里打一句"不支持"的告警。
|
|
112
|
+
现在它是真的了。
|
|
113
|
+
|
|
114
|
+
- **默认顶栏新增两个下拉**:`heading`(一到六级 + 正文)与 `align`(左/中/右/两端)。
|
|
115
|
+
顶栏从 33 项回到 27 项——标题六级加正文七个取值、对齐四种,平铺要占十一个格子,
|
|
116
|
+
而它们都是"多选一",一次只用得上一个。
|
|
117
|
+
- **触发器反映当前值**:光标在三级标题里时,按钮上就是 H3 的图标、悬停提示写「标题 3」,
|
|
118
|
+
不点开也知道现在是什么。图标与提示由同一份判定得出,避免出现"画着 H3、写着标题"
|
|
119
|
+
这种一半新一半旧的界面。
|
|
120
|
+
- **4/5/6 级标题有了入口**。schema 与输入规则一直支持到六级(StarterKit 默认 `levels: 1..6`),
|
|
121
|
+
`#### 文字` 本来就能成 h4,缺的只是能按的地方。它们也能单独写进 `toolbar.items`。
|
|
122
|
+
- **`children` 可替换内置菜单的子项**,例如 `items: [{ id: 'heading', children: [...] }]`。
|
|
123
|
+
子项走的是与顶栏项同一张表,因此同样受能力门控:`table: false` 时把 `insertTable` 写进
|
|
124
|
+
子项也不会吊出一行按不动的。
|
|
125
|
+
- **几条明确的拒绝**:只支持一层(嵌套 `children` 告警并忽略);未知 id 告警并跳过;
|
|
126
|
+
带浮层的子项(`textColor` 这类)不收——菜单一点就关,面板当场失去锚点;
|
|
127
|
+
`children` 写在非下拉项上告警,而不是静默无效。
|
|
128
|
+
- 无障碍:菜单是 `role="menu"` + `role="menuitemradio"` + `aria-checked`(标题级别与对齐方式
|
|
129
|
+
都是多选一,读屏因此能报出当前选中的是哪一项),触发器 `aria-haspopup="menu"` 区别于
|
|
130
|
+
面板类的 `dialog`。方向键走完列表并循环,Enter 选中,Escape 关闭。
|
|
131
|
+
- 选完一项后焦点还给编辑器:顶栏普通按钮的路径本来就在做这件事,走菜单不经过那里,
|
|
132
|
+
不还的话用户选完「标题 2」接着打字,字就丢了。
|
|
133
|
+
|
|
134
|
+
**可见行为变化**:默认顶栏的 `heading1` `heading2` `heading3` `paragraph` 与四个 `align*`
|
|
135
|
+
不再平铺出现,改由两个下拉承载。把 `toolbar.items` 写死成一份列表的接入方不受影响——
|
|
136
|
+
那条路径本来就直接读这些 id,它们依然全部可用。
|
|
137
|
+
|
|
138
|
+
包体积 +1.3 KB gzip(29.0 → 30.3 KB),仍在预算内。
|
|
139
|
+
|
|
140
|
+
### Patch Changes
|
|
141
|
+
|
|
142
|
+
- 464b4d3: 修掉两个主题相关的缺陷
|
|
143
|
+
|
|
144
|
+
- **自定义主题名会留残类**。`ThemeManager` 换主题时写死了 `remove('atri-theme-light', 'atri-theme-dark')`,
|
|
145
|
+
只摘这两个名字。而 `ThemeType` 是接受任意主题名的(README 就宣传 `setTheme('sepia')`),
|
|
146
|
+
于是 `setTheme('sepia')` 之后再 `setTheme('light')`,容器上是
|
|
147
|
+
`atri-theme-sepia atri-theme-light` ——两套变量同时生效,最终谁赢取决于样式里的声明顺序,
|
|
148
|
+
而不是用户最后选了哪个主题。改成按 `atri-theme-` 前缀摘干净再加。
|
|
149
|
+
- **已经打开的浮层不跟随主题切换**。浮层挂在 `document.body` 上够不着编辑器上的主题变量,
|
|
150
|
+
所以打开时会把主题类复制一份——但只复制那一次。于是"开着面板切主题"得到一个浅色面板
|
|
151
|
+
配深色正文。现在改成持续跟随:观察编辑器容器自己的 class 变动并重拍,
|
|
152
|
+
面板关闭时断开。五个浮层(插入浮层、表格网格、链接、表格操作菜单、格式选择)
|
|
153
|
+
一次全好,因为它们走的是同一个 `floating-panel` 底盘。
|
|
154
|
+
|
|
155
|
+
两处都补了回归钉,并且都反向验证过:把修复抽掉,新增的 5 条断言全部变红。
|
|
156
|
+
既有测试之所以放过了第一个 bug,是因为它们只断言"新类加上了",从没有一条断言"旧类摘掉了"。
|
|
157
|
+
|
|
3
158
|
## 0.3.0
|
|
4
159
|
|
|
5
160
|
### Minor Changes
|
package/dist/AtriEditor.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* AtriEditor - 编辑器主类
|
|
3
3
|
*/
|
|
4
4
|
import type { Editor, JSONContent } from '@tiptap/core';
|
|
5
|
-
import type { AtriEditorOptions, IAtriEditor, InsertAttachmentOptions, InsertImageOptions, InsertTableOptions, MediaKind, SetContentOptions, AtriAIConfig, AtriNodeViewConfig } from './types';
|
|
5
|
+
import type { AtriEditorOptions, IAtriEditor, InsertAttachmentOptions, InsertImageOptions, InsertTableOptions, MarkdownLoss, MediaKind, SetContentOptions, AtriAIConfig, AtriNodeViewConfig } from './types';
|
|
6
6
|
import { ThemeManager } from './core/ThemeManager';
|
|
7
7
|
import { I18nManager } from './core/I18nManager';
|
|
8
8
|
import { ExtensionManager } from './core/ExtensionManager';
|
|
@@ -33,6 +33,8 @@ export declare class AtriEditor implements IAtriEditor {
|
|
|
33
33
|
private bubbleElement;
|
|
34
34
|
private container;
|
|
35
35
|
private options;
|
|
36
|
+
/** 销毁后就不再重建:registerNodeView 会往已经 remove() 的容器里复活一个编辑器 */
|
|
37
|
+
private destroyed;
|
|
36
38
|
constructor(options: AtriEditorOptions);
|
|
37
39
|
/** bubble 默认开,显式 false 才不建元素;元素故意不插进文档:挂载与定位全归 BubbleMenu 插件管 */
|
|
38
40
|
private ensureBubbleElement;
|
|
@@ -67,6 +69,18 @@ export declare class AtriEditor implements IAtriEditor {
|
|
|
67
69
|
* 获取 Markdown 内容
|
|
68
70
|
*/
|
|
69
71
|
getMarkdown(): string;
|
|
72
|
+
/**
|
|
73
|
+
* 这一次 getMarkdown() 会丢掉哪些内容
|
|
74
|
+
*
|
|
75
|
+
* 序列化器对没钩子的类型是静默丢弃,所以"导出完看不出少了什么"是常态。接入方在保存前
|
|
76
|
+
* 拿它决定要不要提示用户,配 `markdown.inlineStyles: 'drop'` 时尤其需要——那个开关
|
|
77
|
+
* 就是把样式导出成最纯粹的 CommonMark,代价是丢内容。
|
|
78
|
+
*/
|
|
79
|
+
getMarkdownLosses(): MarkdownLoss[];
|
|
80
|
+
/**
|
|
81
|
+
* 当前内容里有没有导出 Markdown 时会丢的东西
|
|
82
|
+
*/
|
|
83
|
+
hasLossyContent(): boolean;
|
|
70
84
|
/**
|
|
71
85
|
* 设置内容
|
|
72
86
|
*/
|
|
@@ -198,6 +212,11 @@ export declare class AtriEditor implements IAtriEditor {
|
|
|
198
212
|
* 注意:如果编辑器已创建,会重新创建编辑器以更新 schema
|
|
199
213
|
*/
|
|
200
214
|
registerNodeViews(configs: AtriNodeViewConfig[]): void;
|
|
215
|
+
/**
|
|
216
|
+
* 销毁后重建类 API 的统一守卫:判在改状态之前,
|
|
217
|
+
* 否则配置进了 extensionManager 却没有对应的编辑器,看起来就像"注册了但没生效"
|
|
218
|
+
*/
|
|
219
|
+
private refuseAfterDestroy;
|
|
201
220
|
/**
|
|
202
221
|
* 获取所有已注册的 NodeView
|
|
203
222
|
*/
|
package/dist/AtriEditor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtriEditor.d.ts","sourceRoot":"","sources":["../src/AtriEditor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAO3C,qBAAa,UAAW,YAAW,WAAW;IAG5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAA+B;IACrD,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAqC;IAC1D,+CAA+C;IAC/C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAiC;IACpD,yBAAyB;IACzB,OAAO,CAAC,gBAAgB,CAA6C;IACrE;;;OAGG;IACH,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAoB;
|
|
1
|
+
{"version":3,"file":"AtriEditor.d.ts","sourceRoot":"","sources":["../src/AtriEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* AtriEditorElement - Web Component 封装
|
|
3
3
|
*/
|
|
4
4
|
import { AtriEditor } from './AtriEditor';
|
|
5
|
-
import type { AtriEditorOptions, InsertAttachmentOptions, InsertImageOptions, InsertTableOptions, MediaKind } from './types';
|
|
5
|
+
import type { AtriEditorOptions, InsertAttachmentOptions, InsertImageOptions, InsertTableOptions, MarkdownLoss, MediaKind } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* SSR / 纯 Node 安全基类:类声明会在模块加载时求值 extends 后的表达式,
|
|
8
8
|
* 直接 `extends HTMLElement` 会让无 DOM 的环境(Next/Nuxt 服务端、vitest node 池)
|
|
@@ -20,17 +20,30 @@ export declare function registerAtriElement(): void;
|
|
|
20
20
|
export declare class AtriEditorElement extends AtriEditorBase {
|
|
21
21
|
private editor;
|
|
22
22
|
private _options;
|
|
23
|
+
/** 连接与显式销毁都递增它,用来作废已经排队的拆除任务 */
|
|
24
|
+
private teardownToken;
|
|
25
|
+
/** 断连时留下的内容,重连时接回去 */
|
|
26
|
+
private detachedContent;
|
|
27
|
+
/** 显式销毁过:之后重挂不再自动重建,也不该带任何快照 */
|
|
28
|
+
private destroyed;
|
|
23
29
|
static get observedAttributes(): string[];
|
|
24
30
|
constructor();
|
|
25
31
|
connectedCallback(): void;
|
|
26
32
|
disconnectedCallback(): void;
|
|
33
|
+
/**
|
|
34
|
+
* 显式销毁:之后重挂不再自动重建,内容快照也一并丢掉
|
|
35
|
+
*
|
|
36
|
+
* 框架里对应 unmount 钩子(Vue 的 unmounted、React effect 的 cleanup)。
|
|
37
|
+
* 断连本身已经会延迟拆除,这个方法的意义在于"别接回去了"
|
|
38
|
+
*/
|
|
39
|
+
destroy(): void;
|
|
40
|
+
private teardownEditor;
|
|
27
41
|
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
28
42
|
/**
|
|
29
43
|
* 设置编辑器选项(在 connectedCallback 之前调用)
|
|
30
44
|
*/
|
|
31
45
|
setOptions(options: Partial<AtriEditorOptions>): void;
|
|
32
46
|
private initEditor;
|
|
33
|
-
private destroyEditor;
|
|
34
47
|
/**
|
|
35
48
|
* 获取编辑器实例
|
|
36
49
|
*/
|
|
@@ -47,6 +60,17 @@ export declare class AtriEditorElement extends AtriEditorBase {
|
|
|
47
60
|
* 获取 Markdown 内容
|
|
48
61
|
*/
|
|
49
62
|
getMarkdown(): string;
|
|
63
|
+
/**
|
|
64
|
+
* 这一次 getMarkdown() 会丢掉哪些内容
|
|
65
|
+
*
|
|
66
|
+
* 元素还没初始化时是 null 而不是空数组——"没什么可丢"和"还没建起来"是两件事,
|
|
67
|
+
* 混在一起会让接入方把没就绪当成安全。
|
|
68
|
+
*/
|
|
69
|
+
getMarkdownLosses(): MarkdownLoss[] | null;
|
|
70
|
+
/**
|
|
71
|
+
* 当前内容里有没有导出 Markdown 时会丢的东西
|
|
72
|
+
*/
|
|
73
|
+
hasLossyContent(): boolean;
|
|
50
74
|
/**
|
|
51
75
|
* 设置内容
|
|
52
76
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtriEditorElement.d.ts","sourceRoot":"","sources":["../src/AtriEditorElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACV,MAAM,SAAS,CAAC;AAIjB;;;;;GAKG;AACH,QAAA,MAAM,cAAc,EAAE,OAAO,WACmE,CAAC;AAEjG;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAS1C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAkC;
|
|
1
|
+
{"version":3,"file":"AtriEditorElement.d.ts","sourceRoot":"","sources":["../src/AtriEditorElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACV,MAAM,SAAS,CAAC;AAIjB;;;;;GAKG;AACH,QAAA,MAAM,cAAc,EAAE,OAAO,WACmE,CAAC;AAEjG;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAS1C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAkC;IAClD,gCAAgC;IAChC,OAAO,CAAC,aAAa,CAAK;IAC1B,sBAAsB;IACtB,OAAO,CAAC,eAAe,CAAuB;IAC9C,gCAAgC;IAChC,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,cAEC;IAED,iBAAiB,IAAI,IAAI,CAIxB;IAED,oBAAoB,IAAI,IAAI,CAS3B;IAED;;;;;OAKG;IACH,OAAO,IAAI,IAAI,CAMd;IAED,OAAO,CAAC,cAAc;IAStB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAyB7F;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAIpD;IAED,OAAO,CAAC,UAAU;IAoDlB;;OAEG;IACH,SAAS,IAAI,UAAU,GAAG,IAAI,CAE7B;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,CAEhB;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED;;OAEG;IACH,WAAW,IAAI,MAAM,CAEpB;IAED;;;;;OAKG;IACH,iBAAiB,IAAI,YAAY,EAAE,GAAG,IAAI,CAEzC;IAED;;OAEG;IACH,eAAe,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAEhF;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAEnB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAE7C;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAEvD;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAE9C;IAED;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;IAED;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;IAED;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;CACF"}
|
|
@@ -24,6 +24,7 @@ export declare class AICommandMenuManager {
|
|
|
24
24
|
private triggerChar;
|
|
25
25
|
private onSelect?;
|
|
26
26
|
private detachKeyListener?;
|
|
27
|
+
private detachTransactionListener?;
|
|
27
28
|
constructor(editor: Editor, functions: AtriAIFunction[], triggerChar?: string, onSelect?: (func: AtriAIFunction) => void);
|
|
28
29
|
/**
|
|
29
30
|
* 让键盘导航可达
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AICommandMenu.d.ts","sourceRoot":"","sources":["../../src/ai/AICommandMenu.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AICommandMenu.d.ts","sourceRoot":"","sources":["../../src/ai/AICommandMenu.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,cAAc;IACd,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,iBAAiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CAC3C;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAiC;IAClD,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,yBAAyB,CAAC,CAAa;IAE/C,YACE,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,GAAE,MAAY,EACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,EAQ1C;IAED;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,IAAI,IAAI,IAAI,CAQX;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAOX;IAED,OAAO,CAAC,iBAAiB;YAwCX,YAAY;IAiC1B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CA6B3C;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAMd;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIInterceptor.d.ts","sourceRoot":"","sources":["../../src/ai/AIInterceptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"AIInterceptor.d.ts","sourceRoot":"","sources":["../../src/ai/AIInterceptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAqB/D,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,qBAAqB,CAAU;IAEvC,YACE,YAAY,GAAE,kBAAuB,EACrC,eAAe,GAAE,eAAe,GAAG,IAAW,EAC9C,qBAAqB,GAAE,OAAc,EAKtC;IAED;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAMhF;IAED;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAKvF;IAED;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAKjF;IAED;;;OAGG;IACG,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBrF;IAED;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9E;IAED;;;OAGG;IACG,YAAY,CAChB,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,EAC/D,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACxC,OAAO,CAAC,IAAI,CAAC,CA2Bf;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIService.d.ts","sourceRoot":"","sources":["../../src/ai/AIService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAoB,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"AIService.d.ts","sourceRoot":"","sources":["../../src/ai/AIService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAoB,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,eAAe,CAAgC;IAEvD,YACE,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,eAAe,GAAE,eAAe,GAAG,IAAW,EAa/C;IAED;;OAEG;IACH,YAAY,IAAI,cAAc,EAAE,CAE/B;IAED;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C/C;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAOhD;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAOjD;CACF"}
|
|
@@ -18,6 +18,13 @@ export interface CoreEditorConfig {
|
|
|
18
18
|
table?: boolean | AtriTableConfig;
|
|
19
19
|
/** 链接配置,省略时编辑态点击不导航 */
|
|
20
20
|
link?: AtriLinkConfig;
|
|
21
|
+
/** 基础格式(颜色 / 字号 / 字体 / 高亮 / 上下标)开关,默认开 */
|
|
22
|
+
formatting?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 内置代码块开关,默认开。
|
|
25
|
+
* false 时不注册 StarterKit 的 CodeBlock,节点名让给接入方自己的实现
|
|
26
|
+
*/
|
|
27
|
+
codeBlock?: boolean;
|
|
21
28
|
/**
|
|
22
29
|
* 复用外部的上传运行时
|
|
23
30
|
* AtriEditor 重建编辑器时会把同一个实例传进来,进行中的上传才不会丢
|
|
@@ -40,6 +47,8 @@ export declare class CoreEditor {
|
|
|
40
47
|
/** 占位符文本:由 Placeholder 扩展以函数形式每次读取,改值即可生效 */
|
|
41
48
|
private placeholderText;
|
|
42
49
|
private mediaRuntime;
|
|
50
|
+
/** 注入的那种要活过重建编辑器(门面持有),只能自己 new 的那个才归这里回收 */
|
|
51
|
+
private ownsMediaRuntime;
|
|
43
52
|
constructor(config: CoreEditorConfig);
|
|
44
53
|
private createEditor;
|
|
45
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreEditor.d.ts","sourceRoot":"","sources":["../../src/core/CoreEditor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"CoreEditor.d.ts","sourceRoot":"","sources":["../../src/core/CoreEditor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAUxE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EAChB,MAAM,UAAU,CAAC;AASlB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,qCAAqC;IACrC,KAAK,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC;IAChC,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAClC,uBAAuB;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAmB;IACjC,6CAA6C;IAC7C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAsB;IAC1C,6CAA6C;IAC7C,OAAO,CAAC,gBAAgB,CAAS;IAEjC,YAAY,MAAM,EAAE,gBAAgB,EAOnC;IAED,OAAO,CAAC,YAAY;IAiJpB;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI,CAErC;IAED;;OAEG;IACH,SAAS,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,CAehB;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,CAEhB;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI,CAE5D;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAEnB;IAED;;OAEG;IACH,OAAO,IAAI,OAAO,CAEjB;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAEnC;IAED;;OAEG;IACH,UAAU,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAEX;IAED;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnC;IAED;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGxC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAMd;CACF"}
|
|
@@ -13,6 +13,23 @@ export declare class I18nManager {
|
|
|
13
13
|
* 切换语言
|
|
14
14
|
*/
|
|
15
15
|
changeLanguage(lang: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* 注册语言包:给已存在的语言补词条,或引入一门内置清单之外的新语言。
|
|
18
|
+
*
|
|
19
|
+
* 内置词条是源码里的两个字面量对象,接入方改不到,于是 lang: 'ja' 只能静默回退中文
|
|
20
|
+
* ——看起来像"支持可扩展",实际没有入口。这里补上那个入口。
|
|
21
|
+
*
|
|
22
|
+
* overwrite 传 false:同名 key 以先注册的一方为准,防止后加载的包把内置文案悄悄换掉。
|
|
23
|
+
* 要自定义措辞走 toolbar.items 的 tooltip,那本来就是优先级更高的显式入口。
|
|
24
|
+
* 注册当前语言时补发一次 languageChanged,让已挂载的界面重取文案;
|
|
25
|
+
* 不是当前语言就不发,白重刷一遍界面没有意义。
|
|
26
|
+
*/
|
|
27
|
+
addResources(lang: string, resources: Record<string, unknown>): void;
|
|
28
|
+
/**
|
|
29
|
+
* 该语言是否已有语言包。未注册的语言不会抛错,只会按 fallbackLng 回退,
|
|
30
|
+
* 所以想知道有没有真的生效得问这里。
|
|
31
|
+
*/
|
|
32
|
+
hasLanguage(lang: string): boolean;
|
|
16
33
|
/**
|
|
17
34
|
* 监听语言变更,返回取消订阅的函数
|
|
18
35
|
*/
|
|
@@ -27,4 +44,12 @@ export declare class I18nManager {
|
|
|
27
44
|
* (t() 缺词条时原样返回 key,所以 tOr 已是类里的规矩,这里只补"可能压根没有 i18n"这一层)
|
|
28
45
|
*/
|
|
29
46
|
export declare function tOrFallback(i18n: I18nManager | undefined, key: string, fallback: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* 直接取中文原文。
|
|
49
|
+
*
|
|
50
|
+
* 中文词条本身就是这些控件的默认文案,再在组件里抄一份字面量就是给漂移留位置:
|
|
51
|
+
* 改一处、另一处不变,而 tOr 的回退值恰好是最不容易被发现出错的那条路径
|
|
52
|
+
* (只在没注入 i18n 或词条缺失时才露出来)。有词条可指的地方用它。
|
|
53
|
+
*/
|
|
54
|
+
export declare function zhText(key: string): string;
|
|
30
55
|
//# sourceMappingURL=I18nManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"I18nManager.d.ts","sourceRoot":"","sources":["../../src/core/I18nManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"I18nManager.d.ts","sourceRoot":"","sources":["../../src/core/I18nManager.ts"],"names":[],"mappings":"AAwNA,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAe;IAE/B,YAAY,IAAI,GAAE,MAAa,EAa9B;IAED;;OAEG;IACH,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAExD;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAG5E;IAED;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhD;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAKnE;IAED;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAG7D;IAED;;OAEG;IACH,WAAW,IAAI,MAAM,CAEpB;CACF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU1C"}
|
package/dist/core/LinkPanel.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkPanel.d.ts","sourceRoot":"","sources":["../../src/core/LinkPanel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAiC;IACpD,qCAAqC;IACrC,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY,OAAO,EAAE,gBAAgB,EAWpC;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAMhC;IAED,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAU9B;IAED,KAAK,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"LinkPanel.d.ts","sourceRoot":"","sources":["../../src/core/LinkPanel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAiC;IACpD,qCAAqC;IACrC,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY,OAAO,EAAE,gBAAgB,EAWpC;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAMhC;IAED,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAU9B;IAED,KAAK,IAAI,IAAI,CAiBZ;IAED,OAAO,IAAI,IAAI,CAKd;IAED;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAcnB;IAEF,OAAO,CAAC,CAAC;IAIT,+CAA+C;IAC/C,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,KAAK;IA+Db,qEAAqE;IACrE,OAAO,CAAC,KAAK;IAyBb,OAAO,CAAC,MAAM;CAIf"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* MarkdownService - Markdown 解析/序列化服务
|
|
3
3
|
*/
|
|
4
4
|
import { type Editor, type JSONContent } from '@tiptap/core';
|
|
5
|
-
import type { AtriMarkdownConfig } from '../types';
|
|
5
|
+
import type { AtriMarkdownConfig, MarkdownLoss } from '../types';
|
|
6
6
|
export declare class MarkdownService {
|
|
7
7
|
private editor;
|
|
8
8
|
private config;
|
|
@@ -34,6 +34,17 @@ export declare class MarkdownService {
|
|
|
34
34
|
* Markdown 转 JSON
|
|
35
35
|
*/
|
|
36
36
|
markdownToJSON(markdown: string): JSONContent;
|
|
37
|
+
/**
|
|
38
|
+
* 这一趟 getMarkdown() 会丢掉什么,判据见 markdown-losses.ts
|
|
39
|
+
*
|
|
40
|
+
* Markdown 关闭时返回空数组:那时 getMarkdown() 走的是整篇 HTML 的降级转换,
|
|
41
|
+
* 不按类型分派,也就没有"哪个类型没有 renderer"可问。
|
|
42
|
+
*/
|
|
43
|
+
getLosses(): MarkdownLoss[];
|
|
44
|
+
/**
|
|
45
|
+
* 有没有内容在导出 Markdown 时会丢,命名对齐 hasPendingUploads()
|
|
46
|
+
*/
|
|
47
|
+
hasLossyContent(): boolean;
|
|
37
48
|
/**
|
|
38
49
|
* 是否启用
|
|
39
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownService.d.ts","sourceRoot":"","sources":["../../src/core/MarkdownService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownService.d.ts","sourceRoot":"","sources":["../../src/core/MarkdownService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIjE,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAqB;IAEnC,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,kBAAuB,EAM1D;IAED;;OAEG;IACH,OAAO,KAAK,OAAO,GAElB;IAED;;;;OAIG;IACH,WAAW,IAAI,MAAM,CAMpB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI,CAMpD;IAED;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUvC;IAED;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnC;IAED;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAe5C;IAED;;;;;OAKG;IACH,SAAS,IAAI,YAAY,EAAE,CAO1B;IAED;;OAEG;IACH,eAAe,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,SAAS,IAAI,OAAO,CAEnB;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StyleOptionPanel - 颜色 / 字号 / 字体的选择面板
|
|
3
|
+
*
|
|
4
|
+
* 这些项不是按钮:它们要的是一组取值,所以是一个挂在 document.body 上的浮层,
|
|
5
|
+
* 定位、外点/Escape 关闭、主题类复制三段全走 floating-panel 公共底盘(与
|
|
6
|
+
* TableGridPanel、InsertPanel 同一套)。
|
|
7
|
+
*
|
|
8
|
+
* 面板只有一份实例,由 ToolbarManager 持有:同时最多开一个,四个入口共用一个实例
|
|
9
|
+
* 也比四个各自留着 DOM 干净。代价是 toggle 要分清"点的是同一个触发器"还是"换了一个"
|
|
10
|
+
* ——换了就重建,不能因为已经开着就直接关,否则点字号再点字体会得到"什么都没发生"。
|
|
11
|
+
*/
|
|
12
|
+
import type { Editor } from '@tiptap/core';
|
|
13
|
+
import { type I18nManager } from './I18nManager';
|
|
14
|
+
import type { StyleOption } from './style-presets';
|
|
15
|
+
export interface StylePanelSpec {
|
|
16
|
+
/**
|
|
17
|
+
* 这个入口的标识(如 'textColor')。面板是四个入口共用的一个实例,
|
|
18
|
+
* 而每个触发按钮的按下态只能属于自己——没有这个 key 就会四个一起亮
|
|
19
|
+
*/
|
|
20
|
+
key: string;
|
|
21
|
+
/** 面板的无障碍名字,也是列表形状下的提示行 */
|
|
22
|
+
label: string;
|
|
23
|
+
/** grid 是色块方阵,list 是一行一个文字选项 */
|
|
24
|
+
shape: 'grid' | 'list';
|
|
25
|
+
options: StyleOption[];
|
|
26
|
+
/** 选定一个取值。关闭面板由内部负责 */
|
|
27
|
+
onPick: (value: string) => void;
|
|
28
|
+
/** 「清除」行:把该属性 unset 掉而不是设成某个值 */
|
|
29
|
+
clearLabel?: string;
|
|
30
|
+
/** 「其他颜色」行,用原生取色器取任意值 */
|
|
31
|
+
customColorLabel?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface StyleOptionPanelOptions {
|
|
34
|
+
editor: Editor;
|
|
35
|
+
i18n?: I18nManager;
|
|
36
|
+
/** 开合时把控制权交回工具栏:按钮的 active 与 aria-expanded 由它维护 */
|
|
37
|
+
onOpenChange?: (open: boolean) => void;
|
|
38
|
+
}
|
|
39
|
+
export declare class StyleOptionPanel {
|
|
40
|
+
private editor;
|
|
41
|
+
private i18n?;
|
|
42
|
+
private onOpenChange?;
|
|
43
|
+
private element;
|
|
44
|
+
private floating;
|
|
45
|
+
private detachDismiss;
|
|
46
|
+
private detachTheme;
|
|
47
|
+
/** 当前锚在哪个触发器上:同一个再点是关,换一个是改开那个 */
|
|
48
|
+
private anchor;
|
|
49
|
+
/** 当前开着的是哪个入口的 spec.key,工具栏据此把按下态只给那一个按钮 */
|
|
50
|
+
private currentKey;
|
|
51
|
+
private rows;
|
|
52
|
+
constructor(options: StyleOptionPanelOptions);
|
|
53
|
+
get isOpen(): boolean;
|
|
54
|
+
get openKey(): string | null;
|
|
55
|
+
/** 面板是否正开在某个指定触发器上——工具栏据此决定按钮的按下态给谁 */
|
|
56
|
+
isOpenFor(anchor: HTMLElement): boolean;
|
|
57
|
+
toggle(anchor: HTMLElement, spec: StylePanelSpec): void;
|
|
58
|
+
close(): void;
|
|
59
|
+
destroy(): void;
|
|
60
|
+
private open;
|
|
61
|
+
private labelOf;
|
|
62
|
+
private build;
|
|
63
|
+
private makeRow;
|
|
64
|
+
/**
|
|
65
|
+
* 原生取色器:不在预设色板里时用它。
|
|
66
|
+
*
|
|
67
|
+
* 监听 change 而不是 input——input 在拖动取色器的过程中每移一像素就触发一次,
|
|
68
|
+
* 每一次都是一条进撤销历史的事务,用户按一次撤销只能退一格,得按上百次才回到起点。
|
|
69
|
+
*/
|
|
70
|
+
private makeCustomColorRow;
|
|
71
|
+
private onKeyDown;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=StyleOptionPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StyleOptionPanel.d.ts","sourceRoot":"","sources":["../../src/core/StyleOptionPanel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,uBAAuB;IACvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,YAAY,CAAC,CAA0B;IAE/C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAA4B;IAC1C,4CAA4C;IAC5C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,IAAI,CAA2B;IAEvC,YAAY,OAAO,EAAE,uBAAuB,EAI3C;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAED,uCAAuC;IACvC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEtC;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAStD;IAED,KAAK,IAAI,IAAI,CAcZ;IAED,OAAO,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,IAAI;IAaZ,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,KAAK;IAkCb,OAAO,CAAC,OAAO;IA4Cf;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,SAAS;CAoBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableGridPanel.d.ts","sourceRoot":"","sources":["../../src/core/TableGridPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,YAAY,CAAC,CAA0B;IAE/C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,6BAA6B;IAC7B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,6CAA6C;IAC7C,OAAO,CAAC,KAAK,CAAqB;IAElC,YAAY,OAAO,EAAE,qBAAqB,EAIzC;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAYhC;IAED,KAAK,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"TableGridPanel.d.ts","sourceRoot":"","sources":["../../src/core/TableGridPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,YAAY,CAAC,CAA0B;IAE/C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,6BAA6B;IAC7B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,6CAA6C;IAC7C,OAAO,CAAC,KAAK,CAAqB;IAElC,YAAY,OAAO,EAAE,qBAAqB,EAIzC;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAYhC;IAED,KAAK,IAAI,IAAI,CAcZ;IAED,OAAO,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,CAAC;IAIT,OAAO,CAAC,KAAK;IAyCb;;OAEG;IACH,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,SAAS;CA0BlB"}
|
package/dist/core/TableMenu.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableMenu.d.ts","sourceRoot":"","sources":["../../src/core/TableMenu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,
|
|
1
|
+
{"version":3,"file":"TableMenu.d.ts","sourceRoot":"","sources":["../../src/core/TableMenu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAGtE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAoID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAA2B;IAC9C,mDAAmD;IACnD,OAAO,CAAC,SAAS,CAAS;IAE1B,YAAY,OAAO,EAAE,gBAAgB,EAepC;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,IAAI,IAAI,CASd;IAED,OAAO,CAAC,CAAC;IAIT;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,CAeV;IAEF,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAEZ;IAEF,OAAO,CAAC,QAAQ,CAEd;IAEF,OAAO,CAAC,OAAO,CAGb;IAEF,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,IAAI;IAUZ;;;OAGG;IACH,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,KAAK;IAuCb,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAYpB;;;;OAIG;IACH,OAAO,CAAC,MAAM;YA4BA,QAAQ;CAwBvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/core/ThemeManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kCAAkC;AAClC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/core/ThemeManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kCAAkC;AAClC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAKzD,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAY;IAEhC,YAAY,SAAS,EAAE,WAAW,EAAE,KAAK,GAAE,SAAmB,EAI7D;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAG/B;IAED;;OAEG;IACH,WAAW,IAAI,IAAI,CASlB;CACF"}
|