@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.
- package/dist/index.js +4662 -2759
- package/dist/index.js.map +1 -1
- package/dist/style.css +8 -7
- package/dist/types/editor.d.ts +86 -8
- package/dist/types/editor.d.ts.map +1 -1
- package/dist/types/embed/ref.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/input/ime.d.ts.map +1 -1
- package/dist/types/layout/advances.d.ts +37 -0
- package/dist/types/layout/advances.d.ts.map +1 -0
- package/dist/types/layout/engine.d.ts +37 -3
- package/dist/types/layout/engine.d.ts.map +1 -1
- package/dist/types/layout/measure.d.ts +2 -2
- package/dist/types/layout/measure.d.ts.map +1 -1
- package/dist/types/layout/types.d.ts +39 -0
- package/dist/types/layout/types.d.ts.map +1 -1
- package/dist/types/layout/wrap.d.ts +9 -2
- package/dist/types/layout/wrap.d.ts.map +1 -1
- package/dist/types/model/blocks.d.ts +27 -0
- package/dist/types/model/blocks.d.ts.map +1 -1
- package/dist/types/model/document.d.ts +63 -2
- package/dist/types/model/document.d.ts.map +1 -1
- package/dist/types/model/spacerText.d.ts +19 -0
- package/dist/types/model/spacerText.d.ts.map +1 -0
- package/dist/types/mutations/apply.d.ts.map +1 -1
- package/dist/types/mutations/invert.d.ts.map +1 -1
- package/dist/types/operations/primitives.d.ts.map +1 -1
- package/dist/types/operations/resolve.d.ts +7 -0
- package/dist/types/operations/resolve.d.ts.map +1 -1
- package/dist/types/operations/text.d.ts.map +1 -1
- package/dist/types/paint/canvasPainter.d.ts +23 -4
- package/dist/types/paint/canvasPainter.d.ts.map +1 -1
- package/dist/types/paint/decorations.d.ts +1 -1
- package/dist/types/paint/decorations.d.ts.map +1 -1
- package/dist/types/paint/focusNotch.d.ts +44 -0
- package/dist/types/paint/focusNotch.d.ts.map +1 -0
- package/dist/types/paint/focusNotch.selfcheck.d.ts +2 -0
- package/dist/types/paint/focusNotch.selfcheck.d.ts.map +1 -0
- package/dist/types/paint/htmlPainter.d.ts +3 -1
- package/dist/types/paint/htmlPainter.d.ts.map +1 -1
- package/dist/types/paint/markBox.d.ts +1 -1
- package/dist/types/paint/markBox.d.ts.map +1 -1
- package/dist/types/paint/types.d.ts +10 -1
- package/dist/types/paint/types.d.ts.map +1 -1
- package/dist/types/perfPanel.d.ts +45 -8
- package/dist/types/perfPanel.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/layout/wrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAgB,WAAW,EAAE,cAAc,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/layout/wrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,17 +28,35 @@ export interface TableBlock {
|
|
|
28
28
|
}
|
|
29
29
|
export type Block = ParagraphBlock | TableBlock;
|
|
30
30
|
export declare function parseBlocks(spacers: string): Block[];
|
|
31
|
+
/** 插入或删除的文字里有段分隔符、表格标记时,段结构变了,不能在旧切段上平移。 */
|
|
32
|
+
export declare function containsStructuralMarker(text: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 快路径:在已有切段上记一次段内插入,返回被改段落的序号。
|
|
35
|
+
* 返回 null 就是常规路径(表格内、段外、对不上任何段)。
|
|
36
|
+
* 跨段替换会带上段分隔符,在调用前就被挡下。
|
|
37
|
+
*/
|
|
38
|
+
export declare function adjustBlocksForLocalInsert(blocks: Block[], index: number, len: number): number | null;
|
|
39
|
+
/** 删掉的区间必须整段落在同一段里,且调用方已确认里面没有结构标记。 */
|
|
40
|
+
export declare function adjustBlocksForLocalDelete(blocks: Block[], from: number, to: number): number | null;
|
|
41
|
+
export declare function cloneBlocks(blocks: readonly Block[]): Block[];
|
|
31
42
|
export declare function findTableAt(spacers: string, index: number): TableBlock | null;
|
|
32
43
|
export declare function isEmptyParagraph(spacers: string, para: ParaRange): boolean;
|
|
33
44
|
/** 列表标记 / 标题画在段落样式上,不进 spacer;有它们时占位符不能当空文档。 */
|
|
34
45
|
export declare function isVisuallyEmptyDoc(doc: {
|
|
35
46
|
spacers: string;
|
|
47
|
+
length?: number;
|
|
48
|
+
charAt?: (index: number) => string;
|
|
49
|
+
blocksForLayout?: () => {
|
|
50
|
+
blocks: Block[];
|
|
51
|
+
};
|
|
36
52
|
entities: {
|
|
37
53
|
size: number;
|
|
38
54
|
};
|
|
39
55
|
paragraphPropsAt: (index: number) => ParagraphProps;
|
|
40
56
|
}): boolean;
|
|
41
57
|
export declare function findParagraphAt(spacers: string, index: number): ParaRange | null;
|
|
58
|
+
/** 在已有切段上找 index 所在段落,不再扫字符。 */
|
|
59
|
+
export declare function paragraphInBlocks(blocks: Block[], index: number, length: number): ParaRange | null;
|
|
42
60
|
export declare function paragraphsIntersecting(spacers: string, start: number, end: number): ParaRange[];
|
|
43
61
|
export declare function cellAt(spacers: string, index: number): {
|
|
44
62
|
table: TableBlock;
|
|
@@ -58,6 +76,15 @@ export declare function isLastTableCell(hit: {
|
|
|
58
76
|
col: number;
|
|
59
77
|
}): boolean;
|
|
60
78
|
export declare function nextCellIndex(spacers: string, index: number, dir: 1 | -1): number | null;
|
|
79
|
+
/**
|
|
80
|
+
* 删除范围盖住表格起止时扩成整表,避免把表从中间切断。
|
|
81
|
+
* 只看已有切段。范围完全落在表内部时,才拷贝重叠的那一段来找散落的起止标记,
|
|
82
|
+
* 不会为了这次判断去拼整篇字符流。
|
|
83
|
+
*/
|
|
84
|
+
export declare function expandRangeOverBlocks(blocks: readonly Block[], start: number, end: number, slice: (from: number, to: number) => string): {
|
|
85
|
+
start: number;
|
|
86
|
+
end: number;
|
|
87
|
+
};
|
|
61
88
|
export declare function expandRangeOverStructures(spacers: string, start: number, end: number): {
|
|
62
89
|
start: number;
|
|
63
90
|
end: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/model/blocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,KAAK,GAAG,cAAc,GAAG,UAAU,CAAC;AAShD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAQpD;AAqED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAO7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAG1E;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,cAAc,CAAC;CACrD,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/model/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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":"
|
|
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"}
|
|
@@ -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,
|
|
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":"invert.d.ts","sourceRoot":"","sources":["../../../src/mutations/invert.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAUL,QAAQ,EACR,YAAY,EAOb,MAAM,SAAS,CAAC;AAgBjB,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,IAAI,CAChD,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,KACrC,QAAQ,CAAC;AAEd,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG;KAAG,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;CAAE,CAAC;AAEhE,eAAO,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../../src/mutations/invert.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAUL,QAAQ,EACR,YAAY,EAOb,MAAM,SAAS,CAAC;AAgBjB,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,IAAI,CAChD,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,KACrC,QAAQ,CAAC;AAEd,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG;KAAG,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;CAAE,CAAC;AAEhE,eAAO,MAAM,SAAS,EAAE,SAsFvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAQ/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/operations/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,
|
|
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":"
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/operations/text.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmD,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGnG,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAKxD,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AA2C9D;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,SAAS,EACnB,QAAQ,GAAE,aAA0B,GACnC,SAAS,CAAC,MAAM,CAAC,CAgBnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAkClF;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CA6ChE;AAED,8BAA8B;AAC9B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/operations/text.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmD,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGnG,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAKxD,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AA2C9D;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,SAAS,EACnB,QAAQ,GAAE,aAA0B,GACnC,SAAS,CAAC,MAAM,CAAC,CAgBnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAkClF;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CA6ChE;AAED,8BAA8B;AAC9B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAUxE;AAaD,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAAC;AAE5E,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAkC7D;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAoBjE;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAwDtE"}
|
|
@@ -3,7 +3,7 @@ import { PaintBackend } from './types';
|
|
|
3
3
|
/**
|
|
4
4
|
* 画布左右各比文档宽出这么多:mark 等块的 paddingX 外扩在行首行尾会画到内容区外,
|
|
5
5
|
* 画布若恰好等宽就会被裁掉。画布整体左移 GUTTER 并平移绘制坐标,文字位置不变;
|
|
6
|
-
*
|
|
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 {
|
|
@@ -19,6 +19,7 @@ export declare class CanvasPainter implements PaintBackend {
|
|
|
19
19
|
private caretVisible;
|
|
20
20
|
private caretTrails;
|
|
21
21
|
private focusMark;
|
|
22
|
+
private focusRounded;
|
|
22
23
|
private imageCache;
|
|
23
24
|
private embeds;
|
|
24
25
|
private embedCache;
|
|
@@ -29,6 +30,7 @@ export declare class CanvasPainter implements PaintBackend {
|
|
|
29
30
|
private winTop;
|
|
30
31
|
private winH;
|
|
31
32
|
private onScroll;
|
|
33
|
+
private viewportListener;
|
|
32
34
|
/** 上次重画用的像素密度(dpr × 缩放),变了就得整窗重画 */
|
|
33
35
|
private lastScale;
|
|
34
36
|
private zoomRaf;
|
|
@@ -46,8 +48,15 @@ export declare class CanvasPainter implements PaintBackend {
|
|
|
46
48
|
paintSelection(rects: SelRect[]): void;
|
|
47
49
|
paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
|
|
48
50
|
paintMarkEffects(): void;
|
|
49
|
-
paintFocusMark(mark: CaretPos | null): void;
|
|
51
|
+
paintFocusMark(mark: CaretPos | null, rounded?: boolean): void;
|
|
52
|
+
private focusGap;
|
|
53
|
+
private selectionHeight;
|
|
50
54
|
destroy(): void;
|
|
55
|
+
visibleBand(): {
|
|
56
|
+
top: number;
|
|
57
|
+
bottom: number;
|
|
58
|
+
} | null;
|
|
59
|
+
setViewportListener(listener: (() => boolean) | null): void;
|
|
51
60
|
/** 可视区在文档坐标里的 [top, bottom]。找不到容器时就当整篇可见。 */
|
|
52
61
|
private visibleRange;
|
|
53
62
|
/** 按当前可视区决定画布窗口位置。返回是否挪了窗口。 */
|
|
@@ -55,15 +64,25 @@ export declare class CanvasPainter implements PaintBackend {
|
|
|
55
64
|
/** 滚动/窗口尺寸变化:可视区离开画布窗口时挪窗口并整体重画 */
|
|
56
65
|
private followViewport;
|
|
57
66
|
private resize;
|
|
67
|
+
/**
|
|
68
|
+
* 可视区里和上一帧像素相同的行留着。返回要重画的纵向区间;整段都没变则返回 null。
|
|
69
|
+
* 表格、浮动图或看不出内容的行保持原区间,整段重画。
|
|
70
|
+
*/
|
|
71
|
+
private changedSpan;
|
|
58
72
|
private redrawContent;
|
|
59
73
|
private redrawChrome;
|
|
60
74
|
private fillSelectionRect;
|
|
61
75
|
private paintVBlock;
|
|
62
76
|
private strokeVBlockOutline;
|
|
63
|
-
/** 与 `.mini-focus-mark`
|
|
77
|
+
/** 与 `.mini-focus-mark` 同形:默认 2px 竖线 + 贴着行顶、整颗落在行内的 6px 圆点 */
|
|
64
78
|
private drawFocusMark;
|
|
65
79
|
private drawCaret;
|
|
66
|
-
|
|
80
|
+
/**
|
|
81
|
+
* 纯色、字体相同且首尾相接的字合成一次 fillText。
|
|
82
|
+
* 彩虹字每个字颜色不同,仍逐字画。
|
|
83
|
+
*/
|
|
84
|
+
private paintGlyphs;
|
|
85
|
+
private paintRun;
|
|
67
86
|
private paintLineDeco;
|
|
68
87
|
private imageOf;
|
|
69
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasPainter.d.ts","sourceRoot":"","sources":["../../../src/paint/canvasPainter.ts"],"names":[],"mappings":"
|
|
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;AAIlG,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,YAAY,CAAS;IAC7B,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,OAAO,CAAC,gBAAgB,CAAgC;IACxD,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;IAsBlC,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,EAAE,OAAO,UAAQ;IASrD,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,eAAe;IAKvB,OAAO;IAuBP,WAAW,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKrD,mBAAmB,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI;IAIpD,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAcpB,+BAA+B;IAC/B,OAAO,CAAC,WAAW;IAuBnB,mCAAmC;IACnC,OAAO,CAAC,cAAc;IAWtB,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;IAuFnB,OAAO,CAAC,mBAAmB;IAY3B,8DAA8D;IAC9D,OAAO,CAAC,aAAa;IAuBrB,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,
|
|
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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { CaretPos } from '../layout/types';
|
|
2
|
+
/** Align the focus stroke's center with the selected border's center. */
|
|
3
|
+
export declare function alignFocusMark(mark: CaretPos, box: {
|
|
4
|
+
x: number;
|
|
5
|
+
w: number;
|
|
6
|
+
}, side: 'left' | 'right', width: number, borderWidth?: number): CaretPos;
|
|
7
|
+
/** Keep the selected mark's focus line away from the ends of its border cutout. */
|
|
8
|
+
export declare function focusMarkWithGap(mark: CaretPos, selectionHeight: number, gap: number): CaretPos;
|
|
9
|
+
export declare function focusNotch(mark: CaretPos, selectionHeight: number, gap: number, box: {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
w: number;
|
|
13
|
+
h: number;
|
|
14
|
+
}, lineWidth: number): {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
w: number;
|
|
18
|
+
h: number;
|
|
19
|
+
} | null;
|
|
20
|
+
export declare function splitNotchLines<T extends {
|
|
21
|
+
x1: number;
|
|
22
|
+
y1: number;
|
|
23
|
+
x2: number;
|
|
24
|
+
y2: number;
|
|
25
|
+
}>(lines: readonly T[], notch: {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
}): T[];
|
|
31
|
+
/** Cut the corner arcs too: otherwise their round ends touch the focus line. */
|
|
32
|
+
export declare function splitNotchArcs<T extends {
|
|
33
|
+
cx: number;
|
|
34
|
+
cy: number;
|
|
35
|
+
r: number;
|
|
36
|
+
a0: number;
|
|
37
|
+
a1: number;
|
|
38
|
+
}>(arcs: readonly T[], notch: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
w: number;
|
|
42
|
+
h: number;
|
|
43
|
+
}): T[];
|
|
44
|
+
//# sourceMappingURL=focusNotch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusNotch.d.ts","sourceRoot":"","sources":["../../../src/paint/focusNotch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,SAAI,GAAG,QAAQ,CAG9I;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAI/F;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnD,SAAS,EAAE,MAAM,GAChB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYvD;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,EAAE,CAa7K;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,EAAE,CA6BtL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusNotch.selfcheck.d.ts","sourceRoot":"","sources":["../../../src/paint/focusNotch.selfcheck.ts"],"names":[],"mappings":""}
|
|
@@ -12,6 +12,8 @@ export declare class HtmlPainter implements PaintBackend {
|
|
|
12
12
|
private embedCache;
|
|
13
13
|
private hoverIds;
|
|
14
14
|
private selectedId;
|
|
15
|
+
private focusGeometry;
|
|
16
|
+
private focusRounded;
|
|
15
17
|
mount(host: HTMLElement): void;
|
|
16
18
|
getSurface(): HTMLElement;
|
|
17
19
|
paintDoc(layout: DocLayout): void;
|
|
@@ -20,7 +22,7 @@ export declare class HtmlPainter implements PaintBackend {
|
|
|
20
22
|
private applyMarkSkin;
|
|
21
23
|
paintSelection(rects: SelRect[]): void;
|
|
22
24
|
paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
|
|
23
|
-
paintFocusMark(mark: CaretPos | null): void;
|
|
25
|
+
paintFocusMark(mark: CaretPos | null, rounded?: boolean): void;
|
|
24
26
|
destroy(): void;
|
|
25
27
|
}
|
|
26
28
|
//# sourceMappingURL=htmlPainter.d.ts.map
|
|
@@ -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;AAKrG,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;IACzC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAS;IAE7B,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;IAOlC,OAAO,CAAC,aAAa;IA+ErB,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,EAAE,OAAO,UAAQ;IAerD,OAAO;CAYR"}
|
|
@@ -79,7 +79,7 @@ type FrameArc = {
|
|
|
79
79
|
* 边框落在框内(向内收半个线宽)。四边齐全时是圆角矩形。
|
|
80
80
|
* 缺边时拆成直线和角弧:只有相邻两边都在的角才画弧,缺边的一端画到框外缘,和下一行接上。
|
|
81
81
|
*/
|
|
82
|
-
export declare function frameGeometry(x: number, y: number, w: number, h: number, lineWidth: number, radii: MarkRadii, sides: MarkSides): {
|
|
82
|
+
export declare function frameGeometry(x: number, y: number, w: number, h: number, lineWidth: number, radii: MarkRadii, sides: MarkSides, splitRect?: boolean): {
|
|
83
83
|
rect?: {
|
|
84
84
|
x: number;
|
|
85
85
|
y: 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":"AAAA,OAAO,EAAE,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAc,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,CAKnG;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,CAE/E;AAID,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG,OAAO,CAEnF;AAMD,KAAK,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;AAM3G,kCAAkC;AAClC,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAQpD;AAmBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,SAAS,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,EAAE,SAAO,EACT,EAAE,SAAO,GACR;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAmEjE;AAED,kCAAkC;AAClC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B;AAED,mBAAmB;AACnB,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAWpE;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,GAAG,MAAM,CAU/E;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAE1F;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAIhG;AAED,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMrH;AAED,sBAAsB;AACtB,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAI9F;AAED,KAAK,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AACpE,KAAK,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,UAAQ,GAChB;IAAE,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,CA6CnH;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CACzB,GAAG,EAAE,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG;IACxG,WAAW,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB,EACD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,QAoBjB;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAQjG"}
|
|
@@ -25,7 +25,7 @@ export interface PaintBackend {
|
|
|
25
25
|
paintSelection(rects: SelRect[]): void;
|
|
26
26
|
paintCaret(caret: CaretPos | null, visible: boolean, trails?: CaretPos[]): void;
|
|
27
27
|
/** 焦点那端的标记(竖线 + 顶部圆点,不闪烁):文字选区、mark/slot 选中态;null 隐藏 */
|
|
28
|
-
paintFocusMark(mark: CaretPos | null): void;
|
|
28
|
+
paintFocusMark(mark: CaretPos | null, rounded?: boolean): void;
|
|
29
29
|
/** 悬停中的 mark。指针底下每一块都算,折行各行一起换;空数组取消。只重画受影响的块。 */
|
|
30
30
|
setHoverBlock?(ids: readonly string[]): void;
|
|
31
31
|
/** 光标所在最上层 mark 的选中皮。`null` 取消。只重画受影响的块。 */
|
|
@@ -34,6 +34,15 @@ export interface PaintBackend {
|
|
|
34
34
|
paintMarkEffects?(): void;
|
|
35
35
|
getSurface(): HTMLElement;
|
|
36
36
|
destroy(): void;
|
|
37
|
+
/** 文档坐标里的可视区。Canvas 用来把排版限制在窗口附近。 */
|
|
38
|
+
visibleBand?(): {
|
|
39
|
+
top: number;
|
|
40
|
+
bottom: number;
|
|
41
|
+
} | null;
|
|
42
|
+
/**
|
|
43
|
+
* 滚动或缩放改变了可视区。返回 true 表示调用方已经重排并重画,画布不必再跟一次。
|
|
44
|
+
*/
|
|
45
|
+
setViewportListener?(listener: (() => boolean) | null): void;
|
|
37
46
|
}
|
|
38
47
|
export interface PaintHost {
|
|
39
48
|
surface: 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,wDAAwD;IACxD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,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,wDAAwD;IACxD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/D,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;IAChB,qCAAqC;IACrC,WAAW,CAAC,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD;;OAEG;IACH,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAC9D;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"}
|