@dao42/d42paas-front 0.9.166 → 0.9.167

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.
@@ -3,24 +3,45 @@
3
3
  <h1>更新日志</h1>
4
4
  </a>
5
5
 
6
+ <a href="#v09167" id="v09167" style="color: inherit; text-decoration: none;">
7
+ <h2>v0.9.167</h2>
8
+ </a>
9
+
10
+ <a href="#新增" id="新增" style="color: inherit; text-decoration: none;">
11
+ <h3>新增</h3>
12
+ </a>
13
+ <ul>
14
+ <li>新增<code>showRRwebController</code> 属性来控制RRWEB回放的播放控制器(用于业务方调试)</li>
15
+ <li>新增聚焦行是空行显示<code>placeholder</code></li>
16
+ </ul>
17
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">defaultPlaceholder:</span><span class="hl-1"> { </span><span class="hl-4">// 默认设置</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">showOnEmptyLine</span><span class="hl-1">: </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-3">placeholders:</span><span class="hl-1"> { </span><span class="hl-4">// 指定文件设置</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-3">:</span><span class="hl-1"> { </span><br/><span class="hl-1"> ... </span><br/><span class="hl-1"> </span><span class="hl-3">showOnEmptyLine</span><span class="hl-1">: </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">})</span>
18
+ </code></pre>
19
+
20
+ <a href="#优化" id="优化" style="color: inherit; text-decoration: none;">
21
+ <h3>优化</h3>
22
+ </a>
23
+ <ul>
24
+ <li>优化浏览器回放业务方多次调用<code>startPlayback</code> 方法问题</li>
25
+ </ul>
26
+
6
27
  <a href="#v09166" id="v09166" style="color: inherit; text-decoration: none;">
7
28
  <h2>v0.9.166</h2>
8
29
  </a>
9
30
 
10
- <a href="#新增" id="新增" style="color: inherit; text-decoration: none;">
31
+ <a href="#新增-1" id="新增-1" style="color: inherit; text-decoration: none;">
11
32
  <h3>新增</h3>
12
33
  </a>
13
34
  <ul>
14
35
  <li>新增支持链式跟随模式</li>
15
36
  </ul>
16
37
 
17
- <a href="#优化" id="优化" style="color: inherit; text-decoration: none;">
38
+ <a href="#优化-1" id="优化-1" style="color: inherit; text-decoration: none;">
18
39
  <h3>优化</h3>
19
40
  </a>
20
41
  <ul>
21
42
  <li>测试用例接口<code>runUnitTestByFilePath</code> 多文件运行,并且单文件配置独立参数</li>
22
43
  </ul>
23
- <pre><code class="language-ts"><span class="hl-0">[</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">fileKey:</span><span class="hl-0"> </span><span class="hl-2">&#39;sum.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">outputConsole:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">consoleText:</span><span class="hl-0"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">runMode:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">// runId: uuidv4(),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">fileKey:</span><span class="hl-0"> </span><span class="hl-2">&#39;sum2.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">outputConsole:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">consoleText:</span><span class="hl-0"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">runMode:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">// runId: uuidv4(),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">fileKey:</span><span class="hl-0"> </span><span class="hl-2">&#39;sum3.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">outputConsole:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">consoleText:</span><span class="hl-0"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">runMode:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">// runId: uuidv4(),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">]</span>
44
+ <pre><code class="language-ts"><span class="hl-1">[</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">fileKey:</span><span class="hl-1"> </span><span class="hl-5">&#39;sum.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">outputConsole:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">consoleText:</span><span class="hl-1"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">runMode:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// runId: uuidv4(),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">fileKey:</span><span class="hl-1"> </span><span class="hl-5">&#39;sum2.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">outputConsole:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">consoleText:</span><span class="hl-1"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">runMode:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// runId: uuidv4(),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">fileKey:</span><span class="hl-1"> </span><span class="hl-5">&#39;sum3.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">outputConsole:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">consoleText:</span><span class="hl-1"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">runMode:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// runId: uuidv4(),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">]</span>
24
45
  </code></pre>
25
46
  <ul>
26
47
  <li>优化跟随模式, 对隐藏且没有权限文件的进行不可见,并给予相关提示处理</li>
@@ -37,21 +58,21 @@
37
58
  <h2>v0.9.165</h2>
38
59
  </a>
39
60
 
40
- <a href="#新增-1" id="新增-1" style="color: inherit; text-decoration: none;">
61
+ <a href="#新增-2" id="新增-2" style="color: inherit; text-decoration: none;">
41
62
  <h3>新增</h3>
42
63
  </a>
43
64
  <ul>
44
65
  <li>新增自定义<code>xterm</code>字体样式</li>
45
66
  </ul>
46
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">xtermStyle</span><span class="hl-0">:{</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">consoleStyle</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">fontSize:</span><span class="hl-0"> </span><span class="hl-6">12</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">lineHeight:</span><span class="hl-0"> </span><span class="hl-6">1</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">fontFamily:</span><span class="hl-0"> </span><span class="hl-2">&#39;Monaco, Menlo, monospace&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">})</span>
67
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">xtermStyle</span><span class="hl-1">:{</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">consoleStyle</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">fontSize:</span><span class="hl-1"> </span><span class="hl-6">12</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">lineHeight:</span><span class="hl-1"> </span><span class="hl-6">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">fontFamily:</span><span class="hl-1"> </span><span class="hl-5">&#39;Monaco, Menlo, monospace&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">})</span>
47
68
  </code></pre>
48
69
  <ul>
49
70
  <li>新增支持指定文件名后缀进行语法高亮(完全匹配优先级高于后缀名匹配)</li>
50
71
  </ul>
51
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-1">specialFileHighlight</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">fileName:</span><span class="hl-0"> </span><span class="hl-2">&#39;.java.answer&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageType:</span><span class="hl-0"> </span><span class="hl-2">&#39;java&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">fileName:</span><span class="hl-0"> </span><span class="hl-2">&#39;paas_test.java.answer&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageType:</span><span class="hl-0"> </span><span class="hl-2">&#39;yaml&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">]</span><br/><span class="hl-0">})</span>
72
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-3">specialFileHighlight</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">fileName:</span><span class="hl-1"> </span><span class="hl-5">&#39;.java.answer&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageType:</span><span class="hl-1"> </span><span class="hl-5">&#39;java&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">fileName:</span><span class="hl-1"> </span><span class="hl-5">&#39;paas_test.java.answer&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageType:</span><span class="hl-1"> </span><span class="hl-5">&#39;yaml&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">]</span><br/><span class="hl-1">})</span>
52
73
  </code></pre>
53
74
 
54
- <a href="#优化-1" id="优化-1" style="color: inherit; text-decoration: none;">
75
+ <a href="#优化-2" id="优化-2" style="color: inherit; text-decoration: none;">
55
76
  <h3>优化</h3>
56
77
  </a>
57
78
  <ul>
@@ -64,29 +85,29 @@
64
85
  <h2>v0.9.164</h2>
65
86
  </a>
66
87
 
67
- <a href="#新增-2" id="新增-2" style="color: inherit; text-decoration: none;">
88
+ <a href="#新增-3" id="新增-3" style="color: inherit; text-decoration: none;">
68
89
  <h3>新增</h3>
69
90
  </a>
70
91
  <ul>
71
92
  <li>新增实例化<code>DaoPaaS</code> 参数<code>customFileTreeAction</code>,控制文件树操作行为是否业务方控制</li>
72
93
  </ul>
73
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-1">process</span><span class="hl-0">.</span><span class="hl-1">env</span><span class="hl-0">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-1">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-1">tenantId:</span><span class="hl-0"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">ticket:</span><span class="hl-0"> </span><span class="hl-1">dataRes</span><span class="hl-0">?.</span><span class="hl-1">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-1">customFileTreeAction</span><span class="hl-0">: </span><span class="hl-1">customFileTreeAction</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
94
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-3">process</span><span class="hl-1">.</span><span class="hl-3">env</span><span class="hl-1">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-3">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-3">tenantId:</span><span class="hl-1"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">ticket:</span><span class="hl-1"> </span><span class="hl-3">dataRes</span><span class="hl-1">?.</span><span class="hl-3">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-3">customFileTreeAction</span><span class="hl-1">: </span><span class="hl-3">customFileTreeAction</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
74
95
  </code></pre>
75
96
  <ul>
76
97
  <li>新增文件树相关事件点击的订阅事件</li>
77
98
  </ul>
78
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;fileTreeAction&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">type</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;unittest&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-5">setTimeout</span><span class="hl-0">(() </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">setFileToUnitTest</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">unitTest:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> }, </span><span class="hl-6">1000</span><span class="hl-0"> * </span><span class="hl-6">2</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;hide&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-5">setTimeout</span><span class="hl-0">(() </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">setFileVisible</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">hide:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> }, </span><span class="hl-6">1000</span><span class="hl-0"> * </span><span class="hl-6">2</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;lock&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-5">setTimeout</span><span class="hl-0">(() </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">setFileLockStatus</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">lock:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> }, </span><span class="hl-6">1000</span><span class="hl-0"> * </span><span class="hl-6">2</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">default</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span>
99
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;fileTreeAction&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">type</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;unittest&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-2">setTimeout</span><span class="hl-1">(() </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">setFileToUnitTest</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">unitTest:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }, </span><span class="hl-6">1000</span><span class="hl-1"> * </span><span class="hl-6">2</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;hide&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-2">setTimeout</span><span class="hl-1">(() </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">setFileVisible</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">hide:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }, </span><span class="hl-6">1000</span><span class="hl-1"> * </span><span class="hl-6">2</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;lock&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-2">setTimeout</span><span class="hl-1">(() </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">setFileLockStatus</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">lock:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }, </span><span class="hl-6">1000</span><span class="hl-1"> * </span><span class="hl-6">2</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">default</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span>
79
100
  </code></pre>
80
101
  <ul>
81
102
  <li>新增文件添加/删除<code>unittest</code>, <code>hide</code>, <code>lock</code> 行为接口</li>
82
103
  </ul>
83
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">setFileToUnitTest</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">unitTest:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">setFileVisible</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">hide:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">setFileLockStatus</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">lock:</span><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0">});</span>
104
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">setFileToUnitTest</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">unitTest:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">setFileVisible</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">hide:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">setFileLockStatus</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">lock:</span><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
84
105
  </code></pre>
85
106
  <ul>
86
107
  <li>新增跟随模式下, 对应跟随组件高亮区域显示跟随用户名称</li>
87
108
  </ul>
88
109
 
89
- <a href="#优化-2" id="优化-2" style="color: inherit; text-decoration: none;">
110
+ <a href="#优化-3" id="优化-3" style="color: inherit; text-decoration: none;">
90
111
  <h3>优化</h3>
91
112
  </a>
92
113
  <ul>
@@ -97,37 +118,37 @@
97
118
  <h2>v0.9.162</h2>
98
119
  </a>
99
120
 
100
- <a href="#新增-3" id="新增-3" style="color: inherit; text-decoration: none;">
121
+ <a href="#新增-4" id="新增-4" style="color: inherit; text-decoration: none;">
101
122
  <h3>新增</h3>
102
123
  </a>
103
124
  <ul>
104
125
  <li>测试用例接口移除<code>runId</code>参数</li>
105
126
  <li><code>runUnitTestByFilePath</code> 接口支持多文件运行,对应的<code>fileKey</code>参数可以为:<code>string | string[]</code></li>
106
127
  </ul>
