@dao42/d42paas-front 0.9.177 → 0.9.178

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,11 +3,35 @@
3
3
  <h1>更新日志</h1>
4
4
  </a>
5
5
 
6
+ <a href="#v09178" id="v09178" style="color: inherit; text-decoration: none;">
7
+ <h2>v0.9.178</h2>
8
+ </a>
9
+
10
+ <a href="#新增" id="新增" style="color: inherit; text-decoration: none;">
11
+ <h3>新增</h3>
12
+ </a>
13
+ <ul>
14
+ <li>新增<code>Markdown</code> 预览对<code>a</code>标签的打开模式, 支持新的Tab页打开,也支持组件内部打开</li>
15
+ </ul>
16
+ <pre><code class="language-tsx"><span class="hl-0">globalConfig</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">markdownPreview</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">iframeWidth</span><span class="hl-1">: </span><span class="hl-2">&#39;100%&#39;</span><span class="hl-1">, </span><span class="hl-3">// 默认100%</span><br/><span class="hl-1"> </span><span class="hl-0">iframeHeight</span><span class="hl-1">: </span><span class="hl-2">&#39;400&#39;</span><span class="hl-1">, </span><span class="hl-3">// 默认400</span><br/><span class="hl-1"> </span><span class="hl-0">isBlank</span><span class="hl-1">: </span><span class="hl-4">false</span><span class="hl-1">, </span><span class="hl-3">// 默认false</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
17
+ </code></pre>
18
+ <ul>
19
+ <li><code>IDEServer</code> 文件系统的重构</li>
20
+ </ul>
21
+
22
+ <a href="#优化" id="优化" style="color: inherit; text-decoration: none;">
23
+ <h3>优化</h3>
24
+ </a>
25
+ <ul>
26
+ <li>优化回放倍速业务方自定义具体值</li>
27
+ <li>优化浏览器组件<code>Ctrl+S</code>文案</li>
28
+ </ul>
29
+
6
30
  <a href="#v09177" id="v09177" style="color: inherit; text-decoration: none;">
7
31
  <h2>v0.9.177</h2>
8
32
  </a>
9
33
 
10
- <a href="#优化" id="优化" style="color: inherit; text-decoration: none;">
34
+ <a href="#优化-1" id="优化-1" style="color: inherit; text-decoration: none;">
11
35
  <h3>优化</h3>
12
36
  </a>
13
37
  <ul>
@@ -20,7 +44,7 @@
20
44
  <h2>v0.9.176</h2>
21
45
  </a>
22
46
 
23
- <a href="#新增" id="新增" style="color: inherit; text-decoration: none;">
47
+ <a href="#新增-1" id="新增-1" style="color: inherit; text-decoration: none;">
24
48
  <h3>新增</h3>
25
49
  </a>
26
50
  <ul>
@@ -32,10 +56,10 @@
32
56
  </blockquote>
33
57
  </li>
34
58
  </ul>
