@one2x/medeo-rte 0.4.1 → 0.4.3

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 (40) hide show
  1. package/README.md +66 -56
  2. package/dist/index.js +2106 -2059
  3. package/dist/index.js.map +1 -1
  4. package/dist/style.css +59 -5
  5. package/dist/types/editor.d.ts +107 -32
  6. package/dist/types/editor.d.ts.map +1 -1
  7. package/dist/types/edits/editResult.d.ts +1 -1
  8. package/dist/types/edits/editResult.d.ts.map +1 -1
  9. package/dist/types/index.d.ts +1 -1
  10. package/dist/types/index.d.ts.map +1 -1
  11. package/dist/types/layout/engine.d.ts +2 -1
  12. package/dist/types/layout/engine.d.ts.map +1 -1
  13. package/dist/types/layout/style.d.ts.map +1 -1
  14. package/dist/types/layout/types.d.ts +16 -0
  15. package/dist/types/layout/types.d.ts.map +1 -1
  16. package/dist/types/layout/wrap.d.ts +30 -0
  17. package/dist/types/layout/wrap.d.ts.map +1 -1
  18. package/dist/types/model/document.d.ts +1 -4
  19. package/dist/types/model/document.d.ts.map +1 -1
  20. package/dist/types/model/types.d.ts +6 -8
  21. package/dist/types/model/types.d.ts.map +1 -1
  22. package/dist/types/model/virtualBlock.d.ts +4 -0
  23. package/dist/types/model/virtualBlock.d.ts.map +1 -1
  24. package/dist/types/operations/harness.d.ts +5 -6
  25. package/dist/types/operations/harness.d.ts.map +1 -1
  26. package/dist/types/operations/index.d.ts +3 -3
  27. package/dist/types/operations/index.d.ts.map +1 -1
  28. package/dist/types/operations/slice.d.ts +4 -3
  29. package/dist/types/operations/slice.d.ts.map +1 -1
  30. package/dist/types/operations/text.d.ts +13 -2
  31. package/dist/types/operations/text.d.ts.map +1 -1
  32. package/dist/types/operations/virtualBlock.d.ts +9 -17
  33. package/dist/types/operations/virtualBlock.d.ts.map +1 -1
  34. package/dist/types/paint/canvasPainter.d.ts +5 -0
  35. package/dist/types/paint/canvasPainter.d.ts.map +1 -1
  36. package/dist/types/paint/htmlPainter.d.ts +2 -0
  37. package/dist/types/paint/htmlPainter.d.ts.map +1 -1
  38. package/dist/types/paint/types.d.ts +4 -0
  39. package/dist/types/paint/types.d.ts.map +1 -1
  40. package/package.json +1 -1
@@ -90,13 +90,11 @@ export type ImageEntity = EmbedEntity;
90
90
  /** 视频默认宽高比 */
91
91
  export declare const VIDEO_ASPECT: number;
92
92
  /**
93
- * 虚拟块种类:
94
- * - `region`:一层皮,整体选中/进出,文字不可直接编辑;
95
- * - `virtualSlot`:最内层文本槽,像输入框(placeholder、选中、进出);
96
- * - `mark`:纯样式区间,只给文本流加背景/边框/文字缺省,交互与普通文本完全一致。
97
- * 不参与区间树(parentId 恒为 null)、不进选中/编辑状态机,可与其它块任意叠放。
93
+ * 虚拟块只有 mark:纯样式区间,交互与普通文本完全一致。
94
+ * 不参与区间树(parentId 恒为 null),可与其它 mark 任意叠放。
95
+ * 空态灰字、点击和生成中的中间态都挂在它上面。
98
96
  */
