适配新版,更新uToolsAPI文档

This commit is contained in:
fofolee 2020-05-02 10:25:12 +08:00
parent 9ffc481481
commit f8e55e028d
7347 changed files with 701 additions and 433 deletions

View File

@ -1,4 +1,4 @@
# 程序员手册 V1.0.3
# 程序员手册 V1.1.0
## 简介
@ -36,6 +36,11 @@
## 更新
### v1.1.0
- 适配新版uTools
- 更新`uToolsAPI`里的文档至最新版
### v1.0.3
- 增加收藏的功能,调用官方的`收藏`插件进行收藏,手册界面选择文本后按`S`键即可收藏

View File

@ -1,30 +0,0 @@
checkUpdate = () => {
let p = window.pluginInfo;
if (!utools.db.get(p.version)) {
$.get(p.publishPage, data => {
var re = new RegExp(`<title>\\[插件\\]\\[${p.pluginName} (.*?)\\](.*?) - 猿料<\\/title>`)
data = re.exec(data);
let lastVer = data[1],
desc = data[2];
if (lastVer > p.version) {
options = {
type: 'info',
title: '插件有可用更新',
icon: window.logo,
cancelId: 1,
message: `发现新版本 ${lastVer},是否前往更新?\n更新内容:\n${desc}`,
buttons: ['起驾', '朕知道了', '别再烦朕']
};
window.messageBox(options, index => {
if (index == 0) {
window.open(p.publishPage)
} else if (index == 2) {
utools.db.put({ _id: p.version, data: "pass" })
}
})
} else {
console.log('当前已是最新版本!');
}
})
}
}

View File

