perf: auto load icons (#688)
* perf: icon * perf: icon * doc * perf: simple edit ui * doc * doc * doc * doc
BIN
docSite/assets/imgs/sealos_price.png
Normal file
After Width: | Height: | Size: 148 KiB |
@@ -50,9 +50,12 @@ FastGPT 商业版软件根据不同的部署方式,分为 4 类收费模式。
|
||||
| Sealos全托管 | 1. 有效期内免费升级。<br>2. 免运维服务&数据库。<br>3. 赠送 10000 元 Sealos 云资源额度。 | 半天 | 3000元起/月(3个月起)<br>或<br>30000元起/年 |
|
||||
| 自有服务器-单机版 | 1. 6个版本的升级服务。 | 14天内 | 60000元/套(不限时长) |
|
||||
| 自有服务器-Sealos版 | 1. 6个版本的升级服务。 | 14天内 | 150000元/套(不限时长)|
|
||||
|
||||
{{< /table >}}
|
||||
|
||||
{{% alert icon="🤖 " context="success" %}}
|
||||
6个版本的升级服务不是指只能用 6 个版本,而是指依赖 FastGPT 团队提供的升级服务。大部分时候,建议自行升级,也不麻烦。
|
||||
{{% /alert %}}
|
||||
|
||||
|
||||
## 技术支持
|
||||
|
||||
@@ -85,3 +88,10 @@ FastGPT 商业版软件根据不同的部署方式,分为 4 类收费模式。
|
||||
2. 二次开发如何操作?
|
||||
|
||||
可自行修改开源版代码进行二次开发,不支持修改商业版镜像。
|
||||
|
||||
|
||||
## Sealos 费用
|
||||
|
||||
Sealos 云服务属于按量计费,下面是它的价格表:
|
||||
|
||||

|
||||
|
@@ -178,7 +178,8 @@ weight: 708
|
||||
{
|
||||
"model": "gpt-3.5-turbo-1106",
|
||||
"name": "GPT35-1106",
|
||||
"price": 0, // 除以 100000 后等于1个token的价格
|
||||
"inputPrice": 0, // 输入价格。 xx元/1k tokens
|
||||
"outputPrice": 0, // 输出价格。 xx元/1k tokens
|
||||
"maxContext": 16000, // 最大上下文长度
|
||||
"maxResponse": 4000, // 最大回复长度
|
||||
"quoteMaxToken": 2000, // 最大引用内容长度
|
||||
@@ -192,7 +193,8 @@ weight: 708
|
||||
"name": "GPT35-16k",
|
||||
"maxContext": 16000,
|
||||
"maxResponse": 16000,
|
||||
"price": 0,
|
||||
"inputPrice": 0,
|
||||
"outputPrice": 0,
|
||||
"quoteMaxToken": 8000,
|
||||
"maxTemperature": 1.2,
|
||||
"censor": false,
|
||||
@@ -204,7 +206,8 @@ weight: 708
|
||||
"name": "GPT4-8k",
|
||||
"maxContext": 8000,
|
||||
"maxResponse": 8000,
|
||||
"price": 0,
|
||||
"inputPrice": 0,
|
||||
"outputPrice": 0,
|
||||
"quoteMaxToken": 4000,
|
||||
"maxTemperature": 1.2,
|
||||
"censor": false,
|
||||
@@ -216,7 +219,8 @@ weight: 708
|
||||
"name": "GPT4-Vision",
|
||||
"maxContext": 128000,
|
||||
"maxResponse": 4000,
|
||||
"price": 0,
|
||||
"inputPrice": 0,
|
||||
"outputPrice": 0,
|
||||
"quoteMaxToken": 100000,
|
||||
"maxTemperature": 1.2,
|
||||
"censor": false,
|
||||
@@ -239,7 +243,8 @@ weight: 708
|
||||
"name": "GPT35-1106",
|
||||
"maxContext": 16000,
|
||||
"maxResponse": 4000,
|
||||
"price": 0,
|
||||
"inputPrice": 0,
|
||||
"outputPrice": 0,
|
||||
"toolChoice": true, // 是否支持openai的 toolChoice, 不支持的模型需要设置为 false,会走提示词生成
|
||||
"functionPrompt": ""
|
||||
},
|
||||
@@ -248,7 +253,7 @@ weight: 708
|
||||
"name": "GPT4-8k",
|
||||
"maxContext": 8000,
|
||||
"maxResponse": 8000,
|
||||
"price": 0,
|
||||
"inputPrice": 0,
|
||||
"toolChoice": true,
|
||||
"functionPrompt": ""
|
||||
}
|
||||
@@ -259,7 +264,7 @@ weight: 708
|
||||
"name": "GPT35-1106",
|
||||
"maxContext": 16000,
|
||||
"maxResponse": 4000,
|
||||
"price": 0,
|
||||
"outputPrice": 0,
|
||||
"toolChoice": true,
|
||||
"functionPrompt": ""
|
||||
}
|
||||
@@ -270,14 +275,15 @@ weight: 708
|
||||
"name": "GPT35-1106",
|
||||
"maxContext": 1600,
|
||||
"maxResponse": 4000,
|
||||
"price": 0
|
||||
"inputPrice": 0,
|
||||
"outputPrice": 0,
|
||||
}
|
||||
],
|
||||
"vectorModels": [ // 向量模型
|
||||
{
|
||||
"model": "text-embedding-ada-002",
|
||||
"name": "Embedding-2",
|
||||
"price": 0.2,
|
||||
"inputPrice": 0,
|
||||
"defaultToken": 700,
|
||||
"maxToken": 3000
|
||||
}
|
||||
@@ -287,7 +293,7 @@ weight: 708
|
||||
{
|
||||
"model": "tts-1",
|
||||
"name": "OpenAI TTS1",
|
||||
"price": 0,
|
||||
"inputPrice": 0,
|
||||
"baseUrl": "",
|
||||
"key": "",
|
||||
"voices": [
|
||||
@@ -303,7 +309,7 @@ weight: 708
|
||||
"whisperModel": {
|
||||
"model": "whisper-1",
|
||||
"name": "Whisper1",
|
||||
"price": 0
|
||||
"inputPrice": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@@ -35,12 +35,16 @@ OneAPI 中没有配置该模型渠道。
|
||||
|
||||
### 如何更新?
|
||||
|
||||
执行下面命令会自动拉取最新镜像,一般情况下不需要执行额外操作。
|
||||
1. 查看[更新文档](/docs/development/upgrading/intro/),确认要升级的版本,避免跨版本升级。
|
||||
2. 修改镜像 tag 到指定版本
|
||||
3. 执行下面命令会自动拉取镜像:
|
||||
|
||||
```bash
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
```
|
||||
```bash
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. 执行初始化脚本(如果有)
|
||||
|
||||
### 如何自定义配置文件?
|
||||
|
||||
|
@@ -59,14 +59,17 @@ FastGPT 商业版共包含了3个应用(fastgpt, fastgpt-plus, fastgpt-admin
|
||||
例如,目前是4.5 版本,要升级到4.5.1,就先把镜像版本改成v4.5.1,执行一下升级脚本,等待完成后再继续升级。如果目标版本不需要执行初始化,则可以跳过。
|
||||
|
||||
升级步骤:
|
||||
1. 打开sealos的应用管理
|
||||
2. 有3个应用 fastgpt , fastgpt-plugin 和 fastgpt-admin
|
||||
3. 点击对应应用右边3个点,变更。或者点详情后右上角的变更。
|
||||
4. 修改镜像名栏
|
||||
|
||||
1. 查看[更新文档](/docs/development/upgrading/intro/),确认要升级的版本,避免跨版本升级。
|
||||
2. 打开 sealos 的应用管理
|
||||
3. 有2个应用 fastgpt , fastgpt-pro
|
||||
4. 点击对应应用右边3个点,变更。或者点详情后右上角的变更。
|
||||
5. 修改镜像的版本号
|
||||
|
||||

|
||||
|
||||
5. 点击变更/重启,会自动拉取最新镜像进行更新
|
||||
6. 执行对应版本的初始化脚本
|
||||
6. 点击变更/重启,会自动拉取最新镜像进行更新
|
||||
7. 执行对应版本的初始化脚本(如果有)
|
||||
|
||||
### 如何获取 FastGPT 访问链接
|
||||
|
||||
@@ -88,34 +91,6 @@ FastGPT 商业版共包含了3个应用(fastgpt, fastgpt-plus, fastgpt-admin
|
||||
|
||||
[配置文件参考](https://doc.fastgpt.in/docs/development/configuration/)
|
||||
|
||||
FeConfig 参考下面(目前未做可视化)
|
||||
```
|
||||
"FeConfig": {
|
||||
"show_emptyChat": false, // 是否展示聊天时空白的内容
|
||||
"show_register": true, // 展示注册按键
|
||||
"show_appStore": false, // 应用市场(暂时不可用)
|
||||
"show_contact": false, // 联系方式(目前不可配置,直接false)
|
||||
"show_git": false, // 展示 github
|
||||
"show_doc": false, // 展示文档
|
||||
"show_pay": true, // 展示支付
|
||||
"show_openai_account": false, // 用户可自定义 openai key
|
||||
"show_promotion": false, // 邀请好友机制
|
||||
"docUrl": "https://doc.fastgpt.in", // 文档基本地址
|
||||
"systemTitle": "FastGPT", // 系统的 title
|
||||
"googleClientVerKey": "", // 谷歌 v3 校验前端凭证
|
||||
"isPlus": true, // 直接设置 true
|
||||
"oauth": { // oauth登录
|
||||
"github": "",
|
||||
"google": ""
|
||||
},
|
||||
"limit": {
|
||||
"exportLimitMinutes": 0 // 导出间隔限制
|
||||
},
|
||||
"scripts": [
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 修改站点名称以及 favicon
|
||||
修改应用的环境变量,增加
|
||||
|
||||
@@ -134,6 +109,7 @@ SYSTEM_FAVICON 可以是一个网络地址
|
||||
新增一个挂载文件,文件名为:/app/projects/app/public/icon/logo.svg ,值为 svg 对应的值。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 管理后台
|
||||
@@ -148,45 +124,8 @@ SYSTEM_FAVICON 可以是一个网络地址
|
||||
"license": "",
|
||||
"system": {
|
||||
"title": "" // 系统名称
|
||||
},
|
||||
"censor": {
|
||||
"BAIDU_TEXT_CENSOR_CLIENTID": "", // 百度文本安全校验
|
||||
"BAIDU_TEXT_CENSOR_CLIENTSECRET": "" // 百度文本安全校验
|
||||
},
|
||||
"auth": {
|
||||
"googleServiceVerKey": "", // 谷歌 v3 校验
|
||||
"github": { // github oauth
|
||||
"clientId": "",
|
||||
"secret": ""
|
||||
},
|
||||
"google": { // google oauth
|
||||
"clientId": "",
|
||||
"secret": ""
|
||||
},
|
||||
"email": { // 注册邮箱配置
|
||||
"service": "qq",
|
||||
"user": "",
|
||||
"pass": ""
|
||||
},
|
||||
"phone": { // 阿里短信配置
|
||||
"SNED_PHONE_ACCESSKEYID": "",
|
||||
"SNED_PHONE_ACCESSSECRET": "",
|
||||
"SNED_PHONE_SIGNNAME": "",
|
||||
"SNED_PHONE_TEMPLATE": ""
|
||||
}
|
||||
},
|
||||
"pay": { // 微信支付配置
|
||||
"wx": {
|
||||
"WX_APPID": "",
|
||||
"WX_MCHID": "",
|
||||
"WX_V3_CODE": "",
|
||||
"WX_NOTIFY_URL": "",
|
||||
"WX_SERIAL_NO": "",
|
||||
"WX_PRIVATE_KEY": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### One API 使用
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'V4.6.6-alpha(需要改配置文件)'
|
||||
title: 'V4.6.6(需要改配置文件)'
|
||||
description: 'FastGPT V4.6.6'
|
||||
icon: 'upgrade'
|
||||
draft: false
|
||||
@@ -7,8 +7,6 @@ toc: true
|
||||
weight: 830
|
||||
---
|
||||
|
||||
**版本仍在开发中……**
|
||||
|
||||
## 配置文件变更
|
||||
|
||||
为了减少代码重复度,我们对配置文件做了一些修改:[点击查看最新的配置文件](/docs/development/configuration/)
|
||||
@@ -18,4 +16,5 @@ weight: 830
|
||||
1. 新增 - 搜索方式:分离向量语义检索,全文检索和重排,通过 RRF 进行排序合并。
|
||||
2. 优化 - 问题分类提示词,id引导。测试国产商用 api 模型(百度阿里智谱讯飞)使用 Prompt 模式均可分类。
|
||||
3. UI 优化,未来将逐步替换新的UI设计。
|
||||
4. 查看 [FastGPT 2024 RoadMap](https://github.com/labring/FastGPT?tab=readme-ov-file#-%E5%9C%A8%E7%BA%BF%E4%BD%BF%E7%94%A8)
|
||||
4. 优化代码:Icon 抽离和自动化获取。
|
||||
5. 查看 [FastGPT 2024 RoadMap](https://github.com/labring/FastGPT?tab=readme-ov-file#-%E5%9C%A8%E7%BA%BF%E4%BD%BF%E7%94%A8)
|
@@ -49,7 +49,7 @@ FastGPT 采用了 `PostgresSQL` 的 `PG Vector` 插件作为向量检索器,
|
||||
|
||||
| 库 | 集合 | 数据 |
|
||||
| --- | --- | --- |
|
||||
|  |  |  |
|
||||
|  |  |  |
|
||||
|
||||
### 导入数据方案1 - 直接分段导入
|
||||
|
||||
@@ -57,7 +57,7 @@ FastGPT 采用了 `PostgresSQL` 的 `PG Vector` 插件作为向量检索器,
|
||||
|
||||
| 交互 | 结果 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
### 导入数据方案2 - QA导入
|
||||
@@ -66,7 +66,7 @@ FastGPT 采用了 `PostgresSQL` 的 `PG Vector` 插件作为向量检索器,
|
||||
|
||||
| 交互 | 结果 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
### 导入数据方案3 - 手动录入
|
||||
|
||||
@@ -74,7 +74,7 @@ FastGPT 采用了 `PostgresSQL` 的 `PG Vector` 插件作为向量检索器,
|
||||
|
||||
| | | |
|
||||
| --- | --- | --- |
|
||||
|  |  |  |
|
||||
|  |  |  |
|
||||
|
||||
### 导入数据方案4 - CSV录入
|
||||
|
||||
|
@@ -21,7 +21,7 @@ weight: 504
|
||||
密钥需要自己保管好,一旦关闭就无法再复制密钥,只能创建新密钥再复制。
|
||||
{{% /alert %}}
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 3. 创建 docker-compose.yml 文件
|
||||
|
@@ -15,7 +15,7 @@ weight: 505
|
||||
密钥需要自己保管好,一旦关闭就无法再复制密钥,只能创建新密钥再复制。
|
||||
{{% /alert %}}
|
||||
|
||||

|
||||

|
||||
|
||||
{{% alert icon="🍅" context="success" %}}
|
||||
Tips: 安全起见,你可以设置一个额度或者过期时间,放置 key 被滥用。
|
||||
|
@@ -9,7 +9,7 @@ weight: 402
|
||||
|
||||
| | |
|
||||
| --------------------- | --------------------- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
如上图,利用 HTTP 模块,你可以外接一个搜索引擎作为AI回复的参考资料。这里以调用 Google Search API 为例。注意:本文主要是为了介绍 HTTP 模型,具体的搜索效果需要依赖提示词和搜索引擎,尤其是【搜索引擎】,简单的搜索引擎无法获取更详细的内容,这部分可能需要更多的调试。
|
||||
|
@@ -9,8 +9,8 @@ weight: 403
|
||||
|
||||
| | |
|
||||
| --------------------- | --------------------- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ weight: 403
|
||||
|
||||
## 2. 问题分类
|
||||
|
||||

|
||||

|
||||
|
||||
如上图,用户问题作为对话的起点,流入【问题分类模块】,根据用户问题的内容,判断用户是询问实验室相关问题、预约实验室或其他问题。如果用户询问的是非实验问题,会直接拒绝回复内容。再根据问题是属于询问实验室相关/预约类问题,执行不同的流程。
|
||||
|
||||
@@ -43,7 +43,7 @@ weight: 403
|
||||
|
||||
| | | |
|
||||
| --------------------- | --------------------- |--------------------- |
|
||||
|  |  |  |
|
||||
|  |  |  |
|
||||
|
||||
内容提取是 LLM 带来的十分重要的能力,可以从自然语言中提取出结构化的数据,从而方便进行逻辑处理。
|
||||
|
||||
@@ -57,7 +57,7 @@ weight: 403
|
||||
|
||||
HTTP 模块允许你调用任意 GET/POST 类型的 HTTP 接口,从而实现一些复杂的业务逻辑。这里我们调用了一个预约实验室的接口,传入的是信息提取模块的结果和预约行为。
|
||||
|
||||

|
||||

|
||||
|
||||
具体的入参结构可以参考[HTTP模块](/docs/workflow/modules/http/),实在不行在接口里多打印 Debug。
|
||||
|
||||
|
@@ -13,7 +13,7 @@ weight: 364
|
||||
- 有外部输入
|
||||
- 触发执行
|
||||
|
||||

|
||||

|
||||
|
||||
## 背景
|
||||
|
||||
@@ -21,11 +21,11 @@ weight: 364
|
||||
|
||||
在搜索的过程中,尤其是连续对话的搜索,我们通常会发现后续的问题难以搜索到合适的内容,其中一个原因是知识库搜索只会使用“当前”的问题去执行。看下面的例子:
|
||||
|
||||

|
||||

|
||||
|
||||
用户在提问“第二点是什么”的时候,只会去知识库里查找“第二点是什么”,压根查不到内容。实际上需要查询的是“QA结构是什么”。因此我们需要引入一个【问题补全】模块,来对用户当前的问题进行补全,从而使得知识库搜索能够搜索到合适的内容。使用补全后效果如下:
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 功能
|
||||
|
@@ -18,8 +18,8 @@ weight: 354
|
||||
|
||||
| | |
|
||||
| --------------------- | --------------------- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
## 介绍
|
||||
|
@@ -15,7 +15,7 @@ weight: 355
|
||||
- 触发执行
|
||||
- 核中核模块
|
||||
|
||||

|
||||

|
||||
|
||||
## 介绍
|
||||
|
||||
|
@@ -7,7 +7,9 @@
|
||||
"format-code": "prettier --config \"./.prettierrc.js\" --write \"./**/src/**/*.{ts,tsx,scss}\"",
|
||||
"format-doc": "zhlint --dir ./docSite *.md --fix",
|
||||
"gen:theme-typings": "chakra-cli tokens projects/app/src/web/styles/theme.ts --out node_modules/.pnpm/node_modules/@chakra-ui/styled-system/dist/theming.types.d.ts",
|
||||
"postinstall": "sh ./scripts/postinstall.sh"
|
||||
"postinstall": "sh ./scripts/postinstall.sh",
|
||||
"initIcon": "node ./scripts/icon/init.js",
|
||||
"previewIcon": "node ./scripts/icon/index.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@chakra-ui/cli": "^2.4.1",
|
||||
|
@@ -42,7 +42,7 @@ export const AiCFR: FlowModuleTemplateType = {
|
||||
label: 'core.module.input.label.cfr background',
|
||||
max: 300,
|
||||
valueType: ModuleIOValueTypeEnum.string,
|
||||
description: 'core.module.input.description.cfr background',
|
||||
description: 'core.app.edit.cfr background tip',
|
||||
placeholder: 'core.module.input.placeholder.cfr background',
|
||||
showTargetInApp: true,
|
||||
showTargetInPlugin: true
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { Flex, type FlexProps } from '@chakra-ui/react';
|
||||
import MyIcon from '@/components/Icon';
|
||||
import MyIcon from './index';
|
||||
|
||||
const CloseIcon = (props: FlexProps) => {
|
||||
return (
|
||||
@@ -14,7 +14,7 @@ const CloseIcon = (props: FlexProps) => {
|
||||
_hover={{ bg: 'myGray.200' }}
|
||||
{...props}
|
||||
>
|
||||
<MyIcon name={'closeLight'} w={'12px'} color={'myGray.500'} />
|
||||
<MyIcon name={'common/closeLight'} w={'12px'} color={'myGray.500'} />
|
||||
</Flex>
|
||||
);
|
||||
};
|
@@ -1,159 +1,129 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import type { IconProps } from '@chakra-ui/react';
|
||||
import { Icon } from '@chakra-ui/react';
|
||||
// @ts-nocheck
|
||||
|
||||
const iconPaths = {
|
||||
copy: () => import('./icons/copy.svg'),
|
||||
delete: () => import('./icons/delete.svg'),
|
||||
stop: () => import('./icons/stop.svg'),
|
||||
export const iconPaths = {
|
||||
chat: () => import('./icons/chat.svg'),
|
||||
chatSend: () => import('./icons/chatSend.svg'),
|
||||
closeSolid: () => import('./icons/closeSolid.svg'),
|
||||
collectionLight: () => import('./icons/collectionLight.svg'),
|
||||
collectionSolid: () => import('./icons/collectionSolid.svg'),
|
||||
empty: () => import('./icons/empty.svg'),
|
||||
back: () => import('./icons/back.svg'),
|
||||
backFill: () => import('./icons/fill/back.svg'),
|
||||
more: () => import('./icons/more.svg'),
|
||||
tabbarChat: () => import('./icons/phoneTabbar/chat.svg'),
|
||||
tabbarModel: () => import('./icons/phoneTabbar/app.svg'),
|
||||
tabbarMore: () => import('./icons/phoneTabbar/more.svg'),
|
||||
tabbarMe: () => import('./icons/phoneTabbar/me.svg'),
|
||||
closeSolid: () => import('./icons/closeSolid.svg'),
|
||||
wx: () => import('./icons/wx.svg'),
|
||||
out: () => import('./icons/out.svg'),
|
||||
git: () => import('./icons/git.svg'),
|
||||
gitFill: () => import('./icons/fill/git.svg'),
|
||||
googleFill: () => import('./icons/fill/google.svg'),
|
||||
menu: () => import('./icons/menu.svg'),
|
||||
edit: () => import('./icons/edit.svg'),
|
||||
inform: () => import('./icons/inform.svg'),
|
||||
export: () => import('./icons/export.svg'),
|
||||
text: () => import('./icons/text.svg'),
|
||||
history: () => import('./icons/history.svg'),
|
||||
kbTest: () => import('./icons/kbTest.svg'),
|
||||
date: () => import('./icons/date.svg'),
|
||||
apikey: () => import('./icons/apikey.svg'),
|
||||
apikeyFill: () => import('./icons/fill/apikey.svg'),
|
||||
save: () => import('./icons/save.svg'),
|
||||
minus: () => import('./icons/minus.svg'),
|
||||
chat: () => import('./icons/light/chat.svg'),
|
||||
chatFill: () => import('./icons/fill/chat.svg'),
|
||||
clear: () => import('./icons/light/clear.svg'),
|
||||
apiLight: () => import('./icons/light/appApi.svg'),
|
||||
overviewLight: () => import('./icons/light/overview.svg'),
|
||||
settingLight: () => import('./icons/light/setting.svg'),
|
||||
shareLight: () => import('./icons/light/share.svg'),
|
||||
dbLight: () => import('./icons/light/db.svg'),
|
||||
dbFill: () => import('./icons/fill/db.svg'),
|
||||
appStoreLight: () => import('./icons/light/appStore.svg'),
|
||||
appStoreFill: () => import('./icons/fill/appStore.svg'),
|
||||
meLight: () => import('./icons/light/me.svg'),
|
||||
meFill: () => import('./icons/fill/me.svg'),
|
||||
welcomeText: () => import('./icons/modules/welcomeText.svg'),
|
||||
variable: () => import('./icons/modules/variable.svg'),
|
||||
setTop: () => import('./icons/light/setTop.svg'),
|
||||
fullScreenLight: () => import('./icons/light/fullScreen.svg'),
|
||||
voice: () => import('./icons/voice.svg'),
|
||||
html: () => import('./icons/file/html.svg'),
|
||||
pdf: () => import('./icons/file/pdf.svg'),
|
||||
markdown: () => import('./icons/file/markdown.svg'),
|
||||
importLight: () => import('./icons/light/import.svg'),
|
||||
manualImport: () => import('./icons/file/manualImport.svg'),
|
||||
indexImport: () => import('./icons/file/indexImport.svg'),
|
||||
csvImport: () => import('./icons/file/csv.svg'),
|
||||
qaImport: () => import('./icons/file/qaImport.svg'),
|
||||
uploadFile: () => import('./icons/file/uploadFile.svg'),
|
||||
closeLight: () => import('./icons/light/close.svg'),
|
||||
customTitle: () => import('./icons/light/customTitle.svg'),
|
||||
billRecordLight: () => import('./icons/light/billRecord.svg'),
|
||||
informLight: () => import('./icons/light/inform.svg'),
|
||||
'support/pay/payRecordLight': () => import('./icons/support/pay/payRecordLight.svg'),
|
||||
'support/account/loginoutLight': () => import('./icons/support/account/loginoutLight.svg'),
|
||||
'core/chat/chatModelTag': () => import('./icons/core/chat/chatModelTag.svg'),
|
||||
'common/addCircleLight': () => import('./icons/common/addCircleLight.svg'),
|
||||
'common/backFill': () => import('./icons/common/backFill.svg'),
|
||||
'common/backLight': () => import('./icons/common/backLight.svg'),
|
||||
'common/clearLight': () => import('./icons/common/clearLight.svg'),
|
||||
'common/closeLight': () => import('./icons/common/closeLight.svg'),
|
||||
'common/confirm/commonTip': () => import('./icons/common/confirm/commonTip.svg'),
|
||||
'common/confirm/deleteTip': () => import('./icons/common/confirm/deleteTip.svg'),
|
||||
'common/courseLight': () => import('./icons/common/courseLight.svg'),
|
||||
'common/customTitleLight': () => import('./icons/common/customTitleLight.svg'),
|
||||
'common/file/move': () => import('./icons/common/file/move.svg'),
|
||||
'common/fullScreenLight': () => import('./icons/common/fullScreenLight.svg'),
|
||||
'common/gitFill': () => import('./icons/common/gitFill.svg'),
|
||||
'common/gitLight': () => import('./icons/common/gitLight.svg'),
|
||||
'common/googleFill': () => import('./icons/common/googleFill.svg'),
|
||||
'common/importLight': () => import('./icons/common/importLight.svg'),
|
||||
'common/inviteLight': () => import('./icons/common/inviteLight.svg'),
|
||||
'common/language/en': () => import('./icons/common/language/en.svg'),
|
||||
'common/language/zh': () => import('./icons/common/language/zh.svg'),
|
||||
'support/outlink/shareLight': () => import('./icons/support/outlink/shareLight.svg'),
|
||||
'support/outlink/iframeLight': () => import('./icons/support/outlink/iframeLight.svg'),
|
||||
'common/addCircleLight': () => import('./icons/common/addCircleLight.svg'),
|
||||
'common/loading': () => import('./icons/common/loading.svg'),
|
||||
'common/navbar/pluginFill': () => import('./icons/common/navbar/pluginFill.svg'),
|
||||
'common/navbar/pluginLight': () => import('./icons/common/navbar/pluginLight.svg'),
|
||||
'common/overviewLight': () => import('./icons/common/overviewLight.svg'),
|
||||
'common/playFill': () => import('./icons/common/playFill.svg'),
|
||||
'common/courseLight': () => import('./icons/common/courseLight.svg'),
|
||||
'support/account/promotionLight': () => import('./icons/support/account/promotionLight.svg'),
|
||||
'core/app/logsLight': () => import('./icons/core/app/logsLight.svg'),
|
||||
'core/chat/feedback/badLight': () => import('./icons/core/chat/feedback/badLight.svg'),
|
||||
'core/chat/feedback/goodLight': () => import('./icons/core/chat/feedback/goodLight.svg'),
|
||||
'core/app/markLight': () => import('./icons/core/app/markLight.svg'),
|
||||
'common/playLight': () => import('./icons/common/playLight.svg'),
|
||||
'common/questionLight': () => import('./icons/common/questionLight.svg'),
|
||||
'common/refreshLight': () => import('./icons/common/refreshLight.svg'),
|
||||
'common/retryLight': () => import('./icons/common/retryLight.svg'),
|
||||
'common/rightArrowLight': () => import('./icons/common/rightArrowLight.svg'),
|
||||
'common/routePushLight': () => import('./icons/common/routePushLight.svg'),
|
||||
'common/searchLight': () => import('./icons/common/searchLight.svg'),
|
||||
'common/file/move': () => import('./icons/common/file/move.svg'),
|
||||
'core/app/questionGuide': () => import('./icons/core/app/questionGuide.svg'),
|
||||
'common/loading': () => import('./icons/common/loading.svg'),
|
||||
'core/app/aiLight': () => import('./icons/core/app/aiLight.svg'),
|
||||
'core/app/aiFill': () => import('./icons/core/app/aiFill.svg'),
|
||||
'common/settingLight': () => import('./icons/common/settingLight.svg'),
|
||||
'common/text/t': () => import('./icons/common/text/t.svg'),
|
||||
'common/navbar/pluginLight': () => import('./icons/common/navbar/pluginLight.svg'),
|
||||
'common/navbar/pluginFill': () => import('./icons/common/navbar/pluginFill.svg'),
|
||||
'common/refreshLight': () => import('./icons/common/refreshLight.svg'),
|
||||
'core/module/previewLight': () => import('./icons/core/module/previewLight.svg'),
|
||||
'core/chat/quoteFill': () => import('./icons/core/chat/quoteFill.svg'),
|
||||
'core/chat/QGFill': () => import('./icons/core/chat/QGFill.svg'),
|
||||
'common/tickFill': () => import('./icons/common/tickFill.svg'),
|
||||
'common/inviteLight': () => import('./icons/common/inviteLight.svg'),
|
||||
'support/team/memberLight': () => import('./icons/support/team/memberLight.svg'),
|
||||
'support/permission/privateLight': () => import('./icons/support/permission/privateLight.svg'),
|
||||
'support/permission/publicLight': () => import('./icons/support/permission/publicLight.svg'),
|
||||
'core/app/ttsFill': () => import('./icons/core/app/ttsFill.svg'),
|
||||
'core/app/tts': () => import('./icons/core/app/tts.svg'),
|
||||
'common/viewLight': () => import('./icons/common/viewLight.svg'),
|
||||
'common/voiceLight': () => import('./icons/common/voiceLight.svg'),
|
||||
copy: () => import('./icons/copy.svg'),
|
||||
'core/app/aiFill': () => import('./icons/core/app/aiFill.svg'),
|
||||
'core/app/aiLight': () => import('./icons/core/app/aiLight.svg'),
|
||||
'core/app/appApiLight': () => import('./icons/core/app/appApiLight.svg'),
|
||||
'core/app/customFeedback': () => import('./icons/core/app/customFeedback.svg'),
|
||||
'core/app/headphones': () => import('./icons/core/app/headphones.svg'),
|
||||
'common/playLight': () => import('./icons/common/playLight.svg'),
|
||||
'core/chat/quoteSign': () => import('./icons/core/chat/quoteSign.svg'),
|
||||
'core/chat/sendLight': () => import('./icons/core/chat/sendLight.svg'),
|
||||
'core/chat/sendFill': () => import('./icons/core/chat/sendFill.svg'),
|
||||
'core/chat/recordFill': () => import('./icons/core/chat/recordFill.svg'),
|
||||
'core/chat/stopSpeechFill': () => import('./icons/core/chat/stopSpeechFill.svg'),
|
||||
'core/chat/stopSpeech': () => import('./icons/core/chat/stopSpeech.svg'),
|
||||
'core/chat/speaking': () => import('./icons/core/chat/speaking.svg'),
|
||||
'core/app/logsLight': () => import('./icons/core/app/logsLight.svg'),
|
||||
'core/app/markLight': () => import('./icons/core/app/markLight.svg'),
|
||||
'core/app/questionGuide': () => import('./icons/core/app/questionGuide.svg'),
|
||||
'core/app/tts': () => import('./icons/core/app/tts.svg'),
|
||||
'core/app/ttsFill': () => import('./icons/core/app/ttsFill.svg'),
|
||||
'core/app/variable/input': () => import('./icons/core/app/variable/input.svg'),
|
||||
'core/app/variable/select': () => import('./icons/core/app/variable/select.svg'),
|
||||
'core/app/variable/textarea': () => import('./icons/core/app/variable/textarea.svg'),
|
||||
'core/chat/QGFill': () => import('./icons/core/chat/QGFill.svg'),
|
||||
'core/chat/chatFill': () => import('./icons/core/chat/chatFill.svg'),
|
||||
'core/chat/chatLight': () => import('./icons/core/chat/chatLight.svg'),
|
||||
'core/chat/chatModelTag': () => import('./icons/core/chat/chatModelTag.svg'),
|
||||
'core/chat/feedback/badLight': () => import('./icons/core/chat/feedback/badLight.svg'),
|
||||
'core/chat/feedback/goodLight': () => import('./icons/core/chat/feedback/goodLight.svg'),
|
||||
'core/chat/fileSelect': () => import('./icons/core/chat/fileSelect.svg'),
|
||||
'core/dataset/modeEmbedding': () => import('./icons/core/dataset/modeEmbedding.svg'),
|
||||
'core/chat/quoteFill': () => import('./icons/core/chat/quoteFill.svg'),
|
||||
'core/chat/quoteSign': () => import('./icons/core/chat/quoteSign.svg'),
|
||||
'core/chat/recordFill': () => import('./icons/core/chat/recordFill.svg'),
|
||||
'core/chat/sendFill': () => import('./icons/core/chat/sendFill.svg'),
|
||||
'core/chat/sendLight': () => import('./icons/core/chat/sendLight.svg'),
|
||||
'core/chat/setTopLight': () => import('./icons/core/chat/setTopLight.svg'),
|
||||
'core/chat/speaking': () => import('./icons/core/chat/speaking.svg'),
|
||||
'core/chat/stopSpeech': () => import('./icons/core/chat/stopSpeech.svg'),
|
||||
'core/chat/stopSpeechFill': () => import('./icons/core/chat/stopSpeechFill.svg'),
|
||||
'core/dataset/commonDataset': () => import('./icons/core/dataset/commonDataset.svg'),
|
||||
'core/dataset/datasetFill': () => import('./icons/core/dataset/datasetFill.svg'),
|
||||
'core/dataset/datasetLight': () => import('./icons/core/dataset/datasetLight.svg'),
|
||||
'core/dataset/folderDataset': () => import('./icons/core/dataset/folderDataset.svg'),
|
||||
'core/dataset/fullTextRecall': () => import('./icons/core/dataset/fullTextRecall.svg'),
|
||||
'core/dataset/mixedRecall': () => import('./icons/core/dataset/mixedRecall.svg'),
|
||||
'core/app/variable/input': () => import('./icons/core/app/variable/input.svg'),
|
||||
'core/app/variable/textarea': () => import('./icons/core/app/variable/textarea.svg'),
|
||||
'core/app/variable/select': () => import('./icons/core/app/variable/select.svg'),
|
||||
'core/dataset/modeEmbedding': () => import('./icons/core/dataset/modeEmbedding.svg'),
|
||||
'core/dataset/rerank': () => import('./icons/core/dataset/rerank.svg'),
|
||||
'core/dataset/websiteDataset': () => import('./icons/core/dataset/websiteDataset.svg'),
|
||||
'core/dataset/commonDataset': () => import('./icons/core/dataset/commonDataset.svg'),
|
||||
'core/dataset/folderDataset': () => import('./icons/core/dataset/folderDataset.svg'),
|
||||
'common/confirm/deleteTip': () => import('./icons/common/confirm/deleteTip.svg'),
|
||||
'common/confirm/commonTip': () => import('./icons/common/confirm/commonTip.svg'),
|
||||
'common/routePushLight': () => import('./icons/common/routePushLight.svg'),
|
||||
'common/viewLight': () => import('./icons/common/viewLight.svg'),
|
||||
'core/app/customFeedback': () => import('./icons/core/app/customFeedback.svg'),
|
||||
'core/modules/previewLight': () => import('./icons/core/modules/previewLight.svg'),
|
||||
'core/modules/variable': () => import('./icons/core/modules/variable.svg'),
|
||||
'core/modules/welcomeText': () => import('./icons/core/modules/welcomeText.svg'),
|
||||
date: () => import('./icons/date.svg'),
|
||||
delete: () => import('./icons/delete.svg'),
|
||||
edit: () => import('./icons/edit.svg'),
|
||||
empty: () => import('./icons/empty.svg'),
|
||||
export: () => import('./icons/export.svg'),
|
||||
'file/csv': () => import('./icons/file/csv.svg'),
|
||||
'file/html': () => import('./icons/file/html.svg'),
|
||||
'file/indexImport': () => import('./icons/file/indexImport.svg'),
|
||||
'file/manualImport': () => import('./icons/file/manualImport.svg'),
|
||||
'file/markdown': () => import('./icons/file/markdown.svg'),
|
||||
'file/pdf': () => import('./icons/file/pdf.svg'),
|
||||
'file/qaImport': () => import('./icons/file/qaImport.svg'),
|
||||
'file/uploadFile': () => import('./icons/file/uploadFile.svg'),
|
||||
history: () => import('./icons/history.svg'),
|
||||
inform: () => import('./icons/inform.svg'),
|
||||
kbTest: () => import('./icons/kbTest.svg'),
|
||||
menu: () => import('./icons/menu.svg'),
|
||||
minus: () => import('./icons/minus.svg'),
|
||||
more: () => import('./icons/more.svg'),
|
||||
out: () => import('./icons/out.svg'),
|
||||
'phoneTabbar/me': () => import('./icons/phoneTabbar/me.svg'),
|
||||
'phoneTabbar/more': () => import('./icons/phoneTabbar/more.svg'),
|
||||
save: () => import('./icons/save.svg'),
|
||||
stop: () => import('./icons/stop.svg'),
|
||||
'support/account/loginoutLight': () => import('./icons/support/account/loginoutLight.svg'),
|
||||
'support/account/promotionLight': () => import('./icons/support/account/promotionLight.svg'),
|
||||
'support/bill/billRecordLight': () => import('./icons/support/bill/billRecordLight.svg'),
|
||||
'support/outlink/apikeyFill': () => import('./icons/support/outlink/apikeyFill.svg'),
|
||||
'support/outlink/apikeyLight': () => import('./icons/support/outlink/apikeyLight.svg'),
|
||||
'support/outlink/iframeLight': () => import('./icons/support/outlink/iframeLight.svg'),
|
||||
'support/outlink/share': () => import('./icons/support/outlink/share.svg'),
|
||||
'support/outlink/shareLight': () => import('./icons/support/outlink/shareLight.svg'),
|
||||
'support/pay/payRecordLight': () => import('./icons/support/pay/payRecordLight.svg'),
|
||||
'support/pay/priceLight': () => import('./icons/support/pay/priceLight.svg'),
|
||||
'core/dataset/rerank': () => import('./icons/core/dataset/rerank.svg')
|
||||
'support/permission/privateLight': () => import('./icons/support/permission/privateLight.svg'),
|
||||
'support/permission/publicLight': () => import('./icons/support/permission/publicLight.svg'),
|
||||
'support/team/memberLight': () => import('./icons/support/team/memberLight.svg'),
|
||||
'support/user/informLight': () => import('./icons/support/user/informLight.svg'),
|
||||
'support/user/userFill': () => import('./icons/support/user/userFill.svg'),
|
||||
'support/user/userLight': () => import('./icons/support/user/userLight.svg'),
|
||||
text: () => import('./icons/text.svg'),
|
||||
user: () => import('./icons/user.svg'),
|
||||
wx: () => import('./icons/wx.svg')
|
||||
};
|
||||
|
||||
export type IconName = keyof typeof iconPaths;
|
||||
|
||||
const MyIcon = ({ name, w = 'auto', h = 'auto', ...props }: { name: IconName } & IconProps) => {
|
||||
const [IconComponent, setIconComponent] = useState<any>(null);
|
||||
|
||||
useEffect(() => {
|
||||
iconPaths[name]?.()
|
||||
.then((icon) => {
|
||||
setIconComponent({ as: icon.default });
|
||||
})
|
||||
.catch((error) => console.log(error));
|
||||
}, [name]);
|
||||
|
||||
return !!name && !!iconPaths[name] ? (
|
||||
<Icon
|
||||
{...IconComponent}
|
||||
w={w}
|
||||
h={h}
|
||||
boxSizing={'content-box'}
|
||||
verticalAlign={'top'}
|
||||
fill={'currentcolor'}
|
||||
{...props}
|
||||
/>
|
||||
) : null;
|
||||
};
|
||||
|
||||
export default MyIcon;
|
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import MyIcon from '@/components/Icon';
|
||||
import MyIcon from './index';
|
||||
import { IconProps } from '@chakra-ui/react';
|
||||
|
||||
const DeleteIcon = (props: IconProps) => {
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 870 B After Width: | Height: | Size: 870 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 844 B After Width: | Height: | Size: 844 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 689 B After Width: | Height: | Size: 689 B |
Before Width: | Height: | Size: 1017 B After Width: | Height: | Size: 1017 B |
Before Width: | Height: | Size: 869 B After Width: | Height: | Size: 869 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 965 B After Width: | Height: | Size: 965 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 650 B After Width: | Height: | Size: 650 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M8.99997 2.196C5.24222 2.196 2.19596 5.24225 2.19596 9C2.19596 12.7577 5.24222 15.804 8.99997 15.804C12.7577 15.804 15.804 12.7577 15.804 9C15.804 5.24225 12.7577 2.196 8.99997 2.196ZM0.529297 9C0.529297 4.32178 4.32174 0.529331 8.99997 0.529331C13.6782 0.529331 17.4706 4.32178 17.4706 9C17.4706 13.6782 13.6782 17.4707 8.99997 17.4707C4.32174 17.4707 0.529297 13.6782 0.529297 9ZM9.18533 6.03224C8.846 5.97403 8.49702 6.0378 8.20019 6.21224C7.90337 6.38669 7.67786 6.66056 7.56361 6.98534C7.41089 7.41949 6.93512 7.64764 6.50097 7.49491C6.06681 7.34218 5.83866 6.86642 5.99139 6.43226C6.23625 5.73619 6.71956 5.14923 7.35572 4.77536C7.99188 4.40148 8.73983 4.26481 9.4671 4.38956C10.1944 4.5143 10.854 4.89241 11.3292 5.45692C11.8043 6.0213 12.0644 6.73558 12.0634 7.4733C12.063 8.67899 11.1697 9.46897 10.5467 9.88431C10.2098 10.1089 9.8788 10.2738 9.63531 10.382C9.51239 10.4367 9.4088 10.4782 9.33398 10.5067C9.2965 10.5209 9.26605 10.532 9.24377 10.54L9.21658 10.5495L9.20781 10.5525L9.20467 10.5535L9.20342 10.554C9.20317 10.554 9.20239 10.5543 8.93887 9.76373L9.20239 10.5543C8.76577 10.6998 8.29384 10.4639 8.1483 10.0273C8.00281 9.59078 8.23857 9.11902 8.67491 8.97331L8.68542 8.9696C8.69671 8.96559 8.71548 8.95878 8.74065 8.94919C8.79114 8.92996 8.86654 8.89986 8.95842 8.85902C9.14454 8.7763 9.38634 8.65481 9.62222 8.49756C10.1447 8.14925 10.3967 7.79388 10.3967 7.47253L10.3967 7.47129C10.3972 7.127 10.2759 6.79364 10.0542 6.53025C9.83245 6.26686 9.52467 6.09044 9.18533 6.03224ZM8.16663 12.8187C8.16663 12.3584 8.53973 11.9853 8.99997 11.9853H9.0076C9.46784 11.9853 9.84094 12.3584 9.84094 12.8187C9.84094 13.2789 9.46784 13.652 9.0076 13.652H8.99997C8.53973 13.652 8.16663 13.2789 8.16663 12.8187Z" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 897 B After Width: | Height: | Size: 897 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 492 B After Width: | Height: | Size: 492 B |
Before Width: | Height: | Size: 1021 B After Width: | Height: | Size: 1021 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 840 B After Width: | Height: | Size: 840 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1017 B After Width: | Height: | Size: 1017 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 819 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 324 B After Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 822 B After Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 953 B After Width: | Height: | Size: 953 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 821 B After Width: | Height: | Size: 821 B |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |