@one2x/medeo-rte 0.4.10 → 1.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 (43) hide show
  1. package/README.md +5 -289
  2. package/dist/index.js +4198 -2669
  3. package/dist/index.js.map +1 -1
  4. package/dist/style.css +5 -4
  5. package/dist/types/editor.d.ts +31 -29
  6. package/dist/types/editor.d.ts.map +1 -1
  7. package/dist/types/embed/ref.d.ts.map +1 -1
  8. package/dist/types/input/ime.d.ts.map +1 -1
  9. package/dist/types/layout/advances.d.ts +37 -0
  10. package/dist/types/layout/advances.d.ts.map +1 -0
  11. package/dist/types/layout/engine.d.ts +35 -3
  12. package/dist/types/layout/engine.d.ts.map +1 -1
  13. package/dist/types/layout/measure.d.ts +2 -2
  14. package/dist/types/layout/measure.d.ts.map +1 -1
  15. package/dist/types/layout/types.d.ts +25 -0
  16. package/dist/types/layout/types.d.ts.map +1 -1
  17. package/dist/types/layout/wrap.d.ts +3 -4
  18. package/dist/types/layout/wrap.d.ts.map +1 -1
  19. package/dist/types/model/blocks.d.ts +18 -0
  20. package/dist/types/model/blocks.d.ts.map +1 -1
  21. package/dist/types/model/document.d.ts +63 -2
  22. package/dist/types/model/document.d.ts.map +1 -1
  23. package/dist/types/model/spacerText.d.ts +19 -0
  24. package/dist/types/model/spacerText.d.ts.map +1 -0
  25. package/dist/types/model/types.d.ts +5 -3
  26. package/dist/types/model/types.d.ts.map +1 -1
  27. package/dist/types/mutations/apply.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/paint/canvasPainter.d.ts +13 -4
  32. package/dist/types/paint/canvasPainter.d.ts.map +1 -1
  33. package/dist/types/paint/decorations.d.ts +1 -1
  34. package/dist/types/paint/decorations.d.ts.map +1 -1
  35. package/dist/types/paint/htmlPainter.d.ts +1 -2
  36. package/dist/types/paint/htmlPainter.d.ts.map +1 -1
  37. package/dist/types/paint/markBox.d.ts +31 -24
  38. package/dist/types/paint/markBox.d.ts.map +1 -1
  39. package/dist/types/paint/types.d.ts +3 -3
  40. package/dist/types/paint/types.d.ts.map +1 -1
  41. package/dist/types/perfPanel.d.ts +45 -8
  42. package/dist/types/perfPanel.d.ts.map +1 -1
  43. package/package.json +1 -1
@@ -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":"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"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/model/document.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -27,14 +27,16 @@ export interface TextProps {
27
27
  */
28
28
  lineHeight?: number | `${number}px`;
29
29
  /**
30
- * 行与行之间的额外间距,像素。留在行盒外面,下一行整行下移,底色和边框不再贴在一起。
30
+ * 行与行之间的额外间距,像素。留在行盒外面,下一行整行下移。
31
31
  * 只在 `textDefaults` 上生效(整篇统一),文字 span 上的这个字段会被忽略。不传是 0。
32
+ * 折行 mark 的外框也由它决定:不传或 0 时相邻行合成一圈底色和边框(外角、台阶内凹角都圆);
33
+ * 大于 0 时每行各画一段,边框不相接。没有单独开关。
32
34
  */
33
35
  lineGap?: number;
34
36
  /**
35
37
  * 字间距,像素,加在每个字后面(同 CSS `letter-spacing`)。
36
38
  * 排版测宽、正文绘制和 mark 的 placeholder / label 都按它算。
37
- * 由 `chrome.letterSpacing` 写入,只在 `textDefaults` 上生效(整篇统一),文字 span 上的这个字段会被忽略。不传是 0。
39
+ * 只在 `textDefaults` 上生效(整篇统一),文字 span 上的这个字段会被忽略。不传是 0。
38
40
  */
39
41
  letterSpacing?: number;
40
42
  }