@ -1,88 +0,0 @@
<h2 id="事件"> 事件</h2>
<p>你可以根据需要事先定义好一些回调函数uTools会在事件产生时主动调用它们。</p>
<h3 id="onPluginReady(callback)">
<code>onPluginReady(callback)</code></h3>
<blockquote>
<p>当插件装载成功uTools将会主动调用这个方法生命周期内仅调用一次</p>
<p>注意:在此方法未被执行前,无法调用其他方法。</p>
</blockquote>
<h4 id="实例"> 实例</h4>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">onPluginReady</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'插件初始化完成'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
</div>
<ul>
<li><code>callback</code> Function</li>
</ul>
<h3 id="onPluginEnter(callback)">
<code>onPluginEnter(callback)</code></h3>
<blockquote>
<p>每当插件从后台进入到前台时uTools将会主动调用这个方法。</p>
</blockquote>
<h4 id="实例-2"> 实例</h4>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">onPluginEnter</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">{</span>code<span class="token punctuation">,</span> type<span class="token punctuation">,</span> payload<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'用户进入插件'</span><span class="token punctuation">,</span> code<span class="token punctuation">,</span> type<span class="token punctuation">,</span> payload<span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
</div>
<ul>
<li><code>callback</code> Function
<ul>
<li><code>Object</code>
<ul>
<li><code>code</code> String</li>
<li><code>type</code> String</li>
<li><code>payload</code> String/Object/Array</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="onPluginOut(callback)">
<code>onPluginOut(callback)</code></h3>
<blockquote>
<p>每当插件从前台进入到后台时uTools将会主动调用这个方法。</p>
</blockquote>
<h4 id="实例-3"> 实例</h4>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">onPluginOut</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'用户退出插件'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
</div>
<ul>
<li><code>callback</code> Function</li>
</ul>
<h3 id="onPluginDetach(callback)">
<code>onPluginDetach(callback)</code></h3>
<blockquote>
<p>用户对插件进行分离操作时uTools将会主动调用这个方法。</p>
</blockquote>
<h4 id="实例-4"> 实例</h4>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">onPluginDetach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'插件被分离'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
</div>
<ul>
<li><code>callback</code> Function</li>
</ul>
<h3 id="onDbPull(callback)">
<code>onDbPull(callback)</code></h3>
<blockquote>
<p>当此插件的数据在其他设备上被更改后同步到此设备时uTools将会主动调用这个方法必须在插件可视的情况下才会触发</p>
</blockquote>
<h4 id="实例-5"> 实例</h4>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">onDbPull</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'onDbPull'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
</div>
<ul>
<li><code>callback</code> Function</li>
</ul>

View File

@ -1,50 +0,0 @@
<h2 id="其他"> 其他</h2>
<h3 id="isHadPrivilege"> isHadPrivilege</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>该方法只适用于在<code>macOS</code>下执行用于判断uTools是否拥有辅助权限如果没有可以调用API方法<code>requestPrivilege</code>请求</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">isHadPrivilege</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="requestPrivilege">
requestPrivilege</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>该方法只适用于在<code>macOS</code>下执行,该方法调用后会弹出窗口向用户申请辅助权限。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">requestPrivilege</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="getPath"> getPath</h3>
<ul>
<li><code>name</code> String</li>
<li><code>返回</code> String</li>
</ul>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">getPath</span><span class="token punctuation">(</span><span class="token string">'temp'</span><span class="token punctuation">)</span>
</code></pre>
</div>
<p>你可以通过名称请求以下的路径:</p>
<ul>
<li><code>home</code> 用户的 home 文件夹(主目录)</li>
<li><code>appData</code> 当前用户的应用数据文件夹,默认对应:
<ul>
<li><code>%APPDATA%</code> Windows 中</li>
<li><code>~/Library/Application Support</code> macOS 中</li>
</ul>
</li>
<li><code>userData</code> 储存你应用程序设置文件的文件夹,默认是 appData 文件夹附加应用的名称</li>
<li><code>temp</code> 临时文件夹</li>
<li><code>exe</code> 当前的可执行文件</li>
<li><code>desktop</code> 当前用户的桌面文件夹</li>
<li><code>documents</code> 用户文档目录的路径</li>
<li><code>downloads</code> 用户下载目录的路径</li>
<li><code>music</code> 用户音乐目录的路径</li>
<li><code>pictures</code> 用户图片目录的路径</li>
<li><code>videos</code> 用户视频目录的路径</li>
<li><code>logs</code> 应用程序的日志文件夹</li>
</ul>
</div>

View File

@ -1,39 +0,0 @@
<h2 id="动态增减功能"> 动态增减功能</h2>
<p>很多时候,插件中会提供一些功能供用户进行个性化设置(例如:<code>网页快开</code>插件),这部分配置无法在<code>plugin.json</code>事先定义好,所以我们提供了以下方法对插件功能进行动态增减。
</p>
<h3 id="getFeatures"> getFeatures</h3>
<ul>
<li><code>返回</code> Array</li>
</ul>
<p>返回本插件所有动态增加的功能。</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token keyword">const</span> features <span class="token operator">=</span> utools<span class="token punctuation">.</span><span class="token function">getFeatures</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>features<span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="setFeature"> setFeature</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>为本插件动态新增某个功能。</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token keyword">const</span> featureConf <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token string">"code"</span><span class="token punctuation">:</span> <span class="token string">"hosts"</span><span class="token punctuation">,</span>
<span class="token string">"explain"</span><span class="token punctuation">:</span> <span class="token string">"hosts切换"</span><span class="token punctuation">,</span>
<span class="token string">"cmds"</span><span class="token punctuation">:</span><span class="token punctuation">[</span><span class="token string">"hosts"</span><span class="token punctuation">]</span>
<span class="token punctuation">}</span>
utools<span class="token punctuation">.</span><span class="token function">setFeature</span><span class="token punctuation">(</span>featureConf<span class="token punctuation">)</span>
</code></pre>
</div>
<blockquote>
<p>featrureConf 格式与<code>plugin.json</code>中配置的格式一致</p>
</blockquote>
<h3 id="removeFeature"> removeFeature</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>动态删除本插件的某个功能。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">removeFeature</span><span class="token punctuation">(</span>featureCode<span class="token punctuation">)</span>
</code></pre>
</div>

View File

