@naersen/tts-rich-text 0.9.0 → 0.10.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 +34 -0
- package/README.md +23 -2
- package/dist/base.css +1 -1
- package/dist/components/tts-editor-root/index.vue.d.ts +2 -0
- package/dist/components/tts-rich-text/components/toolbar-popovers/language-popover.vue.d.ts +4 -1
- package/dist/components/tts-rich-text/components/toolbar-popovers/lock-tip.vue.d.ts +3 -0
- package/dist/components/tts-rich-text/components/toolbar-popovers/stop-popover.vue.d.ts +4 -1
- package/dist/components/tts-rich-text/editor/useEditorToolkit.d.ts +2 -0
- package/dist/components/tts-rich-text/editor/useRichTextEditor.d.ts +4 -0
- package/dist/components/tts-rich-text-editor/index.vue.d.ts +6 -0
- package/dist/core/config.d.ts +12 -3
- package/dist/core.js +265 -229
- package/dist/index.js +3071 -2957
- package/dist/type/index.d.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
4
4
|
|
|
5
|
+
## 0.10.0 - 2026-10-28
|
|
6
|
+
|
|
7
|
+
### 新增
|
|
8
|
+
|
|
9
|
+
- 原生支持 FV1(`voiceVersion = 3`)的 14 种语气标注,覆盖工具栏、右键菜单、节点回显、合成参数转换及音色切换确认;V1/V2 默认功能保持不变。
|
|
10
|
+
- 导出 `ToneOptions` 与 `isLockableTagType`,语气可在光标处插入,但不支持长按锁定。
|
|
11
|
+
|
|
12
|
+
### 修复
|
|
13
|
+
|
|
14
|
+
- 开发预览页补充 V3(FV1)音色版本选项,支持切换体验语气标注。
|
|
15
|
+
|
|
16
|
+
## 0.9.1 - 2026-09-24
|
|
17
|
+
|
|
18
|
+
### 新增
|
|
19
|
+
|
|
20
|
+
- 「停顿」「长停顿」弹层的自定义时长改为两步操作:点铅笔图标进入输入态并全选旧值,`Enter` 或再点对勾提交,`Esc` 放弃本次输入。不使用失焦提交,避免想取消时反而插入了一个标记。
|
|
21
|
+
- 确认过的自定义时长会留在槽位里,下一次点槽位本体即按该值插入;铅笔在已设置时半透明显示,便于判断当前值。已确认的值不再自动清除。
|
|
22
|
+
- 锁定态弹层底部的提示补充当前实际参数,形如「已锁定 0.5 秒,点击文本插入标记」,免得不记得锁的是多少秒。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
|
|
26
|
+
- 修复自定义停顿时长确认后未回填的问题。改用原生 `input` 后 `customTime` 只被读取、没有被写入,槽位一直停在「自定义」占位文案。
|
|
27
|
+
- 修复选中文本后浮层偶发跑到整行最左边的问题。选区刚好停在软换行边界时,浮层锚点会取到下一行行首,水平坐标越出视口左边界并被定位中间件夹到 `left: 0`;现在按选区方向显式指定参考光标哪一侧的字符(终点取左、起点取右)。
|
|
28
|
+
- 修复展开语种等参数项后,选中浮层右侧被编辑器卡片的圆角边框裁掉的问题。浮层改挂到 `document.body` 并使用 fixed 定位,脱离卡片 `overflow: hidden` 的裁剪范围。
|
|
29
|
+
|
|
30
|
+
### 变更
|
|
31
|
+
|
|
32
|
+
- 选中浮层与文本区右键面板的展开/收起箭头由字符 `▾` / `▴` 改为 SVG 图标,跟随文字颜色,展开时整体旋转 `180°`,切换过程不再有基线跳动。
|
|
33
|
+
- 新增 `editor-caret-down`、`editor-edit`、`editor-confirm` 三个编辑器图标。
|
|
34
|
+
|
|
35
|
+
### 升级提示
|
|
36
|
+
|
|
37
|
+
- 本次为增量调整,公开 API、文档协议与 TTS 输出格式均未变化。
|
|
38
|
+
|
|
5
39
|
## 0.9.0 - 2026-09-24
|
|
6
40
|
|
|
7
41
|
### 新增
|
package/README.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
面向 Vue 3 项目的 TTS 富文本编辑器。包内维护统一的 Tiptap 文档协议、TTS 标签、分句和数据转换;各业务项目通过 `features`、`services` 和 slots 注入差异,不再复制组件源码。
|
|
4
4
|
|
|
5
|
+
## FV1 语气标注
|
|
6
|
+
|
|
7
|
+
将 `voiceVersion` 设为 `3` 可启用 FV1:工具栏和光标处的右键菜单提供 14 种语气,隐藏语种标记。语气在光标处插入,不包裹选中文字,也不支持长按锁定;V1、V2 默认不显示语气工具。
|
|
8
|
+
|
|
9
|
+
语气沿用编辑器 JSON:`{ type: 'customTag', attrs: { categ: 'tone', payload: { code: '笑声' } } }`,保存后可以直接回显。`ToneOptions` 从主入口和 `/core` 导出,包含中文 `label`、`value` 和算法 `tag`。
|
|
10
|
+
|
|
11
|
+
`convertToTtsFormat()` 保持 `sentences + playments` 协议,例如笑声转换为 `action: 'insert'`、`model: 'control'`、`payload: '[laughter]'`、`actionCode: 'tone'`,位置使用句内文本偏移。这里提供的是语音标注组件,不提供标准 SSML XML 的导入或导出。
|
|
12
|
+
|
|
13
|
+
从 FV1 切换到其他引擎时,语气及已有冲突标签会触发确认;带语种标记切换到 FV1 时同样需要确认。取消保留内容,确认后沿用现有清空编辑器内容的行为。
|
|
14
|
+
|
|
5
15
|
## 环境要求
|
|
6
16
|
|
|
7
17
|
- Vue 3.4+
|
|
@@ -23,7 +33,7 @@ pnpm build
|
|
|
23
33
|
pnpm test:e2e
|
|
24
34
|
```
|
|
25
35
|
|
|
26
|
-
`format:check` 按仓库根目录的 `.prettierrc` 校验代码风格,不一致时用 `pnpm format` 自动修复。`build` 会依次完成类型检查、单元测试和组件库构建。`test:e2e` 使用本机 Chrome
|
|
36
|
+
`format:check` 按仓库根目录的 `.prettierrc` 校验代码风格,不一致时用 `pnpm format` 自动修复。`build` 会依次完成类型检查、单元测试和组件库构建。`test:e2e` 使用本机 Chrome 验证拼音标注、停顿插入、长按锁定、文本区右键面板、选区浮层标记与软换行边界上的浮层锚点、原主题样式和窄屏工具栏收纳。
|
|
27
37
|
|
|
28
38
|
## 安装
|
|
29
39
|
|
|
@@ -129,13 +139,24 @@ const getPlaybackSpeed = () => selectedVoice.value.speed / 50
|
|
|
129
139
|
工具栏中属于「光标插入类」的工具(默认为「停顿」「长停顿」)支持长按 `0.5` 秒锁定:
|
|
130
140
|
|
|
131
141
|
- 锁定后在文本区任意位置点击,即在落点插入一个标记,可连续插入任意次,不用每次回到工具栏。
|
|
132
|
-
- 锁定态按钮显示锁图标与当前参数(如「0.5
|
|
142
|
+
- 锁定态按钮显示锁图标与当前参数(如「0.5 秒」),弹层底部会提示「已锁定 0.5 秒,点击文本插入标记」,回显的是本次实际会插入的时长。
|
|
133
143
|
- 再次长按同一按钮,或按 `Escape`,即可解锁。
|
|
134
144
|
|
|
135
145
|
可被锁定的范围由 `isInsertTagType()` 判定,它以 `deleteMode === DELETE_NODE` 为准,只包含停顿、长停顿这类不包裹选中文本的标签。
|
|
136
146
|
|
|
137
147
|
锁定使用的参数优先取业务方在弹层里选过的值(由 `rememberToolParams` 记住),从未选过时回落到 `getDefaultLockPayload()`,长停顿默认 `0.5` 秒。
|
|
138
148
|
|
|
149
|
+
### 停顿时长
|
|
150
|
+
|
|
151
|
+
「停顿」「长停顿」弹层提供预设时长与自定义时长:
|
|
152
|
+
|
|
153
|
+
- 预设(如「停顿 0.5 秒」「停顿 1 秒」)点一下即按该时长插入。
|
|
154
|
+
- 自定义槽位点铅笔图标进入输入态,旧值会带入并全选,`Enter` 或再点对勾提交,`Esc` 放弃本次输入。这里不使用失焦提交,避免想取消时反而插入了一个标记。
|
|
155
|
+
- 确认过的时长会留在槽位里,之后点槽位本体即按该值插入,可反复使用;铅笔在已设置时半透明显示。
|
|
156
|
+
- 输入值下限为 `0.1` 秒、保留一位小数,解析不出数字时按放弃处理。
|
|
157
|
+
|
|
158
|
+
弹层是「创建菜单」而不是「设置面板」:正文里可以并存多个不同时长的停顿标记,因此预设项不显示选中态,「当前用的是多少秒」由上方锁定态按钮回答。
|
|
159
|
+
|
|
139
160
|
### 文本区右键面板
|
|
140
161
|
|
|
141
162
|
在文本区右键会唤起标记面板,头部按当前形态提示:
|
package/dist/base.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.svg-icon[data-v-f9dec5ab]{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;font-size:inherit;width:var(--v340fb7c9);height:var(--v34184784);color:var(--v32f8b966);line-height:1}.svg-icon[data-v-f9dec5ab] svg{display:block;width:100%;height:100%}.cx-button-loading[data-v-40189ef7]{animation:loading-40189ef7 1s linear infinite}@keyframes loading-40189ef7{to{transform:rotate(1turn)}}.el-button.is-plain.cx-button-link[data-v-40189ef7]{height:30px;padding:4px 8px;border-radius:6px;border:none}.el-button.is-plain.cx-button-link.is-disabled[data-v-40189ef7]{border:none;background-color:transparent}.cx-empty[data-v-12ca5136]{display:flex;flex-direction:column;align-items:center;justify-content:center}.cx-empty .cx-empty-icon[data-v-12ca5136]{display:flex;justify-content:center;align-items:center}.cx-empty .cx-empty-icon img[data-v-12ca5136]{height:100%;width:100%;object-fit:contain}.cx-empty .cx-empty-desc[data-v-12ca5136]{color:#797b80;font-size:14px;line-height:22px}.cx-radio-group[data-v-5610643a]{position:relative;height:36px;padding:3px;border-radius:6px;border:1px solid #d9d9d9;display:flex;align-items:center;gap:3px}.cx-radio-group .cx-radio-slider[data-v-5610643a]{position:absolute;left:0;height:calc(100% - 6px);border-radius:6px;transition:transform .2s cubic-bezier(.34,.69,.1,1)}.cx-radio-group .cx-radio[data-v-5610643a]{-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;z-index:1;flex:1;flex-shrink:0;height:100%;font-size:14px;line-height:22px;border-radius:6px;display:flex;justify-content:center;align-items:center;gap:4px}.cx-radio-group .cx-radio .cx-radio-icon[data-v-5610643a]{display:flex;justify-content:center;align-items:center}.cx-radio-group .cx-radio.cx-radio-selected[data-v-5610643a]{font-weight:600}.cx-radio-group[data-v-5610643a]{background:var(--v0bd4c220)}.cx-radio-group .cx-radio-slider[data-v-5610643a]{background:var(--v63724994)}.cx-radio-group .cx-radio[data-v-5610643a]{color:var(--v3d0f5461)}.cx-radio-group .cx-radio[data-v-5610643a]:not(.cx-radio-selected):hover{background-color:var(--v4f01c1f0);color:var(--v580c2549)}.cx-radio-group .cx-radio.cx-radio-selected[data-v-5610643a]{color:var(--b415bb0a)}.cx-spin[data-v-2b183816]{position:relative;height:100%;width:100%}.cx-spin .cx-spin-mask[data-v-2b183816]{z-index:9999;position:absolute;left:0;top:0;height:100%;width:100%;background-color:#fffc;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center}.cx-spin .cx-spin-mask .cx-spin-icon[data-v-2b183816]{display:flex;flex-direction:column;align-items:center;gap:16px}.cx-spin .cx-spin-mask .cx-spin-icon .cx-spin-tip[data-v-2b183816]{color:#101114;font-size:16px;font-weight:600;line-height:24px}.cx-upload-wrapper[data-v-7216b30e]{height:212px;background-color:#fff;border-radius:16px;border:1px dashed #d9d9d9;transition:border-color .2s}.cx-upload-wrapper[data-v-7216b30e]:hover,.cx-upload-wrapper.cx-upload-dragging[data-v-7216b30e],.cx-upload-wrapper.cx-upload-has-value[data-v-7216b30e]{border:2px dashed #0d1839}.cx-upload-wrapper:hover.cx-upload-has-value[data-v-7216b30e],.cx-upload-wrapper.cx-upload-dragging.cx-upload-has-value[data-v-7216b30e],.cx-upload-wrapper.cx-upload-has-value.cx-upload-has-value[data-v-7216b30e]{border-style:solid}.cx-upload-wrapper .cx-upload[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result[data-v-7216b30e]{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.cx-upload-wrapper .cx-upload .cx-upload-title[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-title[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-file-name[data-v-7216b30e]{margin-top:10px;color:#101114;font-size:14px;font-weight:600;line-height:24px}.cx-upload-wrapper .cx-upload .cx-upload-title.cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-title.cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-file-name.cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-file-name.cx-upload-file-name[data-v-7216b30e]{max-width:100%;padding:0 12px}.cx-upload-wrapper .cx-upload .cx-upload-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-result-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-result-icon[data-v-7216b30e]{position:relative;width:56px;height:56px;display:flex;justify-content:center;align-items:center}.cx-upload-wrapper .cx-upload .cx-upload-icon .cx-upload-clear-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-icon .cx-upload-clear-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-result-icon .cx-upload-clear-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-result-icon .cx-upload-clear-icon[data-v-7216b30e]{cursor:pointer;position:absolute;right:-8px;top:-8px}.cx-upload-wrapper .cx-upload .cx-upload-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-icon[data-v-7216b30e]{background-color:#f1f2f5;border-radius:50%}.cx-upload-wrapper .cx-upload .cx-upload-icon[data-v-7216b30e]:hover,.cx-upload-wrapper .cx-upload-result .cx-upload-icon[data-v-7216b30e]:hover{background-color:#d9d9d9}.cx-upload-wrapper .cx-upload .cx-upload-tip[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-tip[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-file-operate[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-file-operate[data-v-7216b30e]{margin-top:4px;color:#797b80;line-height:22px}.cx-upload-wrapper .cx-upload[data-v-7216b30e] .cx-upload-file-operate,.cx-upload-wrapper .cx-upload-result[data-v-7216b30e] .cx-upload-file-operate{color:#0057ff;display:flex;justify-content:center;align-items:center}.cx-upload-wrapper .cx-upload[data-v-7216b30e] .cx-upload-file-operate>span,.cx-upload-wrapper .cx-upload-result[data-v-7216b30e] .cx-upload-file-operate>span{cursor:pointer;text-decoration-line:underline}.cx-upload-wrapper .cx-upload[data-v-7216b30e]{cursor:pointer}.cx-upload-wrapper.cx-upload-disabled[data-v-7216b30e]{cursor:not-allowed;background-color:#f7f8fa;opacity:.7}.tag-node[data-v-64546350]{display:inline;box-sizing:border-box;margin:0 3px;padding:2px 8px;font-size:12px;line-height:20px;min-height:22px;font-weight:400;background:#e5eeff;color:#3d4766;border-radius:4px;-webkit-user-select:none;user-select:none;box-decoration-break:clone;-webkit-box-decoration-break:clone}.icon-wrapper[data-v-64546350]{display:inline-flex;align-items:center;height:20px}.icon-wrapper.tag-icon[data-v-64546350]{margin-right:4px;vertical-align:-.2em}.icon-wrapper.delete-icon[data-v-64546350]{margin-left:4px}.delete-btn[data-v-64546350]{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:10px;color:#7d8ab2}.delete-btn[data-v-64546350]:hover{color:#ea5b41}[data-v-d764ae22] .tiptap-editor{font-size:14px;line-height:28px;word-break:break-word;outline:none}[data-v-d764ae22] .tiptap-editor p{counter-reset:sentence;margin:0}[data-v-d764ae22] .tiptap-editor p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;color:#797b80;pointer-events:none}.lsh-menu-box[data-v-d125f43a]{z-index:1;display:flex;flex-direction:column;gap:4px;max-width:520px;padding:6px 8px;border-radius:10px;border:1px solid #d9d9d9;background:#fff;box-shadow:0 6px 24px #1f23291a}.lsh-menu-box .lsh-menu-main[data-v-d125f43a]{display:flex;align-items:center;flex-wrap:wrap;gap:2px}.lsh-menu-box .lsh-menu-main .lsh-menu-item[data-v-d125f43a]{display:flex;align-items:center;gap:2px;height:28px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:#101114;font-size:13px;line-height:20px;white-space:nowrap;cursor:pointer}.lsh-menu-box .lsh-menu-main .lsh-menu-item[data-v-d125f43a]:hover{background:#f1f2f5}.lsh-menu-box .lsh-menu-main .lsh-menu-item.is-expanded[data-v-d125f43a]{background:#e6eeff;color:#0057ff}.lsh-menu-box .lsh-menu-main .lsh-menu-item .lsh-menu-caret[data-v-d125f43a]{color:#8a8f99;font-size:10px}.lsh-menu-box .lsh-menu-main .lsh-menu-divider[data-v-d125f43a]{width:1px;height:16px;margin:0 4px;background:#e5e7eb}.lsh-menu-box .lsh-menu-options[data-v-d125f43a]{display:flex;flex-wrap:wrap;gap:6px;padding-top:6px;border-top:1px solid #f1f2f5}.lsh-menu-box .lsh-menu-options .lsh-menu-option[data-v-d125f43a]{padding:2px 10px;border:1px solid #e5e7eb;border-radius:999px;background:#fafbfc;color:#3d4766;font-size:12px;line-height:20px;cursor:pointer}.lsh-menu-box .lsh-menu-options .lsh-menu-option[data-v-d125f43a]:hover{border-color:#0057ff;background:#e6eeff;color:#0057ff}.red-text[data-v-a40d0499]{color:#ea5b41}.lsh-text-btn[data-v-a40d0499]{display:flex;justify-content:center;align-items:center;gap:4px;padding:1px 6px!important;cursor:pointer;color:#101114;line-height:22px;background:transparent!important;height:22px}.lsh-text-btn.is-disabled[data-v-a40d0499]{opacity:.4}.lsh-text-btn.blue[data-v-a40d0499]{color:#0057ff}.lsh-text-btn.red[data-v-a40d0499]{color:#ea5b41}.lsh-textarea[data-v-a40d0499]{resize:none;border:none;outline:none;width:100%;background:transparent}.lsh-content-box[data-v-a40d0499]{display:flex;gap:16px;height:444px}.lsh-content-box .lsh-form-box[data-v-a40d0499]{flex:1;display:flex;flex-direction:column;gap:8px}.lsh-content-box .lsh-form-box .lsh-form-top[data-v-a40d0499]{display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-top .lsh-title[data-v-a40d0499]{color:#101114;font-weight:600;line-height:22px}.lsh-content-box .lsh-form-box .lsh-form-bottom[data-v-a40d0499]{flex:1;border-radius:10px;border:1px solid #d9d9d9;padding:12px 16px;color:#101114;line-height:22px;background:#fff;display:flex;flex-direction:column;overflow:hidden}.lsh-content-box .lsh-form-box .lsh-form-bottom.gray[data-v-a40d0499]{background:#f1f2f5}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-tip[data-v-a40d0499]{color:#797b80;font-size:12px;line-height:20px;font-weight:400;display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-a40d0499]{flex:1;overflow:auto}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-a40d0499] .cx-spin-mask{background:transparent;opacity:.4}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-a40d0499] .cx-spin-mask .cx-spin-tip{font-size:14px;font-weight:400}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-form-item[data-v-a40d0499]{display:flex;flex-direction:column;gap:4px}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-form-item[data-v-a40d0499]:nth-child(n+2){border-top:1px solid #eaecf2;padding-top:8px;margin-top:8px}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-form-item .lsh-form-item-top[data-v-a40d0499]{color:#101114;font-weight:600;line-height:22px;display:flex;align-items:center;justify-content:space-between}.lsh-context-menu[data-v-06aa51fd]{position:fixed;z-index:3000;min-width:208px;max-width:268px;max-height:68vh;display:flex;flex-direction:column;padding:6px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;box-shadow:0 8px 28px #1f232924;overflow:hidden}.lsh-context-menu .lsh-context-header[data-v-06aa51fd]{flex-shrink:0;padding:4px 8px 6px;color:#8a8f99;font-size:12px;line-height:18px}.lsh-context-menu .lsh-context-list[data-v-06aa51fd]{flex:1;min-height:0;overflow-y:auto}.lsh-context-menu .lsh-context-list .lsh-context-item[data-v-06aa51fd]{display:flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:#101114;font-size:14px;line-height:22px;cursor:pointer}.lsh-context-menu .lsh-context-list .lsh-context-item[data-v-06aa51fd]:hover,.lsh-context-menu .lsh-context-list .lsh-context-item.is-expanded[data-v-06aa51fd]{background:#f1f2f5}.lsh-context-menu .lsh-context-list .lsh-context-item .lsh-context-label[data-v-06aa51fd]{flex:1;text-align:left}.lsh-context-menu .lsh-context-list .lsh-context-item .lsh-context-caret[data-v-06aa51fd]{color:#8a8f99;font-size:10px}.lsh-context-menu .lsh-context-list .lsh-context-options[data-v-06aa51fd]{display:flex;flex-wrap:wrap;gap:6px;padding:4px 8px 8px}.lsh-context-menu .lsh-context-list .lsh-context-options .lsh-context-option[data-v-06aa51fd]{padding:3px 10px;border:1px solid #e5e7eb;border-radius:999px;background:#fafbfc;color:#3d4766;font-size:12px;line-height:20px;cursor:pointer}.lsh-context-menu .lsh-context-list .lsh-context-options .lsh-context-option[data-v-06aa51fd]:hover{border-color:#0057ff;background:#e6eeff;color:#0057ff}.lsh-footer-box[data-v-7ff45129]{height:46px;padding:8px;display:flex;align-items:center;justify-content:flex-end}.lsh-footer-box .lsh-option-item[data-v-7ff45129]{height:100%;padding:4px 8px;display:flex;align-items:center;gap:4px;color:#101114;font-size:14px;font-weight:400;line-height:22px}.lsh-footer-box .lsh-option-item[data-v-7ff45129] .svg-icon{font-size:18px}.lsh-footer-box .lsh-option-item.btn[data-v-7ff45129]{cursor:pointer;-webkit-user-select:none;user-select:none}.lsh-footer-box .lsh-option-item.btn.disabled[data-v-7ff45129]{opacity:.4}.lsh-footer-box .lsh-option-item.btn[data-v-7ff45129]:not(.disabled):hover{border-radius:6px;background:#f1f2f5}.lsh-footer-box .lsh-option-item.gray[data-v-7ff45129]{color:#797b80}.lsh-footer-box .lsh-divider[data-v-7ff45129]{width:1px;height:20px;background:#eaecf2;margin:0 8px}.lsh-lock-icon[data-v-9c465e3c]{margin-left:2px;flex-shrink:0}.red-text[data-v-4e58c0be]{color:#ea5b41}.lsh-text-btn[data-v-4e58c0be]{display:flex;justify-content:center;align-items:center;gap:4px;padding:4px 8px;cursor:pointer;color:#101114;line-height:22px;height:22px}.lsh-text-btn.stop[data-v-4e58c0be]{color:#ea5b41}.lsh-textarea[data-v-4e58c0be]{resize:none;border:none;outline:none;width:100%;background:transparent}.lsh-content-box[data-v-4e58c0be]{display:flex;gap:16px;height:444px}.lsh-content-box .lsh-form-box[data-v-4e58c0be]{flex:1;display:flex;flex-direction:column;gap:8px}.lsh-content-box .lsh-form-box .lsh-form-top[data-v-4e58c0be]{display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-top .lsh-title[data-v-4e58c0be]{color:#101114;font-weight:600;line-height:22px}.lsh-content-box .lsh-form-box .lsh-form-bottom[data-v-4e58c0be]{flex:1;border-radius:10px;border:1px solid #d9d9d9;padding:12px;color:#101114;line-height:22px;background:#fff;display:flex;flex-direction:column;overflow:hidden}.lsh-content-box .lsh-form-box .lsh-form-bottom.gray[data-v-4e58c0be]{background:#f1f2f5}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-tip[data-v-4e58c0be]{color:#797b80;font-size:12px;line-height:20px;display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-4e58c0be]{flex:1;overflow:auto}.lsh-ai-modal{position:relative;overflow:hidden}.lsh-ai-modal:before{position:absolute;top:0;left:0;width:100%;height:120px;content:"";z-index:0;pointer-events:none;background:radial-gradient(53.22% 165.47% at 52.17% -65.47%,#0038ff14,#0038ff00),radial-gradient(51.16% 163.6% at 85.6% -63.59%,#ff642214,#ff642200),radial-gradient(102.93% 140.61% at 7.43% -30.94%,#00d09e14,#00d09e00),linear-gradient(180deg,#fafbfc 47.89%,#fafbfccc,#fafbfc00)}.lsh-ai-modal .el-dialog__header,.lsh-ai-modal .el-dialog__body,.lsh-ai-modal .el-dialog__footer{position:relative;z-index:1}.lsh-ai-modal .el-dialog__header .el-dialog__headerbtn{right:-2px!important}.rect-btn[data-v-eb6e2e70]{display:flex;width:40px;height:36px;padding:0 12px;justify-content:center;align-items:center;flex-shrink:0;border-radius:10px;background:#f1f2f5;border:1px solid #f1f2f5;cursor:pointer;-webkit-user-select:none;user-select:none}.rect-btn.active[data-v-eb6e2e70],.rect-btn[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-header-content[data-v-eb6e2e70]{position:relative}.lsh-header-content .lsh-title[data-v-eb6e2e70]{color:#101114;font-size:16px;font-weight:600;line-height:24px}.lsh-header-content .lsh-radio-group[data-v-eb6e2e70]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:185px}.lsh-content-box[data-v-eb6e2e70]{height:444px;display:flex;flex-direction:column}.lsh-content-box .lsh-label[data-v-eb6e2e70]{color:#101114;font-size:14px;font-weight:600;line-height:22px;margin-bottom:8px}.lsh-content-box .lsh-text-box[data-v-eb6e2e70]{height:44px;padding:5px 12px;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:16px;border:1px solid #d9d9d9;background:#f1f2f5;color:#101114;font-size:18px;font-weight:600;line-height:26px;width:100%;text-align:center}.lsh-content-box .lsh-polyphonic-box[data-v-eb6e2e70]{margin-top:16px;flex:1}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-list[data-v-eb6e2e70]{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-item[data-v-eb6e2e70]{display:flex;align-items:flex-start;gap:8px}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-char[data-v-eb6e2e70]{display:flex;align-items:center;justify-content:center;width:36px;height:32px;flex-shrink:0;border-radius:10px;background:#f1f2f5;color:#101114;font-size:16px;font-weight:600;line-height:24px}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-options[data-v-eb6e2e70]{display:flex;flex-wrap:wrap;gap:8px}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-option[data-v-eb6e2e70]{height:32px;padding:4px 12px;border-radius:10px;border:1px solid #d9d9d9;background:#fff;color:#101114;font-size:14px;line-height:22px;cursor:pointer;-webkit-user-select:none;user-select:none}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-option.active[data-v-eb6e2e70],.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-option[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-options-box[data-v-eb6e2e70]{margin-top:16px;display:flex;gap:16px}.lsh-content-box .lsh-options-box .lsh-options[data-v-eb6e2e70]{display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:16px;border:1px solid #d9d9d9;background:#fff}.lsh-content-box .lsh-options-box .lsh-initials[data-v-eb6e2e70]{display:flex;flex-wrap:wrap;gap:4px}.lsh-content-box .lsh-options-box .lsh-initials .lsh-initial-btn[data-v-eb6e2e70]{display:flex;width:40px;height:36px;padding:0 12px;justify-content:center;align-items:center;flex-shrink:0;border-radius:10px;background:#f1f2f5;border:1px solid #f1f2f5;cursor:pointer;-webkit-user-select:none;user-select:none}.lsh-content-box .lsh-options-box .lsh-initials .lsh-initial-btn.active[data-v-eb6e2e70],.lsh-content-box .lsh-options-box .lsh-initials .lsh-initial-btn[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-options-box .lsh-radio-group-white[data-v-eb6e2e70]{border-radius:14px;padding:4px;gap:4px;height:44px}.lsh-content-box .lsh-options-box .lsh-radio-group-white[data-v-eb6e2e70] .cx-radio{border-radius:10px}.lsh-content-box .lsh-options-box .lsh-radio-group-white[data-v-eb6e2e70] .cx-radio.cx-radio-selected{font-weight:400}.lsh-content-box .lsh-options-box .lsh-final-box[data-v-eb6e2e70]{display:flex;flex-direction:column;gap:8px;padding:8px;border-radius:14px;background:#f1f2f5}.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list[data-v-eb6e2e70]{display:flex;flex-wrap:wrap;gap:4px}.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list .lsh-final-item[data-v-eb6e2e70]{display:flex;width:40px;height:36px;padding:0 12px;justify-content:center;align-items:center;flex-shrink:0;border-radius:10px;background:#f1f2f5;border:1px solid #f1f2f5;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;box-shadow:0 1px 4px #0000001a}.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list .lsh-final-item.active[data-v-eb6e2e70],.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list .lsh-final-item[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-manual-text-box[data-v-eb6e2e70]{margin-top:16px}.lsh-content-box .lsh-manual-text-box .lsh-manual-text-list[data-v-eb6e2e70]{display:flex;gap:8px}.lsh-content-box .lsh-manual-text-box .lsh-manual-text-item[data-v-eb6e2e70]{display:flex;min-width:64px;height:52px;padding:4px 12px;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;border:1px solid #d9d9d9;background:#fff;font-size:16px;cursor:pointer}.lsh-content-box .lsh-manual-text-box .lsh-manual-text-item.active[data-v-eb6e2e70],.lsh-content-box .lsh-manual-text-box .lsh-manual-text-item[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-manual-text-box .lsh-manual-pinyin[data-v-eb6e2e70]{color:#666;font-size:12px;line-height:18px}.lsh-header-content[data-v-a2a3927f]{width:calc(100% - 52px);display:flex;flex-direction:column;gap:4px}.lsh-header-content .lsh-title[data-v-a2a3927f]{color:#101114;font-size:16px;font-weight:600;line-height:24px}.lsh-header-content .lsh-tip[data-v-a2a3927f]{color:#797b80;font-size:14px;font-weight:400;line-height:22px}.lsh-content-box[data-v-a2a3927f]{display:flex;flex-direction:column;gap:24px;padding-bottom:44px}.lsh-content-box .lsh-form-item-label[data-v-a2a3927f]{color:#101114;font-size:14px;font-weight:600;line-height:22px;margin-bottom:8px}.lsh-modal-header{height:fit-content!important}.lsh-language-list[data-v-931bb88d]{display:flex;align-items:center;gap:8px;padding:12px;width:264px;flex-wrap:wrap}.lsh-language-list .el-button[data-v-931bb88d]{width:116px}.lsh-number-list[data-v-9fa42093]{display:flex;gap:8px;padding:12px;width:272px;flex-direction:column;align-items:start;overflow:hidden}.lsh-number-list .el-button[data-v-9fa42093]{width:100%;justify-content:flex-start}.lsh-number-label[data-v-9fa42093]{flex-shrink:0}.lsh-lock-tip[data-v-f4de8d78]{display:flex;align-items:center;gap:4px;padding:8px 12px;border-top:1px solid #f1f2f5;color:#8a8f99;font-size:12px;line-height:18px}.lsh-lock-tip .lsh-lock-tip-icon[data-v-f4de8d78]{flex-shrink:0}.lsh-stop-box[data-v-8411a495]{display:flex;flex-direction:column}.lsh-stop-list[data-v-8411a495]{display:flex;align-items:center;gap:8px;padding:12px}.lsh-stop-input[data-v-8411a495]{outline:none;border:none;color:#101114;line-height:22px;border-bottom:1px solid #101114;background:transparent;width:42px;height:22px;margin:0 4px}.lsh-stop-input[data-v-8411a495]::placeholder{color:#797b80}.lsh-stop-input[data-v-8411a495]:focus{border-color:#0057ff}.lsh-stop-input[data-v-8411a495] .el-input .el-input__wrapper{box-shadow:none;padding:0;background:transparent}.lsh-content-box[data-v-0b25e8fe]{display:flex;flex-direction:column;gap:24px;padding-bottom:44px}.lsh-content-box .lsh-title[data-v-0b25e8fe]{color:#101114;font-size:14px;font-weight:600;line-height:22px;margin-bottom:4px}.lsh-content-box .lsh-tip-text[data-v-0b25e8fe]{color:#797b80;font-size:14px;font-weight:400;line-height:175%}.word-upload-modal .el-overlay-dialog .el-dialog{overflow:hidden;height:600px;display:flex;flex-direction:column}.word-upload-modal .el-overlay-dialog .el-dialog .el-dialog__body{flex:1}.lsh-toolbar-box[data-v-f852e530]{position:relative;flex:1;min-width:0;display:flex;align-items:center;gap:8px;overflow:hidden}.lsh-toolbar-box .lsh-tool-btn[data-v-f852e530]{height:30px;flex-shrink:0;display:flex;align-items:center;padding:4px 8px;border-radius:6px;border:none;white-space:nowrap}.lsh-toolbar-box .lsh-tool-btn.is-locked[data-v-f852e530],.lsh-toolbar-box .lsh-tool-btn.is-locked[data-v-f852e530]:hover,.lsh-toolbar-box .lsh-tool-btn.is-locked[data-v-f852e530]:focus{background:#e6eeff;color:#0057ff;box-shadow:inset 0 0 0 1px #0057ff}.lsh-toolbar-box .lsh-tool-btn.is-pressing[data-v-f852e530]:not(.is-locked){background:#f1f2f5}.lsh-toolbar-measure[data-v-f852e530]{position:absolute;top:0;left:0;z-index:-1;display:flex;gap:8px;height:0;overflow:hidden;visibility:hidden;pointer-events:none}.lsh-more-list[data-v-f852e530]{display:flex;min-width:140px;padding:4px;flex-direction:column;gap:2px}.lsh-more-list .lsh-more-item[data-v-f852e530]{width:100%;justify-content:flex-start;padding:8px 10px;border:none;border-radius:6px}.lsh-more-list .lsh-more-item.is-locked[data-v-f852e530]{background:#e6eeff;color:#0057ff}.el-popper.lsh-popper{width:fit-content!important;padding:0}.tts-rich-text-editor[data-v-387eca76]{box-sizing:border-box;display:flex;width:100%;max-width:100%;min-width:0;height:266px;min-height:220px;padding:0 8px 8px;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;color:#101114;font-family:PingFang SC,Microsoft YaHei,Arial,sans-serif}.tts-rich-text-editor.is-fullscreen[data-v-387eca76]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100vh;padding:16px;background:#f5f6f8}.tts-rich-text-editor.is-disabled .lsh-editor-box[data-v-387eca76]{background:#f7f8fa}.tts-rich-text-editor.is-disabled .lsh-top[data-v-387eca76],.tts-rich-text-editor.is-disabled .lsh-middle[data-v-387eca76],.tts-rich-text-editor.is-disabled .lsh-bottom[data-v-387eca76]{opacity:.7}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]{position:relative;display:flex;width:100%;min-width:0;height:100%;flex-direction:column;overflow:hidden;border:1px solid #d9d9d9;border-radius:24px;background:#fff;transition:box-shadow .3s}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]:hover,.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]:focus-within{border-color:#0057ff}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]:focus-within{box-shadow:0 8px 16px #0057ff33}.tts-rich-text-editor .lsh-top[data-v-387eca76]{display:flex;height:46px;padding:8px 16px;align-items:center;gap:8px;flex-shrink:0;border-bottom:1px solid #eaecf2}.tts-rich-text-editor .lsh-fullscreen-btn[data-v-387eca76]{display:flex;width:30px;height:30px;padding:0;align-items:center;justify-content:center;flex-shrink:0;border:0;border-radius:6px;background:transparent;color:#101114;cursor:pointer}.tts-rich-text-editor .lsh-fullscreen-btn[data-v-387eca76]:hover{background:#f1f2f5}.tts-rich-text-editor .lsh-middle[data-v-387eca76]{flex:1;min-height:0;padding:12px 16px 0;overflow:hidden}.tts-rich-text-editor .lsh-middle .editor-shell[data-v-387eca76]{height:100%;overflow:auto}.tts-rich-text-editor .lsh-bottom[data-v-387eca76]{display:flex;min-height:46px;min-width:0;align-items:center;justify-content:flex-end;flex-shrink:0}@media (max-width: 640px){.tts-rich-text-editor[data-v-387eca76]{padding:0}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]{border-radius:12px}.tts-rich-text-editor .lsh-top[data-v-387eca76]{padding:8px}}
|
|
1
|
+
.svg-icon[data-v-f9dec5ab]{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;font-size:inherit;width:var(--v340fb7c9);height:var(--v34184784);color:var(--v32f8b966);line-height:1}.svg-icon[data-v-f9dec5ab] svg{display:block;width:100%;height:100%}.cx-button-loading[data-v-40189ef7]{animation:loading-40189ef7 1s linear infinite}@keyframes loading-40189ef7{to{transform:rotate(1turn)}}.el-button.is-plain.cx-button-link[data-v-40189ef7]{height:30px;padding:4px 8px;border-radius:6px;border:none}.el-button.is-plain.cx-button-link.is-disabled[data-v-40189ef7]{border:none;background-color:transparent}.cx-empty[data-v-12ca5136]{display:flex;flex-direction:column;align-items:center;justify-content:center}.cx-empty .cx-empty-icon[data-v-12ca5136]{display:flex;justify-content:center;align-items:center}.cx-empty .cx-empty-icon img[data-v-12ca5136]{height:100%;width:100%;object-fit:contain}.cx-empty .cx-empty-desc[data-v-12ca5136]{color:#797b80;font-size:14px;line-height:22px}.cx-radio-group[data-v-5610643a]{position:relative;height:36px;padding:3px;border-radius:6px;border:1px solid #d9d9d9;display:flex;align-items:center;gap:3px}.cx-radio-group .cx-radio-slider[data-v-5610643a]{position:absolute;left:0;height:calc(100% - 6px);border-radius:6px;transition:transform .2s cubic-bezier(.34,.69,.1,1)}.cx-radio-group .cx-radio[data-v-5610643a]{-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;z-index:1;flex:1;flex-shrink:0;height:100%;font-size:14px;line-height:22px;border-radius:6px;display:flex;justify-content:center;align-items:center;gap:4px}.cx-radio-group .cx-radio .cx-radio-icon[data-v-5610643a]{display:flex;justify-content:center;align-items:center}.cx-radio-group .cx-radio.cx-radio-selected[data-v-5610643a]{font-weight:600}.cx-radio-group[data-v-5610643a]{background:var(--v0bd4c220)}.cx-radio-group .cx-radio-slider[data-v-5610643a]{background:var(--v63724994)}.cx-radio-group .cx-radio[data-v-5610643a]{color:var(--v3d0f5461)}.cx-radio-group .cx-radio[data-v-5610643a]:not(.cx-radio-selected):hover{background-color:var(--v4f01c1f0);color:var(--v580c2549)}.cx-radio-group .cx-radio.cx-radio-selected[data-v-5610643a]{color:var(--b415bb0a)}.cx-spin[data-v-2b183816]{position:relative;height:100%;width:100%}.cx-spin .cx-spin-mask[data-v-2b183816]{z-index:9999;position:absolute;left:0;top:0;height:100%;width:100%;background-color:#fffc;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center}.cx-spin .cx-spin-mask .cx-spin-icon[data-v-2b183816]{display:flex;flex-direction:column;align-items:center;gap:16px}.cx-spin .cx-spin-mask .cx-spin-icon .cx-spin-tip[data-v-2b183816]{color:#101114;font-size:16px;font-weight:600;line-height:24px}.cx-upload-wrapper[data-v-7216b30e]{height:212px;background-color:#fff;border-radius:16px;border:1px dashed #d9d9d9;transition:border-color .2s}.cx-upload-wrapper[data-v-7216b30e]:hover,.cx-upload-wrapper.cx-upload-dragging[data-v-7216b30e],.cx-upload-wrapper.cx-upload-has-value[data-v-7216b30e]{border:2px dashed #0d1839}.cx-upload-wrapper:hover.cx-upload-has-value[data-v-7216b30e],.cx-upload-wrapper.cx-upload-dragging.cx-upload-has-value[data-v-7216b30e],.cx-upload-wrapper.cx-upload-has-value.cx-upload-has-value[data-v-7216b30e]{border-style:solid}.cx-upload-wrapper .cx-upload[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result[data-v-7216b30e]{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.cx-upload-wrapper .cx-upload .cx-upload-title[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-title[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-file-name[data-v-7216b30e]{margin-top:10px;color:#101114;font-size:14px;font-weight:600;line-height:24px}.cx-upload-wrapper .cx-upload .cx-upload-title.cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-title.cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-file-name.cx-upload-file-name[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-file-name.cx-upload-file-name[data-v-7216b30e]{max-width:100%;padding:0 12px}.cx-upload-wrapper .cx-upload .cx-upload-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-result-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-result-icon[data-v-7216b30e]{position:relative;width:56px;height:56px;display:flex;justify-content:center;align-items:center}.cx-upload-wrapper .cx-upload .cx-upload-icon .cx-upload-clear-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-icon .cx-upload-clear-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-result-icon .cx-upload-clear-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-result-icon .cx-upload-clear-icon[data-v-7216b30e]{cursor:pointer;position:absolute;right:-8px;top:-8px}.cx-upload-wrapper .cx-upload .cx-upload-icon[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-icon[data-v-7216b30e]{background-color:#f1f2f5;border-radius:50%}.cx-upload-wrapper .cx-upload .cx-upload-icon[data-v-7216b30e]:hover,.cx-upload-wrapper .cx-upload-result .cx-upload-icon[data-v-7216b30e]:hover{background-color:#d9d9d9}.cx-upload-wrapper .cx-upload .cx-upload-tip[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-tip[data-v-7216b30e],.cx-upload-wrapper .cx-upload .cx-upload-file-operate[data-v-7216b30e],.cx-upload-wrapper .cx-upload-result .cx-upload-file-operate[data-v-7216b30e]{margin-top:4px;color:#797b80;line-height:22px}.cx-upload-wrapper .cx-upload[data-v-7216b30e] .cx-upload-file-operate,.cx-upload-wrapper .cx-upload-result[data-v-7216b30e] .cx-upload-file-operate{color:#0057ff;display:flex;justify-content:center;align-items:center}.cx-upload-wrapper .cx-upload[data-v-7216b30e] .cx-upload-file-operate>span,.cx-upload-wrapper .cx-upload-result[data-v-7216b30e] .cx-upload-file-operate>span{cursor:pointer;text-decoration-line:underline}.cx-upload-wrapper .cx-upload[data-v-7216b30e]{cursor:pointer}.cx-upload-wrapper.cx-upload-disabled[data-v-7216b30e]{cursor:not-allowed;background-color:#f7f8fa;opacity:.7}.tag-node[data-v-e9476a1f]{display:inline;box-sizing:border-box;margin:0 3px;padding:2px 8px;font-size:12px;line-height:20px;min-height:22px;font-weight:400;background:#e5eeff;color:#3d4766;border-radius:4px;-webkit-user-select:none;user-select:none;box-decoration-break:clone;-webkit-box-decoration-break:clone}.icon-wrapper[data-v-e9476a1f]{display:inline-flex;align-items:center;height:20px}.icon-wrapper.tag-icon[data-v-e9476a1f]{margin-right:4px;vertical-align:-.2em}.icon-wrapper.delete-icon[data-v-e9476a1f]{margin-left:4px}.delete-btn[data-v-e9476a1f]{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:10px;color:#7d8ab2}.delete-btn[data-v-e9476a1f]:hover{color:#ea5b41}[data-v-d764ae22] .tiptap-editor{font-size:14px;line-height:28px;word-break:break-word;outline:none}[data-v-d764ae22] .tiptap-editor p{counter-reset:sentence;margin:0}[data-v-d764ae22] .tiptap-editor p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;color:#797b80;pointer-events:none}.lsh-menu-box[data-v-e1d2d4b5]{z-index:3000;display:flex;flex-direction:column;gap:4px;max-width:520px;padding:6px 8px;border-radius:10px;border:1px solid #d9d9d9;background:#fff;box-shadow:0 6px 24px #1f23291a}.lsh-menu-box .lsh-menu-main[data-v-e1d2d4b5]{display:flex;align-items:center;flex-wrap:wrap;gap:2px}.lsh-menu-box .lsh-menu-main .lsh-menu-item[data-v-e1d2d4b5]{display:flex;align-items:center;gap:2px;height:28px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:#101114;font-size:13px;line-height:20px;white-space:nowrap;cursor:pointer}.lsh-menu-box .lsh-menu-main .lsh-menu-item[data-v-e1d2d4b5]:hover{background:#f1f2f5}.lsh-menu-box .lsh-menu-main .lsh-menu-item.is-expanded[data-v-e1d2d4b5]{background:#e6eeff;color:#0057ff}.lsh-menu-box .lsh-menu-main .lsh-menu-item .lsh-menu-caret[data-v-e1d2d4b5]{flex-shrink:0;margin-left:2px;transition:transform .16s ease}.lsh-menu-box .lsh-menu-main .lsh-menu-item.is-expanded .lsh-menu-caret[data-v-e1d2d4b5]{transform:rotate(180deg)}.lsh-menu-box .lsh-menu-main .lsh-menu-divider[data-v-e1d2d4b5]{width:1px;height:16px;margin:0 4px;background:#e5e7eb}.lsh-menu-box .lsh-menu-options[data-v-e1d2d4b5]{display:flex;flex-wrap:wrap;gap:6px;padding-top:6px;border-top:1px solid #f1f2f5}.lsh-menu-box .lsh-menu-options .lsh-menu-option[data-v-e1d2d4b5]{padding:2px 10px;border:1px solid #e5e7eb;border-radius:999px;background:#fafbfc;color:#3d4766;font-size:12px;line-height:20px;cursor:pointer}.lsh-menu-box .lsh-menu-options .lsh-menu-option[data-v-e1d2d4b5]:hover{border-color:#0057ff;background:#e6eeff;color:#0057ff}.red-text[data-v-a40d0499]{color:#ea5b41}.lsh-text-btn[data-v-a40d0499]{display:flex;justify-content:center;align-items:center;gap:4px;padding:1px 6px!important;cursor:pointer;color:#101114;line-height:22px;background:transparent!important;height:22px}.lsh-text-btn.is-disabled[data-v-a40d0499]{opacity:.4}.lsh-text-btn.blue[data-v-a40d0499]{color:#0057ff}.lsh-text-btn.red[data-v-a40d0499]{color:#ea5b41}.lsh-textarea[data-v-a40d0499]{resize:none;border:none;outline:none;width:100%;background:transparent}.lsh-content-box[data-v-a40d0499]{display:flex;gap:16px;height:444px}.lsh-content-box .lsh-form-box[data-v-a40d0499]{flex:1;display:flex;flex-direction:column;gap:8px}.lsh-content-box .lsh-form-box .lsh-form-top[data-v-a40d0499]{display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-top .lsh-title[data-v-a40d0499]{color:#101114;font-weight:600;line-height:22px}.lsh-content-box .lsh-form-box .lsh-form-bottom[data-v-a40d0499]{flex:1;border-radius:10px;border:1px solid #d9d9d9;padding:12px 16px;color:#101114;line-height:22px;background:#fff;display:flex;flex-direction:column;overflow:hidden}.lsh-content-box .lsh-form-box .lsh-form-bottom.gray[data-v-a40d0499]{background:#f1f2f5}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-tip[data-v-a40d0499]{color:#797b80;font-size:12px;line-height:20px;font-weight:400;display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-a40d0499]{flex:1;overflow:auto}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-a40d0499] .cx-spin-mask{background:transparent;opacity:.4}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-a40d0499] .cx-spin-mask .cx-spin-tip{font-size:14px;font-weight:400}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-form-item[data-v-a40d0499]{display:flex;flex-direction:column;gap:4px}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-form-item[data-v-a40d0499]:nth-child(n+2){border-top:1px solid #eaecf2;padding-top:8px;margin-top:8px}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-form-item .lsh-form-item-top[data-v-a40d0499]{color:#101114;font-weight:600;line-height:22px;display:flex;align-items:center;justify-content:space-between}.lsh-context-menu[data-v-221758b9]{position:fixed;z-index:3000;min-width:208px;max-width:268px;max-height:68vh;display:flex;flex-direction:column;padding:6px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;box-shadow:0 8px 28px #1f232924;overflow:hidden}.lsh-context-menu .lsh-context-header[data-v-221758b9]{flex-shrink:0;padding:4px 8px 6px;color:#8a8f99;font-size:12px;line-height:18px}.lsh-context-menu .lsh-context-list[data-v-221758b9]{flex:1;min-height:0;overflow-y:auto}.lsh-context-menu .lsh-context-list .lsh-context-item[data-v-221758b9]{display:flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:#101114;font-size:14px;line-height:22px;cursor:pointer}.lsh-context-menu .lsh-context-list .lsh-context-item[data-v-221758b9]:hover,.lsh-context-menu .lsh-context-list .lsh-context-item.is-expanded[data-v-221758b9]{background:#f1f2f5}.lsh-context-menu .lsh-context-list .lsh-context-item .lsh-context-label[data-v-221758b9]{flex:1;text-align:left}.lsh-context-menu .lsh-context-list .lsh-context-item .lsh-context-caret[data-v-221758b9]{flex-shrink:0;transition:transform .16s ease}.lsh-context-menu .lsh-context-list .lsh-context-item.is-expanded .lsh-context-caret[data-v-221758b9]{transform:rotate(180deg)}.lsh-context-menu .lsh-context-list .lsh-context-options[data-v-221758b9]{display:flex;flex-wrap:wrap;gap:6px;padding:4px 8px 8px}.lsh-context-menu .lsh-context-list .lsh-context-options .lsh-context-option[data-v-221758b9]{padding:3px 10px;border:1px solid #e5e7eb;border-radius:999px;background:#fafbfc;color:#3d4766;font-size:12px;line-height:20px;cursor:pointer}.lsh-context-menu .lsh-context-list .lsh-context-options .lsh-context-option[data-v-221758b9]:hover{border-color:#0057ff;background:#e6eeff;color:#0057ff}.lsh-footer-box[data-v-7ff45129]{height:46px;padding:8px;display:flex;align-items:center;justify-content:flex-end}.lsh-footer-box .lsh-option-item[data-v-7ff45129]{height:100%;padding:4px 8px;display:flex;align-items:center;gap:4px;color:#101114;font-size:14px;font-weight:400;line-height:22px}.lsh-footer-box .lsh-option-item[data-v-7ff45129] .svg-icon{font-size:18px}.lsh-footer-box .lsh-option-item.btn[data-v-7ff45129]{cursor:pointer;-webkit-user-select:none;user-select:none}.lsh-footer-box .lsh-option-item.btn.disabled[data-v-7ff45129]{opacity:.4}.lsh-footer-box .lsh-option-item.btn[data-v-7ff45129]:not(.disabled):hover{border-radius:6px;background:#f1f2f5}.lsh-footer-box .lsh-option-item.gray[data-v-7ff45129]{color:#797b80}.lsh-footer-box .lsh-divider[data-v-7ff45129]{width:1px;height:20px;background:#eaecf2;margin:0 8px}.lsh-lock-icon[data-v-9c465e3c]{margin-left:2px;flex-shrink:0}.red-text[data-v-4e58c0be]{color:#ea5b41}.lsh-text-btn[data-v-4e58c0be]{display:flex;justify-content:center;align-items:center;gap:4px;padding:4px 8px;cursor:pointer;color:#101114;line-height:22px;height:22px}.lsh-text-btn.stop[data-v-4e58c0be]{color:#ea5b41}.lsh-textarea[data-v-4e58c0be]{resize:none;border:none;outline:none;width:100%;background:transparent}.lsh-content-box[data-v-4e58c0be]{display:flex;gap:16px;height:444px}.lsh-content-box .lsh-form-box[data-v-4e58c0be]{flex:1;display:flex;flex-direction:column;gap:8px}.lsh-content-box .lsh-form-box .lsh-form-top[data-v-4e58c0be]{display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-top .lsh-title[data-v-4e58c0be]{color:#101114;font-weight:600;line-height:22px}.lsh-content-box .lsh-form-box .lsh-form-bottom[data-v-4e58c0be]{flex:1;border-radius:10px;border:1px solid #d9d9d9;padding:12px;color:#101114;line-height:22px;background:#fff;display:flex;flex-direction:column;overflow:hidden}.lsh-content-box .lsh-form-box .lsh-form-bottom.gray[data-v-4e58c0be]{background:#f1f2f5}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-tip[data-v-4e58c0be]{color:#797b80;font-size:12px;line-height:20px;display:flex;align-items:center;justify-content:space-between}.lsh-content-box .lsh-form-box .lsh-form-bottom .lsh-result-box[data-v-4e58c0be]{flex:1;overflow:auto}.lsh-ai-modal{position:relative;overflow:hidden}.lsh-ai-modal:before{position:absolute;top:0;left:0;width:100%;height:120px;content:"";z-index:0;pointer-events:none;background:radial-gradient(53.22% 165.47% at 52.17% -65.47%,#0038ff14,#0038ff00),radial-gradient(51.16% 163.6% at 85.6% -63.59%,#ff642214,#ff642200),radial-gradient(102.93% 140.61% at 7.43% -30.94%,#00d09e14,#00d09e00),linear-gradient(180deg,#fafbfc 47.89%,#fafbfccc,#fafbfc00)}.lsh-ai-modal .el-dialog__header,.lsh-ai-modal .el-dialog__body,.lsh-ai-modal .el-dialog__footer{position:relative;z-index:1}.lsh-ai-modal .el-dialog__header .el-dialog__headerbtn{right:-2px!important}.rect-btn[data-v-eb6e2e70]{display:flex;width:40px;height:36px;padding:0 12px;justify-content:center;align-items:center;flex-shrink:0;border-radius:10px;background:#f1f2f5;border:1px solid #f1f2f5;cursor:pointer;-webkit-user-select:none;user-select:none}.rect-btn.active[data-v-eb6e2e70],.rect-btn[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-header-content[data-v-eb6e2e70]{position:relative}.lsh-header-content .lsh-title[data-v-eb6e2e70]{color:#101114;font-size:16px;font-weight:600;line-height:24px}.lsh-header-content .lsh-radio-group[data-v-eb6e2e70]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:185px}.lsh-content-box[data-v-eb6e2e70]{height:444px;display:flex;flex-direction:column}.lsh-content-box .lsh-label[data-v-eb6e2e70]{color:#101114;font-size:14px;font-weight:600;line-height:22px;margin-bottom:8px}.lsh-content-box .lsh-text-box[data-v-eb6e2e70]{height:44px;padding:5px 12px;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:16px;border:1px solid #d9d9d9;background:#f1f2f5;color:#101114;font-size:18px;font-weight:600;line-height:26px;width:100%;text-align:center}.lsh-content-box .lsh-polyphonic-box[data-v-eb6e2e70]{margin-top:16px;flex:1}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-list[data-v-eb6e2e70]{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-item[data-v-eb6e2e70]{display:flex;align-items:flex-start;gap:8px}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-char[data-v-eb6e2e70]{display:flex;align-items:center;justify-content:center;width:36px;height:32px;flex-shrink:0;border-radius:10px;background:#f1f2f5;color:#101114;font-size:16px;font-weight:600;line-height:24px}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-options[data-v-eb6e2e70]{display:flex;flex-wrap:wrap;gap:8px}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-option[data-v-eb6e2e70]{height:32px;padding:4px 12px;border-radius:10px;border:1px solid #d9d9d9;background:#fff;color:#101114;font-size:14px;line-height:22px;cursor:pointer;-webkit-user-select:none;user-select:none}.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-option.active[data-v-eb6e2e70],.lsh-content-box .lsh-polyphonic-box .lsh-polyphonic-option[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-options-box[data-v-eb6e2e70]{margin-top:16px;display:flex;gap:16px}.lsh-content-box .lsh-options-box .lsh-options[data-v-eb6e2e70]{display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:16px;border:1px solid #d9d9d9;background:#fff}.lsh-content-box .lsh-options-box .lsh-initials[data-v-eb6e2e70]{display:flex;flex-wrap:wrap;gap:4px}.lsh-content-box .lsh-options-box .lsh-initials .lsh-initial-btn[data-v-eb6e2e70]{display:flex;width:40px;height:36px;padding:0 12px;justify-content:center;align-items:center;flex-shrink:0;border-radius:10px;background:#f1f2f5;border:1px solid #f1f2f5;cursor:pointer;-webkit-user-select:none;user-select:none}.lsh-content-box .lsh-options-box .lsh-initials .lsh-initial-btn.active[data-v-eb6e2e70],.lsh-content-box .lsh-options-box .lsh-initials .lsh-initial-btn[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-options-box .lsh-radio-group-white[data-v-eb6e2e70]{border-radius:14px;padding:4px;gap:4px;height:44px}.lsh-content-box .lsh-options-box .lsh-radio-group-white[data-v-eb6e2e70] .cx-radio{border-radius:10px}.lsh-content-box .lsh-options-box .lsh-radio-group-white[data-v-eb6e2e70] .cx-radio.cx-radio-selected{font-weight:400}.lsh-content-box .lsh-options-box .lsh-final-box[data-v-eb6e2e70]{display:flex;flex-direction:column;gap:8px;padding:8px;border-radius:14px;background:#f1f2f5}.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list[data-v-eb6e2e70]{display:flex;flex-wrap:wrap;gap:4px}.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list .lsh-final-item[data-v-eb6e2e70]{display:flex;width:40px;height:36px;padding:0 12px;justify-content:center;align-items:center;flex-shrink:0;border-radius:10px;background:#f1f2f5;border:1px solid #f1f2f5;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;box-shadow:0 1px 4px #0000001a}.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list .lsh-final-item.active[data-v-eb6e2e70],.lsh-content-box .lsh-options-box .lsh-final-box .lsh-final-list .lsh-final-item[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-manual-text-box[data-v-eb6e2e70]{margin-top:16px}.lsh-content-box .lsh-manual-text-box .lsh-manual-text-list[data-v-eb6e2e70]{display:flex;gap:8px}.lsh-content-box .lsh-manual-text-box .lsh-manual-text-item[data-v-eb6e2e70]{display:flex;min-width:64px;height:52px;padding:4px 12px;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;border:1px solid #d9d9d9;background:#fff;font-size:16px;cursor:pointer}.lsh-content-box .lsh-manual-text-box .lsh-manual-text-item.active[data-v-eb6e2e70],.lsh-content-box .lsh-manual-text-box .lsh-manual-text-item[data-v-eb6e2e70]:hover{border-color:#0d1839}.lsh-content-box .lsh-manual-text-box .lsh-manual-pinyin[data-v-eb6e2e70]{color:#666;font-size:12px;line-height:18px}.lsh-header-content[data-v-a2a3927f]{width:calc(100% - 52px);display:flex;flex-direction:column;gap:4px}.lsh-header-content .lsh-title[data-v-a2a3927f]{color:#101114;font-size:16px;font-weight:600;line-height:24px}.lsh-header-content .lsh-tip[data-v-a2a3927f]{color:#797b80;font-size:14px;font-weight:400;line-height:22px}.lsh-content-box[data-v-a2a3927f]{display:flex;flex-direction:column;gap:24px;padding-bottom:44px}.lsh-content-box .lsh-form-item-label[data-v-a2a3927f]{color:#101114;font-size:14px;font-weight:600;line-height:22px;margin-bottom:8px}.lsh-modal-header{height:fit-content!important}.lsh-language-list[data-v-eae5983d]{display:flex;align-items:center;gap:8px;padding:12px;width:264px;flex-wrap:wrap}.lsh-language-list .el-button[data-v-eae5983d]{width:116px}.lsh-number-list[data-v-9fa42093]{display:flex;gap:8px;padding:12px;width:272px;flex-direction:column;align-items:start;overflow:hidden}.lsh-number-list .el-button[data-v-9fa42093]{width:100%;justify-content:flex-start}.lsh-number-label[data-v-9fa42093]{flex-shrink:0}.lsh-lock-tip[data-v-55519fd0]{display:flex;align-items:center;gap:4px;padding:8px 12px;border-top:1px solid #f1f2f5;color:#8a8f99;font-size:12px;line-height:18px}.lsh-lock-tip .lsh-lock-tip-icon[data-v-55519fd0]{flex-shrink:0}.lsh-stop-box[data-v-94112f2f]{display:flex;flex-direction:column}.lsh-stop-list[data-v-94112f2f]{display:flex;align-items:center;gap:8px;padding:12px}.lsh-stop-list .lsh-stop-custom .lsh-stop-value[data-v-94112f2f]{width:42px;margin:0 4px;text-align:center;display:inline-block}.lsh-stop-list .lsh-stop-custom .lsh-stop-value.is-empty[data-v-94112f2f]{color:#797b80}.lsh-stop-list .lsh-stop-custom .lsh-stop-input[data-v-94112f2f]{outline:none;height:22px;width:42px;margin:0 4px;padding:0;border:none;border-bottom:1px solid #101114;background:transparent;line-height:22px;color:#101114;text-align:center}.lsh-stop-list .lsh-stop-custom .lsh-stop-input[data-v-94112f2f]:focus{border-color:#0057ff}.lsh-stop-list .lsh-stop-custom .lsh-stop-icon[data-v-94112f2f]{cursor:pointer;flex-shrink:0;margin-left:2px;padding:3px;opacity:0;color:#797b80;display:inline-flex;align-items:center}.lsh-stop-list .lsh-stop-custom .lsh-stop-icon.is-set[data-v-94112f2f]{opacity:.5}.lsh-stop-list .lsh-stop-custom .lsh-stop-icon.is-editing[data-v-94112f2f]{opacity:1;color:#0057ff}.lsh-stop-list .lsh-stop-custom:hover .lsh-stop-icon[data-v-94112f2f]{opacity:1}.lsh-content-box[data-v-0b25e8fe]{display:flex;flex-direction:column;gap:24px;padding-bottom:44px}.lsh-content-box .lsh-title[data-v-0b25e8fe]{color:#101114;font-size:14px;font-weight:600;line-height:22px;margin-bottom:4px}.lsh-content-box .lsh-tip-text[data-v-0b25e8fe]{color:#797b80;font-size:14px;font-weight:400;line-height:175%}.word-upload-modal .el-overlay-dialog .el-dialog{overflow:hidden;height:600px;display:flex;flex-direction:column}.word-upload-modal .el-overlay-dialog .el-dialog .el-dialog__body{flex:1}.lsh-toolbar-box[data-v-0f82847d]{position:relative;flex:1;min-width:0;display:flex;align-items:center;gap:8px;overflow:hidden}.lsh-toolbar-box .lsh-tool-btn[data-v-0f82847d]{height:30px;flex-shrink:0;display:flex;align-items:center;padding:4px 8px;border-radius:6px;border:none;white-space:nowrap}.lsh-toolbar-box .lsh-tool-btn.is-locked[data-v-0f82847d],.lsh-toolbar-box .lsh-tool-btn.is-locked[data-v-0f82847d]:hover,.lsh-toolbar-box .lsh-tool-btn.is-locked[data-v-0f82847d]:focus{background:#e6eeff;color:#0057ff;box-shadow:inset 0 0 0 1px #0057ff}.lsh-toolbar-box .lsh-tool-btn.is-pressing[data-v-0f82847d]:not(.is-locked){background:#f1f2f5}.lsh-toolbar-measure[data-v-0f82847d]{position:absolute;top:0;left:0;z-index:-1;display:flex;gap:8px;height:0;overflow:hidden;visibility:hidden;pointer-events:none}.lsh-more-list[data-v-0f82847d]{display:flex;min-width:140px;padding:4px;flex-direction:column;gap:2px}.lsh-more-list .lsh-more-item[data-v-0f82847d]{width:100%;justify-content:flex-start;padding:8px 10px;border:none;border-radius:6px}.lsh-more-list .lsh-more-item.is-locked[data-v-0f82847d]{background:#e6eeff;color:#0057ff}.el-popper.lsh-popper{width:fit-content!important;padding:0}.tts-rich-text-editor[data-v-387eca76]{box-sizing:border-box;display:flex;width:100%;max-width:100%;min-width:0;height:266px;min-height:220px;padding:0 8px 8px;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;color:#101114;font-family:PingFang SC,Microsoft YaHei,Arial,sans-serif}.tts-rich-text-editor.is-fullscreen[data-v-387eca76]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100vh;padding:16px;background:#f5f6f8}.tts-rich-text-editor.is-disabled .lsh-editor-box[data-v-387eca76]{background:#f7f8fa}.tts-rich-text-editor.is-disabled .lsh-top[data-v-387eca76],.tts-rich-text-editor.is-disabled .lsh-middle[data-v-387eca76],.tts-rich-text-editor.is-disabled .lsh-bottom[data-v-387eca76]{opacity:.7}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]{position:relative;display:flex;width:100%;min-width:0;height:100%;flex-direction:column;overflow:hidden;border:1px solid #d9d9d9;border-radius:24px;background:#fff;transition:box-shadow .3s}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]:hover,.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]:focus-within{border-color:#0057ff}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]:focus-within{box-shadow:0 8px 16px #0057ff33}.tts-rich-text-editor .lsh-top[data-v-387eca76]{display:flex;height:46px;padding:8px 16px;align-items:center;gap:8px;flex-shrink:0;border-bottom:1px solid #eaecf2}.tts-rich-text-editor .lsh-fullscreen-btn[data-v-387eca76]{display:flex;width:30px;height:30px;padding:0;align-items:center;justify-content:center;flex-shrink:0;border:0;border-radius:6px;background:transparent;color:#101114;cursor:pointer}.tts-rich-text-editor .lsh-fullscreen-btn[data-v-387eca76]:hover{background:#f1f2f5}.tts-rich-text-editor .lsh-middle[data-v-387eca76]{flex:1;min-height:0;padding:12px 16px 0;overflow:hidden}.tts-rich-text-editor .lsh-middle .editor-shell[data-v-387eca76]{height:100%;overflow:auto}.tts-rich-text-editor .lsh-bottom[data-v-387eca76]{display:flex;min-height:46px;min-width:0;align-items:center;justify-content:flex-end;flex-shrink:0}@media (max-width: 640px){.tts-rich-text-editor[data-v-387eca76]{padding:0}.tts-rich-text-editor .lsh-editor-box[data-v-387eca76]{border-radius:12px}.tts-rich-text-editor .lsh-top[data-v-387eca76]{padding:8px}}
|
|
@@ -69,6 +69,7 @@ declare const __VLS_component: import('vue').DefineComponent<TtsEditorRootProps,
|
|
|
69
69
|
continue?: Record<string, string | number> | undefined;
|
|
70
70
|
pinyin?: Record<string, string | number> | undefined;
|
|
71
71
|
language?: Record<string, string | number> | undefined;
|
|
72
|
+
tone?: Record<string, string | number> | undefined;
|
|
72
73
|
}, Partial<Record<import('../../core').CustomTagType, Record<string, string | number>>> | {
|
|
73
74
|
replace?: Record<string, string | number> | undefined;
|
|
74
75
|
stop?: Record<string, string | number> | undefined;
|
|
@@ -77,6 +78,7 @@ declare const __VLS_component: import('vue').DefineComponent<TtsEditorRootProps,
|
|
|
77
78
|
continue?: Record<string, string | number> | undefined;
|
|
78
79
|
pinyin?: Record<string, string | number> | undefined;
|
|
79
80
|
language?: Record<string, string | number> | undefined;
|
|
81
|
+
tone?: Record<string, string | number> | undefined;
|
|
80
82
|
}>;
|
|
81
83
|
toggleLockTool: (type: import('../../core').CustomTagType) => boolean;
|
|
82
84
|
unlockTool: () => void;
|
|
@@ -4,6 +4,7 @@ type __VLS_Props = {
|
|
|
4
4
|
label: string;
|
|
5
5
|
value: string;
|
|
6
6
|
}[];
|
|
7
|
+
showCode?: boolean;
|
|
7
8
|
};
|
|
8
9
|
type __VLS_PublicProps = {
|
|
9
10
|
'visible'?: boolean;
|
|
@@ -14,5 +15,7 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
|
|
|
14
15
|
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
15
16
|
onSelect?: ((code: string) => any) | undefined;
|
|
16
17
|
"onUpdate:visible"?: ((value: boolean) => any) | undefined;
|
|
17
|
-
}>, {
|
|
18
|
+
}>, {
|
|
19
|
+
showCode: boolean;
|
|
20
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
18
21
|
export default _default;
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
label: string;
|
|
4
4
|
locked?: boolean;
|
|
5
|
+
/** 锁定后实际会插入的参数文案,例如「2 秒」;锁定态下回显出来,免得用户忘了锁的是多少 */
|
|
6
|
+
param?: string;
|
|
5
7
|
};
|
|
6
8
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
9
|
+
param: string;
|
|
7
10
|
locked: boolean;
|
|
8
11
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
9
12
|
export default _default;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
2
|
virtualRef?: HTMLElement;
|
|
3
3
|
locked?: boolean;
|
|
4
|
+
lockParam?: string;
|
|
4
5
|
};
|
|
5
6
|
type __VLS_PublicProps = {
|
|
6
7
|
'visible'?: boolean;
|
|
@@ -11,5 +12,7 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
|
|
|
11
12
|
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
12
13
|
onSelect?: ((time: number) => any) | undefined;
|
|
13
14
|
"onUpdate:visible"?: ((value: boolean) => any) | undefined;
|
|
14
|
-
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
15
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
16
|
+
inputRef: HTMLInputElement;
|
|
17
|
+
}, any>;
|
|
15
18
|
export default _default;
|
|
@@ -61,6 +61,7 @@ export declare const useEditorToolkit: () => {
|
|
|
61
61
|
continue?: Record<string, string | number> | undefined;
|
|
62
62
|
pinyin?: Record<string, string | number> | undefined;
|
|
63
63
|
language?: Record<string, string | number> | undefined;
|
|
64
|
+
tone?: Record<string, string | number> | undefined;
|
|
64
65
|
}, Partial<Record<CustomTagType, Record<string, string | number>>> | {
|
|
65
66
|
replace?: Record<string, string | number> | undefined;
|
|
66
67
|
stop?: Record<string, string | number> | undefined;
|
|
@@ -69,6 +70,7 @@ export declare const useEditorToolkit: () => {
|
|
|
69
70
|
continue?: Record<string, string | number> | undefined;
|
|
70
71
|
pinyin?: Record<string, string | number> | undefined;
|
|
71
72
|
language?: Record<string, string | number> | undefined;
|
|
73
|
+
tone?: Record<string, string | number> | undefined;
|
|
72
74
|
}>;
|
|
73
75
|
toggleLockTool: (type: CustomTagType) => boolean;
|
|
74
76
|
unlockTool: () => void;
|
|
@@ -103,6 +103,7 @@ export declare function useRichTextEditor(options?: UseRichTextEditorOptions): {
|
|
|
103
103
|
continue?: Record<string, string | number> | undefined;
|
|
104
104
|
pinyin?: Record<string, string | number> | undefined;
|
|
105
105
|
language?: Record<string, string | number> | undefined;
|
|
106
|
+
tone?: Record<string, string | number> | undefined;
|
|
106
107
|
}, Partial<Record<CustomTagType, Record<string, string | number>>> | {
|
|
107
108
|
replace?: Record<string, string | number> | undefined;
|
|
108
109
|
stop?: Record<string, string | number> | undefined;
|
|
@@ -111,6 +112,7 @@ export declare function useRichTextEditor(options?: UseRichTextEditorOptions): {
|
|
|
111
112
|
continue?: Record<string, string | number> | undefined;
|
|
112
113
|
pinyin?: Record<string, string | number> | undefined;
|
|
113
114
|
language?: Record<string, string | number> | undefined;
|
|
115
|
+
tone?: Record<string, string | number> | undefined;
|
|
114
116
|
}>;
|
|
115
117
|
toggleLockTool: (type: CustomTagType) => boolean;
|
|
116
118
|
unlockTool: () => void;
|
|
@@ -206,6 +208,7 @@ export declare const useEditorContext: () => {
|
|
|
206
208
|
continue?: Record<string, string | number> | undefined;
|
|
207
209
|
pinyin?: Record<string, string | number> | undefined;
|
|
208
210
|
language?: Record<string, string | number> | undefined;
|
|
211
|
+
tone?: Record<string, string | number> | undefined;
|
|
209
212
|
}, Partial<Record<CustomTagType, Record<string, string | number>>> | {
|
|
210
213
|
replace?: Record<string, string | number> | undefined;
|
|
211
214
|
stop?: Record<string, string | number> | undefined;
|
|
@@ -214,6 +217,7 @@ export declare const useEditorContext: () => {
|
|
|
214
217
|
continue?: Record<string, string | number> | undefined;
|
|
215
218
|
pinyin?: Record<string, string | number> | undefined;
|
|
216
219
|
language?: Record<string, string | number> | undefined;
|
|
220
|
+
tone?: Record<string, string | number> | undefined;
|
|
217
221
|
}>;
|
|
218
222
|
toggleLockTool: (type: CustomTagType) => boolean;
|
|
219
223
|
unlockTool: () => void;
|
|
@@ -113,6 +113,7 @@ declare function __VLS_template(): {
|
|
|
113
113
|
continue?: Record<string, string | number> | undefined;
|
|
114
114
|
pinyin?: Record<string, string | number> | undefined;
|
|
115
115
|
language?: Record<string, string | number> | undefined;
|
|
116
|
+
tone?: Record<string, string | number> | undefined;
|
|
116
117
|
}, Partial<Record<import('../../core').CustomTagType, Record<string, string | number>>> | {
|
|
117
118
|
replace?: Record<string, string | number> | undefined;
|
|
118
119
|
stop?: Record<string, string | number> | undefined;
|
|
@@ -121,6 +122,7 @@ declare function __VLS_template(): {
|
|
|
121
122
|
continue?: Record<string, string | number> | undefined;
|
|
122
123
|
pinyin?: Record<string, string | number> | undefined;
|
|
123
124
|
language?: Record<string, string | number> | undefined;
|
|
125
|
+
tone?: Record<string, string | number> | undefined;
|
|
124
126
|
}>;
|
|
125
127
|
toggleLockTool: (type: import('../../core').CustomTagType) => boolean;
|
|
126
128
|
unlockTool: () => void;
|
|
@@ -251,6 +253,7 @@ declare function __VLS_template(): {
|
|
|
251
253
|
continue?: Record<string, string | number> | undefined;
|
|
252
254
|
pinyin?: Record<string, string | number> | undefined;
|
|
253
255
|
language?: Record<string, string | number> | undefined;
|
|
256
|
+
tone?: Record<string, string | number> | undefined;
|
|
254
257
|
};
|
|
255
258
|
toggleLockTool: (type: import('../../core').CustomTagType) => boolean;
|
|
256
259
|
unlockTool: () => void;
|
|
@@ -400,6 +403,7 @@ declare const __VLS_component: import('vue').DefineComponent<TtsRichTextEditorPr
|
|
|
400
403
|
continue?: Record<string, string | number> | undefined;
|
|
401
404
|
pinyin?: Record<string, string | number> | undefined;
|
|
402
405
|
language?: Record<string, string | number> | undefined;
|
|
406
|
+
tone?: Record<string, string | number> | undefined;
|
|
403
407
|
}, Partial<Record<import('../../core').CustomTagType, Record<string, string | number>>> | {
|
|
404
408
|
replace?: Record<string, string | number> | undefined;
|
|
405
409
|
stop?: Record<string, string | number> | undefined;
|
|
@@ -408,6 +412,7 @@ declare const __VLS_component: import('vue').DefineComponent<TtsRichTextEditorPr
|
|
|
408
412
|
continue?: Record<string, string | number> | undefined;
|
|
409
413
|
pinyin?: Record<string, string | number> | undefined;
|
|
410
414
|
language?: Record<string, string | number> | undefined;
|
|
415
|
+
tone?: Record<string, string | number> | undefined;
|
|
411
416
|
}>;
|
|
412
417
|
toggleLockTool: (type: import('../../core').CustomTagType) => boolean;
|
|
413
418
|
unlockTool: () => void;
|
|
@@ -538,6 +543,7 @@ declare const __VLS_component: import('vue').DefineComponent<TtsRichTextEditorPr
|
|
|
538
543
|
continue?: Record<string, string | number> | undefined;
|
|
539
544
|
pinyin?: Record<string, string | number> | undefined;
|
|
540
545
|
language?: Record<string, string | number> | undefined;
|
|
546
|
+
tone?: Record<string, string | number> | undefined;
|
|
541
547
|
};
|
|
542
548
|
toggleLockTool: (type: import('../../core').CustomTagType) => boolean;
|
|
543
549
|
unlockTool: () => void;
|
package/dist/core/config.d.ts
CHANGED
|
@@ -42,6 +42,12 @@ export declare const ToolConfig: {
|
|
|
42
42
|
readonly type: "language";
|
|
43
43
|
readonly deleteMode: "convertToText";
|
|
44
44
|
};
|
|
45
|
+
readonly tone: {
|
|
46
|
+
readonly label: "语气";
|
|
47
|
+
readonly icon: "editor-tone";
|
|
48
|
+
readonly type: "tone";
|
|
49
|
+
readonly deleteMode: "deleteNode";
|
|
50
|
+
};
|
|
45
51
|
readonly number: {
|
|
46
52
|
readonly label: "数字读法";
|
|
47
53
|
readonly icon: "editor-number";
|
|
@@ -69,7 +75,10 @@ export declare const ToolConfig: {
|
|
|
69
75
|
readonly deleteMode: "convertToText";
|
|
70
76
|
};
|
|
71
77
|
};
|
|
72
|
-
export type CustomTagType = 'stop' | 'customStop' | 'continue' | 'pinyin' | 'replace' | 'language' | 'ignore';
|
|
78
|
+
export type CustomTagType = 'stop' | 'customStop' | 'continue' | 'pinyin' | 'replace' | 'language' | 'ignore' | 'tone';
|
|
79
|
+
export declare const ToneOptions: readonly (LanguageOption & {
|
|
80
|
+
tag: string;
|
|
81
|
+
})[];
|
|
73
82
|
export declare const LanguageOptions: readonly LanguageOption[];
|
|
74
83
|
export declare const StopOptions: readonly [{
|
|
75
84
|
readonly label: "停顿 0.5 秒";
|
|
@@ -91,10 +100,10 @@ export declare const EditorConst: {
|
|
|
91
100
|
/**
|
|
92
101
|
* 是否为「光标插入类」标签工具。
|
|
93
102
|
*
|
|
94
|
-
*
|
|
95
|
-
* 也是唯一支持长按锁定、锁定后在文本中点击即可重复插入的一类工具。
|
|
103
|
+
* 包括停顿、长停顿和语气;长按锁定仅支持停顿与长停顿。
|
|
96
104
|
*/
|
|
97
105
|
export declare const isInsertTagType: (type: CustomTagType) => boolean;
|
|
106
|
+
export declare const isLockableTagType: (type: CustomTagType) => type is "stop" | "customStop";
|
|
98
107
|
/**
|
|
99
108
|
* 锁定后插入时使用的默认参数。
|
|
100
109
|
* 用户在弹层里选过一次会被记住(见 useRichTextEditor 的 rememberToolParams),这里只是兜底。
|