@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
@@ -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": "2.0.0",
4
4
  "type": "module",
5
5
  "description": "自绘文档渲染引擎:字符流模型,排版输出纯几何,绘制后端可替换(HTML / Canvas)",
6
6
  "repository": {
@@ -39,7 +39,7 @@
39
39
  "build": "tsc --noEmit && vite build",
40
40
  "build:lib": "vite build --config vite.lib.config.ts && tsc -p tsconfig.build.json",
41
41
  "preview": "vite preview",
42
- "selfcheck": "npx --yes tsx src/operations/selfcheck.ts && npx --yes tsx src/mutations/selfcheck.ts && npx --yes tsx src/edits/selfcheck.ts && npx --yes tsx src/commands/selfcheck.ts && npx --yes tsx src/input/caretMotion.selfcheck.ts && npx --yes tsx src/layout/selfcheck.ts",
42
+ "selfcheck": "npx --yes tsx src/operations/selfcheck.ts && npx --yes tsx src/mutations/selfcheck.ts && npx --yes tsx src/edits/selfcheck.ts && npx --yes tsx src/commands/selfcheck.ts && npx --yes tsx src/input/caretMotion.selfcheck.ts && npx --yes tsx src/paint/focusNotch.selfcheck.ts && npx --yes tsx src/layout/selfcheck.ts",
43
43
  "prepare": "npm run build:lib"
44
44
  },
45
45
  "peerDependencies": {