@one2x/medeo-rte 0.5.0 → 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 (34) hide show
  1. package/dist/index.js +4159 -2684
  2. package/dist/index.js.map +1 -1
  3. package/dist/style.css +5 -4
  4. package/dist/types/editor.d.ts +11 -5
  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/input/ime.d.ts.map +1 -1
  8. package/dist/types/layout/advances.d.ts +37 -0
  9. package/dist/types/layout/advances.d.ts.map +1 -0
  10. package/dist/types/layout/engine.d.ts +35 -3
  11. package/dist/types/layout/engine.d.ts.map +1 -1
  12. package/dist/types/layout/measure.d.ts +2 -2
  13. package/dist/types/layout/measure.d.ts.map +1 -1
  14. package/dist/types/layout/types.d.ts +11 -0
  15. package/dist/types/layout/types.d.ts.map +1 -1
  16. package/dist/types/layout/wrap.d.ts +3 -4
  17. package/dist/types/layout/wrap.d.ts.map +1 -1
  18. package/dist/types/model/blocks.d.ts +18 -0
  19. package/dist/types/model/blocks.d.ts.map +1 -1
  20. package/dist/types/model/document.d.ts +63 -2
  21. package/dist/types/model/document.d.ts.map +1 -1
  22. package/dist/types/model/spacerText.d.ts +19 -0
  23. package/dist/types/model/spacerText.d.ts.map +1 -0
  24. package/dist/types/mutations/apply.d.ts.map +1 -1
  25. package/dist/types/operations/primitives.d.ts.map +1 -1
  26. package/dist/types/operations/resolve.d.ts +7 -0
  27. package/dist/types/operations/resolve.d.ts.map +1 -1
  28. package/dist/types/paint/canvasPainter.d.ts +12 -2
  29. package/dist/types/paint/canvasPainter.d.ts.map +1 -1
  30. package/dist/types/paint/decorations.d.ts +1 -1
  31. package/dist/types/paint/decorations.d.ts.map +1 -1
  32. package/dist/types/perfPanel.d.ts +45 -8
  33. package/dist/types/perfPanel.d.ts.map +1 -1
  34. package/package.json +1 -1
@@ -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 {
@@ -55,6 +55,11 @@ export declare class CanvasPainter implements PaintBackend {
55
55
  /** 滚动/窗口尺寸变化:可视区离开画布窗口时挪窗口并整体重画 */
56
56
  private followViewport;
57
57
  private resize;
58
+ /**
59
+ * 可视区里和上一帧像素相同的行留着。返回要重画的纵向区间;整段都没变则返回 null。
60
+ * 表格、浮动图或看不出内容的行保持原区间,整段重画。
61
+ */
62
+ private changedSpan;
58
63
  private redrawContent;
59
64
  private redrawChrome;
60
65
  private fillSelectionRect;
@@ -63,7 +68,12 @@ export declare class CanvasPainter implements PaintBackend {
63
68
  /** 与 `.mini-focus-mark` 同形:2px 竖线 + 贴着行顶、整颗落在行内的 6px 圆点 */
64
69
  private drawFocusMark;
65
70
  private drawCaret;
66
- private paintGlyph;
71
+ /**
72
+ * 纯色、字体相同且首尾相接的字合成一次 fillText。
73
+ * 彩虹字每个字颜色不同,仍逐字画。
74
+ */
75
+ private paintGlyphs;
76
+ private paintRun;
67
77
  private paintLineDeco;
68
78
  private imageOf;
69
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,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;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"}
@@ -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.5.0",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "description": "自绘文档渲染引擎:字符流模型,排版输出纯几何,绘制后端可替换(HTML / Canvas)",
6
6
  "repository": {