99
- export type VirtualBlockKind = 'region' | 'virtualSlot' | 'mark';
97
+ export type VirtualBlockKind = 'mark';
100
98
  /**
101
99
  * 虚拟块的皮和文字缺省。块皮(底、边、圆角、内边距)只能放这里;
102
100
  * 文字字段与 {@link TextProps} 对齐,作排版期 fallback,不是 applyStyle 轨道。
@@ -108,7 +106,7 @@ export interface VirtualBlockChrome {
108
106
  borderColor?: string;
109
107
  borderWidth?: number;
110
108
  radius?: number;
111
- /** 水平内边距:只外扩底色/边框(行首行尾也外扩),不影响排版。编辑器 padding.x 小于它时,边缘处会被裁 */
109
+ /** 水平内边距。不传按 4px,传 0 表示不留。在区间真正的首尾占排版宽度,折行处只外扩底色。编辑器 padding.x 小于它时,折行贴边处会被裁 */
112
110
  paddingX?: number;
113
111
  color?: string;
114
112
  fontSize?: number;
@@ -116,7 +114,7 @@ export interface VirtualBlockChrome {
116
114
  fontWeight?: number;
117
115
  bold?: boolean;
118
116
  italic?: boolean;
119
- /** 仅 slot:empty 时用这个色画 placeholder */
117
+ /** mark 的 placeholder 灰字。不传时用 #98a2b3 */
120
118
  placeholderColor?: string;
121
119
  }
122
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/model/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/model/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAChF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtG,YAAY;AACZ,eAAO,MAAM,UAAU,YAAY,CAAC;AAEpC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,8BAA8B;AAC9B,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,KAAK,GAAG,UAAU,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACnD,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAElC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CACd;AAED,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAEtC,cAAc;AACd,eAAO,MAAM,YAAY,QAAc,CAAC;AAExC;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAE/C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAE7C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAEnD;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,SAO5E,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAMtD,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,CAKxD,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAatD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAalE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,GAAG,MAAM,CAKvE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAQ5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAErD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAEnE;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CASrE"}
@@ -5,6 +5,10 @@
5
5
  * 闭开区间算术,以及 Slice 裁切时的平移。
6
6
  */
7
7
  import { VirtualBlock } from './types';
8
+ /** mark 未配 `chrome.paddingX` 时的水平内边距;没有它内外侧光标会画在同一处,看不出光标在块里还是块外 */
9
+ export declare const MARK_DEFAULT_PADDING_X = 4;
10
+ /** 块实际生效的水平内边距:显式配置优先,mark 缺省 4px,其余缺省 0 */
11
+ export declare function paddingXOf(block: Pick<VirtualBlock, 'kind' | 'chrome'>): number;
8
12
  export declare function shiftVirtualBlocksOnInsert(blocks: Iterable<VirtualBlock>, index: number, len: number): VirtualBlock[];
9
13
  export declare function shiftVirtualBlocksOnDelete(blocks: Iterable<VirtualBlock>, start: number, end: number): VirtualBlock[];
