@one2x/medeo-rte 0.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/index.js +4662 -2759
  2. package/dist/index.js.map +1 -1
  3. package/dist/style.css +8 -7
  4. package/dist/types/editor.d.ts +86 -8
  5. package/dist/types/editor.d.ts.map +1 -1
  6. package/dist/types/embed/ref.d.ts.map +1 -1
  7. package/dist/types/index.d.ts +2 -2
  8. package/dist/types/index.d.ts.map +1 -1
  9. package/dist/types/input/ime.d.ts.map +1 -1
  10. package/dist/types/layout/advances.d.ts +37 -0
  11. package/dist/types/layout/advances.d.ts.map +1 -0
  12. package/dist/types/layout/engine.d.ts +37 -3
  13. package/dist/types/layout/engine.d.ts.map +1 -1
  14. package/dist/types/layout/measure.d.ts +2 -2
  15. package/dist/types/layout/measure.d.ts.map +1 -1
  16. package/dist/types/layout/types.d.ts +39 -0
  17. package/dist/types/layout/types.d.ts.map +1 -1
  18. package/dist/types/layout/wrap.d.ts +9 -2
  19. package/dist/types/layout/wrap.d.ts.map +1 -1
  20. package/dist/types/model/blocks.d.ts +27 -0
  21. package/dist/types/model/blocks.d.ts.map +1 -1
  22. package/dist/types/model/document.d.ts +63 -2
  23. package/dist/types/model/document.d.ts.map +1 -1
  24. package/dist/types/model/spacerText.d.ts +19 -0
  25. package/dist/types/model/spacerText.d.ts.map +1 -0
  26. package/dist/types/mutations/apply.d.ts.map +1 -1
  27. package/dist/types/mutations/invert.d.ts.map +1 -1
  28. package/dist/types/operations/primitives.d.ts.map +1 -1
  29. package/dist/types/operations/resolve.d.ts +7 -0
  30. package/dist/types/operations/resolve.d.ts.map +1 -1
  31. package/dist/types/operations/text.d.ts.map +1 -1
  32. package/dist/types/paint/canvasPainter.d.ts +23 -4
  33. package/dist/types/paint/canvasPainter.d.ts.map +1 -1
  34. package/dist/types/paint/decorations.d.ts +1 -1
  35. package/dist/types/paint/decorations.d.ts.map +1 -1
  36. package/dist/types/paint/focusNotch.d.ts +44 -0
  37. package/dist/types/paint/focusNotch.d.ts.map +1 -0
  38. package/dist/types/paint/focusNotch.selfcheck.d.ts +2 -0
  39. package/dist/types/paint/focusNotch.selfcheck.d.ts.map +1 -0
  40. package/dist/types/paint/htmlPainter.d.ts +3 -1
  41. package/dist/types/paint/htmlPainter.d.ts.map +1 -1
  42. package/dist/types/paint/markBox.d.ts +1 -1
  43. package/dist/types/paint/markBox.d.ts.map +1 -1
  44. package/dist/types/paint/types.d.ts +10 -1
  45. package/dist/types/paint/types.d.ts.map +1 -1
  46. package/dist/types/perfPanel.d.ts +45 -8
  47. package/dist/types/perfPanel.d.ts.map +1 -1
  48. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/layout/wrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/layout/wrap.ts"],"names":[],"mappings":"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"}
@@ -28,17 +28,35 @@ export interface TableBlock {
28
28
  }
29
29
  export type Block = ParagraphBlock | TableBlock;
30
30
  export declare function parseBlocks(spacers: string): Block[];
31
+ /** 插入或删除的文字里有段分隔符、表格标记时,段结构变了,不能在旧切段上平移。 */
32
+ export declare function containsStructuralMarker(text: string): boolean;
33
+ /**
34
+ * 快路径:在已有切段上记一次段内插入,返回被改段落的序号。
35
+ * 返回 null 就是常规路径(表格内、段外、对不上任何段)。
36
+ * 跨段替换会带上段分隔符,在调用前就被挡下。
37
+ */
38
+ export declare function adjustBlocksForLocalInsert(blocks: Block[], index: number, len: number): number | null;
39
+ /** 删掉的区间必须整段落在同一段里,且调用方已确认里面没有结构标记。 */
40
+ export declare function adjustBlocksForLocalDelete(blocks: Block[], from: number, to: number): number | null;
41
+ export declare function cloneBlocks(blocks: readonly Block[]): Block[];
31
42
  export declare function findTableAt(spacers: string, index: number): TableBlock | null;
32
43
  export declare function isEmptyParagraph(spacers: string, para: ParaRange): boolean;
