未验证 提交 29791b8e 编写于 作者: P Peter Pan 提交者: GitHub

minor bugs fix (#815)

* chore: window instead of globalThis to support more browser versions

* fix: chart toolbox icons gap chaos

* style: remove unused title in svgs

* fix: index loading not centered

* fix: get missing echarts loading back

* fix: date & time cannot be formatted to correct locale string (#813)

* chore: drop support of nodejs 12

* docs: update documentation
上级 c0281d33
......@@ -8,7 +8,7 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ['3.5']
node-version: ['12']
node-version: ['14']
steps:
- name: Checkout
uses: actions/checkout@v2
......
......@@ -19,7 +19,7 @@ English | [简体中文](https://github.com/PaddlePaddle/VisualDL/blob/develop/f
## Usage
> nodejs ≥ 10 and npm ≥ 6 are required.
> nodejs ≥ 12 and npm ≥ 6 are required.
```bash
npm install -g @visualdl/cli
......@@ -66,6 +66,8 @@ yarn
## Build & Deploy
> nodejs ≥ 14 and npm ≥ 6 are required.
> We only support building on Linux/MacOS now.
Run:
......@@ -78,7 +80,7 @@ You will get `server.tar.gz` and `serverless.tar.gz` in `output` directory.
### Server deployment
> nodejs ≥ 10 and npm ≥ 6 are required.
> nodejs ≥ 12 and npm ≥ 6 are required.
Extract `server.tar.gz` to wherever you want.
`cd` into the directory and run:
......@@ -110,6 +112,7 @@ This project is based on following projects:
- [React](https://reactjs.org/)
- [ECharts](https://echarts.apache.org/)
- [Snowpack]](https://www.snowpack.dev/)
- [wasm-pack](https://rustwasm.github.io/wasm-pack/)
- [Netron](https://github.com/lutzroeder/netron)
......
......@@ -19,7 +19,7 @@
## 使用
> 要求 nodejs ≥ 10 并且 npm ≥ 6
> 要求 nodejs ≥ 12 并且 npm ≥ 6
```bash
npm install -g @visualdl/cli
......@@ -66,6 +66,8 @@ yarn
## 编译和部署
> 要求 nodejs ≥ 14 并且 npm ≥ 6
> 目前仅支持 Linux/MacOS 上编译。
运行:
......@@ -78,7 +80,7 @@ yarn build
### Server 部署
> 要求 nodejs ≥ 10 并且 npm ≥ 6
> 要求 nodejs ≥ 12 并且 npm ≥ 6
解压 `server.tar.gz` 到任何地方。
`cd` 到那个文件夹然后运行:
......@@ -110,6 +112,7 @@ VisualDL 支持最新版本的 [Google Chrome](https://www.google.com/chrome/)
- [React](https://reactjs.org/)
- [ECharts](https://echarts.apache.org/)
- [Snowpack]](https://www.snowpack.dev/)
- [wasm-pack](https://rustwasm.github.io/wasm-pack/)
- [Netron](https://github.com/lutzroeder/netron)
......
......@@ -2,11 +2,11 @@
/* eslint-disable no-console */
const path = require('path');
const {promises: fs} = require('fs');
const fs = require('fs/promises');
const {BosClient} = require('@baiducloud/sdk');
const mime = require('mime-types');
const endpoint = process.env.BOS_ENDPOINT || 'http://bj.bcebos.com';
const endpoint = process.env.BOS_ENDPOINT || 'https://bos.bj.baidubce.com';
const ak = process.env.BOS_AK;
const sk = process.env.BOS_SK;
......@@ -33,7 +33,7 @@ async function getFiles(dir) {
const name = path.join(dir, file.name);
result.push({
name,
mime: mime.lookup(name),
mime: mime.contentType(path.extname(name)),
size: (await fs.stat(name)).size
});
} else if (file.isDirectory()) {
......@@ -46,7 +46,7 @@ async function getFiles(dir) {
return result;
}
async function main(directory) {
async function push(directory, options) {
if (!ak || !sk) {
console.error('No AK and SK specified!');
process.exit(1);
......@@ -56,12 +56,14 @@ async function main(directory) {
try {
const stats = await fs.stat(directory);
if (stats.isDirectory()) {
files = (await getFiles(directory)).map(file => ({filename: path.relative(directory, file.name), ...file}));
files = (await getFiles(directory))
.map(file => ({filename: path.relative(directory, file.name), ...file}))
.filter(file => options?.exclude?.includes(file.filename) !== true);
} else if (stats.isFile()) {
files.push({
filename: path.relative(path.basename(directory)),
name: directory,
mime: mime.lookup(directory),
mime: mime.contentType(path.extname(directory)),
size: stats.size
});
} else {
......@@ -76,8 +78,8 @@ async function main(directory) {
(function (f) {
client
.putObjectFromFile(bucket, `assets/${version}/${f.filename}`, f.name, {
'content-length': f.size,
'content-type': `${f.mime}; charset=utf-8`
'Content-Length': f.size,
'Content-Type': `${f.mime}`
})
.then(() => console.log([f.name, f.mime, f.size].join(', ')))
.catch(error => console.error(f, error));
......@@ -85,4 +87,4 @@ async function main(directory) {
}
}
module.exports = main;
module.exports = push;
......@@ -2,7 +2,7 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path');
const {promises: fs} = require('fs');
const fs = require('fs/promises');
const {default: svgr} = require('@svgr/core');
const babel = require('@babel/core');
const {camelCase} = require('lodash');
......
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path');
const {promises: fs} = require('fs');
const fs = require('fs/promises');
const ENV_INJECT = 'const env = window.__snowpack_env__ || {}; export default env;';
......
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path');
const {promises: fs} = require('fs');
const fs = require('fs/promises');
const {minify} = require('html-minifier');
const dist = path.resolve(__dirname, '../dist');
......
......@@ -16,8 +16,9 @@ async function main() {
await injectEnv();
if (process.env.CDN_VERSION) {
// TODO: do not upload index.html & index.tpl.html & __snowpack__/env.local.js
await pushCdn(dist);
await pushCdn(dist, {
exclude: ['index.html', 'index.tpl.html', '__snowpack__/env.local.js']
});
}
}
......
......@@ -111,7 +111,7 @@
"yargs": "16.0.3"
},
"engines": {
"node": ">=12",
"node": ">=14",
"npm": ">=6"
},
"publishConfig": {
......
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>audio</title>
<path d="M8.628 10.97c-0.333 0-0.653 0.14-0.889 0.391s-0.368 0.589-0.368 0.943v10.541c0 0.737 0.563 1.334 1.258 1.334s1.258-0.597 1.258-1.334v-10.539c0.001-0.354-0.132-0.694-0.368-0.945s-0.557-0.391-0.89-0.391zM16 0c-0.333 0-0.653 0.141-0.889 0.391s-0.368 0.589-0.368 0.943v29.333c0 0.736 0.563 1.333 1.257 1.333s1.257-0.597 1.257-1.333v-29.333c0-0.354-0.132-0.693-0.368-0.943s-0.555-0.391-0.889-0.391zM30.743 13.781c-0.334-0.001-0.654 0.14-0.89 0.391s-0.369 0.591-0.368 0.945v5.773c0 0.737 0.563 1.334 1.258 1.334s1.258-0.597 1.258-1.334v-5.775c0.001-0.354-0.132-0.694-0.367-0.944s-0.556-0.391-0.889-0.391v0.002zM1.257 13.781c-0.334 0-0.654 0.141-0.889 0.391s-0.368 0.59-0.367 0.944v5.773c0 0.737 0.563 1.334 1.258 1.334s1.258-0.597 1.258-1.334v-5.775c0.001-0.354-0.132-0.694-0.368-0.945s-0.557-0.391-0.89-0.391v0.002zM23.372 5.307c-0.334-0.001-0.654 0.14-0.89 0.391s-0.369 0.591-0.368 0.945v20.113c0 0.738 0.563 1.335 1.259 1.335s1.259-0.598 1.259-1.335v-20.113c0.001-0.354-0.132-0.694-0.368-0.945s-0.557-0.391-0.89-0.391z"></path>
<path d="M8.628 10.97c-0.333 0-0.653 0.14-0.889 0.391s-0.368 0.589-0.368 0.943v10.541c0 0.737 0.563 1.334 1.258 1.334s1.258-0.597 1.258-1.334v-10.539c0.001-0.354-0.132-0.694-0.368-0.945s-0.557-0.391-0.89-0.391zM16 0c-0.333 0-0.653 0.141-0.889 0.391s-0.368 0.589-0.368 0.943v29.333c0 0.736 0.563 1.333 1.257 1.333s1.257-0.597 1.257-1.333v-29.333c0-0.354-0.132-0.693-0.368-0.943s-0.555-0.391-0.889-0.391zM30.743 13.781c-0.334-0.001-0.654 0.14-0.89 0.391s-0.369 0.591-0.368 0.945v5.773c0 0.737 0.563 1.334 1.258 1.334s1.258-0.597 1.258-1.334v-5.775c0.001-0.354-0.132-0.694-0.367-0.944s-0.556-0.391-0.889-0.391v0.002zM1.257 13.781c-0.334 0-0.654 0.141-0.889 0.391s-0.368 0.59-0.367 0.944v5.773c0 0.737 0.563 1.334 1.258 1.334s1.258-0.597 1.258-1.334v-5.775c0.001-0.354-0.132-0.694-0.368-0.945s-0.557-0.391-0.89-0.391v0.002zM23.372 5.307c-0.334-0.001-0.654 0.14-0.89 0.391s-0.369 0.591-0.368 0.945v20.113c0 0.738 0.563 1.335 1.259 1.335s1.259-0.598 1.259-1.335v-20.113c0.001-0.354-0.132-0.694-0.368-0.945s-0.557-0.391-0.89-0.391z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="44" height="32" viewBox="0 0 44 32">
<title>check-mark</title>
<path d="M17.849 30.793l-14.849-14.849 3.712-3.712 11.136 11.136 22.275-22.272 3.712 3.712z"></path>
<path d="M17.849 30.793l-14.849-14.849 3.712-3.712 11.136 11.136 22.275-22.272 3.712 3.712z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>chevron-down</title>
<path d="M16 20.8l-13.714-14.4-2.286 2.4 16 16.8 16-16.8-2.286-2.4z"></path>
<path d="M16 20.8l-13.714-14.4-2.286 2.4 16 16.8 16-16.8-2.286-2.4z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>close</title>
<path d="M32 0.99l-1-0.99-15 15.010-15.010-15.010-0.99 0.99 15.010 15.010-15.010 15 0.99 1 15.010-15 15 15 1-1-15-15 15-15.010z"></path>
<path d="M32 0.99l-1-0.99-15 15.010-15.010-15.010-0.99 0.99 15.010 15.010-15.010 15 0.99 1 15.010-15 15 15 1-1-15-15 15-15.010z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>dimension</title>
<path d="M1.067 0v0c0.64 0 1.067 0.427 1.067 1.067v29.867c0 0.64-0.427 1.067-1.067 1.067v0c-0.64 0-1.067-0.427-1.067-1.067v-29.867c0-0.64 0.427-1.067 1.067-1.067z"></path>
<path d="M32 30.933v0c0 0.64-0.427 1.067-1.067 1.067h-29.867c-0.64 0-1.067-0.427-1.067-1.067v0c0-0.64 0.427-1.067 1.067-1.067h29.867c0.64 0 1.067 0.427 1.067 1.067z"></path>
<path d="M6.4 20.267c-0.213 0-0.427 0-0.64-0.213-0.427-0.427-0.64-1.067-0.213-1.493l7.040-8.533c0.213-0.213 0.64-0.427 0.853-0.427s0.64 0.213 0.853 0.427l6.4 7.467 6.187-7.467c0.427-0.427 1.067-0.427 1.493-0.213 0.427 0.427 0.427 1.067 0.213 1.493l-7.040 8.533c-0.213 0.213-0.427 0.427-0.853 0.427-0.213 0-0.64-0.213-0.853-0.427l-6.4-7.467-6.187 7.467c-0.213 0.213-0.64 0.427-0.853 0.427z"></path>
<path d="M1.067 0v0c0.64 0 1.067 0.427 1.067 1.067v29.867c0 0.64-0.427 1.067-1.067 1.067v0c-0.64 0-1.067-0.427-1.067-1.067v-29.867c0-0.64 0.427-1.067 1.067-1.067z"></path>
<path d="M32 30.933v0c0 0.64-0.427 1.067-1.067 1.067h-29.867c-0.64 0-1.067-0.427-1.067-1.067v0c0-0.64 0.427-1.067 1.067-1.067h29.867c0.64 0 1.067 0.427 1.067 1.067z"></path>
<path d="M6.4 20.267c-0.213 0-0.427 0-0.64-0.213-0.427-0.427-0.64-1.067-0.213-1.493l7.040-8.533c0.213-0.213 0.64-0.427 0.853-0.427s0.64 0.213 0.853 0.427l6.4 7.467 6.187-7.467c0.427-0.427 1.067-0.427 1.493-0.213 0.427 0.427 0.427 1.067 0.213 1.493l-7.040 8.533c-0.213 0.213-0.427 0.427-0.853 0.427-0.213 0-0.64-0.213-0.853-0.427l-6.4-7.467-6.187 7.467c-0.213 0.213-0.64 0.427-0.853 0.427z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>download</title>
<path d="M30.844 29.689h-29.69c-0.637 0-1.154 0.517-1.154 1.156 0 0.638 0.517 1.155 1.154 1.155h29.692c0.637 0 1.154-0.517 1.154-1.155 0-0.639-0.516-1.156-1.154-1.156h-0.002zM15.976 27.572c0.329 0 0.626-0.135 0.839-0.354l12.054-12.070c0.216-0.214 0.351-0.511 0.352-0.839 0-0.654-0.533-1.184-1.183-1.184-0.329-0.001-0.624 0.134-0.837 0.348l-10.043 10.056v-22.343c0-0.656-0.529-1.187-1.181-1.187-0.654 0-1.182 0.531-1.182 1.185l0.001 22.344-10.042-10.056c-0.213-0.214-0.511-0.348-0.837-0.347-0.653-0.001-1.182 0.53-1.184 1.181 0 0.329 0.134 0.628 0.35 0.84l12.052 12.072c0.215 0.217 0.512 0.353 0.841 0.353z"></path>
<path d="M30.844 29.689h-29.69c-0.637 0-1.154 0.517-1.154 1.156 0 0.638 0.517 1.155 1.154 1.155h29.692c0.637 0 1.154-0.517 1.154-1.155 0-0.639-0.516-1.156-1.154-1.156h-0.002zM15.976 27.572c0.329 0 0.626-0.135 0.839-0.354l12.054-12.070c0.216-0.214 0.351-0.511 0.352-0.839 0-0.654-0.533-1.184-1.183-1.184-0.329-0.001-0.624 0.134-0.837 0.348l-10.043 10.056v-22.343c0-0.656-0.529-1.187-1.181-1.187-0.654 0-1.182 0.531-1.182 1.185l0.001 22.344-10.042-10.056c-0.213-0.214-0.511-0.348-0.837-0.347-0.653-0.001-1.182 0.53-1.184 1.181 0 0.329 0.134 0.628 0.35 0.84l12.052 12.072c0.215 0.217 0.512 0.353 0.841 0.353z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>histogram</title>
<path d="M0.8 28.2h30.2c0.4 0 0.8 0.4 0.8 1s-0.4 1-0.8 1h-30.2c-0.4 0-0.8-0.4-0.8-1s0.4-1 0.8-1z"></path>
<path d="M5 23.8c-1.6 0-3-1.4-3-3v-6.6c0-1.6 1.4-3 3-3s3 1.4 3 3v6.6c0 1.8-1.4 3-3 3zM5 13.2c-0.6 0-1 0.6-1 1v6.6c0 0.6 0.4 1 1 1s1-0.4 1-1v-6.6c0-0.4-0.4-1-1-1z"></path>
<path d="M27 23.8c-1.6 0-3-1.4-3-3v-12.8c0-1.6 1.4-3 3-3s3 1.4 3 3v12.8c0 1.8-1.4 3-3 3zM27 7c-0.6 0-1 0.4-1 1v12.8c0 0.6 0.4 1 1 1s1-0.4 1-1v-12.8c0-0.6-0.4-1-1-1z"></path>
<path d="M16 23.8c-1.6 0-3-1.4-3-3v-17c0-1.6 1.4-3 3-3s3 1.4 3 3v17c0 1.8-1.4 3-3 3zM16 2.8c-0.6 0-1 0.4-1 1v17c0 0.6 0.4 1 1 1s1-0.4 1-1v-17c0-0.6-0.4-1-1-1z"></path>
<path d="M0.8 28.2h30.2c0.4 0 0.8 0.4 0.8 1s-0.4 1-0.8 1h-30.2c-0.4 0-0.8-0.4-0.8-1s0.4-1 0.8-1z"></path>
<path d="M5 23.8c-1.6 0-3-1.4-3-3v-6.6c0-1.6 1.4-3 3-3s3 1.4 3 3v6.6c0 1.8-1.4 3-3 3zM5 13.2c-0.6 0-1 0.6-1 1v6.6c0 0.6 0.4 1 1 1s1-0.4 1-1v-6.6c0-0.4-0.4-1-1-1z"></path>
<path d="M27 23.8c-1.6 0-3-1.4-3-3v-12.8c0-1.6 1.4-3 3-3s3 1.4 3 3v12.8c0 1.8-1.4 3-3 3zM27 7c-0.6 0-1 0.4-1 1v12.8c0 0.6 0.4 1 1 1s1-0.4 1-1v-12.8c0-0.6-0.4-1-1-1z"></path>
<path d="M16 23.8c-1.6 0-3-1.4-3-3v-17c0-1.6 1.4-3 3-3s3 1.4 3 3v17c0 1.8-1.4 3-3 3zM16 2.8c-0.6 0-1 0.4-1 1v17c0 0.6 0.4 1 1 1s1-0.4 1-1v-17c0-0.6-0.4-1-1-1z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="34" height="32" viewBox="0 0 34 32">
<title>image</title>
<path d="M30.933 32h-27.733c-1.707 0-3.2-1.493-3.2-3.2v-25.6c0-1.707 1.493-3.2 3.2-3.2h27.733c1.707 0 3.2 1.493 3.2 3.2v25.6c0 1.707-1.493 3.2-3.2 3.2zM3.2 2.133c-0.64 0-1.067 0.427-1.067 1.067v25.6c0 0.64 0.427 1.067 1.067 1.067h27.733c0.64 0 1.067-0.427 1.067-1.067v-25.6c0-0.64-0.427-1.067-1.067-1.067h-27.733z"></path>
<path d="M24.533 13.867c-2.347 0-4.267-1.92-4.267-4.267s1.92-4.267 4.267-4.267 4.267 1.92 4.267 4.267-1.92 4.267-4.267 4.267zM24.533 7.467c-1.28 0-2.133 0.853-2.133 2.133s0.853 2.133 2.133 2.133 2.133-0.853 2.133-2.133-0.853-2.133-2.133-2.133z"></path>
<path d="M31.36 31.36l-8.533-10.667-5.973 6.187-6.4-9.813-7.467 13.653-1.92-1.067 9.173-16.64 7.040 10.453 5.547-6.187 10.24 12.8z"></path>
<path d="M30.933 32h-27.733c-1.707 0-3.2-1.493-3.2-3.2v-25.6c0-1.707 1.493-3.2 3.2-3.2h27.733c1.707 0 3.2 1.493 3.2 3.2v25.6c0 1.707-1.493 3.2-3.2 3.2zM3.2 2.133c-0.64 0-1.067 0.427-1.067 1.067v25.6c0 0.64 0.427 1.067 1.067 1.067h27.733c0.64 0 1.067-0.427 1.067-1.067v-25.6c0-0.64-0.427-1.067-1.067-1.067h-27.733z"></path>
<path d="M24.533 13.867c-2.347 0-4.267-1.92-4.267-4.267s1.92-4.267 4.267-4.267 4.267 1.92 4.267 4.267-1.92 4.267-4.267 4.267zM24.533 7.467c-1.28 0-2.133 0.853-2.133 2.133s0.853 2.133 2.133 2.133 2.133-0.853 2.133-2.133-0.853-2.133-2.133-2.133z"></path>
<path d="M31.36 31.36l-8.533-10.667-5.973 6.187-6.4-9.813-7.467 13.653-1.92-1.067 9.173-16.64 7.040 10.453 5.547-6.187 10.24 12.8z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="34" height="32" viewBox="0 0 34 32">
<title>log-axis</title>
<path d="M32.36 4.435h-22.058c-0.316-2.522-2.448-4.454-5.030-4.454-2.799 0-5.068 2.269-5.068 5.068s2.269 5.068 5.068 5.068c2.11 0 3.919-1.29 4.682-3.124l0.012-0.034h22.394c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0zM5.193 7.589c-1.366-0.035-2.46-1.151-2.46-2.522 0-1.394 1.13-2.523 2.523-2.523s2.523 1.129 2.523 2.522v0c-0.024 1.399-1.163 2.523-2.565 2.523-0.008 0-0.015-0-0.022-0h0.001z"></path>
<path d="M7.506 21.047c-0.697 0-1.262 0.565-1.262 1.262s0.565 1.262 1.262 1.262h18.63c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0z"></path>
<path d="M5.424 12.636c-0.697 0-1.262 0.565-1.262 1.262s0.565 1.262 1.262 1.262h22.815c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0z"></path>
<path d="M11.669 29.457c-0.697 0-1.262 0.565-1.262 1.262s0.565 1.262 1.262 1.262h10.324c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0z"></path>
<path d="M32.36 4.435h-22.058c-0.316-2.522-2.448-4.454-5.030-4.454-2.799 0-5.068 2.269-5.068 5.068s2.269 5.068 5.068 5.068c2.11 0 3.919-1.29 4.682-3.124l0.012-0.034h22.394c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0zM5.193 7.589c-1.366-0.035-2.46-1.151-2.46-2.522 0-1.394 1.13-2.523 2.523-2.523s2.523 1.129 2.523 2.522v0c-0.024 1.399-1.163 2.523-2.565 2.523-0.008 0-0.015-0-0.022-0h0.001z"></path>
<path d="M7.506 21.047c-0.697 0-1.262 0.565-1.262 1.262s0.565 1.262 1.262 1.262h18.63c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0z"></path>
<path d="M5.424 12.636c-0.697 0-1.262 0.565-1.262 1.262s0.565 1.262 1.262 1.262h22.815c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0z"></path>
<path d="M11.669 29.457c-0.697 0-1.262 0.565-1.262 1.262s0.565 1.262 1.262 1.262h10.324c0.697 0 1.262-0.565 1.262-1.262s-0.565-1.262-1.262-1.262v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>maximize</title>
<path d="M19.174 31.97c-0.662 0-1.198-0.536-1.198-1.198s0.536-1.198 1.198-1.198h10.241l0.2-10.38c0.039-0.638 0.542-1.148 1.173-1.197l0.004-0c0.636 0.050 1.139 0.559 1.178 1.194l0 0.004v11.139c0 0.012 0 0.026 0 0.040 0 0.86-0.697 1.557-1.557 1.557-0.007 0-0.014-0-0.022-0h0.001zM0.030 12.806v-11.179c-0-0.006-0-0.013-0-0.020 0-0.871 0.706-1.577 1.577-1.577 0.007 0 0.014 0 0.021 0h11.178c0.662 0 1.198 0.536 1.198 1.198s-0.536 1.198-1.198 1.198h-10.38v10.38c0 0.662-0.536 1.198-1.198 1.198s-1.198-0.536-1.198-1.198v0zM1.627 31.97c-0.006 0-0.013 0-0.020 0-0.871 0-1.577-0.706-1.577-1.577 0-0.007 0-0.014 0-0.021v0.001-9.183c0-0.662 0.536-1.198 1.198-1.198s1.198 0.536 1.198 1.198v6.787l8.185-8.185c0.205-0.177 0.474-0.285 0.769-0.285s0.564 0.108 0.77 0.287l-0.001-0.001c0.174 0.206 0.279 0.475 0.279 0.769s-0.105 0.562-0.281 0.77l0.002-0.002-8.185 8.185h6.787c0.662 0 1.198 0.536 1.198 1.198s-0.536 1.198-1.198 1.198v0zM29.574 10.81v-6.787l-8.185 8.185c-0.189 0.111-0.416 0.176-0.658 0.176-0.338 0-0.647-0.127-0.88-0.337l0.001 0.001c-0.174-0.188-0.282-0.441-0.282-0.719s0.107-0.531 0.282-0.719l-0.001 0.001 8.185-8.185h-6.787c-0.662 0-1.198-0.536-1.198-1.198s0.536-1.198 1.198-1.198h9.183c0.006-0 0.013-0 0.020-0 0.871 0 1.577 0.706 1.577 1.577 0 0.007-0 0.014-0 0.021v-0.001 9.183c0 0.662-0.536 1.198-1.198 1.198s-1.198-0.536-1.198-1.198v0z"></path>
<path d="M19.174 31.97c-0.662 0-1.198-0.536-1.198-1.198s0.536-1.198 1.198-1.198h10.241l0.2-10.38c0.039-0.638 0.542-1.148 1.173-1.197l0.004-0c0.636 0.050 1.139 0.559 1.178 1.194l0 0.004v11.139c0 0.012 0 0.026 0 0.040 0 0.86-0.697 1.557-1.557 1.557-0.007 0-0.014-0-0.022-0h0.001zM0.030 12.806v-11.179c-0-0.006-0-0.013-0-0.020 0-0.871 0.706-1.577 1.577-1.577 0.007 0 0.014 0 0.021 0h11.178c0.662 0 1.198 0.536 1.198 1.198s-0.536 1.198-1.198 1.198h-10.38v10.38c0 0.662-0.536 1.198-1.198 1.198s-1.198-0.536-1.198-1.198v0zM1.627 31.97c-0.006 0-0.013 0-0.020 0-0.871 0-1.577-0.706-1.577-1.577 0-0.007 0-0.014 0-0.021v0.001-9.183c0-0.662 0.536-1.198 1.198-1.198s1.198 0.536 1.198 1.198v6.787l8.185-8.185c0.205-0.177 0.474-0.285 0.769-0.285s0.564 0.108 0.77 0.287l-0.001-0.001c0.174 0.206 0.279 0.475 0.279 0.769s-0.105 0.562-0.281 0.77l0.002-0.002-8.185 8.185h6.787c0.662 0 1.198 0.536 1.198 1.198s-0.536 1.198-1.198 1.198v0zM29.574 10.81v-6.787l-8.185 8.185c-0.189 0.111-0.416 0.176-0.658 0.176-0.338 0-0.647-0.127-0.88-0.337l0.001 0.001c-0.174-0.188-0.282-0.441-0.282-0.719s0.107-0.531 0.282-0.719l-0.001 0.001 8.185-8.185h-6.787c-0.662 0-1.198-0.536-1.198-1.198s0.536-1.198 1.198-1.198h9.183c0.006-0 0.013-0 0.020-0 0.871 0 1.577 0.706 1.577 1.577 0 0.007-0 0.014-0 0.021v-0.001 9.183c0 0.662-0.536 1.198-1.198 1.198s-1.198-0.536-1.198-1.198v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>minimize</title>
<path d="M19.176 31.979c-0.662 0-1.198-0.537-1.198-1.198s0.537-1.198 1.198-1.198h10.246l0.2-10.386c0.039-0.639 0.542-1.148 1.174-1.198l0.004-0c0.636 0.050 1.139 0.56 1.178 1.195l0 0.004v11.185c0 0.012 0.001 0.026 0.001 0.040 0 0.86-0.698 1.558-1.558 1.558-0.007 0-0.014-0-0.022-0h0.001z"></path>
<path d="M0.021 12.804v-11.185c-0-0.006-0-0.013-0-0.020 0-0.871 0.706-1.578 1.578-1.578 0.007 0 0.014 0 0.021 0h11.184c0.641 0.049 1.149 0.557 1.198 1.194l0 0.004c-0.049 0.641-0.557 1.149-1.194 1.198l-0.004 0h-10.386v10.386c-0.049 0.641-0.557 1.149-1.194 1.198l-0.004 0c-0.641-0.049-1.149-0.557-1.198-1.194l-0-0.004z"></path>
<path d="M10.867 19.535c0.006-0 0.013-0 0.020-0 0.871 0 1.578 0.706 1.578 1.578 0 0.007-0 0.014-0 0.021v-0.001 9.188c0 0.662-0.537 1.198-1.198 1.198s-1.198-0.537-1.198-1.198v0-6.791l-8.189 8.189c-0.208 0.179-0.481 0.288-0.779 0.288s-0.571-0.109-0.781-0.289l0.002 0.001c-0.17-0.208-0.273-0.476-0.273-0.769s0.103-0.561 0.275-0.771l-0.002 0.002 8.189-8.189h-6.831c-0.662 0-1.198-0.537-1.198-1.198s0.537-1.198 1.198-1.198v0z"></path>
<path d="M21.992 1.599v6.791l8.189-8.189c0.192-0.115 0.423-0.183 0.671-0.183 0.342 0 0.654 0.13 0.888 0.344l-0.001-0.001c0.175 0.188 0.282 0.441 0.282 0.719s-0.107 0.531-0.282 0.72l0.001-0.001-8.209 8.209h6.791c0.662 0 1.198 0.537 1.198 1.198s-0.537 1.198-1.198 1.198h-9.188c-0.006 0-0.013 0-0.020 0-0.871 0-1.578-0.706-1.578-1.578 0-0.007 0-0.014 0-0.021v0.001-9.208c0-0.662 0.537-1.198 1.198-1.198s1.198 0.537 1.198 1.198v0z"></path>
<path d="M19.176 31.979c-0.662 0-1.198-0.537-1.198-1.198s0.537-1.198 1.198-1.198h10.246l0.2-10.386c0.039-0.639 0.542-1.148 1.174-1.198l0.004-0c0.636 0.050 1.139 0.56 1.178 1.195l0 0.004v11.185c0 0.012 0.001 0.026 0.001 0.040 0 0.86-0.698 1.558-1.558 1.558-0.007 0-0.014-0-0.022-0h0.001z"></path>
<path d="M0.021 12.804v-11.185c-0-0.006-0-0.013-0-0.020 0-0.871 0.706-1.578 1.578-1.578 0.007 0 0.014 0 0.021 0h11.184c0.641 0.049 1.149 0.557 1.198 1.194l0 0.004c-0.049 0.641-0.557 1.149-1.194 1.198l-0.004 0h-10.386v10.386c-0.049 0.641-0.557 1.149-1.194 1.198l-0.004 0c-0.641-0.049-1.149-0.557-1.198-1.194l-0-0.004z"></path>
<path d="M10.867 19.535c0.006-0 0.013-0 0.020-0 0.871 0 1.578 0.706 1.578 1.578 0 0.007-0 0.014-0 0.021v-0.001 9.188c0 0.662-0.537 1.198-1.198 1.198s-1.198-0.537-1.198-1.198v0-6.791l-8.189 8.189c-0.208 0.179-0.481 0.288-0.779 0.288s-0.571-0.109-0.781-0.289l0.002 0.001c-0.17-0.208-0.273-0.476-0.273-0.769s0.103-0.561 0.275-0.771l-0.002 0.002 8.189-8.189h-6.831c-0.662 0-1.198-0.537-1.198-1.198s0.537-1.198 1.198-1.198v0z"></path>
<path d="M21.992 1.599v6.791l8.189-8.189c0.192-0.115 0.423-0.183 0.671-0.183 0.342 0 0.654 0.13 0.888 0.344l-0.001-0.001c0.175 0.188 0.282 0.441 0.282 0.719s-0.107 0.531-0.282 0.72l0.001-0.001-8.209 8.209h6.791c0.662 0 1.198 0.537 1.198 1.198s-0.537 1.198-1.198 1.198h-9.188c-0.006 0-0.013 0-0.020 0-0.871 0-1.578-0.706-1.578-1.578 0-0.007 0-0.014 0-0.021v0.001-9.208c0-0.662 0.537-1.198 1.198-1.198s1.198 0.537 1.198 1.198v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>minus</title>
<path d="M1.45 14.55h29.1c0.801 0 1.45 0.649 1.45 1.45s-0.649 1.45-1.45 1.45h-29.1c-0.801 0-1.45-0.649-1.45-1.45s0.649-1.45 1.45-1.45v0z"></path>
<path d="M1.45 14.55h29.1c0.801 0 1.45 0.649 1.45 1.45s-0.649 1.45-1.45 1.45h-29.1c-0.801 0-1.45-0.649-1.45-1.45s0.649-1.45 1.45-1.45v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>mute</title>
<path d="M7.009 10.023l7.296-5.856c0.343-0.275 0.813-0.329 1.21-0.139s0.649 0.591 0.649 1.031v21.801c-0 0.439-0.252 0.839-0.648 1.029s-0.865 0.137-1.208-0.137l-7.497-5.984h-5.667c-0.631 0-1.143-0.512-1.143-1.143v-9.459c0-0.631 0.512-1.143 1.143-1.143h5.866z"></path>
<path d="M7.009 10.023l7.296-5.856c0.343-0.275 0.813-0.329 1.21-0.139s0.649 0.591 0.649 1.031v21.801c-0 0.439-0.252 0.839-0.648 1.029s-0.865 0.137-1.208-0.137l-7.497-5.984h-5.667c-0.631 0-1.143-0.512-1.143-1.143v-9.459c0-0.631 0.512-1.143 1.143-1.143h5.866z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>pause</title>
<path d="M7 0c2.209 0 4 1.791 4 4v24c0 2.209-1.791 4-4 4s-4-1.791-4-4v-24c0-2.209 1.791-4 4-4z"></path>
<path d="M25 0c2.209 0 4 1.791 4 4v24c0 2.209-1.791 4-4 4s-4-1.791-4-4v-24c0-2.209 1.791-4 4-4z"></path>
<path d="M7 0c2.209 0 4 1.791 4 4v24c0 2.209-1.791 4-4 4s-4-1.791-4-4v-24c0-2.209 1.791-4 4-4z"></path>
<path d="M25 0c2.209 0 4 1.791 4 4v24c0 2.209-1.791 4-4 4s-4-1.791-4-4v-24c0-2.209 1.791-4 4-4z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>play</title>
<path d="M27.184 19.287l-17.96 12.042c-1.816 1.217-4.275 0.732-5.492-1.083-0.437-0.652-0.671-1.419-0.671-2.204v-24.083c0-2.186 1.772-3.958 3.958-3.958 0.785 0 1.552 0.233 2.204 0.671l17.96 12.042c1.816 1.217 2.301 3.676 1.084 5.492-0.287 0.428-0.655 0.796-1.083 1.083z"></path>
<path d="M27.184 19.287l-17.96 12.042c-1.816 1.217-4.275 0.732-5.492-1.083-0.437-0.652-0.671-1.419-0.671-2.204v-24.083c0-2.186 1.772-3.958 3.958-3.958 0.785 0 1.552 0.233 2.204 0.671l17.96 12.042c1.816 1.217 2.301 3.676 1.084 5.492-0.287 0.428-0.655 0.796-1.083 1.083z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>plus</title>
<path d="M16 0c0.801 0 1.45 0.649 1.45 1.45v13.1h13.1c0.801 0 1.45 0.649 1.45 1.45s-0.649 1.45-1.45 1.45h-13.1v13.1c0 0.801-0.649 1.45-1.45 1.45s-1.45-0.649-1.45-1.45v0-13.1h-13.1c-0.801 0-1.45-0.649-1.45-1.45s0.649-1.45 1.45-1.45h13.1v-13.1c0-0.801 0.649-1.45 1.45-1.45v0z"></path>
<path d="M16 0c0.801 0 1.45 0.649 1.45 1.45v13.1h13.1c0.801 0 1.45 0.649 1.45 1.45s-0.649 1.45-1.45 1.45h-13.1v13.1c0 0.801-0.649 1.45-1.45 1.45s-1.45-0.649-1.45-1.45v0-13.1h-13.1c-0.801 0-1.45-0.649-1.45-1.45s0.649-1.45 1.45-1.45h13.1v-13.1c0-0.801 0.649-1.45 1.45-1.45v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>question-circle</title>
<path d="M14.45 24v0c-0.001 0.015-0.001 0.032-0.001 0.050 0 0.746 0.605 1.351 1.351 1.351 0.729 0 1.322-0.577 1.35-1.298l0-0.003v-0.1c0-0.746-0.604-1.35-1.35-1.35s-1.35 0.604-1.35 1.35v0zM15.84 20.71h-0.11c-0.568-0.060-1.006-0.536-1.006-1.114 0-0.041 0.002-0.081 0.006-0.121l-0 0.005c0.15-1.56 1.29-2.82 2.55-4.080 2-2 2.050-2.65 2.090-3.33 0.002-0.035 0.002-0.077 0.002-0.118 0-0.795-0.318-1.516-0.833-2.042l0 0.001c-0.639-0.648-1.527-1.050-2.508-1.050-0.011 0-0.022 0-0.034 0h0.002c-1.853 0.006-3.354 1.507-3.36 3.359v0.001c-0.056 0.577-0.538 1.024-1.125 1.024s-1.069-0.447-1.125-1.019l-0-0.005c-0-0.021-0-0.045-0-0.069 0-1.537 0.627-2.928 1.64-3.93l0-0c1.008-1.019 2.407-1.65 3.953-1.65 0.017 0 0.033 0 0.049 0l-0.003-0c0.002 0 0.005 0 0.008 0 1.639 0 3.119 0.682 4.17 1.778l0.002 0.002c0.895 0.917 1.447 2.171 1.447 3.555 0 0.097-0.003 0.193-0.008 0.288l0.001-0.013c-0.070 1.44-0.52 2.59-2.74 4.8-1.17 1.17-1.91 2.020-1.91 2.75-0.072 0.563-0.545 0.994-1.119 1h-0.001zM25.72 25.71v0c-2.476 2.472-5.895 4-9.671 4-0.017 0-0.035-0-0.052-0h0.003c-0.017 0-0.037 0-0.058 0-3.773 0-7.189-1.529-9.662-4l0 0c-2.472-2.482-4-5.906-4-9.687 0-0.015 0-0.030 0-0.045v0.002c0.031-7.57 6.175-13.695 13.75-13.695 3.781 0 7.205 1.526 9.691 3.996l-0.001-0.001c2.472 2.476 4 5.895 4 9.671 0 0.017-0 0.035-0 0.052v-0.003c0 0.021 0 0.045 0 0.070 0 3.769-1.529 7.181-4 9.65l-0 0zM16 0v0c-8.837 0-16 7.163-16 16s7.163 16 16 16c8.837 0 16-7.163 16-16v0c0-8.837-7.163-16-16-16v0z"></path>
<path d="M14.45 24v0c-0.001 0.015-0.001 0.032-0.001 0.050 0 0.746 0.605 1.351 1.351 1.351 0.729 0 1.322-0.577 1.35-1.298l0-0.003v-0.1c0-0.746-0.604-1.35-1.35-1.35s-1.35 0.604-1.35 1.35v0zM15.84 20.71h-0.11c-0.568-0.060-1.006-0.536-1.006-1.114 0-0.041 0.002-0.081 0.006-0.121l-0 0.005c0.15-1.56 1.29-2.82 2.55-4.080 2-2 2.050-2.65 2.090-3.33 0.002-0.035 0.002-0.077 0.002-0.118 0-0.795-0.318-1.516-0.833-2.042l0 0.001c-0.639-0.648-1.527-1.050-2.508-1.050-0.011 0-0.022 0-0.034 0h0.002c-1.853 0.006-3.354 1.507-3.36 3.359v0.001c-0.056 0.577-0.538 1.024-1.125 1.024s-1.069-0.447-1.125-1.019l-0-0.005c-0-0.021-0-0.045-0-0.069 0-1.537 0.627-2.928 1.64-3.93l0-0c1.008-1.019 2.407-1.65 3.953-1.65 0.017 0 0.033 0 0.049 0l-0.003-0c0.002 0 0.005 0 0.008 0 1.639 0 3.119 0.682 4.17 1.778l0.002 0.002c0.895 0.917 1.447 2.171 1.447 3.555 0 0.097-0.003 0.193-0.008 0.288l0.001-0.013c-0.070 1.44-0.52 2.59-2.74 4.8-1.17 1.17-1.91 2.020-1.91 2.75-0.072 0.563-0.545 0.994-1.119 1h-0.001zM25.72 25.71v0c-2.476 2.472-5.895 4-9.671 4-0.017 0-0.035-0-0.052-0h0.003c-0.017 0-0.037 0-0.058 0-3.773 0-7.189-1.529-9.662-4l0 0c-2.472-2.482-4-5.906-4-9.687 0-0.015 0-0.030 0-0.045v0.002c0.031-7.57 6.175-13.695 13.75-13.695 3.781 0 7.205 1.526 9.691 3.996l-0.001-0.001c2.472 2.476 4 5.895 4 9.671 0 0.017-0 0.035-0 0.052v-0.003c0 0.021 0 0.045 0 0.070 0 3.769-1.529 7.181-4 9.65l-0 0zM16 0v0c-8.837 0-16 7.163-16 16s7.163 16 16 16c8.837 0 16-7.163 16-16v0c0-8.837-7.163-16-16-16v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>reduction</title>
<path d="M1.067 0v0c0.64 0 1.067 0.427 1.067 1.067v29.867c0 0.64-0.427 1.067-1.067 1.067v0c-0.64 0-1.067-0.427-1.067-1.067v-29.867c0-0.64 0.427-1.067 1.067-1.067z"></path>
<path d="M32 30.933v0c0 0.64-0.427 1.067-1.067 1.067h-29.867c-0.64 0-1.067-0.427-1.067-1.067v0c0-0.64 0.427-1.067 1.067-1.067h29.867c0.64 0 1.067 0.427 1.067 1.067z"></path>
<path d="M26.24 23.68c-0.427 0-0.64-0.213-0.853-0.427l-8.747-14.933h-8.533c-0.64 0-1.067-0.427-1.067-1.067s0.427-1.067 1.067-1.067h8.96c0.427 0 0.64 0.213 0.853 0.427l9.173 15.573c0.213 0.427 0.213 1.067-0.427 1.493 0 0-0.213 0-0.427 0z"></path>
<path d="M27.733 17.28v0c0.64 0.213 0.853 0.64 0.853 1.28l-1.067 4.053c-0.213 0.64-0.64 0.853-1.28 0.853v0c-0.64-0.213-0.853-0.64-0.853-1.28l1.067-4.053c0-0.64 0.64-1.067 1.28-0.853z"></path>
<path d="M20.693 21.547v0c0 0.64 0.213 1.067 0.853 1.28l4.267 0.64c0.64 0 1.067-0.213 1.28-0.853v0c0-0.64-0.213-1.067-0.853-1.28l-4.267-0.64c-0.64 0-1.067 0.213-1.28 0.853z"></path>
<path d="M1.067 0v0c0.64 0 1.067 0.427 1.067 1.067v29.867c0 0.64-0.427 1.067-1.067 1.067v0c-0.64 0-1.067-0.427-1.067-1.067v-29.867c0-0.64 0.427-1.067 1.067-1.067z"></path>
<path d="M32 30.933v0c0 0.64-0.427 1.067-1.067 1.067h-29.867c-0.64 0-1.067-0.427-1.067-1.067v0c0-0.64 0.427-1.067 1.067-1.067h29.867c0.64 0 1.067 0.427 1.067 1.067z"></path>
<path d="M26.24 23.68c-0.427 0-0.64-0.213-0.853-0.427l-8.747-14.933h-8.533c-0.64 0-1.067-0.427-1.067-1.067s0.427-1.067 1.067-1.067h8.96c0.427 0 0.64 0.213 0.853 0.427l9.173 15.573c0.213 0.427 0.213 1.067-0.427 1.493 0 0-0.213 0-0.427 0z"></path>
<path d="M27.733 17.28v0c0.64 0.213 0.853 0.64 0.853 1.28l-1.067 4.053c-0.213 0.64-0.64 0.853-1.28 0.853v0c-0.64-0.213-0.853-0.64-0.853-1.28l1.067-4.053c0-0.64 0.64-1.067 1.28-0.853z"></path>
<path d="M20.693 21.547v0c0 0.64 0.213 1.067 0.853 1.28l4.267 0.64c0.64 0 1.067-0.213 1.28-0.853v0c0-0.64-0.213-1.067-0.853-1.28l-4.267-0.64c-0.64 0-1.067 0.213-1.28 0.853z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>refresh</title>
<path d="M32 12.571v-8l-2.606 2.606c-2.907-4.348-7.796-7.172-13.344-7.172-8.837 0-16 7.163-16 16s7.163 16 16 16c6.672 0 12.39-4.084 14.791-9.888l0.039-0.106c0.063-0.152 0.099-0.328 0.099-0.513 0-0.571-0.349-1.060-0.845-1.267l-0.009-0.003c-0.152-0.063-0.328-0.099-0.513-0.099-0.571 0-1.060 0.349-1.267 0.845l-0.003 0.009c-2.030 4.895-6.771 8.275-12.301 8.275-7.334 0-13.28-5.946-13.28-13.28s5.946-13.28 13.28-13.28c4.81 0 9.023 2.557 11.353 6.387l0.033 0.059-3.429 3.406z"></path>
<path d="M32 12.571v-8l-2.606 2.606c-2.907-4.348-7.796-7.172-13.344-7.172-8.837 0-16 7.163-16 16s7.163 16 16 16c6.672 0 12.39-4.084 14.791-9.888l0.039-0.106c0.063-0.152 0.099-0.328 0.099-0.513 0-0.571-0.349-1.060-0.845-1.267l-0.009-0.003c-0.152-0.063-0.328-0.099-0.513-0.099-0.571 0-1.060 0.349-1.267 0.845l-0.003 0.009c-2.030 4.895-6.771 8.275-12.301 8.275-7.334 0-13.28-5.946-13.28-13.28s5.946-13.28 13.28-13.28c4.81 0 9.023 2.557 11.353 6.387l0.033 0.059-3.429 3.406z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>restore-size</title>
<path d="M29.8 0h-27.6c-1.215 0-2.2 0.985-2.2 2.2v0 27.6c0 1.215 0.985 2.2 2.2 2.2h27.6c1.215 0 2.2-0.985 2.2-2.2v0-27.6c0-1.215-0.985-2.2-2.2-2.2v0zM2.2 29.8v-27.6h27.6v27.6z"></path>
<path d="M10.78 4c-0.687 0.011-1.24 0.571-1.24 1.26 0 0 0 0 0 0v0 4.2h-4.32c-0.679 0.022-1.22 0.578-1.22 1.259 0 0.007 0 0.014 0 0.022v-0.001c-0 0.006-0 0.013-0 0.020 0 0.678 0.544 1.229 1.219 1.24h5.561c0.676-0.011 1.22-0.562 1.22-1.24 0-0.007-0-0.014-0-0.021v0.001-5.48c0-0.006 0-0.013 0-0.020 0-0.678-0.544-1.229-1.219-1.24h-0.001zM26.78 9.46h-4.32v-4.2c0-0 0-0 0-0 0-0.689-0.553-1.249-1.239-1.26h-0.001c-0.676 0.011-1.22 0.562-1.22 1.24 0 0.007 0 0.014 0 0.021v-0.001 5.48c-0 0.006-0 0.013-0 0.020 0 0.678 0.544 1.229 1.219 1.24h5.561c0.676-0.011 1.22-0.562 1.22-1.24 0-0.007-0-0.014-0-0.021v0.001c0-0.006 0-0.013 0-0.021 0-0.682-0.542-1.237-1.218-1.259l-0.002-0zM10.78 20h-5.56c-0.676 0.011-1.22 0.562-1.22 1.24 0 0.007 0 0.014 0 0.021v-0.001c-0 0.006-0 0.013-0 0.021 0 0.682 0.542 1.237 1.218 1.259l0.002 0h4.32v4.2c0 0 0 0 0 0 0 0.689 0.553 1.249 1.239 1.26h0.001c0.676-0.011 1.22-0.562 1.22-1.24 0-0.007-0-0.014-0-0.021v0.001-5.48c0-0.006 0-0.013 0-0.020 0-0.678-0.544-1.229-1.219-1.24h-0.001zM26.78 20h-5.56c-0.676 0.011-1.22 0.562-1.22 1.24 0 0.007 0 0.014 0 0.021v-0.001 5.48c-0 0.006-0 0.013-0 0.020 0 0.678 0.544 1.229 1.219 1.24h0.001c0.687-0.011 1.24-0.571 1.24-1.26 0-0 0-0 0-0v0-4.2h4.32c0.679-0.022 1.22-0.578 1.22-1.259 0-0.007-0-0.015-0-0.022v0.001c0-0.006 0-0.013 0-0.020 0-0.678-0.544-1.229-1.219-1.24h-0.001z"></path>
<path d="M29.8 0h-27.6c-1.215 0-2.2 0.985-2.2 2.2v0 27.6c0 1.215 0.985 2.2 2.2 2.2h27.6c1.215 0 2.2-0.985 2.2-2.2v0-27.6c0-1.215-0.985-2.2-2.2-2.2v0zM2.2 29.8v-27.6h27.6v27.6z"></path>
<path d="M10.78 4c-0.687 0.011-1.24 0.571-1.24 1.26 0 0 0 0 0 0v0 4.2h-4.32c-0.679 0.022-1.22 0.578-1.22 1.259 0 0.007 0 0.014 0 0.022v-0.001c-0 0.006-0 0.013-0 0.020 0 0.678 0.544 1.229 1.219 1.24h5.561c0.676-0.011 1.22-0.562 1.22-1.24 0-0.007-0-0.014-0-0.021v0.001-5.48c0-0.006 0-0.013 0-0.020 0-0.678-0.544-1.229-1.219-1.24h-0.001zM26.78 9.46h-4.32v-4.2c0-0 0-0 0-0 0-0.689-0.553-1.249-1.239-1.26h-0.001c-0.676 0.011-1.22 0.562-1.22 1.24 0 0.007 0 0.014 0 0.021v-0.001 5.48c-0 0.006-0 0.013-0 0.020 0 0.678 0.544 1.229 1.219 1.24h5.561c0.676-0.011 1.22-0.562 1.22-1.24 0-0.007-0-0.014-0-0.021v0.001c0-0.006 0-0.013 0-0.021 0-0.682-0.542-1.237-1.218-1.259l-0.002-0zM10.78 20h-5.56c-0.676 0.011-1.22 0.562-1.22 1.24 0 0.007 0 0.014 0 0.021v-0.001c-0 0.006-0 0.013-0 0.021 0 0.682 0.542 1.237 1.218 1.259l0.002 0h4.32v4.2c0 0 0 0 0 0 0 0.689 0.553 1.249 1.239 1.26h0.001c0.676-0.011 1.22-0.562 1.22-1.24 0-0.007-0-0.014-0-0.021v0.001-5.48c0-0.006 0-0.013 0-0.020 0-0.678-0.544-1.229-1.219-1.24h-0.001zM26.78 20h-5.56c-0.676 0.011-1.22 0.562-1.22 1.24 0 0.007 0 0.014 0 0.021v-0.001 5.48c-0 0.006-0 0.013-0 0.020 0 0.678 0.544 1.229 1.219 1.24h0.001c0.687-0.011 1.24-0.571 1.24-1.26 0-0 0-0 0-0v0-4.2h4.32c0.679-0.022 1.22-0.578 1.22-1.259 0-0.007-0-0.015-0-0.022v0.001c0-0.006 0-0.013 0-0.020 0-0.678-0.544-1.229-1.219-1.24h-0.001z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="32" viewBox="0 0 28 32">
<title>revert</title>
<path d="M26.846 14.886c-0.373-0.141-0.791-0.071-1.099 0.184s-0.457 0.656-0.392 1.053c0.099 0.595 0.149 1.244 0.149 1.884 0.009 3.117-1.218 6.108-3.407 8.307-2.178 2.21-5.142 3.448-8.231 3.437-3.088 0.009-6.052-1.23-8.231-3.44-2.189-2.199-3.416-5.191-3.407-8.309 0-3.137 1.21-6.091 3.407-8.309 2.179-2.21 5.142-3.448 8.231-3.439 0.129 0 0.26 0.003 0.39 0.007l-2.532 2.553c-0.209 0.211-0.327 0.497-0.327 0.795s0.118 0.585 0.327 0.795c0.436 0.44 1.142 0.44 1.576 0l4.204-4.244c0.209-0.211 0.327-0.497 0.327-0.795s-0.118-0.585-0.327-0.795l-4.205-4.239c-0.209-0.211-0.492-0.33-0.788-0.33s-0.579 0.119-0.788 0.33c-0.209 0.211-0.327 0.497-0.327 0.795s0.118 0.585 0.327 0.795l2.064 2.079c-3.65 0.018-7.144 1.492-9.722 4.1-2.607 2.623-4.070 6.186-4.066 9.901-0.005 3.714 1.457 7.276 4.061 9.899 2.598 2.629 6.127 4.105 9.806 4.1 1.873 0 3.686-0.369 5.398-1.1 1.648-0.7 3.145-1.718 4.407-2.996 1.266-1.275 2.275-2.785 2.972-4.447 0.725-1.725 1.090-3.56 1.090-5.451 0-0.771-0.062-1.531-0.18-2.253-0.065-0.395-0.335-0.726-0.707-0.867z"></path>
<path d="M26.846 14.886c-0.373-0.141-0.791-0.071-1.099 0.184s-0.457 0.656-0.392 1.053c0.099 0.595 0.149 1.244 0.149 1.884 0.009 3.117-1.218 6.108-3.407 8.307-2.178 2.21-5.142 3.448-8.231 3.437-3.088 0.009-6.052-1.23-8.231-3.44-2.189-2.199-3.416-5.191-3.407-8.309 0-3.137 1.21-6.091 3.407-8.309 2.179-2.21 5.142-3.448 8.231-3.439 0.129 0 0.26 0.003 0.39 0.007l-2.532 2.553c-0.209 0.211-0.327 0.497-0.327 0.795s0.118 0.585 0.327 0.795c0.436 0.44 1.142 0.44 1.576 0l4.204-4.244c0.209-0.211 0.327-0.497 0.327-0.795s-0.118-0.585-0.327-0.795l-4.205-4.239c-0.209-0.211-0.492-0.33-0.788-0.33s-0.579 0.119-0.788 0.33c-0.209 0.211-0.327 0.497-0.327 0.795s0.118 0.585 0.327 0.795l2.064 2.079c-3.65 0.018-7.144 1.492-9.722 4.1-2.607 2.623-4.070 6.186-4.066 9.901-0.005 3.714 1.457 7.276 4.061 9.899 2.598 2.629 6.127 4.105 9.806 4.1 1.873 0 3.686-0.369 5.398-1.1 1.648-0.7 3.145-1.718 4.407-2.996 1.266-1.275 2.275-2.785 2.972-4.447 0.725-1.725 1.090-3.56 1.090-5.451 0-0.771-0.062-1.531-0.18-2.253-0.065-0.395-0.335-0.726-0.707-0.867z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>scalar</title>
<path d="M29 32h-26c-1.6 0-3-1.4-3-3v-26c0-1.6 1.4-3 3-3h26c1.6 0 3 1.4 3 3v26c0 1.6-1.4 3-3 3zM3 2c-0.6 0-1 0.4-1 1v26c0 0.6 0.4 1 1 1h26c0.6 0 1-0.4 1-1v-26c0-0.6-0.4-1-1-1h-26z"></path>
<path d="M6 21c-0.2 0-0.4 0-0.6-0.2-0.4-0.4-0.4-1-0.2-1.4l6.6-8c0.2-0.2 0.6-0.4 0.8-0.4s0.6 0.2 0.8 0.4l6 7 5.8-7c0.4-0.4 1-0.4 1.4-0.2 0.4 0.4 0.4 1 0.2 1.4l-6.6 8c-0.2 0.2-0.4 0.4-0.8 0.4-0.2 0-0.6-0.2-0.8-0.4l-6-7-5.8 7c-0.2 0.2-0.6 0.4-0.8 0.4z"></path>
<path d="M29 32h-26c-1.6 0-3-1.4-3-3v-26c0-1.6 1.4-3 3-3h26c1.6 0 3 1.4 3 3v26c0 1.6-1.4 3-3 3zM3 2c-0.6 0-1 0.4-1 1v26c0 0.6 0.4 1 1 1h26c0.6 0 1-0.4 1-1v-26c0-0.6-0.4-1-1-1h-26z"></path>
<path d="M6 21c-0.2 0-0.4 0-0.6-0.2-0.4-0.4-0.4-1-0.2-1.4l6.6-8c0.2-0.2 0.6-0.4 0.8-0.4s0.6 0.2 0.8 0.4l6 7 5.8-7c0.4-0.4 1-0.4 1.4-0.2 0.4 0.4 0.4 1 0.2 1.4l-6.6 8c-0.2 0.2-0.4 0.4-0.8 0.4-0.2 0-0.6-0.2-0.8-0.4l-6-7-5.8 7c-0.2 0.2-0.6 0.4-0.8 0.4z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>search</title>
<path d="M30.293 31.787l-5.547-5.547c-2.773 2.347-6.187 3.627-9.813 3.627-8.32 0-14.933-6.613-14.933-14.933s6.613-14.933 14.933-14.933c8.32 0 14.933 6.613 14.933 14.933 0 3.627-1.28 7.040-3.627 9.813l5.547 5.547-1.493 1.493zM14.933 2.133c-7.040 0-12.8 5.76-12.8 12.8s5.76 12.8 12.8 12.8c2.987 0 5.973-1.067 8.32-3.2l1.28-1.28c2.133-2.347 3.2-5.333 3.2-8.32 0-7.040-5.76-12.8-12.8-12.8z"></path>
<path d="M30.293 31.787l-5.547-5.547c-2.773 2.347-6.187 3.627-9.813 3.627-8.32 0-14.933-6.613-14.933-14.933s6.613-14.933 14.933-14.933c8.32 0 14.933 6.613 14.933 14.933 0 3.627-1.28 7.040-3.627 9.813l5.547 5.547-1.493 1.493zM14.933 2.133c-7.040 0-12.8 5.76-12.8 12.8s5.76 12.8 12.8 12.8c2.987 0 5.973-1.067 8.32-3.2l1.28-1.28c2.133-2.347 3.2-5.333 3.2-8.32 0-7.040-5.76-12.8-12.8-12.8z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>text</title>
<path d="M10 8h12v2h-12v-2z"></path>
<path d="M8 24h16v2h-16v-2z"></path>
<path d="M8 6h2v6h-2v-6z"></path>
<path d="M22 6h2v6h-2v-6z"></path>
<path d="M15 9h2v12h-2v-12z"></path>
<path d="M30 32h-28c-1.2 0-2-0.8-2-2v-28c0-1.2 0.8-2 2-2h28c1.2 0 2 0.8 2 2v28c0 1.2-0.8 2-2 2zM2 2v28h28v-28h-28zM2 1v1c0 0 0 0 0 0v-1z"></path>
<path d="M10 8h12v2h-12v-2z"></path>
<path d="M8 24h16v2h-16v-2z"></path>
<path d="M8 6h2v6h-2v-6z"></path>
<path d="M22 6h2v6h-2v-6z"></path>
<path d="M15 9h2v12h-2v-12z"></path>
<path d="M30 32h-28c-1.2 0-2-0.8-2-2v-28c0-1.2 0.8-2 2-2h28c1.2 0 2 0.8 2 2v28c0 1.2-0.8 2-2 2zM2 2v28h28v-28h-28zM2 1v1c0 0 0 0 0 0v-1z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="39" height="32" viewBox="0 0 39 32">
<title>upload</title>
<path d="M31.702 10.073c-1.054-5.763-6.037-10.073-12.026-10.073s-10.972 4.31-12.015 9.998l-0.011 0.075c-4.341 0.982-7.534 4.806-7.534 9.376 0 0.372 0.021 0.739 0.062 1.1l-0.004-0.044c0.628 4.846 4.729 8.551 9.696 8.551 0.027 0 0.054-0 0.081-0l-0.004 0h2.993c0.675 0 1.222-0.547 1.222-1.222s-0.547-1.222-1.222-1.222v0 0h-3.054c-3.977 0-7.201-3.224-7.201-7.201s3.224-7.201 7.201-7.201v0c0-5.397 4.375-9.772 9.772-9.772s9.772 4.375 9.772 9.772v0c0.088-0.004 0.192-0.006 0.296-0.006 3.974 0 7.195 3.221 7.195 7.195s-3.221 7.195-7.195 7.195c-0.104 0-0.208-0.002-0.311-0.007l0.015 0h-3.665c-0.675 0-1.222 0.547-1.222 1.222s0.547 1.222 1.222 1.222v0h3.665c0.024 0 0.052 0 0.080 0 4.958 0 9.054-3.692 9.687-8.477l0.005-0.050c0.036-0.312 0.057-0.674 0.057-1.041 0-4.581-3.204-8.413-7.493-9.379l-0.064-0.012z"></path>
<path d="M20.208 14.972c-0.219-0.209-0.516-0.337-0.843-0.337s-0.624 0.129-0.843 0.338l0-0-3.396 3.445c-0.218 0.22-0.353 0.521-0.354 0.855v0c0.005 0.329 0.139 0.626 0.354 0.843l-0-0c0.219 0.209 0.516 0.337 0.843 0.337s0.624-0.129 0.843-0.338l-0 0 1.356-1.368v12.032c0 0.675 0.547 1.222 1.222 1.222s1.222-0.547 1.222-1.222v0-12.020l1.344 1.368c0.209 0.218 0.504 0.354 0.83 0.354 0.005 0 0.009-0 0.014-0h-0.001c0.331-0.008 0.628-0.147 0.843-0.366l0-0c0.212-0.22 0.343-0.519 0.343-0.849s-0.131-0.63-0.344-0.849l0 0z"></path>
<path d="M31.702 10.073c-1.054-5.763-6.037-10.073-12.026-10.073s-10.972 4.31-12.015 9.998l-0.011 0.075c-4.341 0.982-7.534 4.806-7.534 9.376 0 0.372 0.021 0.739 0.062 1.1l-0.004-0.044c0.628 4.846 4.729 8.551 9.696 8.551 0.027 0 0.054-0 0.081-0l-0.004 0h2.993c0.675 0 1.222-0.547 1.222-1.222s-0.547-1.222-1.222-1.222v0 0h-3.054c-3.977 0-7.201-3.224-7.201-7.201s3.224-7.201 7.201-7.201v0c0-5.397 4.375-9.772 9.772-9.772s9.772 4.375 9.772 9.772v0c0.088-0.004 0.192-0.006 0.296-0.006 3.974 0 7.195 3.221 7.195 7.195s-3.221 7.195-7.195 7.195c-0.104 0-0.208-0.002-0.311-0.007l0.015 0h-3.665c-0.675 0-1.222 0.547-1.222 1.222s0.547 1.222 1.222 1.222v0h3.665c0.024 0 0.052 0 0.080 0 4.958 0 9.054-3.692 9.687-8.477l0.005-0.050c0.036-0.312 0.057-0.674 0.057-1.041 0-4.581-3.204-8.413-7.493-9.379l-0.064-0.012z"></path>
<path d="M20.208 14.972c-0.219-0.209-0.516-0.337-0.843-0.337s-0.624 0.129-0.843 0.338l0-0-3.396 3.445c-0.218 0.22-0.353 0.521-0.354 0.855v0c0.005 0.329 0.139 0.626 0.354 0.843l-0-0c0.219 0.209 0.516 0.337 0.843 0.337s0.624-0.129 0.843-0.338l-0 0 1.356-1.368v12.032c0 0.675 0.547 1.222 1.222 1.222s1.222-0.547 1.222-1.222v0-12.020l1.344 1.368c0.209 0.218 0.504 0.354 0.83 0.354 0.005 0 0.009-0 0.014-0h-0.001c0.331-0.008 0.628-0.147 0.843-0.366l0-0c0.212-0.22 0.343-0.519 0.343-0.849s-0.131-0.63-0.344-0.849l0 0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>volumn-low</title>
<path d="M7.009 10.023l7.296-5.856c0.343-0.275 0.813-0.329 1.21-0.139s0.649 0.591 0.649 1.031v21.801c-0 0.439-0.252 0.839-0.648 1.029s-0.865 0.137-1.208-0.137l-7.497-5.984h-5.667c-0.631 0-1.143-0.512-1.143-1.143v-9.459c0-0.631 0.512-1.143 1.143-1.143h5.866z"></path>
<path d="M21.671 23.007c-0.452 0.431-1.166 0.419-1.604-0.027s-0.436-1.16 0.003-1.604c1.472-1.441 2.3-3.415 2.297-5.475 0.003-1.908-0.707-3.748-1.992-5.159-0.28-0.301-0.377-0.73-0.253-1.123s0.449-0.688 0.852-0.774c0.402-0.086 0.82 0.051 1.093 0.359 1.667 1.831 2.59 4.22 2.586 6.696 0.003 2.674-1.072 5.235-2.982 7.106v0z"></path>
<path d="M7.009 10.023l7.296-5.856c0.343-0.275 0.813-0.329 1.21-0.139s0.649 0.591 0.649 1.031v21.801c-0 0.439-0.252 0.839-0.648 1.029s-0.865 0.137-1.208-0.137l-7.497-5.984h-5.667c-0.631 0-1.143-0.512-1.143-1.143v-9.459c0-0.631 0.512-1.143 1.143-1.143h5.866z"></path>
<path d="M21.671 23.007c-0.452 0.431-1.166 0.419-1.604-0.027s-0.436-1.16 0.003-1.604c1.472-1.441 2.3-3.415 2.297-5.475 0.003-1.908-0.707-3.748-1.992-5.159-0.28-0.301-0.377-0.73-0.253-1.123s0.449-0.688 0.852-0.774c0.402-0.086 0.82 0.051 1.093 0.359 1.667 1.831 2.59 4.22 2.586 6.696 0.003 2.674-1.072 5.235-2.982 7.106v0z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>volumn</title>
<path d="M7.009 10.023l7.296-5.856c0.343-0.275 0.813-0.329 1.21-0.139s0.649 0.591 0.649 1.031v21.801c-0 0.439-0.252 0.839-0.648 1.029s-0.865 0.137-1.208-0.137l-7.497-5.984h-5.667c-0.631 0-1.143-0.512-1.143-1.143v-9.459c0-0.631 0.512-1.143 1.143-1.143h5.866z"></path>
<path d="M21.671 23.007c-0.452 0.431-1.166 0.419-1.604-0.027s-0.436-1.16 0.003-1.604c1.472-1.441 2.3-3.415 2.297-5.475 0.003-1.908-0.707-3.748-1.992-5.159-0.28-0.301-0.377-0.73-0.253-1.123s0.449-0.688 0.852-0.774c0.402-0.086 0.82 0.051 1.093 0.359 1.667 1.831 2.59 4.22 2.586 6.696 0.003 2.674-1.072 5.235-2.982 7.106v0z"></path>
<path d="M27.104 27.962c-0.284 0.298-0.705 0.42-1.104 0.321s-0.714-0.405-0.824-0.801c-0.111-0.396-0-0.821 0.289-1.113 2.73-2.8 4.255-6.558 4.249-10.469 0-3.882-1.478-7.53-4.087-10.299-0.425-0.461-0.4-1.177 0.057-1.607s1.173-0.412 1.607 0.040c3.006 3.189 4.709 7.394 4.709 11.866 0 4.566-1.777 8.854-4.896 12.062z"></path>
<path d="M7.009 10.023l7.296-5.856c0.343-0.275 0.813-0.329 1.21-0.139s0.649 0.591 0.649 1.031v21.801c-0 0.439-0.252 0.839-0.648 1.029s-0.865 0.137-1.208-0.137l-7.497-5.984h-5.667c-0.631 0-1.143-0.512-1.143-1.143v-9.459c0-0.631 0.512-1.143 1.143-1.143h5.866z"></path>
<path d="M21.671 23.007c-0.452 0.431-1.166 0.419-1.604-0.027s-0.436-1.16 0.003-1.604c1.472-1.441 2.3-3.415 2.297-5.475 0.003-1.908-0.707-3.748-1.992-5.159-0.28-0.301-0.377-0.73-0.253-1.123s0.449-0.688 0.852-0.774c0.402-0.086 0.82 0.051 1.093 0.359 1.667 1.831 2.59 4.22 2.586 6.696 0.003 2.674-1.072 5.235-2.982 7.106v0z"></path>
<path d="M27.104 27.962c-0.284 0.298-0.705 0.42-1.104 0.321s-0.714-0.405-0.824-0.801c-0.111-0.396-0-0.821 0.289-1.113 2.73-2.8 4.255-6.558 4.249-10.469 0-3.882-1.478-7.53-4.087-10.299-0.425-0.461-0.4-1.177 0.057-1.607s1.173-0.412 1.607 0.040c3.006 3.189 4.709 7.394 4.709 11.866 0 4.566-1.777 8.854-4.896 12.062z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>zoom-in</title>
<path d="M22.062 14.97h-5.073v-5.073c0-0.554-0.449-1.003-1.003-1.003s-1.003 0.449-1.003 1.003v0 5.073h-5.073c-0.554 0-1.003 0.449-1.003 1.003s0.449 1.003 1.003 1.003v0h5.073v5.013c0 0.554 0.449 1.003 1.003 1.003s1.003-0.449 1.003-1.003v0-5.013h5.013c0.554 0 1.003-0.449 1.003-1.003s-0.449-1.003-1.003-1.003v0z"></path>
<path d="M26.574 25.999c2.824-2.755 4.576-6.597 4.576-10.849 0-8.367-6.783-15.15-15.15-15.15s-15.15 6.783-15.15 15.15c0 8.367 6.783 15.15 15.15 15.15 3.258 0 6.276-1.028 8.746-2.778l-0.047 0.032 3.369 4.011c0.224 0.268 0.559 0.437 0.932 0.437 0.67 0 1.214-0.543 1.214-1.214 0-0.296-0.106-0.568-0.283-0.779l0.002 0.002zM24.268 25.126l-0.842 0.602c-2.102 1.497-4.723 2.393-7.553 2.393-7.243 0-13.114-5.872-13.114-13.114s5.871-13.114 13.114-13.114c7.243 0 13.114 5.872 13.114 13.114 0 3.689-1.523 7.022-3.975 9.405l-0.003 0.003z"></path>
<path d="M22.062 14.97h-5.073v-5.073c0-0.554-0.449-1.003-1.003-1.003s-1.003 0.449-1.003 1.003v0 5.073h-5.073c-0.554 0-1.003 0.449-1.003 1.003s0.449 1.003 1.003 1.003v0h5.073v5.013c0 0.554 0.449 1.003 1.003 1.003s1.003-0.449 1.003-1.003v0-5.013h5.013c0.554 0 1.003-0.449 1.003-1.003s-0.449-1.003-1.003-1.003v0z"></path>
<path d="M26.574 25.999c2.824-2.755 4.576-6.597 4.576-10.849 0-8.367-6.783-15.15-15.15-15.15s-15.15 6.783-15.15 15.15c0 8.367 6.783 15.15 15.15 15.15 3.258 0 6.276-1.028 8.746-2.778l-0.047 0.032 3.369 4.011c0.224 0.268 0.559 0.437 0.932 0.437 0.67 0 1.214-0.543 1.214-1.214 0-0.296-0.106-0.568-0.283-0.779l0.002 0.002zM24.268 25.126l-0.842 0.602c-2.102 1.497-4.723 2.393-7.553 2.393-7.243 0-13.114-5.872-13.114-13.114s5.871-13.114 13.114-13.114c7.243 0 13.114 5.872 13.114 13.114 0 3.689-1.523 7.022-3.975 9.405l-0.003 0.003z"></path>
</svg>
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="32" viewBox="0 0 30 32">
<title>zoom-out</title>
<path d="M21.218 14.97h-12.152c-0.554 0-1.003 0.449-1.003 1.003s0.449 1.003 1.003 1.003v0h12.152c0.554 0 1.003-0.449 1.003-1.003s-0.449-1.003-1.003-1.003v0z"></path>
<path d="M25.73 25.999c2.824-2.755 4.576-6.597 4.576-10.849 0-8.367-6.783-15.15-15.15-15.15s-15.15 6.783-15.15 15.15c0 8.367 6.783 15.15 15.15 15.15 3.258 0 6.276-1.028 8.746-2.778l-0.047 0.032 3.369 4.011c0.224 0.268 0.559 0.437 0.932 0.437 0.67 0 1.214-0.543 1.214-1.214 0-0.296-0.106-0.568-0.283-0.779l0.002 0.002zM23.424 25.126l-0.842 0.602c-2.102 1.497-4.723 2.393-7.553 2.393-7.243 0-13.114-5.872-13.114-13.114s5.872-13.114 13.114-13.114c7.243 0 13.114 5.872 13.114 13.114 0 3.689-1.523 7.022-3.975 9.405l-0.003 0.003z"></path>
<path d="M21.218 14.97h-12.152c-0.554 0-1.003 0.449-1.003 1.003s0.449 1.003 1.003 1.003v0h12.152c0.554 0 1.003-0.449 1.003-1.003s-0.449-1.003-1.003-1.003v0z"></path>
<path d="M25.73 25.999c2.824-2.755 4.576-6.597 4.576-10.849 0-8.367-6.783-15.15-15.15-15.15s-15.15 6.783-15.15 15.15c0 8.367 6.783 15.15 15.15 15.15 3.258 0 6.276-1.028 8.746-2.778l-0.047 0.032 3.369 4.011c0.224 0.268 0.559 0.437 0.932 0.437 0.67 0 1.214-0.543 1.214-1.214 0-0.296-0.106-0.568-0.283-0.779l0.002 0.002zM23.424 25.126l-0.842 0.602c-2.102 1.497-4.723 2.393-7.553 2.393-7.243 0-13.114-5.872-13.114-13.114s5.872-13.114 13.114-13.114c7.243 0 13.114 5.872 13.114 13.114 0 3.689-1.523 7.022-3.975 9.405l-0.003 0.003z"></path>
</svg>
......@@ -57,7 +57,7 @@ const Progress: FunctionComponent = () => {
const Telemetry: FunctionComponent = () => {
const location = useLocation();
useEffect(() => {
globalThis._hmt.push(['_trackPageview', BASE_URI + location.pathname]);
window._hmt.push(['_trackPageview', BASE_URI + location.pathname]);
}, [location.pathname]);
return null;
};
......
......@@ -208,7 +208,7 @@ const Audio = React.forwardRef<AudioRef, AudioProps & WithStyled>(
}, []);
const startTimer = useCallback(() => {
tick();
timer.current = (globalThis.setInterval(tick, 250) as unknown) as number;
timer.current = (window.setInterval(tick, 250) as unknown) as number;
}, [tick]);
const stopTimer = useCallback(() => {
if (player.current) {
......@@ -217,7 +217,7 @@ const Audio = React.forwardRef<AudioRef, AudioProps & WithStyled>(
}
}
if (timer.current) {
globalThis.clearInterval(timer.current);
window.clearInterval(timer.current);
timer.current = null;
}
}, [tick]);
......
......@@ -6,16 +6,19 @@ import type {Icons} from '~/components/Icon';
import Tippy from '@tippyjs/react';
import styled from 'styled-components';
const Toolbox = styled.div<{reversed?: boolean}>`
const Toolbox = styled.div<{size?: number; reversed?: boolean}>`
font-size: ${em(16)};
line-height: 1;
height: 1em;
display: flex;
flex-direction: ${props => (props.reversed ? 'row-reverse' : 'row')};
align-items: center;
display: grid;
grid-template-columns: ${props => (props.size == null ? 'repeat(auto-fill, 1em)' : `repeat(${props.size}, 1em)`)};
grid-gap: ${rem(14)};
place-items: center;
justify-content: ${props => (props.reversed ? 'end' : 'start')};
align-content: center;
`;
const ToolboxItem = styled.a<{active?: boolean; reversed?: boolean}>`
const ToolboxItem = styled.a<{active?: boolean}>`
cursor: pointer;
color: ${props => (props.active ? 'var(--primary-color)' : 'var(--text-lighter-color)')};
${transitionProps('color')}
......@@ -27,10 +30,6 @@ const ToolboxItem = styled.a<{active?: boolean; reversed?: boolean}>`
&:active {
color: ${props => (props.active ? 'var(--primary-active-color)' : 'var(--text-color)')};
}
& + & {
margin: ${props => (props.reversed ? `0 ${rem(14)} 0 0` : `0 0 0 ${rem(14)}`)};
}
`;
type BaseChartToolboxItem = {
......@@ -86,19 +85,18 @@ const ChartToolbox: FunctionComponent<ChartToolboxProps & WithStyled> = ({
(item: ChartTooboxItem, index: number) => (
<ToolboxItem
key={index}
reversed={reversed}
active={item.toggle && !item.activeIcon && activeStatus[index]}
onClick={() => onClick(index)}
>
<Icon type={item.toggle ? (activeStatus[index] && item.activeIcon) || item.icon : item.icon} />
</ToolboxItem>
),
[activeStatus, onClick, reversed]
[activeStatus, onClick]
);
return (
<>
<Toolbox className={className} reversed={reversed}>
<Toolbox className={className} size={items.length} reversed={reversed}>
{items.map((item, index) =>
item.tooltip ? (
<Tippy
......
......@@ -253,9 +253,9 @@ const Graph = React.forwardRef<GraphRef, GraphProps>(
<Toolbox
items={[
{
icon: 'restore-size',
tooltip: t('graph:restore-size'),
onClick: () => dispatch('zoom-reset')
icon: 'zoom-in',
tooltip: t('graph:zoom-in'),
onClick: () => dispatch('zoom-in')
},
{
icon: 'zoom-out',
......@@ -263,9 +263,9 @@ const Graph = React.forwardRef<GraphRef, GraphProps>(
onClick: () => dispatch('zoom-out')
},
{
icon: 'zoom-in',
tooltip: t('graph:zoom-in'),
onClick: () => dispatch('zoom-in')
icon: 'restore-size',
tooltip: t('graph:restore-size'),
onClick: () => dispatch('zoom-reset')
}
]}
reversed
......
......@@ -22,16 +22,14 @@ const useClickOutside = <T extends HTMLElement>(callback: () => void) => {
);
useEffect(() => {
if (globalThis.document) {
document.addEventListener('mousedown', clickListener);
document.addEventListener('touchstart', clickListener);
document.addEventListener('keyup', escapeListener);
return () => {
document.removeEventListener('mousedown', clickListener);
document.removeEventListener('touchstart', clickListener);
document.removeEventListener('keyup', escapeListener);
};
}
document.addEventListener('mousedown', clickListener);
document.addEventListener('touchstart', clickListener);
document.addEventListener('keyup', escapeListener);
return () => {
document.removeEventListener('mousedown', clickListener);
document.removeEventListener('touchstart', clickListener);
document.removeEventListener('keyup', escapeListener);
};
}, [clickListener, escapeListener]);
return ref;
......
......@@ -26,54 +26,55 @@ const useECharts = <T extends HTMLElement, W extends HTMLElement = HTMLDivElemen
saveAsImage: (filename?: string) => void;
} => {
const ref = useRef<T | null>(null);
const echartInstance = useRef<ECharts | null>(null);
const [echart, setEchart] = useState<ECharts | null>(null);
const theme = useTheme();
const onInit = useRef(options.onInit);
const onDispose = useRef(options.onDispose);
const hideTip = useCallback(() => echartInstance.current?.dispatchAction({type: 'hideTip'}), []);
const hideTip = useCallback(() => echart?.dispatchAction({type: 'hideTip'}), [echart]);
const createChart = useCallback(() => {
(async () => {
if (!ref.current) {
return;
}
const {default: echarts} = await import('echarts');
if (options.gl) {
await import('echarts-gl');
}
if (!ref.current) {
return;
}
echartInstance.current = echarts.init((ref.current as unknown) as HTMLDivElement);
const echartInstance = echarts.init((ref.current as unknown) as HTMLDivElement);
ref.current.addEventListener('mouseleave', hideTip);
setTimeout(() => {
if (options.zoom) {
echartInstance.current?.dispatchAction({
echartInstance.dispatchAction({
type: 'takeGlobalCursor',
key: 'dataZoomSelect',
dataZoomSelectActive: true
});
}
if (echartInstance.current) {
onInit.current?.(echartInstance.current);
if (echartInstance) {
onInit.current?.(echartInstance);
}
}, 0);
setEchart(echartInstance.current);
setEchart(echartInstance);
})();
}, [options.gl, options.zoom, hideTip]);
const destroyChart = useCallback(() => {
if (echartInstance.current) {
onDispose.current?.(echartInstance.current);
if (echart) {
onDispose.current?.(echart);
echart.dispose();
ref.current?.removeEventListener('mouseleave', hideTip);
setEchart(null);
}
echartInstance.current?.dispose();
ref.current?.removeEventListener('mouseleave', hideTip);
setEchart(null);
}, [hideTip]);
}, [hideTip, echart]);
useEffect(() => {
createChart();
......@@ -82,7 +83,7 @@ const useECharts = <T extends HTMLElement, W extends HTMLElement = HTMLDivElemen
useEffect(() => {
if (options.loading) {
echartInstance.current?.showLoading('default', {
echart?.showLoading('default', {
text: '',
color: primaryColor,
textColor: themes[theme].textColor,
......@@ -90,9 +91,9 @@ const useECharts = <T extends HTMLElement, W extends HTMLElement = HTMLDivElemen
zlevel: 0
});
} else {
echartInstance.current?.hideLoading();
echart?.hideLoading();
}
}, [options.loading, theme]);
}, [options.loading, theme, echart]);
const wrapper = useRef<W | null>(null);
useLayoutEffect(() => {
......@@ -100,13 +101,13 @@ const useECharts = <T extends HTMLElement, W extends HTMLElement = HTMLDivElemen
const w = wrapper.current;
if (w) {
const observer = new ResizeObserver(() => {
echartInstance.current?.resize();
echart?.resize();
});
observer.observe(w);
return () => observer.unobserve(w);
}
}
}, [options.autoFit]);
}, [options.autoFit, echart]);
const saveAsImage = useCallback(
(filename?: string) => {
......
......@@ -10,7 +10,7 @@ import store from '~/store';
const TELEMETRY_ID: string = import.meta.env.SNOWPACK_PUBLIC_TELEMETRY_ID;
globalThis._hmt = globalThis._hmt || [];
window._hmt = window._hmt || [];
if (import.meta.env.MODE === 'production' && TELEMETRY_ID) {
(function () {
const hm = document.createElement('script');
......
......@@ -10,16 +10,17 @@ import {useTranslation} from 'react-i18next';
const CenterWrapper = styled.div`
${size(`calc(100vh - ${headerHeight})`, '100vw')}
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
overscroll-behavior: none;
`;
const Loading = styled.div`
font-size: ${rem(16)};
height: 100%;
line-height: ${rem(60)};
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
`;
const IndexPage: FunctionComponent = () => {
......
......@@ -22,7 +22,7 @@ const Audio: FunctionComponent = () => {
const audioContext = useRef<AudioContext>();
useEffect(() => {
// safari only has webkitAudioContext
const AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;
const AudioContext = window.AudioContext || window.webkitAudioContext;
audioContext.current = new AudioContext();
return () => {
......
......@@ -2,6 +2,7 @@ import Fetch from 'i18next-fetch-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
import i18n from 'i18next';
import {initReactI18next} from 'react-i18next';
import moment from 'moment';
const {SNOWPACK_PUBLIC_DEFAULT_LANGUAGE, SNOWPACK_PUBLIC_LANGUAGES, SNOWPACK_PUBLIC_PATH} = import.meta.env;
......@@ -9,6 +10,14 @@ const defaultLanguage: string = SNOWPACK_PUBLIC_DEFAULT_LANGUAGE;
const allLanguages: string[] = SNOWPACK_PUBLIC_LANGUAGES.split(',');
const PUBLIC_PATH: string = SNOWPACK_PUBLIC_PATH;
allLanguages.forEach(async (lang: string) => {
try {
moment.updateLocale(lang, await (await fetch(`${PUBLIC_PATH}/locales/${lang}/moment.json`)).json());
} catch {
// ignore
}
});
i18n.use(initReactI18next)
.use(Fetch)
.use(LanguageDetector)
......
declare global {
interface Window {
__visualdl_instance_id__?: string | string[];
webkitAudioContext: AudioContext;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
_hmt: any[];
}
namespace globalThis {
/* eslint-disable no-var */
var __visualdl_instance_id__: string | string[] | undefined;
var webkitAudioContext: AudioContext | undefined;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var _hmt: any[];
/* eslint-enable no-var */
}
}
export {};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册