10
14
  /** 半开区间是否相交(相邻不算)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"virtualBlock.d.ts","sourceRoot":"","sources":["../../../src/model/virtualBlock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,YAAY,EAAE,CAOhB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,YAAY,EAAE,CAkBhB;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3G;AAED,sBAAsB;AACtB,wBAAgB,WAAW,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEzG;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3G;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,CAYpF;AAED,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAQzG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAUlG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,YAAY,EAAE,CAmBhB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAGlG"}
1
+ {"version":3,"file":"virtualBlock.d.ts","sourceRoot":"","sources":["../../../src/model/virtualBlock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,CAE/E;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,YAAY,EAAE,CAOhB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,YAAY,EAAE,CAqBhB;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3G;AAED,sBAAsB;AACtB,wBAAgB,WAAW,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEzG;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3G;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,CAYpF;AAED,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAQzG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAUlG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,YAAY,EAAE,CAwBhB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAGlG"}
@@ -13,7 +13,7 @@ import { DocumentModel } from '../model/document';
13
13
  import { ImageEntity, ParagraphProps, Slice, TextProps, VirtualBlockChrome } from '../model/types';
14
14
  import * as ops from './index';
15
15
  type Writes = {
16
- insertText(index: number, text: string, inherit?: TextProps): number;
16
+ insertText(index: number, text: string, inherit?: TextProps, affinity?: ops.CaretAffinity): number;
17
17
  insertParagraph(index: number): number;
18
18
  deleteRange(start: number, end: number): Slice;
19
19
  backspace(index: number): ops.DeleteHit;
@@ -31,9 +31,9 @@ type Writes = {
31
31
  deleteTableRow(index: number): boolean;
32
32
  deleteTableCol(index: number): boolean;
33
33
  setTableColWidths(index: number, widths: number[]): void;
34
- insertSlice(index: number, slice: Slice, asCopy?: boolean): number;
35
- insertMarkdown(index: number, raw: string): number;
36
- pasteText(index: number, raw: string, inherit?: TextProps): number;
34
+ insertSlice(index: number, slice: Slice, asCopy?: boolean, affinity?: ops.CaretAffinity): number;
35
+ insertMarkdown(index: number, raw: string, affinity?: ops.CaretAffinity): number;
36
+ pasteText(index: number, raw: string, inherit?: TextProps, affinity?: ops.CaretAffinity): number;
37
37
  promoteRange(start: number, end: number): {
38
38
  fragmentId: string;
39
39
  index: number;
@@ -42,9 +42,8 @@ type Writes = {
42
42
  unlinkRef(index: number): number | null;
43
43
  insertVirtualBlock(spec: ops.VirtualBlockSpec): string | null;
44
44
  removeVirtualBlock(id: string): boolean;
45
- clearSlot(id: string): boolean;
46
- fillSlot(id: string, text: string, inherit?: TextProps): number | null;
47
45
  updateVirtualBlockChrome(id: string, chrome: VirtualBlockChrome): boolean;
46
+ replaceMarkText(id: string, text: string): number | null;
48
47
  };
49
48
  export type EditableDoc = DocumentModel & Writes;
50
49
  export declare function editable(doc: DocumentModel): EditableDoc;
@@ -1 +1 @@
1
- {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../src/operations/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../src/operations/harness.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@ export { contentRuns, expectedParagraphSpans, rangeIsOnlyMarkers, resolveParagra
10
10
  export { emitDelete, emitInsert, emitStyle, emitTextStyle, ensureParagraphAfter, normalizeParagraphs } from './primitives';
11
11
  export { applyLink, applyParagraphStyle, applyTextStyle, removeLink } from './style';
12
12
  export type { DeleteHit } from './text';
13
- export { applyMarkdownShortcut, backspace, deleteForward, deleteRange, insertParagraph, insertText } from './text';
13
+ export { applyMarkdownShortcut, backspace, deleteForward, deleteRange, insertParagraph, insertText, replaceMarkText } from './text';
14
14
  export type { ImagePatch, NewEntity } from './entity';
15
15
  export { insertImage, updateImage } from './entity';
16
16
  export { deleteTableCol, deleteTableRow, insertTable, insertTableCol, insertTableRow, setTableColWidths } from './table';
17
17
  export { insertMarkdown, insertRef, insertSlice, pasteText, promoteRange, unlinkRef } from './slice';
18
- export type { VirtualBlockSpec } from './virtualBlock';
19
- export { clearSlot, coverAncestorsOf, coverVirtualBlocks, fillSlot, slotInlineText, insertVirtualBlock, removeVirtualBlock, updateVirtualBlockChrome, validateInsert } from './virtualBlock';
18
+ export type { CaretAffinity, VirtualBlockSpec } from './virtualBlock';
19
+ export { coverAncestorsOf, coverVirtualBlocks, insertVirtualBlock, removeVirtualBlock, updateVirtualBlockChrome, validateInsert } from './virtualBlock';
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/operations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErF,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,aAAa,EACb,WAAW,EACX,eAAe,EACf,UAAU,EACX,MAAM,QAAQ,CAAC;AAEhB,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACf,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/operations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErF,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,aAAa,EACb,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EAChB,MAAM,QAAQ,CAAC;AAEhB,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACf,MAAM,gBAAgB,CAAC"}
@@ -1,16 +1,17 @@
1
1
  import { Slice, TextProps } from '../model/types';
2
2
  import { Operation } from './context';
3
+ import { CaretAffinity } from './virtualBlock';
3
4
  /**
4
5
  * 把一个切片插到 index 处。
5
6
  *
6
7
  * asCopy 为真时先把切片里的同步块引用摊平成实际内容 —— 跨文档粘贴不该带走
7
8
  * 一个指向源文档的悬空引用。
8
9
  */
