@one2x/medeo-rte 0.4.5 → 0.4.7
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.
- package/README.md +263 -174
- package/dist/index.js +2484 -1849
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -0
- package/dist/types/editor.d.ts +101 -6
- package/dist/types/editor.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/layout/engine.d.ts.map +1 -1
- package/dist/types/layout/measure.d.ts +3 -0
- package/dist/types/layout/measure.d.ts.map +1 -1
- package/dist/types/layout/style.d.ts +3 -1
- package/dist/types/layout/style.d.ts.map +1 -1
- package/dist/types/layout/types.d.ts +11 -5
- package/dist/types/layout/types.d.ts.map +1 -1
- package/dist/types/layout/wrap.d.ts +6 -0
- package/dist/types/layout/wrap.d.ts.map +1 -1
- package/dist/types/model/types.d.ts +45 -5
- package/dist/types/model/types.d.ts.map +1 -1
- package/dist/types/model/virtualBlock.d.ts +13 -0
- package/dist/types/model/virtualBlock.d.ts.map +1 -1
- package/dist/types/paint/canvasPainter.d.ts +5 -2
- package/dist/types/paint/canvasPainter.d.ts.map +1 -1
- package/dist/types/paint/htmlPainter.d.ts +6 -3
- package/dist/types/paint/htmlPainter.d.ts.map +1 -1
- package/dist/types/paint/markBox.d.ts +90 -0
- package/dist/types/paint/markBox.d.ts.map +1 -0
- package/dist/types/paint/types.d.ts +6 -2
- package/dist/types/paint/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -10,12 +10,15 @@ export declare class HtmlPainter implements PaintBackend {
|
|
|
10
10
|
private trails;
|
|
11
11
|
private embeds;
|
|
12
12
|
private embedCache;
|
|
13
|
-
private
|
|
13
|
+
private hoverIds;
|
|
14
|
+
private hoverSkinId;
|
|
15
|
+
private selectedId;
|
|
14
16
|
mount(host: HTMLElement): void;
|
|
15
17
|
getSurface(): HTMLElement;
|
|
16
18
|
paintDoc(layout: DocLayout): void;
|
|
17
|
-
setHoverBlock(
|
|
18
|
-
|
|
19
|
+
setHoverBlock(ids: readonly string[], skinId: string | null): void;
|
|
20
|
+
setSelectedBlock(id: string | null): void;
|
|
21
|
+
private applyMarkSkin;
|
|
19
22
|
paintSelection(rects: SelRect[]): void;
|
|
20
23
|
paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
|
|
21
24
|
paintFocusMark(mark: CaretPos | null): 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;
|
|
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;AAgBrD,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;IAgCrB,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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { VBlockFragment } from '../layout/types';
|
|
2
|
+
import { VirtualBlockChrome } from '../model/types';
|
|
3
|
+
/** 圆角顺序同 canvas `roundRect`:左上、右上、右下、左下 */
|
|
4
|
+
export type MarkRadii = [number, number, number, number];
|
|
5
|
+
export interface MarkSides {
|
|
6
|
+
top: boolean;
|
|
7
|
+
right: boolean;
|
|
8
|
+
bottom: boolean;
|
|
9
|
+
left: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 首段左侧两角、末段右侧两角;单段四角。中间段没有圆角。
|
|
13
|
+
*/
|
|
14
|
+
export declare function markRadii(vb: Pick<VBlockFragment, 'kind' | 'chrome' | 'first' | 'last'>): MarkRadii;
|
|
15
|
+
/** 非首段不画左边,非末段不画右边,上下边每段都画 */
|
|
16
|
+
export declare function markSides(vb: Pick<VBlockFragment, 'first' | 'last'>): MarkSides;
|
|
17
|
+
/**
|
|
18
|
+
* 这块是不是指针下最上面、并且配了悬停皮的那一个 mark。
|
|
19
|
+
* 是的话,它的每一行都换悬停底色和悬停边框。压在下面的 mark 不换,包括它露在外面的其它行。
|
|
20
|
+
*/
|
|
21
|
+
export declare function paintsHoverSkin(vb: {
|
|
22
|
+
id: string;
|
|
23
|
+
}, skinId: string | null): boolean;
|
|
24
|
+
export type MarkSkin = 'hover' | 'selected' | null;
|
|
25
|
+
/** 悬停皮优先于选中皮,都没有就用静态边。都没有颜色就不画。 */
|
|
26
|
+
export declare function resolveMarkBorder(chrome: VirtualBlockChrome, skin: MarkSkin): {
|
|
27
|
+
color: string;
|
|
28
|
+
width: number;
|
|
29
|
+
} | null;
|
|
30
|
+
/** 悬停底色优先于选中底色,都没有就用静态底色。 */
|
|
31
|
+
export declare function resolveMarkFill(chrome: VirtualBlockChrome, skin: MarkSkin): string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* `top` 是几何上包住指针的最上层 mark。指针在它的内容盒里,悬停就是它。
|
|
34
|
+
* 指针只在它的 padding 上,并且这圈 padding 贴着同一行里更内层的 mark 时,从最里面往外找。
|
|
35
|
+
* `prefer` 为 false 的内层跳过,停在最近一块接受的 mark 上,避免没配悬停的里层把悬停退回更外层。
|
|
36
|
+
* 离内层较远的 padding 仍算外层。
|
|
37
|
+
*/
|
|
38
|
+
export declare function hoverSkinMarkId(fragments: readonly VBlockFragment[], top: VBlockFragment, x: number, y: number, prefer?: (id: string) => boolean): string;
|
|
39
|
+
export interface HoverSlotBox {
|
|
40
|
+
id: string;
|
|
41
|
+
index: number;
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
w: number;
|
|
45
|
+
h: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 指针横向贴着外层 mark 里的 slot 时,这颗 slot 和内层 mark 一样吃掉外层的 padding。
|
|
49
|
+
* 芯片往往比行矮,上下不从芯片边再加 padding,而是铺满这块 mark 的高度,否则外层边框仍会先亮。
|
|
50
|
+
* `prefer` 为 false 的 slot 跳过,调用方继续按 mark 往外找。
|
|
51
|
+
*/
|
|
52
|
+
export declare function hoverSlotInPadding(slots: readonly HoverSlotBox[], top: VBlockFragment, x: number, y: number, prefer?: (id: string) => boolean): string | null;
|
|
53
|
+
type FrameLine = {
|
|
54
|
+
x1: number;
|
|
55
|
+
y1: number;
|
|
56
|
+
x2: number;
|
|
57
|
+
y2: number;
|
|
58
|
+
};
|
|
59
|
+
type FrameArc = {
|
|
60
|
+
cx: number;
|
|
61
|
+
cy: number;
|
|
62
|
+
r: number;
|
|
63
|
+
a0: number;
|
|
64
|
+
a1: number;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* 边框落在框内(向内收半个线宽)。四边齐全时是圆角矩形。
|
|
68
|
+
* 缺边时拆成直线和角弧:只有相邻两边都在的角才画弧,缺边的一端画到框外缘,和下一行接上。
|
|
69
|
+
*/
|
|
70
|
+
export declare function frameGeometry(x: number, y: number, w: number, h: number, lineWidth: number, radii: MarkRadii, sides: MarkSides): {
|
|
71
|
+
rect?: {
|
|
72
|
+
x: number;
|
|
73
|
+
y: number;
|
|
74
|
+
w: number;
|
|
75
|
+
h: number;
|
|
76
|
+
radii: MarkRadii;
|
|
77
|
+
};
|
|
78
|
+
lines: FrameLine[];
|
|
79
|
+
arcs: FrameArc[];
|
|
80
|
+
};
|
|
81
|
+
/** canvas 上描边。缺边的各段一次 stroke,半透明边不会在接头叠深。 */
|
|
82
|
+
export declare function strokeFrame(ctx: Pick<CanvasRenderingContext2D, 'beginPath' | 'moveTo' | 'lineTo' | 'arc' | 'roundRect' | 'stroke'> & {
|
|
83
|
+
strokeStyle: CanvasRenderingContext2D['strokeStyle'];
|
|
84
|
+
lineWidth: number;
|
|
85
|
+
lineCap: CanvasLineCap;
|
|
86
|
+
}, x: number, y: number, w: number, h: number, color: string, lineWidth: number, radii: MarkRadii, sides: MarkSides): void;
|
|
87
|
+
/** DOM 边框:按边给宽度,圆角和 canvas 同一套。 */
|
|
88
|
+
export declare function frameCss(color: string, width: number, radii: MarkRadii, sides: MarkSides): string;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=markBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markBox.d.ts","sourceRoot":"","sources":["../../../src/paint/markBox.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,10 @@ export interface PaintBackend {
|
|
|
26
26
|
paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
|
|
27
27
|
/** 有文字选区时焦点那端的标记(竖线 + 顶部圆点,不闪烁);null 隐藏 */
|
|
28
28
|
paintFocusMark(mark: CaretPos | null): void;
|
|
29
|
-
/** 悬停中的 mark
|
|
30
|
-
setHoverBlock?(
|
|
29
|
+
/** 悬停中的 mark。光标底下每一块都算,折行各行一起换;空数组取消。只重画受影响的块。 */
|
|
30
|
+
setHoverBlock?(ids: readonly string[], skinId: string | null): void;
|
|
31
|
+
/** 光标所在最上层 mark 的选中皮。`null` 取消。只重画受影响的块。 */
|
|
32
|
+
setSelectedBlock?(id: string | null): void;
|
|
31
33
|
/** 重画中间态的彩虹字和边框动效。HTML 模式用 CSS,不必实现。 */
|
|
32
34
|
paintMarkEffects?(): void;
|
|
33
35
|
getSurface(): HTMLElement;
|
|
@@ -39,4 +41,6 @@ export interface PaintHost {
|
|
|
39
41
|
selection: HTMLElement;
|
|
40
42
|
caret: HTMLElement;
|
|
41
43
|
}
|
|
44
|
+
/** 两组悬停 id 是否相同,不看顺序。 */
|
|
45
|
+
export declare function sameHoverIds(ids: readonly string[], current: ReadonlySet<string> | readonly string[]): boolean;
|
|
42
46
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,
|
|
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"}
|