35
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-4">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">editorPlugins</span><span class="hl-0">: [ </span><span class="hl-6">// 自定义插件,数组形式</span><br/><span class="hl-0"> </span><span class="hl-3">hilightKeyWord</span><span class="hl-0">(</span><span class="hl-7">/</span><span class="hl-8">\[\[</span><span class="hl-9">(</span><span class="hl-7">\w</span><span class="hl-10">+</span><span class="hl-9">)</span><span class="hl-8">\]\]</span><span class="hl-7">/</span><span class="hl-1">g</span><span class="hl-0">), </span><span class="hl-6">// 具体插件</span><br/><span class="hl-0"> </span><span class="hl-3">hilightKeyWord</span><span class="hl-0">(</span><span class="hl-7">/</span><span class="hl-9">(</span><span class="hl-7">Dear</span><span class="hl-9">)</span><span class="hl-7">/</span><span class="hl-1">g</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-3">hilightKeyWord</span><span class="hl-0">(</span><span class="hl-7">/</span><span class="hl-9">(</span><span class="hl-7">\d</span><span class="hl-10">{2,}</span><span class="hl-9">)</span><span class="hl-7">/</span><span class="hl-1">g</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">underlineKeymap</span><span class="hl-0">,</span><br/><span class="hl-0"> ],</span><br/><span class="hl-0"> });</span>
59
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-7">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">editorPlugins</span><span class="hl-1">: [ </span><span class="hl-3">// 自定义插件,数组形式</span><br/><span class="hl-1"> </span><span class="hl-6">hilightKeyWord</span><span class="hl-1">(</span><span class="hl-8">/</span><span class="hl-9">\[\[</span><span class="hl-10">(</span><span class="hl-8">\w</span><span class="hl-11">+</span><span class="hl-10">)</span><span class="hl-9">\]\]</span><span class="hl-8">/</span><span class="hl-4">g</span><span class="hl-1">), </span><span class="hl-3">// 具体插件</span><br/><span class="hl-1"> </span><span class="hl-6">hilightKeyWord</span><span class="hl-1">(</span><span class="hl-8">/</span><span class="hl-10">(</span><span class="hl-8">Dear</span><span class="hl-10">)</span><span class="hl-8">/</span><span class="hl-4">g</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-6">hilightKeyWord</span><span class="hl-1">(</span><span class="hl-8">/</span><span class="hl-10">(</span><span class="hl-8">\d</span><span class="hl-11">{2,}</span><span class="hl-10">)</span><span class="hl-8">/</span><span class="hl-4">g</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">underlineKeymap</span><span class="hl-1">,</span><br/><span class="hl-1"> ],</span><br/><span class="hl-1"> });</span>
36
60
  </code></pre>
37
61
 
38
- <a href="#优化-1" id="优化-1" style="color: inherit; text-decoration: none;">
62
+ <a href="#优化-2" id="优化-2" style="color: inherit; text-decoration: none;">
39
63
  <h3>优化</h3>
40
64
  </a>
41
65
  <ul>
@@ -64,7 +88,7 @@
64
88
  <h2>v0.9.173</h2>
65
89
  </a>
66
90
 
67
- <a href="#新增-1" id="新增-1" style="color: inherit; text-decoration: none;">
91
+ <a href="#新增-2" id="新增-2" style="color: inherit; text-decoration: none;">
68
92
  <h3>新增</h3>
69
93
  </a>
70
94
  <ul>
@@ -79,19 +103,19 @@
79
103
  </blockquote>
80
104
  </li>
81
105
  </ul>
82
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-4">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> ...,</span><br/><span class="hl-0"> </span><span class="hl-4">contextMenu:</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">text:</span><span class="hl-0"> { </span><span class="hl-6">// 显示的文案</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;剪切&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Cut&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+X&#39;</span><span class="hl-0">, </span><span class="hl-6">// 快捷键的描叙</span><br/><span class="hl-0"> </span><span class="hl-4">actionName:</span><span class="hl-0"> </span><span class="hl-5">&#39;cut&#39;</span><span class="hl-0">, </span><span class="hl-6">// 内置的菜单行为:cut, copy,paste</span><br/><span class="hl-0"> </span><span class="hl-4">className:</span><span class="hl-0"> </span><span class="hl-5">&#39;contextmenu-cut&#39;</span><span class="hl-0">, </span><span class="hl-6">// 自定义菜单样式</span><br/><span class="hl-0"> </span><span class="hl-4">textClassName:</span><span class="hl-0"> </span><span class="hl-5">&#39;d42 dao42__icon--create&#39;</span><span class="hl-0">, </span><span class="hl-6">//自定义文案样式</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutClassName:</span><span class="hl-0"> </span><span class="hl-5">&#39;&#39;</span><span class="hl-0">, </span><span class="hl-6">// 自定义快捷键样式</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;剪切(自定义)&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Cut(Custom)&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+X&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">actionFun</span><span class="hl-4">:</span><span class="hl-0"> (</span><span class="hl-4">view</span><span class="hl-0">, </span><span class="hl-4">commands</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> { </span><span class="hl-6">// 自定义菜单行为</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">tr</span><span class="hl-0"> = </span><span class="hl-4">view</span><span class="hl-0">.</span><span class="hl-4">state</span><span class="hl-0">.</span><span class="hl-3">replaceSelection</span><span class="hl-0">(</span><span class="hl-5">&#39;&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">view</span><span class="hl-0">?.</span><span class="hl-3">dispatch</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><span class="hl-4">tr</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><span class="hl-4">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;复制&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Copy&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+C&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionName:</span><span class="hl-0"> </span><span class="hl-5">&#39;copy&#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">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;粘贴&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Paste&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+V&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionName:</span><span class="hl-0"> </span><span class="hl-5">&#39;paste&#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/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;撤销&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Undo&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+Z&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionName:</span><span class="hl-0"> </span><span class="hl-5">&#39;undo&#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">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;取消注释&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;UnComment Block&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-/&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// actionName: &#39;toggleBlockComment&#39;,</span><br/><span class="hl-0"> </span><span class="hl-4">actionShortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-/&#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">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;注释代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Comment Block&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-/&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// actionName: &#39;blockComment&#39;,</span><br/><span class="hl-0"> </span><span class="hl-4">actionShortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-/&#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">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;全选&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Select All&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+A&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionName:</span><span class="hl-0"> </span><span class="hl-5">&#39;selectAll&#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">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;选中整行&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Select Line&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Ctrl/Cmd+R&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionName:</span><span class="hl-0"> </span><span class="hl-5">&#39;selectLine&#39;</span><span class="hl-0">, </span><span class="hl-6">//codemirror 内置行为: https://codemirror.net/docs/ref/#commands</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;格式化代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Format Document&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-Alt-f&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionShortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-Alt-f&#39;</span><span class="hl-0">,, </span><span class="hl-6">// 运行指定快捷键行为: // 优先级: 业务方配置 &gt; SDK 定制 &gt; CM 内置的默认的 (内置的快捷键: https://codemirror.net/docs/ref/#commands)</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;插入代码(自定义快捷键)&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;Insert Code&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">shortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-j&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">actionShortcutKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;Mod-j&#39;</span><span class="hl-0">, </span><span class="hl-6">// 运行指定快捷键行为: // 优先级: 业务方配置 &gt; SDK 定制 &gt; CM 内置的默认的 (内置的快捷键: https://codemirror.net/docs/ref/#commands)</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>
106
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-7">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> ...,</span><br/><span class="hl-1"> </span><span class="hl-7">contextMenu:</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-7">text:</span><span class="hl-1"> { </span><span class="hl-3">// 显示的文案</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;剪切&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Cut&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+X&#39;</span><span class="hl-1">, </span><span class="hl-3">// 快捷键的描叙</span><br/><span class="hl-1"> </span><span class="hl-7">actionName:</span><span class="hl-1"> </span><span class="hl-2">&#39;cut&#39;</span><span class="hl-1">, </span><span class="hl-3">// 内置的菜单行为:cut, copy,paste</span><br/><span class="hl-1"> </span><span class="hl-7">className:</span><span class="hl-1"> </span><span class="hl-2">&#39;contextmenu-cut&#39;</span><span class="hl-1">, </span><span class="hl-3">// 自定义菜单样式</span><br/><span class="hl-1"> </span><span class="hl-7">textClassName:</span><span class="hl-1"> </span><span class="hl-2">&#39;d42 dao42__icon--create&#39;</span><span class="hl-1">, </span><span class="hl-3">//自定义文案样式</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutClassName:</span><span class="hl-1"> </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">, </span><span class="hl-3">// 自定义快捷键样式</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><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-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;剪切(自定义)&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Cut(Custom)&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+X&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">actionFun</span><span class="hl-7">:</span><span class="hl-1"> (</span><span class="hl-7">view</span><span class="hl-1">, </span><span class="hl-7">commands</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> { </span><span class="hl-3">// 自定义菜单行为</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">tr</span><span class="hl-1"> = </span><span class="hl-7">view</span><span class="hl-1">.</span><span class="hl-7">state</span><span class="hl-1">.</span><span class="hl-6">replaceSelection</span><span class="hl-1">(</span><span class="hl-2">&#39;&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">view</span><span class="hl-1">?.</span><span class="hl-6">dispatch</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><span class="hl-7">tr</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><span class="hl-7">text:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;复制&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Copy&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+C&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionName:</span><span class="hl-1"> </span><span class="hl-2">&#39;copy&#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-7">text:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;粘贴&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Paste&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+V&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionName:</span><span class="hl-1"> </span><span class="hl-2">&#39;paste&#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/><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-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;撤销&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Undo&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+Z&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionName:</span><span class="hl-1"> </span><span class="hl-2">&#39;undo&#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-7">text:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;取消注释&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;UnComment Block&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-/&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// actionName: &#39;toggleBlockComment&#39;,</span><br/><span class="hl-1"> </span><span class="hl-7">actionShortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-/&#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-7">text:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;注释代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Comment Block&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-/&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// actionName: &#39;blockComment&#39;,</span><br/><span class="hl-1"> </span><span class="hl-7">actionShortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-/&#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-7">text:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;全选&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Select All&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+A&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionName:</span><span class="hl-1"> </span><span class="hl-2">&#39;selectAll&#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-7">text:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;选中整行&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Select Line&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Ctrl/Cmd+R&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionName:</span><span class="hl-1"> </span><span class="hl-2">&#39;selectLine&#39;</span><span class="hl-1">, </span><span class="hl-3">//codemirror 内置行为: https://codemirror.net/docs/ref/#commands</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><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-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;格式化代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Format Document&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-Alt-f&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionShortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-Alt-f&#39;</span><span class="hl-1">,, </span><span class="hl-3">// 运行指定快捷键行为: // 优先级: 业务方配置 &gt; SDK 定制 &gt; CM 内置的默认的 (内置的快捷键: https://codemirror.net/docs/ref/#commands)</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><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-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;插入代码(自定义快捷键)&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;Insert Code&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">shortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-j&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">actionShortcutKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;Mod-j&#39;</span><span class="hl-1">, </span><span class="hl-3">// 运行指定快捷键行为: // 优先级: 业务方配置 &gt; SDK 定制 &gt; CM 内置的默认的 (内置的快捷键: https://codemirror.net/docs/ref/#commands)</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>
83
107
  </code></pre>
84
108
  <ul>
85
109
  <li>新增<code>fileTree</code>文件树配置<code>fileRootActions</code> 支持自定义样式名称<code>className</code></li>
86
110
  </ul>
87
- <pre><code class="language-tsx"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">hideFeature</span><span class="hl-0">: </span><span class="hl-4">defaultValue</span><span class="hl-0">,</span><br/><span class="hl-0"> ...,</span><br/><span class="hl-0"> </span><span class="hl-11">disableFileAction</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">filesPath</span><span class="hl-0">: [],</span><br/><span class="hl-0"> </span><span class="hl-11">isDisable</span><span class="hl-0">: </span><span class="hl-1">true</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-11">fileRootActions</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">label:</span><span class="hl-0"> </span><span class="hl-5">&#39;下载项目&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">className:</span><span class="hl-0"> </span><span class="hl-5">&#39;download-project&#39;</span><span class="hl-0">, </span><span class="hl-6">// 自定义ITEM样式</span><br/><span class="hl-0"> </span><span class="hl-3">onClick</span><span class="hl-4">:</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</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>
111
+ <pre><code class="language-tsx"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">hideFeature</span><span class="hl-1">: </span><span class="hl-7">defaultValue</span><span class="hl-1">,</span><br/><span class="hl-1"> ...,</span><br/><span class="hl-1"> </span><span class="hl-0">disableFileAction</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">filesPath</span><span class="hl-1">: [],</span><br/><span class="hl-1"> </span><span class="hl-0">isDisable</span><span class="hl-1">: </span><span class="hl-4">true</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">fileRootActions</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">label:</span><span class="hl-1"> </span><span class="hl-2">&#39;下载项目&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">className:</span><span class="hl-1"> </span><span class="hl-2">&#39;download-project&#39;</span><span class="hl-1">, </span><span class="hl-3">// 自定义ITEM样式</span><br/><span class="hl-1"> </span><span class="hl-6">onClick</span><span class="hl-7">:</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</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>
88
112
  </code></pre>
89
113
  <ul>
90
114
  <li><code>fileTree</code> 上传文件/文件夹等行为,添加自定义样式,以便业务方进行针对性业务能力扩展</li>
91
115
  <li></li>
92
116
  </ul>
93
117
 
94
- <a href="#优化-2" id="优化-2" style="color: inherit; text-decoration: none;">
118
+ <a href="#优化-3" id="优化-3" style="color: inherit; text-decoration: none;">
95
119
  <h3>优化</h3>
96
120
  </a>
97
121
  <ul>
@@ -114,7 +138,7 @@
114
138
  <h2>v0.9.172</h2>
115
139
  </a>
116
140
 
117
- <a href="#优化-3" id="优化-3" style="color: inherit; text-decoration: none;">
141
+ <a href="#优化-4" id="优化-4" style="color: inherit; text-decoration: none;">
118
142
  <h3>优化</h3>
119
143
  </a>
120
144
  <ul>
@@ -126,7 +150,7 @@
126
150
  <h2>v0.9.171</h2>
127
151
  </a>
128
152
 
129
- <a href="#优化-4" id="优化-4" style="color: inherit; text-decoration: none;">
153
+ <a href="#优化-5" id="优化-5" style="color: inherit; text-decoration: none;">
130
154
  <h3>优化</h3>
131
155
  </a>
132
156
  <ul>
@@ -139,24 +163,24 @@
139
163
  <h2>v0.9.170</h2>
140
164
  </a>
141
165
 
142
- <a href="#新增-2" id="新增-2" style="color: inherit; text-decoration: none;">
166
+ <a href="#新增-3" id="新增-3" style="color: inherit; text-decoration: none;">
143
167
  <h3>新增</h3>
144
168
  </a>
145
169
  <ul>
146
170
  <li>新增支持修改过的文件显示<code>M</code>标记,</li>
147
171
  </ul>
148
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">showModifyIcon</span><span class="hl-0">: </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// 默认false, 是否展示文件修改的Icon</span><br/><span class="hl-0"> ...</span>
172
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">showModifyIcon</span><span class="hl-1">: </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// 默认false, 是否展示文件修改的Icon</span><br/><span class="hl-1"> ...</span>
149
173
  </code></pre>
150
174
  <ul>
151
175
  <li>新增<code>M</code>标记的文件树<code>Item</code> 样式名称<code>is-modified-file-item</code>,业务方可以参考如下覆盖自定义样式</li>
152
176
  </ul>
153
- <pre><code class="language-css"><span class="hl-12">.is-modified-file-item</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-13">background-color</span><span class="hl-0">: </span><span class="hl-14">#a4a2a2</span><span class="hl-0">;</span><br/><span class="hl-0">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-0"> </span><span class="hl-12">.d42-item-title</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-13">color</span><span class="hl-0">: </span><span class="hl-14">#fff</span><span class="hl-0">;</span><br/><span class="hl-0">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-0"> </span><span class="hl-12">.rct-tree-item-arrow-path</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-13">fill</span><span class="hl-0">: </span><span class="hl-14">#fff</span><span class="hl-0">;</span><br/><span class="hl-0">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-0"> </span><span class="hl-12">.d42-action-item</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-13">color</span><span class="hl-0">: </span><span class="hl-14">#fff</span><span class="hl-0">;</span><br/><span class="hl-0">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-0"> </span><span class="hl-12">.d42-action-item</span><span class="hl-0"> </span><span class="hl-12">path</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-13">fill</span><span class="hl-0">: </span><span class="hl-14">#fff</span><span class="hl-0">;</span><br/><span class="hl-0">}</span>
177
+ <pre><code class="language-css"><span class="hl-12">.is-modified-file-item</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-13">background-color</span><span class="hl-1">: </span><span class="hl-14">#a4a2a2</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-1"> </span><span class="hl-12">.d42-item-title</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-13">color</span><span class="hl-1">: </span><span class="hl-14">#fff</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-1"> </span><span class="hl-12">.rct-tree-item-arrow-path</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-13">fill</span><span class="hl-1">: </span><span class="hl-14">#fff</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-1"> </span><span class="hl-12">.d42-action-item</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-13">color</span><span class="hl-1">: </span><span class="hl-14">#fff</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-12">.is-modified-file-item</span><span class="hl-1"> </span><span class="hl-12">.d42-action-item</span><span class="hl-1"> </span><span class="hl-12">path</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-13">fill</span><span class="hl-1">: </span><span class="hl-14">#fff</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
154
178
  </code></pre>
155
179
  <ul>
156
180
  <li>新增支持<code>LSP</code>如果选择的是<code>Method</code>,自动补全括号</li>
157
181
  </ul>
158
182
 
159
- <a href="#优化-5" id="优化-5" style="color: inherit; text-decoration: none;">
183
+ <a href="#优化-6" id="优化-6" style="color: inherit; text-decoration: none;">
160
184
  <h3>优化</h3>
161
185
  </a>
162
186
  <ul>
@@ -169,33 +193,33 @@
169
193
  <h2>v0.9.169</h2>
170
194
  </a>
171
195
 
172
- <a href="#新增-3" id="新增-3" style="color: inherit; text-decoration: none;">
196
+ <a href="#新增-4" id="新增-4" style="color: inherit; text-decoration: none;">
173
197
  <h3>新增</h3>
174
198
  </a>
175
199
  <ul>
176
200
  <li>新增打开文件默认聚焦<code>Editor</code>, 默认聚焦文件底部<code>BOTTOM</code>,并提供配置参数<code>focusEditorPosition</code></li>
177
201
  </ul>
178
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-4">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">ticket:</span><span class="hl-0"> </span><span class="hl-4">dataRes</span><span class="hl-0">?.</span><span class="hl-4">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">openLspDiagnostic:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// 默认是true,</span><br/><span class="hl-0"> </span><span class="hl-4">focusEditorPosition:</span><span class="hl-0"> </span><span class="hl-5">&#39;BOTTOM&#39;</span><span class="hl-0">, </span><span class="hl-6">// TOP | BOTTOM | number</span><br/><span class="hl-0"> ....</span>
202
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-7">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">ticket:</span><span class="hl-1"> </span><span class="hl-7">dataRes</span><span class="hl-1">?.</span><span class="hl-7">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">openLspDiagnostic:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// 默认是true,</span><br/><span class="hl-1"> </span><span class="hl-7">focusEditorPosition:</span><span class="hl-1"> </span><span class="hl-2">&#39;BOTTOM&#39;</span><span class="hl-1">, </span><span class="hl-3">// TOP | BOTTOM | number</span><br/><span class="hl-1"> ....</span>
179
203
  </code></pre>
180
204
  <ul>
181
205
  <li>新增文件打开完成事件<code>fileOpenDone</code>,用于处理文件打开完成后要处理的事情,如跳转到上次打开位置</li>
182
206
  </ul>
183
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">FileOpenDone</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">info</span><span class="hl-0">(</span><span class="hl-5">&#39;FileOpenDone:&#39;</span><span class="hl-0"> + </span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">editorInfo</span><span class="hl-0"> = </span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">parse</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">localStorage</span><span class="hl-0">.</span><span class="hl-3">getItem</span><span class="hl-0">(</span><span class="hl-5">&#39;UnFocusEditor&#39;</span><span class="hl-0">) || </span><span class="hl-5">&#39;{}&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">prevOpenInfo</span><span class="hl-0"> = </span><span class="hl-4">editorInfo</span><span class="hl-0">[</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">openPath</span><span class="hl-0">];</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">prevOpenInfo</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-6">// 定位光标</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">focuseEditorByCursorPosition</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">prevOpenInfo</span><span class="hl-0">.</span><span class="hl-4">openFile</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">prevOpenInfo</span><span class="hl-0">.</span><span class="hl-4">cursorPosition</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-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span>
207
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">FileOpenDone</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">info</span><span class="hl-1">(</span><span class="hl-2">&#39;FileOpenDone:&#39;</span><span class="hl-1"> + </span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">editorInfo</span><span class="hl-1"> = </span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">parse</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">localStorage</span><span class="hl-1">.</span><span class="hl-6">getItem</span><span class="hl-1">(</span><span class="hl-2">&#39;UnFocusEditor&#39;</span><span class="hl-1">) || </span><span class="hl-2">&#39;{}&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">prevOpenInfo</span><span class="hl-1"> = </span><span class="hl-7">editorInfo</span><span class="hl-1">[</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">openPath</span><span class="hl-1">];</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">prevOpenInfo</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">// 定位光标</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">focuseEditorByCursorPosition</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">prevOpenInfo</span><span class="hl-1">.</span><span class="hl-7">openFile</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">prevOpenInfo</span><span class="hl-1">.</span><span class="hl-7">cursorPosition</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-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span>
184
208
  </code></pre>
185
209
  <ul>
186
210
  <li>新增<code>Editor</code>失去焦点事件,业务方可以在此事件记录对应文件上次编辑的位置</li>
187
211
  </ul>
188
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">UnFocusEditor</span><span class="hl-0">: {</span><br/><span class="hl-0"> messageBox.info(</span><span class="hl-5">&#39;UnFocusEditor:&#39;</span><span class="hl-4"> + JSON.stringify(payload));</span><br/><span class="hl-4"> const editorInfo = JSON.parse(</span><br/><span class="hl-4"> localStorage.getItem(</span><span class="hl-5">&#39;UnFocusEditor&#39;</span><span class="hl-4">) || </span><span class="hl-5">&#39;{}&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> editorInfo</span><span class="hl-4">[payload.openPath] = payload;</span><br/><span class="hl-4"> localStorage.setItem(&#39;UnFocusEditor&#39;, JSON.stringify(editorInfo));</span><br/><span class="hl-4"> break;</span><br/><span class="hl-4"> }</span>
212
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">UnFocusEditor</span><span class="hl-1">: {</span><br/><span class="hl-1"> messageBox.info(</span><span class="hl-2">&#39;UnFocusEditor:&#39;</span><span class="hl-7"> + JSON.stringify(payload));</span><br/><span class="hl-7"> const editorInfo = JSON.parse(</span><br/><span class="hl-7"> localStorage.getItem(</span><span class="hl-2">&#39;UnFocusEditor&#39;</span><span class="hl-7">) || </span><span class="hl-2">&#39;{}&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> editorInfo</span><span class="hl-7">[payload.openPath] = payload;</span><br/><span class="hl-7"> localStorage.setItem(&#39;UnFocusEditor&#39;, JSON.stringify(editorInfo));</span><br/><span class="hl-7"> break;</span><br/><span class="hl-7"> }</span>
189
213
  </code></pre>
190
214
  <ul>
191
215
  <li>新增跳转到指定文件的指定位置方法<code>focuseEditorByCursorPosition</code>,可以配合<code>FileOpenDone</code> 事件使用</li>
192
216
  </ul>
193
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">focuseEditorByCursorPosition</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">prevOpenInfo</span><span class="hl-0">.</span><span class="hl-4">openFile</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">prevOpenInfo</span><span class="hl-0">.</span><span class="hl-4">cursorPosition</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span>
217
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">focuseEditorByCursorPosition</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">prevOpenInfo</span><span class="hl-1">.</span><span class="hl-7">openFile</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">prevOpenInfo</span><span class="hl-1">.</span><span class="hl-7">cursorPosition</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span>
194
218
  </code></pre>
195
219
  <ul>
196
220
  <li>新增设置文件树指定路径文件样式<code>setFileStyle</code></li>
197
221
  </ul>
198
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">setFileStyle</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paths:</span><span class="hl-0"> [</span><span class="hl-5">&#39;a/b/c.js&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;a/c/c.js&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;c/index.js&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-4">styles:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">title:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeTitle&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeIcon&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">arrowIcon:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeArrowIcon&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">background:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeBackground&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">});</span>
222
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">setFileStyle</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paths:</span><span class="hl-1"> [</span><span class="hl-2">&#39;a/b/c.js&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;a/c/c.js&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;c/index.js&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-7">styles:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">title:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeTitle&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeIcon&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">arrowIcon:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeArrowIcon&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">background:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeBackground&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">});</span>
199
223
  </code></pre>
200
224
 
201
225
  <a href="#修复-3" id="修复-3" style="color: inherit; text-decoration: none;">
@@ -210,16 +234,16 @@
210
234
  <h2>v0.9.168</h2>
211
235
  </a>
212
236
 
213
- <a href="#新增-4" id="新增-4" style="color: inherit; text-decoration: none;">
237
+ <a href="#新增-5" id="新增-5" style="color: inherit; text-decoration: none;">
214
238
  <h3>新增</h3>
215
239
  </a>
216
240
  <ul>
217
241
  <li>添加跟随模式下,如果被跟随者打卡一个隐藏文件, 跟随着没有权限, 会广播对应的事件:</li>
218
242
  </ul>
219
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;openLimitFile&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-5">&#39;OpenLimitFile: &#39;</span><span class="hl-0"> + </span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">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-3">setAgentUsers</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">agentUsers</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">xtermKey</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-3">setActiveKey</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">xtermKey</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> });</span>
243
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;openLimitFile&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-2">&#39;OpenLimitFile: &#39;</span><span class="hl-1"> + </span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">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-6">setAgentUsers</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">agentUsers</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">xtermKey</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-6">setActiveKey</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">xtermKey</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> });</span>
220
244
  </code></pre>
221
245
 
222
- <a href="#优化-6" id="优化-6" style="color: inherit; text-decoration: none;">
246
+ <a href="#优化-7" id="优化-7" style="color: inherit; text-decoration: none;">
223
247
  <h3>优化</h3>
224
248
  </a>
225
249
  <ul>
@@ -238,17 +262,17 @@
238
262
  <h2>v0.9.167</h2>
239
263
  </a>
240
264
 
241
- <a href="#新增-5" id="新增-5" style="color: inherit; text-decoration: none;">
265
+ <a href="#新增-6" id="新增-6" style="color: inherit; text-decoration: none;">
242
266
  <h3>新增</h3>
243
267
  </a>
244
268
  <ul>
245
269
  <li>新增<code>showRRwebController</code> 属性来控制RRWEB回放的播放控制器(用于业务方调试)</li>
246
270
  <li>新增聚焦行是空行显示<code>placeholder</code></li>
247
271
  </ul>
248
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">defaultPlaceholder:</span><span class="hl-0"> { </span><span class="hl-6">// 默认设置</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">showOnEmptyLine</span><span class="hl-0">: </span><span class="hl-1">true</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">placeholders:</span><span class="hl-0"> { </span><span class="hl-6">// 指定文件设置</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-4">:</span><span class="hl-0"> { </span><br/><span class="hl-0"> ... </span><br/><span class="hl-0"> </span><span class="hl-4">showOnEmptyLine</span><span class="hl-0">: </span><span class="hl-1">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>
272
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">defaultPlaceholder:</span><span class="hl-1"> { </span><span class="hl-3">// 默认设置</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">showOnEmptyLine</span><span class="hl-1">: </span><span class="hl-4">true</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">placeholders:</span><span class="hl-1"> { </span><span class="hl-3">// 指定文件设置</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-7">:</span><span class="hl-1"> { </span><br/><span class="hl-1"> ... </span><br/><span class="hl-1"> </span><span class="hl-7">showOnEmptyLine</span><span class="hl-1">: </span><span class="hl-4">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>
249
273
  </code></pre>
250
274
 
251
- <a href="#优化-7" id="优化-7" style="color: inherit; text-decoration: none;">
275
+ <a href="#优化-8" id="优化-8" style="color: inherit; text-decoration: none;">
252
276
  <h3>优化</h3>
253
277
  </a>
254
278
  <ul>
@@ -259,20 +283,20 @@
259
283
  <h2>v0.9.166</h2>
260
284
  </a>
261
285
 
262
- <a href="#新增-6" id="新增-6" style="color: inherit; text-decoration: none;">
286
+ <a href="#新增-7" id="新增-7" style="color: inherit; text-decoration: none;">
263
287
  <h3>新增</h3>
264
288
  </a>
265
289
  <ul>
266
290
  <li>新增支持链式跟随模式</li>
267
291
  </ul>
268
292
 
269
- <a href="#优化-8" id="优化-8" style="color: inherit; text-decoration: none;">
293
+ <a href="#优化-9" id="优化-9" style="color: inherit; text-decoration: none;">
270
294
  <h3>优化</h3>
271
295
  </a>
272
296
  <ul>
273
297
  <li>测试用例接口<code>runUnitTestByFilePath</code> 多文件运行,并且单文件配置独立参数</li>
274
298
  </ul>
275
- <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-4">fileKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;sum.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">outputConsole:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">consoleText:</span><span class="hl-0"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">runMode:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// runId: uuidv4(),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">fileKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;sum2.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">outputConsole:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">consoleText:</span><span class="hl-0"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">runMode:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// runId: uuidv4(),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">fileKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;sum3.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">outputConsole:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">consoleText:</span><span class="hl-0"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">runMode:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// runId: uuidv4(),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">]</span>
299
+ <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-7">fileKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;sum.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">outputConsole:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">consoleText:</span><span class="hl-1"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">runMode:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// runId: uuidv4(),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">fileKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;sum2.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">outputConsole:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">consoleText:</span><span class="hl-1"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">runMode:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// runId: uuidv4(),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">fileKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;sum3.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">outputConsole:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">consoleText:</span><span class="hl-1"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">runMode:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// runId: uuidv4(),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">]</span>
276
300
  </code></pre>
277
301
  <ul>
278
302
  <li>优化跟随模式, 对隐藏且没有权限文件的进行不可见,并给予相关提示处理</li>
@@ -289,21 +313,21 @@
289
313
  <h2>v0.9.165</h2>
290
314
  </a>
291
315
 
292
- <a href="#新增-7" id="新增-7" style="color: inherit; text-decoration: none;">
316
+ <a href="#新增-8" id="新增-8" style="color: inherit; text-decoration: none;">
293
317
  <h3>新增</h3>
294
318
  </a>
295
319
  <ul>
296
320
  <li>新增自定义<code>xterm</code>字体样式</li>
297
321
  </ul>
298
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">xtermStyle</span><span class="hl-0">:{</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">consoleStyle</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">fontSize:</span><span class="hl-0"> </span><span class="hl-17">12</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">lineHeight:</span><span class="hl-0"> </span><span class="hl-17">1</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">fontFamily:</span><span class="hl-0"> </span><span class="hl-5">&#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>
322
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">xtermStyle</span><span class="hl-1">:{</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">consoleStyle</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">fontSize:</span><span class="hl-1"> </span><span class="hl-17">12</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">lineHeight:</span><span class="hl-1"> </span><span class="hl-17">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">fontFamily:</span><span class="hl-1"> </span><span class="hl-2">&#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>
299
323
  </code></pre>
300
324
  <ul>
301
325
  <li>新增支持指定文件名后缀进行语法高亮(完全匹配优先级高于后缀名匹配)</li>
302
326
  </ul>
303
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-4">specialFileHighlight</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">fileName:</span><span class="hl-0"> </span><span class="hl-5">&#39;.java.answer&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageType:</span><span class="hl-0"> </span><span class="hl-5">&#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-4">fileName:</span><span class="hl-0"> </span><span class="hl-5">&#39;paas_test.java.answer&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageType:</span><span class="hl-0"> </span><span class="hl-5">&#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>
327
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-7">specialFileHighlight</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">fileName:</span><span class="hl-1"> </span><span class="hl-2">&#39;.java.answer&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageType:</span><span class="hl-1"> </span><span class="hl-2">&#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-7">fileName:</span><span class="hl-1"> </span><span class="hl-2">&#39;paas_test.java.answer&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageType:</span><span class="hl-1"> </span><span class="hl-2">&#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>
304
328
  </code></pre>
305
329
 
306
- <a href="#优化-9" id="优化-9" style="color: inherit; text-decoration: none;">
330
+ <a href="#优化-10" id="优化-10" style="color: inherit; text-decoration: none;">
307
331
  <h3>优化</h3>
308
332
  </a>
309
333
  <ul>
@@ -316,29 +340,29 @@
316
340
  <h2>v0.9.164</h2>
317
341
  </a>
318
342
 
319
- <a href="#新增-8" id="新增-8" style="color: inherit; text-decoration: none;">
343
+ <a href="#新增-9" id="新增-9" style="color: inherit; text-decoration: none;">
320
344
  <h3>新增</h3>
321
345
  </a>
322
346
  <ul>
323
347
  <li>新增实例化<code>DaoPaaS</code> 参数<code>customFileTreeAction</code>,控制文件树操作行为是否业务方控制</li>
324
348
  </ul>
325
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-4">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">ticket:</span><span class="hl-0"> </span><span class="hl-4">dataRes</span><span class="hl-0">?.</span><span class="hl-4">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-4">customFileTreeAction</span><span class="hl-0">: </span><span class="hl-4">customFileTreeAction</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
349
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-7">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">ticket:</span><span class="hl-1"> </span><span class="hl-7">dataRes</span><span class="hl-1">?.</span><span class="hl-7">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-7">customFileTreeAction</span><span class="hl-1">: </span><span class="hl-7">customFileTreeAction</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
326
350
  </code></pre>
327
351
  <ul>
328
352
  <li>新增文件树相关事件点击的订阅事件</li>
329
353
  </ul>
330
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;fileTreeAction&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">type</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;unittest&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">setTimeout</span><span class="hl-0">(() </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">setFileToUnitTest</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">unitTest:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> }, </span><span class="hl-17">1000</span><span class="hl-0"> * </span><span class="hl-17">2</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;hide&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">setTimeout</span><span class="hl-0">(() </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">setFileVisible</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">hide:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> }, </span><span class="hl-17">1000</span><span class="hl-0"> * </span><span class="hl-17">2</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;lock&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">setTimeout</span><span class="hl-0">(() </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">setFileLockStatus</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">lock:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> }, </span><span class="hl-17">1000</span><span class="hl-0"> * </span><span class="hl-17">2</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">default</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-16">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-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span>
354
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;fileTreeAction&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">type</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;unittest&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-6">setTimeout</span><span class="hl-1">(() </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">setFileToUnitTest</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">unitTest:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }, </span><span class="hl-17">1000</span><span class="hl-1"> * </span><span class="hl-17">2</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;hide&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-6">setTimeout</span><span class="hl-1">(() </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">setFileVisible</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">hide:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }, </span><span class="hl-17">1000</span><span class="hl-1"> * </span><span class="hl-17">2</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;lock&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-6">setTimeout</span><span class="hl-1">(() </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">setFileLockStatus</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">lock:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }, </span><span class="hl-17">1000</span><span class="hl-1"> * </span><span class="hl-17">2</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">default</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-16">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-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span>
331
355
  </code></pre>
332
356
  <ul>
333
357
  <li>新增文件添加/删除<code>unittest</code>, <code>hide</code>, <code>lock</code> 行为接口</li>
334
358
  </ul>
335
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">setFileToUnitTest</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">unitTest:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">setFileVisible</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">hide:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">setFileLockStatus</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">lock:</span><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">targetValue</span><span class="hl-0">,</span><br/><span class="hl-0">});</span>
359
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">setFileToUnitTest</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">unitTest:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">setFileVisible</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">hide:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">setFileLockStatus</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">lock:</span><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">targetValue</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
336
360
  </code></pre>
337
361
  <ul>
338
362
  <li>新增跟随模式下, 对应跟随组件高亮区域显示跟随用户名称</li>
339
363
  </ul>
340
364
 
341
- <a href="#优化-10" id="优化-10" style="color: inherit; text-decoration: none;">
365
+ <a href="#优化-11" id="优化-11" style="color: inherit; text-decoration: none;">
342
366
  <h3>优化</h3>
343
367
  </a>
344
368
  <ul>
@@ -349,37 +373,37 @@
349
373
  <h2>v0.9.162</h2>
350
374
  </a>
351
375
 
352
- <a href="#新增-9" id="新增-9" style="color: inherit; text-decoration: none;">
376
+ <a href="#新增-10" id="新增-10" style="color: inherit; text-decoration: none;">
353
377
  <h3>新增</h3>
354
378
  </a>
355
379
  <ul>
356
380
  <li>测试用例接口移除<code>runId</code>参数</li>
357
381
  <li><code>runUnitTestByFilePath</code> 接口支持多文件运行,对应的<code>fileKey</code>参数可以为:<code>string | string[]</code></li>
358
382
  </ul>
359
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">runUnitTestByFilePath</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">fileKey:</span><span class="hl-0"> [</span><span class="hl-5">&#39;sum.test.js&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-4">outputConsole:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">consoleText:</span><span class="hl-0"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">runMode:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">,</span><br/><span class="hl-0">});</span>
383
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">runUnitTestByFilePath</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">fileKey:</span><span class="hl-1"> [</span><span class="hl-2">&#39;sum.test.js&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-7">outputConsole:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">consoleText:</span><span class="hl-1"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">runMode:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
360
384
  </code></pre>
361
385
  <ul>
362
386
  <li><code>stopUnitTest</code> 传递 <code>fileKey: string | string[]</code> 进行停止指定文件或者文件数组 测试用例</li>
363
387
  </ul>
364
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">stopUnitTest</span><span class="hl-0">(</span><span class="hl-4">fileKey</span><span class="hl-0">: </span><span class="hl-4">string</span><span class="hl-0"> | </span><span class="hl-4">string</span><span class="hl-0">[])</span>
388
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">stopUnitTest</span><span class="hl-1">(</span><span class="hl-7">fileKey</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> | </span><span class="hl-7">string</span><span class="hl-1">[])</span>
365
389
  </code></pre>
366
390
  <ul>
367
391
  <li><code>runCmd</code> 接口调用方式:</li>
368
392
  </ul>
369
- <pre><code class="language-ts"><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">runCmd</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">cmd:</span><span class="hl-0"> </span><span class="hl-5">&#39;test&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
393
+ <pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">runCmd</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">cmd:</span><span class="hl-1"> </span><span class="hl-2">&#39;test&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
370
394
  </code></pre>
371
395
  <ul>
372
396
  <li><code>stopRunCmd</code> 接口调用方式:</li>
373
397
  </ul>
374
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">stopRunCmd</span><span class="hl-0">(</span><span class="hl-4">cmd</span><span class="hl-0">: </span><span class="hl-4">string</span><span class="hl-0">)</span>
398
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">stopRunCmd</span><span class="hl-1">(</span><span class="hl-7">cmd</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">)</span>
375
399
  </code></pre>
376
400
  <ul>
377
401
  <li>新增测试用例执行相关订阅事件</li>
378
402
  </ul>
379
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-6">// 执行测试用例状态</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">RunUnitTestStatus</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-6">// 执行用例结果</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">RunUnitTestResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-6">// 停止执行用例结果</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">StopUnitTestResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-6">// 执行CMD结果</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">RumCmdResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-6">// 停止执行CMD结果</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">StopRunCmdResult</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> ...</span>
403
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">// 执行测试用例状态</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">RunUnitTestStatus</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">// 执行用例结果</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">RunUnitTestResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">// 停止执行用例结果</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">StopUnitTestResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">// 执行CMD结果</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">RumCmdResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-3">// 停止执行CMD结果</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">StopRunCmdResult</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> ...</span>
380
404
  </code></pre>
381
405
 
382
- <a href="#优化-11" id="优化-11" style="color: inherit; text-decoration: none;">
406
+ <a href="#优化-12" id="优化-12" style="color: inherit; text-decoration: none;">
383
407
  <h3>优化</h3>
384
408
  </a>
385
409
  <ul>
@@ -412,26 +436,26 @@
412
436
  <h2>v0.9.159</h2>
413
437
  </a>
414
438
 
415
- <a href="#新增-10" id="新增-10" style="color: inherit; text-decoration: none;">
439
+ <a href="#新增-11" id="新增-11" style="color: inherit; text-decoration: none;">
416
440
  <h2>新增</h2>
417
441
  </a>
418
442
  <ul>
419
443
  <li>新增获取当前的光标选中区域信息 [getSelection]</li>
420
444
  </ul>
421
- <pre><code class="language-ts"><span class="hl-3">getSelection</span><span class="hl-0">(): </span><span class="hl-4">IDaoEditorSpace</span><span class="hl-0">.</span><span class="hl-4">ISelection</span><span class="hl-0"> | </span><span class="hl-1">undefined</span><span class="hl-0">;</span>
445
+ <pre><code class="language-ts"><span class="hl-6">getSelection</span><span class="hl-1">(): </span><span class="hl-7">IDaoEditorSpace</span><span class="hl-1">.</span><span class="hl-7">ISelection</span><span class="hl-1"> | </span><span class="hl-4">undefined</span><span class="hl-1">;</span>
422
446
  </code></pre>
423
447
  <ul>
424
448
  <li>新增浏览器协同和回放功能</li>
425
449
  </ul>
426
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><br/><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0"> + (</span><span class="hl-4">mockSdkInitFail</span><span class="hl-0"> ? </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-4">recordBrowser</span><span class="hl-0">: </span><span class="hl-4">recordBrowser</span><span class="hl-0">, </span><span class="hl-6">//是否录制数据: 候选人: true, 面试官false</span><br/><span class="hl-0"> </span><span class="hl-4">persistenceWebData:</span><span class="hl-0"> </span><span class="hl-4">persistenceWebData</span><span class="hl-0">, </span><span class="hl-6">// 浏览器数据是否持久化(保存到DB), SMB: true, 1024: false</span><br/><span class="hl-0"> });</span>
450
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><br/><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1"> + (</span><span class="hl-7">mockSdkInitFail</span><span class="hl-1"> ? </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-7">recordBrowser</span><span class="hl-1">: </span><span class="hl-7">recordBrowser</span><span class="hl-1">, </span><span class="hl-3">//是否录制数据: 候选人: true, 面试官false</span><br/><span class="hl-1"> </span><span class="hl-7">persistenceWebData:</span><span class="hl-1"> </span><span class="hl-7">persistenceWebData</span><span class="hl-1">, </span><span class="hl-3">// 浏览器数据是否持久化(保存到DB), SMB: true, 1024: false</span><br/><span class="hl-1"> });</span>
427
451
  </code></pre>
428
452
  <ul>
429
453
  <li>新增浏览器业务方控制是否录制数据的接口</li>
430
454
  </ul>
431
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">startRecordBrowser</span><span class="hl-0">(</span><span class="hl-1">true</span><span class="hl-0">/</span><span class="hl-1">false</span><span class="hl-0">);</span>
455
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">startRecordBrowser</span><span class="hl-1">(</span><span class="hl-4">true</span><span class="hl-1">/</span><span class="hl-4">false</span><span class="hl-1">);</span>
432
456
  </code></pre>
433
457
 
434
- <a href="#优化-12" id="优化-12" style="color: inherit; text-decoration: none;">
458
+ <a href="#优化-13" id="优化-13" style="color: inherit; text-decoration: none;">
435
459
  <h2>优化</h2>
436
460
  </a>
437
461
  <ul>
@@ -443,31 +467,31 @@
443
467
  <h2>v0.9.157</h2>
444
468
  </a>
445
469
 
446
- <a href="#新增-11" id="新增-11" style="color: inherit; text-decoration: none;">
470
+ <a href="#新增-12" id="新增-12" style="color: inherit; text-decoration: none;">
447
471
  <h3>新增</h3>
448
472
  </a>
449
473
  <ul>
450
474
  <li>新增添加自定义快捷键方法[addHotKeys]</li>
451
475
  </ul>
452
- <pre><code class="language-ts"><span class="hl-0">[{ </span><span class="hl-6">// hotKeys</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">key</span><span class="hl-0">: </span><span class="hl-5">&#39;Mod-j&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">run</span><span class="hl-4">:</span><span class="hl-0"> (</span><span class="hl-4">params</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-4">daoEditor</span><span class="hl-0">.</span><span class="hl-3">insertCodeByCursorPosition</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-4">params</span><span class="hl-0">.</span><span class="hl-4">path</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">content:</span><span class="hl-0"> </span><span class="hl-3">encodeURI</span><span class="hl-0">(</span><span class="hl-3">decodeURI</span><span class="hl-0">(</span><span class="hl-4">params</span><span class="hl-0">.</span><span class="hl-4">content</span><span class="hl-0">) + </span><span class="hl-5">&#39;INSERT TEST CODE&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">cursor:</span><span class="hl-0"> </span><span class="hl-4">params</span><span class="hl-0">.</span><span class="hl-4">cursor</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">offsetActions:</span><span class="hl-0"> </span><span class="hl-17">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-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-4">daoEditor</span><br/><span class="hl-0"> .</span><span class="hl-3">addHotKeys</span><span class="hl-0">(</span><span class="hl-4">hotKeys</span><span class="hl-0">)</span><br/><span class="hl-0"> .</span><span class="hl-3">catch</span><span class="hl-0">((</span><span class="hl-4">error</span><span class="hl-0">: </span><span class="hl-15">Error</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-6">// error: 快捷键不合法</span><br/><span class="hl-0"> });</span>
476
+ <pre><code class="language-ts"><span class="hl-1">[{ </span><span class="hl-3">// hotKeys</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">key</span><span class="hl-1">: </span><span class="hl-2">&#39;Mod-j&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">run</span><span class="hl-7">:</span><span class="hl-1"> (</span><span class="hl-7">params</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-7">daoEditor</span><span class="hl-1">.</span><span class="hl-6">insertCodeByCursorPosition</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-7">params</span><span class="hl-1">.</span><span class="hl-7">path</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">content:</span><span class="hl-1"> </span><span class="hl-6">encodeURI</span><span class="hl-1">(</span><span class="hl-6">decodeURI</span><span class="hl-1">(</span><span class="hl-7">params</span><span class="hl-1">.</span><span class="hl-7">content</span><span class="hl-1">) + </span><span class="hl-2">&#39;INSERT TEST CODE&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">cursor:</span><span class="hl-1"> </span><span class="hl-7">params</span><span class="hl-1">.</span><span class="hl-7">cursor</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">offsetActions:</span><span class="hl-1"> </span><span class="hl-17">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-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-7">daoEditor</span><br/><span class="hl-1"> .</span><span class="hl-6">addHotKeys</span><span class="hl-1">(</span><span class="hl-7">hotKeys</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-6">catch</span><span class="hl-1">((</span><span class="hl-7">error</span><span class="hl-1">: </span><span class="hl-15">Error</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// error: 快捷键不合法</span><br/><span class="hl-1"> });</span>
453
477
  </code></pre>
454
478
  <ul>
455
479
  <li>新增根据光标位置插入代码[insertCodeByCursorPosition]</li>
456
480
  </ul>
457
- <pre><code><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-4">daoEditor</span><span class="hl-0">.</span><span class="hl-3">insertCodeByCursorPosition</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-5">&#39;main.go&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">content:</span><span class="hl-0"> </span><span class="hl-3">encodeURI</span><span class="hl-0">(</span><span class="hl-5">&#39;TEST INSERT CODE&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">cursor:</span><span class="hl-0"> </span><span class="hl-17">102</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">offsetActions:</span><span class="hl-0"> </span><span class="hl-17">4</span><span class="hl-0">,</span><br/><span class="hl-0">});</span>
481
+ <pre><code><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-7">daoEditor</span><span class="hl-1">.</span><span class="hl-6">insertCodeByCursorPosition</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-2">&#39;main.go&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">content:</span><span class="hl-1"> </span><span class="hl-6">encodeURI</span><span class="hl-1">(</span><span class="hl-2">&#39;TEST INSERT CODE&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">cursor:</span><span class="hl-1"> </span><span class="hl-17">102</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">offsetActions:</span><span class="hl-1"> </span><span class="hl-17">4</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
458
482
  </code></pre>
459
483
  <ul>
460
484
  <li>新增根据range替换代码[replayCodeByRange]</li>
461
485
  </ul>
462
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-4">daoEditor</span><span class="hl-0">.</span><span class="hl-3">replayCodeByRange</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-5">&#39;main.go&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">content:</span><span class="hl-0"> </span><span class="hl-3">encodeURI</span><span class="hl-0">(</span><span class="hl-5">&#39;TEST INSERT CODE&#39;</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">selection:</span><span class="hl-0"> { </span><span class="hl-4">start:</span><span class="hl-0"> </span><span class="hl-17">102</span><span class="hl-0">, </span><span class="hl-4">end:</span><span class="hl-0"> </span><span class="hl-17">158</span><span class="hl-0"> },</span><br/><span class="hl-0">});</span>
486
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-7">daoEditor</span><span class="hl-1">.</span><span class="hl-6">replayCodeByRange</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-2">&#39;main.go&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">content:</span><span class="hl-1"> </span><span class="hl-6">encodeURI</span><span class="hl-1">(</span><span class="hl-2">&#39;TEST INSERT CODE&#39;</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">selection:</span><span class="hl-1"> { </span><span class="hl-7">start:</span><span class="hl-1"> </span><span class="hl-17">102</span><span class="hl-1">, </span><span class="hl-7">end:</span><span class="hl-1"> </span><span class="hl-17">158</span><span class="hl-1"> },</span><br/><span class="hl-1">});</span>
463
487
  </code></pre>
464
488
  <ul>
465
489
  <li>新增获取光标位置[getCursor]</li>
466
490
  </ul>
467
- <pre><code class="language-ts"><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">cursor</span><span class="hl-0"> = </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-4">daoEditor</span><span class="hl-0">.</span><span class="hl-3">getCursor</span><span class="hl-0">();</span>
491
+ <pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">cursor</span><span class="hl-1"> = </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-7">daoEditor</span><span class="hl-1">.</span><span class="hl-6">getCursor</span><span class="hl-1">();</span>
468
492
  </code></pre>
469
493
 
470
- <a href="#优化-13" id="优化-13" style="color: inherit; text-decoration: none;">
494
+ <a href="#优化-14" id="优化-14" style="color: inherit; text-decoration: none;">
471
495
  <h3>优化</h3>
472
496
  </a>
473
497
  <ul>
@@ -479,14 +503,14 @@
479
503
  <h2>v0.9.156</h2>
480
504
  </a>
481
505
 
482
- <a href="#新增-12" id="新增-12" style="color: inherit; text-decoration: none;">
506
+ <a href="#新增-13" id="新增-13" style="color: inherit; text-decoration: none;">
483
507
  <h3>新增</h3>
484
508
  </a>
485
509
  <ul>
486
510
  <li>暴露removeMessage和removeError移除事件监听</li>
487
511
  </ul>
488
512
 
489
- <a href="#优化-14" id="优化-14" style="color: inherit; text-decoration: none;">
513
+ <a href="#优化-15" id="优化-15" style="color: inherit; text-decoration: none;">
490
514
  <h3>优化</h3>
491
515
  </a>
492
516
  <ul>
@@ -510,13 +534,13 @@
510
534
  <h2>v0.9.154</h2>
511
535
  </a>
512
536
 
513
- <a href="#新增-13" id="新增-13" style="color: inherit; text-decoration: none;">
537
+ <a href="#新增-14" id="新增-14" style="color: inherit; text-decoration: none;">
514
538
  <h3>新增</h3>
515
539
  </a>
516
540
  <ul>
517
541
  <li>新增支持初始化<code>SDK</code> <code>globalConfig</code> 全局配置</li>
518
542
  </ul>
519
- <pre><code class="language-ts"><span class="hl-1">type</span><span class="hl-0"> </span><span class="hl-15">GlobalConfig</span><span class="hl-0"> = {</span><br/><span class="hl-0"> </span><span class="hl-4">editorMode</span><span class="hl-0">?: </span><span class="hl-15">EditorMode</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">editorTabSize</span><span class="hl-0">?: </span><span class="hl-15">number</span><span class="hl-0"> | </span><span class="hl-5">&#39;auto&#39;</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">editorWordWrap</span><span class="hl-0">?: </span><span class="hl-15">boolean</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">fontSize</span><span class="hl-0">?: </span><span class="hl-15">string</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">editorIndentMode</span><span class="hl-0">?: </span><span class="hl-15">EditorIndentMode</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">openDiagnostic</span><span class="hl-0">?: </span><span class="hl-15">boolean</span><span class="hl-0">;</span><br/><span class="hl-0">};</span>
543
+ <pre><code class="language-ts"><span class="hl-4">type</span><span class="hl-1"> </span><span class="hl-15">GlobalConfig</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-7">editorMode</span><span class="hl-1">?: </span><span class="hl-15">EditorMode</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">editorTabSize</span><span class="hl-1">?: </span><span class="hl-15">number</span><span class="hl-1"> | </span><span class="hl-2">&#39;auto&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">editorWordWrap</span><span class="hl-1">?: </span><span class="hl-15">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">fontSize</span><span class="hl-1">?: </span><span class="hl-15">string</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">editorIndentMode</span><span class="hl-1">?: </span><span class="hl-15">EditorIndentMode</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">openDiagnostic</span><span class="hl-1">?: </span><span class="hl-15">boolean</span><span class="hl-1">;</span><br/><span class="hl-1">};</span>
520
544
  </code></pre>
521
545
  <ul>
522
546
  <li>新增回放模式下, LSP状态都为<code>notSupport</code> 值</li>
@@ -533,13 +557,13 @@
533
557
  <h2>v0.9.152</h2>
534
558
  </a>
535
559
 
536
- <a href="#新增-14" id="新增-14" style="color: inherit; text-decoration: none;">
560
+ <a href="#新增-15" id="新增-15" style="color: inherit; text-decoration: none;">
537
561
  <h3>新增</h3>
538
562
  </a>
539
563
  <ul>
540
564
  <li>新增<code>promisify</code> 接口<code>activePlaygroundSync</code></li>
541
565
  </ul>
542
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">activePlaygroundSync</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">));</span><br/><span class="hl-0"> } </span><span class="hl-16">catch</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
566
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">activePlaygroundSync</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">));</span><br/><span class="hl-1"> } </span><span class="hl-16">catch</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
543
567
  </code></pre>
544
568
 
545
569
  <a href="#修复-9" id="修复-9" style="color: inherit; text-decoration: none;">
@@ -553,37 +577,37 @@
553
577
  <h2>v0.9.151</h2>
554
578
  </a>
555
579
 
556
- <a href="#新增-15" id="新增-15" style="color: inherit; text-decoration: none;">
580
+ <a href="#新增-16" id="新增-16" style="color: inherit; text-decoration: none;">
557
581
  <h3>新增</h3>
558
582
  </a>
559
583
  <ul>
560
584
  <li>新增支持打开<code>csv</code>类型文件</li>
561
585
  <li>获取测试用例接口<code>getUnitTestFun</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
562
586
  </ul>
563
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">getUnitTestFun</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">catch</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
587
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">getUnitTestFun</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">catch</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
564
588
  </code></pre>
565
589
  <ul>
566
590
  <li>新增获取运行测试用例接口<code>runUnitTestByFilePath</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
567
591
  </ul>
568
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">runUnitTestByFilePath</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">fileKey:</span><span class="hl-0"> </span><span class="hl-5">&#39;sum.test.js&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">outputConsole:</span><span class="hl-0"> </span><span class="hl-1">false</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">consoleText:</span><span class="hl-0"> </span><span class="hl-5">&#39;123&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">runMode:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">runId:</span><span class="hl-0"> </span><span class="hl-3">uuidv4</span><span class="hl-0">(),</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">catch</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
592
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">runUnitTestByFilePath</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">fileKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;sum.test.js&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">outputConsole:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">consoleText:</span><span class="hl-1"> </span><span class="hl-2">&#39;123&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">runMode:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">runId:</span><span class="hl-1"> </span><span class="hl-6">uuidv4</span><span class="hl-1">(),</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">catch</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
569
593
  </code></pre>
570
594
  <ul>
571
595
  <li>新增停止运行测试用例接口<code>stopUnitTest</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
572
596
  </ul>
573
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">stopUnitTest</span><span class="hl-0">(</span><span class="hl-4">runId</span><span class="hl-0">); </span><span class="hl-6">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">catch</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
597
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">stopUnitTest</span><span class="hl-1">(</span><span class="hl-7">runId</span><span class="hl-1">); </span><span class="hl-3">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">catch</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
574
598
  </code></pre>
575
599
  <ul>
576
600
  <li>新增运行<code>CMD</code>接口<code>runCmd</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
577
601
  </ul>
578
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">runCmd</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">runId:</span><span class="hl-0"> </span><span class="hl-3">uuidv4</span><span class="hl-0">(),</span><br/><span class="hl-0"> </span><span class="hl-4">cmd:</span><span class="hl-0"> </span><span class="hl-5">&#39;test&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> }); </span><span class="hl-6">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">catch</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
602
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">runCmd</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">runId:</span><span class="hl-1"> </span><span class="hl-6">uuidv4</span><span class="hl-1">(),</span><br/><span class="hl-1"> </span><span class="hl-7">cmd:</span><span class="hl-1"> </span><span class="hl-2">&#39;test&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> }); </span><span class="hl-3">// runId是上面接口runUnitTestByFilePath 传递的runId</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">catch</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
579
603
  </code></pre>
580
604
  <ul>
581
605
  <li>新增停止运行<code>CMD</code>接口<code>stopRunCmd</code>(必须是ACTIVE状态,不然接口直接抛错误)</li>
582
606
  </ul>
583
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-16">try</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">stopUnitTest</span><span class="hl-0">(</span><span class="hl-4">runId</span><span class="hl-0">); </span><span class="hl-6">// runCmd 传递的runId</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">catch</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> }</span>
607
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-16">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">stopUnitTest</span><span class="hl-1">(</span><span class="hl-7">runId</span><span class="hl-1">); </span><span class="hl-3">// runCmd 传递的runId</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">catch</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> }</span>
584
608
  </code></pre>
585
609
 
586
- <a href="#优化-15" id="优化-15" style="color: inherit; text-decoration: none;">
610
+ <a href="#优化-16" id="优化-16" style="color: inherit; text-decoration: none;">
587
611
  <h3>优化</h3>
588
612
  </a>
589
613
  <ul>
@@ -613,26 +637,26 @@
613
637
  <h2>v0.9.149</h2>
614
638
  </a>
615
639
 
616
- <a href="#新增-16" id="新增-16" style="color: inherit; text-decoration: none;">
640
+ <a href="#新增-17" id="新增-17" style="color: inherit; text-decoration: none;">
617
641
  <h3>新增</h3>
618
642
  </a>
619
643
  <ul>
620
644
  <li>新增业务方注入日志上报方法<code>customLog</code></li>
621
645
  </ul>
622
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-4">customLog</span><span class="hl-0">: (</span><span class="hl-4">level</span><span class="hl-0">: </span><span class="hl-15">string</span><span class="hl-0">, </span><span class="hl-4">args</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">log</span><span class="hl-0"> = </span><span class="hl-4">console</span><span class="hl-0">[</span><span class="hl-4">level</span><span class="hl-0">];</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">log</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">`[customLog][</span><span class="hl-1">${</span><span class="hl-4">level</span><span class="hl-1">}</span><span class="hl-5">]`</span><span class="hl-0">, ...</span><span class="hl-4">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>
646
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-7">customLog</span><span class="hl-1">: (</span><span class="hl-7">level</span><span class="hl-1">: </span><span class="hl-15">string</span><span class="hl-1">, </span><span class="hl-7">args</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">log</span><span class="hl-1"> = </span><span class="hl-7">console</span><span class="hl-1">[</span><span class="hl-7">level</span><span class="hl-1">];</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">log</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">`[customLog][</span><span class="hl-4">${</span><span class="hl-7">level</span><span class="hl-4">}</span><span class="hl-2">]`</span><span class="hl-1">, ...</span><span class="hl-7">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>
623
647
  </code></pre>
624
648
  <ul>
625
649
  <li>新增<code>promisify</code> 接口<code>appendCustomizeFrameDataSync</code></li>
626
650
  </ul>
627
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0">: </span><span class="hl-15">any</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">appendCustomizeFrameDataSync</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;startQuestion&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">value:</span><span class="hl-0"> </span><span class="hl-4">activeId</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">uuid</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
651
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">: </span><span class="hl-15">any</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">appendCustomizeFrameDataSync</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;startQuestion&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">value:</span><span class="hl-1"> </span><span class="hl-7">activeId</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">uuid</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
628
652
  </code></pre>
629
653
  <ul>
630
654
  <li>新增<code>promisify</code> 接口<code>preparePlaybackSync</code></li>
631
655
  </ul>
632
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">.</span><span class="hl-3">preparePlaybackSync</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">info</span><span class="hl-0">(</span><span class="hl-5">&#39;通过同步事件收到回放数据&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setQuestionsData</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">questionsData</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">total</span><span class="hl-0"> &gt; </span><span class="hl-17">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-3">setPlayable</span><span class="hl-0">(</span><span class="hl-1">true</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setPlaybackDuration</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">end</span><span class="hl-0"> - </span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">start</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span>
656
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">.</span><span class="hl-6">preparePlaybackSync</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">info</span><span class="hl-1">(</span><span class="hl-2">&#39;通过同步事件收到回放数据&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setQuestionsData</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">questionsData</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">total</span><span class="hl-1"> &gt; </span><span class="hl-17">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-6">setPlayable</span><span class="hl-1">(</span><span class="hl-4">true</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setPlaybackDuration</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">end</span><span class="hl-1"> - </span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">start</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span>
633
657
  </code></pre>
634
658
 
635
- <a href="#优化-16" id="优化-16" style="color: inherit; text-decoration: none;">
659
+ <a href="#优化-17" id="优化-17" style="color: inherit; text-decoration: none;">
636
660
  <h3>优化</h3>
637
661
  </a>
638
662
  <ul>
@@ -651,19 +675,19 @@
651
675
  <h2>v0.9.148</h2>
652
676
  </a>
653
677
 
654
- <a href="#新增-17" id="新增-17" style="color: inherit; text-decoration: none;">
678
+ <a href="#新增-18" id="新增-18" style="color: inherit; text-decoration: none;">
655
679
  <h3>新增</h3>
656
680
  </a>
657
681
  <ul>
658
682
  <li>新增<code>SDK</code>初始化失败事件<code>initError</code></li>
659
683
  </ul>
660
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">InitError</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-5">&#39;初始化SDK失败,请刷新页面重试:&#39;</span><span class="hl-0"> + </span><span class="hl-4">payload</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ...</span>
684
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">InitError</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-2">&#39;初始化SDK失败,请刷新页面重试:&#39;</span><span class="hl-1"> + </span><span class="hl-7">payload</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> ...</span>
661
685
  </code></pre>
662
686
  <ul>
663
687
  <li>新增针对切题场景<code>IDEServer</code>底层架构优化</li>
664
688
  </ul>
665
689
 
666
- <a href="#优化-17" id="优化-17" style="color: inherit; text-decoration: none;">
690
+ <a href="#优化-18" id="优化-18" style="color: inherit; text-decoration: none;">
667
691
  <h3>优化</h3>
668
692
  </a>
669
693
  <ul>
@@ -677,19 +701,19 @@
677
701
  <h2>v0.9.146</h2>
678
702
  </a>
679
703
 
680
- <a href="#新增-18" id="新增-18" style="color: inherit; text-decoration: none;">
704
+ <a href="#新增-19" id="新增-19" style="color: inherit; text-decoration: none;">
681
705
  <h3>新增</h3>
682
706
  </a>
683
707
  <ul>
684
708
  <li>新增支持<code>Editor</code> <code>placeholder</code>功能,支持配置多语言,配置全局默认的, 配置指定文件路径的, 支持配置<code>Dom</code>元素</li>
685
709
  </ul>
686
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-3">getDom</span><span class="hl-0"> = (</span><span class="hl-4">lan</span><span class="hl-0">: </span><span class="hl-15">I18nLanguageType</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dom</span><span class="hl-0"> = </span><span class="hl-4">document</span><span class="hl-0">.</span><span class="hl-3">createElement</span><span class="hl-0">(</span><span class="hl-5">&#39;div&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">text</span><span class="hl-0"> =</span><br/><span class="hl-0"> </span><span class="hl-4">lan</span><span class="hl-0"> === </span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><br/><span class="hl-0"> ? </span><span class="hl-5">&#39;请在此输入你的代码&#39;</span><br/><span class="hl-0"> : </span><span class="hl-5">&#39;Please input your answer at here&#39;</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">dom</span><span class="hl-0">.</span><span class="hl-4">textContent</span><span class="hl-0"> = </span><span class="hl-4">text</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">dom</span><span class="hl-0">.</span><span class="hl-3">setAttribute</span><span class="hl-0">(</span><span class="hl-5">&#39;style&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;color:red;font-size:24px&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> </span><span class="hl-4">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-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-11">defaultPlaceholder</span><span class="hl-0">: {</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0">]: </span><span class="hl-5">&#39;默认的Placeholder 内容&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">EN</span><span class="hl-0">]: </span><span class="hl-5">&#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-11">placeholders</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-3">getDom</span><span class="hl-0">(</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0">),</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-3">getDom</span><span class="hl-0">(</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">EN</span><span class="hl-0">),</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;1.c&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;请在这里输入你的代码-1.c&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#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-5">&#39;root/2.c&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;请在这里输入你的代码-root/2.c&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><br/><span class="hl-0"> </span><span class="hl-5">&#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>
710
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-6">getDom</span><span class="hl-1"> = (</span><span class="hl-7">lan</span><span class="hl-1">: </span><span class="hl-15">I18nLanguageType</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dom</span><span class="hl-1"> = </span><span class="hl-7">document</span><span class="hl-1">.</span><span class="hl-6">createElement</span><span class="hl-1">(</span><span class="hl-2">&#39;div&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">text</span><span class="hl-1"> =</span><br/><span class="hl-1"> </span><span class="hl-7">lan</span><span class="hl-1"> === </span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><br/><span class="hl-1"> ? </span><span class="hl-2">&#39;请在此输入你的代码&#39;</span><br/><span class="hl-1"> : </span><span class="hl-2">&#39;Please input your answer at here&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">dom</span><span class="hl-1">.</span><span class="hl-7">textContent</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-7">dom</span><span class="hl-1">.</span><span class="hl-6">setAttribute</span><span class="hl-1">(</span><span class="hl-2">&#39;style&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;color:red;font-size:24px&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> </span><span class="hl-7">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-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-0">defaultPlaceholder</span><span class="hl-1">: {</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1">]: </span><span class="hl-2">&#39;默认的Placeholder 内容&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">EN</span><span class="hl-1">]: </span><span class="hl-2">&#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-0">placeholders</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-6">getDom</span><span class="hl-1">(</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-6">getDom</span><span class="hl-1">(</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">EN</span><span class="hl-1">),</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;1.c&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;请在这里输入你的代码-1.c&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#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-2">&#39;root/2.c&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;请在这里输入你的代码-root/2.c&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><br/><span class="hl-1"> </span><span class="hl-2">&#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>
687
711
  </code></pre>
688
712
  <ul>
689
713
  <li>新增文件树支持<code>F2</code>快捷键重命名</li>
690
714
  </ul>
691
715
 
692
- <a href="#优化-18" id="优化-18" style="color: inherit; text-decoration: none;">
716
+ <a href="#优化-19" id="优化-19" style="color: inherit; text-decoration: none;">
693
717
  <h3>优化</h3>
694
718
  </a>
695
719
  <ul>
@@ -700,16 +724,16 @@
700
724
  <h2>v0.9.145</h2>
701
725
  </a>
702
726
 
703
- <a href="#新增-19" id="新增-19" style="color: inherit; text-decoration: none;">
727
+ <a href="#新增-20" id="新增-20" style="color: inherit; text-decoration: none;">
704
728
  <h3>新增</h3>
705
729
  </a>
706
730
  <ul>
707
731
  <li>新增选择代码右击菜单功能(目前只支持:【implement,update】两种菜单Action):</li>
708
732
  </ul>
709
- <pre><code class="language-ts"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">showHiddenCode</span><span class="hl-0">, </span><span class="hl-6">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-0"> </span><span class="hl-4">freezeCode</span><span class="hl-0">, </span><span class="hl-6">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-0"> </span><span class="hl-11">contextMenu</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">title</span><span class="hl-0">: </span><span class="hl-5">&#39;ChatGPT&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">handleSelect</span><span class="hl-0">: (</span><span class="hl-4">e</span><span class="hl-0">, </span><span class="hl-4">callback</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">info</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">id</span><span class="hl-0"> = </span><span class="hl-15">Math</span><span class="hl-0">.</span><span class="hl-3">floor</span><span class="hl-0">(</span><span class="hl-15">Math</span><span class="hl-0">.</span><span class="hl-3">random</span><span class="hl-0">() * </span><span class="hl-17">1000</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">callback</span><span class="hl-0">?.({</span><br/><span class="hl-0"> </span><span class="hl-4">extralAction:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">replaceSelection:</span><span class="hl-0"> [</span><span class="hl-5">&#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-11">items</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;implement&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> </span><span class="hl-5">&#39;生成代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">noActionCheck:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-0"> </span><span class="hl-4">codeAction:</span><span class="hl-0"> </span><span class="hl-5">&#39;append&#39;</span><span class="hl-0">, </span><span class="hl-6">// 代码追加的方式: append, replace,</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> </span><span class="hl-5">&#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-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;update&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> </span><span class="hl-5">&#39;解析执行&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">noActionCheck:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-0"> </span><span class="hl-4">codeAction:</span><span class="hl-0"> </span><span class="hl-5">&#39;replace&#39;</span><span class="hl-0">, </span><span class="hl-6">// 代码追加的方式: append, replace,</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> </span><span class="hl-5">&#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>
733
+ <pre><code class="language-ts"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">showHiddenCode</span><span class="hl-1">, </span><span class="hl-3">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-1"> </span><span class="hl-7">freezeCode</span><span class="hl-1">, </span><span class="hl-3">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-1"> </span><span class="hl-0">contextMenu</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">title</span><span class="hl-1">: </span><span class="hl-2">&#39;ChatGPT&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">handleSelect</span><span class="hl-1">: (</span><span class="hl-7">e</span><span class="hl-1">, </span><span class="hl-7">callback</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">info</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">id</span><span class="hl-1"> = </span><span class="hl-15">Math</span><span class="hl-1">.</span><span class="hl-6">floor</span><span class="hl-1">(</span><span class="hl-15">Math</span><span class="hl-1">.</span><span class="hl-6">random</span><span class="hl-1">() * </span><span class="hl-17">1000</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">callback</span><span class="hl-1">?.({</span><br/><span class="hl-1"> </span><span class="hl-7">extralAction:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">replaceSelection:</span><span class="hl-1"> [</span><span class="hl-2">&#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-0">items</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;implement&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">text:</span><span class="hl-1"> </span><span class="hl-2">&#39;生成代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">noActionCheck:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-1"> </span><span class="hl-7">codeAction:</span><span class="hl-1"> </span><span class="hl-2">&#39;append&#39;</span><span class="hl-1">, </span><span class="hl-3">// 代码追加的方式: append, replace,</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> </span><span class="hl-2">&#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-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;update&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">text:</span><span class="hl-1"> </span><span class="hl-2">&#39;解析执行&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">noActionCheck:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// 答题区需要坚持隐藏,只读,答题区域内等情况不能设置</span><br/><span class="hl-1"> </span><span class="hl-7">codeAction:</span><span class="hl-1"> </span><span class="hl-2">&#39;replace&#39;</span><span class="hl-1">, </span><span class="hl-3">// 代码追加的方式: append, replace,</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> </span><span class="hl-2">&#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>
710
734
  </code></pre>
711
735
 
712
- <a href="#优化-19" id="优化-19" style="color: inherit; text-decoration: none;">
736
+ <a href="#优化-20" id="优化-20" style="color: inherit; text-decoration: none;">
713
737
  <h3>优化</h3>
714
738
  </a>
715
739
  <ul>
@@ -731,19 +755,19 @@
731
755
  <h2>v0.9.143</h2>
732
756
  </a>
733
757
 
734
- <a href="#新增-20" id="新增-20" style="color: inherit; text-decoration: none;">
758
+ <a href="#新增-21" id="新增-21" style="color: inherit; text-decoration: none;">
735
759
  <h3>新增</h3>
736
760
  </a>
737
761
  <ul>
738
762
  <li>新增批量修改答题区Flag属性接口(并支持修改历史数据)</li>
739
763
  </ul>
740
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">updateAreaFlags</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-0">, </span><span class="hl-6">// 指定文件ID</span><br/><span class="hl-0"> </span><span class="hl-4">ids:</span><span class="hl-0"> [ </span><span class="hl-6">// 要修改的ID的集合</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">id:</span><span class="hl-0"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-6">// 答题区域的ID</span><br/><span class="hl-0"> </span><span class="hl-4">flag:</span><span class="hl-0"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-6">// 新的Flag值</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">id:</span><span class="hl-0"> </span><span class="hl-5">&#39;2&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">flag:</span><span class="hl-0"> </span><span class="hl-5">&#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>
764
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">updateAreaFlags</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-1">, </span><span class="hl-3">// 指定文件ID</span><br/><span class="hl-1"> </span><span class="hl-7">ids:</span><span class="hl-1"> [ </span><span class="hl-3">// 要修改的ID的集合</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">id:</span><span class="hl-1"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-3">// 答题区域的ID</span><br/><span class="hl-1"> </span><span class="hl-7">flag:</span><span class="hl-1"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-3">// 新的Flag值</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">id:</span><span class="hl-1"> </span><span class="hl-2">&#39;2&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">flag:</span><span class="hl-1"> </span><span class="hl-2">&#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>
741
765
  </code></pre>
742
766
  <ul>
743
767
  <li>新增<code>IDEServer</code>配置日志输出级别</li>
744
768
  </ul>
745
769
 
746
- <a href="#优化-20" id="优化-20" style="color: inherit; text-decoration: none;">
770
+ <a href="#优化-21" id="优化-21" style="color: inherit; text-decoration: none;">
747
771
  <h3>优化</h3>
748
772
  </a>
749
773
  <ul>
@@ -756,7 +780,7 @@
756
780
  <h2>v0.9.142</h2>
757
781
  </a>
758
782
 
759
- <a href="#优化-21" id="优化-21" style="color: inherit; text-decoration: none;">
783
+ <a href="#优化-22" id="优化-22" style="color: inherit; text-decoration: none;">
760
784
  <h3>优化</h3>
761
785
  </a>
762
786
  <ul>
@@ -769,7 +793,7 @@
769
793
  <h2>v0.9.141</h2>
770
794
  </a>
771
795
 
772
- <a href="#新增-21" id="新增-21" style="color: inherit; text-decoration: none;">
796
+ <a href="#新增-22" id="新增-22" style="color: inherit; text-decoration: none;">
773
797
  <h3>新增</h3>
774
798
  </a>
775
799
  <ul>
@@ -777,10 +801,10 @@
777
801
  <li>新增记录哪些文件进行了修改, 对应的文件名称<code>.1024file</code></li>
778
802
  <li>新增回放数据,标记对应的时间范围为空白时</li>
779
803
  </ul>
780
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-6">//</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">noFrameSpan</span><span class="hl-0">: </span><span class="hl-17">2</span><span class="hl-0">, </span><span class="hl-6">// &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-6">// PlaybackInfo 事件,会返回一个 whiteFrames数组</span>
804
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">//</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">noFrameSpan</span><span class="hl-1">: </span><span class="hl-17">2</span><span class="hl-1">, </span><span class="hl-3">// &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-3">// PlaybackInfo 事件,会返回一个 whiteFrames数组</span>
781
805
  </code></pre>
782
806
 
783
- <a href="#优化-22" id="优化-22" style="color: inherit; text-decoration: none;">
807
+ <a href="#优化-23" id="优化-23" style="color: inherit; text-decoration: none;">
784
808
  <h3>优化</h3>
785
809
  </a>
786
810
  <ul>
@@ -796,7 +820,7 @@
796
820
  <h2>v0.9.140</h2>
797
821
  </a>
798
822
 
799
- <a href="#优化-23" id="优化-23" style="color: inherit; text-decoration: none;">
823
+ <a href="#优化-24" id="优化-24" style="color: inherit; text-decoration: none;">
800
824
  <h3>优化</h3>
801
825
  </a>
802
826
  <ul>
@@ -807,7 +831,7 @@
807
831
  <h2>v0.9.139</h2>
808
832
  </a>
809
833
 
810
- <a href="#优化-24" id="优化-24" style="color: inherit; text-decoration: none;">
834
+ <a href="#优化-25" id="优化-25" style="color: inherit; text-decoration: none;">
811
835
  <h3>优化</h3>
812
836
  </a>
813
837
  <ul>
@@ -841,7 +865,7 @@
841
865
  <h2>v0.9.136</h2>
842
866
  </a>
843
867
 
844
- <a href="#优化-25" id="优化-25" style="color: inherit; text-decoration: none;">
868
+ <a href="#优化-26" id="优化-26" style="color: inherit; text-decoration: none;">
845
869
  <h3>优化</h3>
846
870
  </a>
847
871
  <ul>
@@ -868,13 +892,13 @@
868
892
  <h2>v0.9.134</h2>
869
893
  </a>
870
894
 
871
- <a href="#新增-22" id="新增-22" style="color: inherit; text-decoration: none;">
895
+ <a href="#新增-23" id="新增-23" style="color: inherit; text-decoration: none;">
872
896
  <h3>新增</h3>
873
897
  </a>
874
898
  <ul>
875
899
  <li>暴露debug状态信息</li>
876
900
  </ul>
877
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Debug</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-6">// payload.debugStatus状态信息</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
901
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Debug</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-3">// payload.debugStatus状态信息</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
878
902
  </code></pre>
879
903
  <ul>
880
904
  <li>debug面板添加启动中dot</li>
@@ -887,7 +911,7 @@
887
911
  <li>debug运行中离线重连后重置debug相关数据</li>
888
912
  </ul>
889
913
 
890
- <a href="#优化-26" id="优化-26" style="color: inherit; text-decoration: none;">
914
+ <a href="#优化-27" id="优化-27" style="color: inherit; text-decoration: none;">
891
915
  <h3>优化</h3>
892
916
  </a>
893
917
  <ul>
@@ -898,7 +922,7 @@
898
922
  <h2>v0.9.133</h2>
899
923
  </a>
900
924
 
901
- <a href="#新增-23" id="新增-23" style="color: inherit; text-decoration: none;">
925
+ <a href="#新增-24" id="新增-24" style="color: inherit; text-decoration: none;">
902
926
  <h3>新增</h3>
903
927
  </a>
904
928
  <ul>
@@ -914,7 +938,7 @@
914
938
  <li>修复编辑器选中内容的首行高亮问题</li>
915
939
  </ul>
916
940
 
917
- <a href="#优化-27" id="优化-27" style="color: inherit; text-decoration: none;">
941
+ <a href="#优化-28" id="优化-28" style="color: inherit; text-decoration: none;">
918
942
  <h3>优化</h3>
919
943
  </a>
920
944
  <ul>
@@ -933,7 +957,7 @@
933
957
  <h2>v0.9.132</h2>
934
958
  </a>
935
959
 
936
- <a href="#优化-28" id="优化-28" style="color: inherit; text-decoration: none;">
960
+ <a href="#优化-29" id="优化-29" style="color: inherit; text-decoration: none;">
937
961
  <h3>优化</h3>
938
962
  </a>
939
963
  <ul>
@@ -945,21 +969,21 @@
945
969
  <h2>v0.9.131</h2>
946
970
  </a>
947
971
 
948
- <a href="#优化-29" id="优化-29" style="color: inherit; text-decoration: none;">
972
+ <a href="#优化-30" id="优化-30" style="color: inherit; text-decoration: none;">
949
973
  <h3>优化</h3>
950
974
  </a>
951
975
  <ul>
952
976
  <li>优化debug(开始/停止icon颜色、点击堆栈项进行跳转、toolTip文案/背景修改、修复断点状态、优化获取当前文件断点数据方法)</li>
953
977
  </ul>
954
978
 
955
- <a href="#新增-24" id="新增-24" style="color: inherit; text-decoration: none;">
979
+ <a href="#新增-25" id="新增-25" style="color: inherit; text-decoration: none;">
956
980
  <h3>新增</h3>
957
981
  </a>
958
982
  <ul>
959
983
  <li>新增realTimeRefresh参数文件有更新是否通知MQ(非运行状态时)</li>
960
984
  <li>新增insertCodeByCursor方法,根据光标位置插入数据</li>
961
985
  </ul>
962
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">insertCodeByCursor</span><span class="hl-0">(</span><span class="hl-4">insertCode</span><span class="hl-0">);</span><br/><br/><span class="hl-0"> </span><span class="hl-6">// 插入代码</span><br/><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-3">insertCode</span><span class="hl-0"> = (</span><br/><span class="hl-0"> </span><span class="hl-4">line</span><span class="hl-0">: </span><span class="hl-15">number</span><span class="hl-0">, </span><span class="hl-6">// line为当前光标聚焦行</span><br/><span class="hl-0"> </span><span class="hl-4">insercodeCallback</span><span class="hl-0">: </span><span class="hl-15">IInsertCodeInternalFn</span><span class="hl-0">,</span><br/><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-6">// 计算pos</span><br/><span class="hl-0"> </span><span class="hl-3">insercodeCallback</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">line:</span><span class="hl-0"> </span><span class="hl-4">line</span><span class="hl-0"> + </span><span class="hl-4">offsetLine</span><span class="hl-0">, </span><span class="hl-6">// offsetLine为光标偏移量</span><br/><span class="hl-0"> </span><span class="hl-4">actions:</span><span class="hl-0"> </span><span class="hl-5">&#39;current&#39;</span><span class="hl-0">, </span><span class="hl-6">// 代码插入的位置,当前行首(start) | 当前位置(current) | 当前行尾(end)</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> </span><span class="hl-3">encodeURI</span><span class="hl-0">(</span><span class="hl-4">insertCodeText</span><span class="hl-0">),</span><br/><span class="hl-0"> });</span><br/><span class="hl-0">};</span>
986
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">insertCodeByCursor</span><span class="hl-1">(</span><span class="hl-7">insertCode</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 插入代码</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-6">insertCode</span><span class="hl-1"> = (</span><br/><span class="hl-1"> </span><span class="hl-7">line</span><span class="hl-1">: </span><span class="hl-15">number</span><span class="hl-1">, </span><span class="hl-3">// line为当前光标聚焦行</span><br/><span class="hl-1"> </span><span class="hl-7">insercodeCallback</span><span class="hl-1">: </span><span class="hl-15">IInsertCodeInternalFn</span><span class="hl-1">,</span><br/><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// 计算pos</span><br/><span class="hl-1"> </span><span class="hl-6">insercodeCallback</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">line:</span><span class="hl-1"> </span><span class="hl-7">line</span><span class="hl-1"> + </span><span class="hl-7">offsetLine</span><span class="hl-1">, </span><span class="hl-3">// offsetLine为光标偏移量</span><br/><span class="hl-1"> </span><span class="hl-7">actions:</span><span class="hl-1"> </span><span class="hl-2">&#39;current&#39;</span><span class="hl-1">, </span><span class="hl-3">// 代码插入的位置,当前行首(start) | 当前位置(current) | 当前行尾(end)</span><br/><span class="hl-1"> </span><span class="hl-7">text:</span><span class="hl-1"> </span><span class="hl-6">encodeURI</span><span class="hl-1">(</span><span class="hl-7">insertCodeText</span><span class="hl-1">),</span><br/><span class="hl-1"> });</span><br/><span class="hl-1">};</span>
963
987
  </code></pre>
964
988
 
965
989
  <a href="#修复-19" id="修复-19" style="color: inherit; text-decoration: none;">
@@ -978,7 +1002,7 @@
978
1002
  <h2>v0.9.130</h2>
979
1003
  </a>
980
1004
 
981
- <a href="#优化-30" id="优化-30" style="color: inherit; text-decoration: none;">
1005
+ <a href="#优化-31" id="优化-31" style="color: inherit; text-decoration: none;">
982
1006
  <h3>优化</h3>
983
1007
  </a>
984
1008
  <ul>
@@ -991,13 +1015,13 @@
991
1015
  <h2>v0.9.129</h2>
992
1016
  </a>
993
1017
 
994
- <a href="#新增-25" id="新增-25" style="color: inherit; text-decoration: none;">
1018
+ <a href="#新增-26" id="新增-26" style="color: inherit; text-decoration: none;">
995
1019
  <h2>新增</h2>
996
1020
  </a>
997
1021
  <ul>
998
1022
  <li>新增<code>XtermInfo</code>事件,<code>terminal</code>或者<code>console</code>有更新进行派发</li>
999
1023
  </ul>
1000
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">XtermInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> console.log(payload); </span><span class="hl-6">// 数据为IXtermInfo</span><br/><span class="hl-0"> break;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
1024
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">XtermInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> console.log(payload); </span><span class="hl-3">// 数据为IXtermInfo</span><br/><span class="hl-1"> break;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
1001
1025
  </code></pre>
1002
1026
 
1003
1027
  <a href="#修复-20" id="修复-20" style="color: inherit; text-decoration: none;">
@@ -1012,7 +1036,7 @@
1012
1036
  <h2>v0.9.128</h2>
1013
1037
  </a>
1014
1038
 
1015
- <a href="#优化-31" id="优化-31" style="color: inherit; text-decoration: none;">
1039
+ <a href="#优化-32" id="优化-32" style="color: inherit; text-decoration: none;">
1016
1040
  <h2>优化</h2>
1017
1041
  </a>
1018
1042
  <ul>
@@ -1025,23 +1049,23 @@
1025
1049
  <h2>v0.9.127</h2>
1026
1050
  </a>
1027
1051
 
1028
- <a href="#新增-26" id="新增-26" style="color: inherit; text-decoration: none;">
1052
+ <a href="#新增-27" id="新增-27" style="color: inherit; text-decoration: none;">
1029
1053
  <h2>新增</h2>
1030
1054
  </a>
1031
1055
  <ul>
1032
1056
  <li>新增强制刷新文件缓存的接口</li>
1033
1057
  </ul>
1034
- <pre><code class="language-ts"><span class="hl-4">daoPaas</span><span class="hl-0">.</span><span class="hl-3">forceRefreshFile</span><span class="hl-0">(</span><span class="hl-4">path</span><span class="hl-0">?: </span><span class="hl-4">string</span><span class="hl-0">) </span><span class="hl-6">// path 默认是当前Editor打开的文件</span>
1058
+ <pre><code class="language-ts"><span class="hl-7">daoPaas</span><span class="hl-1">.</span><span class="hl-6">forceRefreshFile</span><span class="hl-1">(</span><span class="hl-7">path</span><span class="hl-1">?: </span><span class="hl-7">string</span><span class="hl-1">) </span><span class="hl-3">// path 默认是当前Editor打开的文件</span>
1035
1059
  </code></pre>
1036
1060
  <ul>
1037
1061
  <li>新增触发聚焦答题区事件</li>
1038
1062
  </ul>
1039
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0">...</span><br/><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">AnswerAreaInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> console.log(payload.foucusId); </span><span class="hl-6">// 当焦点在答题区内foucusId为答题区id、不在则为空字符</span><br/><span class="hl-0"> break;</span><br/><span class="hl-0">}</span><br/><span class="hl-0">})</span>
1063
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1">...</span><br/><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">AnswerAreaInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> console.log(payload.foucusId); </span><span class="hl-3">// 当焦点在答题区内foucusId为答题区id、不在则为空字符</span><br/><span class="hl-1"> break;</span><br/><span class="hl-1">}</span><br/><span class="hl-1">})</span>
1040
1064
  </code></pre>
1041
1065
  <ul>
1042
1066
  <li>新增答题区新增<code>overrideItems</code>和<code>handleOverride</code>参数,光标选择区域包含答题区或在答题区内触发操作。如没有设置<code>overrideItems</code>右击菜单默认为items</li>
1043
1067
  </ul>
1044
- <pre><code class="language-ts"><span class="hl-11">contextMenu</span><span class="hl-0">:{</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-11">overrideItems</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;delete&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> </span><span class="hl-5">&#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-11">handleOverride</span><span class="hl-0">: (</span><span class="hl-4">params</span><span class="hl-0">: </span><span class="hl-15">IOverrideParams</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;params: &#39;</span><span class="hl-0">, </span><span class="hl-4">params</span><span class="hl-0">); </span><span class="hl-6">//执行对应删除操作</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">}</span>
1068
+ <pre><code class="language-ts"><span class="hl-0">contextMenu</span><span class="hl-1">:{</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-0">overrideItems</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;delete&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">text:</span><span class="hl-1"> </span><span class="hl-2">&#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-0">handleOverride</span><span class="hl-1">: (</span><span class="hl-7">params</span><span class="hl-1">: </span><span class="hl-15">IOverrideParams</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;params: &#39;</span><span class="hl-1">, </span><span class="hl-7">params</span><span class="hl-1">); </span><span class="hl-3">//执行对应删除操作</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">}</span>
1045
1069
  </code></pre>
1046
1070
 
1047
1071
  <a href="#修复-21" id="修复-21" style="color: inherit; text-decoration: none;">
@@ -1058,7 +1082,7 @@
1058
1082
  <h2>v0.9.126</h2>
1059
1083
  </a>
1060
1084
 
1061
- <a href="#新增-27" id="新增-27" style="color: inherit; text-decoration: none;">
1085
+ <a href="#新增-28" id="新增-28" style="color: inherit; text-decoration: none;">
1062
1086
  <h2>新增</h2>
1063
1087
  </a>
1064
1088
  <ul>
@@ -1066,7 +1090,7 @@
1066
1090
  <li>新增IDEServer 单元测试</li>
1067
1091
  </ul>
1068
1092
 
1069
- <a href="#优化-32" id="优化-32" style="color: inherit; text-decoration: none;">
1093
+ <a href="#优化-33" id="优化-33" style="color: inherit; text-decoration: none;">
1070
1094
  <h2>优化</h2>
1071
1095
  </a>
1072
1096
  <ul>
@@ -1093,14 +1117,14 @@
1093
1117
  <h2>v0.9.125</h2>
1094
1118
  </a>
1095
1119
 
1096
- <a href="#新增-28" id="新增-28" style="color: inherit; text-decoration: none;">
1120
+ <a href="#新增-29" id="新增-29" style="color: inherit; text-decoration: none;">
1097
1121
  <h3>新增</h3>
1098
1122
  </a>
1099
1123
  <ul>
1100
1124
  <li>新增答题区选中Tooltip操作按钮</li>
1101
1125
  </ul>
1102
1126
 
1103
- <a href="#优化-33" id="优化-33" style="color: inherit; text-decoration: none;">
1127
+ <a href="#优化-34" id="优化-34" style="color: inherit; text-decoration: none;">
1104
1128
  <h3>优化</h3>
1105
1129
  </a>
1106
1130
  <ul>
@@ -1120,32 +1144,32 @@
1120
1144
  <h2>v0.9.124</h2>
1121
1145
  </a>
1122
1146
 
1123
- <a href="#新增-29" id="新增-29" style="color: inherit; text-decoration: none;">
1147
+ <a href="#新增-30" id="新增-30" style="color: inherit; text-decoration: none;">
1124
1148
  <h3>新增</h3>
1125
1149
  </a>
1126
1150
  <ul>
1127
1151
  <li>新增<code>Markdown</code>文件支持插入项目内图片路径</li>
1128
1152
  <li>新增<code>Editor</code> 头部支持注入插件功能</li>
1129
1153
  </ul>
1130
- <pre><code class="language-ts"><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">fileHeader</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">className:</span><span class="hl-0"> </span><span class="hl-5">&#39;custom-className&#39;</span><span class="hl-0">, </span><span class="hl-6">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> { </span><span class="hl-6">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-4">className:</span><span class="hl-0"> </span><span class="hl-5">&#39;dao42__icon--warning-circle&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">tips:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-3">action</span><span class="hl-4">:</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-5">&#39; IconAction&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-6">// 业务方自定义的业务行为,可以调用SDK提供的API</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">labelAction:</span><span class="hl-0"> </span><span class="hl-1">null</span><span class="hl-0"> </span><span class="hl-16">as</span><span class="hl-0"> </span><span class="hl-15">any</span><span class="hl-0">, </span><span class="hl-6">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-4">label:</span><span class="hl-0"> {</span><span class="hl-6">// 非必需</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">ZH</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;LSP 连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[I18nLanguageType.</span><span class="hl-2">EN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#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>
1154
+ <pre><code class="language-ts"><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">fileHeader</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">className:</span><span class="hl-1"> </span><span class="hl-2">&#39;custom-className&#39;</span><span class="hl-1">, </span><span class="hl-3">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> { </span><span class="hl-3">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-7">className:</span><span class="hl-1"> </span><span class="hl-2">&#39;dao42__icon--warning-circle&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">tips:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;代码智能检测和补全(LSP):连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-6">action</span><span class="hl-7">:</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-2">&#39; IconAction&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">// 业务方自定义的业务行为,可以调用SDK提供的API</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">labelAction:</span><span class="hl-1"> </span><span class="hl-4">null</span><span class="hl-1"> </span><span class="hl-16">as</span><span class="hl-1"> </span><span class="hl-15">any</span><span class="hl-1">, </span><span class="hl-3">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-7">label:</span><span class="hl-1"> {</span><span class="hl-3">// 非必需</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">ZH</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;LSP 连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[I18nLanguageType.</span><span class="hl-5">EN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#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>
1131
1155
  </code></pre>
1132
1156
  <ul>
1133
1157
  <li>新增动态修改<code>Editor</code>头部插件接口</li>
1134
1158
  </ul>
1135
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">updateFileHeader</span><span class="hl-0">([...</span><span class="hl-4">fileHeader</span><span class="hl-0">]);</span>
1159
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">updateFileHeader</span><span class="hl-1">([...</span><span class="hl-7">fileHeader</span><span class="hl-1">]);</span>
1136
1160
  </code></pre>
1137
1161
  <ul>
1138
1162
  <li>新增答题区域业务方配置答题区Flag属性</li>
1139
1163
  </ul>
1140
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-3">callback</span><span class="hl-0">?.(</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">id</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">flag</span><span class="hl-0">, </span><span class="hl-6">// 业务方在返回ID的时候,同时返回flag 值</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-4">extralAction</span><span class="hl-0">,</span><br/><span class="hl-0">);</span>
1164
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-6">callback</span><span class="hl-1">?.(</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">id</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">flag</span><span class="hl-1">, </span><span class="hl-3">// 业务方在返回ID的时候,同时返回flag 值</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">extralAction</span><span class="hl-1">,</span><br/><span class="hl-1">);</span>
1141
1165
  </code></pre>
1142
1166
  <ul>
1143
1167
  <li>新增批量修改答题区Flag属性接口</li>
1144
1168
  </ul>
1145
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">updateAreaFlags</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">path:</span><span class="hl-0"> </span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-0">, </span><span class="hl-6">// 指定文件ID</span><br/><span class="hl-0"> </span><span class="hl-4">ids:</span><span class="hl-0"> [ </span><span class="hl-6">// 要修改的ID的集合</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">id:</span><span class="hl-0"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-6">// 答题区域的ID</span><br/><span class="hl-0"> </span><span class="hl-4">flag:</span><span class="hl-0"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-6">// 新的Flag值</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">id:</span><span class="hl-0"> </span><span class="hl-5">&#39;2&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">flag:</span><span class="hl-0"> </span><span class="hl-5">&#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>
1169
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">updateAreaFlags</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">path:</span><span class="hl-1"> </span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-1">, </span><span class="hl-3">// 指定文件ID</span><br/><span class="hl-1"> </span><span class="hl-7">ids:</span><span class="hl-1"> [ </span><span class="hl-3">// 要修改的ID的集合</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">id:</span><span class="hl-1"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-3">// 答题区域的ID</span><br/><span class="hl-1"> </span><span class="hl-7">flag:</span><span class="hl-1"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-3">// 新的Flag值</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">id:</span><span class="hl-1"> </span><span class="hl-2">&#39;2&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">flag:</span><span class="hl-1"> </span><span class="hl-2">&#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>
1146
1170
  </code></pre>
1147
1171
 
1148
- <a href="#优化-34" id="优化-34" style="color: inherit; text-decoration: none;">
1172
+ <a href="#优化-35" id="优化-35" style="color: inherit; text-decoration: none;">
1149
1173
  <h3>优化</h3>
1150
1174
  </a>
1151
1175
  <ul>
@@ -1173,7 +1197,7 @@
1173
1197
  <li>修复<code>tooltip</code>快速切换子<code>icon</code>元素迅速将鼠标移出元素<code>onMouseLeave</code>不触发问题</li>
1174
1198
  </ul>
1175
1199
 
1176
- <a href="#优化-35" id="优化-35" style="color: inherit; text-decoration: none;">
1200
+ <a href="#优化-36" id="优化-36" style="color: inherit; text-decoration: none;">
1177
1201
  <h3>优化</h3>
1178
1202
  </a>
1179
1203
  <ul>
@@ -1186,7 +1210,7 @@
1186
1210
  <h2>v0.9.122</h2>
1187
1211
  </a>
1188
1212
 
1189
- <a href="#新增-30" id="新增-30" style="color: inherit; text-decoration: none;">
1213
+ <a href="#新增-31" id="新增-31" style="color: inherit; text-decoration: none;">
1190
1214
  <h3>新增</h3>
1191
1215
  </a>
1192
1216
  <ul>
@@ -1195,7 +1219,7 @@
1195
1219
  <li>新增支持业务方配置多个打开默认文件名称</li>
1196
1220
  <li>新增自定义执行方法,由业务方携带的配置信息来启动运行</li>
1197
1221
  </ul>
1198
- <pre><code class="language-ts"><span class="hl-6">// 自定义执行,通过业务方携带的配置信息来启动运行</span><br/><span class="hl-6">// tips:而不是通过后端读取.1024配置文件信息</span><br/><span class="hl-0"> </span><span class="hl-3">customExecute</span><span class="hl-0">(</span><span class="hl-4">config</span><span class="hl-0">: </span><span class="hl-4">ICustomExcuteConfig</span><span class="hl-0">): </span><span class="hl-1">void</span><span class="hl-0">;</span>
1222
+ <pre><code class="language-ts"><span class="hl-3">// 自定义执行,通过业务方携带的配置信息来启动运行</span><br/><span class="hl-3">// tips:而不是通过后端读取.1024配置文件信息</span><br/><span class="hl-1"> </span><span class="hl-6">customExecute</span><span class="hl-1">(</span><span class="hl-7">config</span><span class="hl-1">: </span><span class="hl-7">ICustomExcuteConfig</span><span class="hl-1">): </span><span class="hl-4">void</span><span class="hl-1">;</span>
1199
1223
  </code></pre>
1200
1224
 
1201
1225
  <a href="#修复-26" id="修复-26" style="color: inherit; text-decoration: none;">
@@ -1209,14 +1233,14 @@
1209
1233
  <h2>v0.9.120</h2>
1210
1234
  </a>
1211
1235
 
1212
- <a href="#新增-31" id="新增-31" style="color: inherit; text-decoration: none;">
1236
+ <a href="#新增-32" id="新增-32" style="color: inherit; text-decoration: none;">
1213
1237
  <h3>新增</h3>
1214
1238
  </a>
1215
1239
  <ul>
1216
1240
  <li>新增支持下载单文件</li>
1217
1241
  <li><code>editorTabSize</code>属性新增一个值为<code>auto</code>,自动识别文件缩进并且应用于编辑器</li>
1218
1242
  </ul>
1219
- <pre><code class="language-ts"><span class="hl-4">GlobalConfig</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-11">editorTabSize</span><span class="hl-0">: </span><span class="hl-5">&#39;auto&#39;</span><span class="hl-0">|</span><span class="hl-4">number</span><span class="hl-0"> </span><span class="hl-6">// 新增auto,自动识别文件缩进</span><br/><span class="hl-0">}</span>
1243
+ <pre><code class="language-ts"><span class="hl-7">GlobalConfig</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-0">editorTabSize</span><span class="hl-1">: </span><span class="hl-2">&#39;auto&#39;</span><span class="hl-1">|</span><span class="hl-7">number</span><span class="hl-1"> </span><span class="hl-3">// 新增auto,自动识别文件缩进</span><br/><span class="hl-1">}</span>
1220
1244
  </code></pre>
1221
1245
  <ul>
1222
1246
  <li>新增限制打开<code>db,db3,sqlite</code>相关文件,并给予提示</li>
@@ -1230,7 +1254,7 @@
1230
1254
  <li>修复添加CDN资源后, Editor内容不刷新显示CDN资源内容</li>
1231
1255
  </ul>
1232
1256
 
1233
- <a href="#优化-36" id="优化-36" style="color: inherit; text-decoration: none;">
1257
+ <a href="#优化-37" id="优化-37" style="color: inherit; text-decoration: none;">
1234
1258
  <h3>优化</h3>
1235
1259
  </a>
1236
1260
  <ul>
@@ -1241,7 +1265,7 @@
1241
1265
  <h2>v0.9.119</h2>
1242
1266
  </a>
1243
1267
 
1244
- <a href="#优化-37" id="优化-37" style="color: inherit; text-decoration: none;">
1268
+ <a href="#优化-38" id="优化-38" style="color: inherit; text-decoration: none;">
1245
1269
  <h3>优化</h3>
1246
1270
  </a>
1247
1271
  <ul>
@@ -1264,16 +1288,16 @@
1264
1288
  <h2>v0.9.117</h2>
1265
1289
  </a>
1266
1290
 
1267
- <a href="#新增-32" id="新增-32" style="color: inherit; text-decoration: none;">
1291
+ <a href="#新增-33" id="新增-33" style="color: inherit; text-decoration: none;">
1268
1292
  <h3>新增</h3>
1269
1293
  </a>
1270
1294
  <ul>
1271
1295
  <li>新增特定语言特定模版文件进行语法高亮,SDK内置了如下部分文件,同步支持业务方配置指定文件名称进行对应语言高亮</li>
1272
1296
  </ul>
1273
- <pre><code class="language-ts"><span class="hl-6">// SDK 默认已经支持的内置文件配置</span><br/><span class="hl-0"> </span><span class="hl-4">ConfigExtension</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">Gemfile</span><span class="hl-0"> = </span><span class="hl-5">&#39;ruby&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">Rakefile</span><span class="hl-0"> = </span><span class="hl-5">&#39;ruby&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">artisan</span><span class="hl-0"> = </span><span class="hl-5">&#39;php&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;Gemfile.lock&#39;</span><span class="hl-0"> = </span><span class="hl-5">&#39;ruby&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;.npmrc&#39;</span><span class="hl-0"> = </span><span class="hl-5">&#39;javascript&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;.eslintrc&#39;</span><span class="hl-0"> = </span><span class="hl-5">&#39;javascript&#39;</span><span class="hl-0">,</span><br/><span class="hl-0">}</span><br/><span class="hl-6">// 业务方可以配置对应文件名称进行指定语法高亮</span><br/><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0">...</span><br/><span class="hl-4">specialFileHighlight</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">fileName:</span><span class="hl-0"> </span><span class="hl-5">&#39;Gemfile&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageType:</span><span class="hl-0"> </span><span class="hl-5">&#39;ruby&#39;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">] </span><span class="hl-6">// 指定文件名称,使用特定的语法高亮</span><br/><span class="hl-0">})</span>
1297
+ <pre><code class="language-ts"><span class="hl-3">// SDK 默认已经支持的内置文件配置</span><br/><span class="hl-1"> </span><span class="hl-7">ConfigExtension</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">Gemfile</span><span class="hl-1"> = </span><span class="hl-2">&#39;ruby&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">Rakefile</span><span class="hl-1"> = </span><span class="hl-2">&#39;ruby&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">artisan</span><span class="hl-1"> = </span><span class="hl-2">&#39;php&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;Gemfile.lock&#39;</span><span class="hl-1"> = </span><span class="hl-2">&#39;ruby&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;.npmrc&#39;</span><span class="hl-1"> = </span><span class="hl-2">&#39;javascript&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;.eslintrc&#39;</span><span class="hl-1"> = </span><span class="hl-2">&#39;javascript&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}</span><br/><span class="hl-3">// 业务方可以配置对应文件名称进行指定语法高亮</span><br/><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1">...</span><br/><span class="hl-7">specialFileHighlight</span><span class="hl-1">:[</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">fileName:</span><span class="hl-1"> </span><span class="hl-2">&#39;Gemfile&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageType:</span><span class="hl-1"> </span><span class="hl-2">&#39;ruby&#39;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">] </span><span class="hl-3">// 指定文件名称,使用特定的语法高亮</span><br/><span class="hl-1">})</span>
1274
1298
  </code></pre>
1275
1299
 
1276
- <a href="#优化-38" id="优化-38" style="color: inherit; text-decoration: none;">
1300
+ <a href="#优化-39" id="优化-39" style="color: inherit; text-decoration: none;">
1277
1301
  <h3>优化</h3>
1278
1302
  </a>
1279
1303
  <ul>
@@ -1293,7 +1317,7 @@
1293
1317
  <h2>v0.9.116</h2>
1294
1318
  </a>
1295
1319
 
1296
- <a href="#新增-33" id="新增-33" style="color: inherit; text-decoration: none;">
1320
+ <a href="#新增-34" id="新增-34" style="color: inherit; text-decoration: none;">
1297
1321
  <h3>新增</h3>
1298
1322
  </a>
1299
1323
  <ul>
@@ -1311,7 +1335,7 @@
1311
1335
  <li>修复答题区域的右侧边界样式问题</li>
1312
1336
  </ul>
1313
1337
 
1314
- <a href="#优化-39" id="优化-39" style="color: inherit; text-decoration: none;">
1338
+ <a href="#优化-40" id="优化-40" style="color: inherit; text-decoration: none;">
1315
1339
  <h3>优化</h3>
1316
1340
  </a>
1317
1341
  <ul>
@@ -1324,7 +1348,7 @@
1324
1348
  <h2>v0.9.115</h2>
1325
1349
  </a>
1326
1350
 
1327
- <a href="#优化-40" id="优化-40" style="color: inherit; text-decoration: none;">
1351
+ <a href="#优化-41" id="优化-41" style="color: inherit; text-decoration: none;">
1328
1352
  <h3>优化</h3>
1329
1353
  </a>
1330
1354
  <ul>
@@ -1349,13 +1373,13 @@
1349
1373
  <h2>v0.9.114</h2>
1350
1374
  </a>
1351
1375
 
1352
- <a href="#新增-34" id="新增-34" style="color: inherit; text-decoration: none;">
1376
+ <a href="#新增-35" id="新增-35" style="color: inherit; text-decoration: none;">
1353
1377
  <h3>新增</h3>
1354
1378
  </a>
1355
1379
  <ul>
1356
1380
  <li>新增回放过程中打开其他问题,派发暂停事件给业务方</li>
1357
1381
  </ul>
1358
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">PausePlayback</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-5">&#39;PausePlayback&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ...</span>
1382
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">PausePlayback</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-2">&#39;PausePlayback&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> ...</span>
1359
1383
  </code></pre>
1360
1384
 
1361
1385
  <a href="#修复-32" id="修复-32" style="color: inherit; text-decoration: none;">
@@ -1369,7 +1393,7 @@
1369
1393
  <h2>v0.9.113</h2>
1370
1394
  </a>
1371
1395
 
1372
- <a href="#新增-35" id="新增-35" style="color: inherit; text-decoration: none;">
1396
+ <a href="#新增-36" id="新增-36" style="color: inherit; text-decoration: none;">
1373
1397
  <h3>新增</h3>
1374
1398
  </a>
1375
1399
  <ul>
@@ -1388,14 +1412,14 @@
1388
1412
  <h2>v0.9.111</h2>
1389
1413
  </a>
1390
1414
 
1391
- <a href="#新增-36" id="新增-36" style="color: inherit; text-decoration: none;">
1415
+ <a href="#新增-37" id="新增-37" style="color: inherit; text-decoration: none;">
1392
1416
  <h3>新增</h3>
1393
1417
  </a>
1394
1418
  <ul>
1395
1419
  <li>关闭实时刷新功能</li>
1396
1420
  <li>新增是否开启LSP诊断接口</li>
1397
1421
  </ul>
1398
- <pre><code class="language-ts"><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">openLspDiagnostic</span><span class="hl-0">: </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// 默认是true,</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0">});</span><br/><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">switchLspDiagnostic</span><span class="hl-0">(</span><span class="hl-1">true</span><span class="hl-0">/</span><span class="hl-1">false</span><span class="hl-0">);</span>
1422
+ <pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">openLspDiagnostic</span><span class="hl-1">: </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// 默认是true,</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1">});</span><br/><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">switchLspDiagnostic</span><span class="hl-1">(</span><span class="hl-4">true</span><span class="hl-1">/</span><span class="hl-4">false</span><span class="hl-1">);</span>
1399
1423
  </code></pre>
1400
1424
 
1401
1425
  <a href="#修复-34" id="修复-34" style="color: inherit; text-decoration: none;">
@@ -1413,7 +1437,7 @@
1413
1437
  <h2>v0.9.110</h2>
1414
1438
  </a>
1415
1439
 
1416
- <a href="#新增-37" id="新增-37" style="color: inherit; text-decoration: none;">
1440
+ <a href="#新增-38" id="新增-38" style="color: inherit; text-decoration: none;">
1417
1441
  <h3>新增</h3>
1418
1442
  </a>
1419
1443
  <ul>
@@ -1421,7 +1445,7 @@
1421
1445
  <li>新增关闭实时预览Web项目开关</li>
1422
1446
  <li>新增监听Docker资源使用情况(5S 更新一次资源使用情况)</li>
1423
1447
  </ul>
1424
- <pre><code class="language-ts"><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">ResourceMonitoring</span><span class="hl-0">: {</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">cpuPercent:</span><span class="hl-0"> </span><span class="hl-17">0.33</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">memoryCurrent:</span><span class="hl-17">144</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">memoryMax:</span><span class="hl-17">1024</span><span class="hl-0">,</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span>
1448
+ <pre><code class="language-ts"><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">ResourceMonitoring</span><span class="hl-1">: {</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">cpuPercent:</span><span class="hl-1"> </span><span class="hl-17">0.33</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">memoryCurrent:</span><span class="hl-17">144</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">memoryMax:</span><span class="hl-17">1024</span><span class="hl-1">,</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span>
1425
1449
  </code></pre>
1426
1450
 
1427
1451
  <a href="#v09106" id="v09106" style="color: inherit; text-decoration: none;">
@@ -1439,7 +1463,7 @@
1439
1463
  <li>修复回放模式,Shell 会出现重复内容</li>
1440
1464
  </ul>
1441
1465
 
1442
- <a href="#优化-41" id="优化-41" style="color: inherit; text-decoration: none;">
1466
+ <a href="#优化-42" id="优化-42" style="color: inherit; text-decoration: none;">
1443
1467
  <h2>优化</h2>
1444
1468
  </a>
1445
1469
  <ul>
@@ -1454,7 +1478,7 @@
1454
1478
  <h2>v0.9.102</h2>
1455
1479
  </a>
1456
1480
 
1457
- <a href="#新增-38" id="新增-38" style="color: inherit; text-decoration: none;">
1481
+ <a href="#新增-39" id="新增-39" style="color: inherit; text-decoration: none;">
1458
1482
  <h3>新增</h3>
1459
1483
  </a>
1460
1484
  <ul>
@@ -1469,7 +1493,7 @@
1469
1493
  <li>修复删除文件,Editor会自动关闭有相同前缀开头的文件</li>
1470
1494
  </ul>
1471
1495
 
1472
- <a href="#优化-42" id="优化-42" style="color: inherit; text-decoration: none;">
1496
+ <a href="#优化-43" id="优化-43" style="color: inherit; text-decoration: none;">
1473
1497
  <h3>优化</h3>
1474
1498
  </a>
1475
1499
  <ul>
@@ -1501,7 +1525,7 @@
1501
1525
  <li>修复回放功能JS报错</li>
1502
1526
  </ul>
1503
1527
 
1504
- <a href="#优化-43" id="优化-43" style="color: inherit; text-decoration: none;">
1528
+ <a href="#优化-44" id="优化-44" style="color: inherit; text-decoration: none;">
1505
1529
  <h3>优化</h3>
1506
1530
  </a>
1507
1531
  <ul>
@@ -1522,7 +1546,7 @@
1522
1546
  <li>修复回放功能<code>shell</code>内容重复显示问题</li>
1523
1547
  </ul>
1524
1548
 
1525
- <a href="#优化-44" id="优化-44" style="color: inherit; text-decoration: none;">
1549
+ <a href="#优化-45" id="优化-45" style="color: inherit; text-decoration: none;">
1526
1550
  <h3>优化</h3>
1527
1551
  </a>
1528
1552
  <ul>
@@ -1534,14 +1558,14 @@
1534
1558
  <h2>v0.9.95</h2>
1535
1559
  </a>
1536
1560
 
1537
- <a href="#新增-39" id="新增-39" style="color: inherit; text-decoration: none;">
1561
+ <a href="#新增-40" id="新增-40" style="color: inherit; text-decoration: none;">
1538
1562
  <h3>新增</h3>
1539
1563
  </a>
1540
1564
  <ul>
1541
1565
  <li>新增Debug支持变量Hover 显示变量值功能</li>
1542
1566
  <li>新增SDK配置支持打开默认文件功能</li>
1543
1567
  </ul>
1544
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-4">defaultOpenFiles</span><span class="hl-0">: [</span><span class="hl-5">&#39;README.md&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;CHANGELOG.md&#39;</span><span class="hl-0">], </span><span class="hl-6">// 默认打开文件列表(PaaS 默认只有README.md),优先级&#39;README.md&#39; &gt; &#39;CHANGELOG.md&#39;</span><br/><span class="hl-0"> </span><span class="hl-4">specialOpenFile:</span><span class="hl-0"> </span><span class="hl-4">openpath</span><span class="hl-0">, </span><span class="hl-6">// specialOpenFiles 优先级 高于defaultOpenFiles</span><br/><span class="hl-0"> });</span>
1568
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-7">defaultOpenFiles</span><span class="hl-1">: [</span><span class="hl-2">&#39;README.md&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;CHANGELOG.md&#39;</span><span class="hl-1">], </span><span class="hl-3">// 默认打开文件列表(PaaS 默认只有README.md),优先级&#39;README.md&#39; &gt; &#39;CHANGELOG.md&#39;</span><br/><span class="hl-1"> </span><span class="hl-7">specialOpenFile:</span><span class="hl-1"> </span><span class="hl-7">openpath</span><span class="hl-1">, </span><span class="hl-3">// specialOpenFiles 优先级 高于defaultOpenFiles</span><br/><span class="hl-1"> });</span>
1545
1569
  </code></pre>
1546
1570
 
1547
1571
  <a href="#修复-40" id="修复-40" style="color: inherit; text-decoration: none;">
@@ -1554,7 +1578,7 @@
1554
1578
  <li>修复React JSX语法设置答题区域,显示对应标识内容问题</li>
1555
1579
  </ul>
1556
1580
 
1557
- <a href="#优化-45" id="优化-45" style="color: inherit; text-decoration: none;">
1581
+ <a href="#优化-46" id="优化-46" style="color: inherit; text-decoration: none;">
1558
1582
  <h3>优化</h3>
1559
1583
  </a>
1560
1584
  <ul>
@@ -1569,7 +1593,7 @@
1569
1593
  <h2>v0.9.94</h2>
1570
1594
  </a>
1571
1595
 
1572
- <a href="#新增-40" id="新增-40" style="color: inherit; text-decoration: none;">
1596
+ <a href="#新增-41" id="新增-41" style="color: inherit; text-decoration: none;">
1573
1597
  <h3>新增</h3>
1574
1598
  </a>
1575
1599
  <ul>
@@ -1584,7 +1608,7 @@
1584
1608
  <li>修复文件树收起,展开头像消失问题</li>
1585
1609
  </ul>
1586
1610
 
1587
- <a href="#优化-46" id="优化-46" style="color: inherit; text-decoration: none;">
1611
+ <a href="#优化-47" id="优化-47" style="color: inherit; text-decoration: none;">
1588
1612
  <h3>优化</h3>
1589
1613
  </a>
1590
1614
  <ul>
@@ -1595,7 +1619,7 @@
1595
1619
  <h2>v0.9.93</h2>
1596
1620
  </a>
1597
1621
 
1598
- <a href="#优化-47" id="优化-47" style="color: inherit; text-decoration: none;">
1622
+ <a href="#优化-48" id="优化-48" style="color: inherit; text-decoration: none;">
1599
1623
  <h2>优化</h2>
1600
1624
  </a>
1601
1625
  <ul>
@@ -1606,20 +1630,20 @@
1606
1630
  <h2>v0.9.92</h2>
1607
1631
  </a>
1608
1632
 
1609
- <a href="#新增-41" id="新增-41" style="color: inherit; text-decoration: none;">
1633
+ <a href="#新增-42" id="新增-42" style="color: inherit; text-decoration: none;">
1610
1634
  <h2>新增</h2>
1611
1635
  </a>
1612
1636
  <ul>
1613
1637
  <li>新增paas平台接入sentry监控 (需要接入方再打包自己项目时,自定义命名打包后的@dao42/d42paas-front文件,名称需要包含daopaas字符)</li>
1614
1638
  </ul>
1615
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">enableSentry</span><span class="hl-0"> </span><span class="hl-6">// 是否开启sentry监控</span><br/><span class="hl-0">})</span>
1639
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">enableSentry</span><span class="hl-1"> </span><span class="hl-3">// 是否开启sentry监控</span><br/><span class="hl-1">})</span>
1616
1640
  </code></pre>
1617
1641
  <ul>
1618
1642
  <li>新增测试用例展示demo</li>
1619
1643
  <li>新增支持Debug功能回放</li>
1620
1644
  <li>新增支持新题型多文件</li>
1621
1645
  </ul>
1622
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">switchLanguage</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">languageType</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageValue</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageFileName</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">createNewFile</span><span class="hl-0"> === </span><span class="hl-5">&#39;1&#39;</span><span class="hl-0">, </span><span class="hl-6">// 添加第四个参数,默认为false, 如果传递为true,则会创建新的文件</span><br/><span class="hl-0"> );</span>
1646
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">switchLanguage</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">languageType</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageValue</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageFileName</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">createNewFile</span><span class="hl-1"> === </span><span class="hl-2">&#39;1&#39;</span><span class="hl-1">, </span><span class="hl-3">// 添加第四个参数,默认为false, 如果传递为true,则会创建新的文件</span><br/><span class="hl-1"> );</span>
1623
1647
  </code></pre>
1624
1648
 
1625
1649
  <a href="#修复-42" id="修复-42" style="color: inherit; text-decoration: none;">
@@ -1629,7 +1653,7 @@
1629
1653
  <li>修复浏览器输入框无效</li>
1630
1654
  </ul>
1631
1655
 
1632
- <a href="#优化-48" id="优化-48" style="color: inherit; text-decoration: none;">
1656
+ <a href="#优化-49" id="优化-49" style="color: inherit; text-decoration: none;">
1633
1657
  <h2>优化</h2>
1634
1658
  </a>
1635
1659
  <ul>
@@ -1690,7 +1714,7 @@
1690
1714
  <h2>v0.9.85</h2>
1691
1715
  </a>
1692
1716
 
1693
- <a href="#新增-42" id="新增-42" style="color: inherit; text-decoration: none;">
1717
+ <a href="#新增-43" id="新增-43" style="color: inherit; text-decoration: none;">
1694
1718
  <h2>新增</h2>
1695
1719
  </a>
1696
1720
  <ul>
@@ -1698,19 +1722,19 @@
1698
1722
  <li>新增<code>Shift+Mod+z``redo</code>快捷键</li>
1699
1723
  </ul>
1700
1724
 
1701
- <a href="#优化-49" id="优化-49" style="color: inherit; text-decoration: none;">
1725
+ <a href="#优化-50" id="优化-50" style="color: inherit; text-decoration: none;">
1702
1726
  <h2>优化</h2>
1703
1727
  </a>
1704
1728
  <ul>
1705
1729
  <li>控制答题区域范围内不能新增新的答题区</li>
1706
1730
  <li>优化在未打开指定文件的情况下,可以直接删除答题区域,并且同步打开文件(新增<code>filePath</code>参数)</li>
1707
1731
  </ul>
1708
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">removeAreaTextById</span><span class="hl-0">(</span><span class="hl-4">id</span><span class="hl-0">, </span><span class="hl-4">text</span><span class="hl-0">, </span><span class="hl-4">filePath</span><span class="hl-0">);</span>
1732
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">removeAreaTextById</span><span class="hl-1">(</span><span class="hl-7">id</span><span class="hl-1">, </span><span class="hl-7">text</span><span class="hl-1">, </span><span class="hl-7">filePath</span><span class="hl-1">);</span>
1709
1733
  </code></pre>
1710
1734
  <ul>
1711
1735
  <li>优化在未打开指定文件的情况下,可以直接跳转到指定答题区域,并且同步打开文件(新增<code>filePath</code>参数)</li>
1712
1736
  </ul>
1713
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">jumpToAreaById</span><span class="hl-0">(</span><span class="hl-4">id</span><span class="hl-0">, </span><span class="hl-4">path</span><span class="hl-0">);</span>
1737
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">jumpToAreaById</span><span class="hl-1">(</span><span class="hl-7">id</span><span class="hl-1">, </span><span class="hl-7">path</span><span class="hl-1">);</span>
1714
1738
  </code></pre>
1715
1739
 
1716
1740
  <a href="#修复-47" id="修复-47" style="color: inherit; text-decoration: none;">
@@ -1725,36 +1749,36 @@
1725
1749
  <h2>v0.9.84</h2>
1726
1750
  </a>
1727
1751
 
1728
- <a href="#新增-43" id="新增-43" style="color: inherit; text-decoration: none;">
1752
+ <a href="#新增-44" id="新增-44" style="color: inherit; text-decoration: none;">
1729
1753
  <h3>新增</h3>
1730
1754
  </a>
1731
1755
  <ul>
1732
1756
  <li>新增支持答题区域根据指定ID跳转到指定的答题区域接口</li>
1733
1757
  </ul>
1734
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">jumpToAreaById</span><span class="hl-0">(</span><span class="hl-4">id</span><span class="hl-0">);</span>
1758
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">jumpToAreaById</span><span class="hl-1">(</span><span class="hl-7">id</span><span class="hl-1">);</span>
1735
1759
  </code></pre>
1736
1760
  <ul>
1737
1761
  <li>新增支持Editor进行<code>redo</code> ,<code>undo</code> 如有答题区域信息变更,通知业务方接口</li>
1738
1762
  </ul>
1739
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Events</span><span class="hl-0">.</span><span class="hl-4">UpdateArea</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">info</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">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>
1763
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Events</span><span class="hl-1">.</span><span class="hl-7">UpdateArea</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">info</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">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>
1740
1764
  </code></pre>
1741
1765
  <ul>
1742
1766
  <li>新增回放模式,派发 Editor 人为滚动事件</li>
1743
1767
  </ul>
1744
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">EditorScroll</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">playing</span><span class="hl-0"> === </span><span class="hl-2">PLAY_STATUS</span><span class="hl-0">.</span><span class="hl-2">INITIAL</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">pausePlayback</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-3">setPlaying</span><span class="hl-0">(</span><span class="hl-2">PLAY_STATUS</span><span class="hl-0">.</span><span class="hl-2">PAUSE</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">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>
1768
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">EditorScroll</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">playing</span><span class="hl-1"> === </span><span class="hl-5">PLAY_STATUS</span><span class="hl-1">.</span><span class="hl-5">INITIAL</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">pausePlayback</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-6">setPlaying</span><span class="hl-1">(</span><span class="hl-5">PLAY_STATUS</span><span class="hl-1">.</span><span class="hl-5">PAUSE</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">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>
1745
1769
  </code></pre>
1746
1770
  <ul>
1747
1771
  <li>新增提供禁止编辑<code>fileTree</code> 和 <code>editor</code> 配置属性</li>
1748
1772
  </ul>
1749
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">updateConfig</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">disableEditable:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">disableFileTreeAction:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">,</span><br/><span class="hl-0"> });</span>
1773
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">updateConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">disableEditable:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">disableFileTreeAction:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span>
1750
1774
  </code></pre>
1751
1775
  <ul>
1752
1776
  <li>新增<code>console</code> 数据清除同步,并提供在跟随模式下 <code>console</code>, <code>shell</code> 切换事件派发进行跟随同步</li>
1753
1777
  </ul>
1754
- <pre><code class="language-ts"><span class="hl-6">// 上报当前terminal聚焦点,console | shell.(跟随模式)</span><br/><span class="hl-3">syncXtermKey</span><span class="hl-0">(</span><span class="hl-4">xtermKey</span><span class="hl-0">: </span><span class="hl-4">IXtermKey</span><span class="hl-0">)</span><br/><span class="hl-6">// 接受其他人切换控制台tab栏(跟随模式)</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">UsersUpdated</span><span class="hl-0">:</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">xtermKey</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-3">setActiveKey</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">xtermKey</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0">}</span>
1778
+ <pre><code class="language-ts"><span class="hl-3">// 上报当前terminal聚焦点,console | shell.(跟随模式)</span><br/><span class="hl-6">syncXtermKey</span><span class="hl-1">(</span><span class="hl-7">xtermKey</span><span class="hl-1">: </span><span class="hl-7">IXtermKey</span><span class="hl-1">)</span><br/><span class="hl-3">// 接受其他人切换控制台tab栏(跟随模式)</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">UsersUpdated</span><span class="hl-1">:</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">xtermKey</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-6">setActiveKey</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">xtermKey</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
1755
1779
  </code></pre>
1756
1780
 
1757
- <a href="#优化-50" id="优化-50" style="color: inherit; text-decoration: none;">
1781
+ <a href="#优化-51" id="优化-51" style="color: inherit; text-decoration: none;">
1758
1782
  <h3>优化</h3>
1759
1783
  </a>
1760
1784
  <ul>
@@ -1780,7 +1804,7 @@
1780
1804
  <h2>v0.9.83</h2>
1781
1805
  </a>
1782
1806
 
1783
- <a href="#新增-44" id="新增-44" style="color: inherit; text-decoration: none;">
1807
+ <a href="#新增-45" id="新增-45" style="color: inherit; text-decoration: none;">
1784
1808
  <h3>新增</h3>
1785
1809
  </a>
1786
1810
  <ul>
@@ -1800,13 +1824,13 @@
1800
1824
  <h2>v0.9.82</h2>
1801
1825
  </a>
1802
1826
 
1803
- <a href="#新增-45" id="新增-45" style="color: inherit; text-decoration: none;">
1827
+ <a href="#新增-46" id="新增-46" style="color: inherit; text-decoration: none;">
1804
1828
  <h3>新增</h3>
1805
1829
  </a>
1806
1830
  <ul>
1807
1831
  <li>新增删除指定答题区域接口</li>
1808
1832
  </ul>
1809
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">removeAreaTextById</span><span class="hl-0">(</span><span class="hl-4">areaId</span><span class="hl-0">, </span><span class="hl-4">areaText</span><span class="hl-0">);</span>
1833
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">removeAreaTextById</span><span class="hl-1">(</span><span class="hl-7">areaId</span><span class="hl-1">, </span><span class="hl-7">areaText</span><span class="hl-1">);</span>
1810
1834
  </code></pre>
1811
1835
  <ul>
1812
1836
  <li>新增只读、隐藏文件不能设置答题区限制</li>
@@ -1827,7 +1851,7 @@
1827
1851
  <h2>v0.9.81</h2>
1828
1852
  </a>
1829
1853
 
1830
- <a href="#新增-46" id="新增-46" style="color: inherit; text-decoration: none;">
1854
+ <a href="#新增-47" id="新增-47" style="color: inherit; text-decoration: none;">
1831
1855
  <h3>新增</h3>
1832
1856
  </a>
1833
1857
  <ul>
@@ -1843,7 +1867,7 @@
1843
1867
  <li>修复答题区域样式和LSP样式冲突问题</li>
1844
1868
  </ul>
1845
1869
 
1846
- <a href="#优化-51" id="优化-51" style="color: inherit; text-decoration: none;">
1870
+ <a href="#优化-52" id="优化-52" style="color: inherit; text-decoration: none;">
1847
1871
  <h3>优化</h3>
1848
1872
  </a>
1849
1873
  <ul>
@@ -1855,20 +1879,20 @@
1855
1879
  <h2>v0.9.80</h2>
1856
1880
  </a>
1857
1881
 
1858
- <a href="#新增-47" id="新增-47" style="color: inherit; text-decoration: none;">
1882
+ <a href="#新增-48" id="新增-48" style="color: inherit; text-decoration: none;">
1859
1883
  <h3>新增</h3>
1860
1884
  </a>
1861
1885
  <ul>
1862
1886
  <li>支持less、scss、sass 语法高亮</li>
1863
1887
  <li>新增重启LSP服务接口</li>
1864
1888
  </ul>
1865
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">restartLSPServer</span><span class="hl-0">();</span>
1889
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">restartLSPServer</span><span class="hl-1">();</span>
1866
1890
  </code></pre>
1867
1891
  <ul>
1868
1892
  <li>新增1024code官网底部添加<code>copyright</code>信息</li>
1869
1893
  <li>新增Editor 内置文案多语言配置</li>
1870
1894
  </ul>
1871
- <pre><code class="language-ts"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">translate</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">next</span><span class="hl-0">: { </span><span class="hl-6">// next 为Editor显示的文案, 如果没有配置对应的语言, 就用对应的Key作为文案</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0">]: </span><span class="hl-5">&#39;下一个&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">EN</span><span class="hl-0">]: </span><span class="hl-5">&#39;next&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-11">previous</span><span class="hl-0">: {</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0">]: </span><span class="hl-5">&#39;上一个&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">EN</span><span class="hl-0">]: </span><span class="hl-5">&#39;previous&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-11">all</span><span class="hl-0">: {</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0">]: </span><span class="hl-5">&#39;全部&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> [</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">EN</span><span class="hl-0">]: </span><span class="hl-5">&#39;all&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span>
1895
+ <pre><code class="language-ts"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">translate</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">next</span><span class="hl-1">: { </span><span class="hl-3">// next 为Editor显示的文案, 如果没有配置对应的语言, 就用对应的Key作为文案</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1">]: </span><span class="hl-2">&#39;下一个&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">EN</span><span class="hl-1">]: </span><span class="hl-2">&#39;next&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">previous</span><span class="hl-1">: {</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1">]: </span><span class="hl-2">&#39;上一个&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">EN</span><span class="hl-1">]: </span><span class="hl-2">&#39;previous&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">all</span><span class="hl-1">: {</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1">]: </span><span class="hl-2">&#39;全部&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> [</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">EN</span><span class="hl-1">]: </span><span class="hl-2">&#39;all&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span>
1872
1896
  </code></pre>
1873
1897
  <ul>
1874
1898
  <li>新增Focus文件树,回车键触发重命名功能</li>
@@ -1884,7 +1908,7 @@
1884
1908
  <li>修复<code>replaceAll</code>语法兼容问题</li>
1885
1909
  </ul>
1886
1910
 
1887
- <a href="#优化-52" id="优化-52" style="color: inherit; text-decoration: none;">
1911
+ <a href="#优化-53" id="优化-53" style="color: inherit; text-decoration: none;">
1888
1912
  <h3>优化</h3>
1889
1913
  </a>
1890
1914
  <ul>
@@ -1916,28 +1940,28 @@
1916
1940
  <h2>v0.9.78</h2>
1917
1941
  </a>
1918
1942
 
1919
- <a href="#新增-48" id="新增-48" style="color: inherit; text-decoration: none;">
1943
+ <a href="#新增-49" id="新增-49" style="color: inherit; text-decoration: none;">
1920
1944
  <h3>新增</h3>
1921
1945
  </a>
1922
1946
  <ul>
1923
1947
  <li>新增Debug组件</li>
1924
1948
  </ul>
1925
- <pre><code class="language-ts"><span class="hl-4">components</span><span class="hl-0">.</span><span class="hl-3">push</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Debug&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">props:</span><span class="hl-0"> {},</span><br/><span class="hl-0">});</span>
1949
+ <pre><code class="language-ts"><span class="hl-7">components</span><span class="hl-1">.</span><span class="hl-6">push</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Debug&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">props:</span><span class="hl-1"> {},</span><br/><span class="hl-1">});</span>
1926
1950
  </code></pre>
1927
1951
  <ul>
1928
1952
  <li>新增初始化参数,是否开启debug模式isOpenDebugMode</li>
1929
1953
  </ul>
1930
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({ </span><span class="hl-4">isOpenDebugMode:</span><span class="hl-1">true</span><span class="hl-0"> })</span>
1954
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({ </span><span class="hl-7">isOpenDebugMode:</span><span class="hl-4">true</span><span class="hl-1"> })</span>
1931
1955
  </code></pre>
1932
1956
  <ul>
1933
1957
  <li>新增debug启动事件</li>
1934
1958
  </ul>
1935
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">debugRun</span><span class="hl-0">() </span><span class="hl-6">// 启动事件</span><br/><span class="hl-6">// debug结束事件与之前的结束事件相同</span><br/><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">stopPlayground</span><span class="hl-0">()</span>
1959
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">debugRun</span><span class="hl-1">() </span><span class="hl-3">// 启动事件</span><br/><span class="hl-3">// debug结束事件与之前的结束事件相同</span><br/><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">stopPlayground</span><span class="hl-1">()</span>
1936
1960
  </code></pre>
1937
1961
  <ul>
1938
1962
  <li>暴露<code>Debug</code>信息(目前只支持是否支持debug模式)</li>
1939
1963
  </ul>
1940
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Debug</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">debugSupport</span><span class="hl-0"> </span><span class="hl-6">// 是否支持debug模式</span><br/><span class="hl-0">})</span>
1964
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Debug</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">debugSupport</span><span class="hl-1"> </span><span class="hl-3">// 是否支持debug模式</span><br/><span class="hl-1">})</span>
1941
1965
  </code></pre>
1942
1966
 
1943
1967
  <a href="#修复-54" id="修复-54" style="color: inherit; text-decoration: none;">
@@ -1997,7 +2021,7 @@
1997
2021
  <h2>v0.9.73</h2>
1998
2022
  </a>
1999
2023
 
2000
- <a href="#优化-53" id="优化-53" style="color: inherit; text-decoration: none;">
2024
+ <a href="#优化-54" id="优化-54" style="color: inherit; text-decoration: none;">
2001
2025
  <h3>优化</h3>
2002
2026
  </a>
2003
2027
  <ul>
@@ -2018,13 +2042,13 @@
2018
2042
  <h2>v0.9.72</h2>
2019
2043
  </a>
2020
2044
 
2021
- <a href="#新增-49" id="新增-49" style="color: inherit; text-decoration: none;">
2045
+ <a href="#新增-50" id="新增-50" style="color: inherit; text-decoration: none;">
2022
2046
  <h3>新增</h3>
2023
2047
  </a>
2024
2048
  <ul>
2025
2049
  <li>新增插入指定代码块到指定区域功能</li>
2026
2050
  </ul>
2027
- <pre><code class="language-ts"><span class="hl-6">// 如果给指定问题区域插入代码:id则是指定问题ID,如果给指定区域插入代码, 则ID传入‘’空字符串, lineNum 支持:TOP,BOTTOM,和数字(数字为指定的行号)</span><br/><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">insertTextById</span><span class="hl-0">(</span><span class="hl-4">id</span><span class="hl-0">, </span><span class="hl-4">lineText</span><span class="hl-0">, </span><span class="hl-4">lineNum</span><span class="hl-0">);</span>
2051
+ <pre><code class="language-ts"><span class="hl-3">// 如果给指定问题区域插入代码:id则是指定问题ID,如果给指定区域插入代码, 则ID传入‘’空字符串, lineNum 支持:TOP,BOTTOM,和数字(数字为指定的行号)</span><br/><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">insertTextById</span><span class="hl-1">(</span><span class="hl-7">id</span><span class="hl-1">, </span><span class="hl-7">lineText</span><span class="hl-1">, </span><span class="hl-7">lineNum</span><span class="hl-1">);</span>
2028
2052
  </code></pre>
2029
2053
  <ul>
2030
2054
  <li>新增针对跟随模式对文件夹展开和关闭功能</li>
@@ -2042,13 +2066,13 @@
2042
2066
  <h2>v0.9.71</h2>
2043
2067
  </a>
2044
2068
 
2045
- <a href="#新增-50" id="新增-50" style="color: inherit; text-decoration: none;">
2069
+ <a href="#新增-51" id="新增-51" style="color: inherit; text-decoration: none;">
2046
2070
  <h3>新增</h3>
2047
2071
  </a>
2048
2072
  <ul>
2049
2073
  <li>新增重启服务接口</li>
2050
2074
  </ul>
2051
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-3">restartServer</span><span class="hl-0"> = </span><span class="hl-1">async</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">restartServer</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">status</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">message</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">message</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> };</span>
2075
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-6">restartServer</span><span class="hl-1"> = </span><span class="hl-4">async</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">restartServer</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">status</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">message</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">message</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> };</span>
2052
2076
  </code></pre>
2053
2077
  <ul>
2054
2078
  <li>新增文档上下文单词智能提示(解决LSP服务启动慢,智能提示问题)</li>
@@ -2066,13 +2090,13 @@
2066
2090
  <h2>v0.9.70</h2>
2067
2091
  </a>
2068
2092
 
2069
- <a href="#新增-51" id="新增-51" style="color: inherit; text-decoration: none;">
2093
+ <a href="#新增-52" id="新增-52" style="color: inherit; text-decoration: none;">
2070
2094
  <h3>新增</h3>
2071
2095
  </a>
2072
2096
  <ul>
2073
2097
  <li>支持对文件树指定文件调整文字颜色的功能。(文件路径支持模糊匹配)</li>
2074
2098
  </ul>
2075
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">setFileStyle</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paths:</span><span class="hl-0"> [</span><span class="hl-5">&#39;a&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;*.md&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;**/index.css&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;a/b/c.js&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;*/c&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-4">styles:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">title:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeTitle&#39;</span><span class="hl-0">, </span><span class="hl-6">// 对应文案的样式名称(业务方可以自定义名称)</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeIcon&#39;</span><span class="hl-0">, </span><span class="hl-6">// 对应ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-0"> </span><span class="hl-4">arrowIcon:</span><span class="hl-0"> </span><span class="hl-5">&#39;customizeArrowIcon&#39;</span><span class="hl-0">, </span><span class="hl-6">// 对应Arrow ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">});</span>
2099
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">setFileStyle</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paths:</span><span class="hl-1"> [</span><span class="hl-2">&#39;a&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;*.md&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;**/index.css&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;a/b/c.js&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;*/c&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-7">styles:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">title:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeTitle&#39;</span><span class="hl-1">, </span><span class="hl-3">// 对应文案的样式名称(业务方可以自定义名称)</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeIcon&#39;</span><span class="hl-1">, </span><span class="hl-3">// 对应ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-1"> </span><span class="hl-7">arrowIcon:</span><span class="hl-1"> </span><span class="hl-2">&#39;customizeArrowIcon&#39;</span><span class="hl-1">, </span><span class="hl-3">// 对应Arrow ICON的样式名称(业务方可以自定义名称)</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">});</span>
2076
2100
  </code></pre>
2077
2101
 
2078
2102
  <a href="#修复-62" id="修复-62" style="color: inherit; text-decoration: none;">
@@ -2085,13 +2109,13 @@
2085
2109
  <li>修复回放功能相关问题(系列新功能影响到回放)</li>
2086
2110
  </ul>
2087
2111
 
2088
- <a href="#优化-54" id="优化-54" style="color: inherit; text-decoration: none;">
2112
+ <a href="#优化-55" id="优化-55" style="color: inherit; text-decoration: none;">
2089
2113
  <h3>优化</h3>
2090
2114
  </a>
2091
2115
  <ul>
2092
2116
  <li>优化<code>reloadI18nResources</code>方法,支持一次性设置多个语言内容</li>
2093
2117
  </ul>
2094
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-6">// https://snyk.io/advisor/npm-package/i18next/functions/i18next.addResources 用法</span><br/><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">reloadI18nResources</span><span class="hl-0">(</span><span class="hl-4">lngOrSource</span><span class="hl-0">: </span><span class="hl-15">Array</span><span class="hl-0">&lt;</span><span class="hl-4">I18nResourcesType</span><span class="hl-0">&gt; | </span><span class="hl-4">I18nLanguageType</span><span class="hl-0">,</span><span class="hl-4">resource</span><span class="hl-0">?: </span><span class="hl-4">any</span><span class="hl-0">)</span>
2118
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">// https://snyk.io/advisor/npm-package/i18next/functions/i18next.addResources 用法</span><br/><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">reloadI18nResources</span><span class="hl-1">(</span><span class="hl-7">lngOrSource</span><span class="hl-1">: </span><span class="hl-15">Array</span><span class="hl-1">&lt;</span><span class="hl-7">I18nResourcesType</span><span class="hl-1">&gt; | </span><span class="hl-7">I18nLanguageType</span><span class="hl-1">,</span><span class="hl-7">resource</span><span class="hl-1">?: </span><span class="hl-7">any</span><span class="hl-1">)</span>
2095
2119
  </code></pre>
2096
2120
  <ul>
2097
2121
  <li>优化高亮主题样式</li>
@@ -2101,14 +2125,14 @@
2101
2125
  <h2>v0.9.69</h2>
2102
2126
  </a>
2103
2127
 
2104
- <a href="#新增-52" id="新增-52" style="color: inherit; text-decoration: none;">
2128
+ <a href="#新增-53" id="新增-53" style="color: inherit; text-decoration: none;">
2105
2129
  <h3>新增</h3>
2106
2130
  </a>
2107
2131
  <ul>
2108
2132
  <li>答题区支持“修改代码”模式</li>
2109
2133
  <li>新增<code>PaaS</code>平台,文案可以自定义功能接口,接口使用如下:</li>
2110
2134
  </ul>
2111
- <pre><code class="language-js"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">reloadI18nResources</span><span class="hl-0">(</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0">, {</span><br/><span class="hl-0"> </span><span class="hl-4">file_tree_create_new_file:</span><span class="hl-0"> </span><span class="hl-5">&#39;哈哈哈&#39;</span><span class="hl-0">, </span><span class="hl-6">// file_tree_create_new_file:要重命名的Key</span><br/><span class="hl-0">});</span>
2135
+ <pre><code class="language-js"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">reloadI18nResources</span><span class="hl-1">(</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-7">file_tree_create_new_file:</span><span class="hl-1"> </span><span class="hl-2">&#39;哈哈哈&#39;</span><span class="hl-1">, </span><span class="hl-3">// file_tree_create_new_file:要重命名的Key</span><br/><span class="hl-1">});</span>
2112
2136
  </code></pre>
2113
2137
 
2114
2138
  <a href="#修复-63" id="修复-63" style="color: inherit; text-decoration: none;">
@@ -2125,7 +2149,7 @@
2125
2149
  <h2>v0.9.68</h2>
2126
2150
  </a>
2127
2151
 
2128
- <a href="#新增-53" id="新增-53" style="color: inherit; text-decoration: none;">
2152
+ <a href="#新增-54" id="新增-54" style="color: inherit; text-decoration: none;">
2129
2153
  <h3>新增</h3>
2130
2154
  </a>
2131
2155
  <ul>
@@ -2134,7 +2158,7 @@
2134
2158
  <li>文件树头像位置优化</li>
2135
2159
  <li>新增修改xterm样式方式配置</li>
2136
2160
  </ul>
2137
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">xtermStyle:</span><span class="hl-0"> </span><span class="hl-4">XtermStyleType</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0">})</span>
2161
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">xtermStyle:</span><span class="hl-1"> </span><span class="hl-7">XtermStyleType</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1">})</span>
2138
2162
  </code></pre>
2139
2163
  <ul>
2140
2164
  <li>新增编辑器快捷键操作</li>
@@ -2148,7 +2172,7 @@
2148
2172
  <li>优化支持markdown表格解析以及图片不换行</li>
2149
2173
  <li>兼容smb旧版本的markdown数学公式语法解析</li>
2150
2174
  </ul>
2151
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-6">// true表示支持旧的`$ $`语法,默认false</span><br/><span class="hl-0"> </span><span class="hl-4">isLegacyMarkdownMath:</span><span class="hl-1">true</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0">})</span>
2175
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">// true表示支持旧的`$ $`语法,默认false</span><br/><span class="hl-1"> </span><span class="hl-7">isLegacyMarkdownMath:</span><span class="hl-4">true</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1">})</span>
2152
2176
  </code></pre>