9
- export declare function insertSlice(index: number, slice: Slice, asCopy?: boolean): Operation<number>;
10
+ export declare function insertSlice(index: number, slice: Slice, asCopy?: boolean, affinity?: CaretAffinity): Operation<number>;
10
11
  /** 把一段 Markdown 原文导入到 index 处。段落中间导入时先把段切开。 */
11
- export declare function insertMarkdown(index: number, raw: string): Operation<number>;
12
+ export declare function insertMarkdown(index: number, raw: string, affinity?: CaretAffinity): Operation<number>;
12
13
  /** 粘贴纯文本。看起来像 Markdown 就走导入,否则当普通文字插入。 */
13
- export declare function pasteText(index: number, raw: string, inherit?: TextProps): Operation<number>;
14
+ export declare function pasteText(index: number, raw: string, inherit?: TextProps, affinity?: CaretAffinity): Operation<number>;
14
15
  /**
15
16
  * 把一段内容提取成同步块,原地换成一个引用。
16
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/operations/slice.ts"],"names":[],"mappings":"AAOA,OAAO,EAAsC,KAAK,EAAa,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAWjG,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAkCpD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CA6DzF;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAuB5E;AAED,0CAA0C;AAC1C,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAG5F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAgBhH;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAW9E;AAED,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAYjE"}
1
+ {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/operations/slice.ts"],"names":[],"mappings":"AAOA,OAAO,EAAsC,KAAK,EAAa,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAWjG,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAIpD,OAAO,EAAE,aAAa,EAAiE,MAAM,gBAAgB,CAAC;AA8B9G;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,MAAM,UAAO,EACb,QAAQ,GAAE,aAA0B,GACnC,SAAS,CAAC,MAAM,CAAC,CA6CnB;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,aAA0B,GAAG,SAAS,CAAC,MAAM,CAAC,CAuBlH;AAED,0CAA0C;AAC1C,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,SAAS,EACnB,QAAQ,GAAE,aAA0B,GACnC,SAAS,CAAC,MAAM,CAAC,CAKnB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAgBhH;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAW9E;AAED,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAYjE"}
@@ -1,7 +1,18 @@
1
1
  import { Slice, TextProps } from '../model/types';
2
2
  import { Operation } from './context';
3
- /** 在 index 处插入文本,继承左侧文字样式(或调用方指定的样式)。返回新光标位置。 */
4
- export declare function insertText(index: number, text: string, inherit?: TextProps): Operation<number>;
3
+ import { CaretAffinity } from './virtualBlock';
4
+ /**
5
+ * 在 index 处插入文本,继承左侧文字样式(或调用方指定的样式)。返回新光标位置。
6
+ *
7
+ * `affinity` 决定 index 恰好是 mark 边界时新字进不进块,见 {@link CaretAffinity}。
8
+ */
9
+ export declare function insertText(index: number, text: string, inherit?: TextProps, affinity?: CaretAffinity): Operation<number>;
10
+ /**
11
+ * 替换 mark 里的文字,块本身留下,整步一次撤销。
12
+ * 换成空串时:有 placeholder 就收成零宽,没有就拆掉这块。
13
+ * 返回新文字之后的下标;id 不是 mark 时返回 null。
14
+ */
15
+ export declare function replaceMarkText(id: string, text: string): Operation<number | null>;
5
16
  /** 回车。空列表项上先降缩进再退出列表;否则切段,两段各自继承合适的属性。 */
