@linker-design-plus/tiny-peony 1.2.28

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.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/dist/foundation/commandExecutor/commandExecutor.d.ts +9 -0
  3. package/dist/foundation/contentManager/contentManager.d.ts +21 -0
  4. package/dist/foundation/cursorManager/cursorManager.d.ts +14 -0
  5. package/dist/foundation/editorManager/editor.d.ts +39 -0
  6. package/dist/foundation/editorManager/maxLength.d.ts +4 -0
  7. package/dist/foundation/editorManager/paste.d.ts +3 -0
  8. package/dist/foundation/undoManager/undoManager.d.ts +18 -0
  9. package/dist/index.d.ts +367 -0
  10. package/dist/index.js +63 -0
  11. package/dist/index.mjs +4494 -0
  12. package/dist/intersection/components/CommonModal/CommonModal.d.ts +40 -0
  13. package/dist/intersection/components/CommonModal/composables/useModalWrapper.d.ts +47 -0
  14. package/dist/intersection/components/CommonModal/index.d.ts +86 -0
  15. package/dist/intersection/components/CommonModal/syncConfirm.d.ts +2 -0
  16. package/dist/intersection/components/editor/context.d.ts +45 -0
  17. package/dist/intersection/components/editor/editor.d.ts +172 -0
  18. package/dist/intersection/components/editor/iconfont.d.ts +20 -0
  19. package/dist/intersection/components/editor/index.d.ts +365 -0
  20. package/dist/intersection/components/modals/contextMenu.vue.d.ts +22 -0
  21. package/dist/intersection/hooks/use-editor.d.ts +54 -0
  22. package/dist/intersection/hooks/use-highlight.d.ts +7 -0
  23. package/dist/intersection/stores/use-editor-store.d.ts +0 -0
  24. package/dist/plugins/AnchorTagPlugin/constant.d.ts +1 -0
  25. package/dist/plugins/AnchorTagPlugin/index.d.ts +2 -0
  26. package/dist/plugins/AnchorTagPlugin/plugin.d.ts +37 -0
  27. package/dist/plugins/HomophonesTagPlugin/homophoner.vue.d.ts +13 -0
  28. package/dist/plugins/HomophonesTagPlugin/index.d.ts +2 -0
  29. package/dist/plugins/HomophonesTagPlugin/plugin.d.ts +17 -0
  30. package/dist/plugins/PausationTagPlugin/index.d.ts +2 -0
  31. package/dist/plugins/PausationTagPlugin/pausationor.vue.d.ts +9 -0
  32. package/dist/plugins/PausationTagPlugin/plugin.d.ts +28 -0
  33. package/dist/plugins/PronunciationTagPlugin/index.d.ts +2 -0
  34. package/dist/plugins/PronunciationTagPlugin/plugin.d.ts +19 -0
  35. package/dist/plugins/PronunciationTagPlugin/pronunciationor.vue.d.ts +13 -0
  36. package/dist/tiny-peony.css +1 -0
  37. package/dist/typings/actions/i-anchor.d.ts +22 -0
  38. package/dist/typings/actions/i-homophone.d.ts +9 -0
  39. package/dist/typings/actions/i-modal.d.ts +7 -0
  40. package/dist/typings/actions/i-plugin.d.ts +9 -0
  41. package/dist/typings/index.d.ts +9 -0
  42. package/dist/typings/intersection/editor.d.ts +35 -0
  43. package/dist/typings/shared.d.ts +16 -0
  44. package/dist/typings/status/i-command-executor.d.ts +8 -0
  45. package/dist/typings/status/i-content-manager.d.ts +14 -0
  46. package/dist/typings/status/i-cursor-manager.d.ts +10 -0
  47. package/dist/typings/status/i-editor-manager.d.ts +20 -0
  48. package/dist/typings/status/i-undo-manager.d.ts +26 -0
  49. package/dist/utils/dom.d.ts +18 -0
  50. package/dist/utils/index.d.ts +3 -0
  51. package/dist/utils/shared.d.ts +2 -0
  52. package/dist/utils/value-type.d.ts +12 -0
  53. package/package.json +43 -0
