@atri-editor/core 0.1.0 → 0.2.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 +8 -0
- package/README.md +5 -5
- package/dist/AtriEditor.d.ts +20 -5
- package/dist/AtriEditor.d.ts.map +1 -1
- package/dist/AtriEditorElement.d.ts +5 -1
- package/dist/AtriEditorElement.d.ts.map +1 -1
- package/dist/ai/AICommandMenu.d.ts.map +1 -1
- package/dist/core/CoreEditor.d.ts +2 -0
- package/dist/core/CoreEditor.d.ts.map +1 -1
- package/dist/core/ExtensionManager.d.ts +2 -14
- package/dist/core/ExtensionManager.d.ts.map +1 -1
- package/dist/core/I18nManager.d.ts +9 -0
- package/dist/core/I18nManager.d.ts.map +1 -1
- package/dist/core/TableGridPanel.d.ts +41 -0
- package/dist/core/TableGridPanel.d.ts.map +1 -0
- package/dist/core/ThemeManager.d.ts +3 -10
- package/dist/core/ThemeManager.d.ts.map +1 -1
- package/dist/core/ToolbarManager.d.ts +7 -0
- package/dist/core/ToolbarManager.d.ts.map +1 -1
- package/dist/core/floating-panel.d.ts +20 -0
- package/dist/core/floating-panel.d.ts.map +1 -0
- package/dist/core/icons.d.ts.map +1 -1
- package/dist/extensions/Attachment.d.ts.map +1 -1
- package/dist/extensions/AttachmentLink.d.ts.map +1 -1
- package/dist/extensions/MediaFiles.d.ts.map +1 -1
- package/dist/extensions/attachment-markdown.d.ts +22 -0
- package/dist/extensions/attachment-markdown.d.ts.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +429 -302
- package/dist/index.js.map +1 -1
- package/dist/media/InsertPanel.d.ts +5 -6
- package/dist/media/InsertPanel.d.ts.map +1 -1
- package/dist/media/MediaStatusStrip.d.ts.map +1 -1
- package/dist/media/Uploader.d.ts.map +1 -1
- package/dist/style.css +62 -0
- package/dist/types/ai.d.ts +2 -0
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/editor.d.ts +23 -7
- package/dist/types/editor.d.ts.map +1 -1
- package/dist/types/extension.d.ts +16 -34
- package/dist/types/extension.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +3 -2
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/table.d.ts +17 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/package.json +23 -5
- package/dist/types/events.d.ts +0 -26
- package/dist/types/events.d.ts.map +0 -1
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
* InsertPanel - 工具栏下方的插入浮层
|
|
3
3
|
*
|
|
4
4
|
* 挂在 document.body 上并用 fixed 定位:工具栏那一层链路上任何一处 overflow 都会把浮层裁掉。
|
|
5
|
+
*
|
|
6
|
+
* 注:media/ 目录同时承载上传运行时(MediaRuntime/Uploader/file-policy)与 UI
|
|
7
|
+
* (本文件与 MediaStatusStrip),两者通过 MediaRuntime 的订阅接口协作,暂不拆分子目录。
|
|
5
8
|
*/
|
|
6
9
|
import type { Editor } from '@tiptap/core';
|
|
7
|
-
import type
|
|
10
|
+
import { type I18nManager } from '../core/I18nManager';
|
|
8
11
|
import type { MediaRuntime } from './MediaRuntime';
|
|
9
12
|
export type InsertPanelMode = 'image' | 'attachment';
|
|
10
13
|
export interface InsertPanelOptions {
|
|
@@ -22,7 +25,7 @@ export declare class InsertPanel {
|
|
|
22
25
|
private unsubscribeLanguage?;
|
|
23
26
|
private element;
|
|
24
27
|
private mode;
|
|
25
|
-
private
|
|
28
|
+
private floating;
|
|
26
29
|
private detachDismiss;
|
|
27
30
|
private labelled;
|
|
28
31
|
constructor(options: InsertPanelOptions);
|
|
@@ -41,10 +44,6 @@ export declare class InsertPanel {
|
|
|
41
44
|
private applyLabels;
|
|
42
45
|
private applyLabel;
|
|
43
46
|
private build;
|
|
44
|
-
/**
|
|
45
|
-
* 主题变量写在 .atri-editor 上,浮层挂在 body 上够不着,只能把主题类复制一份
|
|
46
|
-
*/
|
|
47
|
-
private applyTheme;
|
|
48
47
|
/**
|
|
49
48
|
* 外链图片当场就插,不进上传队列:地址本来就是可用的
|
|
50
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertPanel.d.ts","sourceRoot":"","sources":["../../src/media/InsertPanel.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"InsertPanel.d.ts","sourceRoot":"","sources":["../../src/media/InsertPanel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,YAAY,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;CACvD;AAcD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAyC;IAC9D,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAyB;IAEzC,YAAY,OAAO,EAAE,kBAAkB,EAOtC;IAED,IAAI,QAAQ,IAAI,eAAe,GAAG,IAAI,CAErC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAYvD;IAED,KAAK,IAAI,IAAI,CAYZ;IAED,OAAO,IAAI,IAAI,CAId;IAED,OAAO,CAAC,CAAC;IAIT;;OAEG;IACH,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,KAAK;IAqFb;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,QAAQ;IAMhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaStatusStrip.d.ts","sourceRoot":"","sources":["../../src/media/MediaStatusStrip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,gBAAgB,CAAC;AAS/D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,YAAY,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"MediaStatusStrip.d.ts","sourceRoot":"","sources":["../../src/media/MediaStatusStrip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,gBAAgB,CAAC;AAS/D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,YAAY,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAkC5E;IAED,OAAO,IAAI,IAAI,CAId;IAED,OAAO,CAAC,MAAM;CAwBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Uploader.d.ts","sourceRoot":"","sources":["../../src/media/Uploader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7F,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACnE;
|
|
1
|
+
{"version":3,"file":"Uploader.d.ts","sourceRoot":"","sources":["../../src/media/Uploader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7F,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACnE;AA0FD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,CAUzF"}
|
package/dist/style.css
CHANGED
|
@@ -280,6 +280,54 @@
|
|
|
280
280
|
color: var(--atri-bg-color);
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
+
.atri-table-panel {
|
|
284
|
+
position: fixed;
|
|
285
|
+
z-index: 1000;
|
|
286
|
+
padding: 12px;
|
|
287
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
288
|
+
font-size: 12px;
|
|
289
|
+
color: var(--atri-text-color);
|
|
290
|
+
background-color: var(--atri-bg-color);
|
|
291
|
+
border: 1px solid var(--atri-border-color);
|
|
292
|
+
border-radius: 8px;
|
|
293
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
294
|
+
box-sizing: border-box;
|
|
295
|
+
}
|
|
296
|
+
.atri-table-panel *,
|
|
297
|
+
.atri-table-panel *::before,
|
|
298
|
+
.atri-table-panel *::after {
|
|
299
|
+
box-sizing: border-box;
|
|
300
|
+
}
|
|
301
|
+
.atri-table-panel:focus {
|
|
302
|
+
outline: none;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.atri-table-panel-grid {
|
|
306
|
+
display: grid;
|
|
307
|
+
grid-template-columns: repeat(8, 1fr);
|
|
308
|
+
gap: 2px;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.atri-table-panel-cell {
|
|
312
|
+
width: 18px;
|
|
313
|
+
height: 18px;
|
|
314
|
+
border: 1px solid var(--atri-border-color);
|
|
315
|
+
border-radius: 2px;
|
|
316
|
+
background-color: var(--atri-bg-color);
|
|
317
|
+
cursor: pointer;
|
|
318
|
+
transition: background-color 0.1s ease;
|
|
319
|
+
}
|
|
320
|
+
.atri-table-panel-cell--active {
|
|
321
|
+
background-color: rgba(24, 144, 255, 0.25);
|
|
322
|
+
border-color: var(--atri-color-primary);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.atri-table-panel-hint {
|
|
326
|
+
margin-top: 8px;
|
|
327
|
+
color: var(--atri-text-color-secondary);
|
|
328
|
+
text-align: center;
|
|
329
|
+
}
|
|
330
|
+
|
|
283
331
|
:root {
|
|
284
332
|
--atri-color-primary: #1890ff;
|
|
285
333
|
--atri-color-primary-hover: #40a9ff;
|
|
@@ -496,15 +544,29 @@
|
|
|
496
544
|
}
|
|
497
545
|
.atri-editor-content table td,
|
|
498
546
|
.atri-editor-content table th {
|
|
547
|
+
position: relative;
|
|
499
548
|
border: 1px solid var(--atri-border-color);
|
|
500
549
|
padding: 8px 12px;
|
|
501
550
|
text-align: left;
|
|
502
551
|
}
|
|
552
|
+
.atri-editor-content table td p,
|
|
553
|
+
.atri-editor-content table th p {
|
|
554
|
+
margin: 0;
|
|
555
|
+
}
|
|
503
556
|
.atri-editor-content table th {
|
|
504
557
|
background-color: var(--atri-bg-color-secondary);
|
|
505
558
|
font-weight: 600;
|
|
506
559
|
}
|
|
507
560
|
|
|
561
|
+
.atri-editor-content .selectedCell::after {
|
|
562
|
+
content: "";
|
|
563
|
+
position: absolute;
|
|
564
|
+
inset: 0;
|
|
565
|
+
background-color: var(--atri-color-primary);
|
|
566
|
+
opacity: 0.12;
|
|
567
|
+
pointer-events: none;
|
|
568
|
+
}
|
|
569
|
+
|
|
508
570
|
.atri-editor-content ul[data-type=taskList] {
|
|
509
571
|
list-style: none;
|
|
510
572
|
padding-left: 0;
|
package/dist/types/ai.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export interface AtriAIInterceptors {
|
|
|
64
64
|
export interface AtriAIConfig {
|
|
65
65
|
/** AI 功能列表 */
|
|
66
66
|
functions: AtriAIFunction[];
|
|
67
|
+
/** 命令菜单触发字符(单字符,默认 '/') */
|
|
68
|
+
triggerChar?: string;
|
|
67
69
|
/** 请求端点,开发者完全控制网络请求 */
|
|
68
70
|
requestEndpoint: (context: AIRequestContext) => Promise<AIResponse>;
|
|
69
71
|
/** 拦截器链 */
|
package/dist/types/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/types/ai.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,WAAW;IACX,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,KAAK,CAAC;IACrE,oBAAoB;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,KAAK,UAAU,CAAC;IAC5E,+BAA+B;IAC/B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACtE,YAAY;IACZ,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,uBAAuB;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,WAAW;IACX,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,4CAA4C;IAC5C,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,aAAa;IACb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC7D"}
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/types/ai.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,WAAW;IACX,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,KAAK,CAAC;IACrE,oBAAoB;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,KAAK,UAAU,CAAC;IAC5E,+BAA+B;IAC/B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACtE,YAAY;IACZ,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,WAAW;IACX,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,4CAA4C;IAC5C,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,aAAa;IACb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC7D"}
|
package/dist/types/editor.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { Editor,
|
|
1
|
+
import type { Editor, Extensions, JSONContent } from '@tiptap/core';
|
|
2
2
|
import type { AtriAIConfig } from './ai';
|
|
3
3
|
import type { AtriMarkdownConfig } from './markdown';
|
|
4
4
|
import type { AtriMediaConfig, InsertAttachmentOptions, InsertImageOptions, MediaKind } from './media';
|
|
5
5
|
import type { AtriNodeViewConfig } from './extension';
|
|
6
|
+
import type { ThemeType } from '../core/ThemeManager';
|
|
6
7
|
/**
|
|
7
8
|
* 工具栏配置
|
|
8
9
|
*/
|
|
@@ -13,7 +14,7 @@ export interface ToolbarConfig {
|
|
|
13
14
|
*/
|
|
14
15
|
items?: (string | ToolbarItem)[];
|
|
15
16
|
/**
|
|
16
|
-
* 选中文字或图片 /
|
|
17
|
+
* 选中文字或图片 / 附件时在选区旁浮出的工具栏,默认开启,与固定顶栏共存
|
|
17
18
|
* 按钮分两组:文字选区是行内格式五项,选中附件是「附件样式 + 删除」、选中图片只有「删除」
|
|
18
19
|
* 只在创建时生效:BubbleMenu 的挂载元素走扩展选项,而 tiptap v3 没有运行时注册扩展的入口
|
|
19
20
|
*/
|
|
@@ -43,6 +44,17 @@ export interface SetContentOptions {
|
|
|
43
44
|
/** 是否触发变更事件 */
|
|
44
45
|
emitUpdate?: boolean;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* 插入表格选项
|
|
49
|
+
*/
|
|
50
|
+
export interface InsertTableOptions {
|
|
51
|
+
/** 行数(含表头行),默认 3 */
|
|
52
|
+
rows?: number;
|
|
53
|
+
/** 列数,默认 3 */
|
|
54
|
+
cols?: number;
|
|
55
|
+
/** 首行是否为表头,默认 true */
|
|
56
|
+
withHeaderRow?: boolean;
|
|
57
|
+
}
|
|
46
58
|
/**
|
|
47
59
|
* 编辑器配置
|
|
48
60
|
*/
|
|
@@ -53,8 +65,8 @@ export interface AtriEditorOptions {
|
|
|
53
65
|
content?: string | object;
|
|
54
66
|
/** 内容格式 */
|
|
55
67
|
contentFormat?: 'html' | 'json' | 'markdown';
|
|
56
|
-
/**
|
|
57
|
-
theme?:
|
|
68
|
+
/** 主题:内置亮/暗或自定义主题名 */
|
|
69
|
+
theme?: ThemeType;
|
|
58
70
|
/** 语言 */
|
|
59
71
|
lang?: string;
|
|
60
72
|
/** 是否可编辑 */
|
|
@@ -63,8 +75,8 @@ export interface AtriEditorOptions {
|
|
|
63
75
|
placeholder?: string;
|
|
64
76
|
/** 工具栏配置 */
|
|
65
77
|
toolbar?: ToolbarConfig | false;
|
|
66
|
-
/**
|
|
67
|
-
extensions?:
|
|
78
|
+
/** 扩展列表(节点 / 标记 / 普通扩展皆可,与 Tiptap 同口径) */
|
|
79
|
+
extensions?: Extensions;
|
|
68
80
|
/** NodeView 自定义组件配置 */
|
|
69
81
|
nodeViews?: AtriNodeViewConfig[];
|
|
70
82
|
/** AI 配置 */
|
|
@@ -73,6 +85,8 @@ export interface AtriEditorOptions {
|
|
|
73
85
|
markdown?: AtriMarkdownConfig;
|
|
74
86
|
/** 媒体(图片 / 附件)配置,false 时不注册图片与附件节点 */
|
|
75
87
|
media?: AtriMediaConfig | false;
|
|
88
|
+
/** 表格开关,false 时不注册表格节点、工具栏也不出插入表格按钮;默认开 */
|
|
89
|
+
table?: boolean;
|
|
76
90
|
/** 创建完成回调 */
|
|
77
91
|
onCreate?: (editor: IAtriEditor) => void;
|
|
78
92
|
/** 内容变更回调 */
|
|
@@ -109,7 +123,7 @@ export interface IAtriEditor {
|
|
|
109
123
|
/** HTML 转 Markdown */
|
|
110
124
|
htmlToMarkdown(html: string): string;
|
|
111
125
|
/** Markdown 转 JSON */
|
|
112
|
-
markdownToJSON(markdown: string):
|
|
126
|
+
markdownToJSON(markdown: string): JSONContent;
|
|
113
127
|
/** 获取选中文本 */
|
|
114
128
|
getSelectedText(): string;
|
|
115
129
|
/** 插入内容 */
|
|
@@ -120,6 +134,8 @@ export interface IAtriEditor {
|
|
|
120
134
|
insertImage(options: InsertImageOptions): void;
|
|
121
135
|
/** 在选区处插入附件卡片 */
|
|
122
136
|
insertAttachment(options: InsertAttachmentOptions): void;
|
|
137
|
+
/** 在选区处插入表格 */
|
|
138
|
+
insertTable(options?: InsertTableOptions): void;
|
|
123
139
|
/** 走上传管线插入本地文件,promise 在这批文件全部落定后 resolve */
|
|
124
140
|
uploadFiles(files: File[] | FileList, kind?: MediaKind): Promise<void>;
|
|
125
141
|
/** 重试所有失败的上传 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/types/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/types/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACtC,eAAe;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;IAChC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,uBAAuB;IACvB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,YAAY;IACZ,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,sCAAsC;IACtC,KAAK,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC;IAChC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa;IACb,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,aAAa;IACb,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,WAAW;IACX,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,WAAW;IACX,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,iBAAiB;IACjB,OAAO,IAAI,MAAM,CAAC;IAClB,iBAAiB;IACjB,OAAO,IAAI,MAAM,CAAC;IAClB,qBAAqB;IACrB,WAAW,IAAI,MAAM,CAAC;IACtB,WAAW;IACX,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxE,qBAAqB;IACrB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW;IACX,YAAY,IAAI,IAAI,CAAC;IACrB,WAAW;IACX,OAAO,IAAI,OAAO,CAAC;IAEnB,sBAAsB;IACtB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,sBAAsB;IACtB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,sBAAsB;IACtB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAE9C,aAAa;IACb,eAAe,IAAI,MAAM,CAAC;IAC1B,WAAW;IACX,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY;IACZ,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C,eAAe;IACf,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC/C,iBAAiB;IACjB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACzD,eAAe;IACf,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,6CAA6C;IAC7C,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,gBAAgB;IAChB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,6BAA6B;IAC7B,iBAAiB,IAAI,OAAO,CAAC;IAE7B,cAAc;IACd,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,YAAY;IACZ,UAAU,IAAI,OAAO,CAAC;IACtB,SAAS;IACT,KAAK,IAAI,IAAI,CAAC;IACd,SAAS;IACT,IAAI,IAAI,IAAI,CAAC;IAEb,YAAY;IACZ,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -1,31 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
* 扩展类别
|
|
4
|
-
*/
|
|
5
|
-
export type ExtensionCategory = 'basic' | 'media' | 'block' | 'enhanced' | 'ai' | 'custom';
|
|
6
|
-
/**
|
|
7
|
-
* 扩展元数据
|
|
8
|
-
*/
|
|
9
|
-
export interface AtriExtensionMeta {
|
|
10
|
-
name: string;
|
|
11
|
-
version: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
category: ExtensionCategory;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Atri 扩展(基于 Tiptap Extension)
|
|
17
|
-
*/
|
|
18
|
-
export interface AtriExtension extends Extension {
|
|
19
|
-
meta?: AtriExtensionMeta;
|
|
20
|
-
}
|
|
1
|
+
import type { JSONContent, NodeViewRenderer } from '@tiptap/core';
|
|
2
|
+
import type { DOMOutputSpec, Node as ProseMirrorNode, NodeSpec } from '@tiptap/pm/model';
|
|
21
3
|
/**
|
|
22
4
|
* NodeView 属性定义
|
|
5
|
+
* 结构对齐 Tiptap 的 Attribute:default 用泛型让接入方拿到属性值类型,无需 any
|
|
23
6
|
*/
|
|
24
|
-
export interface NodeViewAttribute {
|
|
25
|
-
default
|
|
7
|
+
export interface NodeViewAttribute<T = unknown> {
|
|
8
|
+
/** 属性默认值,与 Tiptap Attribute.default 一致 */
|
|
9
|
+
default?: T;
|
|
26
10
|
keepOnSplit?: boolean;
|
|
27
|
-
|
|
28
|
-
|
|
11
|
+
/** 属性值没有结构化约束,保留宽松返回 */
|
|
12
|
+
parseHTML?: (element: HTMLElement) => unknown;
|
|
13
|
+
renderHTML?: (attributes: Record<string, unknown>) => Record<string, unknown> | null;
|
|
29
14
|
}
|
|
30
15
|
/**
|
|
31
16
|
* NodeView 配置
|
|
@@ -37,16 +22,13 @@ export interface AtriNodeViewConfig {
|
|
|
37
22
|
nodeView: NodeViewRenderer;
|
|
38
23
|
/** 节点属性定义 */
|
|
39
24
|
attributes?: Record<string, NodeViewAttribute>;
|
|
40
|
-
/** HTML
|
|
25
|
+
/** HTML 序列化配置,签名与 Tiptap NodeConfig.renderHTML 一致 */
|
|
41
26
|
renderHTML?: (props: {
|
|
42
27
|
HTMLAttributes: Record<string, any>;
|
|
43
|
-
node:
|
|
44
|
-
}) =>
|
|
45
|
-
/**
|
|
46
|
-
parseHTML?: () =>
|
|
47
|
-
tag: string;
|
|
48
|
-
getAttrs?: (el: HTMLElement) => any;
|
|
49
|
-
}>;
|
|
28
|
+
node: ProseMirrorNode;
|
|
29
|
+
}) => DOMOutputSpec;
|
|
30
|
+
/** 解析规则,与 Tiptap NodeConfig.parseHTML 一致 */
|
|
31
|
+
parseHTML?: () => NonNullable<NodeSpec['parseDOM']>;
|
|
50
32
|
/** 是否为内联节点 */
|
|
51
33
|
inline?: boolean;
|
|
52
34
|
/** 是否为原子节点(不可编辑内容) */
|
|
@@ -55,7 +37,7 @@ export interface AtriNodeViewConfig {
|
|
|
55
37
|
group?: string;
|
|
56
38
|
/** 节点描述 */
|
|
57
39
|
description?: string;
|
|
58
|
-
/** 自定义 Markdown
|
|
59
|
-
markdownSerialize?: (node:
|
|
40
|
+
/** 自定义 Markdown 序列化回调,由 Tiptap 的 MarkdownManager 按节点名调用 */
|
|
41
|
+
markdownSerialize?: (node: JSONContent) => string;
|
|
60
42
|
}
|
|
61
43
|
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/types/extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/types/extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,IAAI,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzF;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,0CAA0C;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAC9C,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACtF;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,qDAAqD;IACrD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,eAAe,CAAC;KACvB,KAAK,aAAa,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC;CACnD"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
|
package/dist/utils/dom.d.ts
CHANGED
|
@@ -10,7 +10,8 @@ export declare function resolveElement(element: string | HTMLElement): HTMLEleme
|
|
|
10
10
|
*/
|
|
11
11
|
export declare function createContainer(className?: string): HTMLDivElement;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* 从拖放/剪贴板事件里取文件列表
|
|
14
|
+
* 剪贴板里的截图与文件都在 files 上,text 为空不代表没有可投的东西
|
|
14
15
|
*/
|
|
15
|
-
export declare function
|
|
16
|
+
export declare function filesOf(transfer: DataTransfer | null | undefined): File[];
|
|
16
17
|
//# sourceMappingURL=dom.d.ts.map
|
package/dist/utils/dom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CASzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAMlE;AAED
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CASzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAMlE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,CAGzE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 表格能力探测:工具栏按钮与门面 insertTable 共用的 gate
|
|
3
|
+
*
|
|
4
|
+
* 内部使用,不进 utils barrel、不随包出口——检测口径(schema spec 上的 tableRole)
|
|
5
|
+
* 是 extension-table 的实现细节,公共面只承诺"能不能插"这件事本身
|
|
6
|
+
*/
|
|
7
|
+
import type { Editor } from '@tiptap/core';
|
|
8
|
+
/**
|
|
9
|
+
* 内置表格是否真的可用:table:false 不注册、用户用同名扩展顶掉,两种情况都该判 false
|
|
10
|
+
*
|
|
11
|
+
* 不能扫 extensionManager 里的名字:tiptap 对重名扩展只告警不去重,顶掉场景下
|
|
12
|
+
* 内置 Table 仍在列表里、赢的却是用户的 schema 节点,而内置 insertTable 命令
|
|
13
|
+
* 按 spec.tableRole 找型,找不到就在点击当场抛错。命令存在性 + schema 角色
|
|
14
|
+
* 两条一起看,判定的才是"这一下真能插出来"
|
|
15
|
+
*/
|
|
16
|
+
export declare function canInsertTable(editor: Editor): boolean;
|
|
17
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/utils/table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKtD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atri-editor/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Core package for Atri Editor",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"editor",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
"web-component",
|
|
10
10
|
"wysiwyg"
|
|
11
11
|
],
|
|
12
|
+
"homepage": "https://github.com/CherishDreams/atri-editor",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/CherishDreams/atri-editor/issues"
|
|
15
|
+
},
|
|
12
16
|
"license": "MIT",
|
|
13
17
|
"repository": {
|
|
14
18
|
"type": "git",
|
|
@@ -16,9 +20,13 @@
|
|
|
16
20
|
},
|
|
17
21
|
"files": [
|
|
18
22
|
"dist",
|
|
19
|
-
"styles.d.ts"
|
|
23
|
+
"styles.d.ts",
|
|
24
|
+
"CHANGELOG.md"
|
|
20
25
|
],
|
|
21
26
|
"type": "module",
|
|
27
|
+
"sideEffects": [
|
|
28
|
+
"dist/style.css"
|
|
29
|
+
],
|
|
22
30
|
"main": "./dist/index.js",
|
|
23
31
|
"module": "./dist/index.js",
|
|
24
32
|
"types": "./dist/index.d.ts",
|
|
@@ -32,6 +40,9 @@
|
|
|
32
40
|
"default": "./dist/style.css"
|
|
33
41
|
}
|
|
34
42
|
},
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
},
|
|
35
46
|
"scripts": {
|
|
36
47
|
"dev": "vite build --watch",
|
|
37
48
|
"build": "vite build && pnpm run build:types && pnpm run build:styles",
|
|
@@ -39,25 +50,32 @@
|
|
|
39
50
|
"build:styles": "sass src/styles/index.scss dist/style.css --style=expanded --no-source-map",
|
|
40
51
|
"typecheck": "tsc -p tsconfig.json && tsc -p tsconfig.test.json",
|
|
41
52
|
"test": "vitest run",
|
|
42
|
-
"test:watch": "vitest"
|
|
53
|
+
"test:watch": "vitest",
|
|
54
|
+
"prepublishOnly": "pnpm build"
|
|
43
55
|
},
|
|
44
56
|
"dependencies": {
|
|
45
57
|
"@floating-ui/dom": "^1.6.0",
|
|
46
|
-
"@tiptap/core": "^3.30.4",
|
|
47
58
|
"@tiptap/extension-bubble-menu": "^3.30.4",
|
|
48
59
|
"@tiptap/extension-image": "^3.30.4",
|
|
60
|
+
"@tiptap/extension-table": "^3.30.4",
|
|
49
61
|
"@tiptap/extension-text-align": "^3.30.4",
|
|
50
62
|
"@tiptap/extensions": "^3.30.4",
|
|
51
63
|
"@tiptap/markdown": "^3.30.4",
|
|
52
|
-
"@tiptap/pm": "^3.30.4",
|
|
53
64
|
"@tiptap/starter-kit": "^3.30.4",
|
|
54
65
|
"i18next": "^23.11.0"
|
|
55
66
|
},
|
|
56
67
|
"devDependencies": {
|
|
68
|
+
"@tiptap/core": "^3.30.4",
|
|
69
|
+
"@tiptap/pm": "^3.30.4",
|
|
70
|
+
"@vitest/coverage-v8": "^3.2.7",
|
|
57
71
|
"jsdom": "^30.0.1",
|
|
58
72
|
"sass": "^1.103.1",
|
|
59
73
|
"typescript": "^7.0.0",
|
|
60
74
|
"vite": "^5.2.0",
|
|
61
75
|
"vitest": "^3.2.7"
|
|
76
|
+
},
|
|
77
|
+
"peerDependencies": {
|
|
78
|
+
"@tiptap/core": "^3.30.4",
|
|
79
|
+
"@tiptap/pm": "^3.30.4"
|
|
62
80
|
}
|
|
63
81
|
}
|
package/dist/types/events.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 编辑器事件类型
|
|
3
|
-
*/
|
|
4
|
-
export type AtriEventType = 'create' | 'change' | 'focus' | 'blur' | 'destroy' | 'ai:start' | 'ai:complete' | 'ai:error';
|
|
5
|
-
/**
|
|
6
|
-
* 编辑器事件
|
|
7
|
-
*/
|
|
8
|
-
export interface AtriEvent {
|
|
9
|
-
type: AtriEventType;
|
|
10
|
-
editor: unknown;
|
|
11
|
-
data?: unknown;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* AI 事件
|
|
15
|
-
*/
|
|
16
|
-
export interface AtriAIEvent {
|
|
17
|
-
type: 'ai:start' | 'ai:complete' | 'ai:error';
|
|
18
|
-
functionId: string;
|
|
19
|
-
content?: string;
|
|
20
|
-
error?: Error;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 事件监听器
|
|
24
|
-
*/
|
|
25
|
-
export type AtriEventListener = (event: AtriEvent) => void;
|
|
26
|
-
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,UAAU,GACV,aAAa,GACb,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC"}
|