6
17
  export declare function insertParagraph(index: number): Operation<number>;
7
18
  /** 删掉一段区间,边界会向外扩到不切断表格等结构。 */
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/operations/text.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmD,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGnG,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAgDxD,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAsB9F;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAgDhE;AAED,8BAA8B;AAC9B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAYxE;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAAC;AAE5E,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAkC7D;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAoBjE;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAwDtE"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/operations/text.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmD,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGnG,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAKxD,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AA2C9D;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,SAAS,EACnB,QAAQ,GAAE,aAA0B,GACnC,SAAS,CAAC,MAAM,CAAC,CAgBnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAkClF;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CA6ChE;AAED,8BAA8B;AAC9B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAYxE;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAAC;AAE5E,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAkC7D;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAoBjE;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAwDtE"}
@@ -4,7 +4,7 @@
4
4
  * 嵌套合法性在这里判断,通过才发 mutation。插删字符对区间的机械挪动在
5
5
  * applier 里,但清槽会把覆盖整段删掉(块被表里摘掉),所以这里要按快照补回。
6
6
  */
7
- import { TextProps, VirtualBlock, VirtualBlockChrome, VirtualBlockKind } from '../model/types';
7
+ import { VirtualBlock, VirtualBlockChrome, VirtualBlockKind } from '../model/types';
8
8
  import { Operation } from './context';