107
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">runUnitTestByFilePath</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">fileKey:</span><span class="hl-0"> [</span><span class="hl-2">&#39;sum.test.js&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-1">outputConsole:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">consoleText:</span><span class="hl-0"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">runMode:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">,</span><br/><span class="hl-0">});</span>
128
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">runUnitTestByFilePath</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">fileKey:</span><span class="hl-1"> [</span><span class="hl-5">&#39;sum.test.js&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-3">outputConsole:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">consoleText:</span><span class="hl-1"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">runMode:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
108
129
  </code></pre>
109
130
  <ul>
110
131
  <li><code>stopUnitTest</code> 传递 <code>fileKey: string | string[]</code> 进行停止指定文件或者文件数组 测试用例</li>
111
132
  </ul>
112
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">stopUnitTest</span><span class="hl-0">(</span><span class="hl-1">fileKey</span><span class="hl-0">: </span><span class="hl-1">string</span><span class="hl-0"> | </span><span class="hl-1">string</span><span class="hl-0">[])</span>
133
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">stopUnitTest</span><span class="hl-1">(</span><span class="hl-3">fileKey</span><span class="hl-1">: </span><span class="hl-3">string</span><span class="hl-1"> | </span><span class="hl-3">string</span><span class="hl-1">[])</span>
113
134
  </code></pre>
114
135
  <ul>
115
136
  <li><code>runCmd</code> 接口调用方式:</li>
116
137
  </ul>
117
- <pre><code class="language-ts"><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">runCmd</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">cmd:</span><span class="hl-0"> </span><span class="hl-2">&#39;test&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
138
+ <pre><code class="language-ts"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">runCmd</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">cmd:</span><span class="hl-1"> </span><span class="hl-5">&#39;test&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
118
139
  </code></pre>
119
140
  <ul>
120
141
  <li><code>stopRunCmd</code> 接口调用方式:</li>
121
142
  </ul>
122
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">stopRunCmd</span><span class="hl-0">(</span><span class="hl-1">cmd</span><span class="hl-0">: </span><span class="hl-1">string</span><span class="hl-0">)</span>
143
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">stopRunCmd</span><span class="hl-1">(</span><span class="hl-3">cmd</span><span class="hl-1">: </span><span class="hl-3">string</span><span class="hl-1">)</span>
123
144
  </code></pre>
124
145
  <ul>
125
146
  <li>新增测试用例执行相关订阅事件</li>
126
147
  </ul>
127
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">// 执行测试用例状态</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">RunUnitTestStatus</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">// 执行用例结果</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">RunUnitTestResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">// 停止执行用例结果</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">StopUnitTestResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">// 执行CMD结果</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">RumCmdResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">// 停止执行CMD结果</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">StopRunCmdResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> ...</span>
148
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-4">// 执行测试用例状态</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">RunUnitTestStatus</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">// 执行用例结果</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">RunUnitTestResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">// 停止执行用例结果</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">StopUnitTestResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">// 执行CMD结果</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">RumCmdResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">// 停止执行CMD结果</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">StopRunCmdResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> ...</span>
128
149
  </code></pre>
129
150
 
130
- <a href="#优化-3" id="优化-3" style="color: inherit; text-decoration: none;">
151
+ <a href="#优化-4" id="优化-4" style="color: inherit; text-decoration: none;">
131
152
  <h3>优化</h3>
132
153
  </a>
133
154
  <ul>
@@ -160,26 +181,26 @@
160
181
  <h2>v0.9.159</h2>
161
182
  </a>
162
183
 
163
- <a href="#新增-4" id="新增-4" style="color: inherit; text-decoration: none;">
184
+ <a href="#新增-5" id="新增-5" style="color: inherit; text-decoration: none;">
164
185
  <h2>新增</h2>
165
186
  </a>
166
187
  <ul>
167
188
  <li>新增获取当前的光标选中区域信息 [getSelection]</li>
168
189
  </ul>
169
- <pre><code class="language-ts"><span class="hl-5">getSelection</span><span class="hl-0">(): </span><span class="hl-1">IDaoEditorSpace</span><span class="hl-0">.</span><span class="hl-1">ISelection</span><span class="hl-0"> | </span><span class="hl-3">undefined</span><span class="hl-0">;</span>
190
+ <pre><code class="language-ts"><span class="hl-2">getSelection</span><span class="hl-1">(): </span><span class="hl-3">IDaoEditorSpace</span><span class="hl-1">.</span><span class="hl-3">ISelection</span><span class="hl-1"> | </span><span class="hl-0">undefined</span><span class="hl-1">;</span>
170
191
  </code></pre>
171
192
  <ul>
172
193
  <li>新增浏览器协同和回放功能</li>
173
194
  </ul>
174
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-1">process</span><span class="hl-0">.</span><span class="hl-1">env</span><span class="hl-0">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-1">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-1">recordBrowser</span><span class="hl-0">: </span><span class="hl-1">recordBrowser</span><span class="hl-0">, </span><span class="hl-4">//是否录制数据: 候选人: true, 面试官false</span><br/><span class="hl-0"> </span><span class="hl-1">persistenceWebData:</span><span class="hl-0"> </span><span class="hl-1">persistenceWebData</span><span class="hl-0">, </span><span class="hl-4">// 浏览器数据是否持久化(保存到DB), SMB: true, 1024: false</span><br/><span class="hl-0"> });</span>
195
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-3">process</span><span class="hl-1">.</span><span class="hl-3">env</span><span class="hl-1">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-3">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-3">recordBrowser</span><span class="hl-1">: </span><span class="hl-3">recordBrowser</span><span class="hl-1">, </span><span class="hl-4">//是否录制数据: 候选人: true, 面试官false</span><br/><span class="hl-1"> </span><span class="hl-3">persistenceWebData:</span><span class="hl-1"> </span><span class="hl-3">persistenceWebData</span><span class="hl-1">, </span><span class="hl-4">// 浏览器数据是否持久化(保存到DB), SMB: true, 1024: false</span><br/><span class="hl-1"> });</span>
175
196
  </code></pre>
176
197
  <ul>
177
198
  <li>新增浏览器业务方控制是否录制数据的接口</li>
178
199
  </ul>
179
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">startRecordBrowser</span><span class="hl-0">(</span><span class="hl-3">true</span><span class="hl-0">/</span><span class="hl-3">false</span><span class="hl-0">);</span>
200
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">startRecordBrowser</span><span class="hl-1">(</span><span class="hl-0">true</span><span class="hl-1">/</span><span class="hl-0">false</span><span class="hl-1">);</span>
180
201
  </code></pre>
181
202
 
182
- <a href="#优化-4" id="优化-4" style="color: inherit; text-decoration: none;">
203
+ <a href="#优化-5" id="优化-5" style="color: inherit; text-decoration: none;">
183
204
  <h2>优化</h2>
184
205
  </a>
185
206
  <ul>
@@ -191,31 +212,31 @@
191
212
  <h2>v0.9.157</h2>
192
213
  </a>
193
214
 
194
- <a href="#新增-5" id="新增-5" style="color: inherit; text-decoration: none;">
215
+ <a href="#新增-6" id="新增-6" style="color: inherit; text-decoration: none;">
195
216
  <h3>新增</h3>
196
217
  </a>
197
218
  <ul>
198
219
  <li>新增添加自定义快捷键方法[addHotKeys]</li>
199
220
  </ul>
200
- <pre><code class="language-ts"><span class="hl-0">[{ </span><span class="hl-4">// hotKeys</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">key</span><span class="hl-0">: </span><span class="hl-2">&#39;Mod-j&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">run</span><span class="hl-1">:</span><span class="hl-0"> (</span><span class="hl-1">params</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-1">daoEditor</span><span class="hl-0">.</span><span class="hl-5">insertCodeByCursorPosition</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-1">params</span><span class="hl-0">.</span><span class="hl-1">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">content:</span><span class="hl-0"> </span><span class="hl-5">encodeURI</span><span class="hl-0">(</span><span class="hl-5">decodeURI</span><span class="hl-0">(</span><span class="hl-1">params</span><span class="hl-0">.</span><span class="hl-1">content</span><span class="hl-0">) + </span><span class="hl-2">&#39;INSERT TEST CODE&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-1">cursor:</span><span class="hl-0"> </span><span class="hl-1">params</span><span class="hl-0">.</span><span class="hl-1">cursor</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">offsetActions:</span><span class="hl-0"> </span><span class="hl-6">4</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">}]</span><br/><br/><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-1">daoEditor</span><br/><span class="hl-0"> .</span><span class="hl-5">addHotKeys</span><span class="hl-0">(</span><span class="hl-1">hotKeys</span><span class="hl-0">)</span><br/><span class="hl-0"> .</span><span class="hl-5">catch</span><span class="hl-0">((</span><span class="hl-1">error</span><span class="hl-0">: </span><span class="hl-8">Error</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">// error: 快捷键不合法</span><br/><span class="hl-0"> });</span>
221
+ <pre><code class="language-ts"><span class="hl-1">[{ </span><span class="hl-4">// hotKeys</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">key</span><span class="hl-1">: </span><span class="hl-5">&#39;Mod-j&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-3">:</span><span class="hl-1"> (</span><span class="hl-3">params</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-3">daoEditor</span><span class="hl-1">.</span><span class="hl-2">insertCodeByCursorPosition</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-3">params</span><span class="hl-1">.</span><span class="hl-3">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">content:</span><span class="hl-1"> </span><span class="hl-2">encodeURI</span><span class="hl-1">(</span><span class="hl-2">decodeURI</span><span class="hl-1">(</span><span class="hl-3">params</span><span class="hl-1">.</span><span class="hl-3">content</span><span class="hl-1">) + </span><span class="hl-5">&#39;INSERT TEST CODE&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-3">cursor:</span><span class="hl-1"> </span><span class="hl-3">params</span><span class="hl-1">.</span><span class="hl-3">cursor</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">offsetActions:</span><span class="hl-1"> </span><span class="hl-6">4</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">}]</span><br/><br/><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-3">daoEditor</span><br/><span class="hl-1"> .</span><span class="hl-2">addHotKeys</span><span class="hl-1">(</span><span class="hl-3">hotKeys</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-2">catch</span><span class="hl-1">((</span><span class="hl-3">error</span><span class="hl-1">: </span><span class="hl-8">Error</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// error: 快捷键不合法</span><br/><span class="hl-1"> });</span>
201
222
  </code></pre>
202
223
  <ul>
203
224
  <li>新增根据光标位置插入代码[insertCodeByCursorPosition]</li>
204
225
  </ul>
205
- <pre><code><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-1">daoEditor</span><span class="hl-0">.</span><span class="hl-5">insertCodeByCursorPosition</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-2">&#39;main.go&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">content:</span><span class="hl-0"> </span><span class="hl-5">encodeURI</span><span class="hl-0">(</span><span class="hl-2">&#39;TEST INSERT CODE&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-1">cursor:</span><span class="hl-0"> </span><span class="hl-6">102</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">offsetActions:</span><span class="hl-0"> </span><span class="hl-6">4</span><span class="hl-0">,</span><br/><span class="hl-0">});</span>
226
+ <pre><code><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-3">daoEditor</span><span class="hl-1">.</span><span class="hl-2">insertCodeByCursorPosition</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-5">&#39;main.go&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">content:</span><span class="hl-1"> </span><span class="hl-2">encodeURI</span><span class="hl-1">(</span><span class="hl-5">&#39;TEST INSERT CODE&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-3">cursor:</span><span class="hl-1"> </span><span class="hl-6">102</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">offsetActions:</span><span class="hl-1"> </span><span class="hl-6">4</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
206
227
  </code></pre>
207
228
  <ul>
208
229
  <li>新增根据range替换代码[replayCodeByRange]</li>
209
230
  </ul>
210
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-1">daoEditor</span><span class="hl-0">.</span><span class="hl-5">replayCodeByRange</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-2">&#39;main.go&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">content:</span><span class="hl-0"> </span><span class="hl-5">encodeURI</span><span class="hl-0">(</span><span class="hl-2">&#39;TEST INSERT CODE&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-1">selection:</span><span class="hl-0"> { </span><span class="hl-1">start:</span><span class="hl-0"> </span><span class="hl-6">102</span><span class="hl-0">, </span><span class="hl-1">end:</span><span class="hl-0"> </span><span class="hl-6">158</span><span class="hl-0"> },</span><br/><span class="hl-0">});</span>
231
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-3">daoEditor</span><span class="hl-1">.</span><span class="hl-2">replayCodeByRange</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-5">&#39;main.go&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">content:</span><span class="hl-1"> </span><span class="hl-2">encodeURI</span><span class="hl-1">(</span><span class="hl-5">&#39;TEST INSERT CODE&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-3">selection:</span><span class="hl-1"> { </span><span class="hl-3">start:</span><span class="hl-1"> </span><span class="hl-6">102</span><span class="hl-1">, </span><span class="hl-3">end:</span><span class="hl-1"> </span><span class="hl-6">158</span><span class="hl-1"> },</span><br/><span class="hl-1">});</span>
211
232
  </code></pre>
212
233
  <ul>
213
234
  <li>新增获取光标位置[getCursor]</li>
214
235
  </ul>
215
- <pre><code class="language-ts"><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">cursor</span><span class="hl-0"> = </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-1">daoEditor</span><span class="hl-0">.</span><span class="hl-5">getCursor</span><span class="hl-0">();</span>
236
+ <pre><code class="language-ts"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">cursor</span><span class="hl-1"> = </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-3">daoEditor</span><span class="hl-1">.</span><span class="hl-2">getCursor</span><span class="hl-1">();</span>
216
237
  </code></pre>
217
238
 
218
- <a href="#优化-5" id="优化-5" style="color: inherit; text-decoration: none;">
239
+ <a href="#优化-6" id="优化-6" style="color: inherit; text-decoration: none;">
219
240
  <h3>优化</h3>
220
241
  </a>
221
242
  <ul>
@@ -227,14 +248,14 @@
227
248
  <h2>v0.9.156</h2>
228
249
  </a>
229
250
 
230
- <a href="#新增-6" id="新增-6" style="color: inherit; text-decoration: none;">
251
+ <a href="#新增-7" id="新增-7" style="color: inherit; text-decoration: none;">
231
252
  <h3>新增</h3>
232
253
  </a>
233
254
  <ul>
234
255
  <li>暴露removeMessage和removeError移除事件监听</li>
235
256
  </ul>
236
257
 
237
- <a href="#优化-6" id="优化-6" style="color: inherit; text-decoration: none;">
258
+ <a href="#优化-7" id="优化-7" style="color: inherit; text-decoration: none;">
238
259
  <h3>优化</h3>
239
260
  </a>
240
261
  <ul>
@@ -258,13 +279,13 @@
258
279
  <h2>v0.9.154</h2>
259
280
  </a>
260
281
 
261
- <a href="#新增-7" id="新增-7" style="color: inherit; text-decoration: none;">
282
+ <a href="#新增-8" id="新增-8" style="color: inherit; text-decoration: none;">
262
283
  <h3>新增</h3>
263
284
  </a>
264
285
  <ul>
265
286
  <li>新增支持初始化<code>SDK</code> <code>globalConfig</code> 全局配置</li>
266
287
  </ul>
267
- <pre><code class="language-ts"><span class="hl-3">type</span><span class="hl-0"> </span><span class="hl-8">GlobalConfig</span><span class="hl-0"> = {</span><br/><span class="hl-0"> </span><span class="hl-1">editorMode</span><span class="hl-0">?: </span><span class="hl-8">EditorMode</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">editorTabSize</span><span class="hl-0">?: </span><span class="hl-8">number</span><span class="hl-0"> | </span><span class="hl-2">&#39;auto&#39;</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">editorWordWrap</span><span class="hl-0">?: </span><span class="hl-8">boolean</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">fontSize</span><span class="hl-0">?: </span><span class="hl-8">string</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">editorIndentMode</span><span class="hl-0">?: </span><span class="hl-8">EditorIndentMode</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">openDiagnostic</span><span class="hl-0">?: </span><span class="hl-8">boolean</span><span class="hl-0">;</span><br/><span class="hl-0">};</span>
288
+ <pre><code class="language-ts"><span class="hl-0">type</span><span class="hl-1"> </span><span class="hl-8">GlobalConfig</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-3">editorMode</span><span class="hl-1">?: </span><span class="hl-8">EditorMode</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">editorTabSize</span><span class="hl-1">?: </span><span class="hl-8">number</span><span class="hl-1"> | </span><span class="hl-5">&#39;auto&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">editorWordWrap</span><span class="hl-1">?: </span><span class="hl-8">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">fontSize</span><span class="hl-1">?: </span><span class="hl-8">string</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">editorIndentMode</span><span class="hl-1">?: </span><span class="hl-8">EditorIndentMode</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">openDiagnostic</span><span class="hl-1">?: </span><span class="hl-8">boolean</span><span class="hl-1">;</span><br/><span class="hl-1">};</span>
268
289
  </code></pre>
269
290
  <ul>
270
291
  <li>新增回放模式下, LSP状态都为<code>notSupport</code> 值</li>
@@ -281,13 +302,13 @@
281
302
  <h2>v0.9.152</h2>
282
303
  </a>
283
304
 
284
- <a href="#新增-8" id="新增-8" style="color: inherit; text-decoration: none;">
305
+ <a href="#新增-9" id="新增-9" style="color: inherit; text-decoration: none;">
285
306
  <h3>新增</h3>
286
307
  </a>
287
308
  <ul>
288
309
  <li>新增<code>promisify</code> 接口<code>activePlaygroundSync</code></li>
289
310
  </ul>
290
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-9">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">activePlaygroundSync</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">));</span><br/><span class="hl-0"> } </span><span class="hl-9">catch</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
311
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-9">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">activePlaygroundSync</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">));</span><br/><span class="hl-1"> } </span><span class="hl-9">catch</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
291
312
  </code></pre>
292
313
 
293
314
  <a href="#修复-5" id="修复-5" style="color: inherit; text-decoration: none;">
@@ -301,37 +322,37 @@
301
322
  <h2>v0.9.151</h2>
302
323
  </a>
303
324
 
304
- <a href="#新增-9" id="新增-9" style="color: inherit; text-decoration: none;">
325
+ <a href="#新增-10" id="新增-10" style="color: inherit; text-decoration: none;">
305
326
  <h3>新增</h3>
306
327
  </a>
307
328
  <ul>
308
329
  <li>新增支持打开<code>csv</code>类型文件</li>
309
330
  <li>获取测试用例接口<code>getUnitTestFun</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
310
331
  </ul>
311
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-9">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">getUnitTestFun</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">catch</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
332
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-9">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">getUnitTestFun</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">catch</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
312
333
  </code></pre>
313
334
  <ul>
314
335
  <li>新增获取运行测试用例接口<code>runUnitTestByFilePath</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
315
336
  </ul>
316
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-9">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">runUnitTestByFilePath</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">fileKey:</span><span class="hl-0"> </span><span class="hl-2">&#39;sum.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">outputConsole:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">consoleText:</span><span class="hl-0"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">runMode:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">runId:</span><span class="hl-0"> </span><span class="hl-5">uuidv4</span><span class="hl-0">(),</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">catch</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
337
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-9">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">runUnitTestByFilePath</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">fileKey:</span><span class="hl-1"> </span><span class="hl-5">&#39;sum.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">outputConsole:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">consoleText:</span><span class="hl-1"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">runMode:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">runId:</span><span class="hl-1"> </span><span class="hl-2">uuidv4</span><span class="hl-1">(),</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">catch</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
317
338
  </code></pre>
318
339
  <ul>
319
340
  <li>新增停止运行测试用例接口<code>stopUnitTest</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
320
341
  </ul>
321
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-9">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">stopUnitTest</span><span class="hl-0">(</span><span class="hl-1">runId</span><span class="hl-0">); </span><span class="hl-4">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">catch</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
342
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-9">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">stopUnitTest</span><span class="hl-1">(</span><span class="hl-3">runId</span><span class="hl-1">); </span><span class="hl-4">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">catch</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
322
343
  </code></pre>
323
344
  <ul>
324
345
  <li>新增运行<code>CMD</code>接口<code>runCmd</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
325
346
  </ul>
326
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-9">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">runCmd</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">runId:</span><span class="hl-0"> </span><span class="hl-5">uuidv4</span><span class="hl-0">(),</span><br/><span class="hl-0"> </span><span class="hl-1">cmd:</span><span class="hl-0"> </span><span class="hl-2">&#39;test&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> }); </span><span class="hl-4">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">catch</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
347
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-9">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">runCmd</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">runId:</span><span class="hl-1"> </span><span class="hl-2">uuidv4</span><span class="hl-1">(),</span><br/><span class="hl-1"> </span><span class="hl-3">cmd:</span><span class="hl-1"> </span><span class="hl-5">&#39;test&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> }); </span><span class="hl-4">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">catch</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
327
348
  </code></pre>
328
349
  <ul>
329
350
  <li>新增停止运行<code>CMD</code>接口<code>stopRunCmd</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
330
351
  </ul>
331
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-9">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">stopUnitTest</span><span class="hl-0">(</span><span class="hl-1">runId</span><span class="hl-0">); </span><span class="hl-4">// runCmd 传递的runId</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">catch</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
352
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-9">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">stopUnitTest</span><span class="hl-1">(</span><span class="hl-3">runId</span><span class="hl-1">); </span><span class="hl-4">// runCmd 传递的runId</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">catch</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
332
353
  </code></pre>
333
354
 
334
- <a href="#优化-7" id="优化-7" style="color: inherit; text-decoration: none;">
355
+ <a href="#优化-8" id="优化-8" style="color: inherit; text-decoration: none;">
335
356
  <h3>优化</h3>
336
357
  </a>
337
358
  <ul>
@@ -361,26 +382,26 @@
361
382
  <h2>v0.9.149</h2>
362
383
  </a>
363
384
 
364
- <a href="#新增-10" id="新增-10" style="color: inherit; text-decoration: none;">
385
+ <a href="#新增-11" id="新增-11" style="color: inherit; text-decoration: none;">
365
386
  <h3>新增</h3>
366
387
  </a>
367
388
  <ul>
368
389
  <li>新增业务方注入日志上报方法<code>customLog</code></li>
369
390
  </ul>
370
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-1">customLog</span><span class="hl-0">: (</span><span class="hl-1">level</span><span class="hl-0">: </span><span class="hl-8">string</span><span class="hl-0">, </span><span class="hl-1">args</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">log</span><span class="hl-0"> = </span><span class="hl-1">console</span><span class="hl-0">[</span><span class="hl-1">level</span><span class="hl-0">];</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">log</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">`[customLog][</span><span class="hl-3">${</span><span class="hl-1">level</span><span class="hl-3">}</span><span class="hl-2">]`</span><span class="hl-0">, ...</span><span class="hl-1">args</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> });</span>
391
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-3">customLog</span><span class="hl-1">: (</span><span class="hl-3">level</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">, </span><span class="hl-3">args</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">log</span><span class="hl-1"> = </span><span class="hl-3">console</span><span class="hl-1">[</span><span class="hl-3">level</span><span class="hl-1">];</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">log</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">`[customLog][</span><span class="hl-0">${</span><span class="hl-3">level</span><span class="hl-0">}</span><span class="hl-5">]`</span><span class="hl-1">, ...</span><span class="hl-3">args</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> });</span>
371
392
  </code></pre>
372
393
  <ul>
373
394
  <li>新增<code>promisify</code> 接口<code>appendCustomizeFrameDataSync</code></li>
374
395
  </ul>
375
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0">: </span><span class="hl-8">any</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">appendCustomizeFrameDataSync</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;startQuestion&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">value:</span><span class="hl-0"> </span><span class="hl-1">activeId</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">uuid</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
396
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">: </span><span class="hl-8">any</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">appendCustomizeFrameDataSync</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;startQuestion&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">value:</span><span class="hl-1"> </span><span class="hl-3">activeId</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">uuid</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
376
397
  </code></pre>
377
398
  <ul>
378
399
  <li>新增<code>promisify</code> 接口<code>preparePlaybackSync</code></li>
379
400
  </ul>
380
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">.</span><span class="hl-5">preparePlaybackSync</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">info</span><span class="hl-0">(</span><span class="hl-2">&#39;通过同步事件收到回放数据&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setQuestionsData</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">questionsData</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">total</span><span class="hl-0"> &gt; </span><span class="hl-6">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-5">setPlayable</span><span class="hl-0">(</span><span class="hl-3">true</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setPlaybackDuration</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">end</span><span class="hl-0"> - </span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">start</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span>
401
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">.</span><span class="hl-2">preparePlaybackSync</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">info</span><span class="hl-1">(</span><span class="hl-5">&#39;通过同步事件收到回放数据&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setQuestionsData</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">questionsData</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">total</span><span class="hl-1"> &gt; </span><span class="hl-6">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-2">setPlayable</span><span class="hl-1">(</span><span class="hl-0">true</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setPlaybackDuration</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">end</span><span class="hl-1"> - </span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">start</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span>
381
402
  </code></pre>
382
403
 
383
- <a href="#优化-8" id="优化-8" style="color: inherit; text-decoration: none;">
404
+ <a href="#优化-9" id="优化-9" style="color: inherit; text-decoration: none;">
384
405
  <h3>优化</h3>
385
406
  </a>
386
407
  <ul>
@@ -399,19 +420,19 @@
399
420
  <h2>v0.9.148</h2>
400
421
  </a>
401
422
 
402
- <a href="#新增-11" id="新增-11" style="color: inherit; text-decoration: none;">
423
+ <a href="#新增-12" id="新增-12" style="color: inherit; text-decoration: none;">
403
424
  <h3>新增</h3>
404
425
  </a>
405
426
  <ul>
406
427
  <li>新增<code>SDK</code>初始化失败事件<code>initError</code></li>
407
428
  </ul>
408
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">InitError</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-2">&#39;初始化SDK失败,请刷新页面重试:&#39;</span><span class="hl-0"> + </span><span class="hl-1">payload</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ...</span>
429
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">InitError</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-5">&#39;初始化SDK失败,请刷新页面重试:&#39;</span><span class="hl-1"> + </span><span class="hl-3">payload</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> ...</span>
409
430
  </code></pre>
410
431
  <ul>
411
432
  <li>新增针对切题场景<code>IDEServer</code>底层架构优化</li>
412
433
  </ul>
413
434
 
414
- <a href="#优化-9" id="优化-9" style="color: inherit; text-decoration: none;">
435
+ <a href="#优化-10" id="优化-10" style="color: inherit; text-decoration: none;">
415
436
  <h3>优化</h3>
416
437
  </a>
417
438
  <ul>
@@ -425,19 +446,19 @@
425
446
  <h2>v0.9.146</h2>
426
447
  </a>
427
448
 
428
- <a href="#新增-12" id="新增-12" style="color: inherit; text-decoration: none;">
449
+ <a href="#新增-13" id="新增-13" style="color: inherit; text-decoration: none;">
429
450
  <h3>新增</h3>
430
451
  </a>
431
452
  <ul>
432
453
  <li>新增支持<code>Editor</code> <code>placeholder</code>功能,支持配置多语言,配置全局默认的, 配置指定文件路径的, 支持配置<code>Dom</code>元素</li>
433
454
  </ul>
434
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-5">getDom</span><span class="hl-0"> = (</span><span class="hl-1">lan</span><span class="hl-0">: </span><span class="hl-8">I18nLanguageType</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dom</span><span class="hl-0"> = </span><span class="hl-1">document</span><span class="hl-0">.</span><span class="hl-5">createElement</span><span class="hl-0">(</span><span class="hl-2">&#39;div&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">text</span><span class="hl-0"> =</span><br/><span class="hl-0"> </span><span class="hl-1">lan</span><span class="hl-0"> === </span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><br/><span class="hl-0"> ? </span><span class="hl-2">&#39;请在此输入你的代码&#39;</span><br/><span class="hl-0"> : </span><span class="hl-2">&#39;Please input your answer at here&#39;</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">dom</span><span class="hl-0">.</span><span class="hl-1">textContent</span><span class="hl-0"> = </span><span class="hl-1">text</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">dom</span><span class="hl-0">.</span><span class="hl-5">setAttribute</span><span class="hl-0">(</span><span class="hl-2">&#39;style&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;color:red;font-size:24px&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> </span><span class="hl-1">dom</span><span class="hl-0">;</span><br/><span class="hl-0"> };</span><br/><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-10">container</span><span class="hl-0">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">item</span><span class="hl-0">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-10">defaultPlaceholder</span><span class="hl-0">: {</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0">]: </span><span class="hl-2">&#39;默认的Placeholder 内容&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">EN</span><span class="hl-0">]: </span><span class="hl-2">&#39;Default placeholder text&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-10">placeholders</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-5">getDom</span><span class="hl-0">(</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-5">getDom</span><span class="hl-0">(</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">EN</span><span class="hl-0">),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;1.c&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;请在这里输入你的代码-1.c&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;Please input your code at here for 1.c&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;root/2.c&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;请在这里输入你的代码-root/2.c&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-1">]:</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;Please input your code at here for roo/2.c&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ....</span>
455
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-2">getDom</span><span class="hl-1"> = (</span><span class="hl-3">lan</span><span class="hl-1">: </span><span class="hl-8">I18nLanguageType</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dom</span><span class="hl-1"> = </span><span class="hl-3">document</span><span class="hl-1">.</span><span class="hl-2">createElement</span><span class="hl-1">(</span><span class="hl-5">&#39;div&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">text</span><span class="hl-1"> =</span><br/><span class="hl-1"> </span><span class="hl-3">lan</span><span class="hl-1"> === </span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><br/><span class="hl-1"> ? </span><span class="hl-5">&#39;请在此输入你的代码&#39;</span><br/><span class="hl-1"> : </span><span class="hl-5">&#39;Please input your answer at here&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">dom</span><span class="hl-1">.</span><span class="hl-3">textContent</span><span class="hl-1"> = </span><span class="hl-3">text</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">dom</span><span class="hl-1">.</span><span class="hl-2">setAttribute</span><span class="hl-1">(</span><span class="hl-5">&#39;style&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;color:red;font-size:24px&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> </span><span class="hl-3">dom</span><span class="hl-1">;</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-10">container</span><span class="hl-1">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">item</span><span class="hl-1">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-10">defaultPlaceholder</span><span class="hl-1">: {</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1">]: </span><span class="hl-5">&#39;默认的Placeholder 内容&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">EN</span><span class="hl-1">]: </span><span class="hl-5">&#39;Default placeholder text&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-10">placeholders</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-2">getDom</span><span class="hl-1">(</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-2">getDom</span><span class="hl-1">(</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">EN</span><span class="hl-1">),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;1.c&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;请在这里输入你的代码-1.c&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;Please input your code at here for 1.c&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;root/2.c&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;请在这里输入你的代码-root/2.c&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-3">]:</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;Please input your code at here for roo/2.c&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ....</span>
435
456
  </code></pre>
436
457
  <ul>
437
458
  <li>新增文件树支持<code>F2</code>快捷键重命名</li>
438
459
  </ul>
439
460
 
440
- <a href="#优化-10" id="优化-10" style="color: inherit; text-decoration: none;">
461
+ <a href="#优化-11" id="优化-11" style="color: inherit; text-decoration: none;">
441
462
  <h3>优化</h3>
442
463
  </a>
443
464
  <ul>
@@ -448,16 +469,16 @@
448
469
  <h2>v0.9.145</h2>
449
470
  </a>
450
471
 
451
- <a href="#新增-13" id="新增-13" style="color: inherit; text-decoration: none;">
472
+ <a href="#新增-14" id="新增-14" style="color: inherit; text-decoration: none;">
452
473
  <h3>新增</h3>
453
474
  </a>
454
475
  <ul>
455
476
  <li>新增选择代码右击菜单功能(目前只支持:【implement,update】两种菜单Action):</li>
456
477
  </ul>
457
- <pre><code class="language-ts"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-10">container</span><span class="hl-0">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">item</span><span class="hl-0">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">showHiddenCode</span><span class="hl-0">, </span><span class="hl-4">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-0"> </span><span class="hl-1">freezeCode</span><span class="hl-0">, </span><span class="hl-4">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-0"> </span><span class="hl-10">contextMenu</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-10">title</span><span class="hl-0">: </span><span class="hl-2">&#39;ChatGPT&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">handleSelect</span><span class="hl-0">: (</span><span class="hl-1">e</span><span class="hl-0">, </span><span class="hl-1">callback</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">info</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">id</span><span class="hl-0"> = </span><span class="hl-8">Math</span><span class="hl-0">.</span><span class="hl-5">floor</span><span class="hl-0">(</span><span class="hl-8">Math</span><span class="hl-0">.</span><span class="hl-5">random</span><span class="hl-0">() * </span><span class="hl-6">1000</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">callback</span><span class="hl-0">?.({</span><br/><span class="hl-0"> </span><span class="hl-1">extralAction:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">replaceSelection:</span><span class="hl-0"> [</span><span class="hl-2">&#39;业务方需要替换或者追加的代码&#39;</span><span class="hl-0">]</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-10">items</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;implement&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">text:</span><span class="hl-0"> </span><span class="hl-2">&#39;生成代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">noActionCheck:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">, </span><span class="hl-4">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-0"> </span><span class="hl-1">codeAction:</span><span class="hl-0"> </span><span class="hl-2">&#39;append&#39;</span><span class="hl-0">, </span><span class="hl-4">// 代码追加的方式: append, replace,</span><br/><span class="hl-0"> </span><span class="hl-1">icon:</span><span class="hl-0"> </span><span class="hl-2">&#39;dao42__icon--create&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;update&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">text:</span><span class="hl-0"> </span><span class="hl-2">&#39;解析执行&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">noActionCheck:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">, </span><span class="hl-4">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-0"> </span><span class="hl-1">codeAction:</span><span class="hl-0"> </span><span class="hl-2">&#39;replace&#39;</span><span class="hl-0">, </span><span class="hl-4">// 代码追加的方式: append, replace,</span><br/><span class="hl-0"> </span><span class="hl-1">icon:</span><span class="hl-0"> </span><span class="hl-2">&#39;dao42__icon--fix&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0"> }</span><br/><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span>
478
+ <pre><code class="language-ts"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-10">container</span><span class="hl-1">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">item</span><span class="hl-1">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">showHiddenCode</span><span class="hl-1">, </span><span class="hl-4">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-1"> </span><span class="hl-3">freezeCode</span><span class="hl-1">, </span><span class="hl-4">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-1"> </span><span class="hl-10">contextMenu</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-10">title</span><span class="hl-1">: </span><span class="hl-5">&#39;ChatGPT&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">handleSelect</span><span class="hl-1">: (</span><span class="hl-3">e</span><span class="hl-1">, </span><span class="hl-3">callback</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">info</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">id</span><span class="hl-1"> = </span><span class="hl-8">Math</span><span class="hl-1">.</span><span class="hl-2">floor</span><span class="hl-1">(</span><span class="hl-8">Math</span><span class="hl-1">.</span><span class="hl-2">random</span><span class="hl-1">() * </span><span class="hl-6">1000</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">callback</span><span class="hl-1">?.({</span><br/><span class="hl-1"> </span><span class="hl-3">extralAction:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">replaceSelection:</span><span class="hl-1"> [</span><span class="hl-5">&#39;业务方需要替换或者追加的代码&#39;</span><span class="hl-1">]</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-10">items</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;implement&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">text:</span><span class="hl-1"> </span><span class="hl-5">&#39;生成代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">noActionCheck:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">, </span><span class="hl-4">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-1"> </span><span class="hl-3">codeAction:</span><span class="hl-1"> </span><span class="hl-5">&#39;append&#39;</span><span class="hl-1">, </span><span class="hl-4">// 代码追加的方式: append, replace,</span><br/><span class="hl-1"> </span><span class="hl-3">icon:</span><span class="hl-1"> </span><span class="hl-5">&#39;dao42__icon--create&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;update&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">text:</span><span class="hl-1"> </span><span class="hl-5">&#39;解析执行&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">noActionCheck:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">, </span><span class="hl-4">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-1"> </span><span class="hl-3">codeAction:</span><span class="hl-1"> </span><span class="hl-5">&#39;replace&#39;</span><span class="hl-1">, </span><span class="hl-4">// 代码追加的方式: append, replace,</span><br/><span class="hl-1"> </span><span class="hl-3">icon:</span><span class="hl-1"> </span><span class="hl-5">&#39;dao42__icon--fix&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1"> }</span><br/><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span>
458
479
  </code></pre>
459
480
 
460
- <a href="#优化-11" id="优化-11" style="color: inherit; text-decoration: none;">
481
+ <a href="#优化-12" id="优化-12" style="color: inherit; text-decoration: none;">
461
482
  <h3>优化</h3>
462
483
  </a>
463
484
  <ul>
@@ -479,19 +500,19 @@
479
500
  <h2>v0.9.143</h2>
480
501
  </a>
481
502
 
482
- <a href="#新增-14" id="新增-14" style="color: inherit; text-decoration: none;">
503
+ <a href="#新增-15" id="新增-15" style="color: inherit; text-decoration: none;">
483
504
  <h3>新增</h3>
484
505
  </a>
485
506
  <ul>
486
507
  <li>新增批量修改答题区Flag属性接口(并支持修改历史数据)</li>
487
508
  </ul>
488
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">updateAreaFlags</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-0">, </span><span class="hl-4">// 指定文件ID</span><br/><span class="hl-0"> </span><span class="hl-1">ids:</span><span class="hl-0"> [ </span><span class="hl-4">// 要修改的ID的集合</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">id:</span><span class="hl-0"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-4">// 答题区域的ID</span><br/><span class="hl-0"> </span><span class="hl-1">flag:</span><span class="hl-0"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-4">// 新的Flag值</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">id:</span><span class="hl-0"> </span><span class="hl-2">&#39;2&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">flag:</span><span class="hl-0"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0">});</span>
509
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">updateAreaFlags</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-1">, </span><span class="hl-4">// 指定文件ID</span><br/><span class="hl-1"> </span><span class="hl-3">ids:</span><span class="hl-1"> [ </span><span class="hl-4">// 要修改的ID的集合</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">id:</span><span class="hl-1"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-4">// 答题区域的ID</span><br/><span class="hl-1"> </span><span class="hl-3">flag:</span><span class="hl-1"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-4">// 新的Flag值</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">id:</span><span class="hl-1"> </span><span class="hl-5">&#39;2&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">flag:</span><span class="hl-1"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1">});</span>
489
510
  </code></pre>
490
511
  <ul>
491
512
  <li>新增<code>IDEServer</code>配置日志输出级别</li>
492
513
  </ul>
493
514
 
494
- <a href="#优化-12" id="优化-12" style="color: inherit; text-decoration: none;">
515
+ <a href="#优化-13" id="优化-13" style="color: inherit; text-decoration: none;">
495
516
  <h3>优化</h3>
496
517
  </a>
497
518
  <ul>
@@ -504,7 +525,7 @@
504
525
  <h2>v0.9.142</h2>
505
526
  </a>
506
527
 
507
- <a href="#优化-13" id="优化-13" style="color: inherit; text-decoration: none;">
528
+ <a href="#优化-14" id="优化-14" style="color: inherit; text-decoration: none;">
508
529
  <h3>优化</h3>
509
530
  </a>
510
531
  <ul>
@@ -517,7 +538,7 @@
517
538
  <h2>v0.9.141</h2>
518
539
  </a>
519
540
 
520
- <a href="#新增-15" id="新增-15" style="color: inherit; text-decoration: none;">
541
+ <a href="#新增-16" id="新增-16" style="color: inherit; text-decoration: none;">
521
542
  <h3>新增</h3>
522
543
  </a>
523
544
  <ul>
@@ -525,10 +546,10 @@
525
546
  <li>新增记录哪些文件进行了修改, 对应的文件名称<code>.1024file</code></li>
526
547
  <li>新增回放数据,标记对应的时间范围为空白时</li>
527
548
  </ul>
528
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">//</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">noFrameSpan</span><span class="hl-0">: </span><span class="hl-6">2</span><span class="hl-0">, </span><span class="hl-4">// &gt;=2S 则标记出来,单位为s</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">// PlaybackInfo 事件,会返回一个 whiteFrames数组</span>
549
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">//</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">noFrameSpan</span><span class="hl-1">: </span><span class="hl-6">2</span><span class="hl-1">, </span><span class="hl-4">// &gt;=2S 则标记出来,单位为s</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-4">// PlaybackInfo 事件,会返回一个 whiteFrames数组</span>
529
550
  </code></pre>
530
551
 
531
- <a href="#优化-14" id="优化-14" style="color: inherit; text-decoration: none;">
552
+ <a href="#优化-15" id="优化-15" style="color: inherit; text-decoration: none;">
532
553
  <h3>优化</h3>
533
554
  </a>
534
555
  <ul>
@@ -544,7 +565,7 @@
544
565
  <h2>v0.9.140</h2>
545
566
  </a>
546
567
 
547
- <a href="#优化-15" id="优化-15" style="color: inherit; text-decoration: none;">
568
+ <a href="#优化-16" id="优化-16" style="color: inherit; text-decoration: none;">
548
569
  <h3>优化</h3>
549
570
  </a>
550
571
  <ul>
@@ -555,7 +576,7 @@
555
576
  <h2>v0.9.139</h2>
556
577
  </a>
557
578
 
558
- <a href="#优化-16" id="优化-16" style="color: inherit; text-decoration: none;">
579
+ <a href="#优化-17" id="优化-17" style="color: inherit; text-decoration: none;">
559
580
  <h3>优化</h3>
560
581
  </a>
561
582
  <ul>
@@ -589,7 +610,7 @@
589
610
  <h2>v0.9.136</h2>
590
611
  </a>
591
612
 
592
- <a href="#优化-17" id="优化-17" style="color: inherit; text-decoration: none;">
613
+ <a href="#优化-18" id="优化-18" style="color: inherit; text-decoration: none;">
593
614
  <h3>优化</h3>
594
615
  </a>
595
616
  <ul>
@@ -616,13 +637,13 @@
616
637
  <h2>v0.9.134</h2>
617
638
  </a>
618
639
 
619
- <a href="#新增-16" id="新增-16" style="color: inherit; text-decoration: none;">
640
+ <a href="#新增-17" id="新增-17" style="color: inherit; text-decoration: none;">
620
641
  <h3>新增</h3>
621
642
  </a>
622
643
  <ul>
623
644
  <li>暴露debug状态信息</li>
624
645
  </ul>
625
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Debug</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">// payload.debugStatus状态信息</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
646
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Debug</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-4">// payload.debugStatus状态信息</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
626
647
  </code></pre>
627
648
  <ul>
628
649
  <li>debug面板添加启动中dot</li>
@@ -635,7 +656,7 @@
635
656
  <li>debug运行中离线重连后重置debug相关数据</li>
636
657
  </ul>
637
658
 
638
- <a href="#优化-18" id="优化-18" style="color: inherit; text-decoration: none;">
659
+ <a href="#优化-19" id="优化-19" style="color: inherit; text-decoration: none;">
639
660
  <h3>优化</h3>
640
661
  </a>
641
662
  <ul>
@@ -646,7 +667,7 @@
646
667
  <h2>v0.9.133</h2>
647
668
  </a>
648
669
 
649
- <a href="#新增-17" id="新增-17" style="color: inherit; text-decoration: none;">
670
+ <a href="#新增-18" id="新增-18" style="color: inherit; text-decoration: none;">
650
671
  <h3>新增</h3>
651
672
  </a>
652
673
  <ul>
@@ -662,7 +683,7 @@
662
683
  <li>修复编辑器选中内容的首行高亮问题</li>
663
684
  </ul>
664
685
 
665
- <a href="#优化-19" id="优化-19" style="color: inherit; text-decoration: none;">
686
+ <a href="#优化-20" id="优化-20" style="color: inherit; text-decoration: none;">
666
687
  <h3>优化</h3>
667
688
  </a>
668
689
  <ul>
@@ -681,7 +702,7 @@
681
702
  <h2>v0.9.132</h2>
682
703
  </a>
683
704
 
684
- <a href="#优化-20" id="优化-20" style="color: inherit; text-decoration: none;">
705
+ <a href="#优化-21" id="优化-21" style="color: inherit; text-decoration: none;">
685
706
  <h3>优化</h3>
686
707
  </a>
687
708
  <ul>
@@ -693,21 +714,21 @@
693
714
  <h2>v0.9.131</h2>
694
715
  </a>
695
716
 
696
- <a href="#优化-21" id="优化-21" style="color: inherit; text-decoration: none;">
717
+ <a href="#优化-22" id="优化-22" style="color: inherit; text-decoration: none;">
697
718
  <h3>优化</h3>
698
719
  </a>
699
720
  <ul>
700
721
  <li>优化debug(开始/停止icon颜色、点击堆栈项进行跳转、toolTip文案/背景修改、修复断点状态、优化获取当前文件断点数据方法)</li>
701
722
  </ul>
702
723
 
703
- <a href="#新增-18" id="新增-18" style="color: inherit; text-decoration: none;">
724
+ <a href="#新增-19" id="新增-19" style="color: inherit; text-decoration: none;">
704
725
  <h3>新增</h3>
705
726
  </a>
706
727
  <ul>
707
728
  <li>新增realTimeRefresh参数文件有更新是否通知MQ(非运行状态时)</li>
708
729
  <li>新增insertCodeByCursor方法,根据光标位置插入数据</li>
709
730
  </ul>
710
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">insertCodeByCursor</span><span class="hl-0">(</span><span class="hl-1">insertCode</span><span class="hl-0">);</span><br/><br/><span class="hl-0"> </span><span class="hl-4">// 插入代码</span><br/><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-5">insertCode</span><span class="hl-0"> = (</span><br/><span class="hl-0"> </span><span class="hl-1">line</span><span class="hl-0">: </span><span class="hl-8">number</span><span class="hl-0">, </span><span class="hl-4">// line为当前光标聚焦行</span><br/><span class="hl-0"> </span><span class="hl-1">insercodeCallback</span><span class="hl-0">: </span><span class="hl-8">IInsertCodeInternalFn</span><span class="hl-0">,</span><br/><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">// 计算pos</span><br/><span class="hl-0"> </span><span class="hl-5">insercodeCallback</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">line:</span><span class="hl-0"> </span><span class="hl-1">line</span><span class="hl-0"> + </span><span class="hl-1">offsetLine</span><span class="hl-0">, </span><span class="hl-4">// offsetLine为光标偏移量</span><br/><span class="hl-0"> </span><span class="hl-1">actions:</span><span class="hl-0"> </span><span class="hl-2">&#39;current&#39;</span><span class="hl-0">, </span><span class="hl-4">// 代码插入的位置,当前行首(start) | 当前位置(current) | 当前行尾(end)</span><br/><span class="hl-0"> </span><span class="hl-1">text:</span><span class="hl-0"> </span><span class="hl-5">encodeURI</span><span class="hl-0">(</span><span class="hl-1">insertCodeText</span><span class="hl-0">),</span><br/><span class="hl-0"> });</span><br/><span class="hl-0">};</span>
731
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">insertCodeByCursor</span><span class="hl-1">(</span><span class="hl-3">insertCode</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-4">// 插入代码</span><br/><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-2">insertCode</span><span class="hl-1"> = (</span><br/><span class="hl-1"> </span><span class="hl-3">line</span><span class="hl-1">: </span><span class="hl-8">number</span><span class="hl-1">, </span><span class="hl-4">// line为当前光标聚焦行</span><br/><span class="hl-1"> </span><span class="hl-3">insercodeCallback</span><span class="hl-1">: </span><span class="hl-8">IInsertCodeInternalFn</span><span class="hl-1">,</span><br/><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// 计算pos</span><br/><span class="hl-1"> </span><span class="hl-2">insercodeCallback</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">line:</span><span class="hl-1"> </span><span class="hl-3">line</span><span class="hl-1"> + </span><span class="hl-3">offsetLine</span><span class="hl-1">, </span><span class="hl-4">// offsetLine为光标偏移量</span><br/><span class="hl-1"> </span><span class="hl-3">actions:</span><span class="hl-1"> </span><span class="hl-5">&#39;current&#39;</span><span class="hl-1">, </span><span class="hl-4">// 代码插入的位置,当前行首(start) | 当前位置(current) | 当前行尾(end)</span><br/><span class="hl-1"> </span><span class="hl-3">text:</span><span class="hl-1"> </span><span class="hl-2">encodeURI</span><span class="hl-1">(</span><span class="hl-3">insertCodeText</span><span class="hl-1">),</span><br/><span class="hl-1"> });</span><br/><span class="hl-1">};</span>
711
732
  </code></pre>
712
733
 
713
734
  <a href="#修复-15" id="修复-15" style="color: inherit; text-decoration: none;">
@@ -726,7 +747,7 @@
726
747
  <h2>v0.9.130</h2>
727
748
  </a>
728
749
 
729
- <a href="#优化-22" id="优化-22" style="color: inherit; text-decoration: none;">
750
+ <a href="#优化-23" id="优化-23" style="color: inherit; text-decoration: none;">
730
751
  <h3>优化</h3>
731
752
  </a>
732
753
  <ul>
@@ -739,13 +760,13 @@
739
760
  <h2>v0.9.129</h2>
740
761
  </a>
741
762
 
742
- <a href="#新增-19" id="新增-19" style="color: inherit; text-decoration: none;">
763
+ <a href="#新增-20" id="新增-20" style="color: inherit; text-decoration: none;">
743
764
  <h2>新增</h2>
744
765
  </a>
745
766
  <ul>
746
767
  <li>新增<code>XtermInfo</code>事件,<code>terminal</code>或者<code>console</code>有更新进行派发</li>
747
768
  </ul>
748
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">XtermInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> console.log(payload); </span><span class="hl-4">// 数据为IXtermInfo</span><br/><span class="hl-0"> break;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
769
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">XtermInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> console.log(payload); </span><span class="hl-4">// 数据为IXtermInfo</span><br/><span class="hl-1"> break;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
749
770
  </code></pre>
750
771
 
751
772
  <a href="#修复-16" id="修复-16" style="color: inherit; text-decoration: none;">
@@ -760,7 +781,7 @@
760
781
  <h2>v0.9.128</h2>
761
782
  </a>
762
783
 
763
- <a href="#优化-23" id="优化-23" style="color: inherit; text-decoration: none;">
784
+ <a href="#优化-24" id="优化-24" style="color: inherit; text-decoration: none;">
764
785
  <h2>优化</h2>
765
786
  </a>
766
787
  <ul>
@@ -773,23 +794,23 @@
773
794
  <h2>v0.9.127</h2>
774
795
  </a>
775
796
 
776
- <a href="#新增-20" id="新增-20" style="color: inherit; text-decoration: none;">
797
+ <a href="#新增-21" id="新增-21" style="color: inherit; text-decoration: none;">
777
798
  <h2>新增</h2>
778
799
  </a>
779
800
  <ul>
780
801
  <li>新增强制刷新文件缓存的接口</li>
781
802
  </ul>
782
- <pre><code class="language-ts"><span class="hl-1">daoPaas</span><span class="hl-0">.</span><span class="hl-5">forceRefreshFile</span><span class="hl-0">(</span><span class="hl-1">path</span><span class="hl-0">?: </span><span class="hl-1">string</span><span class="hl-0">) </span><span class="hl-4">// path 默认是当前Editor打开的文件</span>
803
+ <pre><code class="language-ts"><span class="hl-3">daoPaas</span><span class="hl-1">.</span><span class="hl-2">forceRefreshFile</span><span class="hl-1">(</span><span class="hl-3">path</span><span class="hl-1">?: </span><span class="hl-3">string</span><span class="hl-1">) </span><span class="hl-4">// path 默认是当前Editor打开的文件</span>
783
804
  </code></pre>
784
805
  <ul>
785
806
  <li>新增触发聚焦答题区事件</li>
786
807
  </ul>
787
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0">...</span><br/><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">AnswerAreaInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> console.log(payload.foucusId); </span><span class="hl-4">// 当焦点在答题区内foucusId为答题区id、不在则为空字符</span><br/><span class="hl-0"> break;</span><br/><span class="hl-0">}</span><br/><span class="hl-0">})</span>
808
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1">...</span><br/><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">AnswerAreaInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> console.log(payload.foucusId); </span><span class="hl-4">// 当焦点在答题区内foucusId为答题区id、不在则为空字符</span><br/><span class="hl-1"> break;</span><br/><span class="hl-1">}</span><br/><span class="hl-1">})</span>
788
809
  </code></pre>
789
810
  <ul>
790
811
  <li>新增答题区新增<code>overrideItems</code>和<code>handleOverride</code>参数,光标选择区域包含答题区或在答题区内触发操作。如没有设置<code>overrideItems</code>右击菜单默认为items</li>
791
812
  </ul>
792
- <pre><code class="language-ts"><span class="hl-10">contextMenu</span><span class="hl-0">:{</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-10">overrideItems</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;delete&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">text:</span><span class="hl-0"> </span><span class="hl-2">&#39;删除答题区&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0"> </span><span class="hl-10">handleOverride</span><span class="hl-0">: (</span><span class="hl-1">params</span><span class="hl-0">: </span><span class="hl-8">IOverrideParams</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;params: &#39;</span><span class="hl-0">, </span><span class="hl-1">params</span><span class="hl-0">); </span><span class="hl-4">//执行对应删除操作</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">}</span>
813
+ <pre><code class="language-ts"><span class="hl-10">contextMenu</span><span class="hl-1">:{</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-10">overrideItems</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;delete&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">text:</span><span class="hl-1"> </span><span class="hl-5">&#39;删除答题区&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1"> </span><span class="hl-10">handleOverride</span><span class="hl-1">: (</span><span class="hl-3">params</span><span class="hl-1">: </span><span class="hl-8">IOverrideParams</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;params: &#39;</span><span class="hl-1">, </span><span class="hl-3">params</span><span class="hl-1">); </span><span class="hl-4">//执行对应删除操作</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">}</span>
793
814
  </code></pre>
794
815
 
795
816
  <a href="#修复-17" id="修复-17" style="color: inherit; text-decoration: none;">
@@ -806,7 +827,7 @@
806
827
  <h2>v0.9.126</h2>
807
828
  </a>
808
829
 
809
- <a href="#新增-21" id="新增-21" style="color: inherit; text-decoration: none;">
830
+ <a href="#新增-22" id="新增-22" style="color: inherit; text-decoration: none;">
810
831
  <h2>新增</h2>
811
832
  </a>
812
833
  <ul>
@@ -814,7 +835,7 @@
814
835
  <li>新增IDEServer 单元测试</li>
815
836
  </ul>
816
837
 
817
- <a href="#优化-24" id="优化-24" style="color: inherit; text-decoration: none;">
838
+ <a href="#优化-25" id="优化-25" style="color: inherit; text-decoration: none;">
818
839
  <h2>优化</h2>
819
840
  </a>
820
841
  <ul>
@@ -841,14 +862,14 @@
841
862
  <h2>v0.9.125</h2>
842
863
  </a>
843
864
 
844
- <a href="#新增-22" id="新增-22" style="color: inherit; text-decoration: none;">
865
+ <a href="#新增-23" id="新增-23" style="color: inherit; text-decoration: none;">
845
866
  <h3>新增</h3>
846
867
  </a>
847
868
  <ul>
848
869
  <li>新增答题区选中Tooltip操作按钮</li>
849
870
  </ul>
850
871
 
851
- <a href="#优化-25" id="优化-25" style="color: inherit; text-decoration: none;">
872
+ <a href="#优化-26" id="优化-26" style="color: inherit; text-decoration: none;">
852
873
  <h3>优化</h3>
853
874
  </a>
854
875
  <ul>
@@ -868,32 +889,32 @@
868
889
  <h2>v0.9.124</h2>
869
890
  </a>
870
891
 
871
- <a href="#新增-23" id="新增-23" style="color: inherit; text-decoration: none;">
892
+ <a href="#新增-24" id="新增-24" style="color: inherit; text-decoration: none;">
872
893
  <h3>新增</h3>
873
894
  </a>
874
895
  <ul>
875
896
  <li>新增<code>Markdown</code>文件支持插入项目内图片路径</li>
876
897
  <li>新增<code>Editor</code> 头部支持注入插件功能</li>
877
898
  </ul>
878
- <pre><code class="language-ts"><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-10">container</span><span class="hl-0">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">item</span><span class="hl-0">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-10">fileHeader</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">className:</span><span class="hl-0"> </span><span class="hl-2">&#39;custom-className&#39;</span><span class="hl-0">, </span><span class="hl-4">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-1">icon:</span><span class="hl-0"> { </span><span class="hl-4">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-1">className:</span><span class="hl-0"> </span><span class="hl-2">&#39;dao42__icon--warning-circle&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">tips:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-5">action</span><span class="hl-1">:</span><span class="hl-0"> () </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-2">&#39; IconAction&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">// 业务方自定义的业务行为,可以调用SDK提供的API</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-1">labelAction:</span><span class="hl-0"> </span><span class="hl-3">null</span><span class="hl-0"> </span><span class="hl-9">as</span><span class="hl-0"> </span><span class="hl-8">any</span><span class="hl-0">, </span><span class="hl-4">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-1">label:</span><span class="hl-0"> {</span><span class="hl-4">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;LSP 连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;LSP Connecting&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> ],</span><br/><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span>
899
+ <pre><code class="language-ts"><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-10">container</span><span class="hl-1">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">item</span><span class="hl-1">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-10">fileHeader</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">className:</span><span class="hl-1"> </span><span class="hl-5">&#39;custom-className&#39;</span><span class="hl-1">, </span><span class="hl-4">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-3">icon:</span><span class="hl-1"> { </span><span class="hl-4">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-3">className:</span><span class="hl-1"> </span><span class="hl-5">&#39;dao42__icon--warning-circle&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">tips:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">action</span><span class="hl-3">:</span><span class="hl-1"> () </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-5">&#39; IconAction&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">// 业务方自定义的业务行为,可以调用SDK提供的API</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-3">labelAction:</span><span class="hl-1"> </span><span class="hl-0">null</span><span class="hl-1"> </span><span class="hl-9">as</span><span class="hl-1"> </span><span class="hl-8">any</span><span class="hl-1">, </span><span class="hl-4">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-3">label:</span><span class="hl-1"> {</span><span class="hl-4">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">ZH</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;LSP 连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[I18nLanguageType.</span><span class="hl-7">EN</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;LSP Connecting&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> ],</span><br/><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span>
879
900
  </code></pre>
880
901
  <ul>
881
902
  <li>新增动态修改<code>Editor</code>头部插件接口</li>
882
903
  </ul>
883
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">updateFileHeader</span><span class="hl-0">([...</span><span class="hl-1">fileHeader</span><span class="hl-0">]);</span>
904
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">updateFileHeader</span><span class="hl-1">([...</span><span class="hl-3">fileHeader</span><span class="hl-1">]);</span>
884
905
  </code></pre>
885
906
  <ul>
886
907
  <li>新增答题区域业务方配置答题区Flag属性</li>
887
908
  </ul>
888
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-5">callback</span><span class="hl-0">?.(</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">id</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">flag</span><span class="hl-0">, </span><span class="hl-4">// 业务方在返回ID的时候,同时返回flag 值</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-1">extralAction</span><span class="hl-0">,</span><br/><span class="hl-0">);</span>
909
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-2">callback</span><span class="hl-1">?.(</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">id</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">flag</span><span class="hl-1">, </span><span class="hl-4">// 业务方在返回ID的时候,同时返回flag 值</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-3">extralAction</span><span class="hl-1">,</span><br/><span class="hl-1">);</span>
889
910
  </code></pre>
890
911
  <ul>
891
912
  <li>新增批量修改答题区Flag属性接口</li>
892
913
  </ul>
893
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">updateAreaFlags</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">path:</span><span class="hl-0"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-0">, </span><span class="hl-4">// 指定文件ID</span><br/><span class="hl-0"> </span><span class="hl-1">ids:</span><span class="hl-0"> [ </span><span class="hl-4">// 要修改的ID的集合</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">id:</span><span class="hl-0"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-4">// 答题区域的ID</span><br/><span class="hl-0"> </span><span class="hl-1">flag:</span><span class="hl-0"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-4">// 新的Flag值</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">id:</span><span class="hl-0"> </span><span class="hl-2">&#39;2&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">flag:</span><span class="hl-0"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0">});</span>
914
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">updateAreaFlags</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">path:</span><span class="hl-1"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-1">, </span><span class="hl-4">// 指定文件ID</span><br/><span class="hl-1"> </span><span class="hl-3">ids:</span><span class="hl-1"> [ </span><span class="hl-4">// 要修改的ID的集合</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">id:</span><span class="hl-1"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-4">// 答题区域的ID</span><br/><span class="hl-1"> </span><span class="hl-3">flag:</span><span class="hl-1"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-4">// 新的Flag值</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">id:</span><span class="hl-1"> </span><span class="hl-5">&#39;2&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">flag:</span><span class="hl-1"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1">});</span>
894
915
  </code></pre>
895
916
 
896
- <a href="#优化-26" id="优化-26" style="color: inherit; text-decoration: none;">
917
+ <a href="#优化-27" id="优化-27" style="color: inherit; text-decoration: none;">
897
918
  <h3>优化</h3>
898
919
  </a>
899
920
  <ul>
@@ -921,7 +942,7 @@
921
942
  <li>修复<code>tooltip</code>快速切换子<code>icon</code>元素迅速将鼠标移出元素<code>onMouseLeave</code>不触发问题</li>
922
943
  </ul>
923
944
 
924
- <a href="#优化-27" id="优化-27" style="color: inherit; text-decoration: none;">
945
+ <a href="#优化-28" id="优化-28" style="color: inherit; text-decoration: none;">
925
946
  <h3>优化</h3>
926
947
  </a>
927
948
  <ul>
@@ -934,7 +955,7 @@
934
955
  <h2>v0.9.122</h2>
935
956
  </a>
936
957
 
937
- <a href="#新增-24" id="新增-24" style="color: inherit; text-decoration: none;">
958
+ <a href="#新增-25" id="新增-25" style="color: inherit; text-decoration: none;">
938
959
  <h3>新增</h3>
939
960
  </a>
940
961
  <ul>
@@ -943,7 +964,7 @@
943
964
  <li>新增支持业务方配置多个打开默认文件名称</li>
944
965
  <li>新增自定义执行方法,由业务方携带的配置信息来启动运行</li>
945
966
  </ul>
946
- <pre><code class="language-ts"><span class="hl-4">// 自定义执行,通过业务方携带的配置信息来启动运行</span><br/><span class="hl-4">// tips:而不是通过后端读取.1024配置文件信息</span><br/><span class="hl-0"> </span><span class="hl-5">customExecute</span><span class="hl-0">(</span><span class="hl-1">config</span><span class="hl-0">: </span><span class="hl-1">ICustomExcuteConfig</span><span class="hl-0">): </span><span class="hl-3">void</span><span class="hl-0">;</span>
967
+ <pre><code class="language-ts"><span class="hl-4">// 自定义执行,通过业务方携带的配置信息来启动运行</span><br/><span class="hl-4">// tips:而不是通过后端读取.1024配置文件信息</span><br/><span class="hl-1"> </span><span class="hl-2">customExecute</span><span class="hl-1">(</span><span class="hl-3">config</span><span class="hl-1">: </span><span class="hl-3">ICustomExcuteConfig</span><span class="hl-1">): </span><span class="hl-0">void</span><span class="hl-1">;</span>
947
968
  </code></pre>
948
969
 
949
970
  <a href="#修复-22" id="修复-22" style="color: inherit; text-decoration: none;">
@@ -957,14 +978,14 @@
957
978
  <h2>v0.9.120</h2>
958
979
  </a>
959
980
 
960
- <a href="#新增-25" id="新增-25" style="color: inherit; text-decoration: none;">
981
+ <a href="#新增-26" id="新增-26" style="color: inherit; text-decoration: none;">
961
982
  <h3>新增</h3>
962
983
  </a>
963
984
  <ul>
964
985
  <li>新增支持下载单文件</li>
965
986
  <li><code>editorTabSize</code>属性新增一个值为<code>auto</code>,自动识别文件缩进并且应用于编辑器</li>
966
987
  </ul>
967
- <pre><code class="language-ts"><span class="hl-1">GlobalConfig</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-10">editorTabSize</span><span class="hl-0">: </span><span class="hl-2">&#39;auto&#39;</span><span class="hl-0">|</span><span class="hl-1">number</span><span class="hl-0"> </span><span class="hl-4">// 新增auto,自动识别文件缩进</span><br/><span class="hl-0">}</span>
988
+ <pre><code class="language-ts"><span class="hl-3">GlobalConfig</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-10">editorTabSize</span><span class="hl-1">: </span><span class="hl-5">&#39;auto&#39;</span><span class="hl-1">|</span><span class="hl-3">number</span><span class="hl-1"> </span><span class="hl-4">// 新增auto,自动识别文件缩进</span><br/><span class="hl-1">}</span>
968
989
  </code></pre>
969
990
  <ul>
970
991
  <li>新增限制打开<code>db,db3,sqlite</code>相关文件,并给予提示</li>
@@ -978,7 +999,7 @@
978
999
  <li>修复添加CDN资源后, Editor内容不刷新显示CDN资源内容</li>
979
1000
  </ul>
980
1001
 
981
- <a href="#优化-28" id="优化-28" style="color: inherit; text-decoration: none;">
1002
+ <a href="#优化-29" id="优化-29" style="color: inherit; text-decoration: none;">
982
1003
  <h3>优化</h3>
983
1004
  </a>
984
1005
  <ul>
@@ -989,7 +1010,7 @@
989
1010
  <h2>v0.9.119</h2>
990
1011
  </a>
991
1012
 
992
- <a href="#优化-29" id="优化-29" style="color: inherit; text-decoration: none;">
1013
+ <a href="#优化-30" id="优化-30" style="color: inherit; text-decoration: none;">
993
1014
  <h3>优化</h3>
994
1015
  </a>
995
1016
  <ul>
@@ -1012,16 +1033,16 @@
1012
1033
  <h2>v0.9.117</h2>
1013
1034
  </a>
1014
1035
 
1015
- <a href="#新增-26" id="新增-26" style="color: inherit; text-decoration: none;">
1036
+ <a href="#新增-27" id="新增-27" style="color: inherit; text-decoration: none;">
1016
1037
  <h3>新增</h3>
1017
1038
  </a>
1018
1039
  <ul>
1019
1040
  <li>新增特定语言特定模版文件进行语法高亮,SDK内置了如下部分文件,同步支持业务方配置指定文件名称进行对应语言高亮</li>
1020
1041
  </ul>
1021
- <pre><code class="language-ts"><span class="hl-4">// SDK 默认已经支持的内置文件配置</span><br/><span class="hl-0"> </span><span class="hl-1">ConfigExtension</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">Gemfile</span><span class="hl-0"> = </span><span class="hl-2">&#39;ruby&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">Rakefile</span><span class="hl-0"> = </span><span class="hl-2">&#39;ruby&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">artisan</span><span class="hl-0"> = </span><span class="hl-2">&#39;php&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;Gemfile.lock&#39;</span><span class="hl-0"> = </span><span class="hl-2">&#39;ruby&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;.npmrc&#39;</span><span class="hl-0"> = </span><span class="hl-2">&#39;javascript&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;.eslintrc&#39;</span><span class="hl-0"> = </span><span class="hl-2">&#39;javascript&#39;</span><span class="hl-0">,</span><br/><span class="hl-0">}</span><br/><span class="hl-4">// 业务方可以配置对应文件名称进行指定语法高亮</span><br/><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0">...</span><br/><span class="hl-1">specialFileHighlight</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">fileName:</span><span class="hl-0"> </span><span class="hl-2">&#39;Gemfile&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageType:</span><span class="hl-0"> </span><span class="hl-2">&#39;ruby&#39;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">] </span><span class="hl-4">// 指定文件名称,使用特定的语法高亮</span><br/><span class="hl-0">})</span>
1042
+ <pre><code class="language-ts"><span class="hl-4">// SDK 默认已经支持的内置文件配置</span><br/><span class="hl-1"> </span><span class="hl-3">ConfigExtension</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">Gemfile</span><span class="hl-1"> = </span><span class="hl-5">&#39;ruby&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">Rakefile</span><span class="hl-1"> = </span><span class="hl-5">&#39;ruby&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">artisan</span><span class="hl-1"> = </span><span class="hl-5">&#39;php&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;Gemfile.lock&#39;</span><span class="hl-1"> = </span><span class="hl-5">&#39;ruby&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;.npmrc&#39;</span><span class="hl-1"> = </span><span class="hl-5">&#39;javascript&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;.eslintrc&#39;</span><span class="hl-1"> = </span><span class="hl-5">&#39;javascript&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}</span><br/><span class="hl-4">// 业务方可以配置对应文件名称进行指定语法高亮</span><br/><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1">...</span><br/><span class="hl-3">specialFileHighlight</span><span class="hl-1">:[</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">fileName:</span><span class="hl-1"> </span><span class="hl-5">&#39;Gemfile&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageType:</span><span class="hl-1"> </span><span class="hl-5">&#39;ruby&#39;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">] </span><span class="hl-4">// 指定文件名称,使用特定的语法高亮</span><br/><span class="hl-1">})</span>
1022
1043
  </code></pre>
1023
1044
 
1024
- <a href="#优化-30" id="优化-30" style="color: inherit; text-decoration: none;">
1045
+ <a href="#优化-31" id="优化-31" style="color: inherit; text-decoration: none;">
1025
1046
  <h3>优化</h3>
1026
1047
  </a>
1027
1048
  <ul>
@@ -1041,7 +1062,7 @@
1041
1062
  <h2>v0.9.116</h2>
1042
1063
  </a>
1043
1064
 
1044
- <a href="#新增-27" id="新增-27" style="color: inherit; text-decoration: none;">
1065
+ <a href="#新增-28" id="新增-28" style="color: inherit; text-decoration: none;">
1045
1066
  <h3>新增</h3>
1046
1067
  </a>
1047
1068
  <ul>
@@ -1059,7 +1080,7 @@
1059
1080
  <li>修复答题区域的右侧边界样式问题</li>
1060
1081
  </ul>
1061
1082
 
1062
- <a href="#优化-31" id="优化-31" style="color: inherit; text-decoration: none;">
1083
+ <a href="#优化-32" id="优化-32" style="color: inherit; text-decoration: none;">
1063
1084
  <h3>优化</h3>
1064
1085
  </a>
1065
1086
  <ul>
@@ -1072,7 +1093,7 @@
1072
1093
  <h2>v0.9.115</h2>
1073
1094
  </a>
1074
1095
 
1075
- <a href="#优化-32" id="优化-32" style="color: inherit; text-decoration: none;">
1096
+ <a href="#优化-33" id="优化-33" style="color: inherit; text-decoration: none;">
1076
1097
  <h3>优化</h3>
1077
1098
  </a>
1078
1099
  <ul>
@@ -1097,13 +1118,13 @@
1097
1118
  <h2>v0.9.114</h2>
1098
1119
  </a>
1099
1120
 
1100
- <a href="#新增-28" id="新增-28" style="color: inherit; text-decoration: none;">
1121
+ <a href="#新增-29" id="新增-29" style="color: inherit; text-decoration: none;">
1101
1122
  <h3>新增</h3>
1102
1123
  </a>
1103
1124
  <ul>
1104
1125
  <li>新增回放过程中打开其他问题,派发暂停事件给业务方</li>
1105
1126
  </ul>
1106
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">PausePlayback</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-2">&#39;PausePlayback&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ...</span>
1127
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">PausePlayback</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-5">&#39;PausePlayback&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> ...</span>
1107
1128
  </code></pre>
1108
1129
 
1109
1130
  <a href="#修复-28" id="修复-28" style="color: inherit; text-decoration: none;">
@@ -1117,7 +1138,7 @@
1117
1138
  <h2>v0.9.113</h2>
1118
1139
  </a>
1119
1140
 
1120
- <a href="#新增-29" id="新增-29" style="color: inherit; text-decoration: none;">
1141
+ <a href="#新增-30" id="新增-30" style="color: inherit; text-decoration: none;">
1121
1142
  <h3>新增</h3>
1122
1143
  </a>
1123
1144
  <ul>
@@ -1136,14 +1157,14 @@
1136
1157
  <h2>v0.9.111</h2>
1137
1158
  </a>
1138
1159
 
1139
- <a href="#新增-30" id="新增-30" style="color: inherit; text-decoration: none;">
1160
+ <a href="#新增-31" id="新增-31" style="color: inherit; text-decoration: none;">
1140
1161
  <h3>新增</h3>
1141
1162
  </a>
1142
1163
  <ul>
1143
1164
  <li>关闭实时刷新功能</li>
1144
1165
  <li>新增是否开启LSP诊断接口</li>
1145
1166
  </ul>
1146
- <pre><code class="language-ts"><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">openLspDiagnostic</span><span class="hl-0">: </span><span class="hl-3">true</span><span class="hl-0">, </span><span class="hl-4">// 默认是true,</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0">});</span><br/><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">switchLspDiagnostic</span><span class="hl-0">(</span><span class="hl-3">true</span><span class="hl-0">/</span><span class="hl-3">false</span><span class="hl-0">);</span>
1167
+ <pre><code class="language-ts"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">openLspDiagnostic</span><span class="hl-1">: </span><span class="hl-0">true</span><span class="hl-1">, </span><span class="hl-4">// 默认是true,</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1">});</span><br/><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">switchLspDiagnostic</span><span class="hl-1">(</span><span class="hl-0">true</span><span class="hl-1">/</span><span class="hl-0">false</span><span class="hl-1">);</span>
1147
1168
  </code></pre>
1148
1169
 
1149
1170
  <a href="#修复-30" id="修复-30" style="color: inherit; text-decoration: none;">
@@ -1161,7 +1182,7 @@
1161
1182
  <h2>v0.9.110</h2>
1162
1183
  </a>
1163
1184
 
1164
- <a href="#新增-31" id="新增-31" style="color: inherit; text-decoration: none;">
1185
+ <a href="#新增-32" id="新增-32" style="color: inherit; text-decoration: none;">
1165
1186
  <h3>新增</h3>
1166
1187
  </a>
1167
1188
  <ul>
@@ -1169,7 +1190,7 @@
1169
1190
  <li>新增关闭实时预览Web项目开关</li>
1170
1191
  <li>新增监听Docker资源使用情况(5S 更新一次资源使用情况)</li>
1171
1192
  </ul>
1172
- <pre><code class="language-ts"><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">ResourceMonitoring</span><span class="hl-0">: {</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">cpuPercent:</span><span class="hl-0"> </span><span class="hl-6">0.33</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">memoryCurrent:</span><span class="hl-6">144</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">memoryMax:</span><span class="hl-6">1024</span><span class="hl-0">,</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span>
1193
+ <pre><code class="language-ts"><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">ResourceMonitoring</span><span class="hl-1">: {</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">cpuPercent:</span><span class="hl-1"> </span><span class="hl-6">0.33</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">memoryCurrent:</span><span class="hl-6">144</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">memoryMax:</span><span class="hl-6">1024</span><span class="hl-1">,</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span>
1173
1194
  </code></pre>
1174
1195
 
1175
1196
  <a href="#v09106" id="v09106" style="color: inherit; text-decoration: none;">
@@ -1187,7 +1208,7 @@
1187
1208
  <li>修复回放模式,Shell 会出现重复内容</li>
1188
1209
  </ul>
1189
1210
 
1190
- <a href="#优化-33" id="优化-33" style="color: inherit; text-decoration: none;">
1211
+ <a href="#优化-34" id="优化-34" style="color: inherit; text-decoration: none;">
1191
1212
  <h2>优化</h2>
1192
1213
  </a>
1193
1214
  <ul>
@@ -1202,7 +1223,7 @@
1202
1223
  <h2>v0.9.102</h2>
1203
1224
  </a>
1204
1225
 
1205
- <a href="#新增-32" id="新增-32" style="color: inherit; text-decoration: none;">
1226
+ <a href="#新增-33" id="新增-33" style="color: inherit; text-decoration: none;">
1206
1227
  <h3>新增</h3>
1207
1228
  </a>
1208
1229
  <ul>
@@ -1217,7 +1238,7 @@
1217
1238
  <li>修复删除文件,Editor会自动关闭有相同前缀开头的文件</li>
1218
1239
  </ul>
1219
1240
 
1220
- <a href="#优化-34" id="优化-34" style="color: inherit; text-decoration: none;">
1241
+ <a href="#优化-35" id="优化-35" style="color: inherit; text-decoration: none;">
1221
1242
  <h3>优化</h3>
1222
1243
  </a>
1223
1244
  <ul>
@@ -1249,7 +1270,7 @@
1249
1270
  <li>修复回放功能JS报错</li>
1250
1271
  </ul>
1251
1272
 
1252
- <a href="#优化-35" id="优化-35" style="color: inherit; text-decoration: none;">
1273
+ <a href="#优化-36" id="优化-36" style="color: inherit; text-decoration: none;">
1253
1274
  <h3>优化</h3>
1254
1275
  </a>
1255
1276
  <ul>
@@ -1270,7 +1291,7 @@
1270
1291
  <li>修复回放功能<code>shell</code>内容重复显示问题</li>
1271
1292
  </ul>
1272
1293
 
1273
- <a href="#优化-36" id="优化-36" style="color: inherit; text-decoration: none;">
1294
+ <a href="#优化-37" id="优化-37" style="color: inherit; text-decoration: none;">
1274
1295
  <h3>优化</h3>
1275
1296
  </a>
1276
1297
  <ul>
@@ -1282,14 +1303,14 @@
1282
1303
  <h2>v0.9.95</h2>
1283
1304
  </a>
1284
1305
 
1285
- <a href="#新增-33" id="新增-33" style="color: inherit; text-decoration: none;">
1306
+ <a href="#新增-34" id="新增-34" style="color: inherit; text-decoration: none;">
1286
1307
  <h3>新增</h3>
1287
1308
  </a>
1288
1309
  <ul>
1289
1310
  <li>新增Debug支持变量Hover 显示变量值功能</li>
1290
1311
  <li>新增SDK配置支持打开默认文件功能</li>
1291
1312
  </ul>
1292
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-1">defaultOpenFiles</span><span class="hl-0">: [</span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;CHANGELOG.md&#39;</span><span class="hl-0">], </span><span class="hl-4">// 默认打开文件列表(PaaS 默认只有README.md),优先级&#39;README.md&#39; &gt; &#39;CHANGELOG.md&#39;</span><br/><span class="hl-0"> </span><span class="hl-1">specialOpenFile:</span><span class="hl-0"> </span><span class="hl-1">openpath</span><span class="hl-0">, </span><span class="hl-4">// specialOpenFiles 优先级 高于defaultOpenFiles</span><br/><span class="hl-0"> });</span>
1313
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-3">defaultOpenFiles</span><span class="hl-1">: [</span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;CHANGELOG.md&#39;</span><span class="hl-1">], </span><span class="hl-4">// 默认打开文件列表(PaaS 默认只有README.md),优先级&#39;README.md&#39; &gt; &#39;CHANGELOG.md&#39;</span><br/><span class="hl-1"> </span><span class="hl-3">specialOpenFile:</span><span class="hl-1"> </span><span class="hl-3">openpath</span><span class="hl-1">, </span><span class="hl-4">// specialOpenFiles 优先级 高于defaultOpenFiles</span><br/><span class="hl-1"> });</span>
1293
1314
  </code></pre>
1294
1315
 
1295
1316
  <a href="#修复-36" id="修复-36" style="color: inherit; text-decoration: none;">
@@ -1302,7 +1323,7 @@
1302
1323
  <li>修复React JSX语法设置答题区域,显示对应标识内容问题</li>
1303
1324
  </ul>
1304
1325
 
1305
- <a href="#优化-37" id="优化-37" style="color: inherit; text-decoration: none;">
1326
+ <a href="#优化-38" id="优化-38" style="color: inherit; text-decoration: none;">
1306
1327
  <h3>优化</h3>
1307
1328
  </a>
1308
1329
  <ul>
@@ -1317,7 +1338,7 @@
1317
1338
  <h2>v0.9.94</h2>
1318
1339
  </a>
1319
1340
 
1320
- <a href="#新增-34" id="新增-34" style="color: inherit; text-decoration: none;">
1341
+ <a href="#新增-35" id="新增-35" style="color: inherit; text-decoration: none;">
1321
1342
  <h3>新增</h3>
1322
1343
  </a>
1323
1344
  <ul>
@@ -1332,7 +1353,7 @@
1332
1353
  <li>修复文件树收起,展开头像消失问题</li>
1333
1354
  </ul>
1334
1355
 
1335
- <a href="#优化-38" id="优化-38" style="color: inherit; text-decoration: none;">
1356
+ <a href="#优化-39" id="优化-39" style="color: inherit; text-decoration: none;">
1336
1357
  <h3>优化</h3>
1337
1358
  </a>
1338
1359
  <ul>
@@ -1343,7 +1364,7 @@
1343
1364
  <h2>v0.9.93</h2>
1344
1365
  </a>
1345
1366
 
1346
- <a href="#优化-39" id="优化-39" style="color: inherit; text-decoration: none;">
1367
+ <a href="#优化-40" id="优化-40" style="color: inherit; text-decoration: none;">
1347
1368
  <h2>优化</h2>
1348
1369
  </a>
1349
1370
  <ul>
@@ -1354,20 +1375,20 @@
1354
1375
  <h2>v0.9.92</h2>
1355
1376
  </a>
1356
1377
 
1357
- <a href="#新增-35" id="新增-35" style="color: inherit; text-decoration: none;">
1378
+ <a href="#新增-36" id="新增-36" style="color: inherit; text-decoration: none;">
1358
1379
  <h2>新增</h2>
1359
1380
  </a>
1360
1381
  <ul>
1361
1382
  <li>新增paas平台接入sentry监控 (需要接入方再打包自己项目时,自定义命名打包后的@dao42/d42paas-front文件,名称需要包含daopaas字符)</li>
1362
1383
  </ul>
1363
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">enableSentry</span><span class="hl-0"> </span><span class="hl-4">// 是否开启sentry监控</span><br/><span class="hl-0">})</span>
1384
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">enableSentry</span><span class="hl-1"> </span><span class="hl-4">// 是否开启sentry监控</span><br/><span class="hl-1">})</span>
1364
1385
  </code></pre>
1365
1386
  <ul>
1366
1387
  <li>新增测试用例展示demo</li>
1367
1388
  <li>新增支持Debug功能回放</li>
1368
1389
  <li>新增支持新题型多文件</li>
1369
1390
  </ul>
1370
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">switchLanguage</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-1">languageType</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageValue</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageFileName</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">createNewFile</span><span class="hl-0"> === </span><span class="hl-2">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-4">// 添加第四个参数,默认为false, 如果传递为true,则会创建新的文件</span><br/><span class="hl-0"> );</span>
1391
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">switchLanguage</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">languageType</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageValue</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageFileName</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">createNewFile</span><span class="hl-1"> === </span><span class="hl-5">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-4">// 添加第四个参数,默认为false, 如果传递为true,则会创建新的文件</span><br/><span class="hl-1"> );</span>
1371
1392
  </code></pre>
1372
1393
 
1373
1394
  <a href="#修复-38" id="修复-38" style="color: inherit; text-decoration: none;">
@@ -1377,7 +1398,7 @@
1377
1398
  <li>修复浏览器输入框无效</li>
1378
1399
  </ul>
1379
1400
 
1380
- <a href="#优化-40" id="优化-40" style="color: inherit; text-decoration: none;">
1401
+ <a href="#优化-41" id="优化-41" style="color: inherit; text-decoration: none;">
1381
1402
  <h2>优化</h2>
1382
1403
  </a>
1383
1404
  <ul>
@@ -1438,7 +1459,7 @@
1438
1459
  <h2>v0.9.85</h2>
1439
1460
  </a>
1440
1461
 
1441
- <a href="#新增-36" id="新增-36" style="color: inherit; text-decoration: none;">
1462
+ <a href="#新增-37" id="新增-37" style="color: inherit; text-decoration: none;">
1442
1463
  <h2>新增</h2>
1443
1464
  </a>
1444
1465
  <ul>
@@ -1446,19 +1467,19 @@
1446
1467
  <li>新增<code>Shift+Mod+z``redo</code>快捷键</li>
1447
1468
  </ul>
1448
1469
 
1449
- <a href="#优化-41" id="优化-41" style="color: inherit; text-decoration: none;">
1470
+ <a href="#优化-42" id="优化-42" style="color: inherit; text-decoration: none;">
1450
1471
  <h2>优化</h2>
1451
1472
  </a>
1452
1473
  <ul>
1453
1474
  <li>控制答题区域范围内不能新增新的答题区</li>
1454
1475
  <li>优化在未打开指定文件的情况下,可以直接删除答题区域,并且同步打开文件(新增<code>filePath</code>参数)</li>
1455
1476
  </ul>
1456
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">removeAreaTextById</span><span class="hl-0">(</span><span class="hl-1">id</span><span class="hl-0">, </span><span class="hl-1">text</span><span class="hl-0">, </span><span class="hl-1">filePath</span><span class="hl-0">);</span>
1477
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">removeAreaTextById</span><span class="hl-1">(</span><span class="hl-3">id</span><span class="hl-1">, </span><span class="hl-3">text</span><span class="hl-1">, </span><span class="hl-3">filePath</span><span class="hl-1">);</span>
1457
1478
  </code></pre>
1458
1479
  <ul>
1459
1480
  <li>优化在未打开指定文件的情况下,可以直接跳转到指定答题区域,并且同步打开文件(新增<code>filePath</code>参数)</li>
1460
1481
  </ul>
1461
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">jumpToAreaById</span><span class="hl-0">(</span><span class="hl-1">id</span><span class="hl-0">, </span><span class="hl-1">path</span><span class="hl-0">);</span>
1482
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">jumpToAreaById</span><span class="hl-1">(</span><span class="hl-3">id</span><span class="hl-1">, </span><span class="hl-3">path</span><span class="hl-1">);</span>
1462
1483
  </code></pre>
1463
1484
 
1464
1485
  <a href="#修复-43" id="修复-43" style="color: inherit; text-decoration: none;">
@@ -1473,36 +1494,36 @@
1473
1494
  <h2>v0.9.84</h2>
1474
1495
  </a>
1475
1496
 
1476
- <a href="#新增-37" id="新增-37" style="color: inherit; text-decoration: none;">
1497
+ <a href="#新增-38" id="新增-38" style="color: inherit; text-decoration: none;">
1477
1498
  <h3>新增</h3>
1478
1499
  </a>
1479
1500
  <ul>
1480
1501
  <li>新增支持答题区域根据指定ID跳转到指定的答题区域接口</li>
1481
1502
  </ul>
1482
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">jumpToAreaById</span><span class="hl-0">(</span><span class="hl-1">id</span><span class="hl-0">);</span>
1503
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">jumpToAreaById</span><span class="hl-1">(</span><span class="hl-3">id</span><span class="hl-1">);</span>
1483
1504
  </code></pre>
1484
1505
  <ul>
1485
1506
  <li>新增支持Editor进行<code>redo</code> ,<code>undo</code> 如有答题区域信息变更,通知业务方接口</li>
1486
1507
  </ul>
1487
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Events</span><span class="hl-0">.</span><span class="hl-1">UpdateArea</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">info</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span>
1508
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Events</span><span class="hl-1">.</span><span class="hl-3">UpdateArea</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">info</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span>
1488
1509
  </code></pre>
1489
1510
  <ul>
1490
1511
  <li>新增回放模式,派发 Editor 人为滚动事件</li>
1491
1512
  </ul>
1492
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">EditorScroll</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">playing</span><span class="hl-0"> === </span><span class="hl-7">PLAY_STATUS</span><span class="hl-0">.</span><span class="hl-7">INITIAL</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">pausePlayback</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-5">setPlaying</span><span class="hl-0">(</span><span class="hl-7">PLAY_STATUS</span><span class="hl-0">.</span><span class="hl-7">PAUSE</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span>
1513
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">EditorScroll</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">playing</span><span class="hl-1"> === </span><span class="hl-7">PLAY_STATUS</span><span class="hl-1">.</span><span class="hl-7">INITIAL</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">pausePlayback</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-2">setPlaying</span><span class="hl-1">(</span><span class="hl-7">PLAY_STATUS</span><span class="hl-1">.</span><span class="hl-7">PAUSE</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span>
1493
1514
  </code></pre>
1494
1515
  <ul>
1495
1516
  <li>新增提供禁止编辑<code>fileTree</code> 和 <code>editor</code> 配置属性</li>
1496
1517
  </ul>
1497
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">updateConfig</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">disableEditable:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">disableFileTreeAction:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
1518
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">updateConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">disableEditable:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">disableFileTreeAction:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
1498
1519
  </code></pre>
1499
1520
  <ul>
1500
1521
  <li>新增<code>console</code> 数据清除同步,并提供在跟随模式下 <code>console</code>, <code>shell</code> 切换事件派发进行跟随同步</li>
1501
1522
  </ul>
1502
- <pre><code class="language-ts"><span class="hl-4">// 上报当前terminal聚焦点,console | shell.(跟随模式)</span><br/><span class="hl-5">syncXtermKey</span><span class="hl-0">(</span><span class="hl-1">xtermKey</span><span class="hl-0">: </span><span class="hl-1">IXtermKey</span><span class="hl-0">)</span><br/><span class="hl-4">// 接受其他人切换控制台tab栏(跟随模式)</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">UsersUpdated</span><span class="hl-0">:</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">xtermKey</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-5">setActiveKey</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">xtermKey</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0">}</span>
1523
+ <pre><code class="language-ts"><span class="hl-4">// 上报当前terminal聚焦点,console | shell.(跟随模式)</span><br/><span class="hl-2">syncXtermKey</span><span class="hl-1">(</span><span class="hl-3">xtermKey</span><span class="hl-1">: </span><span class="hl-3">IXtermKey</span><span class="hl-1">)</span><br/><span class="hl-4">// 接受其他人切换控制台tab栏(跟随模式)</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">UsersUpdated</span><span class="hl-1">:</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">xtermKey</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-2">setActiveKey</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">xtermKey</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
1503
1524
  </code></pre>
1504
1525
 
1505
- <a href="#优化-42" id="优化-42" style="color: inherit; text-decoration: none;">
1526
+ <a href="#优化-43" id="优化-43" style="color: inherit; text-decoration: none;">
1506
1527
  <h3>优化</h3>
1507
1528
  </a>
1508
1529
  <ul>
@@ -1528,7 +1549,7 @@
1528
1549
  <h2>v0.9.83</h2>
1529
1550
  </a>
1530
1551
 
1531
- <a href="#新增-38" id="新增-38" style="color: inherit; text-decoration: none;">
1552
+ <a href="#新增-39" id="新增-39" style="color: inherit; text-decoration: none;">
1532
1553
  <h3>新增</h3>
1533
1554
  </a>
1534
1555
  <ul>
@@ -1548,13 +1569,13 @@
1548
1569
  <h2>v0.9.82</h2>
1549
1570
  </a>
1550
1571
 
1551
- <a href="#新增-39" id="新增-39" style="color: inherit; text-decoration: none;">
1572
+ <a href="#新增-40" id="新增-40" style="color: inherit; text-decoration: none;">
1552
1573
  <h3>新增</h3>
1553
1574
  </a>
1554
1575
  <ul>
1555
1576
  <li>新增删除指定答题区域接口</li>
1556
1577
  </ul>
1557
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">removeAreaTextById</span><span class="hl-0">(</span><span class="hl-1">areaId</span><span class="hl-0">, </span><span class="hl-1">areaText</span><span class="hl-0">);</span>
1578
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">removeAreaTextById</span><span class="hl-1">(</span><span class="hl-3">areaId</span><span class="hl-1">, </span><span class="hl-3">areaText</span><span class="hl-1">);</span>
1558
1579
  </code></pre>
1559
1580
  <ul>
1560
1581
  <li>新增只读、隐藏文件不能设置答题区限制</li>
@@ -1575,7 +1596,7 @@
1575
1596
  <h2>v0.9.81</h2>
1576
1597
  </a>
1577
1598
 
1578
- <a href="#新增-40" id="新增-40" style="color: inherit; text-decoration: none;">
1599
+ <a href="#新增-41" id="新增-41" style="color: inherit; text-decoration: none;">
1579
1600
  <h3>新增</h3>
1580
1601
  </a>
1581
1602
  <ul>
@@ -1591,7 +1612,7 @@
1591
1612
  <li>修复答题区域样式和LSP样式冲突问题</li>
1592
1613
  </ul>
1593
1614
 
1594
- <a href="#优化-43" id="优化-43" style="color: inherit; text-decoration: none;">
1615
+ <a href="#优化-44" id="优化-44" style="color: inherit; text-decoration: none;">
1595
1616
  <h3>优化</h3>
1596
1617
  </a>
1597
1618
  <ul>
@@ -1603,20 +1624,20 @@
1603
1624
  <h2>v0.9.80</h2>
1604
1625
  </a>
1605
1626
 
1606
- <a href="#新增-41" id="新增-41" style="color: inherit; text-decoration: none;">
1627
+ <a href="#新增-42" id="新增-42" style="color: inherit; text-decoration: none;">
1607
1628
  <h3>新增</h3>
1608
1629
  </a>
1609
1630
  <ul>
1610
1631
  <li>支持less、scss、sass 语法高亮</li>
1611
1632
  <li>新增重启LSP服务接口</li>
1612
1633
  </ul>
1613
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">restartLSPServer</span><span class="hl-0">();</span>
1634
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">restartLSPServer</span><span class="hl-1">();</span>
1614
1635
  </code></pre>
1615
1636
  <ul>
1616
1637
  <li>新增1024code官网底部添加<code>copyright</code>信息</li>
1617
1638
  <li>新增Editor 内置文案多语言配置</li>
1618
1639
  </ul>
1619
- <pre><code class="language-ts"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-10">container</span><span class="hl-0">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">item</span><span class="hl-0">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-10">translate</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-10">next</span><span class="hl-0">: { </span><span class="hl-4">// next 为Editor显示的文案, 如果没有配置对应的语言, 就用对应的Key作为文案</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0">]: </span><span class="hl-2">&#39;下一个&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">EN</span><span class="hl-0">]: </span><span class="hl-2">&#39;next&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-10">previous</span><span class="hl-0">: {</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0">]: </span><span class="hl-2">&#39;上一个&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">EN</span><span class="hl-0">]: </span><span class="hl-2">&#39;previous&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-10">all</span><span class="hl-0">: {</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0">]: </span><span class="hl-2">&#39;全部&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">EN</span><span class="hl-0">]: </span><span class="hl-2">&#39;all&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span>
1640
+ <pre><code class="language-ts"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-10">container</span><span class="hl-1">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">item</span><span class="hl-1">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-10">translate</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-10">next</span><span class="hl-1">: { </span><span class="hl-4">// next 为Editor显示的文案, 如果没有配置对应的语言, 就用对应的Key作为文案</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1">]: </span><span class="hl-5">&#39;下一个&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">EN</span><span class="hl-1">]: </span><span class="hl-5">&#39;next&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-10">previous</span><span class="hl-1">: {</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1">]: </span><span class="hl-5">&#39;上一个&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">EN</span><span class="hl-1">]: </span><span class="hl-5">&#39;previous&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-10">all</span><span class="hl-1">: {</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1">]: </span><span class="hl-5">&#39;全部&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">EN</span><span class="hl-1">]: </span><span class="hl-5">&#39;all&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span>
1620
1641
  </code></pre>
1621
1642
  <ul>
1622
1643
  <li>新增Focus文件树,回车键触发重命名功能</li>
@@ -1632,7 +1653,7 @@
1632
1653
  <li>修复<code>replaceAll</code>语法兼容问题</li>
1633
1654
  </ul>
1634
1655
 
1635
- <a href="#优化-44" id="优化-44" style="color: inherit; text-decoration: none;">
1656
+ <a href="#优化-45" id="优化-45" style="color: inherit; text-decoration: none;">
1636
1657
  <h3>优化</h3>
1637
1658
  </a>
1638
1659
  <ul>
@@ -1664,28 +1685,28 @@
1664
1685
  <h2>v0.9.78</h2>
1665
1686
  </a>
1666
1687
 
1667
- <a href="#新增-42" id="新增-42" style="color: inherit; text-decoration: none;">
1688
+ <a href="#新增-43" id="新增-43" style="color: inherit; text-decoration: none;">
1668
1689
  <h3>新增</h3>
1669
1690
  </a>
1670
1691
  <ul>
1671
1692
  <li>新增Debug组件</li>
1672
1693
  </ul>
1673
- <pre><code class="language-ts"><span class="hl-1">components</span><span class="hl-0">.</span><span class="hl-5">push</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Debug&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">props:</span><span class="hl-0"> {},</span><br/><span class="hl-0">});</span>
1694
+ <pre><code class="language-ts"><span class="hl-3">components</span><span class="hl-1">.</span><span class="hl-2">push</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Debug&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">props:</span><span class="hl-1"> {},</span><br/><span class="hl-1">});</span>
1674
1695
  </code></pre>
1675
1696
  <ul>
1676
1697
  <li>新增初始化参数,是否开启debug模式isOpenDebugMode</li>
1677
1698
  </ul>
1678
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({ </span><span class="hl-1">isOpenDebugMode:</span><span class="hl-3">true</span><span class="hl-0"> })</span>
1699
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({ </span><span class="hl-3">isOpenDebugMode:</span><span class="hl-0">true</span><span class="hl-1"> })</span>
1679
1700
  </code></pre>
1680
1701
  <ul>
1681
1702
  <li>新增debug启动事件</li>
1682
1703
  </ul>
1683
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">debugRun</span><span class="hl-0">() </span><span class="hl-4">// 启动事件</span><br/><span class="hl-4">// debug结束事件与之前的结束事件相同</span><br/><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">stopPlayground</span><span class="hl-0">()</span>
1704
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">debugRun</span><span class="hl-1">() </span><span class="hl-4">// 启动事件</span><br/><span class="hl-4">// debug结束事件与之前的结束事件相同</span><br/><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">stopPlayground</span><span class="hl-1">()</span>
1684
1705
  </code></pre>
1685
1706
  <ul>
1686
1707
  <li>暴露<code>Debug</code>信息(目前只支持是否支持debug模式)</li>
1687
1708
  </ul>
1688
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Debug</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">debugSupport</span><span class="hl-0"> </span><span class="hl-4">// 是否支持debug模式</span><br/><span class="hl-0">})</span>
1709
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Debug</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">debugSupport</span><span class="hl-1"> </span><span class="hl-4">// 是否支持debug模式</span><br/><span class="hl-1">})</span>
1689
1710
  </code></pre>
1690
1711
 
1691
1712
  <a href="#修复-50" id="修复-50" style="color: inherit; text-decoration: none;">
@@ -1745,7 +1766,7 @@
1745
1766
  <h2>v0.9.73</h2>
1746
1767
  </a>
1747
1768
 
1748
- <a href="#优化-45" id="优化-45" style="color: inherit; text-decoration: none;">
1769
+ <a href="#优化-46" id="优化-46" style="color: inherit; text-decoration: none;">
1749
1770
  <h3>优化</h3>
1750
1771
  </a>
1751
1772
  <ul>
@@ -1766,13 +1787,13 @@
1766
1787
  <h2>v0.9.72</h2>
1767
1788
  </a>
1768
1789
 
1769
- <a href="#新增-43" id="新增-43" style="color: inherit; text-decoration: none;">
1790
+ <a href="#新增-44" id="新增-44" style="color: inherit; text-decoration: none;">
1770
1791
  <h3>新增</h3>
1771
1792
  </a>
1772
1793
  <ul>
1773
1794
  <li>新增插入指定代码块到指定区域功能</li>
1774
1795
  </ul>
1775
- <pre><code class="language-ts"><span class="hl-4">// 如果给指定问题区域插入代码:id则是指定问题ID,如果给指定区域插入代码, 则ID传入‘’空字符串, lineNum 支持:TOP,BOTTOM,和数字(数字为指定的行号)</span><br/><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">insertTextById</span><span class="hl-0">(</span><span class="hl-1">id</span><span class="hl-0">, </span><span class="hl-1">lineText</span><span class="hl-0">, </span><span class="hl-1">lineNum</span><span class="hl-0">);</span>
1796
+ <pre><code class="language-ts"><span class="hl-4">// 如果给指定问题区域插入代码:id则是指定问题ID,如果给指定区域插入代码, 则ID传入‘’空字符串, lineNum 支持:TOP,BOTTOM,和数字(数字为指定的行号)</span><br/><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">insertTextById</span><span class="hl-1">(</span><span class="hl-3">id</span><span class="hl-1">, </span><span class="hl-3">lineText</span><span class="hl-1">, </span><span class="hl-3">lineNum</span><span class="hl-1">);</span>
1776
1797
  </code></pre>
1777
1798
  <ul>
1778
1799
  <li>新增针对跟随模式对文件夹展开和关闭功能</li>
@@ -1790,13 +1811,13 @@
1790
1811
  <h2>v0.9.71</h2>
1791
1812
  </a>
1792
1813
 
1793
- <a href="#新增-44" id="新增-44" style="color: inherit; text-decoration: none;">
1814
+ <a href="#新增-45" id="新增-45" style="color: inherit; text-decoration: none;">
1794
1815
  <h3>新增</h3>
1795
1816
  </a>
1796
1817
  <ul>
1797
1818
  <li>新增重启服务接口</li>
1798
1819
  </ul>
1799
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-5">restartServer</span><span class="hl-0"> = </span><span class="hl-3">async</span><span class="hl-0"> () </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">restartServer</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">status</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">message</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">message</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> };</span>
1820
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-2">restartServer</span><span class="hl-1"> = </span><span class="hl-0">async</span><span class="hl-1"> () </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">restartServer</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">status</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">message</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">message</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> };</span>
1800
1821
  </code></pre>
1801
1822
  <ul>
1802
1823
  <li>新增文档上下文单词智能提示(解决LSP服务启动慢,智能提示问题)</li>
@@ -1814,13 +1835,13 @@
1814
1835
  <h2>v0.9.70</h2>
1815
1836
  </a>
1816
1837
 
1817
- <a href="#新增-45" id="新增-45" style="color: inherit; text-decoration: none;">
1838
+ <a href="#新增-46" id="新增-46" style="color: inherit; text-decoration: none;">
1818
1839
  <h3>新增</h3>
1819
1840
  </a>
1820
1841
  <ul>
1821
1842
  <li>支持对文件树指定文件调整文字颜色的功能。(文件路径支持模糊匹配)</li>
1822
1843
  </ul>
1823
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">setFileStyle</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">paths:</span><span class="hl-0"> [</span><span class="hl-2">&#39;a&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;*.md&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;**/index.css&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;a/b/c.js&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;*/c&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-1">styles:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">title:</span><span class="hl-0"> </span><span class="hl-2">&#39;customizeTitle&#39;</span><span class="hl-0">, </span><span class="hl-4">// 对应文案的样式名称(业务方可以自定义名称)</span><br/><span class="hl-0"> </span><span class="hl-1">icon:</span><span class="hl-0"> </span><span class="hl-2">&#39;customizeIcon&#39;</span><span class="hl-0">, </span><span class="hl-4">// 对应ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-0"> </span><span class="hl-1">arrowIcon:</span><span class="hl-0"> </span><span class="hl-2">&#39;customizeArrowIcon&#39;</span><span class="hl-0">, </span><span class="hl-4">// 对应Arrow ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">});</span>
1844
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">setFileStyle</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">paths:</span><span class="hl-1"> [</span><span class="hl-5">&#39;a&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;*.md&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;**/index.css&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;a/b/c.js&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;*/c&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-3">styles:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">title:</span><span class="hl-1"> </span><span class="hl-5">&#39;customizeTitle&#39;</span><span class="hl-1">, </span><span class="hl-4">// 对应文案的样式名称(业务方可以自定义名称)</span><br/><span class="hl-1"> </span><span class="hl-3">icon:</span><span class="hl-1"> </span><span class="hl-5">&#39;customizeIcon&#39;</span><span class="hl-1">, </span><span class="hl-4">// 对应ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-1"> </span><span class="hl-3">arrowIcon:</span><span class="hl-1"> </span><span class="hl-5">&#39;customizeArrowIcon&#39;</span><span class="hl-1">, </span><span class="hl-4">// 对应Arrow ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">});</span>
1824
1845
  </code></pre>
1825
1846
 
1826
1847
  <a href="#修复-58" id="修复-58" style="color: inherit; text-decoration: none;">
@@ -1833,13 +1854,13 @@
1833
1854
  <li>修复回放功能相关问题(系列新功能影响到回放)</li>
1834
1855
  </ul>
1835
1856
 
1836
- <a href="#优化-46" id="优化-46" style="color: inherit; text-decoration: none;">
1857
+ <a href="#优化-47" id="优化-47" style="color: inherit; text-decoration: none;">
1837
1858
  <h3>优化</h3>
1838
1859
  </a>
1839
1860
  <ul>
1840
1861
  <li>优化<code>reloadI18nResources</code>方法,支持一次性设置多个语言内容</li>
1841
1862
  </ul>
1842
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">// https://snyk.io/advisor/npm-package/i18next/functions/i18next.addResources 用法</span><br/><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">reloadI18nResources</span><span class="hl-0">(</span><span class="hl-1">lngOrSource</span><span class="hl-0">: </span><span class="hl-8">Array</span><span class="hl-0">&lt;</span><span class="hl-1">I18nResourcesType</span><span class="hl-0">&gt; | </span><span class="hl-1">I18nLanguageType</span><span class="hl-0">,</span><span class="hl-1">resource</span><span class="hl-0">?: </span><span class="hl-1">any</span><span class="hl-0">)</span>
1863
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">// https://snyk.io/advisor/npm-package/i18next/functions/i18next.addResources 用法</span><br/><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">reloadI18nResources</span><span class="hl-1">(</span><span class="hl-3">lngOrSource</span><span class="hl-1">: </span><span class="hl-8">Array</span><span class="hl-1">&lt;</span><span class="hl-3">I18nResourcesType</span><span class="hl-1">&gt; | </span><span class="hl-3">I18nLanguageType</span><span class="hl-1">,</span><span class="hl-3">resource</span><span class="hl-1">?: </span><span class="hl-3">any</span><span class="hl-1">)</span>
1843
1864
  </code></pre>
1844
1865
  <ul>
1845
1866
  <li>优化高亮主题样式</li>
@@ -1849,14 +1870,14 @@
1849
1870
  <h2>v0.9.69</h2>
1850
1871
  </a>
1851
1872
 
1852
- <a href="#新增-46" id="新增-46" style="color: inherit; text-decoration: none;">
1873
+ <a href="#新增-47" id="新增-47" style="color: inherit; text-decoration: none;">
1853
1874
  <h3>新增</h3>
1854
1875
  </a>
1855
1876
  <ul>
1856
1877
  <li>答题区支持“修改代码”模式</li>
1857
1878
  <li>新增<code>PaaS</code>平台,文案可以自定义功能接口,接口使用如下:</li>
1858
1879
  </ul>
1859
- <pre><code class="language-js"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">reloadI18nResources</span><span class="hl-0">(</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0">, {</span><br/><span class="hl-0"> </span><span class="hl-1">file_tree_create_new_file:</span><span class="hl-0"> </span><span class="hl-2">&#39;哈哈哈&#39;</span><span class="hl-0">, </span><span class="hl-4">// file_tree_create_new_file:要重命名的Key</span><br/><span class="hl-0">});</span>
1880
+ <pre><code class="language-js"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">reloadI18nResources</span><span class="hl-1">(</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-3">file_tree_create_new_file:</span><span class="hl-1"> </span><span class="hl-5">&#39;哈哈哈&#39;</span><span class="hl-1">, </span><span class="hl-4">// file_tree_create_new_file:要重命名的Key</span><br/><span class="hl-1">});</span>
1860
1881
  </code></pre>
1861
1882
 
1862
1883
  <a href="#修复-59" id="修复-59" style="color: inherit; text-decoration: none;">
@@ -1873,7 +1894,7 @@
1873
1894
  <h2>v0.9.68</h2>
1874
1895
  </a>
1875
1896
 
1876
- <a href="#新增-47" id="新增-47" style="color: inherit; text-decoration: none;">
1897
+ <a href="#新增-48" id="新增-48" style="color: inherit; text-decoration: none;">
1877
1898
  <h3>新增</h3>
1878
1899
  </a>
1879
1900
  <ul>
@@ -1882,7 +1903,7 @@
1882
1903
  <li>文件树头像位置优化</li>
1883
1904
  <li>新增修改xterm样式方式配置</li>
1884
1905
  </ul>
1885
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">xtermStyle:</span><span class="hl-0"> </span><span class="hl-1">XtermStyleType</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0">})</span>
1906
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">xtermStyle:</span><span class="hl-1"> </span><span class="hl-3">XtermStyleType</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1">})</span>
1886
1907
  </code></pre>
1887
1908
  <ul>
1888
1909
  <li>新增编辑器快捷键操作</li>
@@ -1896,7 +1917,7 @@
1896
1917
  <li>优化支持markdown表格解析以及图片不换行</li>
1897
1918
  <li>兼容smb旧版本的markdown数学公式语法解析</li>
1898
1919
  </ul>
1899
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">// true表示支持旧的`$ $`语法,默认false</span><br/><span class="hl-0"> </span><span class="hl-1">isLegacyMarkdownMath:</span><span class="hl-3">true</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0">})</span>
1920
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">// true表示支持旧的`$ $`语法,默认false</span><br/><span class="hl-1"> </span><span class="hl-3">isLegacyMarkdownMath:</span><span class="hl-0">true</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1">})</span>
1900
1921
  </code></pre>
1901
1922
  <ul>
1902
1923
  <li>优化LSP服务在离开IDE Page 还在尝试重连问题</li>
@@ -1919,7 +1940,7 @@
1919
1940
  <h2>v0.9.65</h2>
1920
1941
  </a>
1921
1942
 
1922
- <a href="#优化-47" id="优化-47" style="color: inherit; text-decoration: none;">
1943
+ <a href="#优化-48" id="优化-48" style="color: inherit; text-decoration: none;">
1923
1944
  <h3>优化</h3>
1924
1945
  </a>
1925
1946
  <ul>
@@ -1930,7 +1951,7 @@
1930
1951
  <h2>v0.9.64</h2>
1931
1952
  </a>
1932
1953
 
1933
- <a href="#优化-48" id="优化-48" style="color: inherit; text-decoration: none;">
1954
+ <a href="#优化-49" id="优化-49" style="color: inherit; text-decoration: none;">
1934
1955
  <h3>优化</h3>
1935
1956
  </a>
1936
1957
  <ul>
@@ -1964,7 +1985,7 @@
1964
1985
  <h2>v0.9.60</h2>
1965
1986
  </a>
1966
1987
 
1967
- <a href="#优化-49" id="优化-49" style="color: inherit; text-decoration: none;">
1988
+ <a href="#优化-50" id="优化-50" style="color: inherit; text-decoration: none;">
1968
1989
  <h3>优化</h3>
1969
1990
  </a>
1970
1991
  <ul>
@@ -1975,7 +1996,7 @@
1975
1996
  <h2>v0.9.59</h2>
1976
1997
  </a>
1977
1998
 
1978
- <a href="#优化-50" id="优化-50" style="color: inherit; text-decoration: none;">
1999
+ <a href="#优化-51" id="优化-51" style="color: inherit; text-decoration: none;">
1979
2000
  <h3>优化</h3>
1980
2001
  </a>
1981
2002
  <ul>
@@ -1987,39 +2008,39 @@
1987
2008
  <h2>v0.9.58</h2>
1988
2009
  </a>
1989
2010
 
1990
- <a href="#新增-48" id="新增-48" style="color: inherit; text-decoration: none;">
2011
+ <a href="#新增-49" id="新增-49" style="color: inherit; text-decoration: none;">
1991
2012
  <h3>新增</h3>
1992
2013
  </a>
1993
2014
  <ul>
1994
2015
  <li>新增答题区域功能,右键菜单配置方式(目前只支持:【implement,update】两种菜单Action):</li>
1995
2016
  </ul>
1996
- <pre><code class="language-ts"><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-10">container</span><span class="hl-0">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">item</span><span class="hl-0">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-1">showHiddenCode</span><span class="hl-0">, </span><span class="hl-4">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-0"> </span><span class="hl-1">freezeCode</span><span class="hl-0">, </span><span class="hl-4">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-0"> </span><span class="hl-10">contextMenu</span><span class="hl-0">: </span><span class="hl-1">contextMenu</span><br/><span class="hl-0"> ? {</span><br/><span class="hl-0"> </span><span class="hl-5">handleSelect</span><span class="hl-1">:</span><span class="hl-0"> (</span><span class="hl-1">e</span><span class="hl-0">, </span><span class="hl-1">callback</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">info</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">e</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">id</span><span class="hl-0"> = </span><span class="hl-8">Math</span><span class="hl-0">.</span><span class="hl-5">floor</span><span class="hl-0">(</span><span class="hl-8">Math</span><span class="hl-0">.</span><span class="hl-5">random</span><span class="hl-0">() * </span><span class="hl-6">1000</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">callback</span><span class="hl-0">?.({</span><br/><span class="hl-0"> </span><span class="hl-1">id</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-1">items:</span><span class="hl-0"> [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;implement&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">text:</span><span class="hl-0"> </span><span class="hl-2">&#39;实现功能&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">icon:</span><span class="hl-0"> </span><span class="hl-2">&#39;add-question&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">iconLabel:</span><span class="hl-0"> </span><span class="hl-2">&#39;答题区&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">commentStartLabel:</span><span class="hl-0"> </span><span class="hl-2">&#39;请在此实现代码功能&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">// commentTips: &#39;请在此实现代码功能&#39;,</span><br/><span class="hl-0"> </span><span class="hl-1">hideCodeBlock:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;update&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">text:</span><span class="hl-0"> </span><span class="hl-2">&#39;修改代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">icon:</span><span class="hl-0"> </span><span class="hl-2">&#39;list-mode&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">iconLabel:</span><span class="hl-0"> </span><span class="hl-2">&#39;编辑区&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">commentStartLabel:</span><span class="hl-0"> </span><span class="hl-2">&#39;请在此修复代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">// commentTips: &#39;请在此修复代码&#39;,</span><br/><span class="hl-0"> </span><span class="hl-1">hideCodeBlock:</span><span class="hl-0"> </span><span class="hl-3">false</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> : </span><span class="hl-3">null</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span>
2017
+ <pre><code class="language-ts"><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-10">container</span><span class="hl-1">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">item</span><span class="hl-1">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">showHiddenCode</span><span class="hl-1">, </span><span class="hl-4">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-1"> </span><span class="hl-3">freezeCode</span><span class="hl-1">, </span><span class="hl-4">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-1"> </span><span class="hl-10">contextMenu</span><span class="hl-1">: </span><span class="hl-3">contextMenu</span><br/><span class="hl-1"> ? {</span><br/><span class="hl-1"> </span><span class="hl-2">handleSelect</span><span class="hl-3">:</span><span class="hl-1"> (</span><span class="hl-3">e</span><span class="hl-1">, </span><span class="hl-3">callback</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">info</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">e</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">id</span><span class="hl-1"> = </span><span class="hl-8">Math</span><span class="hl-1">.</span><span class="hl-2">floor</span><span class="hl-1">(</span><span class="hl-8">Math</span><span class="hl-1">.</span><span class="hl-2">random</span><span class="hl-1">() * </span><span class="hl-6">1000</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">callback</span><span class="hl-1">?.({</span><br/><span class="hl-1"> </span><span class="hl-3">id</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-3">items:</span><span class="hl-1"> [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;implement&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">text:</span><span class="hl-1"> </span><span class="hl-5">&#39;实现功能&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">icon:</span><span class="hl-1"> </span><span class="hl-5">&#39;add-question&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">iconLabel:</span><span class="hl-1"> </span><span class="hl-5">&#39;答题区&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">commentStartLabel:</span><span class="hl-1"> </span><span class="hl-5">&#39;请在此实现代码功能&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// commentTips: &#39;请在此实现代码功能&#39;,</span><br/><span class="hl-1"> </span><span class="hl-3">hideCodeBlock:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;update&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">text:</span><span class="hl-1"> </span><span class="hl-5">&#39;修改代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">icon:</span><span class="hl-1"> </span><span class="hl-5">&#39;list-mode&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">iconLabel:</span><span class="hl-1"> </span><span class="hl-5">&#39;编辑区&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">commentStartLabel:</span><span class="hl-1"> </span><span class="hl-5">&#39;请在此修复代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// commentTips: &#39;请在此修复代码&#39;,</span><br/><span class="hl-1"> </span><span class="hl-3">hideCodeBlock:</span><span class="hl-1"> </span><span class="hl-0">false</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> : </span><span class="hl-0">null</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span>
1997
2018
  </code></pre>
1998
2019
  <ul>
1999
2020
  <li>新增代码块ICON点击事件:</li>
2000
2021
  </ul>
2001
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">LineAction</span><span class="hl-0">: {</span><br/><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">info</span><span class="hl-0">(</span><span class="hl-8">JSON</span><span class="hl-0">.</span><span class="hl-5">stringify</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span>
2022
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">LineAction</span><span class="hl-1">: {</span><br/><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">info</span><span class="hl-1">(</span><span class="hl-8">JSON</span><span class="hl-1">.</span><span class="hl-2">stringify</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span>
2002
2023
  </code></pre>
2003
2024
  <ul>
2004
2025
  <li>新增插入代码块功能(根据业务ID插入)</li>
2005
2026
  </ul>
2006
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">//lineId:业务ID,lineText:要插入的字符</span><br/><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">insertTextById</span><span class="hl-0">(</span><span class="hl-1">lineId</span><span class="hl-0">, </span><span class="hl-1">lineText</span><span class="hl-0">);</span>
2027
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">//lineId:业务ID,lineText:要插入的字符</span><br/><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">insertTextById</span><span class="hl-1">(</span><span class="hl-3">lineId</span><span class="hl-1">, </span><span class="hl-3">lineText</span><span class="hl-1">);</span>
2007
2028
  </code></pre>
2008
2029
  <ul>
2009
2030
  <li>新增冻结非设置区域代码功能接口:</li>
2010
2031
  </ul>
2011
- <pre><code class="language-ts"><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">switchFreezeCode</span><span class="hl-0">();</span>
2032
+ <pre><code class="language-ts"><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">switchFreezeCode</span><span class="hl-1">();</span>
2012
2033
  </code></pre>
2013
2034
  <ul>
2014
2035
  <li>新增由业务方控制是否将操作数据写入CRDT,配置参数如下:</li>
2015
2036
  </ul>
2016
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">isInsertCrdt</span><span class="hl-0">: </span><span class="hl-3">false</span><span class="hl-0">, </span><span class="hl-4">//默认值为:true</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> });</span>
2037
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">isInsertCrdt</span><span class="hl-1">: </span><span class="hl-0">false</span><span class="hl-1">, </span><span class="hl-4">//默认值为:true</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> });</span>
2017
2038
  </code></pre>
2018
2039
  <ul>
2019
2040
  <li><code>onMessage</code>事件新增<code>ApplicationAvailable</code>事件类型,用于监听项目运行成功的事件</li>
2020
2041
  </ul>
2021
2042
 
2022
- <a href="#优化-51" id="优化-51" style="color: inherit; text-decoration: none;">
2043
+ <a href="#优化-52" id="优化-52" style="color: inherit; text-decoration: none;">
2023
2044
  <h3>优化</h3>
2024
2045
  </a>
2025
2046
  <ul>
@@ -2048,13 +2069,13 @@
2048
2069
  <h2>v0.9.56</h2>
2049
2070
  </a>
2050
2071
 
2051
- <a href="#新增-49" id="新增-49" style="color: inherit; text-decoration: none;">
2072
+ <a href="#新增-50" id="新增-50" style="color: inherit; text-decoration: none;">
2052
2073
  <h3>新增</h3>
2053
2074
  </a>
2054
2075
  <ul>
2055
2076
  <li>新增<code>markdown</code>预览模式功能,提供<code>MarkdownPreview</code>类型组件</li>
2056
2077
  </ul>
2057
- <pre><code class="language-ts"><span class="hl-4">// 组件schema配置</span><br/><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-10">container</span><span class="hl-0">: </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">item</span><span class="hl-0">: </span><span class="hl-2">&#39;MarkdownPreview&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-10">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-10">isRender</span><span class="hl-0">: </span><span class="hl-3">true</span><span class="hl-0">, </span><span class="hl-4">// 初次是否挂载(true标识为初次挂载|false为不挂载)</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">},</span><br/><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0">{</span><br/><span class="hl-4">//获取到选中的文件路径</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">FileInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">// payload.openedPath 文件路径(可用来获取文件后缀)</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">...</span><br/><span class="hl-0">})</span><br/><span class="hl-4">// 控制预览组件的 挂载|销毁 - flag为true表示挂载</span><br/><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">toggleMarkDownPreview</span><span class="hl-0">(</span><span class="hl-1">flag</span><span class="hl-0">);</span>
2078
+ <pre><code class="language-ts"><span class="hl-4">// 组件schema配置</span><br/><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-10">container</span><span class="hl-1">: </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">item</span><span class="hl-1">: </span><span class="hl-5">&#39;MarkdownPreview&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-10">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-10">isRender</span><span class="hl-1">: </span><span class="hl-0">true</span><span class="hl-1">, </span><span class="hl-4">// 初次是否挂载(true标识为初次挂载|false为不挂载)</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">},</span><br/><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1">{</span><br/><span class="hl-4">//获取到选中的文件路径</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">FileInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-4">// payload.openedPath 文件路径(可用来获取文件后缀)</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">...</span><br/><span class="hl-1">})</span><br/><span class="hl-4">// 控制预览组件的 挂载|销毁 - flag为true表示挂载</span><br/><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">toggleMarkDownPreview</span><span class="hl-1">(</span><span class="hl-3">flag</span><span class="hl-1">);</span>
2058
2079
  </code></pre>
2059
2080
  <ul>
2060
2081
  <li>新增是否显示隐藏文件的功能</li>
@@ -2076,7 +2097,7 @@
2076
2097
  <h2>v0.9.55</h2>
2077
2098
  </a>
2078
2099
 
2079
- <a href="#优化-52" id="优化-52" style="color: inherit; text-decoration: none;">
2100
+ <a href="#优化-53" id="优化-53" style="color: inherit; text-decoration: none;">
2080
2101
  <h2>优化</h2>
2081
2102
  </a>
2082
2103
  <ul>
@@ -2094,7 +2115,7 @@
2094
2115
  <h2>v0.9.54</h2>
2095
2116
  </a>
2096
2117
 
2097
- <a href="#新增-50" id="新增-50" style="color: inherit; text-decoration: none;">
2118
+ <a href="#新增-51" id="新增-51" style="color: inherit; text-decoration: none;">
2098
2119
  <h3>新增</h3>
2099
2120
  </a>
2100
2121
  <ul>
@@ -2104,7 +2125,7 @@
2104
2125
  <li>lsp新增断线重连机制,断线后的状态会从运行中变为连接中</li>
2105
2126
  <li>编辑器新增自动换行配置,默认会自动化换行,新增缩进方式的配置,默认以空格作为缩进,调用方式如下</li>
2106
2127
  </ul>
2107
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">daoPaas</span><span class="hl-0">.</span><span class="hl-5">updateGlobalConfig</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">//...</span><br/><span class="hl-0"> </span><span class="hl-1">editorWordWrap:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">, </span><span class="hl-4">// or false</span><br/><span class="hl-0"> </span><span class="hl-1">editorIndentMode:</span><span class="hl-0"> </span><span class="hl-2">&#39;space&#39;</span><span class="hl-0"> </span><span class="hl-4">// or tab</span><br/><span class="hl-0"> </span><span class="hl-4">//...</span><br/><span class="hl-0"> })</span>
2128
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">daoPaas</span><span class="hl-1">.</span><span class="hl-2">updateGlobalConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">//...</span><br/><span class="hl-1"> </span><span class="hl-3">editorWordWrap:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">, </span><span class="hl-4">// or false</span><br/><span class="hl-1"> </span><span class="hl-3">editorIndentMode:</span><span class="hl-1"> </span><span class="hl-5">&#39;space&#39;</span><span class="hl-1"> </span><span class="hl-4">// or tab</span><br/><span class="hl-1"> </span><span class="hl-4">//...</span><br/><span class="hl-1"> })</span>
2108
2129
  </code></pre>
2109
2130
  <ul>
2110
2131
  <li>新增<code>terminal</code>加载进度条UI效果</li>
@@ -2113,7 +2134,7 @@
2113
2134
  <li>支持<code>Elixir</code> 代码高亮</li>
2114
2135
  <li>语言国际化功能,目前仅支持<code>ZH(中文)|EN(英文)</code>(默认中文)</li>
2115
2136
  </ul>
2116
- <pre><code class="language-ts"><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0"> ({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">i18nLanguage</span><span class="hl-0">:</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-7">ZH</span><span class="hl-0"> </span><span class="hl-4">// i18nLanguage 如果不传递,则默认为: ZH</span><br/><span class="hl-0"> })</span><br/><span class="hl-4">// 手动调用接口进行语言切换</span><br/><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">switchI18nLanguage</span><span class="hl-0">(</span><span class="hl-1">lang</span><span class="hl-0">:</span><span class="hl-1">I18nLanguageType</span><span class="hl-0">);</span><br/><span class="hl-4">// 国际化支持语言类型</span><br/><span class="hl-9">export</span><span class="hl-0"> </span><span class="hl-3">enum</span><span class="hl-0"> </span><span class="hl-8">I18nLanguageType</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">/** 中文 */</span><br/><span class="hl-0"> </span><span class="hl-7">ZH</span><span class="hl-0"> = </span><span class="hl-2">&#39;ZH&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">/** 英文 */</span><br/><span class="hl-0"> </span><span class="hl-7">EN</span><span class="hl-0"> = </span><span class="hl-2">&#39;EN&#39;</span><span class="hl-0">,</span><br/><span class="hl-0">}</span>
2137
+ <pre><code class="language-ts"><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1"> ({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">i18nLanguage</span><span class="hl-1">:</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-7">ZH</span><span class="hl-1"> </span><span class="hl-4">// i18nLanguage 如果不传递,则默认为: ZH</span><br/><span class="hl-1"> })</span><br/><span class="hl-4">// 手动调用接口进行语言切换</span><br/><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">switchI18nLanguage</span><span class="hl-1">(</span><span class="hl-3">lang</span><span class="hl-1">:</span><span class="hl-3">I18nLanguageType</span><span class="hl-1">);</span><br/><span class="hl-4">// 国际化支持语言类型</span><br/><span class="hl-9">export</span><span class="hl-1"> </span><span class="hl-0">enum</span><span class="hl-1"> </span><span class="hl-8">I18nLanguageType</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">/** 中文 */</span><br/><span class="hl-1"> </span><span class="hl-7">ZH</span><span class="hl-1"> = </span><span class="hl-5">&#39;ZH&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">/** 英文 */</span><br/><span class="hl-1"> </span><span class="hl-7">EN</span><span class="hl-1"> = </span><span class="hl-5">&#39;EN&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}</span>
2117
2138
  </code></pre>
2118
2139
 
2119
2140
  <a href="#修复-68" id="修复-68" style="color: inherit; text-decoration: none;">
@@ -2141,13 +2162,13 @@
2141
2162
  <h2>v0.9.51</h2>
2142
2163
  </a>
2143
2164
 
2144
- <a href="#新增-51" id="新增-51" style="color: inherit; text-decoration: none;">
2165
+ <a href="#新增-52" id="新增-52" style="color: inherit; text-decoration: none;">
2145
2166
  <h3>新增</h3>
2146
2167
  </a>
2147
2168
  <ul>
2148
2169
  <li>新增统计数据获取接口<code>statisticsPlaybackData</code>,使用方式如下:</li>
2149
2170
  </ul>
2150
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">statisticsPlaybackData</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-1">eventName</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">questionIds</span><span class="hl-0">.</span><span class="hl-5">split</span><span class="hl-0">(</span><span class="hl-2">&#39;,&#39;</span><span class="hl-0">).</span><span class="hl-5">map</span><span class="hl-0">((</span><span class="hl-1">item</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> +</span><span class="hl-1">item</span><span class="hl-0">),</span><br/><span class="hl-0"> );</span>
2171
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">statisticsPlaybackData</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">eventName</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">questionIds</span><span class="hl-1">.</span><span class="hl-2">split</span><span class="hl-1">(</span><span class="hl-5">&#39;,&#39;</span><span class="hl-1">).</span><span class="hl-2">map</span><span class="hl-1">((</span><span class="hl-3">item</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> +</span><span class="hl-3">item</span><span class="hl-1">),</span><br/><span class="hl-1"> );</span>
2151
2172
  </code></pre>
2152
2173
  <blockquote>
2153
2174
  <ol>
@@ -2156,7 +2177,7 @@
2156
2177
  <li>返回的数据<code>data</code>是一个问题和统计结果的对象,问题ID作为对象ID,如:</li>
2157
2178
  </ol>
2158
2179
  </blockquote>
2159
- <pre><code class="language-js"><span class="hl-1">res</span><span class="hl-0"> = {</span><br/><span class="hl-0"> </span><span class="hl-1">status:</span><span class="hl-0"> </span><span class="hl-2">&#39;success&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">data:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1">:</span><span class="hl-0"> </span><span class="hl-6">120</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;2&#39;</span><span class="hl-1">:</span><span class="hl-0"> </span><span class="hl-6">211</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-1">:</span><span class="hl-0"> </span><span class="hl-6">999</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
2180
+ <pre><code class="language-js"><span class="hl-3">res</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-3">status:</span><span class="hl-1"> </span><span class="hl-5">&#39;success&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">data:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-3">:</span><span class="hl-1"> </span><span class="hl-6">120</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;2&#39;</span><span class="hl-3">:</span><span class="hl-1"> </span><span class="hl-6">211</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-3">:</span><span class="hl-1"> </span><span class="hl-6">999</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
2160
2181
  </code></pre>
2161
2182
 
2162
2183
  <a href="#修复-70" id="修复-70" style="color: inherit; text-decoration: none;">
@@ -2170,13 +2191,13 @@
2170
2191
  <h2>v0.9.50</h2>
2171
2192
  </a>
2172
2193
 
2173
- <a href="#新增-52" id="新增-52" style="color: inherit; text-decoration: none;">
2194
+ <a href="#新增-53" id="新增-53" style="color: inherit; text-decoration: none;">
2174
2195
  <h3>新增</h3>
2175
2196
  </a>
2176
2197
  <ul>
2177
2198
  <li>新增切换编程语言接口<code>daoPaasObj?.switchLanguage</code>,返回<code>Promise</code>,ß使用方式如下:</li>
2178
2199
  </ul>
2179
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">switchLanguage</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-1">languageType</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageValue</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">languageFileName</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">[</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">status</span><span class="hl-0"> ? </span><span class="hl-2">&#39;info&#39;</span><span class="hl-0"> : </span><span class="hl-2">&#39;error&#39;</span><span class="hl-0">](</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">message</span><span class="hl-0">);</span>
2200
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">switchLanguage</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">languageType</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageValue</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">languageFileName</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">[</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">status</span><span class="hl-1"> ? </span><span class="hl-5">&#39;info&#39;</span><span class="hl-1"> : </span><span class="hl-5">&#39;error&#39;</span><span class="hl-1">](</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">message</span><span class="hl-1">);</span>
2180
2201
  </code></pre>
2181
2202
  <blockquote>
2182
2203
  <ol>
@@ -2184,7 +2205,7 @@
2184
2205
  <li>languageValue: 要切换的目标语言,每种文件类型支持的目标语言映射表:</li>
2185
2206
  </ol>
2186
2207
  </blockquote>
2187
- <pre><code class="language-js"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-10">HTML</span><span class="hl-0">: [</span><span class="hl-2">&#39;html&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;pug&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;hbs&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;md&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-10">CSS</span><span class="hl-0">: [</span><span class="hl-2">&#39;css&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;less&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;scss&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;sass&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;styl&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-10">JS</span><span class="hl-0">: [</span><span class="hl-2">&#39;js&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;ts&#39;</span><span class="hl-0">, </span><span class="hl-2">&#39;coffee&#39;</span><span class="hl-0">],</span><br/><span class="hl-0">}</span>
2208
+ <pre><code class="language-js"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-10">HTML</span><span class="hl-1">: [</span><span class="hl-5">&#39;html&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;pug&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;hbs&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;md&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-10">CSS</span><span class="hl-1">: [</span><span class="hl-5">&#39;css&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;less&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;scss&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;sass&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;styl&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-10">JS</span><span class="hl-1">: [</span><span class="hl-5">&#39;js&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;ts&#39;</span><span class="hl-1">, </span><span class="hl-5">&#39;coffee&#39;</span><span class="hl-1">],</span><br/><span class="hl-1">}</span>
2188
2209
  </code></pre>
2189
2210
  <blockquote>
2190
2211
  <ol start="3">
@@ -2194,7 +2215,7 @@
2194
2215
  <ul>
2195
2216
  <li>新增向<code>index.html</code>文件中注入CDN资源,返回<code>Promsie</code>,使用方式如下:</li>
2196
2217
  </ul>
2197
- <pre><code class="language-js"><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">addCDNSource</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-1">cdnUrlType</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">cdnUrlPath</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">cdnUrlFileName</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-1">messageBox</span><span class="hl-0">[</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">status</span><span class="hl-0"> ? </span><span class="hl-2">&#39;info&#39;</span><span class="hl-0"> : </span><span class="hl-2">&#39;error&#39;</span><span class="hl-0">](</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">message</span><span class="hl-0">);</span>
2218
+ <pre><code class="language-js"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">addCDNSource</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">cdnUrlType</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">cdnUrlPath</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">cdnUrlFileName</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-3">messageBox</span><span class="hl-1">[</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">status</span><span class="hl-1"> ? </span><span class="hl-5">&#39;info&#39;</span><span class="hl-1"> : </span><span class="hl-5">&#39;error&#39;</span><span class="hl-1">](</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">message</span><span class="hl-1">);</span>
2198
2219
  </code></pre>
2199
2220
  <blockquote>
2200
2221
  <ol>
@@ -2206,13 +2227,13 @@
2206
2227
  <ul>
2207
2228
  <li>支持全局配置,目前可设置默认缩进的大小和编辑器的模式,调用方式如下</li>
2208
2229
  </ul>
2209
- <pre><code class="language-javascript"><span class="hl-4">// ...</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">updateGlobalConfig</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">editorMode:</span><span class="hl-0"> </span><span class="hl-2">&#39;default&#39;</span><span class="hl-0">, </span><span class="hl-4">// 支持的参数为 default | vim | emacs</span><br/><span class="hl-0"> </span><span class="hl-1">editorTabSize:</span><span class="hl-0"> </span><span class="hl-6">2</span><span class="hl-0">,</span><br/><span class="hl-0">})</span><br/><span class="hl-4">// ...</span>
2230
+ <pre><code class="language-javascript"><span class="hl-4">// ...</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">updateGlobalConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">editorMode:</span><span class="hl-1"> </span><span class="hl-5">&#39;default&#39;</span><span class="hl-1">, </span><span class="hl-4">// 支持的参数为 default | vim | emacs</span><br/><span class="hl-1"> </span><span class="hl-3">editorTabSize:</span><span class="hl-1"> </span><span class="hl-6">2</span><span class="hl-1">,</span><br/><span class="hl-1">})</span><br/><span class="hl-4">// ...</span>
2210
2231
  </code></pre>
2211
2232
  <p><strong>注意</strong>: 以上配置的属性都是可选项,若不设置会采用默认的设置,默认编辑模式就是文本编辑模式,缩进默认是2,若之前设置过,则会使用之前的设置</p>
2212
2233
  <ul>
2213
2234
  <li>优化提示交互体验,在切题时,需要调用<code>reload</code>方法,该方法可以重置一些loading状态和初始数据,方法接收一个数组为参数,不传默认为<code>[&#39;Editor&#39;, &#39;Tree&#39;]</code>, 该方法一经调用,便会清空当前的文件树和编辑器,进入组件的loading状态,避免出现已经切题,上层已经loading,SDK依然显示旧数据的情况</li>
2214
2235
  </ul>
2215
- <pre><code class="language-javascript"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">reload</span><span class="hl-0">()</span>
2236
+ <pre><code class="language-javascript"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">reload</span><span class="hl-1">()</span>
2216
2237
  </code></pre>
2217
2238
  <ul>
2218
2239
  <li>优化IDE server新增fileRootId,编辑器的OT相关操作和文件树操作的相关操作,会携带fileRootId参数到IDE Server,IDE Server会判断传进来的fileRootId是否和服务器匹配,不匹配就会放弃后面的操作</li>
@@ -2224,7 +2245,7 @@
2224
2245
  <h2>v0.9.49</h2>
2225
2246
  </a>
2226
2247
 
2227
- <a href="#新增-53" id="新增-53" style="color: inherit; text-decoration: none;">
2248
+ <a href="#新增-54" id="新增-54" style="color: inherit; text-decoration: none;">
2228
2249
  <h3>新增</h3>
2229
2250
  </a>
2230
2251
  <ul>
@@ -2243,18 +2264,18 @@
2243
2264
  <h2>v0.9.48</h2>
2244
2265
  </a>
2245
2266
 
2246
- <a href="#新增-54" id="新增-54" style="color: inherit; text-decoration: none;">
2267
+ <a href="#新增-55" id="新增-55" style="color: inherit; text-decoration: none;">
2247
2268
  <h3>新增</h3>
2248
2269
  </a>
2249
2270
  <ul>
2250
2271
  <li>回放功能,新增停止回放接口</li>
2251
2272
  </ul>
2252
- <pre><code class="language-js"><span class="hl-1">daoPaasObj</span><span class="hl-0">.</span><span class="hl-5">stopPlayback</span><span class="hl-0">();</span>
2273
+ <pre><code class="language-js"><span class="hl-3">daoPaasObj</span><span class="hl-1">.</span><span class="hl-2">stopPlayback</span><span class="hl-1">();</span>
2253
2274
  </code></pre>
2254
2275
  <ul>
2255
2276
  <li>回放功能,在回放过程中,新增广播自定义数据帧事件</li>
2256
2277
  </ul>
2257
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-5">setSpinLoading</span><span class="hl-0">(</span><span class="hl-3">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;customize&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">// 可以根据:payload.data.action 来判断具体是哪种自定义数据帧</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-2">&#39;Customize Event:&#39;</span><span class="hl-0">, </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">data</span><span class="hl-0">.</span><span class="hl-1">action</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span>
2278
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-2">setSpinLoading</span><span class="hl-1">(</span><span class="hl-0">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;customize&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-4">// 可以根据:payload.data.action 来判断具体是哪种自定义数据帧</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-5">&#39;Customize Event:&#39;</span><span class="hl-1">, </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">data</span><span class="hl-1">.</span><span class="hl-3">action</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span>
2258
2279
  </code></pre>
2259
2280
  <ul>
2260
2281
  <li><p>新增数据帧前后两帧数据间隔时长超过指定的阈值,广播事件,自定义事件名称跟上面一样:<code>customize</code>,其<code>action</code> 为: <code>timespanEvent</code></p>
@@ -2262,19 +2283,19 @@
2262
2283
  <li><p>将上述具体时间间隔的数值通过初始化<code>DaoPassS</code>对象进行配置:</p>
2263
2284
  </li>
2264
2285
  </ul>
2265
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">paasDomain:</span><span class="hl-0"> </span><span class="hl-1">process</span><span class="hl-0">.</span><span class="hl-1">env</span><span class="hl-0">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">tenantId:</span><span class="hl-0"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">ticket:</span><span class="hl-0"> </span><span class="hl-1">dataRes</span><span class="hl-0">?.</span><span class="hl-1">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">triggerEventForMaxTimespan:</span><span class="hl-0"> </span><span class="hl-6">1000</span><span class="hl-0"> * </span><span class="hl-6">2</span><span class="hl-0">, </span><span class="hl-4">// 配置该属性,如果不配置该属性值,则不会广播事件</span><br/><span class="hl-0"> </span><span class="hl-1">userInfo:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">username:</span><span class="hl-0"> </span><span class="hl-1">DemoUserInfo</span><span class="hl-0">.</span><span class="hl-1">name</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> });</span>
2286
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">paasDomain:</span><span class="hl-1"> </span><span class="hl-3">process</span><span class="hl-1">.</span><span class="hl-3">env</span><span class="hl-1">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">tenantId:</span><span class="hl-1"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">ticket:</span><span class="hl-1"> </span><span class="hl-3">dataRes</span><span class="hl-1">?.</span><span class="hl-3">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">triggerEventForMaxTimespan:</span><span class="hl-1"> </span><span class="hl-6">1000</span><span class="hl-1"> * </span><span class="hl-6">2</span><span class="hl-1">, </span><span class="hl-4">// 配置该属性,如果不配置该属性值,则不会广播事件</span><br/><span class="hl-1"> </span><span class="hl-3">userInfo:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">username:</span><span class="hl-1"> </span><span class="hl-3">DemoUserInfo</span><span class="hl-1">.</span><span class="hl-3">name</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> });</span>
2266
2287
  </code></pre>
2267
2288
  <ul>
2268
2289
  <li>将<code>websocket</code>断开重连的尝试次数,控制交由业务方进行控制,如果业务方不配置, 则默认为重连<strong>5次</strong>,则广播对应的事件</li>
2269
2290
  </ul>
2270
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">paasDomain:</span><span class="hl-0"> </span><span class="hl-1">process</span><span class="hl-0">.</span><span class="hl-1">env</span><span class="hl-0">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">tenantId:</span><span class="hl-0"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">ticket:</span><span class="hl-0"> </span><span class="hl-1">dataRes</span><span class="hl-0">?.</span><span class="hl-1">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">reconnectMaxTimes:</span><span class="hl-0"> </span><span class="hl-6">6</span><span class="hl-0">, </span><span class="hl-4">// 配置改属性,如果不配置,则默认为最大重试5次</span><br/><span class="hl-0"> </span><span class="hl-1">userInfo:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">username:</span><span class="hl-0"> </span><span class="hl-1">DemoUserInfo</span><span class="hl-0">.</span><span class="hl-1">name</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> });</span>
2291
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">paasDomain:</span><span class="hl-1"> </span><span class="hl-3">process</span><span class="hl-1">.</span><span class="hl-3">env</span><span class="hl-1">.</span><span class="hl-7">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">tenantId:</span><span class="hl-1"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">ticket:</span><span class="hl-1"> </span><span class="hl-3">dataRes</span><span class="hl-1">?.</span><span class="hl-3">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">reconnectMaxTimes:</span><span class="hl-1"> </span><span class="hl-6">6</span><span class="hl-1">, </span><span class="hl-4">// 配置改属性,如果不配置,则默认为最大重试5次</span><br/><span class="hl-1"> </span><span class="hl-3">userInfo:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">username:</span><span class="hl-1"> </span><span class="hl-3">DemoUserInfo</span><span class="hl-1">.</span><span class="hl-3">name</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> });</span>
2271
2292
  </code></pre>
2272
2293
  <ul>
2273
2294
  <li>新增拖拽文件或文件夹到指定目录</li>
2274
2295
  <li>新增拖拽文件或文件夹并上传到指定目录</li>
2275
2296
  <li>新增下载项目文件</li>
2276
2297
  </ul>
2277
- <pre><code class="language-js"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">props:</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-1">fileRootActions</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">label:</span><span class="hl-0"> </span><span class="hl-2">&#39;下载项目&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">onClick</span><span class="hl-1">:</span><span class="hl-0"> () </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-5">getProjectCode</span><span class="hl-0">(</span><span class="hl-1">playgroundId</span><span class="hl-0">).</span><span class="hl-5">then</span><span class="hl-0">((</span><span class="hl-1">res</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">blob</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">Blob</span><span class="hl-0">([</span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">data</span><span class="hl-0">]);</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">url</span><span class="hl-0"> = </span><span class="hl-1">window</span><span class="hl-0">.</span><span class="hl-7">URL</span><span class="hl-0">.</span><span class="hl-5">createObjectURL</span><span class="hl-0">(</span><span class="hl-1">blob</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">ele</span><span class="hl-0"> = </span><span class="hl-1">document</span><span class="hl-0">.</span><span class="hl-5">createElement</span><span class="hl-0">(</span><span class="hl-2">&#39;a&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">ele</span><span class="hl-0">.</span><span class="hl-1">style</span><span class="hl-0">.</span><span class="hl-1">display</span><span class="hl-0"> = </span><span class="hl-2">&#39;none&#39;</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">ele</span><span class="hl-0">.</span><span class="hl-1">href</span><span class="hl-0"> = </span><span class="hl-1">url</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">ele</span><span class="hl-0">.</span><span class="hl-1">download</span><span class="hl-0"> = </span><span class="hl-2">&#39;download.zip&#39;</span><span class="hl-0">; </span><span class="hl-4">// 下载文件夹的名称业务方进行自定义, 后缀可以从res header 获取</span><br/><span class="hl-0"> </span><span class="hl-1">document</span><span class="hl-0">.</span><span class="hl-1">body</span><span class="hl-0">.</span><span class="hl-5">appendChild</span><span class="hl-0">(</span><span class="hl-1">ele</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">ele</span><span class="hl-0">.</span><span class="hl-5">click</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-1">ele</span><span class="hl-0">.</span><span class="hl-5">remove</span><span class="hl-0">();</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">]);</span>
2298
+ <pre><code class="language-js"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">props:</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-3">fileRootActions</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">label:</span><span class="hl-1"> </span><span class="hl-5">&#39;下载项目&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">onClick</span><span class="hl-3">:</span><span class="hl-1"> () </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">getProjectCode</span><span class="hl-1">(</span><span class="hl-3">playgroundId</span><span class="hl-1">).</span><span class="hl-2">then</span><span class="hl-1">((</span><span class="hl-3">res</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">blob</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">Blob</span><span class="hl-1">([</span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">data</span><span class="hl-1">]);</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">url</span><span class="hl-1"> = </span><span class="hl-3">window</span><span class="hl-1">.</span><span class="hl-7">URL</span><span class="hl-1">.</span><span class="hl-2">createObjectURL</span><span class="hl-1">(</span><span class="hl-3">blob</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">ele</span><span class="hl-1"> = </span><span class="hl-3">document</span><span class="hl-1">.</span><span class="hl-2">createElement</span><span class="hl-1">(</span><span class="hl-5">&#39;a&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">ele</span><span class="hl-1">.</span><span class="hl-3">style</span><span class="hl-1">.</span><span class="hl-3">display</span><span class="hl-1"> = </span><span class="hl-5">&#39;none&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">ele</span><span class="hl-1">.</span><span class="hl-3">href</span><span class="hl-1"> = </span><span class="hl-3">url</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">ele</span><span class="hl-1">.</span><span class="hl-3">download</span><span class="hl-1"> = </span><span class="hl-5">&#39;download.zip&#39;</span><span class="hl-1">; </span><span class="hl-4">// 下载文件夹的名称业务方进行自定义, 后缀可以从res header 获取</span><br/><span class="hl-1"> </span><span class="hl-3">document</span><span class="hl-1">.</span><span class="hl-3">body</span><span class="hl-1">.</span><span class="hl-2">appendChild</span><span class="hl-1">(</span><span class="hl-3">ele</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">ele</span><span class="hl-1">.</span><span class="hl-2">click</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-3">ele</span><span class="hl-1">.</span><span class="hl-2">remove</span><span class="hl-1">();</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">]);</span>
2278
2299
  </code></pre>
2279
2300
 
2280
2301
  <a href="#修复-72" id="修复-72" style="color: inherit; text-decoration: none;">
@@ -2288,7 +2309,7 @@
2288
2309
  <h2>v0.9.47</h2>
2289
2310
  </a>
2290
2311
 
2291
- <a href="#新增-55" id="新增-55" style="color: inherit; text-decoration: none;">
2312
+ <a href="#新增-56" id="新增-56" style="color: inherit; text-decoration: none;">
2292
2313
  <h3>新增</h3>
2293
2314
  </a>
2294
2315
  <ul>
@@ -2308,14 +2329,14 @@
2308
2329
  <h2>v0.9.46</h2>
2309
2330
  </a>
2310
2331
 
2311
- <a href="#新增-56" id="新增-56" style="color: inherit; text-decoration: none;">
2332
+ <a href="#新增-57" id="新增-57" style="color: inherit; text-decoration: none;">
2312
2333
  <h3>新增</h3>
2313
2334
  </a>
2314
2335
  <ul>
2315
2336
  <li>支持图形化界面展示功能</li>
2316
2337
  <li>支持Websocket 连接失败,重连指定次数(5次)后,仍连接失败, 广播<code>connectionBroken</code>事件给客户端进行处理</li>
2317
2338
  </ul>
2318
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onError</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">error</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">ConnectionBroken</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-1">error</span><span class="hl-0">, </span><span class="hl-6">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">}</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> }</span>
2339
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onError</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">error</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">ConnectionBroken</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-3">error</span><span class="hl-1">, </span><span class="hl-6">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">}</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> }</span>
2319
2340
  </code></pre>
2320
2341
  <ul>
2321
2342
  <li>新增回放功能,拖动播放滚动条后,再点击播放,在之前指定位置进行播放</li>
@@ -2346,7 +2367,7 @@
2346
2367
  <h2>v0.9.44</h2>
2347
2368
  </a>
2348
2369
 
2349
- <a href="#新增-57" id="新增-57" style="color: inherit; text-decoration: none;">
2370
+ <a href="#新增-58" id="新增-58" style="color: inherit; text-decoration: none;">
2350
2371
  <h3>新增</h3>
2351
2372
  </a>
2352
2373
  <ul>
@@ -2377,21 +2398,21 @@
2377
2398
  <h2>v0.9.42</h2>
2378
2399
  </a>
2379
2400
 
2380
- <a href="#新增-58" id="新增-58" style="color: inherit; text-decoration: none;">
2401
+ <a href="#新增-59" id="新增-59" style="color: inherit; text-decoration: none;">
2381
2402
  <h3>新增</h3>
2382
2403
  </a>
2383
2404
  <ul>
2384
2405
  <li>回放功能支持多题目切题回放</li>
2385
2406
  <li>回放接口添加支持自定义数据帧插入:</li>
2386
2407
  </ul>
2387
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">// 插入自定义数据帧</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">?.</span><span class="hl-5">appendCustomizeFrameData</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">action:</span><span class="hl-0"> </span><span class="hl-2">&#39;startQuestion&#39;</span><span class="hl-0">, </span><span class="hl-4">// startQuestion | endQuestion</span><br/><span class="hl-0"> </span><span class="hl-1">value:</span><span class="hl-0"> </span><span class="hl-6">1</span><span class="hl-0">, </span><span class="hl-4">// 题目ID</span><br/><span class="hl-0"> });</span>
2408
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">// 插入自定义数据帧</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">?.</span><span class="hl-2">appendCustomizeFrameData</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">action:</span><span class="hl-1"> </span><span class="hl-5">&#39;startQuestion&#39;</span><span class="hl-1">, </span><span class="hl-4">// startQuestion | endQuestion</span><br/><span class="hl-1"> </span><span class="hl-3">value:</span><span class="hl-1"> </span><span class="hl-6">1</span><span class="hl-1">, </span><span class="hl-4">// 题目ID</span><br/><span class="hl-1"> });</span>
2388
2409
  </code></pre>
2389
- <pre><code class="language-js"><span class="hl-4">// 监听自定义数据帧插入是否成功事件</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;appendCustomizeFrameData&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-2">&#39;插入数据帧成功&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">warn</span><span class="hl-0">(</span><span class="hl-2">`插入数据帧失败`</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span>
2410
+ <pre><code class="language-js"><span class="hl-4">// 监听自定义数据帧插入是否成功事件</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;appendCustomizeFrameData&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-5">&#39;插入数据帧成功&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">warn</span><span class="hl-1">(</span><span class="hl-5">`插入数据帧失败`</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span>
2390
2411
  </code></pre>
2391
2412
  <ul>
2392
2413
  <li>回放接口支持获取每个题目的数据帧情况(解析:questionsData内容 )</li>
2393
2414
  </ul>
2394
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-5">setSpinLoading</span><span class="hl-0">(</span><span class="hl-3">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">PlaybackInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">// 解析: questionsData 数据内容</span><br/><span class="hl-0"> </span><span class="hl-5">setQuestionsData</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">questionsData</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">total</span><span class="hl-0"> &gt; </span><span class="hl-6">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-5">setPlayable</span><span class="hl-0">(</span><span class="hl-3">true</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setPlaybackDuration</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">end</span><span class="hl-0"> - </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">start</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span>
2415
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-2">setSpinLoading</span><span class="hl-1">(</span><span class="hl-0">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">PlaybackInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-4">// 解析: questionsData 数据内容</span><br/><span class="hl-1"> </span><span class="hl-2">setQuestionsData</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">questionsData</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">total</span><span class="hl-1"> &gt; </span><span class="hl-6">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-2">setPlayable</span><span class="hl-1">(</span><span class="hl-0">true</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setPlaybackDuration</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">end</span><span class="hl-1"> - </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">start</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span>
2395
2416
  </code></pre>
2396
2417
 
2397
2418
  <a href="#修复-78" id="修复-78" style="color: inherit; text-decoration: none;">
@@ -2416,7 +2437,7 @@
2416
2437
  <h2>v0.9.40</h2>
2417
2438
  </a>
2418
2439
 
2419
- <a href="#新增-59" id="新增-59" style="color: inherit; text-decoration: none;">
2440
+ <a href="#新增-60" id="新增-60" style="color: inherit; text-decoration: none;">
2420
2441
  <h3>新增</h3>
2421
2442
  </a>
2422
2443
  <ul>
@@ -2437,15 +2458,15 @@
2437
2458
  <h2>v0.9.38</h2>
2438
2459
  </a>
2439
2460
 
2440
- <a href="#新增-60" id="新增-60" style="color: inherit; text-decoration: none;">
2461
+ <a href="#新增-61" id="新增-61" style="color: inherit; text-decoration: none;">
2441
2462
  <h3>新增</h3>
2442
2463
  </a>
2443
2464
  <ul>
2444
2465
  <li>添加保留文件不能删除的功能,使用方式:</li>
2445
2466
  </ul>
2446
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">// 1. 设置保留文件属性的接口</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-5">retainingAllFiles</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">status</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">success</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">message</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">messageBox</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-1">res</span><span class="hl-0">?.</span><span class="hl-1">message</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/>
2467
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">// 1. 设置保留文件属性的接口</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-2">retainingAllFiles</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">status</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">success</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">message</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">messageBox</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-3">res</span><span class="hl-1">?.</span><span class="hl-3">message</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/>
2447
2468
  </code></pre>
2448
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">// 设置是否对保留文件进行处理</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">props:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">disableFileAction:</span><span class="hl-0"> { </span><span class="hl-4">// 不是必填属性</span><br/><span class="hl-0"> </span><span class="hl-1">filesPath:</span><span class="hl-0"> [],</span><br/><span class="hl-0"> </span><span class="hl-1">isDisable:</span><span class="hl-0"> </span><span class="hl-3">true</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> ]);</span>
2469
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">// 设置是否对保留文件进行处理</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">props:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">disableFileAction:</span><span class="hl-1"> { </span><span class="hl-4">// 不是必填属性</span><br/><span class="hl-1"> </span><span class="hl-3">filesPath:</span><span class="hl-1"> [],</span><br/><span class="hl-1"> </span><span class="hl-3">isDisable:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> ]);</span>
2449
2470
  </code></pre>
2450
2471
  <ul>
2451
2472
  <li>增加LSP真实可用的状态,真实运行中的状态由之前的running改为了lspReady</li>
@@ -2471,7 +2492,7 @@
2471
2492
  <li>重构打开指定文件接口,支持Promise形式调用,需要调用方自行捕获错误信息(reject错误)</li>
2472
2493
  </ul>
2473
2494
 
2474
- <a href="#新增-61" id="新增-61" style="color: inherit; text-decoration: none;">
2495
+ <a href="#新增-62" id="新增-62" style="color: inherit; text-decoration: none;">
2475
2496
  <h3>新增</h3>
2476
2497
  </a>
2477
2498
  <ul>
@@ -2509,13 +2530,13 @@
2509
2530
  <li>重构文件树更新逻辑,数据由全量更新修改为增量更新</li>
2510
2531
  </ul>
2511
2532
 
2512
- <a href="#新增-62" id="新增-62" style="color: inherit; text-decoration: none;">
2533
+ <a href="#新增-63" id="新增-63" style="color: inherit; text-decoration: none;">
2513
2534
  <h3>新增</h3>
2514
2535
  </a>
2515
2536
  <ul>
2516
2537
  <li>新增打开指定文件的接口,<code>openFile(filePath:string) =&gt; void</code>,<font color=red>注意:该路径是相对路径</font>,调用示例方式如下:</li>
2517
2538
  </ul>
2518
- <pre><code class="language-js"><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">daoPass</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPass</span><span class="hl-0">()</span><br/><span class="hl-0">...</span><br/><span class="hl-1">daoPass</span><span class="hl-0">.</span><span class="hl-5">openFile</span><span class="hl-0">(</span><span class="hl-2">&#39;path&#39;</span><span class="hl-0">)</span><br/><span class="hl-0">...</span>
2539
+ <pre><code class="language-js"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">daoPass</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPass</span><span class="hl-1">()</span><br/><span class="hl-1">...</span><br/><span class="hl-3">daoPass</span><span class="hl-1">.</span><span class="hl-2">openFile</span><span class="hl-1">(</span><span class="hl-5">&#39;path&#39;</span><span class="hl-1">)</span><br/><span class="hl-1">...</span>
2519
2540
  </code></pre>
2520
2541
  <ul>
2521
2542
  <li>切换文件再切回时,支持了<code>undo</code>,<code>redo</code>等操作</li>
@@ -2535,7 +2556,7 @@
2535
2556
  </a>
2536
2557
  <p>当前版本变更引用地址 (<a href="https://github.com/dao42/d42paas_frontend/commit/294ae84289180e2c94d2589d0e435a9f54e530a2">294ae84289180e2c94d2589d0e435a9f54e530a2</a>)</p>
2537
2558
 
2538
- <a href="#新增-63" id="新增-63" style="color: inherit; text-decoration: none;">
2559
+ <a href="#新增-64" id="新增-64" style="color: inherit; text-decoration: none;">
2539
2560
  <h3>新增</h3>
2540
2561
  </a>
2541
2562
  <ul>
@@ -2564,7 +2585,7 @@
2564
2585
  <li><strong>0.9.29:</strong> 当前版本变更引用地址 (<a href="https://github.com/dao42/d42paas_frontend/commit/8935c97f9c6c36cfa74a58f3eda12bf562184ebc">8935c97f9c6c36cfa74a58f3eda12bf562184ebc</a>)</li>
2565
2586
  </ul>
2566
2587
 
2567
- <a href="#优化-53" id="优化-53" style="color: inherit; text-decoration: none;">
2588
+ <a href="#优化-54" id="优化-54" style="color: inherit; text-decoration: none;">
2568
2589
  <h3>优化</h3>
2569
2590
  </a>
2570
2591
  <ul>
@@ -2580,7 +2601,7 @@
2580
2601
  <li><strong>0.9.28:</strong> 当前版本变更引用地址 (<a href="https://github.com/dao42/d42paas_frontend/commit/308f32e15f00c076b94dd679c2a22a09cb487215">308f32e15f00c076b94dd679c2a22a09cb487215</a>)</li>
2581
2602
  </ul>
2582
2603
 
2583
- <a href="#优化-54" id="优化-54" style="color: inherit; text-decoration: none;">
2604
+ <a href="#优化-55" id="优化-55" style="color: inherit; text-decoration: none;">
2584
2605
  <h3>优化</h3>
2585
2606
  </a>
2586
2607
  <ul>
@@ -2624,13 +2645,13 @@
2624
2645
  <a href="#第一步:定义接口" id="第一步:定义接口" style="color: inherit; text-decoration: none;">
2625
2646
  <h3>第一步:定义接口</h3>
2626
2647
  </a>
2627
- <pre><code class="language-ts"><span class="hl-4">/* </span><br/><span class="hl-4"> * 获取codeZone环境列表 </span><br/><span class="hl-4"> * @returns { {id: int, versionList: {id: string, name: string}[]}[] }</span><br/><span class="hl-4">*/</span><br/><span class="hl-9">export</span><span class="hl-0"> </span><span class="hl-3">async</span><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">getEnvironmentsApi</span><span class="hl-0">() {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">axios</span><span class="hl-0">.</span><span class="hl-5">get</span><span class="hl-0">(</span><span class="hl-2">&#39;/api/v1/sdk/environments&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> </span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">data</span><span class="hl-0"> </span><span class="hl-4">// 环境列表(数组)</span><br/><span class="hl-0">}</span><br/><span class="hl-4">/* </span><br/><span class="hl-4"> * 创建codeZone, 获取codeZoneId</span><br/><span class="hl-4"> * @param { string } environmentVerId 环境id</span><br/><span class="hl-4"> * @returns { string }</span><br/><span class="hl-4">*/</span><br/><span class="hl-3">async</span><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">getCodeZoneIdApi</span><span class="hl-0">(</span><span class="hl-1">environmentVerId</span><span class="hl-0">: </span><span class="hl-8">string</span><span class="hl-0">): </span><span class="hl-8">string</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">axios</span><span class="hl-0">.</span><span class="hl-5">post</span><span class="hl-0">(</span><span class="hl-2">&#39;/api/v1/sdk/codeZones&#39;</span><span class="hl-0">,{</span><span class="hl-1">environmentVerId</span><span class="hl-0">})</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> </span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">data</span><span class="hl-0">.</span><span class="hl-1">id</span><br/><span class="hl-0">}</span><br/><span class="hl-4">/* </span><br/><span class="hl-4"> * 通过 codeZoneId 获取 playgroundId</span><br/><span class="hl-4"> * @param { string } codeZoneId </span><br/><span class="hl-4"> * @returns { string }</span><br/><span class="hl-4">*/</span><br/><span class="hl-3">async</span><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">getPlaygroundIdApi</span><span class="hl-0">(</span><span class="hl-1">codeZoneId</span><span class="hl-0">: </span><span class="hl-8">string</span><span class="hl-0">): </span><span class="hl-8">string</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">axios</span><span class="hl-0">.</span><span class="hl-5">get</span><span class="hl-0">(</span><span class="hl-2">&#39;/api/v1/sdk/codeZones/&#39;</span><span class="hl-0">+</span><span class="hl-1">codeZoneId</span><span class="hl-0">+</span><span class="hl-2">&#39;/playground&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> </span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">data</span><span class="hl-0">.</span><span class="hl-1">id</span><br/><span class="hl-0">}</span><br/><span class="hl-4">/* </span><br/><span class="hl-4"> * 通过 playgroundId 获取 ticket</span><br/><span class="hl-4"> * @param { string } playgroundId </span><br/><span class="hl-4"> * @returns { string }</span><br/><span class="hl-4">*/</span><br/><span class="hl-3">async</span><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">getTicketApi</span><span class="hl-0">(</span><span class="hl-1">playgroundId</span><span class="hl-0">: </span><span class="hl-8">string</span><span class="hl-0">): </span><span class="hl-8">string</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">res</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-1">axios</span><span class="hl-0">.</span><span class="hl-5">post</span><span class="hl-0">(</span><span class="hl-2">&#39;/api/v1/sdk/ticket&#39;</span><span class="hl-0">, {</span><br/><span class="hl-0"> </span><span class="hl-1">playgroundId</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">tillTime:</span><span class="hl-0"> </span><span class="hl-8">Date</span><span class="hl-0">.</span><span class="hl-5">now</span><span class="hl-0">() + </span><span class="hl-6">12</span><span class="hl-0">*</span><span class="hl-6">60</span><span class="hl-0">*</span><span class="hl-6">60</span><span class="hl-0">*</span><span class="hl-6">1000</span><span class="hl-0">, </span><span class="hl-4">// 截止时间(时间戳)</span><br/><span class="hl-0"> </span><span class="hl-1">userInfo:</span><span class="hl-0"> {}, </span><span class="hl-4">// 数据格式请参考接口文档</span><br/><span class="hl-0"> })</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> </span><span class="hl-1">res</span><span class="hl-0">.</span><span class="hl-1">data</span><span class="hl-0">.</span><span class="hl-1">ticket</span><br/><span class="hl-0">}</span>
2648
+ <pre><code class="language-ts"><span class="hl-4">/* </span><br/><span class="hl-4"> * 获取codeZone环境列表 </span><br/><span class="hl-4"> * @returns { {id: int, versionList: {id: string, name: string}[]}[] }</span><br/><span class="hl-4">*/</span><br/><span class="hl-9">export</span><span class="hl-1"> </span><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">getEnvironmentsApi</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">axios</span><span class="hl-1">.</span><span class="hl-2">get</span><span class="hl-1">(</span><span class="hl-5">&#39;/api/v1/sdk/environments&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> </span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">data</span><span class="hl-1"> </span><span class="hl-4">// 环境列表(数组)</span><br/><span class="hl-1">}</span><br/><span class="hl-4">/* </span><br/><span class="hl-4"> * 创建codeZone, 获取codeZoneId</span><br/><span class="hl-4"> * @param { string } environmentVerId 环境id</span><br/><span class="hl-4"> * @returns { string }</span><br/><span class="hl-4">*/</span><br/><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">getCodeZoneIdApi</span><span class="hl-1">(</span><span class="hl-3">environmentVerId</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">): </span><span class="hl-8">string</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">axios</span><span class="hl-1">.</span><span class="hl-2">post</span><span class="hl-1">(</span><span class="hl-5">&#39;/api/v1/sdk/codeZones&#39;</span><span class="hl-1">,{</span><span class="hl-3">environmentVerId</span><span class="hl-1">})</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> </span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">data</span><span class="hl-1">.</span><span class="hl-3">id</span><br/><span class="hl-1">}</span><br/><span class="hl-4">/* </span><br/><span class="hl-4"> * 通过 codeZoneId 获取 playgroundId</span><br/><span class="hl-4"> * @param { string } codeZoneId </span><br/><span class="hl-4"> * @returns { string }</span><br/><span class="hl-4">*/</span><br/><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">getPlaygroundIdApi</span><span class="hl-1">(</span><span class="hl-3">codeZoneId</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">): </span><span class="hl-8">string</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">axios</span><span class="hl-1">.</span><span class="hl-2">get</span><span class="hl-1">(</span><span class="hl-5">&#39;/api/v1/sdk/codeZones/&#39;</span><span class="hl-1">+</span><span class="hl-3">codeZoneId</span><span class="hl-1">+</span><span class="hl-5">&#39;/playground&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> </span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">data</span><span class="hl-1">.</span><span class="hl-3">id</span><br/><span class="hl-1">}</span><br/><span class="hl-4">/* </span><br/><span class="hl-4"> * 通过 playgroundId 获取 ticket</span><br/><span class="hl-4"> * @param { string } playgroundId </span><br/><span class="hl-4"> * @returns { string }</span><br/><span class="hl-4">*/</span><br/><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">getTicketApi</span><span class="hl-1">(</span><span class="hl-3">playgroundId</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">): </span><span class="hl-8">string</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-3">axios</span><span class="hl-1">.</span><span class="hl-2">post</span><span class="hl-1">(</span><span class="hl-5">&#39;/api/v1/sdk/ticket&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-3">playgroundId</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">tillTime:</span><span class="hl-1"> </span><span class="hl-8">Date</span><span class="hl-1">.</span><span class="hl-2">now</span><span class="hl-1">() + </span><span class="hl-6">12</span><span class="hl-1">*</span><span class="hl-6">60</span><span class="hl-1">*</span><span class="hl-6">60</span><span class="hl-1">*</span><span class="hl-6">1000</span><span class="hl-1">, </span><span class="hl-4">// 截止时间(时间戳)</span><br/><span class="hl-1"> </span><span class="hl-3">userInfo:</span><span class="hl-1"> {}, </span><span class="hl-4">// 数据格式请参考接口文档</span><br/><span class="hl-1"> })</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> </span><span class="hl-3">res</span><span class="hl-1">.</span><span class="hl-3">data</span><span class="hl-1">.</span><span class="hl-3">ticket</span><br/><span class="hl-1">}</span>
2628
2649
  </code></pre>
2629
2650
 
2630
2651
  <a href="#第二步:封装逻辑" id="第二步:封装逻辑" style="color: inherit; text-decoration: none;">
2631
2652
  <h3>第二步:封装逻辑</h3>
2632
2653
  </a>
2633
- <pre><code class="language-ts"><span class="hl-4">// 通过调用 getEnvironmentsApi() 我们获取到了codeZone环境列表, 并渲染到页面上</span><br/><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">environments</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-5">getEnvironmentsApi</span><span class="hl-0">()</span><br/><span class="hl-4">// 假设用户点击了某一个环境,我们得到了一个具体的 environmentVerId</span><br/><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">environmentVerId</span><span class="hl-0"> = </span><span class="hl-1">environments</span><span class="hl-0">[</span><span class="hl-6">0</span><span class="hl-0">].</span><span class="hl-1">versionList</span><span class="hl-0">[</span><span class="hl-6">0</span><span class="hl-0">].</span><span class="hl-1">id</span><br/><span class="hl-4">// 封装获取ticket(票)逻辑</span><br/><span class="hl-9">export</span><span class="hl-0"> </span><span class="hl-3">async</span><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">handleGetTicket</span><span class="hl-0">(</span><span class="hl-1">environmentVerId</span><span class="hl-0">: </span><span class="hl-8">string</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">codeZoneId</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-5">getCodeZoneIdApi</span><span class="hl-0">(</span><span class="hl-1">environmentVerId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">playgroundId</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-5">getPlaygroundIdApi</span><span class="hl-0">(</span><span class="hl-1">codeZoneId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">ticket</span><span class="hl-0"> = </span><span class="hl-9">await</span><span class="hl-0"> </span><span class="hl-5">getTicketApi</span><span class="hl-0">(</span><span class="hl-1">playgroundId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> </span><span class="hl-1">ticket</span><br/><span class="hl-0">}</span>
2654
+ <pre><code class="language-ts"><span class="hl-4">// 通过调用 getEnvironmentsApi() 我们获取到了codeZone环境列表, 并渲染到页面上</span><br/><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">environments</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-2">getEnvironmentsApi</span><span class="hl-1">()</span><br/><span class="hl-4">// 假设用户点击了某一个环境,我们得到了一个具体的 environmentVerId</span><br/><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">environmentVerId</span><span class="hl-1"> = </span><span class="hl-3">environments</span><span class="hl-1">[</span><span class="hl-6">0</span><span class="hl-1">].</span><span class="hl-3">versionList</span><span class="hl-1">[</span><span class="hl-6">0</span><span class="hl-1">].</span><span class="hl-3">id</span><br/><span class="hl-4">// 封装获取ticket(票)逻辑</span><br/><span class="hl-9">export</span><span class="hl-1"> </span><span class="hl-0">async</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">handleGetTicket</span><span class="hl-1">(</span><span class="hl-3">environmentVerId</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">codeZoneId</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-2">getCodeZoneIdApi</span><span class="hl-1">(</span><span class="hl-3">environmentVerId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">playgroundId</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-2">getPlaygroundIdApi</span><span class="hl-1">(</span><span class="hl-3">codeZoneId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">ticket</span><span class="hl-1"> = </span><span class="hl-9">await</span><span class="hl-1"> </span><span class="hl-2">getTicketApi</span><span class="hl-1">(</span><span class="hl-3">playgroundId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> </span><span class="hl-3">ticket</span><br/><span class="hl-1">}</span>
2634
2655
  </code></pre>
2635
2656
 
2636
2657
  <a href="#part-two-在组件中使用" id="part-two-在组件中使用" style="color: inherit; text-decoration: none;">
@@ -2640,7 +2661,7 @@
2640
2661
  <a href="#第一步:引入sdk和样式" id="第一步:引入sdk和样式" style="color: inherit; text-decoration: none;">
2641
2662
  <h3>第一步:引入SDK和样式</h3>
2642
2663
  </a>
2643
- <pre><code class="language-ts"><span class="hl-9">import</span><span class="hl-0"> { </span><span class="hl-1">DaoPaaS</span><span class="hl-0">, </span><span class="hl-1">Messages</span><span class="hl-0"> } </span><span class="hl-9">from</span><span class="hl-0"> </span><span class="hl-2">&#39;DaoPaaS.cjs&#39;</span><span class="hl-0">;</span><br/><span class="hl-9">import</span><span class="hl-0"> </span><span class="hl-2">&#39;style.css&#39;</span><span class="hl-0"> </span>
2664
+ <pre><code class="language-ts"><span class="hl-9">import</span><span class="hl-1"> { </span><span class="hl-3">DaoPaaS</span><span class="hl-1">, </span><span class="hl-3">Messages</span><span class="hl-1"> } </span><span class="hl-9">from</span><span class="hl-1"> </span><span class="hl-5">&#39;DaoPaaS.cjs&#39;</span><span class="hl-1">;</span><br/><span class="hl-9">import</span><span class="hl-1"> </span><span class="hl-5">&#39;style.css&#39;</span><span class="hl-1"> </span>
2644
2665
  </code></pre>
2645
2666
 
2646
2667
  <a href="#第二步:初始化实例" id="第二步:初始化实例" style="color: inherit; text-decoration: none;">
@@ -2649,46 +2670,46 @@
2649
2670
  <ol>
2650
2671
  <li>创建实例</li>
2651
2672
  </ol>
2652
- <pre><code class="language-ts"><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">tenantId:</span><span class="hl-0"> </span><span class="hl-2">&#39;租户id&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">ticket:</span><span class="hl-0"> </span><span class="hl-2">&#39;动态获取的ticket&#39;</span><span class="hl-0">, </span><span class="hl-4">// ticket(票)</span><br/><span class="hl-0"> </span><span class="hl-1">userInfo:</span><span class="hl-0"> { </span><span class="hl-1">username:</span><span class="hl-0"> </span><span class="hl-2">&#39;用户名&#39;</span><span class="hl-0">}, </span><span class="hl-4">// 用户信息</span><br/><span class="hl-0">});</span>
2673
+ <pre><code class="language-ts"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">tenantId:</span><span class="hl-1"> </span><span class="hl-5">&#39;租户id&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">ticket:</span><span class="hl-1"> </span><span class="hl-5">&#39;动态获取的ticket&#39;</span><span class="hl-1">, </span><span class="hl-4">// ticket(票)</span><br/><span class="hl-1"> </span><span class="hl-3">userInfo:</span><span class="hl-1"> { </span><span class="hl-3">username:</span><span class="hl-1"> </span><span class="hl-5">&#39;用户名&#39;</span><span class="hl-1">}, </span><span class="hl-4">// 用户信息</span><br/><span class="hl-1">});</span>
2653
2674
  </code></pre>
2654
2675
  <ol start="2">
2655
2676
  <li>监听消息</li>
2656
2677
  </ol>
2657
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Ready</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;appStatus readyBasic&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;playgroundInfo状态&#39;</span><span class="hl-0">, </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;语法补全状态&#39;</span><span class="hl-0">, </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">lspStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;docker运行状态&#39;</span><span class="hl-0">, </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">runStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Online</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;网络已恢复&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setSpinLoading</span><span class="hl-0">(</span><span class="hl-3">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Offline</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;网络掉线&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">StatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;playground状态发生变化&#39;</span><span class="hl-0">, </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">PlaygroundChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;playground环境变了,比如换题&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">LspStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;Lsp状态发生变化&#39;</span><span class="hl-0">, </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">RunStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;docker运行状态变化&#39;</span><span class="hl-0">, </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">dockerStatus</span><span class="hl-0"> != </span><span class="hl-2">&#39;STOP&#39;</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0">;</span><br/><span class="hl-0"> } </span><span class="hl-9">else</span><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">runResult</span><span class="hl-0"> === </span><span class="hl-6">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">`运行结果成功`</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">`运行结果失败: </span><span class="hl-3">${</span><span class="hl-1">payload</span><span class="hl-11">.</span><span class="hl-1">runResult</span><span class="hl-3">}</span><span class="hl-2">`</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">});</span>
2678
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Ready</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;appStatus readyBasic&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;playgroundInfo状态&#39;</span><span class="hl-1">, </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;语法补全状态&#39;</span><span class="hl-1">, </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">lspStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;docker运行状态&#39;</span><span class="hl-1">, </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">runStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Online</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;网络已恢复&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setSpinLoading</span><span class="hl-1">(</span><span class="hl-0">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Offline</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;网络掉线&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">StatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;playground状态发生变化&#39;</span><span class="hl-1">, </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">PlaygroundChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;playground环境变了,比如换题&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">LspStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;Lsp状态发生变化&#39;</span><span class="hl-1">, </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">RunStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;docker运行状态变化&#39;</span><span class="hl-1">, </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">dockerStatus</span><span class="hl-1"> != </span><span class="hl-5">&#39;STOP&#39;</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1">;</span><br/><span class="hl-1"> } </span><span class="hl-9">else</span><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">runResult</span><span class="hl-1"> === </span><span class="hl-6">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">`运行结果成功`</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">`运行结果失败: </span><span class="hl-0">${</span><span class="hl-3">payload</span><span class="hl-11">.</span><span class="hl-3">runResult</span><span class="hl-0">}</span><span class="hl-5">`</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
2658
2679
  </code></pre>
2659
2680
  <ol start="3">
2660
2681
  <li>监听错误消息</li>
2661
2682
  </ol>
2662
- <pre><code class="language-ts"><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onError</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">error</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">ConnectionBroken</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;与服务器的连接中断,可以尝试连接到另一个服务器&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">AuthorizationFailed</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;授权失败,所以您需要再次登录或获得一个新的ticket&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;errorFromServer&#39;</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;与服务器的连接中断&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">});</span>
2683
+ <pre><code class="language-ts"><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onError</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">error</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">ConnectionBroken</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;与服务器的连接中断,可以尝试连接到另一个服务器&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">AuthorizationFailed</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;授权失败,所以您需要再次登录或获得一个新的ticket&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;errorFromServer&#39;</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;与服务器的连接中断&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
2663
2684
  </code></pre>
2664
2685
  <ol start="4">
2665
2686
  <li>把实例的组件挂载到dom节点</li>
2666
2687
  </ol>
2667
- <pre><code class="language-ts"><span class="hl-4">// container: 项目中真实节点的选择器, item: 要挂载的dao内部组件的名称</span><br/><span class="hl-4">// 这个方法运行后,会把item对应名称的dao内部组件挂载到container配置类名的dom节点上</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Browser&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.terminal-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Shell&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.console-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Console&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0">]);</span>
2688
+ <pre><code class="language-ts"><span class="hl-4">// container: 项目中真实节点的选择器, item: 要挂载的dao内部组件的名称</span><br/><span class="hl-4">// 这个方法运行后,会把item对应名称的dao内部组件挂载到container配置类名的dom节点上</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Browser&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.terminal-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Shell&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.console-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Console&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1">]);</span>
2668
2689
  </code></pre>
2669
2690
  <ol start="5">
2670
2691
  <li>创建HTML标签</li>
2671
2692
  </ol>
2672
2693
  <p>运行<code>dao.mapRender([...])</code>方法后,会把dao内部组件渲染到对应的dom节点</p>
2673
- <pre><code class="language-html"><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-15">&quot;tree-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-15">&quot;editor-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-15">&quot;browser-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-15">&quot;console-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-15">&quot;terminal-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span>
2694
+ <pre><code class="language-html"><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-15">&quot;tree-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-15">&quot;editor-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-15">&quot;browser-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-15">&quot;console-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-15">&quot;terminal-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span>
2674
2695
  </code></pre>
2675
2696
 
2676
2697
  <a href="#第三步:销毁实例" id="第三步:销毁实例" style="color: inherit; text-decoration: none;">
2677
2698
  <h3>第三步:销毁实例</h3>
2678
2699
  </a>
2679
2700
  <p>在页面卸载的时候需要销毁dao实例和相关的缓存数据</p>
2680
- <pre><code class="language-ts"><span class="hl-5">useEffect</span><span class="hl-0">(() </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">// ...</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> () </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">dispose</span><span class="hl-0">()</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}, [])</span>
2701
+ <pre><code class="language-ts"><span class="hl-2">useEffect</span><span class="hl-1">(() </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// ...</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> () </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">dispose</span><span class="hl-1">()</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}, [])</span>
2681
2702
  </code></pre>
2682
2703
 
2683
2704
  <a href="#part-three-sdk部分其他方法" id="part-three-sdk部分其他方法" style="color: inherit; text-decoration: none;">
2684
2705
  <h2>PART-THREE SDK部分其他方法</h2>
2685
2706
  </a>
2686
- <pre><code class="language-ts"><span class="hl-4">// 配置是否在控制台开启DaoPaaS内部打印</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">loggerEnable</span><span class="hl-0">(</span><span class="hl-3">true</span><span class="hl-0">);</span><br/><span class="hl-4">// 修改主题</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">loadTheme</span><span class="hl-0">(</span><span class="hl-2">&#39;dark&#39;</span><span class="hl-0">)</span><br/><span class="hl-4">// 激活容器</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">activePlayground</span><span class="hl-0">()</span><br/><span class="hl-4">// 运行容器</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">runPlayground</span><span class="hl-0">()</span><br/><span class="hl-4">// 停止容器运行</span><br/><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">stopPlayground</span><span class="hl-0">()</span><br/><span class="hl-4">// ...</span>
2707
+ <pre><code class="language-ts"><span class="hl-4">// 配置是否在控制台开启DaoPaaS内部打印</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">loggerEnable</span><span class="hl-1">(</span><span class="hl-0">true</span><span class="hl-1">);</span><br/><span class="hl-4">// 修改主题</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">loadTheme</span><span class="hl-1">(</span><span class="hl-5">&#39;dark&#39;</span><span class="hl-1">)</span><br/><span class="hl-4">// 激活容器</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">activePlayground</span><span class="hl-1">()</span><br/><span class="hl-4">// 运行容器</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">runPlayground</span><span class="hl-1">()</span><br/><span class="hl-4">// 停止容器运行</span><br/><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">stopPlayground</span><span class="hl-1">()</span><br/><span class="hl-4">// ...</span>
2687
2708
  </code></pre>
2688
2709
 
2689
2710
  <a href="#part-four-基础案例" id="part-four-基础案例" style="color: inherit; text-decoration: none;">
2690
2711
  <h2>PART-FOUR 基础案例</h2>
2691
2712
  </a>
2692
- <pre><code class="language-tsx"><span class="hl-9">import</span><span class="hl-0"> </span><span class="hl-1">React</span><span class="hl-0">, { </span><span class="hl-1">useEffect</span><span class="hl-0">, </span><span class="hl-1">useState</span><span class="hl-0"> } </span><span class="hl-9">from</span><span class="hl-0"> </span><span class="hl-2">&#39;react&#39;</span><span class="hl-0">;</span><br/><span class="hl-9">import</span><span class="hl-0"> { </span><span class="hl-1">DaoPaaS</span><span class="hl-0">, </span><span class="hl-1">Messages</span><span class="hl-0"> } </span><span class="hl-9">from</span><span class="hl-0"> </span><span class="hl-2">&#39;~/DaoPaaS&#39;</span><span class="hl-0">;</span><br/><br/><span class="hl-3">enum</span><span class="hl-0"> </span><span class="hl-8">LspStatusEnum</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-7">NOT_SUPPORT</span><span class="hl-0"> = </span><span class="hl-2">&#39;notSupport&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-7">LOADING</span><span class="hl-0"> = </span><span class="hl-2">&#39;loading&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-7">RUNNING</span><span class="hl-0"> = </span><span class="hl-2">&#39;running&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-7">SHUTDOWN</span><span class="hl-0"> = </span><span class="hl-2">&#39;shutdown&#39;</span><span class="hl-0">,</span><br/><span class="hl-0">}</span><br/><br/><span class="hl-9">export</span><span class="hl-0"> </span><span class="hl-9">default</span><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">SimpleExample</span><span class="hl-0">({</span><span class="hl-1">environmentVerId</span><span class="hl-0">}) {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> [</span><span class="hl-7">daoPaasObj</span><span class="hl-0">, </span><span class="hl-7">setDaoPaasObj</span><span class="hl-0">] = </span><span class="hl-5">useState</span><span class="hl-0">&lt;</span><span class="hl-8">DaoPaaS</span><span class="hl-0"> | </span><span class="hl-8">null</span><span class="hl-0">&gt;(</span><span class="hl-3">null</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> [</span><span class="hl-7">playgroundStatus</span><span class="hl-0">, </span><span class="hl-7">setPlaygroundStatus</span><span class="hl-0">] =</span><br/><span class="hl-0"> </span><span class="hl-5">useState</span><span class="hl-0">&lt;</span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">&gt;(</span><span class="hl-2">&#39;EMPTY&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> [</span><span class="hl-7">dockerStatus</span><span class="hl-0">, </span><span class="hl-7">setDockerStatus</span><span class="hl-0">] = </span><span class="hl-5">useState</span><span class="hl-0">&lt;</span><span class="hl-8">DockerStatus</span><span class="hl-0">&gt;(</span><span class="hl-2">&#39;STOP&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> {</span><span class="hl-7">setLspStatus</span><span class="hl-0">, </span><span class="hl-7">LspStatusFC</span><span class="hl-0">} = </span><span class="hl-5">useLspStatus</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> [</span><span class="hl-7">remindVisible</span><span class="hl-0">, </span><span class="hl-7">setRemindVisible</span><span class="hl-0">] = </span><span class="hl-5">useState</span><span class="hl-0">(</span><span class="hl-3">false</span><span class="hl-0">);</span><br/><br/><span class="hl-0"> </span><span class="hl-4">// SDK初始化</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-5">initSDK</span><span class="hl-0"> = </span><span class="hl-3">async</span><span class="hl-0"> () </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;开始连接运行环境...&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-4">// 获取ticket(票)</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">ticket</span><span class="hl-0"> = </span><span class="hl-5">handleGetTicket</span><span class="hl-0">(</span><span class="hl-1">environmentVerId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-4">// 生成实例</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">dao</span><span class="hl-0"> = </span><span class="hl-3">new</span><span class="hl-0"> </span><span class="hl-5">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-1">paasDomain:</span><span class="hl-0"> </span><span class="hl-2">&#39;www.1024paas.com&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">tenantId:</span><span class="hl-0"> </span><span class="hl-2">&#39;请输入租户id&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">ticket:</span><span class="hl-0"> </span><span class="hl-1">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">userInfo:</span><span class="hl-0"> { </span><span class="hl-1">username:</span><span class="hl-0"> </span><span class="hl-2">&quot;***&quot;</span><span class="hl-0"> },</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">// 保存实例</span><br/><span class="hl-0"> </span><span class="hl-5">setDaoPaasObj</span><span class="hl-0">(</span><span class="hl-1">dao</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">// 监听消息</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onMessage</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">payload</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0">: </span><span class="hl-8">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">let</span><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Ready</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;连接运行环境已经停止&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-5">setRemindVisible</span><span class="hl-0">(</span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0"> === </span><span class="hl-2">&#39;INACTIVE&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setPlaygroundStatus</span><span class="hl-0">(</span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setLspStatus</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">lspStatus</span><span class="hl-0"> </span><span class="hl-9">as</span><span class="hl-0"> </span><span class="hl-8">LspStatusEnum</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-5">setDockerStatus</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-1">playgroundInfo</span><span class="hl-0">.</span><span class="hl-1">runStatus</span><span class="hl-0"> </span><span class="hl-9">as</span><span class="hl-0"> </span><span class="hl-8">DockerStatus</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Online</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;网络已恢复&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;连接运行环境已经停止&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">Offline</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;网络掉线&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">StatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">status</span><span class="hl-0"> = </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-5">setRemindVisible</span><span class="hl-0">(</span><span class="hl-1">status</span><span class="hl-0"> === </span><span class="hl-2">&#39;INACTIVE&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-5">setPlaygroundStatus</span><span class="hl-0">(</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">PlaygroundChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-5">setRemindVisible</span><span class="hl-0">(</span><span class="hl-3">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">LspStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">lspStatus</span><span class="hl-0"> = </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-5">setLspStatus</span><span class="hl-0">(</span><span class="hl-1">lspStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">RunStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">dockerStatus</span><span class="hl-0"> = </span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">status</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-5">setDockerStatus</span><span class="hl-0">(</span><span class="hl-1">dockerStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">dockerStatus</span><span class="hl-0"> != </span><span class="hl-2">&#39;STOP&#39;</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">if</span><span class="hl-0"> (</span><span class="hl-1">payload</span><span class="hl-0">.</span><span class="hl-1">runResult</span><span class="hl-0"> === </span><span class="hl-6">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">`运行结果成功`</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-9">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">warn</span><span class="hl-0">(</span><span class="hl-2">`运行结果失败: </span><span class="hl-3">${</span><span class="hl-1">payload</span><span class="hl-11">.</span><span class="hl-1">runResult</span><span class="hl-3">}</span><span class="hl-2">`</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">// 监听报错消息</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">onError</span><span class="hl-0">((</span><span class="hl-1">message</span><span class="hl-0">: </span><span class="hl-8">Message</span><span class="hl-0">) </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> { </span><span class="hl-7">name</span><span class="hl-0">, </span><span class="hl-7">error</span><span class="hl-0"> } = </span><span class="hl-1">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">switch</span><span class="hl-0"> (</span><span class="hl-1">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">ConnectionBroken</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-1">error</span><span class="hl-0">, </span><span class="hl-6">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-1">Messages</span><span class="hl-0">.</span><span class="hl-1">AuthorizationFailed</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-1">error</span><span class="hl-0">, </span><span class="hl-6">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-9">case</span><span class="hl-0"> </span><span class="hl-2">&#39;errorFromServer&#39;</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">log</span><span class="hl-0">(</span><span class="hl-2">&#39;连接运行环境已经停止&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-1">console</span><span class="hl-0">.</span><span class="hl-5">error</span><span class="hl-0">(</span><span class="hl-1">error</span><span class="hl-0">, </span><span class="hl-6">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-9">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">// 挂载实例组件</span><br/><span class="hl-0"> </span><span class="hl-1">dao</span><span class="hl-0">.</span><span class="hl-5">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Browser&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.terminal-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Shell&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-1">container:</span><span class="hl-0"> </span><span class="hl-2">&#39;.console-section&#39;</span><span class="hl-0">, </span><span class="hl-1">item:</span><span class="hl-0"> </span><span class="hl-2">&#39;Console&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> ]);</span><br/><span class="hl-0"> };</span><br/><span class="hl-0"> </span><span class="hl-4">// 语法补全连接状态</span><br/><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">useLspStatus</span><span class="hl-0">() {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> [</span><span class="hl-7">lspStatus</span><span class="hl-0">, </span><span class="hl-7">setLspStatus</span><span class="hl-0">] = </span><span class="hl-5">useState</span><span class="hl-0">&lt;</span><span class="hl-8">LspStatusEnum</span><span class="hl-0">&gt;(</span><br/><span class="hl-0"> </span><span class="hl-1">LspStatusEnum</span><span class="hl-0">.</span><span class="hl-7">LOADING</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-3">function</span><span class="hl-0"> </span><span class="hl-5">LspStatusFC</span><span class="hl-0">() {</span><br/><span class="hl-0"> </span><span class="hl-3">const</span><span class="hl-0"> </span><span class="hl-7">textMap</span><span class="hl-0"> = {</span><br/><span class="hl-0"> </span><span class="hl-1">[LspStatusEnum.</span><span class="hl-7">NOT_SUPPORT</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;不支持&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[LspStatusEnum.</span><span class="hl-7">LOADING</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[LspStatusEnum.</span><span class="hl-7">RUNNING</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;运行中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">[LspStatusEnum.</span><span class="hl-7">SHUTDOWN</span><span class="hl-1">]:</span><span class="hl-0"> </span><span class="hl-2">&#39;已关闭&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> };</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> (</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><span class="hl-0"> 代码补全·(</span><span class="hl-3">{</span><span class="hl-1">textMap</span><span class="hl-11">[</span><span class="hl-1">lspStatus</span><span class="hl-11">]</span><span class="hl-3">}</span><span class="hl-0">)</span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">setLspStatus</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-1">LspStatusFC</span><span class="hl-0">,</span><br/><span class="hl-0"> };</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-5">useEffect</span><span class="hl-0">(() </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-5">initSDK</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> () </span><span class="hl-3">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">// 在页面卸载的时候需要销毁实例和相关的缓存数据</span><br/><span class="hl-0"> </span><span class="hl-1">daoPaasObj</span><span class="hl-0"> &amp;&amp; </span><span class="hl-1">daoPaasObj</span><span class="hl-0">.</span><span class="hl-5">dispose</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-5">setDaoPaasObj</span><span class="hl-0">(</span><span class="hl-3">null</span><span class="hl-0">);</span><br/><span class="hl-0"> };</span><br/><span class="hl-0"> }, []);</span><br/><span class="hl-0"> </span><span class="hl-9">return</span><span class="hl-0"> (</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;&gt;</span><br/><span class="hl-0"> </span><span class="hl-3">{</span><span class="hl-1">remindVisible</span><span class="hl-11"> </span><span class="hl-0">&amp;&amp;</span><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><br/><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-0">=</span><span class="hl-3">{</span><span class="hl-11">() </span><span class="hl-3">=&gt;</span><span class="hl-11"> {</span><br/><span class="hl-11"> </span><span class="hl-1">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-5">activePlayground</span><span class="hl-11">();</span><br/><span class="hl-11"> </span><span class="hl-5">setRemindVisible</span><span class="hl-11">(</span><span class="hl-3">false</span><span class="hl-11">);</span><br/><span class="hl-11"> }</span><span class="hl-3">}</span><br/><span class="hl-11"> </span><span class="hl-12">&gt;</span><br/><span class="hl-11"> 容器状态为失活,点击确认激活容器</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><span class="hl-3">}</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-8">LspStatusFC</span><span class="hl-0"> </span><span class="hl-12">/&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-3">{</span><span class="hl-1">playgroundStatus</span><span class="hl-11"> </span><span class="hl-0">!==</span><span class="hl-11"> </span><span class="hl-2">&#39;ACTIVE&#39;</span><span class="hl-11"> </span><span class="hl-0">?</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-0">=</span><span class="hl-3">{</span><span class="hl-11">() </span><span class="hl-3">=&gt;</span><span class="hl-11"> </span><span class="hl-1">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-5">activePlayground</span><span class="hl-11">() </span><span class="hl-3">}</span><span class="hl-12">&gt;</span><span class="hl-11">激活</span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> ) </span><span class="hl-0">:</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><span class="hl-11">已激活</span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> )</span><span class="hl-3">}</span><br/><span class="hl-0"> </span><span class="hl-3">{</span><span class="hl-1">dockerStatus</span><span class="hl-11"> </span><span class="hl-0">!==</span><span class="hl-11"> </span><span class="hl-2">&#39;RUNNING&#39;</span><span class="hl-11"> </span><span class="hl-0">?</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><br/><span class="hl-11"> </span><span class="hl-14">disabled</span><span class="hl-0">=</span><span class="hl-3">{</span><span class="hl-1">playgroundStatus</span><span class="hl-11"> </span><span class="hl-0">!==</span><span class="hl-11"> </span><span class="hl-2">&#39;ACTIVE&#39;</span><span class="hl-3">}</span><br/><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-0">=</span><span class="hl-3">{</span><span class="hl-11">() </span><span class="hl-3">=&gt;</span><span class="hl-11"> {</span><br/><span class="hl-11"> </span><span class="hl-1">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-5">runPlayground</span><span class="hl-11">();</span><br/><span class="hl-11"> }</span><span class="hl-3">}</span><br/><span class="hl-11"> </span><span class="hl-12">&gt;</span><br/><span class="hl-11"> 运行</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> ) </span><span class="hl-0">:</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><br/><span class="hl-11"> </span><span class="hl-14">disabled</span><span class="hl-0">=</span><span class="hl-3">{</span><span class="hl-1">playgroundStatus</span><span class="hl-11"> </span><span class="hl-0">!==</span><span class="hl-11"> </span><span class="hl-2">&#39;ACTIVE&#39;</span><span class="hl-3">}</span><br/><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-0">=</span><span class="hl-3">{</span><span class="hl-11">() </span><span class="hl-3">=&gt;</span><span class="hl-11"> </span><span class="hl-1">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-5">stopPlayground</span><span class="hl-11">()</span><span class="hl-3">}</span><br/><span class="hl-11"> </span><span class="hl-12">&gt;</span><br/><span class="hl-11"> 停止</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> )</span><span class="hl-3">}</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-2">&quot;tree-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-2">&quot;editor-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-2">&quot;browser-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-2">&quot;console-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-0"> </span><span class="hl-14">className</span><span class="hl-0">=</span><span class="hl-2">&quot;terminal-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-0"> </span><span class="hl-12">&lt;/&gt;</span><br/><span class="hl-0"> );</span><br/><span class="hl-0">}</span>
2713
+ <pre><code class="language-tsx"><span class="hl-9">import</span><span class="hl-1"> </span><span class="hl-3">React</span><span class="hl-1">, { </span><span class="hl-3">useEffect</span><span class="hl-1">, </span><span class="hl-3">useState</span><span class="hl-1"> } </span><span class="hl-9">from</span><span class="hl-1"> </span><span class="hl-5">&#39;react&#39;</span><span class="hl-1">;</span><br/><span class="hl-9">import</span><span class="hl-1"> { </span><span class="hl-3">DaoPaaS</span><span class="hl-1">, </span><span class="hl-3">Messages</span><span class="hl-1"> } </span><span class="hl-9">from</span><span class="hl-1"> </span><span class="hl-5">&#39;~/DaoPaaS&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-0">enum</span><span class="hl-1"> </span><span class="hl-8">LspStatusEnum</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">NOT_SUPPORT</span><span class="hl-1"> = </span><span class="hl-5">&#39;notSupport&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">LOADING</span><span class="hl-1"> = </span><span class="hl-5">&#39;loading&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">RUNNING</span><span class="hl-1"> = </span><span class="hl-5">&#39;running&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">SHUTDOWN</span><span class="hl-1"> = </span><span class="hl-5">&#39;shutdown&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-9">export</span><span class="hl-1"> </span><span class="hl-9">default</span><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">SimpleExample</span><span class="hl-1">({</span><span class="hl-3">environmentVerId</span><span class="hl-1">}) {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> [</span><span class="hl-7">daoPaasObj</span><span class="hl-1">, </span><span class="hl-7">setDaoPaasObj</span><span class="hl-1">] = </span><span class="hl-2">useState</span><span class="hl-1">&lt;</span><span class="hl-8">DaoPaaS</span><span class="hl-1"> | </span><span class="hl-8">null</span><span class="hl-1">&gt;(</span><span class="hl-0">null</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> [</span><span class="hl-7">playgroundStatus</span><span class="hl-1">, </span><span class="hl-7">setPlaygroundStatus</span><span class="hl-1">] =</span><br/><span class="hl-1"> </span><span class="hl-2">useState</span><span class="hl-1">&lt;</span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">&gt;(</span><span class="hl-5">&#39;EMPTY&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> [</span><span class="hl-7">dockerStatus</span><span class="hl-1">, </span><span class="hl-7">setDockerStatus</span><span class="hl-1">] = </span><span class="hl-2">useState</span><span class="hl-1">&lt;</span><span class="hl-8">DockerStatus</span><span class="hl-1">&gt;(</span><span class="hl-5">&#39;STOP&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> {</span><span class="hl-7">setLspStatus</span><span class="hl-1">, </span><span class="hl-7">LspStatusFC</span><span class="hl-1">} = </span><span class="hl-2">useLspStatus</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> [</span><span class="hl-7">remindVisible</span><span class="hl-1">, </span><span class="hl-7">setRemindVisible</span><span class="hl-1">] = </span><span class="hl-2">useState</span><span class="hl-1">(</span><span class="hl-0">false</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-4">// SDK初始化</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-2">initSDK</span><span class="hl-1"> = </span><span class="hl-0">async</span><span class="hl-1"> () </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;开始连接运行环境...&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-4">// 获取ticket(票)</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">ticket</span><span class="hl-1"> = </span><span class="hl-2">handleGetTicket</span><span class="hl-1">(</span><span class="hl-3">environmentVerId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-4">// 生成实例</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1"> = </span><span class="hl-0">new</span><span class="hl-1"> </span><span class="hl-2">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">paasDomain:</span><span class="hl-1"> </span><span class="hl-5">&#39;www.1024paas.com&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">tenantId:</span><span class="hl-1"> </span><span class="hl-5">&#39;请输入租户id&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">ticket:</span><span class="hl-1"> </span><span class="hl-3">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">userInfo:</span><span class="hl-1"> { </span><span class="hl-3">username:</span><span class="hl-1"> </span><span class="hl-5">&quot;***&quot;</span><span class="hl-1"> },</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-4">// 保存实例</span><br/><span class="hl-1"> </span><span class="hl-2">setDaoPaasObj</span><span class="hl-1">(</span><span class="hl-3">dao</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">// 监听消息</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onMessage</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1">: </span><span class="hl-8">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1">: </span><span class="hl-8">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-0">let</span><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1">: </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Ready</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;连接运行环境已经停止&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-2">setRemindVisible</span><span class="hl-1">(</span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1"> === </span><span class="hl-5">&#39;INACTIVE&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setPlaygroundStatus</span><span class="hl-1">(</span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setLspStatus</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">lspStatus</span><span class="hl-1"> </span><span class="hl-9">as</span><span class="hl-1"> </span><span class="hl-8">LspStatusEnum</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-2">setDockerStatus</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-3">playgroundInfo</span><span class="hl-1">.</span><span class="hl-3">runStatus</span><span class="hl-1"> </span><span class="hl-9">as</span><span class="hl-1"> </span><span class="hl-8">DockerStatus</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Online</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;网络已恢复&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;连接运行环境已经停止&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">Offline</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;网络掉线&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">StatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">status</span><span class="hl-1"> = </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-2">setRemindVisible</span><span class="hl-1">(</span><span class="hl-3">status</span><span class="hl-1"> === </span><span class="hl-5">&#39;INACTIVE&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-2">setPlaygroundStatus</span><span class="hl-1">(</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">PlaygroundChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-2">setRemindVisible</span><span class="hl-1">(</span><span class="hl-0">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">LspStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">lspStatus</span><span class="hl-1"> = </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-2">setLspStatus</span><span class="hl-1">(</span><span class="hl-3">lspStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">RunStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">dockerStatus</span><span class="hl-1"> = </span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">status</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-2">setDockerStatus</span><span class="hl-1">(</span><span class="hl-3">dockerStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">dockerStatus</span><span class="hl-1"> != </span><span class="hl-5">&#39;STOP&#39;</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">if</span><span class="hl-1"> (</span><span class="hl-3">payload</span><span class="hl-1">.</span><span class="hl-3">runResult</span><span class="hl-1"> === </span><span class="hl-6">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">`运行结果成功`</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-9">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">warn</span><span class="hl-1">(</span><span class="hl-5">`运行结果失败: </span><span class="hl-0">${</span><span class="hl-3">payload</span><span class="hl-11">.</span><span class="hl-3">runResult</span><span class="hl-0">}</span><span class="hl-5">`</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-4">// 监听报错消息</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">onError</span><span class="hl-1">((</span><span class="hl-3">message</span><span class="hl-1">: </span><span class="hl-8">Message</span><span class="hl-1">) </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> { </span><span class="hl-7">name</span><span class="hl-1">, </span><span class="hl-7">error</span><span class="hl-1"> } = </span><span class="hl-3">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">switch</span><span class="hl-1"> (</span><span class="hl-3">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">ConnectionBroken</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-3">error</span><span class="hl-1">, </span><span class="hl-6">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-3">Messages</span><span class="hl-1">.</span><span class="hl-3">AuthorizationFailed</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-3">error</span><span class="hl-1">, </span><span class="hl-6">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-9">case</span><span class="hl-1"> </span><span class="hl-5">&#39;errorFromServer&#39;</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">log</span><span class="hl-1">(</span><span class="hl-5">&#39;连接运行环境已经停止&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-3">console</span><span class="hl-1">.</span><span class="hl-2">error</span><span class="hl-1">(</span><span class="hl-3">error</span><span class="hl-1">, </span><span class="hl-6">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-9">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-4">// 挂载实例组件</span><br/><span class="hl-1"> </span><span class="hl-3">dao</span><span class="hl-1">.</span><span class="hl-2">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Browser&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.terminal-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Shell&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-3">container:</span><span class="hl-1"> </span><span class="hl-5">&#39;.console-section&#39;</span><span class="hl-1">, </span><span class="hl-3">item:</span><span class="hl-1"> </span><span class="hl-5">&#39;Console&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> ]);</span><br/><span class="hl-1"> };</span><br/><span class="hl-1"> </span><span class="hl-4">// 语法补全连接状态</span><br/><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">useLspStatus</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> [</span><span class="hl-7">lspStatus</span><span class="hl-1">, </span><span class="hl-7">setLspStatus</span><span class="hl-1">] = </span><span class="hl-2">useState</span><span class="hl-1">&lt;</span><span class="hl-8">LspStatusEnum</span><span class="hl-1">&gt;(</span><br/><span class="hl-1"> </span><span class="hl-3">LspStatusEnum</span><span class="hl-1">.</span><span class="hl-7">LOADING</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-0">function</span><span class="hl-1"> </span><span class="hl-2">LspStatusFC</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-7">textMap</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-3">[LspStatusEnum.</span><span class="hl-7">NOT_SUPPORT</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;不支持&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[LspStatusEnum.</span><span class="hl-7">LOADING</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[LspStatusEnum.</span><span class="hl-7">RUNNING</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;运行中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">[LspStatusEnum.</span><span class="hl-7">SHUTDOWN</span><span class="hl-3">]:</span><span class="hl-1"> </span><span class="hl-5">&#39;已关闭&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> };</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><span class="hl-1"> 代码补全·(</span><span class="hl-0">{</span><span class="hl-3">textMap</span><span class="hl-11">[</span><span class="hl-3">lspStatus</span><span class="hl-11">]</span><span class="hl-0">}</span><span class="hl-1">)</span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">setLspStatus</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">LspStatusFC</span><span class="hl-1">,</span><br/><span class="hl-1"> };</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-2">useEffect</span><span class="hl-1">(() </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">initSDK</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> () </span><span class="hl-0">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// 在页面卸载的时候需要销毁实例和相关的缓存数据</span><br/><span class="hl-1"> </span><span class="hl-3">daoPaasObj</span><span class="hl-1"> &amp;&amp; </span><span class="hl-3">daoPaasObj</span><span class="hl-1">.</span><span class="hl-2">dispose</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-2">setDaoPaasObj</span><span class="hl-1">(</span><span class="hl-0">null</span><span class="hl-1">);</span><br/><span class="hl-1"> };</span><br/><span class="hl-1"> }, []);</span><br/><span class="hl-1"> </span><span class="hl-9">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;&gt;</span><br/><span class="hl-1"> </span><span class="hl-0">{</span><span class="hl-3">remindVisible</span><span class="hl-11"> </span><span class="hl-1">&amp;&amp;</span><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><br/><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-1">=</span><span class="hl-0">{</span><span class="hl-11">() </span><span class="hl-0">=&gt;</span><span class="hl-11"> {</span><br/><span class="hl-11"> </span><span class="hl-3">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-2">activePlayground</span><span class="hl-11">();</span><br/><span class="hl-11"> </span><span class="hl-2">setRemindVisible</span><span class="hl-11">(</span><span class="hl-0">false</span><span class="hl-11">);</span><br/><span class="hl-11"> }</span><span class="hl-0">}</span><br/><span class="hl-11"> </span><span class="hl-12">&gt;</span><br/><span class="hl-11"> 容器状态为失活,点击确认激活容器</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><span class="hl-0">}</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-8">LspStatusFC</span><span class="hl-1"> </span><span class="hl-12">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-0">{</span><span class="hl-3">playgroundStatus</span><span class="hl-11"> </span><span class="hl-1">!==</span><span class="hl-11"> </span><span class="hl-5">&#39;ACTIVE&#39;</span><span class="hl-11"> </span><span class="hl-1">?</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-1">=</span><span class="hl-0">{</span><span class="hl-11">() </span><span class="hl-0">=&gt;</span><span class="hl-11"> </span><span class="hl-3">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-2">activePlayground</span><span class="hl-11">() </span><span class="hl-0">}</span><span class="hl-12">&gt;</span><span class="hl-11">激活</span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> ) </span><span class="hl-1">:</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><span class="hl-11">已激活</span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> )</span><span class="hl-0">}</span><br/><span class="hl-1"> </span><span class="hl-0">{</span><span class="hl-3">dockerStatus</span><span class="hl-11"> </span><span class="hl-1">!==</span><span class="hl-11"> </span><span class="hl-5">&#39;RUNNING&#39;</span><span class="hl-11"> </span><span class="hl-1">?</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><br/><span class="hl-11"> </span><span class="hl-14">disabled</span><span class="hl-1">=</span><span class="hl-0">{</span><span class="hl-3">playgroundStatus</span><span class="hl-11"> </span><span class="hl-1">!==</span><span class="hl-11"> </span><span class="hl-5">&#39;ACTIVE&#39;</span><span class="hl-0">}</span><br/><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-1">=</span><span class="hl-0">{</span><span class="hl-11">() </span><span class="hl-0">=&gt;</span><span class="hl-11"> {</span><br/><span class="hl-11"> </span><span class="hl-3">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-2">runPlayground</span><span class="hl-11">();</span><br/><span class="hl-11"> }</span><span class="hl-0">}</span><br/><span class="hl-11"> </span><span class="hl-12">&gt;</span><br/><span class="hl-11"> 运行</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> ) </span><span class="hl-1">:</span><span class="hl-11"> (</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;</span><span class="hl-13">button</span><br/><span class="hl-11"> </span><span class="hl-14">disabled</span><span class="hl-1">=</span><span class="hl-0">{</span><span class="hl-3">playgroundStatus</span><span class="hl-11"> </span><span class="hl-1">!==</span><span class="hl-11"> </span><span class="hl-5">&#39;ACTIVE&#39;</span><span class="hl-0">}</span><br/><span class="hl-11"> </span><span class="hl-14">onClick</span><span class="hl-1">=</span><span class="hl-0">{</span><span class="hl-11">() </span><span class="hl-0">=&gt;</span><span class="hl-11"> </span><span class="hl-3">daoPaasObj</span><span class="hl-11">?.</span><span class="hl-2">stopPlayground</span><span class="hl-11">()</span><span class="hl-0">}</span><br/><span class="hl-11"> </span><span class="hl-12">&gt;</span><br/><span class="hl-11"> 停止</span><br/><span class="hl-11"> </span><span class="hl-12">&lt;/</span><span class="hl-13">button</span><span class="hl-12">&gt;</span><br/><span class="hl-11"> )</span><span class="hl-0">}</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-5">&quot;tree-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-5">&quot;editor-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-5">&quot;browser-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-5">&quot;console-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;</span><span class="hl-13">div</span><span class="hl-1"> </span><span class="hl-14">className</span><span class="hl-1">=</span><span class="hl-5">&quot;terminal-section&quot;</span><span class="hl-12">&gt;&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;/</span><span class="hl-13">div</span><span class="hl-12">&gt;</span><br/><span class="hl-1"> </span><span class="hl-12">&lt;/&gt;</span><br/><span class="hl-1"> );</span><br/><span class="hl-1">}</span>
2693
2714
  </code></pre>
2694
2715
  </div></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class="current"><a href="modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="tsd-kind-enum"><a href="enums/I18nLanguageType.html" class="tsd-kind-icon">I18n<wbr/>Language<wbr/>Type</a></li><li class="tsd-kind-enum"><a href="enums/Messages.html" class="tsd-kind-icon">Messages</a></li><li class="tsd-kind-enum"><a href="enums/ThemeType.html" class="tsd-kind-icon">Theme<wbr/>Type</a></li><li class="tsd-kind-interface"><a href="interfaces/Component.html" class="tsd-kind-icon">Component</a></li><li class="tsd-kind-interface"><a href="interfaces/I18nResourcesType.html" class="tsd-kind-icon">I18n<wbr/>Resources<wbr/>Type</a></li><li class="tsd-kind-interface"><a href="interfaces/IDaoPaaS.html" class="tsd-kind-icon">IDao<wbr/>PaaS</a></li><li class="tsd-kind-interface"><a href="interfaces/IExtralAction.html" class="tsd-kind-icon">IExtral<wbr/>Action</a></li><li class="tsd-kind-interface"><a href="interfaces/IXtermFontStyle.html" class="tsd-kind-icon">IXterm<wbr/>Font<wbr/>Style</a></li><li class="tsd-kind-interface"><a href="interfaces/PaaSOptions.html" class="tsd-kind-icon">PaaSOptions</a></li><li class="tsd-kind-interface"><a href="interfaces/XtermStyleType.html" class="tsd-kind-icon">Xterm<wbr/>Style<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#CodeSnippetOption" class="tsd-kind-icon">Code<wbr/>Snippet<wbr/>Option</a></li><li class="tsd-kind-type-alias"><a href="modules.html#CodeSnippetType" class="tsd-kind-icon">Code<wbr/>Snippet<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ComponentType" class="tsd-kind-icon">Component<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#Config" class="tsd-kind-icon">Config</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ContextMenuType" class="tsd-kind-icon">Context<wbr/>Menu<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ContextMenuTypeItem" class="tsd-kind-icon">Context<wbr/>Menu<wbr/>Type<wbr/>Item</a></li><li class="tsd-kind-type-alias"><a href="modules.html#DockerStatus" class="tsd-kind-icon">Docker<wbr/>Status</a></li><li class="tsd-kind-type-alias"><a href="modules.html#EditorIndentMode" class="tsd-kind-icon">Editor<wbr/>Indent<wbr/>Mode</a></li><li class="tsd-kind-type-alias"><a href="modules.html#EditorMode" class="tsd-kind-icon">Editor<wbr/>Mode</a></li><li class="tsd-kind-type-alias"><a href="modules.html#FileHeaderType" class="tsd-kind-icon">File<wbr/>Header<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#GlobalConfig" class="tsd-kind-icon">Global<wbr/>Config</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ICodeLanguage" class="tsd-kind-icon">ICode<wbr/>Language</a></li><li class="tsd-kind-type-alias"><a href="modules.html#IDebugStatus" class="tsd-kind-icon">IDebug<wbr/>Status</a></li><li class="tsd-kind-type-alias"><a href="modules.html#IOverrideParams" class="tsd-kind-icon">IOverride<wbr/>Params</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ISpecialFileHighlight" class="tsd-kind-icon">ISpecial<wbr/>File<wbr/>Highlight</a></li><li class="tsd-kind-type-alias"><a href="modules.html#InsertCodeLineCode" class="tsd-kind-icon">Insert<wbr/>Code<wbr/>Line<wbr/>Code</a></li><li class="tsd-kind-type-alias"><a href="modules.html#Message" class="tsd-kind-icon">Message</a></li><li class="tsd-kind-type-alias"><a href="modules.html#PlaygroundStatus" class="tsd-kind-icon">Playground<wbr/>Status</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ResultType" class="tsd-kind-icon">Result<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#TranslateType" class="tsd-kind-icon">Translate<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#TranslateTypeOption" class="tsd-kind-icon">Translate<wbr/>Type<wbr/>Option</a></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="assets/main.js"></script></body></html>