@@ -0,0 +1,365 @@
1
+ import { App } from 'vue';
2
+ import _EditorContainer from './editor';
3
+ import './editor.less';
4
+ declare const EditorContainer: {
5
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
6
+ preTime: {
7
+ type: StringConstructor;
8
+ default: string;
9
+ };
10
+ realTime: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
14
+ textCount: {
15
+ type: NumberConstructor;
16
+ default: number;
17
+ };
18
+ listenAnchorId: {
19
+ type: NumberConstructor;
20
+ default: number;
21
+ };
22
+ listenMode: {
23
+ type: import("vue").PropType<import("../../..").ListenModeEnum>;
24
+ default: string;
25
+ };
26
+ placeholder: {
27
+ type: StringConstructor;
28
+ default: string;
29
+ };
30
+ simple: {
31
+ type: BooleanConstructor;
32
+ default: boolean;
33
+ };
34
+ maxLength: {
35
+ type: NumberConstructor;
36
+ default: number;
37
+ };
38
+ showWordLimit: {
39
+ type: BooleanConstructor;
40
+ default: boolean;
41
+ };
42
+ disabled: {
43
+ type: BooleanConstructor;
44
+ default: boolean;
45
+ };
46
+ class: {
47
+ type: (ArrayConstructor | StringConstructor)[];
48
+ default: () => never[];
49
+ };
50
+ contentStyle: {
51
+ type: import("vue").PropType<import("vue").CSSProperties>;
52
+ default: () => {};
53
+ };
54
+ }>> & Readonly<{
55
+ onChange?: ((contentLength: number) => any) | undefined;
56
+ "onUpdate:textCount"?: ((value: number) => any) | undefined;
57
+ onAnchorListen?: ((value: import("../../..").IAnchor, text: string) => any) | undefined;
58
+ onAnchorRemove?: ((value: import("../../..").IAnchor) => any) | undefined;
59
+ onAnchorListenStop?: ((value: import("../../..").IAnchor) => any) | undefined;
60
+ }>, {
61
+ action: import("vue").Ref<import("../../hooks/use-editor").EditorAction | undefined, import("../../hooks/use-editor").EditorAction | undefined>;
62
+ innerRender: () => import("vue/jsx-runtime").JSX.Element;
63
+ innerGetContent: (_options?: import("./context").ContentOptions) => string;
64
+ innerSetContent: (content: string) => Promise<void>;
65
+ innerAppendContent: (content: string | string[]) => Promise<void>;
66
+ innerGetTextContent: () => string[];
67
+ innerInsertContent: (content: string | Node) => void;
68
+ innerDeleteContent: () => void;
69
+ innerUpdateContent: (content: string | Node) => void;
70
+ innerIsCaret: () => boolean;
71
+ innerIsRange: () => boolean;
72
+ innerIsSelectionInDifferentParas: () => boolean;
73
+ innerIsSelectionContainsTag: (type: import("../../..").PluginFlag) => boolean;
74
+ innerGetAnchorTtsMark: (id: number, startFromCursor?: boolean) => string;
75
+ innerGetAnchorTtsEmotionAndRole: (id: number) => [string, string | undefined];
76
+ innerIsAllMarkedByAnchor: () => boolean;
77
+ innerAddExtraAnchors: (data: import("../../..").IAnchor[]) => void;
78
+ innerClearContent: () => void;
79
+ innerRenderHightlight: (matchingContent: string) => void;
80
+ innerUnrenderHightlight: () => void;
81
+ }, {}, {}, {
82
+ getContent(options?: import("./context").ContentOptions): string;
83
+ getHtml(options: import("./context").ContentOptions): string;
84
+ setContent(content: string): Promise<void>;
85
+ setHtml(content: string): Promise<void>;
86
+ appendContent(content: string | string[]): Promise<void>;
87
+ getTextContent(): string[];
88
+ insertContent(content: string | Node): void;
89
+ deleteContent(): void;
90
+ updateContent(content: string | Node): void;
91
+ isCaret(): boolean;
92
+ isRange(): boolean;
93
+ isSelectionInDifferentParas(): boolean;
94
+ isSelectionContainsTag(type: import("../../..").PluginFlag): boolean;
95
+ getAnchorTtsMark(id: number, startFromCursor?: boolean): string;
96
+ getAnchorTtsEmotionAndRole(id: number): [string, string | undefined];
97
+ isAllMarkedByAnchor(): boolean;
98
+ addExtraAnchors(data: import("../../..").IAnchor[]): void;
99
+ clearContent(): void;
100
+ clear(): Promise<void>;
101
+ renderHighlight(matchingContent: string): void;
102
+ unrenderHighlight(): void;
103
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
104
+ change: (contentLength: number) => true;
105
+ 'update:textCount': (value: number) => true;
106
+ anchorListen: (value: import("../../..").IAnchor, text: string) => true;
107
+ anchorListenStop: (value: import("../../..").IAnchor) => true;
108
+ anchorRemove: (value: import("../../..").IAnchor) => true;
109
+ }, import("vue").PublicProps, {
110
+ class: string | unknown[];
111
+ disabled: boolean;
112
+ placeholder: string;
113
+ maxLength: number;
114
+ showWordLimit: boolean;
115
+ simple: boolean;
116
+ preTime: string;
117
+ realTime: string;
118
+ textCount: number;
119
+ listenAnchorId: number;
120
+ listenMode: import("../../..").ListenModeEnum;
121
+ contentStyle: import("vue").CSSProperties;
122
+ }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
123
+ P: {};
124
+ B: {};
125
+ D: {};
126
+ C: {};
127
+ M: {};
128
+ Defaults: {};
129
+ }, Readonly<import("vue").ExtractPropTypes<{
130
+ preTime: {
131
+ type: StringConstructor;
132
+ default: string;
133
+ };
134
+ realTime: {
135
+ type: StringConstructor;
136
+ default: string;
137
+ };
138
+ textCount: {
139
+ type: NumberConstructor;
140
+ default: number;
141
+ };
142
+ listenAnchorId: {
143
+ type: NumberConstructor;
144
+ default: number;
145
+ };
146
+ listenMode: {
147
+ type: import("vue").PropType<import("../../..").ListenModeEnum>;
148
+ default: string;
149
+ };
150
+ placeholder: {
151
+ type: StringConstructor;
152
+ default: string;
153
+ };
154
+ simple: {
155
+ type: BooleanConstructor;
156
+ default: boolean;
157
+ };
158
+ maxLength: {
159
+ type: NumberConstructor;
160
+ default: number;
161
+ };
162
+ showWordLimit: {
163
+ type: BooleanConstructor;
164
+ default: boolean;
165
+ };
166
+ disabled: {
167
+ type: BooleanConstructor;
168
+ default: boolean;
169
+ };
170
+ class: {
171
+ type: (ArrayConstructor | StringConstructor)[];
172
+ default: () => never[];
173
+ };
174
+ contentStyle: {
175
+ type: import("vue").PropType<import("vue").CSSProperties>;
176
+ default: () => {};
177
+ };
178
+ }>> & Readonly<{
179
+ onChange?: ((contentLength: number) => any) | undefined;
180
+ "onUpdate:textCount"?: ((value: number) => any) | undefined;
181
+ onAnchorListen?: ((value: import("../../..").IAnchor, text: string) => any) | undefined;
182
+ onAnchorRemove?: ((value: import("../../..").IAnchor) => any) | undefined;
183
+ onAnchorListenStop?: ((value: import("../../..").IAnchor) => any) | undefined;
184
+ }>, {
185
+ action: import("vue").Ref<import("../../hooks/use-editor").EditorAction | undefined, import("../../hooks/use-editor").EditorAction | undefined>;
186
+ innerRender: () => import("vue/jsx-runtime").JSX.Element;
187
+ innerGetContent: (_options?: import("./context").ContentOptions) => string;
188
+ innerSetContent: (content: string) => Promise<void>;
189
+ innerAppendContent: (content: string | string[]) => Promise<void>;
190
+ innerGetTextContent: () => string[];
191
+ innerInsertContent: (content: string | Node) => void;
192
+ innerDeleteContent: () => void;
193
+ innerUpdateContent: (content: string | Node) => void;
194
+ innerIsCaret: () => boolean;
195
+ innerIsRange: () => boolean;
196
+ innerIsSelectionInDifferentParas: () => boolean;
197
+ innerIsSelectionContainsTag: (type: import("../../..").PluginFlag) => boolean;
198
+ innerGetAnchorTtsMark: (id: number, startFromCursor?: boolean) => string;
199
+ innerGetAnchorTtsEmotionAndRole: (id: number) => [string, string | undefined];
200
+ innerIsAllMarkedByAnchor: () => boolean;
201
+ innerAddExtraAnchors: (data: import("../../..").IAnchor[]) => void;
202
+ innerClearContent: () => void;
203
+ innerRenderHightlight: (matchingContent: string) => void;
204
+ innerUnrenderHightlight: () => void;
205
+ }, {}, {}, {
206
+ getContent(options?: import("./context").ContentOptions): string;
207
+ getHtml(options: import("./context").ContentOptions): string;
208
+ setContent(content: string): Promise<void>;
209
+ setHtml(content: string): Promise<void>;
210
+ appendContent(content: string | string[]): Promise<void>;
211
+ getTextContent(): string[];
212
+ insertContent(content: string | Node): void;
213
+ deleteContent(): void;
214
+ updateContent(content: string | Node): void;
215
+ isCaret(): boolean;
216
+ isRange(): boolean;
217
+ isSelectionInDifferentParas(): boolean;
218
+ isSelectionContainsTag(type: import("../../..").PluginFlag): boolean;
219
+ getAnchorTtsMark(id: number, startFromCursor?: boolean): string;
220
+ getAnchorTtsEmotionAndRole(id: number): [string, string | undefined];
221
+ isAllMarkedByAnchor(): boolean;
222
+ addExtraAnchors(data: import("../../..").IAnchor[]): void;
223
+ clearContent(): void;
224
+ clear(): Promise<void>;
225
+ renderHighlight(matchingContent: string): void;
226
+ unrenderHighlight(): void;
227
+ }, {
228
+ class: string | unknown[];
229
+ disabled: boolean;
230
+ placeholder: string;
231
+ maxLength: number;
232
+ showWordLimit: boolean;
233
+ simple: boolean;
234
+ preTime: string;
235
+ realTime: string;
236
+ textCount: number;
237
+ listenAnchorId: number;
238
+ listenMode: import("../../..").ListenModeEnum;
239
+ contentStyle: import("vue").CSSProperties;
240
+ }>;
241
+ __isFragment?: never;
242
+ __isTeleport?: never;
243
+ __isSuspense?: never;
244
+ } & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
245
+ preTime: {
246
+ type: StringConstructor;
247
+ default: string;
248
+ };
249
+ realTime: {
250
+ type: StringConstructor;
251
+ default: string;
252
+ };
253
+ textCount: {
254
+ type: NumberConstructor;
255
+ default: number;
256
+ };
257
+ listenAnchorId: {
258
+ type: NumberConstructor;
259
+ default: number;
260
+ };
261
+ listenMode: {
262
+ type: import("vue").PropType<import("../../..").ListenModeEnum>;
263
+ default: string;
264
+ };
265
+ placeholder: {
266
+ type: StringConstructor;
267
+ default: string;
268
+ };
269
+ simple: {
270
+ type: BooleanConstructor;
271
+ default: boolean;
272
+ };
273
+ maxLength: {
274
+ type: NumberConstructor;
275
+ default: number;
276
+ };
277
+ showWordLimit: {
278
+ type: BooleanConstructor;
279
+ default: boolean;
280
+ };
281
+ disabled: {
282
+ type: BooleanConstructor;
283
+ default: boolean;
284
+ };
285
+ class: {
286
+ type: (ArrayConstructor | StringConstructor)[];
287
+ default: () => never[];
288
+ };
289
+ contentStyle: {
290
+ type: import("vue").PropType<import("vue").CSSProperties>;
291
+ default: () => {};
292
+ };
293
+ }>> & Readonly<{
294
+ onChange?: ((contentLength: number) => any) | undefined;
295
+ "onUpdate:textCount"?: ((value: number) => any) | undefined;
296
+ onAnchorListen?: ((value: import("../../..").IAnchor, text: string) => any) | undefined;
297
+ onAnchorRemove?: ((value: import("../../..").IAnchor) => any) | undefined;
298
+ onAnchorListenStop?: ((value: import("../../..").IAnchor) => any) | undefined;
299
+ }>, {
300
+ action: import("vue").Ref<import("../../hooks/use-editor").EditorAction | undefined, import("../../hooks/use-editor").EditorAction | undefined>;
301
+ innerRender: () => import("vue/jsx-runtime").JSX.Element;
302
+ innerGetContent: (_options?: import("./context").ContentOptions) => string;
303
+ innerSetContent: (content: string) => Promise<void>;
304
+ innerAppendContent: (content: string | string[]) => Promise<void>;
305
+ innerGetTextContent: () => string[];
306
+ innerInsertContent: (content: string | Node) => void;
307
+ innerDeleteContent: () => void;
308
+ innerUpdateContent: (content: string | Node) => void;
309
+ innerIsCaret: () => boolean;
310
+ innerIsRange: () => boolean;
311
+ innerIsSelectionInDifferentParas: () => boolean;
312
+ innerIsSelectionContainsTag: (type: import("../../..").PluginFlag) => boolean;
313
+ innerGetAnchorTtsMark: (id: number, startFromCursor?: boolean) => string;
314
+ innerGetAnchorTtsEmotionAndRole: (id: number) => [string, string | undefined];
315
+ innerIsAllMarkedByAnchor: () => boolean;
316
+ innerAddExtraAnchors: (data: import("../../..").IAnchor[]) => void;
317
+ innerClearContent: () => void;
318
+ innerRenderHightlight: (matchingContent: string) => void;
319
+ innerUnrenderHightlight: () => void;
320
+ }, {}, {}, {
321
+ getContent(options?: import("./context").ContentOptions): string;
322
+ getHtml(options: import("./context").ContentOptions): string;
323
+ setContent(content: string): Promise<void>;
324
+ setHtml(content: string): Promise<void>;
325
+ appendContent(content: string | string[]): Promise<void>;
326
+ getTextContent(): string[];
327
+ insertContent(content: string | Node): void;
328
+ deleteContent(): void;
329
+ updateContent(content: string | Node): void;
330
+ isCaret(): boolean;
331
+ isRange(): boolean;
332
+ isSelectionInDifferentParas(): boolean;
333
+ isSelectionContainsTag(type: import("../../..").PluginFlag): boolean;
334
+ getAnchorTtsMark(id: number, startFromCursor?: boolean): string;
335
+ getAnchorTtsEmotionAndRole(id: number): [string, string | undefined];
336
+ isAllMarkedByAnchor(): boolean;
337
+ addExtraAnchors(data: import("../../..").IAnchor[]): void;
338
+ clearContent(): void;
339
+ clear(): Promise<void>;
340
+ renderHighlight(matchingContent: string): void;
341
+ unrenderHighlight(): void;
342
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
343
+ change: (contentLength: number) => true;
344
+ 'update:textCount': (value: number) => true;
345
+ anchorListen: (value: import("../../..").IAnchor, text: string) => true;
346
+ anchorListenStop: (value: import("../../..").IAnchor) => true;
347
+ anchorRemove: (value: import("../../..").IAnchor) => true;
348
+ }, string, {
349
+ class: string | unknown[];
350
+ disabled: boolean;
351
+ placeholder: string;
352
+ maxLength: number;
353
+ showWordLimit: boolean;
354
+ simple: boolean;
355
+ preTime: string;
356
+ realTime: string;
357
+ textCount: number;
358
+ listenAnchorId: number;
359
+ listenMode: import("../../..").ListenModeEnum;
360
+ contentStyle: import("vue").CSSProperties;
361
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
362
+ install: (app: App, options?: Record<string, any>) => void;
363
+ };
364
+ export type EditorContainerInstance = InstanceType<typeof _EditorContainer>;
365
+ export default EditorContainer;
@@ -0,0 +1,22 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {
2
+ contextMenuRef: HTMLDivElement;
3
+ pausationorRef: import("vue").CreateComponentPublicInstanceWithMixins<Readonly<{
4
+ visible: boolean;
5
+ }> & Readonly<{
6
+ onOk?: ((e: Event, pausationValue: number) => any) | undefined;
7
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ ok: (e: Event, pausationValue: number) => any;
9
+ }, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, HTMLUListElement, import("vue").ComponentProvideOptions, {
10
+ P: {};
11
+ B: {};
12
+ D: {};
13
+ C: {};
14
+ M: {};
15
+ Defaults: {};
16
+ }, Readonly<{
17
+ visible: boolean;
18
+ }> & Readonly<{
19
+ onOk?: ((e: Event, pausationValue: number) => any) | undefined;
20
+ }>, {}, {}, {}, {}, {}> | null;
21
+ }, HTMLDivElement>;
22
+ export default _default;
@@ -0,0 +1,54 @@
1
+ import { Ref } from 'vue';
2
+ import { EditorCore } from '../../foundation/editorManager/editor';
3
+ import { PausationTagPlugin } from '../../plugins/PausationTagPlugin';
4
+ import { IAnchor, ICommandExecutor, IContentManager, ICursorManager, IUndoManager, PluginFlag } from '../../typings';
5
+ import { PronunciationTagPlugin } from '../../plugins/PronunciationTagPlugin';
6
+ import { AnchorTagPlugin } from '../../plugins/AnchorTagPlugin';
7
+ import { HomophonesTagPlugin } from '../../plugins/HomophonesTagPlugin';
8
+ import { EditorComponentProps } from '../../typings/intersection/editor';
9
+ import { ContentOptions } from '../components/editor/context';
10
+ export interface PluginMap {
11
+ [PluginFlag.pausation]: PausationTagPlugin;
12
+ [PluginFlag.pronunciation]: PronunciationTagPlugin;
13
+ [PluginFlag.homophones]: HomophonesTagPlugin;
14
+ [PluginFlag.anchor]: AnchorTagPlugin;
15
+ }
16
+ export interface EditorAction {
17
+ base: {
18
+ content: IContentManager;
19
+ cursor: ICursorManager;
20
+ undo: IUndoManager;
21
+ command: ICommandExecutor;
22
+ };
23
+ plugin: PluginMap;
24
+ }
25
+ export interface AnchorData {
26
+ background: string;
27
+ data: IAnchor;
28
+ id: number;
29
+ }
30
+ export type AnchorMap = Record<string, AnchorData[]>;
31
+ export declare const useEditor: (editor: Ref<HTMLDivElement | undefined>, props: EditorComponentProps, emit: ((event: "change", contentLength: number) => void) & ((event: "update:textCount", value: number) => void) & ((event: "anchorListen", value: IAnchor, text: string) => void) & ((event: "anchorRemove", value: IAnchor) => void)) => {
32
+ editorCore: Ref<EditorCore<[]> | undefined, EditorCore<[]> | undefined>;
33
+ editorAction: Ref<EditorAction | undefined, EditorAction | undefined>;
34
+ count: Ref<number, number>;
35
+ hasPausationTag: Ref<boolean, boolean>;
36
+ getContent: (_options?: ContentOptions) => string;
37
+ setContent: (content: string) => Promise<void>;
38
+ appendContent: (content: string | string[]) => Promise<void>;
39
+ getTextContent: () => string[];
40
+ insertContent: (content: string | Node) => void;
41
+ deleteContent: () => void;
42
+ updateContent: (content: string | Node) => void;
43
+ isCaret: () => boolean;
44
+ isRange: () => boolean;
45
+ isSelectionInDifferentParas: () => boolean;
46
+ isSelectionContainsTag: (type: PluginFlag) => boolean;
47
+ getAnchorTtsMark: (id: number, startFromCursor?: boolean) => string;
48
+ getAnchorTtsEmotionAndRole: (id: number) => [string, string | undefined];
49
+ isAllMarkedByAnchor: () => boolean;
50
+ addExtraAnchors: (data: IAnchor[]) => void;
51
+ clearContent: () => void;
52
+ renderHighlight: (matchingContent: string) => void;
53
+ unrenderHighlight: () => void;
54
+ };
@@ -0,0 +1,7 @@
1
+ import { Ref } from 'vue';
2
+ import { IEditorCore } from '../../typings';
3
+ import { EditorComponentProps } from '../../typings/intersection/editor';
4
+ export declare const useHighlight: (editor: Ref<IEditorCore | undefined>, props: EditorComponentProps) => {
5
+ renderHighlight: (matchingContent: string) => void;
6
+ unrenderHighlight: () => void;
7
+ };
File without changes
@@ -0,0 +1 @@
1
+ export declare const AnchorBg: string[];
@@ -0,0 +1,2 @@
1
+ import './plugin.less';
2
+ export * from './plugin';
@@ -0,0 +1,37 @@
1
+ import { IAnchor, IEditorCore, IPlugin } from '../../typings';
2
+ export declare class AnchorTagPlugin<T extends Record<string, any> = {
3
+ anchor: IAnchor;
4
+ }, D extends Record<string, Array<{
5
+ background: string;
6
+ data: IAnchor;
7
+ id: number;
8
+ }>> = any> extends IPlugin<T, D> {
9
+ private editor;
10
+ private observer;
11
+ private resizeObserver;
12
+ name: string;
13
+ prefix: string;
14
+ data: D;
15
+ constructor(editor: IEditorCore);
16
+ add(options: T): void;
17
+ remove(target: HTMLSpanElement): void;
18
+ private _recordAnchor;
19
+ private get _newAnchorId();
20
+ private _insertAnchorTag;
21
+ private _isIntersectOtherAnchors;
22
+ private _calcTopValue;
23
+ /**
24
+ * MutationObserver 监听编辑器内容变化,当内容变化时重新计算 anchor 的 top 值。
25
+ *
26
+ * * 1. 获取编辑器内所有的 anchor 标签
27
+ * * 2. 根据 anchor 标签的 dataset.id 分组
28
+ * * 3. 每个分组的第一个 anchor 标签的 top 值作为该组的 top 值
29
+ * * 4. 重新计算 top 值
30
+ * * 5. 更新 anchor 标签的 dataset.top 值
31
+ * * 6. 更新 data 中的 top 值
32
+ * * 7. 自动触发 vue 响应式渲染,更新右侧主播标签的决定定位 top 值
33
+ */
34
+ private _syncAnchorTopValue;
35
+ setup(): void;
36
+ destroy(): void;
37
+ }
@@ -0,0 +1,13 @@
1
+ type __VLS_Props = {
2
+ visible: boolean;
3
+ word: string;
4
+ data: string[];
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ cancel: (e: Event) => any;
8
+ ok: (e: Event, text: string) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onCancel?: ((e: Event) => any) | undefined;
11
+ onOk?: ((e: Event, text: string) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, HTMLUListElement>;
13
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import './plugin.less';
2
+ export * from './plugin';
@@ -0,0 +1,17 @@
1
+ import { IEditorCore, IPlugin } from '../../typings';
2
+ import { HomophoneEntity } from '../../typings/actions/i-homophone';
3
+ export declare class HomophonesTagPlugin<T extends HomophoneEntity[] = HomophoneEntity[], D extends any = any> extends IPlugin<T, D> {
4
+ private editor;
5
+ private modalInstance;
6
+ name: string;
7
+ prefix: string;
8
+ data: D;
9
+ constructor(editor: IEditorCore);
10
+ add(config: T): void;
11
+ remove(target: HTMLSpanElement): void;
12
+ private _triggerHomophonesTagClick;
13
+ private _insertHomophonesTag;
14
+ private _calc;
15
+ setup(): void;
16
+ destroy(): void;
17
+ }
@@ -0,0 +1,2 @@
1
+ import './plugin.less';
2
+ export * from './plugin';
@@ -0,0 +1,9 @@
1
+ type __VLS_Props = {
2
+ visible: boolean;
3
+ };
4
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
5
+ ok: (e: Event, pausationValue: number) => any;
6
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
7
+ onOk?: ((e: Event, pausationValue: number) => any) | undefined;
8
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, HTMLUListElement>;
9
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { IEditorCore } from '../../typings';
2
+ import { IPlugin } from '../../typings/actions/i-plugin';
3
+ export declare class PausationTagPlugin<T extends {
4
+ delay: number;
5
+ } = {
6
+ delay: number;
7
+ }, D extends any = any> extends IPlugin<T, D> {
8
+ private editor;
9
+ private modalInstance;
10
+ name: string;
11
+ prefix: string;
12
+ data: D;
13
+ constructor(editor: IEditorCore);
14
+ add(options: T): void;
15
+ remove(target: HTMLSpanElement): void;
16
+ /**
17
+ * 光标处插入停顿标签
18
+ * @param delay 停顿时长,单位 `s`
19
+ */
20
+ private _insertPausationTag;
21
+ /**
22
+ * 停顿标签点击事件回调
23
+ * @param evt Event对象
24
+ */
25
+ private _triggerPausationTagClick;
26
+ setup(): void;
27
+ destroy(): void;
28
+ }
@@ -0,0 +1,2 @@
1
+ import './plugin.less';
2
+ export * from './plugin';
@@ -0,0 +1,19 @@
1
+ import { IEditorCore, IPlugin } from '../../typings';
2
+ export declare class PronunciationTagPlugin<T extends {
3
+ text: string;
4
+ } = {
5
+ text: string;
6
+ }, D extends any = any> extends IPlugin<T, D> {
7
+ private editor;
8
+ private modalInstance;
9
+ name: string;
10
+ prefix: string;
11
+ data: D;
12
+ constructor(editor: IEditorCore);
13
+ add(options: T): void;
14
+ remove(target: HTMLSpanElement): void;
15
+ private _triggerPronunciationTagClick;
16
+ private _insertPronunciationTag;
17
+ setup(): void;
18
+ destroy(): void;
19
+ }
@@ -0,0 +1,13 @@
1
+ type __VLS_Props = {
2
+ visible: boolean;
3
+ oldText: string;
4
+ modelValue: string;
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ cancel: (e: Event) => any;
8
+ ok: (e: Event, text: string, oldText: string) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onCancel?: ((e: Event) => any) | undefined;
11
+ onOk?: ((e: Event, text: string, oldText: string) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ export default _default;
@@ -0,0 +1 @@
1
+ .editor-pausation-tag-modal{position:absolute;width:80px}.tag-pausation{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 2px 0 9px;border-radius:16px;color:#c3772b;background-color:#fceee0;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;cursor:pointer}.tag-pausation__close{font-size:20px;color:#0003;cursor:pointer}.tag-pausation__close:hover{color:#0000004d}.c-pausation-tag-selector[data-v-a957cba2]{background:#fff;box-shadow:0 4px 8px #0000001a;border-radius:8px;border:1px solid #f6f6f6;color:var(--color-text-2)}.c-pausation-tag-selector__item[data-v-a957cba2]{line-height:40px;text-indent:12px;font-size:14px;color:var(--color-text-2);cursor:pointer}.c-pausation-tag-selector__item[data-v-a957cba2]:hover{background-color:rgba(var(--primary-6),.1);color:rgba(var(--primary-6))}.editor-pronunciation-tag-modal{position:absolute;width:264px}.tag-pronunciation{display:inline-flex;align-items:center;gap:2px;margin:0 2px;-webkit-user-select:none;user-select:none;cursor:pointer}.tag-pronunciation__raw{color:rgba(var(--primary-6))}.tag-pronunciation__replace{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 2px 0 9px;background-color:rgba(var(--primary-6),.1);border-radius:16px;color:rgba(var(--primary-6))}.tag-pronunciation__replace-text{font-size:14px;font-weight:500}.tag-pronunciation__close{color:#0003}.tag-pronunciation__close:hover{color:#0000004d}.c-pronunciationor[data-v-e430f236]{padding:8px;background:#fff;box-shadow:0 4px 8px #0000001a;border-radius:4px;border:1px solid #f6f6f6}.c-pronunciationor__title[data-v-e430f236]{margin-bottom:8px;line-height:20px;color:#000000d9}.c-pronunciationor__content[data-v-e430f236]{margin-bottom:4px}.c-pronunciationor__footer[data-v-e430f236]{margin-top:8px}.tag-anchor{padding:5.5px 0}.editor-homophones-tag-modal{position:absolute;width:88px}.tag-homophones{display:inline-flex;align-items:center;gap:4px;margin:0 2px;line-height:1;-webkit-user-select:none;user-select:none;cursor:pointer}.tag-homophones__raw{color:rgba(var(--primary-6))}.tag-homophones__close{color:#0003}.tag-homophones__close:hover{color:#0000004d}.c-homophones[data-v-8471a3e1]{padding:8px;background:#fff;box-shadow:0 4px 8px #0000001a;border-radius:4px;border:1px solid #f6f6f6}.c-homophones__word[data-v-8471a3e1]{color:rgba(var(--primary-6));line-height:20px;text-align:center}.c-homophones__item[data-v-8471a3e1]{margin-top:8px;border-radius:4px;line-height:28px;border:1px solid rgba(0,0,0,.15);text-align:center;color:var(--color-text-2);transition:all .1s cubic-bezier(0,0,1,1);cursor:pointer}.c-homophones__item[data-v-8471a3e1]:hover{color:#fff;background-color:rgba(var(--primary-6))}.arco-modal-simple{padding:16px 24px!important}.arco-modal-simple .arco-modal-footer{text-align:right!important}.common-modal .arco-modal{border-radius:var(--border-radius-medium)}.common-modal .arco-modal-header{height:auto;padding:17px 24px 13px;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);line-height:22px}.common-modal .arco-modal-footer{border-top:none;padding:0 24px 24px}.common-modal .arco-modal-footer .arco-btn{border-radius:8px}.common-modal .arco-modal-body{padding:0 24px 20px}.common-modal .arco-modal-title{position:relative;font-weight:600}.common-modal .shim-icon{position:absolute;top:1px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff}.common-modal .normal-icon{position:absolute;font-size:24px}.common-modal .normal-title{margin-left:32px}.common-modal .extra-opt{position:absolute;top:50%;right:30px;transform:translateY(-50%)}.common-modal .modal-title-icon{display:inline-block;width:20px;height:20px;border-radius:50%;margin-right:11px;font-weight:600;line-height:20px;text-align:center}.common-modal .modal-title-icon svg{color:#fff}.common-modal.no-header-border .arco-modal-header{border:none}.common-modal.hide-header-border .arco-modal-header{border-bottom:none}.common-modal.hide-header-border .arco-modal-body{padding-top:0}.common-modal__info .arco-modal-title-icon,.common-modal__success .arco-modal-title-icon,.common-modal__warning .arco-modal-title-icon,.common-modal__error .arco-modal-title-icon,.common-modal__confirm .arco-modal-title-icon,.common-modal__syncConfirm .arco-modal-title-icon{display:none}.common-modal-footer__left .arco-modal-footer{border-top:none;text-align:left}.common-modal-footer__right .arco-modal-footer{border-top:none;text-align:right}.common-modal-footer__center .arco-modal-footer{border-top:none;text-align:center}.common-modal.arco-modal-simple{padding:0}.common-modal.arco-modal-simple .arco-modal-header{margin:0}.common-modal.arco-modal-simple .arco-modal-body{padding-top:0}.common-modal.arco-modal-simple .arco-modal-footer{margin:0;text-align:right}.c-quick-context-menu[data-v-70332ebc]{position:fixed;z-index:100;width:80px;background:#fff;box-shadow:0 4px 8px #0000001a;border-radius:8px;border:1px solid #f6f6f6}.c-quick-context-menu__action-item[data-v-70332ebc]{line-height:40px;text-align:center;color:var(--color-text-2);font-size:14px;cursor:pointer}.c-quick-context-menu__action-item[data-v-70332ebc]:hover{color:rgba(var(--primary-6));background-color:rgba(var(--primary-6),.1)}.c-quick-context-menu .pausation[data-v-70332ebc]{display:flex;position:absolute;top:0;left:78px}.c-quick-context-menu .pausation .fill[data-v-70332ebc]{display:inline-block;width:2px;height:202px;background:transparent}.c-quick-context-menu .pausation .pausationor[data-v-70332ebc]{width:80px;flex-shrink:0}.c-editor-container{position:relative;width:100%;height:100%;padding-bottom:62px;overflow-y:auto}.c-editor-container__core{display:flex;flex-direction:row;width:100%;height:100%;overflow-y:auto}.c-editor-container__core-content{padding-top:16px;padding-right:16px;flex:1;outline:none}.c-editor-container__core-content-editor{position:relative;height:100%;line-height:28px}.c-editor-container__core-content-editor-placeholder{position:absolute;left:0;right:0;top:0;text-indent:20px;font-size:16px;color:gray;line-height:34px;pointer-events:none}.c-editor-container__core-content-editor-content{position:relative;height:100%;outline:none}.c-editor-container__core-anchor{position:relative;flex-shrink:0;width:344px}.c-editor-container__core-anchor-empty{position:fixed;top:50%;right:45px;width:340px;height:auto;transform:translateY(-50%)}.c-editor-container__status{display:flex;justify-content:space-between;align-items:center;position:absolute;left:0;bottom:0;width:calc(100% - 344px);padding:15px}.c-editor-container__status-clear{transform:translate(-15px)}.c-editor-container__status-info{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;column-gap:16px;width:100%}.c-editor-container__status-info-label,.c-editor-container__status-info-length{font-weight:400;font-size:14px;color:var(--color-text-3)}.c-editor-container__status-info-length:first-child{margin-right:2px;color:rgb(var(--arcoblue-6))}.c-editor-container__status--simple{width:100%}.c-editor-container__status--simple .c-editor-container__status-info-length:first-child{margin-right:0;color:var(--color-text-3)}.c-editor-container__splitor{position:absolute;right:344px;top:0;bottom:0;border-left:1px solid var(--color-neutral-3)}.c-editor-container__anchor-placeholder{position:absolute;top:0;right:0;bottom:0;display:flex;justify-content:center;align-items:center}.c-editor-container__anchor-placeholder>img{display:block;width:340px;height:auto;transform:translateY(-20%)}.c-editor-container .highlight{color:rgba(var(--success-6))}.c-editor-container .tag-audit-highlight{background-color:rgba(var(--danger-6))!important;color:#fff!important}.c-anchor-item{position:relative;padding-left:2px;padding-right:6px;width:304px;height:32px;display:inline-flex;flex-direction:row;align-items:center;border-radius:16px}.c-anchor-item__avatar{width:28px;height:28px;border-radius:14px}.c-anchor-item__info{padding-left:8px;display:flex;flex:1;flex-direction:row;align-items:center}.c-anchor-item__info-name,.c-anchor-item__info-speed-volume{flex-shrink:0;font-weight:500;font-size:16px;color:#00000073;line-height:24px}.c-anchor-item__info-name{flex:1;max-width:85px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.c-anchor-item__info-speed-volume{margin-right:9px}.c-anchor-item__info-rem,.c-anchor-item__info-play{font-size:18px;cursor:pointer}.c-anchor-item__info-rem{margin-right:4px;color:#1e1e1e33!important}.c-anchor-item__info-play{color:#00000040!important}.c-anchor-item__rem{display:none;position:absolute;top:5px;right:2px;font-size:14px;color:#1e1e1e33;transform:translate3d(10px,-12px,0);cursor:pointer}.c-anchor-item__btn-layer{display:none;position:absolute;top:0;bottom:0;right:0;left:0;background:#0000004d;border-radius:50%;cursor:pointer}.c-anchor-item__btn-layer .c-anchor-item__info-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff!important}.c-anchor-item:not(:last-child){margin-right:8px}.c-anchor-item:hover .c-anchor-item__btn-layer{background:#0000004d;display:block}.c-anchor-item:hover .c-anchor-item__rem{display:block}.multi-anchor .c-anchor-item{padding-right:2px;width:unset}.c-paragraph{text-indent:20px;font-size:16px;color:var(--color-text-1);line-height:34px;word-break:break-all}.c-paragraph:not(:last-child){margin-bottom:16px}.c-paragraph *{text-indent:0}
@@ -0,0 +1,22 @@
1
+ export interface IAnchor {
2
+ description: string;
3
+ gender: string;
4
+ name: string;
5
+ person: string;
6
+ provider: string;
7
+ star: boolean;
8
+ category: string[];
9
+ emotion: string[];
10
+ age: string[];
11
+ role: string[];
12
+ activeEmotion: string;
13
+ activeRole: string;
14
+ audiofile?: string;
15
+ defaulttxt?: string;
16
+ speed: number;
17
+ volumn: number;
18
+ volume: number;
19
+ avatar: string;
20
+ id?: number;
21
+ top: number;
22
+ }