9
9
  export interface VirtualBlockSpec {
10
10
  id?: string;
@@ -16,7 +16,7 @@ export interface VirtualBlockSpec {
16
16
  placeholder?: string;
17
17
  empty?: boolean;
18
18
  }
19
- export declare function validateInsert(doc: {
19
+ export declare function validateInsert(_doc: {
20
20
  virtualBlocks: Map<string, VirtualBlock>;
21
21
  }, block: VirtualBlock): string | null;
22
22
  /**
@@ -24,27 +24,19 @@ export declare function validateInsert(doc: {
24
24
  * 完全落在新区间里的已有块会改挂到这一层下面。
25
25
  */
26
26
  export declare function insertVirtualBlock(spec: VirtualBlockSpec): Operation<string | null>;
27
- /** 拆掉皮,字和胶囊留下。子块改挂到被拆掉那一层的父上。 */
27
+ /** 拆掉皮,字留下。 */
28
28
  export declare function removeVirtualBlock(id: string): Operation<boolean>;
29
29
  export declare function updateVirtualBlockChrome(id: string, chrome: VirtualBlockChrome): Operation<boolean>;
30
- /** 把槽内容换成 placeholder,empty=true。槽和父块都留下。 */
31
- export declare function clearSlot(id: string): Operation<boolean>;
32
- /** 槽是行内区间:去掉尾部换行,中间的段分隔折成空格。 */
33
- export declare function slotInlineText(text: string): string;
34
- /**
35
- * empty 时覆盖 placeholder;已填则整段替换。一次事务。
36
- * 返回新光标(槽尾)。槽内不进段分隔符。
37
- */
38
- export declare function fillSlot(id: string, text: string, inherit?: TextProps): Operation<number | null>;
39
- /** 按 id 找到槽/块,连祖先一起撑开盖住 [start, end)。 */
30
+ /** 按 id 找到块,连祖先一起撑开盖住 [start, end)。 */
40
31
  export declare function coverAncestorsOf(id: string, start: number, end: number): Operation<void>;
41
32
  /** 插入后把指定块(及仍在的祖先)撑开盖住 [start, end)。 */
42
33
  export declare function coverVirtualBlocks(ids: string[], start: number, end: number): Operation<void>;
43
34
  export declare function remapIncomingVirtualBlocks(blocks: VirtualBlock[], offset: number, occupied: Set<string>): VirtualBlock[];
44
35
  /**
45
- * 在 index 处插入了 text 之后,把「恰好在 index 结束」的 mark 向右撑开,
46
- * 让右边缘继续输入算区间内;遇到换行就断(只撑到第一个 \n 之前)。
47
- * 插入本身已由调用方 emit,这里只补区间。
36
+ * 光标亲和:mark 边界上同一个下标有两个光标位置。
37
+ * `backward` 贴前一个字(默认):右边界算块内、左边界算块外;`forward` 贴后一个字,正好相反。
48
38
  */
49
- export declare function extendMarksAtEnd(index: number, text: string): Operation<void>;
39
+ export type CaretAffinity = 'backward' | 'forward';
40
+ /** 在 index 处插入了 text 之后,按光标亲和把边界上的 mark 撑开。插入本身已由调用方 emit。 */
41
+ export declare function extendMarksAt(index: number, text: string, affinity: CaretAffinity): Operation<void>;
50
42
  //# sourceMappingURL=virtualBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtualBlock.d.ts","sourceRoot":"","sources":["../../../src/operations/virtualBlock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAiC,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAI9H,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAsBpH;AAmBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCnF;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAYjE;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,CAOnG;AA8BD,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAcxD;AAED,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBhG;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAcxF;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAkB7F;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EAAE,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GACpB,YAAY,EAAE,CAoBhB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAU7E"}
1
+ {"version":3,"file":"virtualBlock.d.ts","sourceRoot":"","sources":["../../../src/operations/virtualBlock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIpF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAMrH;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BnF;AAED,eAAe;AACf,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAMjE;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,CAOnG;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAcxF;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAkB7F;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EAAE,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GACpB,YAAY,EAAE,CAoBhB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAOnG"}
@@ -18,6 +18,7 @@ export declare class CanvasPainter implements PaintBackend {
18
18
  private caret;
19
19
  private caretVisible;
20
20
  private caretTrails;
21
+ private focusMark;
21
22
  private imageCache;
22
23
  private embeds;
23
24
  private embedCache;
@@ -42,6 +43,8 @@ export declare class CanvasPainter implements PaintBackend {
42
43
  setHoverBlock(id: string | null): void;
43
44
  paintSelection(rects: SelRect[]): void;
44
45
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
46
+ paintMarkEffects(): void;
47
+ paintFocusMark(mark: CaretPos | null): void;
45
48
  destroy(): void;
46
49
  /** 可视区在文档坐标里的 [top, bottom]。找不到容器时就当整篇可见。 */
47
50
  private visibleRange;
@@ -55,6 +58,8 @@ export declare class CanvasPainter implements PaintBackend {
55
58
  private fillSelectionRect;
56
59
  private paintVBlock;
57
60
  private strokeVBlockOutline;
61
+ /** 与 `.mini-focus-mark` 同形:2px 竖线 + 贴着行顶、整颗落在行内的 6px 圆点 */
62
+ private drawFocusMark;
58
63
  private drawCaret;
59
64
  private paintGlyph;
60
65
  private paintLineDeco;
@@ -1 +1 @@
1
- {"version":3,"file":"canvasPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/canvasPainter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAc/B,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAyC;IACpD,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAuB;IACtC,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,oCAAoC;IACpC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,aAAa,CAAK;IAC1B,yCAAyC;IACzC,OAAO,CAAC,gBAAgB,CAYtB;IAEF,KAAK,CAAC,IAAI,EAAE,WAAW;IAuBvB,8BAA8B;IAC9B,OAAO,CAAC,UAAU;IAMlB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAc1B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAqB/B,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAK/B,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,QAAQ,EAAO;IAO5E,OAAO;IAuBP,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAcpB,+BAA+B;IAC/B,OAAO,CAAC,WAAW;IAuBnB,mCAAmC;IACnC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAgCd,OAAO,CAAC,aAAa;IA2DrB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,OAAO;CAYhB"}
1
+ {"version":3,"file":"canvasPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/canvasPainter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAY,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAc/B,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAyC;IACpD,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAuB;IACtC,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,oCAAoC;IACpC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,aAAa,CAAK;IAC1B,yCAAyC;IACzC,OAAO,CAAC,gBAAgB,CAYtB;IAEF,KAAK,CAAC,IAAI,EAAE,WAAW;IAuBvB,8BAA8B;IAC9B,OAAO,CAAC,UAAU;IAMlB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAc1B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAqB/B,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAK/B,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,QAAQ,EAAO;IAO5E,gBAAgB;IAOhB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAOpC,OAAO;IAuBP,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAcpB,+BAA+B;IAC/B,OAAO,CAAC,WAAW;IAuBnB,mCAAmC;IACnC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAgCd,OAAO,CAAC,aAAa;IAgErB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,WAAW;IAqDnB,OAAO,CAAC,mBAAmB;IAY3B,2DAA2D;IAC3D,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,OAAO;CAYhB"}
@@ -6,6 +6,7 @@ export declare class HtmlPainter implements PaintBackend {
6
6
  private content;
7
7
  private selection;
8
8
  private caret;
9
+ private focusMark;
9
10
  private trails;
10
11
  private embeds;
11
12
  private embedCache;
@@ -17,6 +18,7 @@ export declare class HtmlPainter implements PaintBackend {
17
18
  private applyHover;
18
19
  paintSelection(rects: SelRect[]): void;
19
20
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
21
+ paintFocusMark(mark: CaretPos | null): void;
20
22
  destroy(): void;
21
23
  }
22
24
  //# sourceMappingURL=htmlPainter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"htmlPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/htmlPainter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAW,OAAO,EAA+B,MAAM,iBAAiB,CAAC;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAWvC,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,OAAO,CAAuB;IAEtC,KAAK,CAAC,IAAI,EAAE,WAAW;IAuBvB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAkC1B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM/B,OAAO,CAAC,UAAU;IAQlB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAY/B,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,QAAQ,EAAO;IAM5E,OAAO;CAWR"}
1
+ {"version":3,"file":"htmlPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/htmlPainter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAW,OAAO,EAA+B,MAAM,iBAAiB,CAAC;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAWvC,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,OAAO,CAAuB;IAEtC,KAAK,CAAC,IAAI,EAAE,WAAW;IA0BvB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAkC1B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM/B,OAAO,CAAC,UAAU;IAQlB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAY/B,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,QAAQ,EAAO;IAM5E,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAWpC,OAAO;CAYR"}
@@ -24,8 +24,12 @@ export interface PaintBackend {
24
24
  paintDoc(layout: DocLayout): void;
25
25
  paintSelection(rects: SelRect[]): void;
26
26
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
27
+ /** 有文字选区时焦点那端的标记(竖线 + 顶部圆点,不闪烁);null 隐藏 */
28
+ paintFocusMark(mark: CaretPos | null): void;
27
29
  /** 悬停中的 mark 块 id(null 取消);只重画受影响的块。可选实现。 */
28
30
  setHoverBlock?(id: string | null): void;
31
+ /** 重画中间态的彩虹字和边框动效。HTML 模式用 CSS,不必实现。 */
32
+ paintMarkEffects?(): void;
29
33
  getSurface(): HTMLElement;
30
34
  destroy(): void;
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/paint/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAChF,6CAA6C;IAC7C,aAAa,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,UAAU,IAAI,WAAW,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/paint/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAChF,2CAA2C;IAC3C,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5C,6CAA6C;IAC7C,aAAa,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,wCAAwC;IACxC,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,UAAU,IAAI,WAAW,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;CACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@one2x/medeo-rte",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "type": "module",
5
5
  "description": "自绘文档渲染引擎:字符流模型,排版输出纯几何,绘制后端可替换(HTML / Canvas)",
6
6
  "repository": {