2153
2177
  <ul>
2154
2178
  <li>优化LSP服务在离开IDE Page 还在尝试重连问题</li>
@@ -2171,7 +2195,7 @@
2171
2195
  <h2>v0.9.65</h2>
2172
2196
  </a>
2173
2197
 
2174
- <a href="#优化-55" id="优化-55" style="color: inherit; text-decoration: none;">
2198
+ <a href="#优化-56" id="优化-56" style="color: inherit; text-decoration: none;">
2175
2199
  <h3>优化</h3>
2176
2200
  </a>
2177
2201
  <ul>
@@ -2182,7 +2206,7 @@
2182
2206
  <h2>v0.9.64</h2>
2183
2207
  </a>
2184
2208
 
2185
- <a href="#优化-56" id="优化-56" style="color: inherit; text-decoration: none;">
2209
+ <a href="#优化-57" id="优化-57" style="color: inherit; text-decoration: none;">
2186
2210
  <h3>优化</h3>
2187
2211
  </a>
2188
2212
  <ul>
@@ -2216,7 +2240,7 @@
2216
2240
  <h2>v0.9.60</h2>
2217
2241
  </a>
2218
2242
 
2219
- <a href="#优化-57" id="优化-57" style="color: inherit; text-decoration: none;">
2243
+ <a href="#优化-58" id="优化-58" style="color: inherit; text-decoration: none;">
2220
2244
  <h3>优化</h3>