@@ -98,7 +100,7 @@ export interface EmbedEntity {
98
100
  hostType?: string;
99
101
  /**
100
102
  * 与 mark 共用 {@link VirtualBlockChrome}。
101
- * 芯片比盖住它的 mark 更靠上:指针在芯片上时 mark 不换悬停皮,光标在芯片上时 mark 不换选中皮。
103
+ * 与 mark 叠在一起时:指针在芯片上,芯片和背后的 mark 可以同时换悬停皮;光标在芯片上时 mark 不换选中皮。
102
104
  * SDK 把底色、边框、圆角和字体画在芯片外框上。`paddingX` / `paddingY` / `marginX` 和占位灰字只参与 mark 的排版。
103
105
  */
104
106
  chrome?: VirtualBlockChrome;
@@ -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;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;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;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;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,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gFAAgF;IAChF,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,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,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;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"}
@@ -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":"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"}
@@ -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 {
@@ -24,7 +24,6 @@ export declare class CanvasPainter implements PaintBackend {
24
24
  private embedCache;
25
25
  private hasContent;
26
26
  private hoverIds;
27
- private hoverSkinId;
28
27
  private selectedId;
29
28
  /** 画布窗口在文档坐标里的顶部与高度(CSS px) */
30
29
  private winTop;
@@ -42,7 +41,7 @@ export declare class CanvasPainter implements PaintBackend {
42
41
  private pixelScale;
43
42
  getSurface(): HTMLElement;
44
43
  paintDoc(layout: DocLayout): void;
45
- setHoverBlock(ids: readonly string[], skinId: string | null): void;
44
+ setHoverBlock(ids: readonly string[]): void;
46
45
  setSelectedBlock(id: string | null): void;
47
46
  paintSelection(rects: SelRect[]): void;
48
47
  paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
@@ -56,6 +55,11 @@ export declare class CanvasPainter implements PaintBackend {
56
55
  /** 滚动/窗口尺寸变化:可视区离开画布窗口时挪窗口并整体重画 */
57
56
  private followViewport;
58
57
  private resize;
58
+ /**
59
+ * 可视区里和上一帧像素相同的行留着。返回要重画的纵向区间;整段都没变则返回 null。
60
+ * 表格、浮动图或看不出内容的行保持原区间,整段重画。
61
+ */
62
+ private changedSpan;
59
63
  private redrawContent;
60
64
  private redrawChrome;
61
65
  private fillSelectionRect;
@@ -64,7 +68,12 @@ export declare class CanvasPainter implements PaintBackend {
64
68
  /** 与 `.mini-focus-mark` 同形:2px 竖线 + 贴着行顶、整颗落在行内的 6px 圆点 */
65
69
  private drawFocusMark;
66
70
  private drawCaret;
67
- private paintGlyph;
71
+ /**
72
+ * 纯色、字体相同且首尾相接的字合成一次 fillText。
73
+ * 彩虹字每个字颜色不同,仍逐字画。
74
+ */
75
+ private paintGlyphs;
76
+ private paintRun;
68
77
  private paintLineDeco;
69
78
  private imageOf;
70
79
  }
@@ -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,WAAW,CAAuB;IAC1C,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,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyB3D,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;IAoDnB,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;AAGlG,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;IAe1B,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;;;OAGG;IACH,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,aAAa;IAgFrB,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;;;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"}
@@ -11,12 +11,11 @@ export declare class HtmlPainter implements PaintBackend {
11
11
  private embeds;
12
12
  private embedCache;
13
13
  private hoverIds;
14
- private hoverSkinId;
15
14
  private selectedId;
16
15
  mount(host: HTMLElement): void;
17
16
  getSurface(): HTMLElement;
18
17
  paintDoc(layout: DocLayout): void;
19
- setHoverBlock(ids: readonly string[], skinId: string | null): void;
18
+ setHoverBlock(ids: readonly string[]): void;
20
19
  setSelectedBlock(id: string | null): void;
21
20
  private applyMarkSkin;
22
21
  paintSelection(rects: SelRect[]): void;
@@ -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;AAGrG,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,WAAW,CAAuB;IAC1C,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,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO3D,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMlC,OAAO,CAAC,aAAa;IAoCrB,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;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"}
@@ -14,13 +14,41 @@ export interface MarkSides {
14
14
  export declare function markRadii(vb: Pick<VBlockFragment, 'kind' | 'chrome' | 'first' | 'last'>): MarkRadii;
15
15
  /** 非首段不画左边,非末段不画右边,上下边每段都画 */
16
16
  export declare function markSides(vb: Pick<VBlockFragment, 'first' | 'last'>): MarkSides;
17
+ /** 行间距为 0 时折行碎块连成一圈外框:这块与上/下一行有连接 */
18
+ export declare function isMerged(vb: Pick<VBlockFragment, 'joinPrev' | 'joinNext'>): boolean;
19
+ type MergedBox = Pick<VBlockFragment, 'kind' | 'chrome' | 'x' | 'y' | 'w' | 'h' | 'joinPrev' | 'joinNext'>;
20
+ /** 合并外框的圆角:只有没被相邻行盖住的角才是外角,才圆。 */
21
+ export declare function mergedRadii(vb: MergedBox): MarkRadii;
17
22
  /**
18
- * 这块是不是指针下最上面、并且配了悬停皮的那一个 mark。
19
- * 是的话,它的每一行都换悬停底色和悬停边框。压在下面的 mark 不换,包括它露在外面的其它行。
23
+ * 合并外框的描边几何(边框落在框内):左右边每行都画,横边只画没被相邻行盖住的那几段。
24
+ * 台阶处的内凹角用圆弧过渡;半径为 0 时横边多伸一个线宽,和相邻行的竖边接成直角。
25
+ * `patches` 是内凹角里要补的底色(弧和直角之间那一小块)。
20
26
  */
27
+ export declare function mergedFrameGeometry(vb: MergedBox, lineWidth: number, radii: MarkRadii, ox?: number, oy?: number): {
28
+ lines: FrameLine[];
29
+ arcs: FrameArc[];
30
+ patches: FramePatch[];
31
+ };
32
+ /** 内凹角的底色补丁:从角点到弧起点,沿弧到终点,回到角点 */
33
+ export interface FramePatch {
34
+ cx: number;
35
+ cy: number;
36
+ r: number;
37
+ a0: number;
38
+ a1: number;
39
+ corner: [number, number];
40
+ }
41
+ /** 补丁转 SVG path */
42
+ export declare function patchesToPath(patches: readonly FramePatch[]): string;
43
+ /** 几何转 SVG path(HTML 画笔用)。弧都是顺时针 */
44
+ export declare function frameToPath(g: {
45
+ lines: FrameLine[];
46
+ arcs: FrameArc[];
47
+ }): string;
48
+ /** 指针落在这块的盒子上(可叠多层):每一行都换悬停底色和悬停边框。 */
21
49
  export declare function paintsHoverSkin(vb: {
22
50
  id: string;
23
- }, skinId: string | null): boolean;
51
+ }, hoverIds: ReadonlySet<string>): boolean;
24
52
  export type MarkSkin = 'hover' | 'selected' | null;
25
53
  /**
26
54
  * 同一块既悬停又选中时选中皮优先;选中的块没配选中皮(`selectedBackground` / `selectedBorder`)时,
@@ -34,27 +62,6 @@ export declare function resolveMarkBorder(chrome: VirtualBlockChrome, skin: Mark
34
62
  } | null;
35
63
  /** 按皮取底色,没有就用静态底色。 */
36
64
  export declare function resolveMarkFill(chrome: VirtualBlockChrome, skin: MarkSkin): string | undefined;
37
- /**
38
- * `top` 是几何上包住指针的最上层 mark。指针在它的内容盒里,悬停就是它。
39
- * 指针只在它的 padding 上,并且这圈 padding 贴着同一行里更内层的 mark 时,从最里面往外找。
40
- * `prefer` 为 false 的内层跳过,停在最近一块接受的 mark 上,避免没配悬停的里层把悬停退回更外层。
41
- * 离内层较远的 padding 仍算外层。
42
- */
43
- export declare function hoverSkinMarkId(fragments: readonly VBlockFragment[], top: VBlockFragment, x: number, y: number, prefer?: (id: string) => boolean): string;
44
- export interface HoverSlotBox {
45
- id: string;
46
- index: number;
47
- x: number;
48
- y: number;
49
- w: number;
50
- h: number;
51
- }
52
- /**
53
- * 指针横向贴着外层 mark 里的 slot 时,这颗 slot 和内层 mark 一样吃掉外层的 padding。
54
- * 芯片往往比行矮,上下不从芯片边再加 padding,而是铺满这块 mark 的高度,否则外层边框仍会先亮。
55
- * `prefer` 为 false 的 slot 跳过,调用方继续按 mark 往外找。
56
- */
57
- export declare function hoverSlotInPadding(slots: readonly HoverSlotBox[], top: VBlockFragment, x: number, y: number, prefer?: (id: string) => boolean): string | null;
58
65
  type FrameLine = {
59
66
  x1: number;
60
67
  y1: 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":"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"}
@@ -24,10 +24,10 @@ 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 隐藏 */
27
+ /** 焦点那端的标记(竖线 + 顶部圆点,不闪烁):文字选区、mark/slot 选中态;null 隐藏 */
28
28
  paintFocusMark(mark: CaretPos | null): void;
29
- /** 悬停中的 mark。光标底下每一块都算,折行各行一起换;空数组取消。只重画受影响的块。 */
30
- setHoverBlock?(ids: readonly string[], skinId: string | null): void;
29
+ /** 悬停中的 mark。指针底下每一块都算,折行各行一起换;空数组取消。只重画受影响的块。 */
30
+ setHoverBlock?(ids: readonly string[]): void;
31
31
  /** 光标所在最上层 mark 的选中皮。`null` 取消。只重画受影响的块。 */
32
32
  setSelectedBlock?(id: string | null): void;
33
33
  /** 重画中间态的彩虹字和边框动效。HTML 模式用 CSS,不必实现。 */
@@ -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,2CAA2C;IAC3C,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5C,kDAAkD;IAClD,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACpE,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,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"}
@@ -4,18 +4,48 @@
4
4
  * new Editor(el, { perfPanel: true }) 或 editor.setPerfPanel(true)
5
5
  *
6
6
  * 口径(同一次输入):
7
- * - 上屏延迟 = 浏览器收到输入事件(event.timeStamp)→ 下一帧画完。
7
+ * - 上屏时间 = 我们收到输入事件的时刻 → 下一帧画完。
8
+ * 不用 event.timeStamp:那是浏览器创建事件的时刻,派发前的排队是浏览器机制,优化不了。
9
+ * 收到时刻在捕获阶段用 performance.now() 记下,方向键、输入、粘贴都一样。
8
10
  * “画完”用 rAF 之后再排一个任务来近似:rAF 回调之后浏览器才做样式、布局、绘制,
9
11
  * 紧随其后的任务开始时这一帧已经提交。
10
12
  * - 编辑器 = 编辑器处理这次输入的同步 JS 耗时,含紧随其后的微任务收尾(如光标层重绘)。
11
13
  * 同一帧内的多个事件(keydown + beforeinput、输入法 compositionend + insertText)累加。
12
- * - 排队 = 事件产生到编辑器开始处理之间的等待,主线程被别的任务占着时会变大。
14
+ * - 「分段」默认收起。展开后是「编辑器」的分段,按一次输入的顺序排列,加起来等于编辑器耗时。
15
+ * 其余 = 编辑器减去已列出的段。同一次按键里连续两次处理时,先开始的那次不再把后一次算进去。
13
16
  *
14
17
  * 关闭时 track() 只多一次布尔判断,不挂任何监听、不跑 rAF。
15
18
  */
19
+ export interface PerfBreakdown {
20
+ /** 改字符、挪样式区间、写撤销记录 */
21
+ mutate: number;
22
+ /** 切段、建索引和缓存表,以及逐段循环里的记账 */
23
+ scan: number;
24
+ /** 逐段算哈希并查找缓存 */
25
+ hash: number;
26
+ /** 没命中的段落重新折行、测宽 */
27
+ layout: number;
28
+ /** 复用的段落改后面文字的下标和纵坐标 */
29
+ shift: number;
30
+ /** 这次实际改过下标的字形数 */
31
+ shiftedGlyphs: number;
32
+ /** 把各段的行收成整篇布局 */
33
+ assemble: number;
34
+ /** 绘制正文和光标 */
35
+ paint: number;
36
+ /** 把光标滚进可视区 */
37
+ scroll: number;
38
+ /** 同步选区、工具栏状态,不含对外回调 */
39
+ finish: number;
40
+ /** 这次输入同步触发的事件回调,含宿主自己的监听 */
41
+ callback: number;
42
+ /** 这次输入处理结束的时刻 */
43
+ at: number;
44
+ }
16
45
  export interface PerfPanelStats {
17
46
  chars: number;
18
47
  paragraphs: number;
48
+ parts?: PerfBreakdown;
19
49
  }
20
50
  export declare class PerfPanel {
21
51
  private on;
@@ -31,16 +61,23 @@ export declare class PerfPanel {
31
61
  private channel;
32
62
  private afterPaint;
33
63
  private el;
34
- private bodyEl;
35
- private miniEl;
36
64
  private f;
65
+ /** 本次输入开始处理的时刻,用来判断分段耗时是不是这次产生的 */
66
+ private sampleStart;
37
67
  private getStats;
38
- private collapsed;
68
+ /** 底部分段默认收起,点标题展开 */
69
+ private partsOpen;
39
70
  private left;
40
71
  private top;
41
72
  private placed;
42
73
  private drag;
43
- constructor(getStats: () => PerfPanelStats);
74
+ /** 同一帧里第一次进入 track 时为 true,show 之后清掉,下一次输入再重新分段 */
75
+ private burstOpen;
76
+ /** 同一次按键里连续 track 时,让先开始的那次只保留自己的同步耗时,不把后面的处理再加一遍。 */
77
+ private trackGen;
78
+ private onBurst;
79
+ private onTrackEnd;
80
+ constructor(getStats: () => PerfPanelStats, onBurst?: () => void, onTrackEnd?: () => void);
44
81
  get enabled(): boolean;
45
82
  enable(): void;
46
83
  disable(): void;
@@ -55,10 +92,10 @@ export declare class PerfPanel {
55
92
  private onMove;
56
93
  private onUp;
57
94
  private onResize;
58
- private toggle;
59
- private applyCollapsed;
95
+ private applyParts;
60
96
  private clamp;
61
97
  private show;
98
+ private showParts;
62
99
  private showIdle;
63
100
  private showEnv;
64
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"perfPanel.d.ts","sourceRoot":"","sources":["../../src/perfPanel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAwBD,qBAAa,SAAS;IACpB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,EAAE,CAA+B;IACzC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,CAAC,CAAqG;IAC9G,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAsF;gBAEtF,QAAQ,EAAE,MAAM,cAAc;IAI1C,IAAI,OAAO,YAEV;IAED,MAAM;IAaN,OAAO;IAsBP,2BAA2B;IAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAcxB,OAAO,CAAC,OAAO,CAEb;IAEF,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,OAAO,CAUb;IAEF,OAAO,CAAC,KAAK;IAqCb,OAAO,CAAC,MAAM,CAaZ;IAEF,OAAO,CAAC,MAAM,CAUZ;IAEF,OAAO,CAAC,IAAI,CAKV;IAEF,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,IAAI;IAiBZ,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,OAAO;CAQhB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,UAI9C"}
1
+ {"version":3,"file":"perfPanel.d.ts","sourceRoot":"","sources":["../../src/perfPanel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAuCD,qBAAa,SAAS;IACpB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,EAAE,CAA+B;IACzC,OAAO,CAAC,CAAC,CAIO;IAChB,mCAAmC;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAuB;IACvC,qBAAqB;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAsF;IAElG,mDAAmD;IACnD,OAAO,CAAC,SAAS,CAAS;IAC1B,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAa;gBAEnB,QAAQ,EAAE,MAAM,cAAc,EAAE,OAAO,GAAE,MAAM,IAAe,EAAE,UAAU,GAAE,MAAM,IAAe;IAM7G,IAAI,OAAO,YAEV;IAED,MAAM;IAaN,OAAO;IAoBP,2BAA2B;IAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAuBxB,OAAO,CAAC,OAAO,CAGb;IAEF,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,OAAO,CAUb;IAEF,OAAO,CAAC,KAAK;IA4Cb,OAAO,CAAC,MAAM,CAmBZ;IAEF,OAAO,CAAC,MAAM,CAUZ;IAEF,OAAO,CAAC,IAAI,CAGV;IAEF,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,IAAI;IAiBZ,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,OAAO;CAMhB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,UAI9C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@one2x/medeo-rte",
3
- "version": "0.4.10",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "description": "自绘文档渲染引擎:字符流模型,排版输出纯几何,绘制后端可替换(HTML / Canvas)",
6
6
  "repository": {