class Scroll extends ScrollBlot {
2 constructor(domNode,config) {
3 super(domNode);
4 ...
5 }
6
7 标识批量更新的开始,此时执行 update / optimize 都不会进行实际的更新
8 batchStart() {
9 this.batch = ;
10 11
12 标识批量更新的结束
13 batchEnd() {
14 15 .optimize();
16 17
18 在制定位置删除制定长度的内容
19 比如:deleteAt(6,5) 将删除 "World"
20 在 Quill 的 API 中对应 deleteText(index,source) 方法
21 deleteAt(index,length) {}
22
23 设置编辑器的可编辑状态
24 enable(enabled = 25 this.domNode.setAttribute('contenteditable'26 27
28 在制定位置用制定格式格式化制定长度的内容
29 比如:formatAt(6,5,'bold',false) 将取消 "World" 的粗体格式
30 在 Quill 的 API 中对应 formatText(index,value,source) 方法 formatAt(index,format,value) {
31 this.whitelist != null && !this.whitelist[format]) 32 super.formatAt(index,value); 33 34
在制定位置插入内容
比如:insertAt(11,'\n你好,世界');
37 在 Quill 的 API 中对应 insertText(index,text,source)
38 Quill 中的 insertText 其实是 Scroll 的 insertAt 和 formatAt 的复合方法
39 insertAt(index,def) {}
40
41 在某个 Blot 前面插入 Blot
42 insertBefore(blot,ref) {}
43
44 弹出当前位置 Blot 路径最外面的叶子 Blot(会改变原数组)
45 leaf(index) { this.path(index).pop() || [null,-1]; }
46
47 实际上调用的是父类 ContainerBlot 的 descendant 方法
48 目的是得到当前位置所在的 Blot 对象
49 line(index) {
50 if (index === .length()) {
51 this.line(index - 152 }
53 .descendant(isLine,index);
54 55
56 获取某一范围的 Blot 对象
57 lines(index = 0,length = Number.MAX_VALUE) {}
58
59 TODO
60 optimize(mutations = [],context = {}) {
61 this.batch === true) 62 super.optimize(mutations,context);
63 if (mutations.length > 064 .emitter.emit(Emitter.events.SCROLL_OPTIMIZE,mutations,1)">65 }
66 67
68 实际上调用的是父类 ContainerBlot 的 path 方法
69 目的是得到当前位置的 Blot 路径,并排除 Scroll 自己
70 Blot 路径就和 DOM 节点路径是对应的
71 比如:DOM 节点路径 div.ql-editor -> p -> strong,
72 对应 Blot 路径就是 [[Scroll div.ql-editor,0],[Block p,[Bold strong,6]]
73 path(index) {
74 return super.path(index).slice(1); Exclude self
75 76
77 78 update(mutations) {
79 80 81 }
82 }
83
84 Scroll.blotName = 'scroll'85 Scroll.className = 'ql-editor'86 Scroll.tagName = 'DIV'87 Scroll.defaultChild = 'block'88 Scroll.allowedChildren = [Block,BlockEmbed,Container];
89
90 export default Scroll;