@ -1,115 +0,0 @@
<h2 id="数据库-db"> 数据库(db)</h2>
<p>传统的B/S结构的程序中除了前端的开发之外可能还需要有一台服务器、一门后端语言和一个数据库来处理和存储用户数据这会带来很大的维护成本和可用性的问题。</p>
<p>uTools的很多插件就像是一个微型的应用程序总是会碰到一些数据需要持久化存储的场景为了解决这个问题我们整合并提供了一个nosql数据库系统它可以很方便的使用并在多个设备之间实现秒级同步。</p>
<h3 id="utools.db.put(Object)<">
utools.db.put(Object)</h3>
<ul>
<li><code>doc</code> Object</li>
<li><code>返回</code> Object</li>
</ul>
<p>执行该方法将会创建或更新数据库文档</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token comment">// 创建请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span>
data<span class="token punctuation">:</span> <span class="token string">"demo"</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token comment">// 返回</span>
<span class="token punctuation">{</span>id<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span> ok<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> rev<span class="token punctuation">:</span> <span class="token string">"1-05c9b92e6f24287dc1f4ec79d9a34fa8"</span><span class="token punctuation">}</span>
<span class="token comment">// 更新请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span>
data<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span>
_rev<span class="token punctuation">:</span> <span class="token string">"1-05c9b92e6f24287dc1f4ec79d9a34fa8"</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
</div>
<p><code>_id</code>代表这个文档在数据库中唯一值,如果值不存在,则会创建一个新的文档,如果值已经存在,则会进行更新。你可能已经注意到,返回对象中包含一个<code>rev</code>属性,这是代表此文档的版本,每次对文档进行更新时,都要带上最新的版本号,否则更新将失败。
</p>
<p>另外需要注意,每次更新时都要传入完整的文档数据,无法对单个字段进行更新。</p>
<h3 id="utools.db.get(string)">
utools.db.get(string)</h3>
<ul>
<li><code>id</code> String</li>
<li><code>返回</code> Object</li>
</ul>
<p>执行该方法将会根据文档ID获取数据</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token comment">// 请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token keyword">get</span><span class="token punctuation">(</span><span class="token string">"demo"</span><span class="token punctuation">)</span>
<span class="token comment">// 返回</span>
<span class="token punctuation">{</span>_id<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span> _rev<span class="token punctuation">:</span> <span class="token string">"3-9836c5c68af5aef618e17d615882942a"</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">}</span>
</code></pre>
</div>
<h3 id="utools.db.remove(string | Object)"> utools.db.remove(string | Object)</h3>
<ul>
<li><code>id</code> String | Object</li>
<li><code>返回</code> Object</li>
</ul>
<p>执行该方法将会删除数据库文档可以传入文档对象或文档id进行操作。</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token comment">// 请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span><span class="token string">"demo"</span><span class="token punctuation">)</span>
<span class="token comment">// 返回</span>
<span class="token punctuation">{</span>id<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span> ok<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> rev<span class="token punctuation">:</span> <span class="token string">"2-effe5dbc23dffc180d8411b23f3108fb"</span><span class="token punctuation">}</span>
</code></pre>
</div>
<h3 id="utools.db.bulkDocs(Array)">
utools.db.bulkDocs(Array)</h3>
<ul>
<li><code>docs</code> Array</li>
<li><code>返回</code> Array</li>
</ul>
<p>执行该方法将会批量更新数据库文档,传入需要更改的文档对象合并成数组进行批量更新。</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token comment">// 请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token function">bulkDocs</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo1"</span><span class="token punctuation">,</span>
data<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span>
_rev<span class="token punctuation">:</span> <span class="token string">"1-c8817a74e292eda4cba1a45924853af6"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo2"</span><span class="token punctuation">,</span>
data<span class="token punctuation">:</span> <span class="token string">"demo"</span><span class="token punctuation">,</span>
_rev<span class="token punctuation">:</span> <span class="token string">"1-f0399b42cc6123a9cc8503632ba7b3a7"</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token comment">// 返回</span>
<span class="token punctuation">[</span><span class="token punctuation">{</span>
id<span class="token punctuation">:</span> <span class="token string">"demo1"</span><span class="token punctuation">,</span> ok<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> rev<span class="token punctuation">:</span> <span class="token string">"2-7857b2801bc0303d2cc0bb82e8afd796"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
id<span class="token punctuation">:</span> <span class="token string">"demo2"</span><span class="token punctuation">,</span> ok<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> rev<span class="token punctuation">:</span> <span class="token string">"2-7857b2801bc0303d2cc0bb82e8afd796"</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span>
</code></pre>
</div>
<h3 id="utools.db.allDocs(String|Array)"> utools.db.allDocs(String|Array)</h3>
<ul>
<li><code>preKey</code> String | []</li>
<li><code>返回</code> Array</li>
</ul>
<p>执行该方法将会获取所有数据库文档如果传入字符串则会返回以字符串开头的文档也可以传入指定ID的数组不传入则为获取所有文档。</p>
<div class="language-js extra-class">
<pre class="language-js"><code><span class="token comment">// 根据preKey请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token function">allDocs</span><span class="token punctuation">(</span><span class="token string">"demo"</span><span class="token punctuation">)</span>
<span class="token comment">// 返回</span>
<span class="token punctuation">[</span><span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo/123"</span><span class="token punctuation">,</span> _rev<span class="token punctuation">:</span> <span class="token string">"2-7857b2801bc0303d2cc0bb82e8afd796"</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token string">"demo"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo/124"</span><span class="token punctuation">,</span> _rev<span class="token punctuation">:</span> <span class="token string">"1-f0399b42cc6123a9cc8503632ba7b3a7"</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token string">"demo"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo/125"</span><span class="token punctuation">,</span> _rev<span class="token punctuation">:</span> <span class="token string">"1-f0399b42cc6123a9cc8503632ba7b3a7"</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token string">"demo"</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span>
<span class="token comment">// 根据id数组请求</span>
utools<span class="token punctuation">.</span>db<span class="token punctuation">.</span><span class="token function">allDocs</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
<span class="token string">"demo1"</span><span class="token punctuation">,</span>
<span class="token string">"demo2"</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token comment">// 返回</span>
<span class="token punctuation">[</span><span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo1"</span><span class="token punctuation">,</span> _rev<span class="token punctuation">:</span> <span class="token string">"2-7857b2801bc0303d2cc0bb82e8afd796"</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token string">"demo"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
_id<span class="token punctuation">:</span> <span class="token string">"demo2"</span><span class="token punctuation">,</span> _rev<span class="token punctuation">:</span> <span class="token string">"1-f0399b42cc6123a9cc8503632ba7b3a7"</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token string">"demo"</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span>
</code></pre>
</div>

View File

@ -1,93 +0,0 @@
<h2 id="窗口管理"> 窗口管理</h2>
<h3 id="hideMainWindow"> hideMainWindow</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>执行该方法将会隐藏uTools主窗口包括此时正在主窗口运行的插件分离的插件不会被隐藏。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">hideMainWindow</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="showMainWindow"> showMainWindow</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>执行该方法将会显示uTools主窗口包括此时正在主窗口运行的插件。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">showMainWindow</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="setExpendHeight"> setExpendHeight
</h3>
<ul>
<li><code>height</code> Integer</li>
<li><code>返回</code> Boolean</li>
</ul>
<p>执行该方法将会修改插件窗口的高度。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">setExpendHeight</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="setSubInput"> setSubInput</h3>
<ul>
<li><code>onChange</code> Function
<ul>
<li><code>Object</code>
<ul>
<li><code>text</code> String</li>
</ul>
</li>
</ul>
</li>
<li><code>placeholder</code> String(可选)</li>
<li><code>返回</code> Boolean</li>
</ul>
<p>设置子输入框进入插件后原本uTools的搜索条主输入框将会变成子输入框设置完子输入框搜索条子输入框可以为插件所使用。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">setSubInput</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">{</span>text<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>text<span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">'网页搜索,回车打开'</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="removeSubInput"> removeSubInput</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>移出先前设置的子输入框,在插件切换到其他页面时可以重新设置子输入框为其所用。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">removeSubInput</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="setSubInputValue">
setSubInputValue</h3>
<ul>
<li><code>value</code> String</li>
<li><code>返回</code> Boolean</li>
</ul>
<p>直接对子输入框的值进行设置。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">setSubInputValue</span><span class="token punctuation">(</span><span class="token string">'uTools'</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="outPlugin"> outPlugin</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>执行该方法将会退出当前插件。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">outPlugin</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre>
</div>
<h3 id="showNotification">
showNotification</h3>
<ul>
<li><code>返回</code> Boolean</li>
</ul>
<p>执行该方法将会弹出一个系统通知。</p>
<div class="language-js extra-class">
<pre class="language-js"><code>utools<span class="token punctuation">.</span><span class="token function">showNotification</span><span class="token punctuation">(</span>body<span class="token punctuation">,</span> clickFeatureCode <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">,</span> silent <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">)</span>
<span class="token operator">-</span> body 显示的内容
<span class="token operator">-</span> clickFeatureCode 用户点击系统通知时uTools将会使用此<span class="token template-string"><span class="token string">`code`</span></span>进入插件
<span class="token operator">-</span> silent 是否播放声音
</code></pre>
</div>

View File

@ -1 +0,0 @@
[{"name":"onPluginReady(callback)","type":"事件","path":"utools/事件.html#onPluginReady(callback)","desc":"当插件装载成功uTools将会主动调用这个方法生命周期内仅调用一次"},{"name":"onPluginEnter(callback)","type":"事件","path":"utools/事件.html#onPluginEnter(callback)","desc":"每当插件从后台进入到前台时uTools将会主动调用这个方法"},{"name":"onPluginOut(callback)","type":"事件","path":"utools/事件.html#onPluginOut(callback)","desc":"每当插件从前台进入到后台时uTools将会主动调用这个方法"},{"name":"onPluginDetach(callback)","type":"事件","path":"utools/事件.html#onPluginDetach(callback)","desc":"用户对插件进行分离操作时uTools将会主动调用这个方法"},{"name":"onDbPull(callback)","type":"事件","path":"utools/事件.html#onDbPull(callback)","desc":"当此插件的数据在其他设备上被更改后同步到此设备时uTools将会主动调用这个方法必须在插件可视的情况下才会触发"},{"name":"utools.db.put(Object)","type":"数据库","path":"utools/数据库.html#utools.db.put(Object)","desc":"执行该方法将会创建或更新数据库文档"},{"name":"utools.db.get(string)","type":"数据库","path":"utools/数据库.html#utools.db.get(string)","desc":"执行该方法将会根据文档ID获取数据"},{"name":"utools.db.remove(string | Object)","type":"数据库","path":"utools/数据库.html#utools.db.remove(string | Object)","desc":"执行该方法将会删除数据库文档可以传入文档对象或文档id进行操作"},{"name":"utools.db.bulkDocs(Array)","type":"数据库","path":"utools/数据库.html#utools.db.bulkDocs(Array)","desc":"执行该方法将会批量更新数据库文档,传入需要更改的文档对象合并成数组进行批量更新"},{"name":"utools.db.allDocs(String|Array)","type":"数据库","path":"utools/数据库.html#utools.db.allDocs(String|Array)","desc":"执行该方法将会获取所有数据库文档如果传入字符串则会返回以字符串开头的文档也可以传入指定ID的数组不传入则为获取所有文档"},{"name":"hideMainWindow","type":"窗口管理","path":"utools/窗口管理.html#hideMainWindow","desc":"执行该方法将会隐藏uTools主窗口包括此时正在主窗口运行的插件分离的插件不会被隐藏"},{"name":"showMainWindow","type":"窗口管理","path":"utools/窗口管理.html#showMainWindow","desc":"执行该方法将会显示uTools主窗口包括此时正在主窗口运行的插件"},{"name":"setExpendHeight","type":"窗口管理","path":"utools/窗口管理.html#setExpendHeight","desc":"执行该方法将会修改插件窗口的高度"},{"name":"setSubInput","type":"窗口管理","path":"utools/窗口管理.html#setSubInput","desc":"设置子输入框进入插件后原本uTools的搜索条主输入框将会变成子输入框设置完子输入框搜索条子输入框可以为插件所使用"},{"name":"removeSubInput","type":"窗口管理","path":"utools/窗口管理.html#removeSubInput","desc":"移出先前设置的子输入框,在插件切换到其他页面时可以重新设置子输入框为其所用"},{"name":"setSubInputValue","type":"窗口管理","path":"utools/窗口管理.html#setSubInputValue","desc":"直接对子输入框的值进行设置"},{"name":"outPlugin","type":"窗口管理","path":"utools/窗口管理.html#outPlugin","desc":"执行该方法将会退出当前插件"},{"name":"showNotification","type":"窗口管理","path":"utools/窗口管理.html#showNotification","desc":"执行该方法将会弹出一个系统通知"},{"name":"getFeatures","type":"动态增减功能","path":"utools/动态增减功能.html#getFeatures","desc":"很多时候插件中会提供一些功能供用户进行个性化设置例如网页快开插件这部分配置无法在plugin.json事先定义好所以我们提供了以下方法对插件功能进行动态增减"},{"name":"setFeature","type":"动态增减功能","path":"utools/动态增减功能.html#setFeature","desc":"返回本插件所有动态增加的功能"},{"name":"removeFeature","type":"动态增减功能","path":"utools/动态增减功能.html#removeFeature","desc":"为本插件动态新增某个功能"},{"name":"isHadPrivilege","type":"其他","path":"utools/其他.html#isHadPrivilege","desc":"该方法只适用于在macOS下执行用于判断uTools是否拥有辅助权限如果没有可以调用API方法requestPrivilege请求"},{"name":"requestPrivilege","type":"其他","path":"utools/其他.html#requestPrivilege","desc":"该方法只适用于在macOS下执行该方法调用后会弹出窗口向用户申请辅助权限"},{"name":"getPath","type":"其他","path":"utools/其他.html#getPath","desc":"返回系统的特殊路径"}]

244
src/README.md Normal file
View File

@ -0,0 +1,244 @@
# 程序员手册 V1.1.0
## 简介
内置了十多个实用的离线中文手册包括Linux、PHP、Python、JS等,以及提供了搜索devdocs、dash/zeal上的文档的功能
手册具有以下三个特色:
- 内置多个手册均可离线使用且90%以上是中文
- 可以自行添加手册
- 可以查询devdocs、dash/zeal上的文档
前身是之前发布的两个插件:
[PHP函数查询助手](https://yuanliao.info/d/329) [Linux命令查询手册](https://yuanliao.info/d/336)
## 基本操作
- 列表界面:
- 查看选中的内容 `⏎`/`🖱左键`
- 发送选中的内容至上一个活动窗口 `⇪ + ⏎`/`🖱中键`
- 上下选择 `⇧`/`⇩`
- 手册界面:
- 切换列表和手册视图 `tab`/`🖱右键`
- 发送选中的内容至上一个活动窗口 `⇪ + ⏎`/`🖱中键`
- 搜索下一个关键词 `⏎`
- 选中文本后翻译 `T`
- 选中文本后收藏 `S`
- 退出插件 `esc`
## 关键字
- `手册设置`/`ManualOptions` 调整程序员手册的功能
- `dash`/`zeal` 打开dash 或 zeal 进行搜索
- `linux命令` `php函数` `python库` `C函数` `vim命令` `git命令` `docker命令` `sql手册` `uToolsAPI`
## 更新
### v1.1.0
- 适配新版uTools
- 更新`uToolsAPI`里的文档至最新版
### v1.0.3
- 增加收藏的功能,调用官方的`收藏`插件进行收藏,手册界面选择文本后按`S`键即可收藏
- 调整划词翻译功能的UI
- 更新列表界面和手册界面子输入框内的说明,提示各个快捷键的功能
- 修复一个BUG该BUG会导致第一次载入插件时无法调用`dash``zeal`的文档,以及在设置手册时搜索关键字后无法跳转
![1.gif](https://user-gold-cdn.xitu.io/2020/4/5/17145ebc2700a7a6?w=804&h=611&f=gif&s=531752)
### v1.0.2
- 增加划词翻译的功能,调用有道的英译中的接口。手册界面选中文本后按`T`键即可翻译
### v1.0.1
- 一些bug修复、、
### v1.0.0
- 上架 uTools 插件商店,算是正式版了,去除了内置的插件更新提示
- 修复两个滚动事件引起的BUG
- (~~似乎~~)修复了mac下退出后再次进入无法触发鼠标单击事件的BUG
- 修复`payload.json`文件会被某些杀毒软件误报的情况,现在已做加密处理
### v0.0.4
抱歉由于这段时间私事太多,插件疏于更新。感谢@Xinu在插件无法使用的时候帮忙发布了修复版本
- 修复了uTools更新后进入插件空白的BUG
- 添加Linux支持
- 修复了退出手册后再次进入无法搜索的BUG但是MacOS下任然存在一个诡异的BUG退出后再次进入无法触发鼠标单击事件建议勾选**隐藏即完全退出**选项windows不受影响
- 修复了添加外置手册时使用多关键词会出现问题的BUG
- 现在外置的Java手册有图标了
### v0.0.3
又有一大波更新来袭
先做一个名词解释,本文中所提及的
**手册界面**为:
![UTOOLS1557242800409.png](https://i.loli.net/2019/05/07/5cd1a3b058870.png)
**列表界面**为:
![UTOOLS1557242777511.png](https://i.loli.net/2019/05/07/5cd1a399a2c46.png)
##### 功能更新
- 添加了快速将内容发送至活动窗口的功能,在列表界面按`shift+enter`或鼠标中键即可将选中的函数名称发送至上一个系统的活动窗口,在手册界面,选中相关文本内容后,按`shift+enter`或鼠标中键即可发送。查完api后再也不用慢悠悠地手动复制函数了~~
- 集成了`devdocs`,在`手册设置`页面,点击下方的英文手册按钮即可进入`devdocs`的配置页面
![UTOOLS1557237205596.png](https://i.loli.net/2019/05/07/5cd18dd58ced8.png)
需要先在该页面点击下载按钮下载相应的文档目录,之后便可和内置手册一样使用
![UTOOLS1557240920471.png](https://i.loli.net/2019/05/07/5cd19c58614cd.png)
![UTOOLS1557240455149.png](https://i.loli.net/2019/05/07/5cd19a8732d26.png)
![UTOOLS1557240886582.png](https://i.loli.net/2019/05/07/5cd19c3659474.png)
需要注意的是`devdocs`所有文档的`api`列表中均无中文注释,且只有目录文件是离线存储的,访问具体的手册页面需要联网
- 现在`手册设置`页面可以在顶端输入框内搜索快速查找需要的文档
- 添加快速启动`dash`或者`zeal`的功能,通过关键字`dash`即可进入
![UTOOLS1557241588196.png](https://i.loli.net/2019/05/07/5cd19ef3eba37.png)
注意,不同于`devdocs`,最后会根据查询内容调用`dash`或者`zeal`进行查看,故需要先安装`dash`或者`zeal`才可以使用此功能
- 添加了多关键词查找的功能,现在想怎么搜就怎么搜~
![UTOOLS1557241948612.png](https://i.loli.net/2019/05/07/5cd1a05ca1521.png)
- 添加了一个内置手册`PyQt5`,同时在内置的`python`手册中添加了多个`tkinter`的实例
添加了一个内置手册`payload`,收录了一些网络安全测试的常用`payload`,没有手册页面,主要配合新出的发送文本到窗口的功能,实现快速输入`payload`,目前收录的比较少,后续会陆续补充
![UTOOLS1557242094634.png](https://i.loli.net/2019/05/07/5cd1a0ee86d07.png)
- 增加外置手册时,如需自定义`css`,不再是添加单个`css`文件,而是统一放入`assets`目录中,相关外置手册说明同步更新
##### 用户体验改善
- 当在列表界面进行搜索后,点击进入手册界面,会清空顶端输入框内的值
- 在某些情况下(例如读取外置手册失败时)会输出一些报错信息
##### bug修复
- 修复了添加外置手册后滚动条没有调整的bug以及某些时候滚动条未自动调整的bug
- 修复检测更新功能中,即使点了不再提醒,下次重启`uTools`时仍会再次出现的bug
##### 本项目现已在Github开源地址见下载一栏欢迎提交pr大家一同完善本项目如果喜欢也请不吝star~
### v0.0.2
##### 功能更新
- 增加外置手册的功能,需要有一定的编写爬虫脚本的能力,详情[戳我](https://yuanliao.info/d/356/27)
![Snipaste_2019-04-20_10-45-20.png](https://i.loli.net/2019/04/20/5cba8859b3a66.png)
![Snipaste_2019-04-20_10-46-11.png](https://i.loli.net/2019/04/20/5cba8863a5266.png)
- 增加了三个内置手册`javascript`,`jQuery`,`vue`,一个外置手册`Java`。由于`Java`体积太大目录10M手册100M+),会使整个插件体积暴增,故采取外置形式,同时也作为外置手册的一个案例作为参考。
- 增加了版本检测的功能,当有新版本时会弹窗提示
![Snipaste_2019-04-20_14-04-40.png](https://i.loli.net/2019/04/20/5cbab6a27136e.png)
- 在设置页面增加了两个功能键`全部启用``全部禁用`
##### 用户体验改善
- 优化搜索结果的排序,现在的排序规则是,置顶全字匹配的内容,优先显示名称匹配的内容,其次显示描述匹配的内容
![Snipaste_2019-04-19_21-58-45.png](https://i.loli.net/2019/04/19/5cb9d4282b7a1.png)
- 滚动条样式调整,现在滚动条会自动隐藏,并在滚动时和鼠标移至滚动条位置时出现
- 设置页面的开关样式调整,现在开关的状态更加清晰明了
- linux、C等语言的手册现在支持语法高亮了
- 其他一些界面微调
##### BUG修复
- 修复了第一次进入插件时、列表更新时、方向键选择列表时鼠标所在位置会被选中的BUG
- 修复了方向键进行列表选择时没有到最后一行就向下滚动的BUG
### v0.0.1
相较于之前两版,做了比较大的更新:
- 整合所有手册到一个插件当中,现在有多达**九个**语言或工具的手册
- 添加了一个配置页面,可以选择需要启动的功能(注:默认情况下所有手册均未启用,需要先通过`手册设置`命令进行配置)
![Snipaste_2019-04-08_20-46-17.png](https://i.loli.net/2019/04/08/5cab4e92369df.png)
- 支持直接在`uTools`主输入框进行快速搜索查询或复制文本后5s内呼出`uTools`),可在配置页面选择开启
![Snipaste_2019-04-08_20-47-13.png](https://i.loli.net/2019/04/08/5cab4f6fac77e.png)
- 子输入框功能增强。
在**列表界面**用来搜索函数/命令,并高亮匹配文本
![Snipaste_2019-04-08_20-50-09.png](https://i.loli.net/2019/04/08/5cab4f9789d08.png)
在**手册界面**则可以进行当前文档内容的搜索(回车键跳转到匹配文本位置)
![Snipaste_2019-04-08_21-10-30.png](https://i.loli.net/2019/04/08/5cab4fa84d2ac.png)
- 添加了一个快捷键`TAB`,以在列表界面和手册界面之间进行切换
- 现在支持点击手册里的外部链接跳转到相应网址(通过默认浏览器打开,之前并不支持,不知道你们发现没~~
- 界面微调
- 一些BUG修复
## 其他预览
![Snipaste_2019-04-06_03-00-13.png](https://i.loli.net/2019/04/06/5ca7a6e44d6af.png)
![Snipaste_2019-04-08_21-32-28.png](https://i.loli.net/2019/04/08/5cab4d73b0c8e.png)
![Snipaste_2019-04-06_03-01-12.png](https://i.loli.net/2019/04/06/5ca7a6f7bcdf4.png)
![Snipaste_2019-04-08_21-29-49.png](https://i.loli.net/2019/04/08/5cab4d354abe7.png)
![Snipaste_2019-04-08_21-31-23.png](https://i.loli.net/2019/04/08/5cab4d4b93e34.png)
## 安装
请直接在插件中心进行安装即可,或将本项目打包成`upx`安装
[项目地址](https://github.com/fofolee/uTools-Manuals)
[插件发布页](https://yuanliao.info/d/356)
[外置手册教程](https://yuanliao.info/d/356/27)
## 手册一览
所有手册资源均来自网络,如有遗漏,请留言告知
- php手册 | [官方中文文档](https://www.php.net/download-docs.php)
- linux手册 | [离线手册linux-command@jaywcjlove](https://github.com/jaywcjlove/linux-command) [原始数据linuxde.net](http://man.linuxde.net/)
- python手册 | [官方文档一译翻译版](https://yiyibooks.cn/xx/python_352/library/index.html)
- beautifulSoup | [官方中文文档](https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html)
- requests | [官方中文文档](https://2.python-requests.org//zh_CN/latest/user/quickstart.html)
- scrapy | [scrapy入门教程中文翻译](https://github.com/marchtea/scrapy_doc_chs)
- pillow | [pillow官方文档中文翻译](https://pillow-cn.readthedocs.io/zh_CN/latest/)
- tkinter | [易学教程](https://www.e-learn.cn/content/python/1101684)
- PyQt5文档 | [PyQt5中文教程](https://github.com/maicss/PyQt5-Chinese-tutorial)
- C函数 | C语言函数速查Knocker 2004.7.7 版本 0.5
- vim命令 | [awesome-cheatsheets](https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt)
- git命令 | [php中文网git开发手册](http://www.php.cn/manual/view/34942.html)
- sql手册 | [php中文网sql参考手册](http://www.php.cn/manual/view/21301.html)
- uTools API | [uTools官方文档](https://u.tools/docs/developer/api.html)
- java | [fondme.cn](https://blog.fondme.cn/apidoc/jdk-1.8-google/)
- javascript | [MDN Web Docs](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Index)
- jQuery | [jQuery中文网](https://www.jquery123.com/)
- vue | [官方中文文档](https://cn.vuejs.org/v2/api/)
- payload | 收集自网络
- devdocs | [devdocs](https://devdocs.io/)

View File

@ -225,7 +225,7 @@ $("#options").on('click', '.saveBtn', async function () {
var allFts = await getManuals();
if (code in allFts && $("#code").prop('disabled') == false) {
$('#code').css({ 'border-bottom-color': '#ec1212' })
window.messageBox({ type: 'error', icon: window.logo, message: "名称与现有的手册重复!", buttons: ['朕知道了'] })
Swal.fire({ icon: 'error', text: '名称与现有的手册重复!!', })
} else {
var kw = $('#kw').val().split(','),
desc = $('#desc').val(),

2
src/assets/sweetalert2.all.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 312 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Some files were not shown because too many files have changed in this diff Show More