antdv-next-tiptap 1.0.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/LICENSE +21 -0
- package/README.md +282 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.css +2 -0
- package/dist/index.mjs +9132 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/src/commands/colorButton.vue.d.ts +15 -0
- package/dist/types/src/commands/fontFamilySelect.vue.d.ts +7 -0
- package/dist/types/src/commands/fontSizeSelect.vue.d.ts +7 -0
- package/dist/types/src/commands/fullscreenButton.vue.d.ts +7 -0
- package/dist/types/src/commands/headingSelect.vue.d.ts +7 -0
- package/dist/types/src/commands/imageButton.vue.d.ts +7 -0
- package/dist/types/src/commands/imageModal.vue.d.ts +23 -0
- package/dist/types/src/commands/imageView.vue.d.ts +93 -0
- package/dist/types/src/commands/linkButton.vue.d.ts +7 -0
- package/dist/types/src/commands/listSelect.vue.d.ts +7 -0
- package/dist/types/src/commands/tableButton.vue.d.ts +7 -0
- package/dist/types/src/commands/tableToolbar.vue.d.ts +7 -0
- package/dist/types/src/commands/taskItemView.vue.d.ts +4 -0
- package/dist/types/src/commands/textBubbleMenu.vue.d.ts +7 -0
- package/dist/types/src/commands/videoButton.vue.d.ts +7 -0
- package/dist/types/src/commands/videoModal.vue.d.ts +21 -0
- package/dist/types/src/commands/videoView.vue.d.ts +93 -0
- package/dist/types/src/extensions/base.d.ts +2 -0
- package/dist/types/src/extensions/blockquote.d.ts +6 -0
- package/dist/types/src/extensions/bold.d.ts +2 -0
- package/dist/types/src/extensions/bulletList.d.ts +2 -0
- package/dist/types/src/extensions/clearFormat.d.ts +7 -0
- package/dist/types/src/extensions/code.d.ts +6 -0
- package/dist/types/src/extensions/codeBlock.d.ts +6 -0
- package/dist/types/src/extensions/color.d.ts +2 -0
- package/dist/types/src/extensions/fontFamily.d.ts +6 -0
- package/dist/types/src/extensions/fontSize.d.ts +6 -0
- package/dist/types/src/extensions/fullscreen.d.ts +2 -0
- package/dist/types/src/extensions/heading.d.ts +2 -0
- package/dist/types/src/extensions/highlight.d.ts +7 -0
- package/dist/types/src/extensions/horizontalRule.d.ts +6 -0
- package/dist/types/src/extensions/image.d.ts +2 -0
- package/dist/types/src/extensions/index.d.ts +3 -0
- package/dist/types/src/extensions/italic.d.ts +2 -0
- package/dist/types/src/extensions/link.d.ts +6 -0
- package/dist/types/src/extensions/orderedList.d.ts +2 -0
- package/dist/types/src/extensions/print.d.ts +2 -0
- package/dist/types/src/extensions/strike.d.ts +6 -0
- package/dist/types/src/extensions/table.d.ts +2 -0
- package/dist/types/src/extensions/taskList.d.ts +2 -0
- package/dist/types/src/extensions/textAlign.d.ts +2 -0
- package/dist/types/src/extensions/textStyle.d.ts +7 -0
- package/dist/types/src/extensions/types.d.ts +31 -0
- package/dist/types/src/extensions/underline.d.ts +6 -0
- package/dist/types/src/extensions/undoRedo.d.ts +6 -0
- package/dist/types/src/extensions/video.d.ts +2 -0
- package/dist/types/src/extensions/videoNode.d.ts +27 -0
- package/dist/types/src/injectionKeys.d.ts +5 -0
- package/dist/types/src/tiptap.vue.d.ts +30 -0
- package/dist/types/src/tiptapProps.d.ts +39 -0
- package/dist/types/src/toolbarItem.vue.d.ts +9 -0
- package/package.json +112 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Antdv Next Tiptap
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img alt="npm" src="https://img.shields.io/npm/v/antdv-next-tiptap">
|
|
3
|
+
<img alt="npm peer dependency version" src="https://img.shields.io/badge/vue-%5E3.0.0-vue">
|
|
4
|
+
<img alt="GitHub" src="https://img.shields.io/github/license/pengyinghao/antdv-next-tiptap">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<h3 align="center">Antdv Next Tiptap 富文本编辑器</h3>
|
|
8
|
+
|
|
9
|
+
<p align="center"><strong>现代化、轻量级、易扩展的 Vue 3 富文本编辑器</strong></p>
|
|
10
|
+
|
|
11
|
+
基于 [Tiptap](https://github.com/ueberdosis/tiptap) 和 [antdv-next](https://github.com/antdv-next/antdv-next) 为 Vue 3 打造的现代化富文本编辑器,专为构建高质量内容管理系统而设计。
|
|
12
|
+
|
|
13
|
+
### ✨ 核心特色
|
|
14
|
+
|
|
15
|
+
- **🔌 插件化架构** - 20+ 开箱即用的扩展插件,可按需启用
|
|
16
|
+
- **🎨 精美 UI** - 深度集成 Ant Design Vue,符合现代交互规范
|
|
17
|
+
- **📱 响应式设计** - 支持多端自适应,移动友好
|
|
18
|
+
- **⚡ 高性能** - 基于现代编辑器框架,流畅的编辑体验
|
|
19
|
+
- **🔧 高度可定制** - 灵活的插件配置和内容输出格式
|
|
20
|
+
- **📝 多格式支持** - 支持 HTML 和 JSON 内容输出
|
|
21
|
+
- **🖼️ 媒体处理** - 完善的图片、视频上传机制
|
|
22
|
+
- **🎯 TypeScript** - 完整的类型定义,更好的开发体验
|
|
23
|
+
|
|
24
|
+
### 🎯 设计理念
|
|
25
|
+
|
|
26
|
+
为 Vue 3 开发者提供最优雅、最易用的富文本编辑解决方案,让内容创作与编辑变得简单而愉快。
|
|
27
|
+
|
|
28
|
+
## 📦 安装
|
|
29
|
+
|
|
30
|
+
```shell
|
|
31
|
+
pnpm add antdv-next-tiptap
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```shell
|
|
35
|
+
npm install antdv-next-tiptap
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### 全局注册
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
import { createApp } from 'vue'
|
|
42
|
+
import App from './App.vue'
|
|
43
|
+
import AntdvNext from 'antdv-next'
|
|
44
|
+
import AntdvNextTiptap from 'antdv-next-tiptap'
|
|
45
|
+
import 'antdv-next-tiptap/index.css'
|
|
46
|
+
|
|
47
|
+
const app = createApp(App)
|
|
48
|
+
|
|
49
|
+
app.use(AntdvNext)
|
|
50
|
+
app.use(AntdvNextTiptap)
|
|
51
|
+
// 全局可直接使用 <Tiptap>
|
|
52
|
+
|
|
53
|
+
app.mount('#app')
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### 按需引入
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
<template>
|
|
60
|
+
<Tiptap v-model="content" />
|
|
61
|
+
</template>
|
|
62
|
+
|
|
63
|
+
<script setup>
|
|
64
|
+
import { Tiptap } from 'antdv-next-tiptap'
|
|
65
|
+
import 'antdv-next-tiptap/index.css'
|
|
66
|
+
</script>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 🚀 基本用法
|
|
70
|
+
|
|
71
|
+
```vue
|
|
72
|
+
<template>
|
|
73
|
+
<Tiptap v-model="content" :height="400" />
|
|
74
|
+
</template>
|
|
75
|
+
|
|
76
|
+
<script setup>
|
|
77
|
+
import { ref } from 'vue'
|
|
78
|
+
import { Tiptap } from 'antdv-next-tiptap'
|
|
79
|
+
import 'antdv-next-tiptap/index.css'
|
|
80
|
+
|
|
81
|
+
const content = ref('<h1>标题</h1><p>这个编辑器很棒!</p>')
|
|
82
|
+
</script>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 📔 Props
|
|
86
|
+
|
|
87
|
+
### `modelValue`
|
|
88
|
+
|
|
89
|
+
类型:`string`
|
|
90
|
+
|
|
91
|
+
默认值:`''`
|
|
92
|
+
|
|
93
|
+
编辑器内容,配合 `v-model` 使用。
|
|
94
|
+
|
|
95
|
+
### `height`
|
|
96
|
+
|
|
97
|
+
类型:`number`
|
|
98
|
+
|
|
99
|
+
默认值:`300`
|
|
100
|
+
|
|
101
|
+
内容区域高度,单位为像素。
|
|
102
|
+
|
|
103
|
+
### `editable`
|
|
104
|
+
|
|
105
|
+
类型:`boolean`
|
|
106
|
+
|
|
107
|
+
默认值:`true`
|
|
108
|
+
|
|
109
|
+
是否可编辑。设为 `false` 时编辑器进入只读模式。
|
|
110
|
+
|
|
111
|
+
```html
|
|
112
|
+
<Tiptap :editable="false" />
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### `outputFormat`
|
|
116
|
+
|
|
117
|
+
类型:`'html' | 'json'`
|
|
118
|
+
|
|
119
|
+
默认值:`'html'`
|
|
120
|
+
|
|
121
|
+
`modelValue` 的输出格式。
|
|
122
|
+
|
|
123
|
+
- `'html'`:输出 HTML 字符串
|
|
124
|
+
- `'json'`:输出 JSON 字符串(Tiptap 文档格式)
|
|
125
|
+
|
|
126
|
+
```html
|
|
127
|
+
<Tiptap output-format="json" />
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `disabledPlugins`
|
|
131
|
+
|
|
132
|
+
类型:`PluginName[]`
|
|
133
|
+
|
|
134
|
+
默认值:`[]`
|
|
135
|
+
|
|
136
|
+
需要禁用的插件名称列表,默认启用全部插件。
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<Tiptap :disabled-plugins="['image', 'video', 'table']" />
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
可用插件名称:
|
|
143
|
+
|
|
144
|
+
| 插件名 | 说明 |
|
|
145
|
+
| ---------------- | -------------------- |
|
|
146
|
+
| `undoRedo` | 撤销 / 重做 |
|
|
147
|
+
| `heading` | 标题级别 |
|
|
148
|
+
| `bold` | 加粗 |
|
|
149
|
+
| `italic` | 斜体 |
|
|
150
|
+
| `underline` | 下划线 |
|
|
151
|
+
| `strike` | 删除线 |
|
|
152
|
+
| `code` | 行内代码 |
|
|
153
|
+
| `codeBlock` | 代码块(含语法高亮) |
|
|
154
|
+
| `blockquote` | 引用块 |
|
|
155
|
+
| `bulletList` | 无序列表 |
|
|
156
|
+
| `orderedList` | 有序列表 |
|
|
157
|
+
| `taskList` | 任务清单 |
|
|
158
|
+
| `list` | 列表工具 |
|
|
159
|
+
| `textAlign` | 文本对齐 |
|
|
160
|
+
| `horizontalRule` | 分割线 |
|
|
161
|
+
| `clearFormat` | 清除格式 |
|
|
162
|
+
| `color` | 文字颜色 |
|
|
163
|
+
| `highlight` | 文字高亮 |
|
|
164
|
+
| `link` | 超链接 |
|
|
165
|
+
| `image` | 图片插入与上传 |
|
|
166
|
+
| `video` | 视频嵌入 |
|
|
167
|
+
| `table` | 表格 |
|
|
168
|
+
| `fontFamily` | 字体 |
|
|
169
|
+
| `fontSize` | 字号 |
|
|
170
|
+
| `print` | 打印 |
|
|
171
|
+
| `fullscreen` | 全屏模式 |
|
|
172
|
+
|
|
173
|
+
### `uploadImage`
|
|
174
|
+
|
|
175
|
+
类型:`(file: File) => Promise<string>`
|
|
176
|
+
|
|
177
|
+
默认值:`undefined`
|
|
178
|
+
|
|
179
|
+
自定义图片上传函数,返回图片最终 URL。未提供时图片以 base64 格式内嵌。
|
|
180
|
+
|
|
181
|
+
```html
|
|
182
|
+
<Tiptap :upload-image="handleUpload" />
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
const handleUpload = async (file: File): Promise<string> => {
|
|
187
|
+
const url = await uploadToOSS(file)
|
|
188
|
+
return url
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### `uploadVideo`
|
|
193
|
+
|
|
194
|
+
类型:`(file: File) => Promise<string>`
|
|
195
|
+
|
|
196
|
+
默认值:`undefined`
|
|
197
|
+
|
|
198
|
+
自定义视频上传函数,返回视频最终 URL。提供后工具栏会出现"本地上传"入口;未提供时仅支持输入视频地址。
|
|
199
|
+
|
|
200
|
+
```html
|
|
201
|
+
<Tiptap :upload-video="handleVideoUpload" />
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
const handleVideoUpload = async (file: File): Promise<string> => {
|
|
206
|
+
const url = await uploadToOSS(file)
|
|
207
|
+
return url
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### `wordCount`
|
|
212
|
+
|
|
213
|
+
类型:`true | number`
|
|
214
|
+
|
|
215
|
+
默认值:`undefined`
|
|
216
|
+
|
|
217
|
+
字符计数。传 `true` 仅展示计数;传 `number` 同时限制最大字符数。
|
|
218
|
+
|
|
219
|
+
```html
|
|
220
|
+
<!-- 仅展示计数 -->
|
|
221
|
+
<Tiptap :word-count="true" />
|
|
222
|
+
|
|
223
|
+
<!-- 计数并限制最多 500 字符 -->
|
|
224
|
+
<Tiptap :word-count="500" />
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## 👽 事件
|
|
228
|
+
|
|
229
|
+
### `change`
|
|
230
|
+
|
|
231
|
+
内容更新时触发,参数为当前输出字符串。
|
|
232
|
+
|
|
233
|
+
```vue
|
|
234
|
+
<template>
|
|
235
|
+
<Tiptap @change="onChange" />
|
|
236
|
+
</template>
|
|
237
|
+
|
|
238
|
+
<script setup>
|
|
239
|
+
const onChange = (value: string) => {
|
|
240
|
+
console.log(value)
|
|
241
|
+
}
|
|
242
|
+
</script>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### `blur`
|
|
246
|
+
|
|
247
|
+
编辑器失去焦点时触发,参数为当前输出字符串。
|
|
248
|
+
|
|
249
|
+
```vue
|
|
250
|
+
<Tiptap @blur="onBlur" />
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## 🎰 插槽
|
|
254
|
+
|
|
255
|
+
### `word-count`
|
|
256
|
+
|
|
257
|
+
自定义字符计数区域的 UI。
|
|
258
|
+
|
|
259
|
+
```vue
|
|
260
|
+
<Tiptap :word-count="500">
|
|
261
|
+
<template #word-count="{ count, limit }">
|
|
262
|
+
<span>{{ count }} / {{ limit }}</span>
|
|
263
|
+
</template>
|
|
264
|
+
</Tiptap>
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
插槽参数:
|
|
268
|
+
|
|
269
|
+
| 参数 | 类型 | 说明 |
|
|
270
|
+
| ------- | ---------------- | -------------------------- |
|
|
271
|
+
| `count` | `number` | 当前字符数 |
|
|
272
|
+
| `limit` | `true \| number` | `word-count` prop 的传入值 |
|
|
273
|
+
|
|
274
|
+
## 🙏 致谢
|
|
275
|
+
|
|
276
|
+
本项目受 [element-tiptap](https://github.com/Leecason/element-tiptap) 启发,感谢 [Tiptap](https://github.com/ueberdosis/tiptap) 和 [Ant Design Vue](https://antdv-next.antfu.me/) 的开源支持。
|
|
277
|
+
|
|
278
|
+
## 🚀 快速启动
|
|
279
|
+
|
|
280
|
+
想快速体验本项目的魅力?我们为您准备了在线演示:
|
|
281
|
+
|
|
282
|
+
[](https://github.com/pengyinghao/antdv-next-tiptap)
|
package/dist/favicon.ico
ADDED
|
Binary file
|
package/dist/index.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
.table-toolbar[data-v-d617e684]{background-color:var(--ant-color-bg-elevated);border:1px solid var(--ant-color-border-secondary);border-radius:8px;align-items:center;gap:2px;padding-block:4px;padding-inline:6px;display:flex;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.table-toolbar-divider[data-v-d617e684]{background-color:var(--ant-color-border-secondary);align-self:center;width:1px;height:16px;margin-inline:2px}.table-toolbar-row-height[data-v-d617e684]{color:var(--ant-color-text-secondary);align-items:center;gap:4px;padding-inline:4px;display:flex}.table-toolbar-row-height .row-height-icon[data-v-d617e684]{flex-shrink:0}.table-toolbar-row-height[data-v-d617e684] .ant-input-number{width:52px;height:22px;font-size:12px}.table-toolbar-row-height[data-v-d617e684] .ant-input-number .ant-input-number-input{text-align:center;height:22px;padding:0 4px}.table-toolbar-btn-wrap[data-v-d617e684]{display:inline-flex}.table-toolbar-btn[data-v-d617e684]{--un-outline-style:none;--un-border-style:none;cursor:pointer;width:26px;height:26px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:var(--ant-color-text);background:0 0;border-style:none;border-radius:4px;outline-style:none;justify-content:center;align-items:center;display:flex}@property --un-ease{syntax:"*";inherits:false}.table-toolbar-btn[data-v-d617e684]:hover:not(.disabled){background:var(--ant-color-primary-bg);color:var(--ant-color-primary)}.table-toolbar-btn.danger[data-v-d617e684]:hover:not(.disabled){background:var(--ant-color-error-bg);color:var(--ant-color-error)}.table-toolbar-btn.disabled[data-v-d617e684]{opacity:.3;cursor:not-allowed}.toolbar-btn[data-v-f31615a1]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-f31615a1]:hover{background-color:var(--ant-color-primary-bg)}.color-swatch[data-v-f31615a1]{border-radius:3.40282e38px;width:14px;height:2px;display:block}.color-footer[data-v-f31615a1]{justify-content:flex-end;align-items:center;gap:8px;padding-block:6px;padding-inline:8px;display:flex}.text-bubble-menu[data-v-a937e33a]{background-color:var(--ant-color-bg-elevated);border:1px solid var(--ant-color-border-secondary);border-radius:8px;align-items:center;gap:2px;padding-block:4px;padding-inline:6px;display:flex;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.bubble-btn[data-v-a937e33a]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}@property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}.bubble-btn[data-v-a937e33a]:hover,.bubble-btn--active[data-v-a937e33a]{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.bubble-divider[data-v-a937e33a]{background-color:var(--ant-color-border-secondary);flex-shrink:0;align-self:center;width:1px;height:16px;margin-inline:2px}.toolbar-btn[data-v-8867673c]{cursor:pointer;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;gap:2px;padding-inline:6px;display:flex}.toolbar-btn[data-v-8867673c]:hover,.toolbar-btn.active[data-v-8867673c]{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.list-item[data-v-8867673c]{min-width:100px;color:var(--ant-color-text);align-items:center;gap:8px;padding-block:2px;padding-inline:4px;display:flex}.list-item.active[data-v-8867673c]{color:var(--ant-color-primary)}.toolbar-btn[data-v-f4bfe7b7]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-f4bfe7b7]:hover{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.toolbar-btn[data-v-d1aa64d7]{cursor:pointer;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;gap:2px;padding-inline:6px;display:flex}.toolbar-btn[data-v-d1aa64d7]:hover,.toolbar-btn.active[data-v-d1aa64d7]{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.heading-item[data-v-d1aa64d7]{color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;align-items:center;gap:8px;min-width:100px;padding-block:2px;padding-inline:4px;display:flex}.heading-item.active[data-v-d1aa64d7]{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) }.form[data-v-7a6e16d1]{padding-top:16px}.form__row[data-v-7a6e16d1]{gap:16px;display:flex}.toolbar-btn[data-v-07611565]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-07611565]:hover{background-color:var(--ant-color-primary-bg)}.toolbar-btn.is-uploading[data-v-07611565]{opacity:.8;cursor:not-allowed}.image-view[data-v-8c741472]{--un-leading:0;line-height:0}@property --un-leading{syntax:"*";inherits:false}.image-view--inline[data-v-8c741472]{margin-block:4px;display:inline-block}.image-view--block[data-v-8c741472]{text-align:center;margin-block:8px;display:block}.image-view--left[data-v-8c741472]{float:left;margin-block:4px;margin-right:8px;display:inline-block}.image-view--right[data-v-8c741472]{float:right;margin-block:4px;margin-left:8px;display:inline-block}.image-view__body[data-v-8c741472]{--un-leading:0;cursor:pointer;line-height:0;display:inline-block}.image-view__body[data-v-8c741472] img{vertical-align:bottom;box-sizing:border-box;max-width:100%}.image-toolbar[data-v-8c741472]{align-items:center;gap:2px;display:flex}.image-toolbar__btn[data-v-8c741472]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.image-toolbar__btn[data-v-8c741472]:hover,.image-toolbar__btn--active[data-v-8c741472]{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.image-toolbar__btn--danger[data-v-8c741472]:hover{color:color-mix(in srgb, var(--ant-color-error) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-error-bg)}.image-toolbar__divider[data-v-8c741472]{background-color:var(--ant-color-border-secondary);flex-shrink:0;width:1px;height:16px;margin-inline:2px}.toolbar-btn[data-v-60dcce95]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-60dcce95]:hover{background-color:var(--ant-color-primary-bg)}.toolbar-btn.active[data-v-60dcce95]{color:color-mix(in srgb, var(--ant-color-primary-text) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.link-form[data-v-60dcce95]{padding-top:16px}.toolbar-btn[data-v-ae679706]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-ae679706]:hover{background-color:var(--ant-color-primary-bg)}.table-grid-selector[data-v-ae679706]{-webkit-user-select:none;user-select:none;padding:8px}.table-grid-selector .grid-row[data-v-ae679706]{gap:2px;margin-bottom:2px;display:flex}.table-grid-selector .grid-cell[data-v-ae679706]{cursor:pointer;width:16px;height:16px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);background:var(--ant-color-bg-container);border:1px solid var(--ant-color-border-secondary);border-radius:2px}.table-grid-selector .grid-cell.selected[data-v-ae679706]{background-color:var(--ant-color-primary-bg);border-color:var(--ant-color-primary)}.table-grid-selector .grid-label[data-v-ae679706]{color:color-mix(in srgb, var(--ant-color-text-secondary) var(--un-text-opacity), transparent) ;text-align:center;margin-top:6px;font-size:12px}.task-item[data-v-26025aef]{align-items:baseline;gap:8px;display:flex}.task-content[data-v-26025aef]{flex:1}.task-content.is-checked[data-v-26025aef]{opacity:.5;text-decoration-line:line-through}.form[data-v-98919f10]{padding-top:16px;padding-bottom:8px}.tip[data-v-98919f10]{color:color-mix(in srgb, var(--ant-color-warning) var(--un-text-opacity), transparent) ;margin-left:8px;font-size:12px}.toolbar-btn[data-v-5a3e73c1]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-5a3e73c1]:hover{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.toolbar-btn.is-uploading[data-v-5a3e73c1]{opacity:.8;cursor:not-allowed}.video-view{margin-block:8px;display:block}.video-view__body{cursor:pointer;box-sizing:border-box;border-radius:4px;outline:none;display:inline-block}.video-view__body video{border-radius:4px;max-width:100%;display:block}.video-toolbar{align-items:center;gap:2px;display:flex}.video-toolbar__btn{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.video-toolbar__btn:hover{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.video-toolbar__btn--danger:hover{color:color-mix(in srgb, var(--ant-color-error) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-error-bg)}.video-toolbar__divider{background-color:var(--ant-color-border-secondary);flex-shrink:0;width:1px;height:16px;margin-inline:2px}.toolbar-btn[data-v-630d3b1a]{cursor:pointer;width:32px;height:32px;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);color:color-mix(in srgb, var(--ant-color-text) var(--un-text-opacity), transparent) ;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toolbar-btn[data-v-630d3b1a]:hover{color:color-mix(in srgb, var(--ant-color-primary) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.toolbar-btn.active[data-v-630d3b1a]{color:color-mix(in srgb, var(--ant-color-primary-text) var(--un-text-opacity), transparent) ;background-color:var(--ant-color-primary-bg)}.toolbar-btn.disabled[data-v-630d3b1a]{opacity:.3;cursor:not-allowed;pointer-events:none}html.dark{--tiptap-sb-thumb:#fff3;--tiptap-sb-thumb-active:#fff6}.editor{width:100%;transition-property:all;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.3s;--un-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);background-color:var(--ant-color-bg-container);border:1px solid var(--ant-color-border-secondary);border-radius:8px}.editor:fullscreen{background:var(--ant-color-bg-container);border-radius:0;flex-direction:column;display:flex;overflow:hidden}.editor:fullscreen .editor-content{flex:1;overflow:hidden}.editor:fullscreen .editor-content .tiptap{height:100%!important}.editor-toolbar{box-sizing:border-box;padding-top:var(--ant-padding-sm);padding-bottom:var(--ant-padding-xs);padding-left:var(--ant-padding-sm);padding-right:var(--ant-padding-sm);border-bottom:1px solid var(--ant-color-border-secondary);flex-wrap:wrap;align-items:center;gap:2px;display:flex}.editor-content{padding-top:var(--ant-padding-xs)}.editor-content .tiptap{box-sizing:border-box;height:100%;padding-bottom:var(--ant-padding-sm);padding-left:var(--ant-padding-sm);padding-right:var(--ant-padding-sm);scrollbar-width:thin;scrollbar-color:transparent transparent;overflow-y:auto}.editor-content .tiptap:focus-visible{--un-outline-style:none;outline-style:none}.editor-content .tiptap:hover{scrollbar-color:var(--tiptap-sb-thumb,#0003) transparent}.editor-content .tiptap::-webkit-scrollbar{width:8px}.editor-content .tiptap::-webkit-scrollbar-track{background-color:#0000}.editor-content .tiptap::-webkit-scrollbar-thumb{border-width:2px;border-color:#0000;border-color:var(--ant-color-bg-solid);background-color:#0000;background-clip:padding-box;border-radius:10px;transition:background-color .2s}.editor-content .tiptap:hover::-webkit-scrollbar-thumb{background-color:var(--tiptap-sb-thumb,#0003)}.editor-content .tiptap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--tiptap-sb-thumb-active,#0006)}.editor-content .tiptap p{outline:none;margin:0}.editor-content .tiptap h1,.editor-content .tiptap h2,.editor-content .tiptap h3,.editor-content .tiptap h4,.editor-content .tiptap h5{margin-top:20px;margin-bottom:20px;font-weight:700}.editor-content .tiptap h1:first-child,.editor-content .tiptap h2:first-child,.editor-content .tiptap h3:first-child,.editor-content .tiptap h4:first-child,.editor-content .tiptap h5:first-child{margin-top:0}.editor-content .tiptap h1:last-child,.editor-content .tiptap h2:last-child,.editor-content .tiptap h3:last-child,.editor-content .tiptap h4:last-child,.editor-content .tiptap h5:last-child{margin-bottom:0}.editor-content .tiptap h1{font-size:2em}.editor-content .tiptap h2{font-size:1.5em}.editor-content .tiptap h3{font-size:1.25em}.editor-content .tiptap h4{font-size:1em}.editor-content .tiptap h5{font-size:.875em}.editor-content .tiptap ul,.editor-content .tiptap ol{margin:0 0 0 24px;padding:5px 0;list-style-type:none}.editor-content .tiptap li>p{margin:0}.editor-content .tiptap li>p:first-child:before{content:counter(tiptap-counter) ".";text-align:right;width:24px;margin-left:-24px;line-height:1;display:inline-block;position:relative;top:0;left:-5px}.editor-content .tiptap ul li>p:first-child:before{content:"•";text-align:center}.editor-content .tiptap ol{counter-reset:tiptap-counter}.editor-content .tiptap ol li>p:first-child:before{counter-increment:tiptap-counter}.editor-content .tiptap ul[data-type=taskList]{padding-left:calc(var(--spacing) * 0);margin-left:5px;list-style-type:none}.editor-content .tiptap ul[data-type=taskList] li[data-type=taskItem]{flex-direction:row;align-items:flex-start;width:100%;display:flex}.editor-content .tiptap a{color:var(--ant-color-primary);cursor:pointer}.editor-content .tiptap blockquote{color:color-mix(in srgb, var(--ant-color-text-secondary) var(--un-text-opacity), transparent) ;box-sizing:border-box;border-left:3px solid var(--ant-color-border-secondary);margin-block:8px;padding-left:12px}.editor-content .tiptap hr{--un-border-style:none;background-color:var(--ant-color-border-secondary);border-style:none;height:1px;margin-block:12px}.editor-content .tiptap img{float:none;max-width:100%;margin:12px 0;display:inline-block}.editor-content .tiptap pre{background-color:var(--ant-color-fill-secondary);border-radius:6px;margin-block:8px;padding:12px}.editor-content .tiptap pre code{font-size:13px;font-family:var(--font-mono)}.editor-word-count{text-align:right;padding-left:var(--ant-padding-sm);padding-right:var(--ant-padding-sm);padding-top:var(--ant-padding-xs);padding-bottom:var(--ant-padding-xs);color:var(--ant-color-text-tertiary);border-top:1px solid var(--ant-color-border-secondary);font-size:12px}.editor .tiptap table{margin:calc(var(--spacing) * 0);border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.editor .tiptap table tr[style*=height] td,.editor .tiptap table tr[style*=height] th{height:inherit}.editor .tiptap table td,.editor .tiptap table th{vertical-align:top;box-sizing:border-box;border:1px solid var(--ant-color-border-secondary);min-width:1em;position:relative}.editor .tiptap table td>*,.editor .tiptap table th>*{margin-bottom:calc(var(--spacing) * 0)}.editor .tiptap table td p,.editor .tiptap table th p{margin:calc(var(--spacing) * 0)}.editor .tiptap table th{--un-font-weight:var(--fontWeight-bold);font-weight:var(--fontWeight-bold);text-align:left}.editor .tiptap table .selectedCell:after{pointer-events:none;content:"";inset:calc(var(--spacing) * 0);z-index:2;background-color:var(--ant-color-primary);position:absolute}.editor .tiptap table .column-resize-handle{pointer-events:none;width:4px;top:calc(var(--spacing) * 0);background-color:var(--ant-color-primary);position:absolute;bottom:-2px;right:-2px}.editor .tiptap .tableWrapper{margin-block:calc(var(--spacing) * 6);overflow-x:auto}.editor .tiptap.resize-cursor{cursor:col-resize}
|
|
2
|
+
/*$vite$:1*/
|