33
44
  /** 列表标记 / 标题画在段落样式上,不进 spacer;有它们时占位符不能当空文档。 */
34
45
  export declare function isVisuallyEmptyDoc(doc: {
35
46
  spacers: string;
47
+ length?: number;
48
+ charAt?: (index: number) => string;
49
+ blocksForLayout?: () => {
50
+ blocks: Block[];
51
+ };
36
52
  entities: {
37
53
  size: number;
38
54
  };
39
55
  paragraphPropsAt: (index: number) => ParagraphProps;
40
56
  }): boolean;
41
57
  export declare function findParagraphAt(spacers: string, index: number): ParaRange | null;
58
+ /** 在已有切段上找 index 所在段落,不再扫字符。 */
59
+ export declare function paragraphInBlocks(blocks: Block[], index: number, length: number): ParaRange | null;
42
60
  export declare function paragraphsIntersecting(spacers: string, start: number, end: number): ParaRange[];
43
61
  export declare function cellAt(spacers: string, index: number): {
44
62
  table: TableBlock;
@@ -58,6 +76,15 @@ export declare function isLastTableCell(hit: {
58
76
  col: number;
59
77
  }): boolean;
60
78
  export declare function nextCellIndex(spacers: string, index: number, dir: 1 | -1): number | null;
79
+ /**
80
+ * 删除范围盖住表格起止时扩成整表,避免把表从中间切断。
81
+ * 只看已有切段。范围完全落在表内部时,才拷贝重叠的那一段来找散落的起止标记,
82
+ * 不会为了这次判断去拼整篇字符流。
83
+ */
84
+ export declare function expandRangeOverBlocks(blocks: readonly Block[], start: number, end: number, slice: (from: number, to: number) => string): {
85
+ start: number;
86
+ end: number;
87
+ };
61
88
  export declare function expandRangeOverStructures(spacers: string, start: number, end: number): {
62
89
  start: number;
63
90
  end: number;
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/model/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/model/blocks.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,18 @@
1
+ /**
2
+ * 文档模型 —— 状态本身,不含任何编辑语义。
3
+ *
4
+ * 这一层只做两件事:
5
+ * 1. **读**。给上层提供「index 处的文字属性是什么」「这段字符流长什么样」之类的查询。
6
+ * 2. **落地 mutation**。四个 `apply*` 方法是 mutation applier 唯一的着陆点,
7
+ * 它们是机械动作:挪坐标、写字段,不做判断、不推导、不补救。
8
+ *
9
+ * 「打字要继承左边的样式」「删掉段分隔符后段落边界要重算」这类判断一律不在这里,
10
+ * 而在 Operation 层(src/operations/)。模型不偷偷改自己,是撤销和协同能对上账的前提。
11
+ *
12
+ * fragment(同步块)的增删也走 mutation:addFragment / deleteFragment 落到
13
+ * applyAddFragment / applyDeleteFragment 上,和 entity 一样按 id 寻址、不占坐标空间。
14
+ */
15
+ import { Block, ParaRange } from './blocks';
1
16
  import { Fragment, ImageEntity, ParagraphProps, Selection, Slice, StyleSpan, StyleType, TableProps, TextProps, VirtualBlock } from './types';
2
17
  export declare function nextEntityId(): string;
3
18
  export declare function nextFragmentId(): string;
@@ -10,12 +25,28 @@ export type DocSnapshot = {
10
25
  virtualBlocks: VirtualBlock[];
11
26
  };
12
27
  export declare class DocumentModel {
13
- spacers: string;
28
+ private rope;
29
+ /**
30
+ * 整篇字符。读它会把各段拼起来,打字路径用 `charAt` / `slice`。
31
+ * 赋值(撤销、从切片重建)会按换行重新切开。
32
+ */
33
+ get spacers(): string;
34
+ set spacers(value: string);
14
35
  styles: StyleSpan[];
15
36
  entities: Map<string, import("./types").EmbedEntity>;
16
37
  fragments: Map<string, Fragment>;
17
38
  virtualBlocks: Map<string, VirtualBlock>;
18
39
  private fragmentModels;
40
+ /**
41
+ * 快路径用的切段。段内插入、删除只改其中一段的边界,并给后面的段平移下标。
42
+ * null 表示走常规路径:跨段删除、回车、表格,下次排版重新扫描全文。
43
+ */
44
+ private cachedBlocks;
45
+ /**
46
+ * 快路径上,自上次排版以来哪些段落序号要重算哈希。
47
+ * null 表示常规路径,每段都重算(刚重新切过段、浮动图以外的嵌入对象变更等)。
48
+ */
49
+ private dirtyParas;
19
50
  constructor(initial?: {
20
51
  spacers: string;
21
52
  styles: StyleSpan[];
@@ -26,6 +57,15 @@ export declare class DocumentModel {
26
57
  /** 未写 text span 时的默认字号/颜色。嵌入式输入框可覆盖文档编辑器的 16px 默认。 */
27
58
  textDefaults: TextProps | null;
28
59
  get length(): number;
60
+ /** 段落符的个数,和按换行数出来的段数一致。 */
61
+ get newlineCount(): number;
62
+ charAt(index: number): string;
63
+ slice(start: number, end?: number): string;
64
+ hasImageMarker(): boolean;
65
+ prevCodePointLen(index: number): number;
66
+ nextCodePointLen(index: number): number;
67
+ /** 用快路径切段定位,避免为了找段把全文再拼一遍、再扫一遍。 */
68
+ paragraphRangeAt(index: number): ParaRange | null;
29
69
  clamp(index: number): number;
30
70
  /** insertSpacers 的落地:插入字符,已有样式区间跟着挪。 */
31
71
  applyInsertSpacers(index: number, text: string): void;
@@ -46,6 +86,23 @@ export declare class DocumentModel {
46
86
  applyStyleSpans(type: StyleType, start: number, end: number, next: StyleSpan[]): void;
47
87
  snapshot(): DocSnapshot;
48
88
  restore(snap: DocSnapshot): void;
89
+ /**
90
+ * 排版用的切段。段结构没变时直接交回上次的结果,避免再扫一遍全文。
91
+ * `dirtyParas === null` 表示每段都要重算哈希。
92
+ */
93
+ blocksForLayout(): {
94
+ blocks: Block[];
95
+ dirtyParas: Set<number> | null;
96
+ };
97
+ /** 这次排版已经消化了脏段落。下次若没有新编辑,就不用重算哈希。 */
98
+ commitBlocksForLayout(): void;
99
+ /** 嵌入对象、片段这类不改段边界、但会改变某段外观的写入。下次排版全部重算哈希。 */
100
+ touchLayoutHashes(): void;
101
+ private dropBlockCache;
102
+ private noteLocalInsert;
103
+ private noteLocalDelete;
104
+ /** 样式或 mark 的区间变了,只把相交的段落标成要重算哈希。 */
105
+ private dirtyParagraphRange;
49
106
  /** 取半开区间 [start, end) 的内容副本,含落在里面的实体与它们引用的同步块。 */
50
107
  takeSlice(start: number, end: number): Slice;
51
108
  /**
@@ -78,7 +135,9 @@ export declare class DocumentModel {
78
135
  /** 覆盖下标 i 的虚拟块,外层在前。 */
79
136
  blocksAt(index: number): VirtualBlock[];
80
137
  virtualBlocksOverlapping(start: number, end: number): VirtualBlock[];
81
- private replaceVirtualBlocks;
138
+ /** 后面的 mark 只改起点终点,不新建对象。撤销记的是 mutation,不靠旧数组。 */
139
+ private shiftVirtualBlocksOnInsert;
140
+ private shiftVirtualBlocksOnDelete;
82
141
  /**
83
142
  * 把 paragraph 区间对齐到块结构。
84
143
  *
@@ -89,7 +148,9 @@ export declare class DocumentModel {
89
148
  /** 排序 + 合并相邻且属性相同的文字区间。纯粹的规范化,不改变可见结果。 */
90
149
  private mergeStyles;
91
150
  }
151
+ /** 就地改起点终点。整段在插入点之前的不动,之后的只加一个整数,不分配新区间。 */
92
152
  export declare function shiftStylesOnInsert(styles: StyleSpan[], index: number, len: number): StyleSpan[];
153
+ /** 落在删除区间外面的样式就地平移;被裁开或裁短的才改这一条。 */
93
154
  export declare function shiftStylesOnDelete(styles: StyleSpan[], start: number, end: number): StyleSpan[];
94
155
  export declare function collapsedSel(index: number): Selection;
95
156
  export declare function documentFromSlice(slice: Slice): DocumentModel;
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/model/document.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,QAAQ,EACR,WAAW,EAEX,cAAc,EACd,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EAET,YAAY,EACb,MAAM,SAAS,CAAC;AAYjB,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B,CAAC;AAEF,qBAAa,aAAa;IACxB,OAAO,SAAQ;IACf,MAAM,EAAE,SAAS,EAAE,CAA8E;IACjG,QAAQ,6CAAkC;IAC1C,SAAS,wBAA+B;IACxC,aAAa,4BAAmC;IAChD,OAAO,CAAC,cAAc,CAAoC;gBAE9C,OAAO,CAAC,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,SAAS,EAAE,CAAC;QACpB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;KAChC;IAUD,sDAAsD;IACtD,YAAY,EAAE,SAAS,GAAG,IAAI,CAAQ;IAEtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAO5B,wCAAwC;IACxC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQ9C,+CAA+C;IAC/C,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAU7C,kDAAkD;IAClD,oBAAoB,CAAC,KAAK,EAAE,YAAY;IAKxC,uBAAuB,CAAC,OAAO,EAAE,MAAM;IAIvC,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAK5D;;;OAGG;IACH,qDAAqD;IACrD,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAKnC,6CAA6C;IAC7C,mBAAmB,CAAC,UAAU,EAAE,MAAM;IAKtC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAiB9E,QAAQ,IAAI,WAAW;IAWvB,OAAO,CAAC,IAAI,EAAE,WAAW;IAWzB,kDAAkD;IAClD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK;IAgC5C;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAQxE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAM1C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAOrC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAS/C,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM3C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAOvC,+CAA+C;IAC/C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAc7C;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ;IAKrD,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa;IAS9C,YAAY,CAAC,EAAE,EAAE,MAAM;IAQvB,aAAa,IAAI,QAAQ,EAAE;IAK3B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IASxC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIpC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAWhD,iBAAiB,IAAI,YAAY,EAAE;IAInC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK1C,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAMvC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE;IAQpE,OAAO,CAAC,oBAAoB;IAM5B;;;;;OAKG;IACH,SAAS;IA8BT,0CAA0C;IAC1C,OAAO,CAAC,WAAW;CAqBpB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAMhG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAiBhG;AAUD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAY7D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,KAAK,CAO3D;AAED,+BAA+B;AAC/B,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAwCrF"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/model/document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAGL,KAAK,EAKL,SAAS,EAEV,MAAM,UAAU,CAAC;AAIlB,OAAO,EAKL,QAAQ,EACR,WAAW,EAEX,cAAc,EACd,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EAET,YAAY,EACb,MAAM,SAAS,CAAC;AAOjB,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B,CAAC;AAEF,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAwB;IACpC;;;OAGG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IACD,MAAM,EAAE,SAAS,EAAE,CAA8E;IACjG,QAAQ,6CAAkC;IAC1C,SAAS,wBAA+B;IACxC,aAAa,4BAAmC;IAChD,OAAO,CAAC,cAAc,CAAoC;IAC1D;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAwB;IAC5C;;;OAGG;IACH,OAAO,CAAC,UAAU,CAA4B;gBAElC,OAAO,CAAC,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,SAAS,EAAE,CAAC;QACpB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;KAChC;IAUD,sDAAsD;IACtD,YAAY,EAAE,SAAS,GAAG,IAAI,CAAQ;IAEtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,2BAA2B;IAC3B,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,cAAc,IAAI,OAAO;IAIzB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKvC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKvC,mCAAmC;IACnC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAO5B,wCAAwC;IACxC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAS9C,+CAA+C;IAC/C,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAW7C,kDAAkD;IAClD,oBAAoB,CAAC,KAAK,EAAE,YAAY;IAMxC,uBAAuB,CAAC,OAAO,EAAE,MAAM;IAMvC,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAO5D;;;OAGG;IACH,qDAAqD;IACrD,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAKnC,6CAA6C;IAC7C,mBAAmB,CAAC,UAAU,EAAE,MAAM;IAKtC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAkB9E,QAAQ,IAAI,WAAW;IAWvB,OAAO,CAAC,IAAI,EAAE,WAAW;IAUzB;;;OAGG;IACH,eAAe,IAAI;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;KAAE;IAQtE,qCAAqC;IACrC,qBAAqB;IAIrB,6CAA6C;IAC7C,iBAAiB;IAIjB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;IAcvB,qCAAqC;IACrC,OAAO,CAAC,mBAAmB;IAmB3B,kDAAkD;IAClD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK;IAgC5C;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAQxE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAM1C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAOrC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAS/C,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM3C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAOvC,+CAA+C;IAC/C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAc7C;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ;IAKrD,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa;IAS9C,YAAY,CAAC,EAAE,EAAE,MAAM;IAQvB,aAAa,IAAI,QAAQ,EAAE;IAK3B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IASxC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIpC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAWhD,iBAAiB,IAAI,YAAY,EAAE;IAInC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK1C,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAMvC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE;IAQpE,kDAAkD;IAClD,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,0BAA0B;IAOlC;;;;;OAKG;IACH,SAAS;IA8BT,0CAA0C;IAC1C,OAAO,CAAC,WAAW;CAqBpB;AAED,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAYhG;AAED,oCAAoC;AACpC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAyBhG;AAUD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAY7D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,KAAK,CAO3D;AAED,+BAA+B;AAC/B,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAwCrF"}
@@ -0,0 +1,19 @@
1
+ export declare class SpacerRope {
2
+ private parts;
3
+ private starts;
4
+ private joined;
5
+ private images;
6
+ private newlines;
7
+ constructor(text?: string);
8
+ get length(): number;
9
+ get imageCount(): number;
10
+ get newlineCount(): number;
11
+ load(text: string): void;
12
+ value(): string;
13
+ charAt(index: number): string;
14
+ slice(from: number, to?: number): string;
15
+ insert(index: number, text: string): void;
16
+ delete(from: number, to: number): void;
17
+ private partIndex;
18
+ }
19
+ //# sourceMappingURL=spacerText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacerText.d.ts","sourceRoot":"","sources":["../../../src/model/spacerText.ts"],"names":[],"mappings":"AASA,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAK;gBAET,IAAI,SAAO;IAIvB,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAsBxB,KAAK,IAAI,MAAM;IAKf,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAM7B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAc,GAAG,MAAM;IAa7C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IA6BtC,OAAO,CAAC,SAAS;CAUlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/mutations/apply.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAU,MAAM,SAAS,CAAC;AAEzD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,IAAI,CAC/C,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,KACrC,IAAI,CAAC;AAEV,sCAAsC;AACtC,MAAM,MAAM,QAAQ,GAAG;KAAG,CAAC,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,eAAO,MAAM,QAAQ,EAAE,QA8DtB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAG1E;AAED,uBAAuB;AACvB,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAE9E"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/mutations/apply.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAU,MAAM,SAAS,CAAC;AAEzD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,IAAI,CAC/C,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,KACrC,IAAI,CAAC;AAEV,sCAAsC;AACtC,MAAM,MAAM,QAAQ,GAAG;KAAG,CAAC,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,eAAO,MAAM,QAAQ,EAAE,QAiEtB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAG1E;AAED,uBAAuB;AACvB,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAE9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../../src/mutations/invert.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAUL,QAAQ,EACR,YAAY,EAOb,MAAM,SAAS,CAAC;AAgBjB,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,IAAI,CAChD,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,KACrC,QAAQ,CAAC;AAEd,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG;KAAG,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;CAAE,CAAC;AAEhE,eAAO,MAAM,SAAS,EAAE,SAqFvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAQ/E"}
1
+ {"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../../src/mutations/invert.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAUL,QAAQ,EACR,YAAY,EAOb,MAAM,SAAS,CAAC;AAgBjB,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,IAAI,CAChD,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,KACrC,QAAQ,CAAC;AAEd,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG;KAAG,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;CAAE,CAAC;AAEhE,eAAO,MAAM,SAAS,EAAE,SAsFvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAQ/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/operations/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAUxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAK7C,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAQnF;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CACvB,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,QAIjC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAahG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,QAiDxD;AAgBD,+BAA+B;AAC/B,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAGxE"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/operations/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAqC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAU3G,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAK7C,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAQnF;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CACvB,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,QAIjC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAahG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,QAwDxD;AA6DD,+BAA+B;AAC/B,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAGxE"}
@@ -1,3 +1,10 @@
1
+ /**
2
+ * 解析助手:Operation 层「读模型 → 判断」的那一半。
3
+ *
4
+ * mutation 携带的必须是完整解析过的值,不能是补丁。谁负责把「用户想加粗」
5
+ * 变成「这段的完整文字属性是 {bold:true, size:16, color:'#111'}」?就是这里。
6
+ * 这些函数只读文档,不写文档。
7
+ */
1
8
  import { DocumentModel } from '../model/document';
2
9
  import { ParagraphProps, StyleSpan, StyleType, TextProps } from '../model/types';
3
10
  /** 落在 index 处的完整文字属性。没有区间时是空对象,代表「未着色」。 */
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/operations/resolve.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAqB,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpG,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAE7E;AAED,mCAAmC;AACnC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAEvF;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAO1F;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAc1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,EAAE,CAkB9D;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,SAAS,GAAG,IAAI,CAElB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAuDtE"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/operations/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAqB,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpG,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAE7E;AAED,mCAAmC;AACnC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAEvF;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAO1F;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAc1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,EAAE,CAkB9D;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,SAAS,GAAG,IAAI,CAElB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAuDtE"}
@@ -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;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"}
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,CAUxE;AAaD,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"}
@@ -3,7 +3,7 @@ import { PaintBackend } from './types';
3
3
  /**
4
4
  * 画布左右各比文档宽出这么多:mark 等块的 paddingX 外扩在行首行尾会画到内容区外,
5
5
  * 画布若恰好等宽就会被裁掉。画布整体左移 GUTTER 并平移绘制坐标,文字位置不变;
6
- * 配套的 style.css 给 .mini-page-wrap 左右各留同样宽度的可视区(负 margin 抵消)。
6
+ * .mini-page-wrap 左右各留 10px 可视区(负 margin 抵消),盖住这 5px 外扩。
7
7
  */
8
8
  export declare const CANVAS_GUTTER = 5;
9
9
  export declare class CanvasPainter implements PaintBackend {
@@ -19,6 +19,7 @@ export declare class CanvasPainter implements PaintBackend {
19
19
  private caretVisible;
20
20
  private caretTrails;
21
21
  private focusMark;
22
+ private focusRounded;
22
23
  private imageCache;
23
24
  private embeds;
24
25
  private embedCache;
@@ -29,6 +30,7 @@ export declare class CanvasPainter implements PaintBackend {
29
30
  private winTop;
30
31
  private winH;
31
32
  private onScroll;
33
+ private viewportListener;
32
34
  /** 上次重画用的像素密度(dpr × 缩放),变了就得整窗重画 */
33
35
  private lastScale;
34
36
  private zoomRaf;
@@ -46,8 +48,15 @@ export declare class CanvasPainter implements PaintBackend {
46
48
  paintSelection(rects: SelRect[]): void;
47
49
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
48
50
  paintMarkEffects(): void;
49
- paintFocusMark(mark: CaretPos | null): void;
51
+ paintFocusMark(mark: CaretPos | null, rounded?: boolean): void;
52
+ private focusGap;
53
+ private selectionHeight;
50
54
  destroy(): void;
55
+ visibleBand(): {
56
+ top: number;
57
+ bottom: number;
58
+ } | null;
59
+ setViewportListener(listener: (() => boolean) | null): void;
51
60
  /** 可视区在文档坐标里的 [top, bottom]。找不到容器时就当整篇可见。 */
52
61
  private visibleRange;
53
62
  /** 按当前可视区决定画布窗口位置。返回是否挪了窗口。 */
@@ -55,15 +64,25 @@ export declare class CanvasPainter implements PaintBackend {
55
64
  /** 滚动/窗口尺寸变化:可视区离开画布窗口时挪窗口并整体重画 */
56
65
  private followViewport;
57
66
  private resize;
67
+ /**
68
+ * 可视区里和上一帧像素相同的行留着。返回要重画的纵向区间;整段都没变则返回 null。
69
+ * 表格、浮动图或看不出内容的行保持原区间,整段重画。
70
+ */
71
+ private changedSpan;
58
72
  private redrawContent;
59
73
  private redrawChrome;
60
74
  private fillSelectionRect;
61
75
  private paintVBlock;
62
76
  private strokeVBlockOutline;
63
- /** 与 `.mini-focus-mark` 同形:2px 竖线 + 贴着行顶、整颗落在行内的 6px 圆点 */
77
+ /** 与 `.mini-focus-mark` 同形:默认 2px 竖线 + 贴着行顶、整颗落在行内的 6px 圆点 */
64
78
  private drawFocusMark;
65
79
  private drawCaret;
66
- private paintGlyph;
80
+ /**
81
+ * 纯色、字体相同且首尾相接的字合成一次 fillText。
82
+ * 彩虹字每个字颜色不同,仍逐字画。
83
+ */
84
+ private paintGlyphs;
85
+ private paintRun;
67
86
  private paintLineDeco;
68
87
  private imageOf;
69
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"canvasPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/canvasPainter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAY,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAErD;;;;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,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAAuB;IACzC,+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;IA2BvB,8BAA8B;IAC9B,OAAO,CAAC,UAAU;IAMlB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAc1B,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE;IAqBpC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAqBlC,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;IA2DrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,WAAW;IAkFnB,OAAO,CAAC,mBAAmB;IAY3B,2DAA2D;IAC3D,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,SAAS;IAsCjB,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":"AAIA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAqB,OAAO,EAAkB,MAAM,iBAAiB,CAAC;AAIlG,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAErD;;;;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,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAAuB;IACzC,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,gBAAgB,CAAgC;IACxD,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;IA2BvB,8BAA8B;IAC9B,OAAO,CAAC,UAAU;IAMlB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAe1B,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE;IAqBpC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAsBlC,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,EAAE,OAAO,UAAQ;IASrD,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,eAAe;IAKvB,OAAO;IAuBP,WAAW,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKrD,mBAAmB,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI;IAIpD,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAcpB,+BAA+B;IAC/B,OAAO,CAAC,WAAW;IAuBnB,mCAAmC;IACnC,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,MAAM;IAgCd;;;OAGG;IACH,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,aAAa;IAgFrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,WAAW;IAuFnB,OAAO,CAAC,mBAAmB;IAY3B,8DAA8D;IAC9D,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,SAAS;IAsCjB;;;OAGG;IACH,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,OAAO;CAYhB"}
@@ -7,7 +7,7 @@ export declare function cssFill(style: TextProps, runWidth: number): string;
7
7
  export declare function canvasFill(style: TextProps, glyphIndex: number, runT?: number): string;
8
8
  export declare function paintCanvasUnderline(ctx: CanvasRenderingContext2D, x: number, y: number, w: number, size: number, kind: ReturnType<typeof underlineKind>, color: string): void;
9
9
  export declare function paintCanvasStrike(ctx: CanvasRenderingContext2D, x: number, y: number, w: number, size: number, color: string): void;
10
- export declare function groupDecorationRuns(glyphs: GlyphBox[]): {
10
+ export declare function groupDecorationRuns(glyphs: GlyphBox[], origin?: number): {
11
11
  x: number;
12
12
  y: number;
13
13
  w: number;
@@ -1 +1 @@
1
- {"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../../src/paint/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAEjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASlE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,MAAM,CAKjF;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,wBAAwB,EAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,EACtC,KAAK,EAAE,MAAM,QA4Cd;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAG5H;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAwBnL"}
1
+ {"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../../src/paint/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAEjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASlE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,MAAM,CAKjF;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,wBAAwB,EAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,EACtC,KAAK,EAAE,MAAM,QA4Cd;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAG5H;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,SAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAwB/L"}
@@ -0,0 +1,44 @@
1
+ import type { CaretPos } from '../layout/types';
2
+ /** Align the focus stroke's center with the selected border's center. */
3
+ export declare function alignFocusMark(mark: CaretPos, box: {
4
+ x: number;
5
+ w: number;
6
+ }, side: 'left' | 'right', width: number, borderWidth?: number): CaretPos;
7
+ /** Keep the selected mark's focus line away from the ends of its border cutout. */
8
+ export declare function focusMarkWithGap(mark: CaretPos, selectionHeight: number, gap: number): CaretPos;
9
+ export declare function focusNotch(mark: CaretPos, selectionHeight: number, gap: number, box: {
10
+ x: number;
11
+ y: number;
12
+ w: number;
13
+ h: number;
14
+ }, lineWidth: number): {
15
+ x: number;
16
+ y: number;
17
+ w: number;
18
+ h: number;
19
+ } | null;
20
+ export declare function splitNotchLines<T extends {
21
+ x1: number;
22
+ y1: number;
23
+ x2: number;
24
+ y2: number;
25
+ }>(lines: readonly T[], notch: {
26
+ x: number;
27
+ y: number;
28
+ w: number;
29
+ h: number;
30
+ }): T[];
31
+ /** Cut the corner arcs too: otherwise their round ends touch the focus line. */
32
+ export declare function splitNotchArcs<T extends {
33
+ cx: number;
34
+ cy: number;
35
+ r: number;
36
+ a0: number;
37
+ a1: number;
38
+ }>(arcs: readonly T[], notch: {
39
+ x: number;
40
+ y: number;
41
+ w: number;
42
+ h: number;
43
+ }): T[];
44
+ //# sourceMappingURL=focusNotch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focusNotch.d.ts","sourceRoot":"","sources":["../../../src/paint/focusNotch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,SAAI,GAAG,QAAQ,CAG9I;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAI/F;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnD,SAAS,EAAE,MAAM,GAChB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYvD;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,EAAE,CAa7K;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,EAAE,CA6BtL"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=focusNotch.selfcheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focusNotch.selfcheck.d.ts","sourceRoot":"","sources":["../../../src/paint/focusNotch.selfcheck.ts"],"names":[],"mappings":""}
@@ -12,6 +12,8 @@ export declare class HtmlPainter implements PaintBackend {
12
12
  private embedCache;
13
13
  private hoverIds;
14
14
  private selectedId;
15
+ private focusGeometry;
16
+ private focusRounded;
15
17
  mount(host: HTMLElement): void;
16
18
  getSurface(): HTMLElement;
17
19
  paintDoc(layout: DocLayout): void;
@@ -20,7 +22,7 @@ export declare class HtmlPainter implements PaintBackend {
20
22
  private applyMarkSkin;
21
23
  paintSelection(rects: SelRect[]): void;
22
24
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
23
- paintFocusMark(mark: CaretPos | null): void;
25
+ paintFocusMark(mark: CaretPos | null, rounded?: boolean): void;
24
26
  destroy(): void;
25
27
  }
26
28
  //# sourceMappingURL=htmlPainter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"htmlPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/htmlPainter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAW,OAAO,EAA+B,MAAM,iBAAiB,CAAC;AAIrG,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAiBrD,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,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAAuB;IAEzC,KAAK,CAAC,IAAI,EAAE,WAAW;IA0BvB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAkC1B,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE;IAMpC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMlC,OAAO,CAAC,aAAa;IAmDrB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAc/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;IAYpC,OAAO;CAYR"}
1
+ {"version":3,"file":"htmlPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/htmlPainter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAW,OAAO,EAA+B,MAAM,iBAAiB,CAAC;AAKrG,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAiBrD,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,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAS;IAE7B,KAAK,CAAC,IAAI,EAAE,WAAW;IA0BvB,UAAU,IAAI,WAAW;IAKzB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAkC1B,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE;IAMpC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOlC,OAAO,CAAC,aAAa;IA+ErB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAc/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,EAAE,OAAO,UAAQ;IAerD,OAAO;CAYR"}
@@ -79,7 +79,7 @@ type FrameArc = {
79
79
  * 边框落在框内(向内收半个线宽)。四边齐全时是圆角矩形。
80
80
  * 缺边时拆成直线和角弧:只有相邻两边都在的角才画弧,缺边的一端画到框外缘,和下一行接上。
81
81
  */
82
- export declare function frameGeometry(x: number, y: number, w: number, h: number, lineWidth: number, radii: MarkRadii, sides: MarkSides): {
82
+ export declare function frameGeometry(x: number, y: number, w: number, h: number, lineWidth: number, radii: MarkRadii, sides: MarkSides, splitRect?: boolean): {
83
83
  rect?: {
84
84
  x: number;
85
85
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"markBox.d.ts","sourceRoot":"","sources":["../../../src/paint/markBox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markBox.d.ts","sourceRoot":"","sources":["../../../src/paint/markBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAc,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,CAKnG;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,CAE/E;AAID,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG,OAAO,CAEnF;AAMD,KAAK,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;AAM3G,kCAAkC;AAClC,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAQpD;AAmBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,SAAS,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,EAAE,SAAO,EACT,EAAE,SAAO,GACR;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAmEjE;AAED,kCAAkC;AAClC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B;AAED,mBAAmB;AACnB,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAWpE;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,GAAG,MAAM,CAU/E;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAE1F;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAIhG;AAED,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMrH;AAED,sBAAsB;AACtB,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAI9F;AAED,KAAK,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AACpE,KAAK,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,UAAQ,GAChB;IAAE,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,CA6CnH;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CACzB,GAAG,EAAE,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG;IACxG,WAAW,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB,EACD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,QAoBjB;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAQjG"}
@@ -25,7 +25,7 @@ export interface PaintBackend {
25
25
  paintSelection(rects: SelRect[]): void;
26
26
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
27
27
  /** 焦点那端的标记(竖线 + 顶部圆点,不闪烁):文字选区、mark/slot 选中态;null 隐藏 */
28
- paintFocusMark(mark: CaretPos | null): void;
28
+ paintFocusMark(mark: CaretPos | null, rounded?: boolean): void;
29
29
  /** 悬停中的 mark。指针底下每一块都算,折行各行一起换;空数组取消。只重画受影响的块。 */
30
30
  setHoverBlock?(ids: readonly string[]): void;
31
31
  /** 光标所在最上层 mark 的选中皮。`null` 取消。只重画受影响的块。 */
@@ -34,6 +34,15 @@ export interface PaintBackend {
34
34
  paintMarkEffects?(): void;
35
35
  getSurface(): HTMLElement;
36
36
  destroy(): void;
37
+ /** 文档坐标里的可视区。Canvas 用来把排版限制在窗口附近。 */
38
+ visibleBand?(): {
39
+ top: number;
40
+ bottom: number;
41
+ } | null;
42
+ /**
43
+ * 滚动或缩放改变了可视区。返回 true 表示调用方已经重排并重画,画布不必再跟一次。
44
+ */
45
+ setViewportListener?(listener: (() => boolean) | null): void;
37
46
  }
38
47
  export interface PaintHost {
39
48
  surface: HTMLElement;
@@ -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,wDAAwD;IACxD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5C,kDAAkD;IAClD,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7C,4CAA4C;IAC5C,gBAAgB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,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;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAO9G"}
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,wDAAwD;IACxD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/D,kDAAkD;IAClD,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7C,4CAA4C;IAC5C,gBAAgB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,wCAAwC;IACxC,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,UAAU,IAAI,WAAW,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;IAChB,qCAAqC;IACrC,WAAW,CAAC,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD;;OAEG;IACH,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAC9D;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;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAO9G"}