2221
2245
  </a>
2222
2246
  <ul>
@@ -2227,7 +2251,7 @@
2227
2251
  <h2>v0.9.59</h2>
2228
2252
  </a>
2229
2253
 
2230
- <a href="#优化-58" id="优化-58" style="color: inherit; text-decoration: none;">
2254
+ <a href="#优化-59" id="优化-59" style="color: inherit; text-decoration: none;">
2231
2255
  <h3>优化</h3>
2232
2256
  </a>
2233
2257
  <ul>
@@ -2239,39 +2263,39 @@
2239
2263
  <h2>v0.9.58</h2>
2240
2264
  </a>
2241
2265
 
2242
- <a href="#新增-54" id="新增-54" style="color: inherit; text-decoration: none;">
2266
+ <a href="#新增-55" id="新增-55" style="color: inherit; text-decoration: none;">
2243
2267
  <h3>新增</h3>
2244
2268
  </a>
2245
2269
  <ul>
2246
2270
  <li>新增答题区域功能,右键菜单配置方式(目前只支持:【implement,update】两种菜单Action):</li>
2247
2271
  </ul>
2248
- <pre><code class="language-ts"><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-4">showHiddenCode</span><span class="hl-0">, </span><span class="hl-6">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-0"> </span><span class="hl-4">freezeCode</span><span class="hl-0">, </span><span class="hl-6">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-0"> </span><span class="hl-11">contextMenu</span><span class="hl-0">: </span><span class="hl-4">contextMenu</span><br/><span class="hl-0"> ? {</span><br/><span class="hl-0"> </span><span class="hl-3">handleSelect</span><span class="hl-4">:</span><span class="hl-0"> (</span><span class="hl-4">e</span><span class="hl-0">, </span><span class="hl-4">callback</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">info</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">e</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">id</span><span class="hl-0"> = </span><span class="hl-15">Math</span><span class="hl-0">.</span><span class="hl-3">floor</span><span class="hl-0">(</span><span class="hl-15">Math</span><span class="hl-0">.</span><span class="hl-3">random</span><span class="hl-0">() * </span><span class="hl-17">1000</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">callback</span><span class="hl-0">?.({</span><br/><span class="hl-0"> </span><span class="hl-4">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-4">items:</span><span class="hl-0"> [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;implement&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> </span><span class="hl-5">&#39;实现功能&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> </span><span class="hl-5">&#39;add-question&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">iconLabel:</span><span class="hl-0"> </span><span class="hl-5">&#39;答题区&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">commentStartLabel:</span><span class="hl-0"> </span><span class="hl-5">&#39;请在此实现代码功能&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// commentTips: &#39;请在此实现代码功能&#39;,</span><br/><span class="hl-0"> </span><span class="hl-4">hideCodeBlock:</span><span class="hl-0"> </span><span class="hl-1">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-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;update&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">text:</span><span class="hl-0"> </span><span class="hl-5">&#39;修改代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">icon:</span><span class="hl-0"> </span><span class="hl-5">&#39;list-mode&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">iconLabel:</span><span class="hl-0"> </span><span class="hl-5">&#39;编辑区&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">commentStartLabel:</span><span class="hl-0"> </span><span class="hl-5">&#39;请在此修复代码&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">// commentTips: &#39;请在此修复代码&#39;,</span><br/><span class="hl-0"> </span><span class="hl-4">hideCodeBlock:</span><span class="hl-0"> </span><span class="hl-1">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-1">null</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> },</span>
2272
+ <pre><code class="language-ts"><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">showHiddenCode</span><span class="hl-1">, </span><span class="hl-3">// 是否显示隐藏代码:面试官视角,应该是true, 候选人视角:false</span><br/><span class="hl-1"> </span><span class="hl-7">freezeCode</span><span class="hl-1">, </span><span class="hl-3">// 是否让设置的代码区域不能编辑, 面试官视角,应该是false,候选人视角:true</span><br/><span class="hl-1"> </span><span class="hl-0">contextMenu</span><span class="hl-1">: </span><span class="hl-7">contextMenu</span><br/><span class="hl-1"> ? {</span><br/><span class="hl-1"> </span><span class="hl-6">handleSelect</span><span class="hl-7">:</span><span class="hl-1"> (</span><span class="hl-7">e</span><span class="hl-1">, </span><span class="hl-7">callback</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">info</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">e</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">id</span><span class="hl-1"> = </span><span class="hl-15">Math</span><span class="hl-1">.</span><span class="hl-6">floor</span><span class="hl-1">(</span><span class="hl-15">Math</span><span class="hl-1">.</span><span class="hl-6">random</span><span class="hl-1">() * </span><span class="hl-17">1000</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">callback</span><span class="hl-1">?.({</span><br/><span class="hl-1"> </span><span class="hl-7">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-7">items:</span><span class="hl-1"> [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;implement&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">text:</span><span class="hl-1"> </span><span class="hl-2">&#39;实现功能&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> </span><span class="hl-2">&#39;add-question&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">iconLabel:</span><span class="hl-1"> </span><span class="hl-2">&#39;答题区&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">commentStartLabel:</span><span class="hl-1"> </span><span class="hl-2">&#39;请在此实现代码功能&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// commentTips: &#39;请在此实现代码功能&#39;,</span><br/><span class="hl-1"> </span><span class="hl-7">hideCodeBlock:</span><span class="hl-1"> </span><span class="hl-4">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-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;update&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">text:</span><span class="hl-1"> </span><span class="hl-2">&#39;修改代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">icon:</span><span class="hl-1"> </span><span class="hl-2">&#39;list-mode&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">iconLabel:</span><span class="hl-1"> </span><span class="hl-2">&#39;编辑区&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">commentStartLabel:</span><span class="hl-1"> </span><span class="hl-2">&#39;请在此修复代码&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">// commentTips: &#39;请在此修复代码&#39;,</span><br/><span class="hl-1"> </span><span class="hl-7">hideCodeBlock:</span><span class="hl-1"> </span><span class="hl-4">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-4">null</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> },</span>
2249
2273
  </code></pre>
2250
2274
  <ul>
2251
2275
  <li>新增代码块ICON点击事件:</li>
2252
2276
  </ul>
2253
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">LineAction</span><span class="hl-0">: {</span><br/><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">info</span><span class="hl-0">(</span><span class="hl-15">JSON</span><span class="hl-0">.</span><span class="hl-3">stringify</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">));</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span>
2277
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">LineAction</span><span class="hl-1">: {</span><br/><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">info</span><span class="hl-1">(</span><span class="hl-15">JSON</span><span class="hl-1">.</span><span class="hl-6">stringify</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">));</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span>
2254
2278
  </code></pre>
2255
2279
  <ul>
2256
2280
  <li>新增插入代码块功能(根据业务ID插入)</li>
2257
2281
  </ul>
2258
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-6">//lineId:业务ID,lineText:要插入的字符</span><br/><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">insertTextById</span><span class="hl-0">(</span><span class="hl-4">lineId</span><span class="hl-0">, </span><span class="hl-4">lineText</span><span class="hl-0">);</span>
2282
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-3">//lineId:业务ID,lineText:要插入的字符</span><br/><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">insertTextById</span><span class="hl-1">(</span><span class="hl-7">lineId</span><span class="hl-1">, </span><span class="hl-7">lineText</span><span class="hl-1">);</span>
2259
2283
  </code></pre>
2260
2284
  <ul>
2261
2285
  <li>新增冻结非设置区域代码功能接口:</li>
2262
2286
  </ul>
2263
- <pre><code class="language-ts"><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">switchFreezeCode</span><span class="hl-0">();</span>
2287
+ <pre><code class="language-ts"><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">switchFreezeCode</span><span class="hl-1">();</span>
2264
2288
  </code></pre>
2265
2289
  <ul>
2266
2290
  <li>新增由业务方控制是否将操作数据写入CRDT,配置参数如下:</li>
2267
2291
  </ul>
2268
- <pre><code class="language-ts"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">isInsertCrdt</span><span class="hl-0">: </span><span class="hl-1">false</span><span class="hl-0">, </span><span class="hl-6">//默认值为:true</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> });</span>
2292
+ <pre><code class="language-ts"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">isInsertCrdt</span><span class="hl-1">: </span><span class="hl-4">false</span><span class="hl-1">, </span><span class="hl-3">//默认值为:true</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> });</span>
2269
2293
  </code></pre>
2270
2294
  <ul>
2271
2295
  <li><code>onMessage</code>事件新增<code>ApplicationAvailable</code>事件类型,用于监听项目运行成功的事件</li>
2272
2296
  </ul>
2273
2297
 
2274
- <a href="#优化-59" id="优化-59" style="color: inherit; text-decoration: none;">
2298
+ <a href="#优化-60" id="优化-60" style="color: inherit; text-decoration: none;">
2275
2299
  <h3>优化</h3>
2276
2300
  </a>
2277
2301
  <ul>
@@ -2300,13 +2324,13 @@
2300
2324
  <h2>v0.9.56</h2>
2301
2325
  </a>
2302
2326
 
2303
- <a href="#新增-55" id="新增-55" style="color: inherit; text-decoration: none;">
2327
+ <a href="#新增-56" id="新增-56" style="color: inherit; text-decoration: none;">
2304
2328
  <h3>新增</h3>
2305
2329
  </a>
2306
2330
  <ul>
2307
2331
  <li>新增<code>markdown</code>预览模式功能,提供<code>MarkdownPreview</code>类型组件</li>
2308
2332
  </ul>
2309
- <pre><code class="language-ts"><span class="hl-6">// 组件schema配置</span><br/><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-11">container</span><span class="hl-0">: </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">item</span><span class="hl-0">: </span><span class="hl-5">&#39;MarkdownPreview&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-11">props</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-11">isRender</span><span class="hl-0">: </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// 初次是否挂载(true标识为初次挂载|false为不挂载)</span><br/><span class="hl-0"> },</span><br/><span class="hl-0">},</span><br/><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0">{</span><br/><span class="hl-6">//获取到选中的文件路径</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">FileInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-6">// 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-6">// 控制预览组件的 挂载|销毁 - flag为true表示挂载</span><br/><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">toggleMarkDownPreview</span><span class="hl-0">(</span><span class="hl-4">flag</span><span class="hl-0">);</span>
2333
+ <pre><code class="language-ts"><span class="hl-3">// 组件schema配置</span><br/><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-0">container</span><span class="hl-1">: </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">item</span><span class="hl-1">: </span><span class="hl-2">&#39;MarkdownPreview&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">props</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-0">isRender</span><span class="hl-1">: </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// 初次是否挂载(true标识为初次挂载|false为不挂载)</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">},</span><br/><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1">{</span><br/><span class="hl-3">//获取到选中的文件路径</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">FileInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">// 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-3">// 控制预览组件的 挂载|销毁 - flag为true表示挂载</span><br/><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">toggleMarkDownPreview</span><span class="hl-1">(</span><span class="hl-7">flag</span><span class="hl-1">);</span>
2310
2334
  </code></pre>
2311
2335
  <ul>
2312
2336
  <li>新增是否显示隐藏文件的功能</li>
@@ -2328,7 +2352,7 @@
2328
2352
  <h2>v0.9.55</h2>
2329
2353
  </a>
2330
2354
 
2331
- <a href="#优化-60" id="优化-60" style="color: inherit; text-decoration: none;">
2355
+ <a href="#优化-61" id="优化-61" style="color: inherit; text-decoration: none;">
2332
2356
  <h2>优化</h2>
2333
2357
  </a>
2334
2358
  <ul>
@@ -2346,7 +2370,7 @@
2346
2370
  <h2>v0.9.54</h2>
2347
2371
  </a>
2348
2372
 
2349
- <a href="#新增-56" id="新增-56" style="color: inherit; text-decoration: none;">
2373
+ <a href="#新增-57" id="新增-57" style="color: inherit; text-decoration: none;">
2350
2374
  <h3>新增</h3>
2351
2375
  </a>
2352
2376
  <ul>
@@ -2356,7 +2380,7 @@
2356
2380
  <li>lsp新增断线重连机制,断线后的状态会从运行中变为连接中</li>
2357
2381
  <li>编辑器新增自动换行配置,默认会自动化换行,新增缩进方式的配置,默认以空格作为缩进,调用方式如下</li>
2358
2382
  </ul>
2359
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">daoPaas</span><span class="hl-0">.</span><span class="hl-3">updateGlobalConfig</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-6">//...</span><br/><span class="hl-0"> </span><span class="hl-4">editorWordWrap:</span><span class="hl-0"> </span><span class="hl-1">true</span><span class="hl-0">, </span><span class="hl-6">// or false</span><br/><span class="hl-0"> </span><span class="hl-4">editorIndentMode:</span><span class="hl-0"> </span><span class="hl-5">&#39;space&#39;</span><span class="hl-0"> </span><span class="hl-6">// or tab</span><br/><span class="hl-0"> </span><span class="hl-6">//...</span><br/><span class="hl-0"> })</span>
2383
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-7">daoPaas</span><span class="hl-1">.</span><span class="hl-6">updateGlobalConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-3">//...</span><br/><span class="hl-1"> </span><span class="hl-7">editorWordWrap:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1">, </span><span class="hl-3">// or false</span><br/><span class="hl-1"> </span><span class="hl-7">editorIndentMode:</span><span class="hl-1"> </span><span class="hl-2">&#39;space&#39;</span><span class="hl-1"> </span><span class="hl-3">// or tab</span><br/><span class="hl-1"> </span><span class="hl-3">//...</span><br/><span class="hl-1"> })</span>
2360
2384
  </code></pre>
2361
2385
  <ul>
2362
2386
  <li>新增<code>terminal</code>加载进度条UI效果</li>
@@ -2365,7 +2389,7 @@
2365
2389
  <li>支持<code>Elixir</code> 代码高亮</li>
2366
2390
  <li>语言国际化功能,目前仅支持<code>ZH(中文)|EN(英文)</code>(默认中文)</li>
2367
2391
  </ul>
2368
- <pre><code class="language-ts"><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0"> ({</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">i18nLanguage</span><span class="hl-0">:</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">.</span><span class="hl-2">ZH</span><span class="hl-0"> </span><span class="hl-6">// i18nLanguage 如果不传递,则默认为: ZH</span><br/><span class="hl-0"> })</span><br/><span class="hl-6">// 手动调用接口进行语言切换</span><br/><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">switchI18nLanguage</span><span class="hl-0">(</span><span class="hl-4">lang</span><span class="hl-0">:</span><span class="hl-4">I18nLanguageType</span><span class="hl-0">);</span><br/><span class="hl-6">// 国际化支持语言类型</span><br/><span class="hl-16">export</span><span class="hl-0"> </span><span class="hl-1">enum</span><span class="hl-0"> </span><span class="hl-15">I18nLanguageType</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-6">/** 中文 */</span><br/><span class="hl-0"> </span><span class="hl-2">ZH</span><span class="hl-0"> = </span><span class="hl-5">&#39;ZH&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-6">/** 英文 */</span><br/><span class="hl-0"> </span><span class="hl-2">EN</span><span class="hl-0"> = </span><span class="hl-5">&#39;EN&#39;</span><span class="hl-0">,</span><br/><span class="hl-0">}</span>
2392
+ <pre><code class="language-ts"><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1"> ({</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">i18nLanguage</span><span class="hl-1">:</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">.</span><span class="hl-5">ZH</span><span class="hl-1"> </span><span class="hl-3">// i18nLanguage 如果不传递,则默认为: ZH</span><br/><span class="hl-1"> })</span><br/><span class="hl-3">// 手动调用接口进行语言切换</span><br/><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">switchI18nLanguage</span><span class="hl-1">(</span><span class="hl-7">lang</span><span class="hl-1">:</span><span class="hl-7">I18nLanguageType</span><span class="hl-1">);</span><br/><span class="hl-3">// 国际化支持语言类型</span><br/><span class="hl-16">export</span><span class="hl-1"> </span><span class="hl-4">enum</span><span class="hl-1"> </span><span class="hl-15">I18nLanguageType</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">/** 中文 */</span><br/><span class="hl-1"> </span><span class="hl-5">ZH</span><span class="hl-1"> = </span><span class="hl-2">&#39;ZH&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">/** 英文 */</span><br/><span class="hl-1"> </span><span class="hl-5">EN</span><span class="hl-1"> = </span><span class="hl-2">&#39;EN&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}</span>
2369
2393
  </code></pre>
2370
2394
 
2371
2395
  <a href="#修复-72" id="修复-72" style="color: inherit; text-decoration: none;">
@@ -2393,13 +2417,13 @@
2393
2417
  <h2>v0.9.51</h2>
2394
2418
  </a>
2395
2419
 
2396
- <a href="#新增-57" id="新增-57" style="color: inherit; text-decoration: none;">
2420
+ <a href="#新增-58" id="新增-58" style="color: inherit; text-decoration: none;">
2397
2421
  <h3>新增</h3>
2398
2422
  </a>
2399
2423
  <ul>
2400
2424
  <li>新增统计数据获取接口<code>statisticsPlaybackData</code>,使用方式如下:</li>
2401
2425
  </ul>
2402
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">statisticsPlaybackData</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">eventName</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">questionIds</span><span class="hl-0">.</span><span class="hl-3">split</span><span class="hl-0">(</span><span class="hl-5">&#39;,&#39;</span><span class="hl-0">).</span><span class="hl-3">map</span><span class="hl-0">((</span><span class="hl-4">item</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> +</span><span class="hl-4">item</span><span class="hl-0">),</span><br/><span class="hl-0"> );</span>
2426
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">statisticsPlaybackData</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">eventName</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">questionIds</span><span class="hl-1">.</span><span class="hl-6">split</span><span class="hl-1">(</span><span class="hl-2">&#39;,&#39;</span><span class="hl-1">).</span><span class="hl-6">map</span><span class="hl-1">((</span><span class="hl-7">item</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> +</span><span class="hl-7">item</span><span class="hl-1">),</span><br/><span class="hl-1"> );</span>
2403
2427
  </code></pre>
2404
2428
  <blockquote>
2405
2429
  <ol>
@@ -2408,7 +2432,7 @@
2408
2432
  <li>返回的数据<code>data</code>是一个问题和统计结果的对象,问题ID作为对象ID,如:</li>
2409
2433
  </ol>
2410
2434
  </blockquote>
2411
- <pre><code class="language-js"><span class="hl-4">res</span><span class="hl-0"> = {</span><br/><span class="hl-0"> </span><span class="hl-4">status:</span><span class="hl-0"> </span><span class="hl-5">&#39;success&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">data:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;1&#39;</span><span class="hl-4">:</span><span class="hl-0"> </span><span class="hl-17">120</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;2&#39;</span><span class="hl-4">:</span><span class="hl-0"> </span><span class="hl-17">211</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-4">:</span><span class="hl-0"> </span><span class="hl-17">999</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
2435
+ <pre><code class="language-js"><span class="hl-7">res</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-7">status:</span><span class="hl-1"> </span><span class="hl-2">&#39;success&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">data:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;1&#39;</span><span class="hl-7">:</span><span class="hl-1"> </span><span class="hl-17">120</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;2&#39;</span><span class="hl-7">:</span><span class="hl-1"> </span><span class="hl-17">211</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-7">:</span><span class="hl-1"> </span><span class="hl-17">999</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
2412
2436
  </code></pre>
2413
2437
 
2414
2438
  <a href="#修复-74" id="修复-74" style="color: inherit; text-decoration: none;">
@@ -2422,13 +2446,13 @@
2422
2446
  <h2>v0.9.50</h2>
2423
2447
  </a>
2424
2448
 
2425
- <a href="#新增-58" id="新增-58" style="color: inherit; text-decoration: none;">
2449
+ <a href="#新增-59" id="新增-59" style="color: inherit; text-decoration: none;">
2426
2450
  <h3>新增</h3>
2427
2451
  </a>
2428
2452
  <ul>
2429
2453
  <li>新增切换编程语言接口<code>daoPaasObj?.switchLanguage</code>,返回<code>Promise</code>,ß使用方式如下:</li>
2430
2454
  </ul>
2431
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">switchLanguage</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">languageType</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageValue</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">languageFileName</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">[</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">status</span><span class="hl-0"> ? </span><span class="hl-5">&#39;info&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;error&#39;</span><span class="hl-0">](</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">message</span><span class="hl-0">);</span>
2455
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">switchLanguage</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">languageType</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageValue</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">languageFileName</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">[</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">status</span><span class="hl-1"> ? </span><span class="hl-2">&#39;info&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;error&#39;</span><span class="hl-1">](</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">message</span><span class="hl-1">);</span>
2432
2456
  </code></pre>
2433
2457
  <blockquote>
2434
2458
  <ol>
@@ -2436,7 +2460,7 @@
2436
2460
  <li>languageValue: 要切换的目标语言,每种文件类型支持的目标语言映射表:</li>
2437
2461
  </ol>
2438
2462
  </blockquote>
2439
- <pre><code class="language-js"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-11">HTML</span><span class="hl-0">: [</span><span class="hl-5">&#39;html&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;pug&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;hbs&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;md&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-11">CSS</span><span class="hl-0">: [</span><span class="hl-5">&#39;css&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;less&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;scss&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;sass&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;styl&#39;</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-11">JS</span><span class="hl-0">: [</span><span class="hl-5">&#39;js&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;ts&#39;</span><span class="hl-0">, </span><span class="hl-5">&#39;coffee&#39;</span><span class="hl-0">],</span><br/><span class="hl-0">}</span>
2463
+ <pre><code class="language-js"><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-0">HTML</span><span class="hl-1">: [</span><span class="hl-2">&#39;html&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;pug&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;hbs&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;md&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-0">CSS</span><span class="hl-1">: [</span><span class="hl-2">&#39;css&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;less&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;scss&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;sass&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;styl&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-0">JS</span><span class="hl-1">: [</span><span class="hl-2">&#39;js&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;ts&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;coffee&#39;</span><span class="hl-1">],</span><br/><span class="hl-1">}</span>
2440
2464
  </code></pre>
2441
2465
  <blockquote>
2442
2466
  <ol start="3">
@@ -2446,7 +2470,7 @@
2446
2470
  <ul>
2447
2471
  <li>新增向<code>index.html</code>文件中注入CDN资源,返回<code>Promsie</code>,使用方式如下:</li>
2448
2472
  </ul>
2449
- <pre><code class="language-js"><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">addCDNSource</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">cdnUrlType</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">cdnUrlPath</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">cdnUrlFileName</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-4">messageBox</span><span class="hl-0">[</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">status</span><span class="hl-0"> ? </span><span class="hl-5">&#39;info&#39;</span><span class="hl-0"> : </span><span class="hl-5">&#39;error&#39;</span><span class="hl-0">](</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">message</span><span class="hl-0">);</span>
2473
+ <pre><code class="language-js"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">addCDNSource</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">cdnUrlType</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">cdnUrlPath</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">cdnUrlFileName</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-7">messageBox</span><span class="hl-1">[</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">status</span><span class="hl-1"> ? </span><span class="hl-2">&#39;info&#39;</span><span class="hl-1"> : </span><span class="hl-2">&#39;error&#39;</span><span class="hl-1">](</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">message</span><span class="hl-1">);</span>
2450
2474
  </code></pre>
2451
2475
  <blockquote>
2452
2476
  <ol>
@@ -2458,13 +2482,13 @@
2458
2482
  <ul>
2459
2483
  <li>支持全局配置,目前可设置默认缩进的大小和编辑器的模式,调用方式如下</li>
2460
2484
  </ul>
2461
- <pre><code class="language-javascript"><span class="hl-6">// ...</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">updateGlobalConfig</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">editorMode:</span><span class="hl-0"> </span><span class="hl-5">&#39;default&#39;</span><span class="hl-0">, </span><span class="hl-6">// 支持的参数为 default | vim | emacs</span><br/><span class="hl-0"> </span><span class="hl-4">editorTabSize:</span><span class="hl-0"> </span><span class="hl-17">2</span><span class="hl-0">,</span><br/><span class="hl-0">})</span><br/><span class="hl-6">// ...</span>
2485
+ <pre><code class="language-javascript"><span class="hl-3">// ...</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">updateGlobalConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">editorMode:</span><span class="hl-1"> </span><span class="hl-2">&#39;default&#39;</span><span class="hl-1">, </span><span class="hl-3">// 支持的参数为 default | vim | emacs</span><br/><span class="hl-1"> </span><span class="hl-7">editorTabSize:</span><span class="hl-1"> </span><span class="hl-17">2</span><span class="hl-1">,</span><br/><span class="hl-1">})</span><br/><span class="hl-3">// ...</span>
2462
2486
  </code></pre>
2463
2487
  <p><strong>注意</strong>: 以上配置的属性都是可选项,若不设置会采用默认的设置,默认编辑模式就是文本编辑模式,缩进默认是2,若之前设置过,则会使用之前的设置</p>
2464
2488
  <ul>
2465
2489
  <li>优化提示交互体验,在切题时,需要调用<code>reload</code>方法,该方法可以重置一些loading状态和初始数据,方法接收一个数组为参数,不传默认为<code>[&#39;Editor&#39;, &#39;Tree&#39;]</code>, 该方法一经调用,便会清空当前的文件树和编辑器,进入组件的loading状态,避免出现已经切题,上层已经loading,SDK依然显示旧数据的情况</li>
2466
2490
  </ul>
2467
- <pre><code class="language-javascript"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">reload</span><span class="hl-0">()</span>
2491
+ <pre><code class="language-javascript"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">reload</span><span class="hl-1">()</span>
2468
2492
  </code></pre>
2469
2493
  <ul>
2470
2494
  <li>优化IDE server新增fileRootId,编辑器的OT相关操作和文件树操作的相关操作,会携带fileRootId参数到IDE Server,IDE Server会判断传进来的fileRootId是否和服务器匹配,不匹配就会放弃后面的操作</li>
@@ -2476,7 +2500,7 @@
2476
2500
  <h2>v0.9.49</h2>
2477
2501
  </a>
2478
2502
 
2479
- <a href="#新增-59" id="新增-59" style="color: inherit; text-decoration: none;">
2503
+ <a href="#新增-60" id="新增-60" style="color: inherit; text-decoration: none;">
2480
2504
  <h3>新增</h3>
2481
2505
  </a>
2482
2506
  <ul>
@@ -2495,18 +2519,18 @@
2495
2519
  <h2>v0.9.48</h2>
2496
2520
  </a>
2497
2521
 
2498
- <a href="#新增-60" id="新增-60" style="color: inherit; text-decoration: none;">
2522
+ <a href="#新增-61" id="新增-61" style="color: inherit; text-decoration: none;">
2499
2523
  <h3>新增</h3>
2500
2524
  </a>
2501
2525
  <ul>
2502
2526
  <li>回放功能,新增停止回放接口</li>
2503
2527
  </ul>
2504
- <pre><code class="language-js"><span class="hl-4">daoPaasObj</span><span class="hl-0">.</span><span class="hl-3">stopPlayback</span><span class="hl-0">();</span>
2528
+ <pre><code class="language-js"><span class="hl-7">daoPaasObj</span><span class="hl-1">.</span><span class="hl-6">stopPlayback</span><span class="hl-1">();</span>
2505
2529
  </code></pre>
2506
2530
  <ul>
2507
2531
  <li>回放功能,在回放过程中,新增广播自定义数据帧事件</li>
2508
2532
  </ul>
2509
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">setSpinLoading</span><span class="hl-0">(</span><span class="hl-1">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ....</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;customize&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-6">// 可以根据:payload.data.action 来判断具体是哪种自定义数据帧</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-5">&#39;Customize Event:&#39;</span><span class="hl-0">, </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">data</span><span class="hl-0">.</span><span class="hl-4">action</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">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>
2533
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">setSpinLoading</span><span class="hl-1">(</span><span class="hl-4">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ....</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;customize&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">// 可以根据:payload.data.action 来判断具体是哪种自定义数据帧</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-2">&#39;Customize Event:&#39;</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">data</span><span class="hl-1">.</span><span class="hl-7">action</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">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>
2510
2534
  </code></pre>
2511
2535
  <ul>
2512
2536
  <li><p>新增数据帧前后两帧数据间隔时长超过指定的阈值,广播事件,自定义事件名称跟上面一样:<code>customize</code>,其<code>action</code> 为: <code>timespanEvent</code></p>
@@ -2514,19 +2538,19 @@
2514
2538
  <li><p>将上述具体时间间隔的数值通过初始化<code>DaoPassS</code>对象进行配置:</p>
2515
2539
  </li>
2516
2540
  </ul>
2517
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">ticket:</span><span class="hl-0"> </span><span class="hl-4">dataRes</span><span class="hl-0">?.</span><span class="hl-4">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">triggerEventForMaxTimespan:</span><span class="hl-0"> </span><span class="hl-17">1000</span><span class="hl-0"> * </span><span class="hl-17">2</span><span class="hl-0">, </span><span class="hl-6">// 配置该属性,如果不配置该属性值,则不会广播事件</span><br/><span class="hl-0"> </span><span class="hl-4">userInfo:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">username:</span><span class="hl-0"> </span><span class="hl-4">DemoUserInfo</span><span class="hl-0">.</span><span class="hl-4">name</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> });</span>
2541
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">ticket:</span><span class="hl-1"> </span><span class="hl-7">dataRes</span><span class="hl-1">?.</span><span class="hl-7">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">triggerEventForMaxTimespan:</span><span class="hl-1"> </span><span class="hl-17">1000</span><span class="hl-1"> * </span><span class="hl-17">2</span><span class="hl-1">, </span><span class="hl-3">// 配置该属性,如果不配置该属性值,则不会广播事件</span><br/><span class="hl-1"> </span><span class="hl-7">userInfo:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">username:</span><span class="hl-1"> </span><span class="hl-7">DemoUserInfo</span><span class="hl-1">.</span><span class="hl-7">name</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> });</span>
2518
2542
  </code></pre>
2519
2543
  <ul>
2520
2544
  <li>将<code>websocket</code>断开重连的尝试次数,控制交由业务方进行控制,如果业务方不配置, 则默认为重连<strong>5次</strong>,则广播对应的事件</li>
2521
2545
  </ul>
2522
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><span class="hl-0"> </span><span class="hl-4">process</span><span class="hl-0">.</span><span class="hl-4">env</span><span class="hl-0">.</span><span class="hl-2">PAAS_MANAGER_API_ORIGIN</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;3&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">ticket:</span><span class="hl-0"> </span><span class="hl-4">dataRes</span><span class="hl-0">?.</span><span class="hl-4">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">reconnectMaxTimes:</span><span class="hl-0"> </span><span class="hl-17">6</span><span class="hl-0">, </span><span class="hl-6">// 配置改属性,如果不配置,则默认为最大重试5次</span><br/><span class="hl-0"> </span><span class="hl-4">userInfo:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">username:</span><span class="hl-0"> </span><span class="hl-4">DemoUserInfo</span><span class="hl-0">.</span><span class="hl-4">name</span><span class="hl-0">,</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> });</span>
2546
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><span class="hl-1"> </span><span class="hl-7">process</span><span class="hl-1">.</span><span class="hl-7">env</span><span class="hl-1">.</span><span class="hl-5">PAAS_MANAGER_API_ORIGIN</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;3&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">ticket:</span><span class="hl-1"> </span><span class="hl-7">dataRes</span><span class="hl-1">?.</span><span class="hl-7">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">reconnectMaxTimes:</span><span class="hl-1"> </span><span class="hl-17">6</span><span class="hl-1">, </span><span class="hl-3">// 配置改属性,如果不配置,则默认为最大重试5次</span><br/><span class="hl-1"> </span><span class="hl-7">userInfo:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">username:</span><span class="hl-1"> </span><span class="hl-7">DemoUserInfo</span><span class="hl-1">.</span><span class="hl-7">name</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> });</span>
2523
2547
  </code></pre>
2524
2548
  <ul>
2525
2549
  <li>新增拖拽文件或文件夹到指定目录</li>
2526
2550
  <li>新增拖拽文件或文件夹并上传到指定目录</li>
2527
2551
  <li>新增下载项目文件</li>
2528
2552
  </ul>
2529
- <pre><code class="language-js"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">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-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">props:</span><span class="hl-0"> {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-4">fileRootActions</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">label:</span><span class="hl-0"> </span><span class="hl-5">&#39;下载项目&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">onClick</span><span class="hl-4">:</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">getProjectCode</span><span class="hl-0">(</span><span class="hl-4">playgroundId</span><span class="hl-0">).</span><span class="hl-3">then</span><span class="hl-0">((</span><span class="hl-4">res</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">blob</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">Blob</span><span class="hl-0">([</span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">data</span><span class="hl-0">]);</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">url</span><span class="hl-0"> = </span><span class="hl-4">window</span><span class="hl-0">.</span><span class="hl-2">URL</span><span class="hl-0">.</span><span class="hl-3">createObjectURL</span><span class="hl-0">(</span><span class="hl-4">blob</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">ele</span><span class="hl-0"> = </span><span class="hl-4">document</span><span class="hl-0">.</span><span class="hl-3">createElement</span><span class="hl-0">(</span><span class="hl-5">&#39;a&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">ele</span><span class="hl-0">.</span><span class="hl-4">style</span><span class="hl-0">.</span><span class="hl-4">display</span><span class="hl-0"> = </span><span class="hl-5">&#39;none&#39;</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">ele</span><span class="hl-0">.</span><span class="hl-4">href</span><span class="hl-0"> = </span><span class="hl-4">url</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-4">ele</span><span class="hl-0">.</span><span class="hl-4">download</span><span class="hl-0"> = </span><span class="hl-5">&#39;download.zip&#39;</span><span class="hl-0">; </span><span class="hl-6">// 下载文件夹的名称业务方进行自定义, 后缀可以从res header 获取</span><br/><span class="hl-0"> </span><span class="hl-4">document</span><span class="hl-0">.</span><span class="hl-4">body</span><span class="hl-0">.</span><span class="hl-3">appendChild</span><span class="hl-0">(</span><span class="hl-4">ele</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">ele</span><span class="hl-0">.</span><span class="hl-3">click</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-4">ele</span><span class="hl-0">.</span><span class="hl-3">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>
2553
+ <pre><code class="language-js"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">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-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">props:</span><span class="hl-1"> {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-7">fileRootActions</span><span class="hl-1">: [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">label:</span><span class="hl-1"> </span><span class="hl-2">&#39;下载项目&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">onClick</span><span class="hl-7">:</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">getProjectCode</span><span class="hl-1">(</span><span class="hl-7">playgroundId</span><span class="hl-1">).</span><span class="hl-6">then</span><span class="hl-1">((</span><span class="hl-7">res</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">blob</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">Blob</span><span class="hl-1">([</span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">data</span><span class="hl-1">]);</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">url</span><span class="hl-1"> = </span><span class="hl-7">window</span><span class="hl-1">.</span><span class="hl-5">URL</span><span class="hl-1">.</span><span class="hl-6">createObjectURL</span><span class="hl-1">(</span><span class="hl-7">blob</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">ele</span><span class="hl-1"> = </span><span class="hl-7">document</span><span class="hl-1">.</span><span class="hl-6">createElement</span><span class="hl-1">(</span><span class="hl-2">&#39;a&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">ele</span><span class="hl-1">.</span><span class="hl-7">style</span><span class="hl-1">.</span><span class="hl-7">display</span><span class="hl-1"> = </span><span class="hl-2">&#39;none&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">ele</span><span class="hl-1">.</span><span class="hl-7">href</span><span class="hl-1"> = </span><span class="hl-7">url</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">ele</span><span class="hl-1">.</span><span class="hl-7">download</span><span class="hl-1"> = </span><span class="hl-2">&#39;download.zip&#39;</span><span class="hl-1">; </span><span class="hl-3">// 下载文件夹的名称业务方进行自定义, 后缀可以从res header 获取</span><br/><span class="hl-1"> </span><span class="hl-7">document</span><span class="hl-1">.</span><span class="hl-7">body</span><span class="hl-1">.</span><span class="hl-6">appendChild</span><span class="hl-1">(</span><span class="hl-7">ele</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">ele</span><span class="hl-1">.</span><span class="hl-6">click</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-7">ele</span><span class="hl-1">.</span><span class="hl-6">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>
2530
2554
  </code></pre>
2531
2555
 
2532
2556
  <a href="#修复-76" id="修复-76" style="color: inherit; text-decoration: none;">
@@ -2540,7 +2564,7 @@
2540
2564
  <h2>v0.9.47</h2>
2541
2565
  </a>
2542
2566
 
2543
- <a href="#新增-61" id="新增-61" style="color: inherit; text-decoration: none;">
2567
+ <a href="#新增-62" id="新增-62" style="color: inherit; text-decoration: none;">
2544
2568
  <h3>新增</h3>
2545
2569
  </a>
2546
2570
  <ul>
@@ -2560,14 +2584,14 @@
2560
2584
  <h2>v0.9.46</h2>
2561
2585
  </a>
2562
2586
 
2563
- <a href="#新增-62" id="新增-62" style="color: inherit; text-decoration: none;">
2587
+ <a href="#新增-63" id="新增-63" style="color: inherit; text-decoration: none;">
2564
2588
  <h3>新增</h3>
2565
2589
  </a>
2566
2590
  <ul>
2567
2591
  <li>支持图形化界面展示功能</li>
2568
2592
  <li>支持Websocket 连接失败,重连指定次数(5次)后,仍连接失败, 广播<code>connectionBroken</code>事件给客户端进行处理</li>
2569
2593
  </ul>
2570
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onError</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">error</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">ConnectionBroken</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-4">error</span><span class="hl-0">, </span><span class="hl-17">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">}</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> }</span>
2594
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onError</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">error</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">ConnectionBroken</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-7">error</span><span class="hl-1">, </span><span class="hl-17">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">}</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> }</span>
2571
2595
  </code></pre>
2572
2596
  <ul>
2573
2597
  <li>新增回放功能,拖动播放滚动条后,再点击播放,在之前指定位置进行播放</li>
@@ -2598,7 +2622,7 @@
2598
2622
  <h2>v0.9.44</h2>
2599
2623
  </a>
2600
2624
 
2601
- <a href="#新增-63" id="新增-63" style="color: inherit; text-decoration: none;">
2625
+ <a href="#新增-64" id="新增-64" style="color: inherit; text-decoration: none;">
2602
2626
  <h3>新增</h3>
2603
2627
  </a>
2604
2628
  <ul>
@@ -2629,21 +2653,21 @@
2629
2653
  <h2>v0.9.42</h2>
2630
2654
  </a>
2631
2655
 
2632
- <a href="#新增-64" id="新增-64" style="color: inherit; text-decoration: none;">
2656
+ <a href="#新增-65" id="新增-65" style="color: inherit; text-decoration: none;">
2633
2657
  <h3>新增</h3>
2634
2658
  </a>
2635
2659
  <ul>
2636
2660
  <li>回放功能支持多题目切题回放</li>
2637
2661
  <li>回放接口添加支持自定义数据帧插入:</li>
2638
2662
  </ul>
2639
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-6">// 插入自定义数据帧</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">?.</span><span class="hl-3">appendCustomizeFrameData</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">action:</span><span class="hl-0"> </span><span class="hl-5">&#39;startQuestion&#39;</span><span class="hl-0">, </span><span class="hl-6">// startQuestion | endQuestion</span><br/><span class="hl-0"> </span><span class="hl-4">value:</span><span class="hl-0"> </span><span class="hl-17">1</span><span class="hl-0">, </span><span class="hl-6">// 题目ID</span><br/><span class="hl-0"> });</span>
2663
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">// 插入自定义数据帧</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">?.</span><span class="hl-6">appendCustomizeFrameData</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">action:</span><span class="hl-1"> </span><span class="hl-2">&#39;startQuestion&#39;</span><span class="hl-1">, </span><span class="hl-3">// startQuestion | endQuestion</span><br/><span class="hl-1"> </span><span class="hl-7">value:</span><span class="hl-1"> </span><span class="hl-17">1</span><span class="hl-1">, </span><span class="hl-3">// 题目ID</span><br/><span class="hl-1"> });</span>
2640
2664
  </code></pre>
2641
- <pre><code class="language-js"><span class="hl-6">// 监听自定义数据帧插入是否成功事件</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;appendCustomizeFrameData&#39;</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-5">&#39;插入数据帧成功&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">warn</span><span class="hl-0">(</span><span class="hl-5">`插入数据帧失败`</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>
2665
+ <pre><code class="language-js"><span class="hl-3">// 监听自定义数据帧插入是否成功事件</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;appendCustomizeFrameData&#39;</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-2">&#39;插入数据帧成功&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">warn</span><span class="hl-1">(</span><span class="hl-2">`插入数据帧失败`</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>
2642
2666
  </code></pre>
2643
2667
  <ul>
2644
2668
  <li>回放接口支持获取每个题目的数据帧情况(解析:questionsData内容 )</li>
2645
2669
  </ul>
2646
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">setSpinLoading</span><span class="hl-0">(</span><span class="hl-1">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> ...</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">PlaybackInfo</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-6">// 解析: questionsData 数据内容</span><br/><span class="hl-0"> </span><span class="hl-3">setQuestionsData</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">questionsData</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">total</span><span class="hl-0"> &gt; </span><span class="hl-17">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-3">setPlayable</span><span class="hl-0">(</span><span class="hl-1">true</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setPlaybackDuration</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">end</span><span class="hl-0"> - </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">start</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">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>
2670
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">setSpinLoading</span><span class="hl-1">(</span><span class="hl-4">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> ...</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">PlaybackInfo</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">// 解析: questionsData 数据内容</span><br/><span class="hl-1"> </span><span class="hl-6">setQuestionsData</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">questionsData</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">total</span><span class="hl-1"> &gt; </span><span class="hl-17">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-6">setPlayable</span><span class="hl-1">(</span><span class="hl-4">true</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setPlaybackDuration</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">end</span><span class="hl-1"> - </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">start</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">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>
2647
2671
  </code></pre>
2648
2672
 
2649
2673
  <a href="#修复-82" id="修复-82" style="color: inherit; text-decoration: none;">
@@ -2668,7 +2692,7 @@
2668
2692
  <h2>v0.9.40</h2>
2669
2693
  </a>
2670
2694
 
2671
- <a href="#新增-65" id="新增-65" style="color: inherit; text-decoration: none;">
2695
+ <a href="#新增-66" id="新增-66" style="color: inherit; text-decoration: none;">
2672
2696
  <h3>新增</h3>
2673
2697
  </a>
2674
2698
  <ul>
@@ -2689,15 +2713,15 @@
2689
2713
  <h2>v0.9.38</h2>
2690
2714
  </a>
2691
2715
 
2692
- <a href="#新增-66" id="新增-66" style="color: inherit; text-decoration: none;">
2716
+ <a href="#新增-67" id="新增-67" style="color: inherit; text-decoration: none;">
2693
2717
  <h3>新增</h3>
2694
2718
  </a>
2695
2719
  <ul>
2696
2720
  <li>添加保留文件不能删除的功能,使用方式:</li>
2697
2721
  </ul>
2698
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-6">// 1. 设置保留文件属性的接口</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0">?.</span><span class="hl-3">retainingAllFiles</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">status</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">success</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">message</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">messageBox</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-4">res</span><span class="hl-0">?.</span><span class="hl-4">message</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/>
2722
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">// 1. 设置保留文件属性的接口</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1">?.</span><span class="hl-6">retainingAllFiles</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">status</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">success</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">message</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">messageBox</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-7">res</span><span class="hl-1">?.</span><span class="hl-7">message</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/>
2699
2723
  </code></pre>
2700
- <pre><code class="language-js"><span class="hl-0"> </span><span class="hl-6">// 设置是否对保留文件进行处理</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">props:</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">disableFileAction:</span><span class="hl-0"> { </span><span class="hl-6">// 不是必填属性</span><br/><span class="hl-0"> </span><span class="hl-4">filesPath:</span><span class="hl-0"> [],</span><br/><span class="hl-0"> </span><span class="hl-4">isDisable:</span><span class="hl-0"> </span><span class="hl-1">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>
2724
+ <pre><code class="language-js"><span class="hl-1"> </span><span class="hl-3">// 设置是否对保留文件进行处理</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">props:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">disableFileAction:</span><span class="hl-1"> { </span><span class="hl-3">// 不是必填属性</span><br/><span class="hl-1"> </span><span class="hl-7">filesPath:</span><span class="hl-1"> [],</span><br/><span class="hl-1"> </span><span class="hl-7">isDisable:</span><span class="hl-1"> </span><span class="hl-4">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>
2701
2725
  </code></pre>
2702
2726
  <ul>
2703
2727
  <li>增加LSP真实可用的状态,真实运行中的状态由之前的running改为了lspReady</li>
@@ -2723,7 +2747,7 @@
2723
2747
  <li>重构打开指定文件接口,支持Promise形式调用,需要调用方自行捕获错误信息(reject错误)</li>
2724
2748
  </ul>
2725
2749
 
2726
- <a href="#新增-67" id="新增-67" style="color: inherit; text-decoration: none;">
2750
+ <a href="#新增-68" id="新增-68" style="color: inherit; text-decoration: none;">
2727
2751
  <h3>新增</h3>
2728
2752
  </a>
2729
2753
  <ul>
@@ -2761,13 +2785,13 @@
2761
2785
  <li>重构文件树更新逻辑,数据由全量更新修改为增量更新</li>
2762
2786
  </ul>
2763
2787
 
2764
- <a href="#新增-68" id="新增-68" style="color: inherit; text-decoration: none;">
2788
+ <a href="#新增-69" id="新增-69" style="color: inherit; text-decoration: none;">
2765
2789
  <h3>新增</h3>
2766
2790
  </a>
2767
2791
  <ul>
2768
2792
  <li>新增打开指定文件的接口,<code>openFile(filePath:string) =&gt; void</code>,<font color=red>注意:该路径是相对路径</font>,调用示例方式如下:</li>
2769
2793
  </ul>
2770
- <pre><code class="language-js"><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">daoPass</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPass</span><span class="hl-0">()</span><br/><span class="hl-0">...</span><br/><span class="hl-4">daoPass</span><span class="hl-0">.</span><span class="hl-3">openFile</span><span class="hl-0">(</span><span class="hl-5">&#39;path&#39;</span><span class="hl-0">)</span><br/><span class="hl-0">...</span>
2794
+ <pre><code class="language-js"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">daoPass</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPass</span><span class="hl-1">()</span><br/><span class="hl-1">...</span><br/><span class="hl-7">daoPass</span><span class="hl-1">.</span><span class="hl-6">openFile</span><span class="hl-1">(</span><span class="hl-2">&#39;path&#39;</span><span class="hl-1">)</span><br/><span class="hl-1">...</span>
2771
2795
  </code></pre>
2772
2796
  <ul>
2773
2797
  <li>切换文件再切回时,支持了<code>undo</code>,<code>redo</code>等操作</li>
@@ -2787,7 +2811,7 @@
2787
2811
  </a>
2788
2812
  <p>当前版本变更引用地址 (<a href="https://github.com/dao42/d42paas_frontend/commit/294ae84289180e2c94d2589d0e435a9f54e530a2">294ae84289180e2c94d2589d0e435a9f54e530a2</a>)</p>
2789
2813
 
2790
- <a href="#新增-69" id="新增-69" style="color: inherit; text-decoration: none;">
2814
+ <a href="#新增-70" id="新增-70" style="color: inherit; text-decoration: none;">
2791
2815
  <h3>新增</h3>
2792
2816
  </a>
2793
2817
  <ul>
@@ -2816,7 +2840,7 @@
2816
2840
  <li><strong>0.9.29:</strong> 当前版本变更引用地址 (<a href="https://github.com/dao42/d42paas_frontend/commit/8935c97f9c6c36cfa74a58f3eda12bf562184ebc">8935c97f9c6c36cfa74a58f3eda12bf562184ebc</a>)</li>
2817
2841
  </ul>
2818
2842
 
2819
- <a href="#优化-61" id="优化-61" style="color: inherit; text-decoration: none;">
2843
+ <a href="#优化-62" id="优化-62" style="color: inherit; text-decoration: none;">
2820
2844
  <h3>优化</h3>
2821
2845
  </a>
2822
2846
  <ul>
@@ -2832,7 +2856,7 @@
2832
2856
  <li><strong>0.9.28:</strong> 当前版本变更引用地址 (<a href="https://github.com/dao42/d42paas_frontend/commit/308f32e15f00c076b94dd679c2a22a09cb487215">308f32e15f00c076b94dd679c2a22a09cb487215</a>)</li>
2833
2857
  </ul>
2834
2858
 
2835
- <a href="#优化-62" id="优化-62" style="color: inherit; text-decoration: none;">
2859
+ <a href="#优化-63" id="优化-63" style="color: inherit; text-decoration: none;">
2836
2860
  <h3>优化</h3>
2837
2861
  </a>
2838
2862
  <ul>
@@ -2876,13 +2900,13 @@
2876
2900
  <a href="#第一步:定义接口" id="第一步:定义接口" style="color: inherit; text-decoration: none;">
2877
2901
  <h3>第一步:定义接口</h3>
2878
2902
  </a>
2879
- <pre><code class="language-ts"><span class="hl-6">/* </span><br/><span class="hl-6"> * 获取codeZone环境列表 </span><br/><span class="hl-6"> * @returns { {id: int, versionList: {id: string, name: string}[]}[] }</span><br/><span class="hl-6">*/</span><br/><span class="hl-16">export</span><span class="hl-0"> </span><span class="hl-1">async</span><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">getEnvironmentsApi</span><span class="hl-0">() {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">axios</span><span class="hl-0">.</span><span class="hl-3">get</span><span class="hl-0">(</span><span class="hl-5">&#39;/api/v1/sdk/environments&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> </span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">data</span><span class="hl-0"> </span><span class="hl-6">// 环境列表(数组)</span><br/><span class="hl-0">}</span><br/><span class="hl-6">/* </span><br/><span class="hl-6"> * 创建codeZone, 获取codeZoneId</span><br/><span class="hl-6"> * @param { string } environmentVerId 环境id</span><br/><span class="hl-6"> * @returns { string }</span><br/><span class="hl-6">*/</span><br/><span class="hl-1">async</span><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">getCodeZoneIdApi</span><span class="hl-0">(</span><span class="hl-4">environmentVerId</span><span class="hl-0">: </span><span class="hl-15">string</span><span class="hl-0">): </span><span class="hl-15">string</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">axios</span><span class="hl-0">.</span><span class="hl-3">post</span><span class="hl-0">(</span><span class="hl-5">&#39;/api/v1/sdk/codeZones&#39;</span><span class="hl-0">,{</span><span class="hl-4">environmentVerId</span><span class="hl-0">})</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> </span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">data</span><span class="hl-0">.</span><span class="hl-4">id</span><br/><span class="hl-0">}</span><br/><span class="hl-6">/* </span><br/><span class="hl-6"> * 通过 codeZoneId 获取 playgroundId</span><br/><span class="hl-6"> * @param { string } codeZoneId </span><br/><span class="hl-6"> * @returns { string }</span><br/><span class="hl-6">*/</span><br/><span class="hl-1">async</span><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">getPlaygroundIdApi</span><span class="hl-0">(</span><span class="hl-4">codeZoneId</span><span class="hl-0">: </span><span class="hl-15">string</span><span class="hl-0">): </span><span class="hl-15">string</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">axios</span><span class="hl-0">.</span><span class="hl-3">get</span><span class="hl-0">(</span><span class="hl-5">&#39;/api/v1/sdk/codeZones/&#39;</span><span class="hl-0">+</span><span class="hl-4">codeZoneId</span><span class="hl-0">+</span><span class="hl-5">&#39;/playground&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> </span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">data</span><span class="hl-0">.</span><span class="hl-4">id</span><br/><span class="hl-0">}</span><br/><span class="hl-6">/* </span><br/><span class="hl-6"> * 通过 playgroundId 获取 ticket</span><br/><span class="hl-6"> * @param { string } playgroundId </span><br/><span class="hl-6"> * @returns { string }</span><br/><span class="hl-6">*/</span><br/><span class="hl-1">async</span><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">getTicketApi</span><span class="hl-0">(</span><span class="hl-4">playgroundId</span><span class="hl-0">: </span><span class="hl-15">string</span><span class="hl-0">): </span><span class="hl-15">string</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">res</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-4">axios</span><span class="hl-0">.</span><span class="hl-3">post</span><span class="hl-0">(</span><span class="hl-5">&#39;/api/v1/sdk/ticket&#39;</span><span class="hl-0">, {</span><br/><span class="hl-0"> </span><span class="hl-4">playgroundId</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">tillTime:</span><span class="hl-0"> </span><span class="hl-15">Date</span><span class="hl-0">.</span><span class="hl-3">now</span><span class="hl-0">() + </span><span class="hl-17">12</span><span class="hl-0">*</span><span class="hl-17">60</span><span class="hl-0">*</span><span class="hl-17">60</span><span class="hl-0">*</span><span class="hl-17">1000</span><span class="hl-0">, </span><span class="hl-6">// 截止时间(时间戳)</span><br/><span class="hl-0"> </span><span class="hl-4">userInfo:</span><span class="hl-0"> {}, </span><span class="hl-6">// 数据格式请参考接口文档</span><br/><span class="hl-0"> })</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> </span><span class="hl-4">res</span><span class="hl-0">.</span><span class="hl-4">data</span><span class="hl-0">.</span><span class="hl-4">ticket</span><br/><span class="hl-0">}</span>
2903
+ <pre><code class="language-ts"><span class="hl-3">/* </span><br/><span class="hl-3"> * 获取codeZone环境列表 </span><br/><span class="hl-3"> * @returns { {id: int, versionList: {id: string, name: string}[]}[] }</span><br/><span class="hl-3">*/</span><br/><span class="hl-16">export</span><span class="hl-1"> </span><span class="hl-4">async</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">getEnvironmentsApi</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">axios</span><span class="hl-1">.</span><span class="hl-6">get</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/v1/sdk/environments&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">data</span><span class="hl-1"> </span><span class="hl-3">// 环境列表(数组)</span><br/><span class="hl-1">}</span><br/><span class="hl-3">/* </span><br/><span class="hl-3"> * 创建codeZone, 获取codeZoneId</span><br/><span class="hl-3"> * @param { string } environmentVerId 环境id</span><br/><span class="hl-3"> * @returns { string }</span><br/><span class="hl-3">*/</span><br/><span class="hl-4">async</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">getCodeZoneIdApi</span><span class="hl-1">(</span><span class="hl-7">environmentVerId</span><span class="hl-1">: </span><span class="hl-15">string</span><span class="hl-1">): </span><span class="hl-15">string</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">axios</span><span class="hl-1">.</span><span class="hl-6">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/v1/sdk/codeZones&#39;</span><span class="hl-1">,{</span><span class="hl-7">environmentVerId</span><span class="hl-1">})</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">data</span><span class="hl-1">.</span><span class="hl-7">id</span><br/><span class="hl-1">}</span><br/><span class="hl-3">/* </span><br/><span class="hl-3"> * 通过 codeZoneId 获取 playgroundId</span><br/><span class="hl-3"> * @param { string } codeZoneId </span><br/><span class="hl-3"> * @returns { string }</span><br/><span class="hl-3">*/</span><br/><span class="hl-4">async</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">getPlaygroundIdApi</span><span class="hl-1">(</span><span class="hl-7">codeZoneId</span><span class="hl-1">: </span><span class="hl-15">string</span><span class="hl-1">): </span><span class="hl-15">string</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">axios</span><span class="hl-1">.</span><span class="hl-6">get</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/v1/sdk/codeZones/&#39;</span><span class="hl-1">+</span><span class="hl-7">codeZoneId</span><span class="hl-1">+</span><span class="hl-2">&#39;/playground&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">data</span><span class="hl-1">.</span><span class="hl-7">id</span><br/><span class="hl-1">}</span><br/><span class="hl-3">/* </span><br/><span class="hl-3"> * 通过 playgroundId 获取 ticket</span><br/><span class="hl-3"> * @param { string } playgroundId </span><br/><span class="hl-3"> * @returns { string }</span><br/><span class="hl-3">*/</span><br/><span class="hl-4">async</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">getTicketApi</span><span class="hl-1">(</span><span class="hl-7">playgroundId</span><span class="hl-1">: </span><span class="hl-15">string</span><span class="hl-1">): </span><span class="hl-15">string</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-7">axios</span><span class="hl-1">.</span><span class="hl-6">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/v1/sdk/ticket&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-7">playgroundId</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">tillTime:</span><span class="hl-1"> </span><span class="hl-15">Date</span><span class="hl-1">.</span><span class="hl-6">now</span><span class="hl-1">() + </span><span class="hl-17">12</span><span class="hl-1">*</span><span class="hl-17">60</span><span class="hl-1">*</span><span class="hl-17">60</span><span class="hl-1">*</span><span class="hl-17">1000</span><span class="hl-1">, </span><span class="hl-3">// 截止时间(时间戳)</span><br/><span class="hl-1"> </span><span class="hl-7">userInfo:</span><span class="hl-1"> {}, </span><span class="hl-3">// 数据格式请参考接口文档</span><br/><span class="hl-1"> })</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> </span><span class="hl-7">res</span><span class="hl-1">.</span><span class="hl-7">data</span><span class="hl-1">.</span><span class="hl-7">ticket</span><br/><span class="hl-1">}</span>
2880
2904
  </code></pre>
2881
2905
 
2882
2906
  <a href="#第二步:封装逻辑" id="第二步:封装逻辑" style="color: inherit; text-decoration: none;">
2883
2907
  <h3>第二步:封装逻辑</h3>
2884
2908
  </a>
2885
- <pre><code class="language-ts"><span class="hl-6">// 通过调用 getEnvironmentsApi() 我们获取到了codeZone环境列表, 并渲染到页面上</span><br/><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">environments</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-3">getEnvironmentsApi</span><span class="hl-0">()</span><br/><span class="hl-6">// 假设用户点击了某一个环境,我们得到了一个具体的 environmentVerId</span><br/><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">environmentVerId</span><span class="hl-0"> = </span><span class="hl-4">environments</span><span class="hl-0">[</span><span class="hl-17">0</span><span class="hl-0">].</span><span class="hl-4">versionList</span><span class="hl-0">[</span><span class="hl-17">0</span><span class="hl-0">].</span><span class="hl-4">id</span><br/><span class="hl-6">// 封装获取ticket(票)逻辑</span><br/><span class="hl-16">export</span><span class="hl-0"> </span><span class="hl-1">async</span><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">handleGetTicket</span><span class="hl-0">(</span><span class="hl-4">environmentVerId</span><span class="hl-0">: </span><span class="hl-15">string</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">codeZoneId</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-3">getCodeZoneIdApi</span><span class="hl-0">(</span><span class="hl-4">environmentVerId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">playgroundId</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-3">getPlaygroundIdApi</span><span class="hl-0">(</span><span class="hl-4">codeZoneId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">ticket</span><span class="hl-0"> = </span><span class="hl-16">await</span><span class="hl-0"> </span><span class="hl-3">getTicketApi</span><span class="hl-0">(</span><span class="hl-4">playgroundId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> </span><span class="hl-4">ticket</span><br/><span class="hl-0">}</span>
2909
+ <pre><code class="language-ts"><span class="hl-3">// 通过调用 getEnvironmentsApi() 我们获取到了codeZone环境列表, 并渲染到页面上</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">environments</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-6">getEnvironmentsApi</span><span class="hl-1">()</span><br/><span class="hl-3">// 假设用户点击了某一个环境,我们得到了一个具体的 environmentVerId</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">environmentVerId</span><span class="hl-1"> = </span><span class="hl-7">environments</span><span class="hl-1">[</span><span class="hl-17">0</span><span class="hl-1">].</span><span class="hl-7">versionList</span><span class="hl-1">[</span><span class="hl-17">0</span><span class="hl-1">].</span><span class="hl-7">id</span><br/><span class="hl-3">// 封装获取ticket(票)逻辑</span><br/><span class="hl-16">export</span><span class="hl-1"> </span><span class="hl-4">async</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">handleGetTicket</span><span class="hl-1">(</span><span class="hl-7">environmentVerId</span><span class="hl-1">: </span><span class="hl-15">string</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">codeZoneId</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-6">getCodeZoneIdApi</span><span class="hl-1">(</span><span class="hl-7">environmentVerId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">playgroundId</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-6">getPlaygroundIdApi</span><span class="hl-1">(</span><span class="hl-7">codeZoneId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">ticket</span><span class="hl-1"> = </span><span class="hl-16">await</span><span class="hl-1"> </span><span class="hl-6">getTicketApi</span><span class="hl-1">(</span><span class="hl-7">playgroundId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> </span><span class="hl-7">ticket</span><br/><span class="hl-1">}</span>
2886
2910
  </code></pre>
2887
2911
 
2888
2912
  <a href="#part-two-在组件中使用" id="part-two-在组件中使用" style="color: inherit; text-decoration: none;">
@@ -2892,7 +2916,7 @@
2892
2916
  <a href="#第一步:引入sdk和样式" id="第一步:引入sdk和样式" style="color: inherit; text-decoration: none;">
2893
2917
  <h3>第一步:引入SDK和样式</h3>
2894
2918
  </a>
2895
- <pre><code class="language-ts"><span class="hl-16">import</span><span class="hl-0"> { </span><span class="hl-4">DaoPaaS</span><span class="hl-0">, </span><span class="hl-4">Messages</span><span class="hl-0"> } </span><span class="hl-16">from</span><span class="hl-0"> </span><span class="hl-5">&#39;DaoPaaS.cjs&#39;</span><span class="hl-0">;</span><br/><span class="hl-16">import</span><span class="hl-0"> </span><span class="hl-5">&#39;style.css&#39;</span><span class="hl-0"> </span>
2919
+ <pre><code class="language-ts"><span class="hl-16">import</span><span class="hl-1"> { </span><span class="hl-7">DaoPaaS</span><span class="hl-1">, </span><span class="hl-7">Messages</span><span class="hl-1"> } </span><span class="hl-16">from</span><span class="hl-1"> </span><span class="hl-2">&#39;DaoPaaS.cjs&#39;</span><span class="hl-1">;</span><br/><span class="hl-16">import</span><span class="hl-1"> </span><span class="hl-2">&#39;style.css&#39;</span><span class="hl-1"> </span>
2896
2920
  </code></pre>
2897
2921
 
2898
2922
  <a href="#第二步:初始化实例" id="第二步:初始化实例" style="color: inherit; text-decoration: none;">
@@ -2901,46 +2925,46 @@
2901
2925
  <ol>
2902
2926
  <li>创建实例</li>
2903
2927
  </ol>
2904
- <pre><code class="language-ts"><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;租户id&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">ticket:</span><span class="hl-0"> </span><span class="hl-5">&#39;动态获取的ticket&#39;</span><span class="hl-0">, </span><span class="hl-6">// ticket(票)</span><br/><span class="hl-0"> </span><span class="hl-4">userInfo:</span><span class="hl-0"> { </span><span class="hl-4">username:</span><span class="hl-0"> </span><span class="hl-5">&#39;用户名&#39;</span><span class="hl-0">}, </span><span class="hl-6">// 用户信息</span><br/><span class="hl-0">});</span>
2928
+ <pre><code class="language-ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;租户id&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">ticket:</span><span class="hl-1"> </span><span class="hl-2">&#39;动态获取的ticket&#39;</span><span class="hl-1">, </span><span class="hl-3">// ticket(票)</span><br/><span class="hl-1"> </span><span class="hl-7">userInfo:</span><span class="hl-1"> { </span><span class="hl-7">username:</span><span class="hl-1"> </span><span class="hl-2">&#39;用户名&#39;</span><span class="hl-1">}, </span><span class="hl-3">// 用户信息</span><br/><span class="hl-1">});</span>
2905
2929
  </code></pre>
2906
2930
  <ol start="2">
2907
2931
  <li>监听消息</li>
2908
2932
  </ol>
2909
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Ready</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;appStatus readyBasic&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;playgroundInfo状态&#39;</span><span class="hl-0">, </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;语法补全状态&#39;</span><span class="hl-0">, </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">lspStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;docker运行状态&#39;</span><span class="hl-0">, </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">runStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Online</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;网络已恢复&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setSpinLoading</span><span class="hl-0">(</span><span class="hl-1">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Offline</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;网络掉线&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">StatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;playground状态发生变化&#39;</span><span class="hl-0">, </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">PlaygroundChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;playground环境变了,比如换题&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">LspStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;Lsp状态发生变化&#39;</span><span class="hl-0">, </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">RunStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;docker运行状态变化&#39;</span><span class="hl-0">, </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">dockerStatus</span><span class="hl-0"> != </span><span class="hl-5">&#39;STOP&#39;</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0">;</span><br/><span class="hl-0"> } </span><span class="hl-16">else</span><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">runResult</span><span class="hl-0"> === </span><span class="hl-17">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">`运行结果成功`</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">`运行结果失败: </span><span class="hl-1">${</span><span class="hl-4">payload</span><span class="hl-18">.</span><span class="hl-4">runResult</span><span class="hl-1">}</span><span class="hl-5">`</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">});</span>
2933
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Ready</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;appStatus readyBasic&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;playgroundInfo状态&#39;</span><span class="hl-1">, </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;语法补全状态&#39;</span><span class="hl-1">, </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">lspStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;docker运行状态&#39;</span><span class="hl-1">, </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">runStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Online</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;网络已恢复&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setSpinLoading</span><span class="hl-1">(</span><span class="hl-4">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Offline</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;网络掉线&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">StatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;playground状态发生变化&#39;</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">PlaygroundChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;playground环境变了,比如换题&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">LspStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;Lsp状态发生变化&#39;</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">RunStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;docker运行状态变化&#39;</span><span class="hl-1">, </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">dockerStatus</span><span class="hl-1"> != </span><span class="hl-2">&#39;STOP&#39;</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1">;</span><br/><span class="hl-1"> } </span><span class="hl-16">else</span><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">runResult</span><span class="hl-1"> === </span><span class="hl-17">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">`运行结果成功`</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">`运行结果失败: </span><span class="hl-4">${</span><span class="hl-7">payload</span><span class="hl-18">.</span><span class="hl-7">runResult</span><span class="hl-4">}</span><span class="hl-2">`</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
2910
2934
  </code></pre>
2911
2935
  <ol start="3">
2912
2936
  <li>监听错误消息</li>
2913
2937
  </ol>
2914
- <pre><code class="language-ts"><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onError</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">error</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">ConnectionBroken</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;与服务器的连接中断,可以尝试连接到另一个服务器&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">AuthorizationFailed</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;授权失败,所以您需要再次登录或获得一个新的ticket&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;errorFromServer&#39;</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;与服务器的连接中断&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">});</span>
2938
+ <pre><code class="language-ts"><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onError</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">error</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">ConnectionBroken</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;与服务器的连接中断,可以尝试连接到另一个服务器&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">AuthorizationFailed</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;授权失败,所以您需要再次登录或获得一个新的ticket&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;errorFromServer&#39;</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;与服务器的连接中断&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
2915
2939
  </code></pre>
2916
2940
  <ol start="4">
2917
2941
  <li>把实例的组件挂载到dom节点</li>
2918
2942
  </ol>
2919
- <pre><code class="language-ts"><span class="hl-6">// container: 项目中真实节点的选择器, item: 要挂载的dao内部组件的名称</span><br/><span class="hl-6">// 这个方法运行后,会把item对应名称的dao内部组件挂载到container配置类名的dom节点上</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Browser&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.terminal-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Shell&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.console-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Console&#39;</span><span class="hl-0"> },</span><br/><span class="hl-0">]);</span>
2943
+ <pre><code class="language-ts"><span class="hl-3">// container: 项目中真实节点的选择器, item: 要挂载的dao内部组件的名称</span><br/><span class="hl-3">// 这个方法运行后,会把item对应名称的dao内部组件挂载到container配置类名的dom节点上</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Browser&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.terminal-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Shell&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.console-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Console&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1">]);</span>
2920
2944
  </code></pre>
2921
2945
  <ol start="5">
2922
2946
  <li>创建HTML标签</li>
2923
2947
  </ol>
2924
2948
  <p>运行<code>dao.mapRender([...])</code>方法后,会把dao内部组件渲染到对应的dom节点</p>
2925
- <pre><code class="language-html"><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-21">&quot;tree-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-21">&quot;editor-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-21">&quot;browser-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-21">&quot;console-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-21">&quot;terminal-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span>
2949
+ <pre><code class="language-html"><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-21">&quot;tree-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-21">&quot;editor-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-21">&quot;browser-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-21">&quot;console-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-21">&quot;terminal-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span>
2926
2950
  </code></pre>
2927
2951
 
2928
2952
  <a href="#第三步:销毁实例" id="第三步:销毁实例" style="color: inherit; text-decoration: none;">
2929
2953
  <h3>第三步:销毁实例</h3>
2930
2954
  </a>
2931
2955
  <p>在页面卸载的时候需要销毁dao实例和相关的缓存数据</p>
2932
- <pre><code class="language-ts"><span class="hl-3">useEffect</span><span class="hl-0">(() </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-6">// ...</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">dispose</span><span class="hl-0">()</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}, [])</span>
2956
+ <pre><code class="language-ts"><span class="hl-6">useEffect</span><span class="hl-1">(() </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// ...</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">dispose</span><span class="hl-1">()</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}, [])</span>
2933
2957
  </code></pre>
2934
2958
 
2935
2959
  <a href="#part-three-sdk部分其他方法" id="part-three-sdk部分其他方法" style="color: inherit; text-decoration: none;">
2936
2960
  <h2>PART-THREE SDK部分其他方法</h2>
2937
2961
  </a>
2938
- <pre><code class="language-ts"><span class="hl-6">// 配置是否在控制台开启DaoPaaS内部打印</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">loggerEnable</span><span class="hl-0">(</span><span class="hl-1">true</span><span class="hl-0">);</span><br/><span class="hl-6">// 修改主题</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">loadTheme</span><span class="hl-0">(</span><span class="hl-5">&#39;dark&#39;</span><span class="hl-0">)</span><br/><span class="hl-6">// 激活容器</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">activePlayground</span><span class="hl-0">()</span><br/><span class="hl-6">// 运行容器</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">runPlayground</span><span class="hl-0">()</span><br/><span class="hl-6">// 停止容器运行</span><br/><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">stopPlayground</span><span class="hl-0">()</span><br/><span class="hl-6">// ...</span>
2962
+ <pre><code class="language-ts"><span class="hl-3">// 配置是否在控制台开启DaoPaaS内部打印</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">loggerEnable</span><span class="hl-1">(</span><span class="hl-4">true</span><span class="hl-1">);</span><br/><span class="hl-3">// 修改主题</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">loadTheme</span><span class="hl-1">(</span><span class="hl-2">&#39;dark&#39;</span><span class="hl-1">)</span><br/><span class="hl-3">// 激活容器</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">activePlayground</span><span class="hl-1">()</span><br/><span class="hl-3">// 运行容器</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">runPlayground</span><span class="hl-1">()</span><br/><span class="hl-3">// 停止容器运行</span><br/><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">stopPlayground</span><span class="hl-1">()</span><br/><span class="hl-3">// ...</span>
2939
2963
  </code></pre>
2940
2964
 
2941
2965
  <a href="#part-four-基础案例" id="part-four-基础案例" style="color: inherit; text-decoration: none;">
2942
2966
  <h2>PART-FOUR 基础案例</h2>
2943
2967
  </a>
2944
- <pre><code class="language-tsx"><span class="hl-16">import</span><span class="hl-0"> </span><span class="hl-4">React</span><span class="hl-0">, { </span><span class="hl-4">useEffect</span><span class="hl-0">, </span><span class="hl-4">useState</span><span class="hl-0"> } </span><span class="hl-16">from</span><span class="hl-0"> </span><span class="hl-5">&#39;react&#39;</span><span class="hl-0">;</span><br/><span class="hl-16">import</span><span class="hl-0"> { </span><span class="hl-4">DaoPaaS</span><span class="hl-0">, </span><span class="hl-4">Messages</span><span class="hl-0"> } </span><span class="hl-16">from</span><span class="hl-0"> </span><span class="hl-5">&#39;~/DaoPaaS&#39;</span><span class="hl-0">;</span><br/><br/><span class="hl-1">enum</span><span class="hl-0"> </span><span class="hl-15">LspStatusEnum</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-2">NOT_SUPPORT</span><span class="hl-0"> = </span><span class="hl-5">&#39;notSupport&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">LOADING</span><span class="hl-0"> = </span><span class="hl-5">&#39;loading&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">RUNNING</span><span class="hl-0"> = </span><span class="hl-5">&#39;running&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-2">SHUTDOWN</span><span class="hl-0"> = </span><span class="hl-5">&#39;shutdown&#39;</span><span class="hl-0">,</span><br/><span class="hl-0">}</span><br/><br/><span class="hl-16">export</span><span class="hl-0"> </span><span class="hl-16">default</span><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">SimpleExample</span><span class="hl-0">({</span><span class="hl-4">environmentVerId</span><span class="hl-0">}) {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> [</span><span class="hl-2">daoPaasObj</span><span class="hl-0">, </span><span class="hl-2">setDaoPaasObj</span><span class="hl-0">] = </span><span class="hl-3">useState</span><span class="hl-0">&lt;</span><span class="hl-15">DaoPaaS</span><span class="hl-0"> | </span><span class="hl-15">null</span><span class="hl-0">&gt;(</span><span class="hl-1">null</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> [</span><span class="hl-2">playgroundStatus</span><span class="hl-0">, </span><span class="hl-2">setPlaygroundStatus</span><span class="hl-0">] =</span><br/><span class="hl-0"> </span><span class="hl-3">useState</span><span class="hl-0">&lt;</span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">&gt;(</span><span class="hl-5">&#39;EMPTY&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> [</span><span class="hl-2">dockerStatus</span><span class="hl-0">, </span><span class="hl-2">setDockerStatus</span><span class="hl-0">] = </span><span class="hl-3">useState</span><span class="hl-0">&lt;</span><span class="hl-15">DockerStatus</span><span class="hl-0">&gt;(</span><span class="hl-5">&#39;STOP&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> {</span><span class="hl-2">setLspStatus</span><span class="hl-0">, </span><span class="hl-2">LspStatusFC</span><span class="hl-0">} = </span><span class="hl-3">useLspStatus</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> [</span><span class="hl-2">remindVisible</span><span class="hl-0">, </span><span class="hl-2">setRemindVisible</span><span class="hl-0">] = </span><span class="hl-3">useState</span><span class="hl-0">(</span><span class="hl-1">false</span><span class="hl-0">);</span><br/><br/><span class="hl-0"> </span><span class="hl-6">// SDK初始化</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-3">initSDK</span><span class="hl-0"> = </span><span class="hl-1">async</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;开始连接运行环境...&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-6">// 获取ticket(票)</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">ticket</span><span class="hl-0"> = </span><span class="hl-3">handleGetTicket</span><span class="hl-0">(</span><span class="hl-4">environmentVerId</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-6">// 生成实例</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">dao</span><span class="hl-0"> = </span><span class="hl-1">new</span><span class="hl-0"> </span><span class="hl-3">DaoPaaS</span><span class="hl-0">({</span><br/><span class="hl-0"> </span><span class="hl-4">paasDomain:</span><span class="hl-0"> </span><span class="hl-5">&#39;www.1024paas.com&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">tenantId:</span><span class="hl-0"> </span><span class="hl-5">&#39;请输入租户id&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">ticket:</span><span class="hl-0"> </span><span class="hl-4">ticket</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">userInfo:</span><span class="hl-0"> { </span><span class="hl-4">username:</span><span class="hl-0"> </span><span class="hl-5">&quot;***&quot;</span><span class="hl-0"> },</span><br/><span class="hl-0"> });</span><br/><span class="hl-0"> </span><span class="hl-6">// 保存实例</span><br/><span class="hl-0"> </span><span class="hl-3">setDaoPaasObj</span><span class="hl-0">(</span><span class="hl-4">dao</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-6">// 监听消息</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onMessage</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">payload</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0">: </span><span class="hl-15">DockerStatus</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-1">let</span><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Ready</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;连接运行环境已经停止&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-3">setRemindVisible</span><span class="hl-0">(</span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0"> === </span><span class="hl-5">&#39;INACTIVE&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setPlaygroundStatus</span><span class="hl-0">(</span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setLspStatus</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">lspStatus</span><span class="hl-0"> </span><span class="hl-16">as</span><span class="hl-0"> </span><span class="hl-15">LspStatusEnum</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-3">setDockerStatus</span><span class="hl-0">(</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-4">playgroundInfo</span><span class="hl-0">.</span><span class="hl-4">runStatus</span><span class="hl-0"> </span><span class="hl-16">as</span><span class="hl-0"> </span><span class="hl-15">DockerStatus</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Online</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;网络已恢复&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;连接运行环境已经停止&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">Offline</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;网络掉线&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">StatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">status</span><span class="hl-0"> = </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">setRemindVisible</span><span class="hl-0">(</span><span class="hl-4">status</span><span class="hl-0"> === </span><span class="hl-5">&#39;INACTIVE&#39;</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-3">setPlaygroundStatus</span><span class="hl-0">(</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">PlaygroundChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-3">setRemindVisible</span><span class="hl-0">(</span><span class="hl-1">false</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">LspStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">lspStatus</span><span class="hl-0"> = </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">setLspStatus</span><span class="hl-0">(</span><span class="hl-4">lspStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">RunStatusChanged</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">dockerStatus</span><span class="hl-0"> = </span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">status</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-3">setDockerStatus</span><span class="hl-0">(</span><span class="hl-4">dockerStatus</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">dockerStatus</span><span class="hl-0"> != </span><span class="hl-5">&#39;STOP&#39;</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0">;</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">if</span><span class="hl-0"> (</span><span class="hl-4">payload</span><span class="hl-0">.</span><span class="hl-4">runResult</span><span class="hl-0"> === </span><span class="hl-17">0</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">`运行结果成功`</span><span class="hl-0">);</span><br/><span class="hl-0"> } </span><span class="hl-16">else</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">warn</span><span class="hl-0">(</span><span class="hl-5">`运行结果失败: </span><span class="hl-1">${</span><span class="hl-4">payload</span><span class="hl-18">.</span><span class="hl-4">runResult</span><span class="hl-1">}</span><span class="hl-5">`</span><span class="hl-0">);</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">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-6">// 监听报错消息</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">onError</span><span class="hl-0">((</span><span class="hl-4">message</span><span class="hl-0">: </span><span class="hl-15">Message</span><span class="hl-0">) </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> { </span><span class="hl-2">name</span><span class="hl-0">, </span><span class="hl-2">error</span><span class="hl-0"> } = </span><span class="hl-4">message</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">switch</span><span class="hl-0"> (</span><span class="hl-4">name</span><span class="hl-0">) {</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">ConnectionBroken</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-4">error</span><span class="hl-0">, </span><span class="hl-17">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-4">Messages</span><span class="hl-0">.</span><span class="hl-4">AuthorizationFailed</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-4">error</span><span class="hl-0">, </span><span class="hl-17">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">break</span><span class="hl-0">;</span><br/><span class="hl-0"> </span><span class="hl-16">case</span><span class="hl-0"> </span><span class="hl-5">&#39;errorFromServer&#39;</span><span class="hl-0">:</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">log</span><span class="hl-0">(</span><span class="hl-5">&#39;连接运行环境已经停止&#39;</span><span class="hl-0">)</span><br/><span class="hl-0"> </span><span class="hl-4">console</span><span class="hl-0">.</span><span class="hl-3">error</span><span class="hl-0">(</span><span class="hl-4">error</span><span class="hl-0">, </span><span class="hl-17">0</span><span class="hl-0">);</span><br/><span class="hl-0"> </span><span class="hl-16">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-6">// 挂载实例组件</span><br/><span class="hl-0"> </span><span class="hl-4">dao</span><span class="hl-0">.</span><span class="hl-3">mapRender</span><span class="hl-0">([</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.tree-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Tree&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.editor-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Editor&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.browser-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Browser&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.terminal-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#39;Shell&#39;</span><span class="hl-0">},</span><br/><span class="hl-0"> { </span><span class="hl-4">container:</span><span class="hl-0"> </span><span class="hl-5">&#39;.console-section&#39;</span><span class="hl-0">, </span><span class="hl-4">item:</span><span class="hl-0"> </span><span class="hl-5">&#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-6">// 语法补全连接状态</span><br/><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">useLspStatus</span><span class="hl-0">() {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> [</span><span class="hl-2">lspStatus</span><span class="hl-0">, </span><span class="hl-2">setLspStatus</span><span class="hl-0">] = </span><span class="hl-3">useState</span><span class="hl-0">&lt;</span><span class="hl-15">LspStatusEnum</span><span class="hl-0">&gt;(</span><br/><span class="hl-0"> </span><span class="hl-4">LspStatusEnum</span><span class="hl-0">.</span><span class="hl-2">LOADING</span><span class="hl-0">,</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> </span><span class="hl-1">function</span><span class="hl-0"> </span><span class="hl-3">LspStatusFC</span><span class="hl-0">() {</span><br/><span class="hl-0"> </span><span class="hl-1">const</span><span class="hl-0"> </span><span class="hl-2">textMap</span><span class="hl-0"> = {</span><br/><span class="hl-0"> </span><span class="hl-4">[LspStatusEnum.</span><span class="hl-2">NOT_SUPPORT</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;不支持&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[LspStatusEnum.</span><span class="hl-2">LOADING</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;连接中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[LspStatusEnum.</span><span class="hl-2">RUNNING</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;运行中&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">[LspStatusEnum.</span><span class="hl-2">SHUTDOWN</span><span class="hl-4">]:</span><span class="hl-0"> </span><span class="hl-5">&#39;已关闭&#39;</span><span class="hl-0">,</span><br/><span class="hl-0"> };</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> (</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><span class="hl-0"> 代码补全·(</span><span class="hl-1">{</span><span class="hl-4">textMap</span><span class="hl-18">[</span><span class="hl-4">lspStatus</span><span class="hl-18">]</span><span class="hl-1">}</span><span class="hl-0">)</span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> );</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-4">setLspStatus</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-4">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-3">useEffect</span><span class="hl-0">(() </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">initSDK</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-16">return</span><span class="hl-0"> () </span><span class="hl-1">=&gt;</span><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-6">// 在页面卸载的时候需要销毁实例和相关的缓存数据</span><br/><span class="hl-0"> </span><span class="hl-4">daoPaasObj</span><span class="hl-0"> &amp;&amp; </span><span class="hl-4">daoPaasObj</span><span class="hl-0">.</span><span class="hl-3">dispose</span><span class="hl-0">();</span><br/><span class="hl-0"> </span><span class="hl-3">setDaoPaasObj</span><span class="hl-0">(</span><span class="hl-1">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-16">return</span><span class="hl-0"> (</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;&gt;</span><br/><span class="hl-0"> </span><span class="hl-1">{</span><span class="hl-4">remindVisible</span><span class="hl-18"> </span><span class="hl-0">&amp;&amp;</span><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><br/><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-0">=</span><span class="hl-1">{</span><span class="hl-18">() </span><span class="hl-1">=&gt;</span><span class="hl-18"> {</span><br/><span class="hl-18"> </span><span class="hl-4">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-3">activePlayground</span><span class="hl-18">();</span><br/><span class="hl-18"> </span><span class="hl-3">setRemindVisible</span><span class="hl-18">(</span><span class="hl-1">false</span><span class="hl-18">);</span><br/><span class="hl-18"> }</span><span class="hl-1">}</span><br/><span class="hl-18"> </span><span class="hl-19">&gt;</span><br/><span class="hl-18"> 容器状态为失活,点击确认激活容器</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><span class="hl-1">}</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-15">LspStatusFC</span><span class="hl-0"> </span><span class="hl-19">/&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-1">{</span><span class="hl-4">playgroundStatus</span><span class="hl-18"> </span><span class="hl-0">!==</span><span class="hl-18"> </span><span class="hl-5">&#39;ACTIVE&#39;</span><span class="hl-18"> </span><span class="hl-0">?</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-0">=</span><span class="hl-1">{</span><span class="hl-18">() </span><span class="hl-1">=&gt;</span><span class="hl-18"> </span><span class="hl-4">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-3">activePlayground</span><span class="hl-18">() </span><span class="hl-1">}</span><span class="hl-19">&gt;</span><span class="hl-18">激活</span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> ) </span><span class="hl-0">:</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><span class="hl-18">已激活</span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> )</span><span class="hl-1">}</span><br/><span class="hl-0"> </span><span class="hl-1">{</span><span class="hl-4">dockerStatus</span><span class="hl-18"> </span><span class="hl-0">!==</span><span class="hl-18"> </span><span class="hl-5">&#39;RUNNING&#39;</span><span class="hl-18"> </span><span class="hl-0">?</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><br/><span class="hl-18"> </span><span class="hl-13">disabled</span><span class="hl-0">=</span><span class="hl-1">{</span><span class="hl-4">playgroundStatus</span><span class="hl-18"> </span><span class="hl-0">!==</span><span class="hl-18"> </span><span class="hl-5">&#39;ACTIVE&#39;</span><span class="hl-1">}</span><br/><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-0">=</span><span class="hl-1">{</span><span class="hl-18">() </span><span class="hl-1">=&gt;</span><span class="hl-18"> {</span><br/><span class="hl-18"> </span><span class="hl-4">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-3">runPlayground</span><span class="hl-18">();</span><br/><span class="hl-18"> }</span><span class="hl-1">}</span><br/><span class="hl-18"> </span><span class="hl-19">&gt;</span><br/><span class="hl-18"> 运行</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> ) </span><span class="hl-0">:</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><br/><span class="hl-18"> </span><span class="hl-13">disabled</span><span class="hl-0">=</span><span class="hl-1">{</span><span class="hl-4">playgroundStatus</span><span class="hl-18"> </span><span class="hl-0">!==</span><span class="hl-18"> </span><span class="hl-5">&#39;ACTIVE&#39;</span><span class="hl-1">}</span><br/><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-0">=</span><span class="hl-1">{</span><span class="hl-18">() </span><span class="hl-1">=&gt;</span><span class="hl-18"> </span><span class="hl-4">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-3">stopPlayground</span><span class="hl-18">()</span><span class="hl-1">}</span><br/><span class="hl-18"> </span><span class="hl-19">&gt;</span><br/><span class="hl-18"> 停止</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> )</span><span class="hl-1">}</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-5">&quot;tree-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-5">&quot;editor-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-5">&quot;browser-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-5">&quot;console-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-0"> </span><span class="hl-13">className</span><span class="hl-0">=</span><span class="hl-5">&quot;terminal-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-0"> </span><span class="hl-19">&lt;/&gt;</span><br/><span class="hl-0"> );</span><br/><span class="hl-0">}</span>
2968
+ <pre><code class="language-tsx"><span class="hl-16">import</span><span class="hl-1"> </span><span class="hl-7">React</span><span class="hl-1">, { </span><span class="hl-7">useEffect</span><span class="hl-1">, </span><span class="hl-7">useState</span><span class="hl-1"> } </span><span class="hl-16">from</span><span class="hl-1"> </span><span class="hl-2">&#39;react&#39;</span><span class="hl-1">;</span><br/><span class="hl-16">import</span><span class="hl-1"> { </span><span class="hl-7">DaoPaaS</span><span class="hl-1">, </span><span class="hl-7">Messages</span><span class="hl-1"> } </span><span class="hl-16">from</span><span class="hl-1"> </span><span class="hl-2">&#39;~/DaoPaaS&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">enum</span><span class="hl-1"> </span><span class="hl-15">LspStatusEnum</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">NOT_SUPPORT</span><span class="hl-1"> = </span><span class="hl-2">&#39;notSupport&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">LOADING</span><span class="hl-1"> = </span><span class="hl-2">&#39;loading&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">RUNNING</span><span class="hl-1"> = </span><span class="hl-2">&#39;running&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">SHUTDOWN</span><span class="hl-1"> = </span><span class="hl-2">&#39;shutdown&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-16">export</span><span class="hl-1"> </span><span class="hl-16">default</span><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">SimpleExample</span><span class="hl-1">({</span><span class="hl-7">environmentVerId</span><span class="hl-1">}) {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> [</span><span class="hl-5">daoPaasObj</span><span class="hl-1">, </span><span class="hl-5">setDaoPaasObj</span><span class="hl-1">] = </span><span class="hl-6">useState</span><span class="hl-1">&lt;</span><span class="hl-15">DaoPaaS</span><span class="hl-1"> | </span><span class="hl-15">null</span><span class="hl-1">&gt;(</span><span class="hl-4">null</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> [</span><span class="hl-5">playgroundStatus</span><span class="hl-1">, </span><span class="hl-5">setPlaygroundStatus</span><span class="hl-1">] =</span><br/><span class="hl-1"> </span><span class="hl-6">useState</span><span class="hl-1">&lt;</span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">&gt;(</span><span class="hl-2">&#39;EMPTY&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> [</span><span class="hl-5">dockerStatus</span><span class="hl-1">, </span><span class="hl-5">setDockerStatus</span><span class="hl-1">] = </span><span class="hl-6">useState</span><span class="hl-1">&lt;</span><span class="hl-15">DockerStatus</span><span class="hl-1">&gt;(</span><span class="hl-2">&#39;STOP&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> {</span><span class="hl-5">setLspStatus</span><span class="hl-1">, </span><span class="hl-5">LspStatusFC</span><span class="hl-1">} = </span><span class="hl-6">useLspStatus</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> [</span><span class="hl-5">remindVisible</span><span class="hl-1">, </span><span class="hl-5">setRemindVisible</span><span class="hl-1">] = </span><span class="hl-6">useState</span><span class="hl-1">(</span><span class="hl-4">false</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// SDK初始化</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-6">initSDK</span><span class="hl-1"> = </span><span class="hl-4">async</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;开始连接运行环境...&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-3">// 获取ticket(票)</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">ticket</span><span class="hl-1"> = </span><span class="hl-6">handleGetTicket</span><span class="hl-1">(</span><span class="hl-7">environmentVerId</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-3">// 生成实例</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">dao</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-6">DaoPaaS</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">paasDomain:</span><span class="hl-1"> </span><span class="hl-2">&#39;www.1024paas.com&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">tenantId:</span><span class="hl-1"> </span><span class="hl-2">&#39;请输入租户id&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">ticket:</span><span class="hl-1"> </span><span class="hl-7">ticket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">userInfo:</span><span class="hl-1"> { </span><span class="hl-7">username:</span><span class="hl-1"> </span><span class="hl-2">&quot;***&quot;</span><span class="hl-1"> },</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-3">// 保存实例</span><br/><span class="hl-1"> </span><span class="hl-6">setDaoPaasObj</span><span class="hl-1">(</span><span class="hl-7">dao</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">// 监听消息</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onMessage</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">payload</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1">: </span><span class="hl-15">PlaygroundStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1">: </span><span class="hl-15">DockerStatus</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">let</span><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1">: </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Ready</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;连接运行环境已经停止&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-6">setRemindVisible</span><span class="hl-1">(</span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1"> === </span><span class="hl-2">&#39;INACTIVE&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setPlaygroundStatus</span><span class="hl-1">(</span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setLspStatus</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">lspStatus</span><span class="hl-1"> </span><span class="hl-16">as</span><span class="hl-1"> </span><span class="hl-15">LspStatusEnum</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-6">setDockerStatus</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-7">playgroundInfo</span><span class="hl-1">.</span><span class="hl-7">runStatus</span><span class="hl-1"> </span><span class="hl-16">as</span><span class="hl-1"> </span><span class="hl-15">DockerStatus</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Online</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;网络已恢复&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;连接运行环境已经停止&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">Offline</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;网络掉线&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">StatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">status</span><span class="hl-1"> = </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">setRemindVisible</span><span class="hl-1">(</span><span class="hl-7">status</span><span class="hl-1"> === </span><span class="hl-2">&#39;INACTIVE&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">setPlaygroundStatus</span><span class="hl-1">(</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">PlaygroundChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-6">setRemindVisible</span><span class="hl-1">(</span><span class="hl-4">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">LspStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">lspStatus</span><span class="hl-1"> = </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">setLspStatus</span><span class="hl-1">(</span><span class="hl-7">lspStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">RunStatusChanged</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">dockerStatus</span><span class="hl-1"> = </span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">status</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">setDockerStatus</span><span class="hl-1">(</span><span class="hl-7">dockerStatus</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">dockerStatus</span><span class="hl-1"> != </span><span class="hl-2">&#39;STOP&#39;</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">if</span><span class="hl-1"> (</span><span class="hl-7">payload</span><span class="hl-1">.</span><span class="hl-7">runResult</span><span class="hl-1"> === </span><span class="hl-17">0</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">`运行结果成功`</span><span class="hl-1">);</span><br/><span class="hl-1"> } </span><span class="hl-16">else</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">warn</span><span class="hl-1">(</span><span class="hl-2">`运行结果失败: </span><span class="hl-4">${</span><span class="hl-7">payload</span><span class="hl-18">.</span><span class="hl-7">runResult</span><span class="hl-4">}</span><span class="hl-2">`</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">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-3">// 监听报错消息</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">onError</span><span class="hl-1">((</span><span class="hl-7">message</span><span class="hl-1">: </span><span class="hl-15">Message</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> { </span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">error</span><span class="hl-1"> } = </span><span class="hl-7">message</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">switch</span><span class="hl-1"> (</span><span class="hl-7">name</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">ConnectionBroken</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-7">error</span><span class="hl-1">, </span><span class="hl-17">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-7">Messages</span><span class="hl-1">.</span><span class="hl-7">AuthorizationFailed</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-7">error</span><span class="hl-1">, </span><span class="hl-17">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">break</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-16">case</span><span class="hl-1"> </span><span class="hl-2">&#39;errorFromServer&#39;</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">log</span><span class="hl-1">(</span><span class="hl-2">&#39;连接运行环境已经停止&#39;</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-7">console</span><span class="hl-1">.</span><span class="hl-6">error</span><span class="hl-1">(</span><span class="hl-7">error</span><span class="hl-1">, </span><span class="hl-17">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-16">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-3">// 挂载实例组件</span><br/><span class="hl-1"> </span><span class="hl-7">dao</span><span class="hl-1">.</span><span class="hl-6">mapRender</span><span class="hl-1">([</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.tree-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Tree&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.editor-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Editor&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.browser-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Browser&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.terminal-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#39;Shell&#39;</span><span class="hl-1">},</span><br/><span class="hl-1"> { </span><span class="hl-7">container:</span><span class="hl-1"> </span><span class="hl-2">&#39;.console-section&#39;</span><span class="hl-1">, </span><span class="hl-7">item:</span><span class="hl-1"> </span><span class="hl-2">&#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-3">// 语法补全连接状态</span><br/><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">useLspStatus</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> [</span><span class="hl-5">lspStatus</span><span class="hl-1">, </span><span class="hl-5">setLspStatus</span><span class="hl-1">] = </span><span class="hl-6">useState</span><span class="hl-1">&lt;</span><span class="hl-15">LspStatusEnum</span><span class="hl-1">&gt;(</span><br/><span class="hl-1"> </span><span class="hl-7">LspStatusEnum</span><span class="hl-1">.</span><span class="hl-5">LOADING</span><span class="hl-1">,</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-6">LspStatusFC</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">textMap</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-7">[LspStatusEnum.</span><span class="hl-5">NOT_SUPPORT</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;不支持&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[LspStatusEnum.</span><span class="hl-5">LOADING</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;连接中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[LspStatusEnum.</span><span class="hl-5">RUNNING</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;运行中&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">[LspStatusEnum.</span><span class="hl-5">SHUTDOWN</span><span class="hl-7">]:</span><span class="hl-1"> </span><span class="hl-2">&#39;已关闭&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> };</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><span class="hl-1"> 代码补全·(</span><span class="hl-4">{</span><span class="hl-7">textMap</span><span class="hl-18">[</span><span class="hl-7">lspStatus</span><span class="hl-18">]</span><span class="hl-4">}</span><span class="hl-1">)</span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> );</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">setLspStatus</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">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-6">useEffect</span><span class="hl-1">(() </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">initSDK</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-16">return</span><span class="hl-1"> () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// 在页面卸载的时候需要销毁实例和相关的缓存数据</span><br/><span class="hl-1"> </span><span class="hl-7">daoPaasObj</span><span class="hl-1"> &amp;&amp; </span><span class="hl-7">daoPaasObj</span><span class="hl-1">.</span><span class="hl-6">dispose</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-6">setDaoPaasObj</span><span class="hl-1">(</span><span class="hl-4">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-16">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;&gt;</span><br/><span class="hl-1"> </span><span class="hl-4">{</span><span class="hl-7">remindVisible</span><span class="hl-18"> </span><span class="hl-1">&amp;&amp;</span><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><br/><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-1">=</span><span class="hl-4">{</span><span class="hl-18">() </span><span class="hl-4">=&gt;</span><span class="hl-18"> {</span><br/><span class="hl-18"> </span><span class="hl-7">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-6">activePlayground</span><span class="hl-18">();</span><br/><span class="hl-18"> </span><span class="hl-6">setRemindVisible</span><span class="hl-18">(</span><span class="hl-4">false</span><span class="hl-18">);</span><br/><span class="hl-18"> }</span><span class="hl-4">}</span><br/><span class="hl-18"> </span><span class="hl-19">&gt;</span><br/><span class="hl-18"> 容器状态为失活,点击确认激活容器</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><span class="hl-4">}</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-15">LspStatusFC</span><span class="hl-1"> </span><span class="hl-19">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-4">{</span><span class="hl-7">playgroundStatus</span><span class="hl-18"> </span><span class="hl-1">!==</span><span class="hl-18"> </span><span class="hl-2">&#39;ACTIVE&#39;</span><span class="hl-18"> </span><span class="hl-1">?</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-1">=</span><span class="hl-4">{</span><span class="hl-18">() </span><span class="hl-4">=&gt;</span><span class="hl-18"> </span><span class="hl-7">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-6">activePlayground</span><span class="hl-18">() </span><span class="hl-4">}</span><span class="hl-19">&gt;</span><span class="hl-18">激活</span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> ) </span><span class="hl-1">:</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><span class="hl-18">已激活</span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> )</span><span class="hl-4">}</span><br/><span class="hl-1"> </span><span class="hl-4">{</span><span class="hl-7">dockerStatus</span><span class="hl-18"> </span><span class="hl-1">!==</span><span class="hl-18"> </span><span class="hl-2">&#39;RUNNING&#39;</span><span class="hl-18"> </span><span class="hl-1">?</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><br/><span class="hl-18"> </span><span class="hl-13">disabled</span><span class="hl-1">=</span><span class="hl-4">{</span><span class="hl-7">playgroundStatus</span><span class="hl-18"> </span><span class="hl-1">!==</span><span class="hl-18"> </span><span class="hl-2">&#39;ACTIVE&#39;</span><span class="hl-4">}</span><br/><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-1">=</span><span class="hl-4">{</span><span class="hl-18">() </span><span class="hl-4">=&gt;</span><span class="hl-18"> {</span><br/><span class="hl-18"> </span><span class="hl-7">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-6">runPlayground</span><span class="hl-18">();</span><br/><span class="hl-18"> }</span><span class="hl-4">}</span><br/><span class="hl-18"> </span><span class="hl-19">&gt;</span><br/><span class="hl-18"> 运行</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> ) </span><span class="hl-1">:</span><span class="hl-18"> (</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;</span><span class="hl-20">button</span><br/><span class="hl-18"> </span><span class="hl-13">disabled</span><span class="hl-1">=</span><span class="hl-4">{</span><span class="hl-7">playgroundStatus</span><span class="hl-18"> </span><span class="hl-1">!==</span><span class="hl-18"> </span><span class="hl-2">&#39;ACTIVE&#39;</span><span class="hl-4">}</span><br/><span class="hl-18"> </span><span class="hl-13">onClick</span><span class="hl-1">=</span><span class="hl-4">{</span><span class="hl-18">() </span><span class="hl-4">=&gt;</span><span class="hl-18"> </span><span class="hl-7">daoPaasObj</span><span class="hl-18">?.</span><span class="hl-6">stopPlayground</span><span class="hl-18">()</span><span class="hl-4">}</span><br/><span class="hl-18"> </span><span class="hl-19">&gt;</span><br/><span class="hl-18"> 停止</span><br/><span class="hl-18"> </span><span class="hl-19">&lt;/</span><span class="hl-20">button</span><span class="hl-19">&gt;</span><br/><span class="hl-18"> )</span><span class="hl-4">}</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-2">&quot;tree-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-2">&quot;editor-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-2">&quot;browser-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-2">&quot;console-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;</span><span class="hl-20">div</span><span class="hl-1"> </span><span class="hl-13">className</span><span class="hl-1">=</span><span class="hl-2">&quot;terminal-section&quot;</span><span class="hl-19">&gt;&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;/</span><span class="hl-20">div</span><span class="hl-19">&gt;</span><br/><span class="hl-1"> </span><span class="hl-19">&lt;/&gt;</span><br/><span class="hl-1"> );</span><br/><span class="hl-1">}</span>
2945
2969
  </code></pre>
2946
2970
  </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#ContextMenu" class="tsd-kind-icon">Context<wbr/>Menu</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ContextMenuItem" class="tsd-kind-icon">Context<wbr/>Menu<wbr/>Item</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>