@one2x/medeo-rte 0.4.6 → 0.4.8
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 +2615 -1902
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -0
- package/dist/types/editor.d.ts +113 -5
- 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 +9 -8
- package/dist/types/layout/types.d.ts.map +1 -1
- package/dist/types/layout/wrap.d.ts +26 -1
- package/dist/types/layout/wrap.d.ts.map +1 -1
- package/dist/types/model/types.d.ts +42 -4
- package/dist/types/model/types.d.ts.map +1 -1
- package/dist/types/model/virtualBlock.d.ts +26 -0
- package/dist/types/model/virtualBlock.d.ts.map +1 -1
- package/dist/types/paint/canvasPainter.d.ts +4 -1
- package/dist/types/paint/canvasPainter.d.ts.map +1 -1
- package/dist/types/paint/htmlPainter.d.ts +5 -2
- 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 +3 -1
- package/dist/types/paint/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,32 @@ export declare const MARK_DEFAULT_PADDING_X = 4;
|
|
|
11
11
|
export declare const MARK_PLACEHOLDER_COLOR = "#c5ccd6";
|
|
12
12
|
/** 块实际生效的水平内边距:显式配置优先,mark 缺省 4px,其余缺省 0 */
|
|
13
13
|
export declare function paddingXOf(block: Pick<VirtualBlock, 'kind' | 'chrome'>): number;
|
|
14
|
+
/** 底色边缘到外面文字的间距。不传或小于 0 都是 0。只作用在区间真正的首尾。 */
|
|
15
|
+
export declare function marginXOf(block: Pick<VirtualBlock, 'kind' | 'chrome'>): number;
|
|
16
|
+
/** 上下内边距。不传或小于 0 都是 0。留在这块自己的底色里,并把它盖住的行撑高。 */
|
|
17
|
+
export declare function paddingYOf(block: Pick<VirtualBlock, 'kind' | 'chrome'>): number;
|
|
18
|
+
/** 不传或 true 都可以进入。只有显式 false 才让光标跳过。 */
|
|
19
|
+
export declare function isSelectable(chrome: {
|
|
20
|
+
selectable?: boolean;
|
|
21
|
+
} | null | undefined): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* `index` 落在不可选中的 mark 里面(不含两端)时,沿 `dir` 跳到这块外面。
|
|
24
|
+
* 往右停在 `end`,往左停在 `start`。嵌套时跳到最外层的那一侧。
|
|
25
|
+
*/
|
|
26
|
+
export declare function indexOutsideUnselectableMarks(index: number, dir: 1 | -1, blocks: Iterable<Pick<VirtualBlock, 'kind' | 'start' | 'end' | 'chrome'>>): number;
|
|
27
|
+
/**
|
|
28
|
+
* 全选先在 mark 里逐级放大。选区 `[from, to]` 被某块有字的 mark 包住、而且比它小时,放大到这块的 `[start, end)`;
|
|
29
|
+
* 几块都包得住,取最小的那块。选区已经盖满最里层,就换外一层。没有可放大的了返回 `null`,调用方选整篇。
|
|
30
|
+
* 空 mark(只有灰字)没有内容可选,不参与。`accepts` 由调用方决定哪些块算数(比如光标要在里面、可选中)。
|
|
31
|
+
* `trim` 把这块的区间收窄成真正能选中的部分(比如去掉两端光标到不了的芯片);收窄后不比当前选区大就跳过这块。
|
|
32
|
+
*/
|
|
33
|
+
export declare function markScopeForSelectAll(blocks: Iterable<VirtualBlock>, from: number, to: number, accepts: (block: VirtualBlock) => boolean, trim?: (start: number, end: number) => {
|
|
34
|
+
start: number;
|
|
35
|
+
end: number;
|
|
36
|
+
}): {
|
|
37
|
+
start: number;
|
|
38
|
+
end: number;
|
|
39
|
+
} | null;
|
|
14
40
|
export declare function shiftVirtualBlocksOnInsert(blocks: Iterable<VirtualBlock>, index: number, len: number): VirtualBlock[];
|
|
15
41
|
export declare function shiftVirtualBlocksOnDelete(blocks: Iterable<VirtualBlock>, start: number, end: number, docLength?: number): VirtualBlock[];
|
|
16
42
|
/** 半开区间是否相交(相邻不算)。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualBlock.d.ts","sourceRoot":"","sources":["../../../src/model/virtualBlock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,CAE/E;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,YAAY,EAAE,CAOhB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,YAAY,EAAE,CA0BhB;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3G;AAED,sBAAsB;AACtB,wBAAgB,WAAW,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEzG;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3G;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,CAYpF;AAED,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAQzG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAUlG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,YAAY,EAAE,CAwBhB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAGlG"}
|
|
1
|
+
{"version":3,"file":"virtualBlock.d.ts","sourceRoot":"","sources":["../../../src/model/virtualBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export declare class CanvasPainter implements PaintBackend {
|
|
|
24
24
|
private embedCache;
|
|
25
25
|
private hasContent;
|
|
26
26
|
private hoverIds;
|
|
27
|
+
private hoverSkinId;
|
|
28
|
+
private selectedId;
|
|
27
29
|
/** 画布窗口在文档坐标里的顶部与高度(CSS px) */
|
|
28
30
|
private winTop;
|
|
29
31
|
private winH;
|
|
@@ -40,7 +42,8 @@ export declare class CanvasPainter implements PaintBackend {
|
|
|
40
42
|
private pixelScale;
|
|
41
43
|
getSurface(): HTMLElement;
|
|
42
44
|
paintDoc(layout: DocLayout): void;
|
|
43
|
-
setHoverBlock(ids: readonly string[]): void;
|
|
45
|
+
setHoverBlock(ids: readonly string[], skinId: string | null): void;
|
|
46
|
+
setSelectedBlock(id: string | null): void;
|
|
44
47
|
paintSelection(rects: SelRect[]): void;
|
|
45
48
|
paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
|
|
46
49
|
paintMarkEffects(): void;
|
|
@@ -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;
|
|
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"}
|
|
@@ -11,11 +11,14 @@ export declare class HtmlPainter implements PaintBackend {
|
|
|
11
11
|
private embeds;
|
|
12
12
|
private embedCache;
|
|
13
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(ids: readonly string[]): void;
|
|
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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"}
|
|
@@ -27,7 +27,9 @@ export interface PaintBackend {
|
|
|
27
27
|
/** 有文字选区时焦点那端的标记(竖线 + 顶部圆点,不闪烁);null 隐藏 */
|
|
28
28
|
paintFocusMark(mark: CaretPos | null): void;
|
|
29
29
|
/** 悬停中的 mark。光标底下每一块都算,折行各行一起换;空数组取消。只重画受影响的块。 */
|
|
30
|
-
setHoverBlock?(ids: readonly string[]): void;
|
|
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;
|
|
@@ -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,GAAG,IAAI,CAAC;
|
|
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"}
|