📝 docs: add toc
parent
f631d13c3a
commit
05554907e9
|
|
@ -1,3 +1,3 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
displayTypes: ['feat', 'fix', 'styles', 'pref'],
|
displayTypes: ['feat', 'fix', 'styles', 'pref'],
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
name: "🐛 反馈缺陷 Bug Report"
|
name: '🐛 反馈缺陷 Bug Report'
|
||||||
description: "反馈一个问题缺陷 | Report an bug"
|
description: '反馈一个问题缺陷 | Report an bug'
|
||||||
title: "[Bug] "
|
title: '[Bug] '
|
||||||
labels: "🐛 Bug"
|
labels: '🐛 Bug'
|
||||||
body:
|
body:
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: "💻 系统环境 | Operating System"
|
label: '💻 系统环境 | Operating System'
|
||||||
options:
|
options:
|
||||||
- Windows
|
- Windows
|
||||||
- macOS
|
- macOS
|
||||||
|
|
@ -16,7 +16,7 @@ body:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: "🌐 浏览器 | Browser"
|
label: '🌐 浏览器 | Browser'
|
||||||
options:
|
options:
|
||||||
- Chrome
|
- Chrome
|
||||||
- Edge
|
- Edge
|
||||||
|
|
@ -27,19 +27,19 @@ body:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "🐛 问题描述 | Bug Description"
|
label: '🐛 问题描述 | Bug Description'
|
||||||
description: A clear and concise description of the bug.
|
description: A clear and concise description of the bug.
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "🚦 期望结果 | Expected Behavior"
|
label: '🚦 期望结果 | Expected Behavior'
|
||||||
description: A clear and concise description of what you expected to happen.
|
description: A clear and concise description of what you expected to happen.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "📷 复现步骤 | Recurrence Steps"
|
label: '📷 复现步骤 | Recurrence Steps'
|
||||||
description: A clear and concise description of how to recurrence.
|
description: A clear and concise description of how to recurrence.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "📝 补充信息 | Additional Information"
|
label: '📝 补充信息 | Additional Information'
|
||||||
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
|
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
name: "🌠 功能需求 Feature Request"
|
name: '🌠 功能需求 Feature Request'
|
||||||
description: "需求或建议 | Suggest an idea"
|
description: '需求或建议 | Suggest an idea'
|
||||||
title: "[Request] "
|
title: '[Request] '
|
||||||
labels: "🌠 Feature Request"
|
labels: '🌠 Feature Request'
|
||||||
body:
|
body:
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "🥰 需求描述 | Feature Description"
|
label: '🥰 需求描述 | Feature Description'
|
||||||
description: Please add a clear and concise description of the problem you are seeking to solve with this feature request.
|
description: Please add a clear and concise description of the problem you are seeking to solve with this feature request.
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "🧐 解决方案 | Proposed Solution"
|
label: '🧐 解决方案 | Proposed Solution'
|
||||||
description: Describe the solution you'd like in a clear and concise manner.
|
description: Describe the solution you'd like in a clear and concise manner.
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "📝 补充信息 | Additional Information"
|
label: '📝 补充信息 | Additional Information'
|
||||||
description: Add any other context about the problem here.
|
description: Add any other context about the problem here.
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
name: "😇 疑问或帮助 Help Wanted"
|
name: '😇 疑问或帮助 Help Wanted'
|
||||||
description: "疑问或需要帮助 | Need help"
|
description: '疑问或需要帮助 | Need help'
|
||||||
title: "[Question] "
|
title: '[Question] '
|
||||||
labels: "😇 Help Wanted"
|
labels: '😇 Help Wanted'
|
||||||
body:
|
body:
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "🧐 问题描述 | Proposed Solution"
|
label: '🧐 问题描述 | Proposed Solution'
|
||||||
description: A clear and concise description of the proplem.
|
description: A clear and concise description of the proplem.
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: "📝 补充信息 | Additional Information"
|
label: '📝 补充信息 | Additional Information'
|
||||||
description: Add any other context about the problem here.
|
description: Add any other context about the problem here.
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: npm
|
- package-ecosystem: npm
|
||||||
directory: "/"
|
directory: '/'
|
||||||
schedule:
|
schedule:
|
||||||
interval: weekly
|
interval: weekly
|
||||||
time: "19:00"
|
time: '19:00'
|
||||||
timezone: 'Asia/Shanghai'
|
timezone: 'Asia/Shanghai'
|
||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
versioning-strategy: increase
|
versioning-strategy: increase
|
||||||
|
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: 'github-actions'
|
||||||
directory: "/"
|
directory: '/'
|
||||||
schedule:
|
schedule:
|
||||||
interval: monthly
|
interval: monthly
|
||||||
time: "19:00"
|
time: '19:00'
|
||||||
timezone: 'Asia/Shanghai'
|
timezone: 'Asia/Shanghai'
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ name: Issue Check Inactive
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 */15 * *"
|
- cron: '0 0 */15 * *'
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
@ -10,8 +10,8 @@ permissions:
|
||||||
jobs:
|
jobs:
|
||||||
issue-check-inactive:
|
issue-check-inactive:
|
||||||
permissions:
|
permissions:
|
||||||
issues: write # for actions-cool/issues-helper to update issues
|
issues: write # for actions-cool/issues-helper to update issues
|
||||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: check-inactive
|
- name: check-inactive
|
||||||
|
|
@ -19,4 +19,4 @@ jobs:
|
||||||
with:
|
with:
|
||||||
actions: 'check-inactive'
|
actions: 'check-inactive'
|
||||||
inactive-label: 'Inactive'
|
inactive-label: 'Inactive'
|
||||||
inactive-day: 30
|
inactive-day: 30
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ name: Issue Close Require
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
@ -10,8 +10,8 @@ permissions:
|
||||||
jobs:
|
jobs:
|
||||||
issue-close-require:
|
issue-close-require:
|
||||||
permissions:
|
permissions:
|
||||||
issues: write # for actions-cool/issues-helper to update issues
|
issues: write # for actions-cool/issues-helper to update issues
|
||||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: need reproduce
|
- name: need reproduce
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ permissions:
|
||||||
jobs:
|
jobs:
|
||||||
issue-remove-inactive:
|
issue-remove-inactive:
|
||||||
permissions:
|
permissions:
|
||||||
issues: write # for actions-cool/issues-helper to update issues
|
issues: write # for actions-cool/issues-helper to update issues
|
||||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: remove inactive
|
- name: remove inactive
|
||||||
|
|
@ -22,4 +22,4 @@ jobs:
|
||||||
with:
|
with:
|
||||||
actions: 'remove-labels'
|
actions: 'remove-labels'
|
||||||
issue-number: ${{ github.event.issue.number }}
|
issue-number: ${{ github.event.issue.number }}
|
||||||
labels: 'Inactive'
|
labels: 'Inactive'
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
tasks:
|
tasks:
|
||||||
- init: pnpm install
|
- init: pnpm install
|
||||||
command: pnpm run start
|
command: pnpm run start
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
extends: ['semantic-release-config-gitmoji'],
|
extends: ['semantic-release-config-gitmoji'],
|
||||||
branches: ['main'],
|
branches: ['main'],
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
const config = {
|
module.exports = {
|
||||||
plugins: [
|
plugins: [
|
||||||
'remark-preset-lint-recommended',
|
'remark-preset-lint-recommended',
|
||||||
['remark-lint-list-item-indent', 'space'],
|
['remark-lint-list-item-indent', 'space'],
|
||||||
['remark-lint-no-literal-urls', false],
|
['remark-lint-no-literal-urls', false],
|
||||||
|
['remark-toc', { heading: 'TOC', maxDepth: 3 }],
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = config;
|
|
||||||
|
|
|
||||||
20
.umirc.ts
20
.umirc.ts
|
|
@ -1,25 +1,25 @@
|
||||||
import { defineConfig } from 'umi'
|
import { defineConfig } from 'umi';
|
||||||
import WebpackShellPlugin from 'webpack-shell-plugin-next'
|
import WebpackShellPlugin from 'webpack-shell-plugin-next';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'
|
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import lightningcss from 'lightningcss'
|
import lightningcss from 'lightningcss';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import browserslist from 'browserslist'
|
import browserslist from 'browserslist';
|
||||||
|
|
||||||
const mac = [
|
const mac = [
|
||||||
'rm ./javascript/index.js',
|
'rm ./javascript/index.js',
|
||||||
'rm ./style.css',
|
'rm ./style.css',
|
||||||
'cp ./dist/index.js ./javascript/index.js',
|
'cp ./dist/index.js ./javascript/index.js',
|
||||||
'cp ./dist/index.css ./style.css',
|
'cp ./dist/index.css ./style.css',
|
||||||
]
|
];
|
||||||
|
|
||||||
const win = [
|
const win = [
|
||||||
'del javascript\\index.js',
|
'del javascript\\index.js',
|
||||||
'del style.css',
|
'del style.css',
|
||||||
'copy dist\\index.js javascript\\index.js',
|
'copy dist\\index.js javascript\\index.js',
|
||||||
'copy dist\\index.css style.css',
|
'copy dist\\index.css style.css',
|
||||||
]
|
];
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
routes: [{ path: '/', component: 'index' }],
|
routes: [{ path: '/', component: 'index' }],
|
||||||
|
|
@ -48,7 +48,7 @@ export default defineConfig({
|
||||||
targets: lightningcss.browserslistToTargets(browserslist('>= 0.25%')),
|
targets: lightningcss.browserslistToTargets(browserslist('>= 0.25%')),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
])
|
]);
|
||||||
memo.plugin('shell').use(WebpackShellPlugin, [
|
memo.plugin('shell').use(WebpackShellPlugin, [
|
||||||
{
|
{
|
||||||
onBuildExit: {
|
onBuildExit: {
|
||||||
|
|
@ -57,6 +57,6 @@ export default defineConfig({
|
||||||
parallel: false,
|
parallel: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
])
|
]);
|
||||||
},
|
},
|
||||||
})
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<a name="readme-top"></a>
|
<a name="readme-top"></a>
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
<img width="160" src="https://gw.alipayobjects.com/mdn/rms_7d1485/afts/img/A*XDYxSJXBjjwAAAAAAAAAAAAAARQnAQ">
|
<img width="160" src="https://gw.alipayobjects.com/mdn/rms_7d1485/afts/img/A*XDYxSJXBjjwAAAAAAAAAAAAAARQnAQ">
|
||||||
|
|
||||||
<h1 align="center">Kitchen Theme</h1>
|
<h1 align="center">Kitchen Theme</h1>
|
||||||
|
|
@ -15,8 +15,7 @@ Kitchen Theme for Stable Diffusion WebUI
|
||||||
[![release][release-shield]][release-url]
|
[![release][release-shield]][release-url]
|
||||||
[![releaseDate][release-date-shield]][release-date-url]
|
[![releaseDate][release-date-shield]][release-date-url]
|
||||||
[![ciTest][ci-test-shield]][ci-test-url]
|
[![ciTest][ci-test-shield]][ci-test-url]
|
||||||
[![ciRelease][ci-release-shield]][ci-release-url]
|
[![ciRelease][ci-release-shield]][ci-release-url] <br/>
|
||||||
<br/>
|
|
||||||
[![contributors][contributors-shield]][contributors-url]
|
[![contributors][contributors-shield]][contributors-url]
|
||||||
[![forks][forks-shield]][forks-url]
|
[![forks][forks-shield]][forks-url]
|
||||||
[![stargazers][stargazers-shield]][stargazers-url]
|
[![stargazers][stargazers-shield]][stargazers-url]
|
||||||
|
|
@ -26,7 +25,23 @@ Kitchen Theme for Stable Diffusion WebUI
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> ⚠️⚠️⚠️ 警告:最低要求 gradio-3.23.0 & sd-webui [4c1ad74](https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/4c1ad743e3baf1246db0711aa0107debf036a12b)
|
<details>
|
||||||
|
<summary><kbd>文档目录</kbd></summary>
|
||||||
|
|
||||||
|
#### TOC
|
||||||
|
|
||||||
|
- [✨ 特性](#-特性)
|
||||||
|
- [🖥 兼容环境](#-兼容环境)
|
||||||
|
- [📦 安装](#-安装)
|
||||||
|
- [⚒️ 推荐设置](#️-推荐设置)
|
||||||
|
- [🪄 提示词格式化](#-提示词格式化)
|
||||||
|
- [⌨️ 本地开发](#️-本地开发)
|
||||||
|
- [🤝 参与贡献](#-参与贡献)
|
||||||
|
- [🔗 链接](#-链接)
|
||||||
|
|
||||||
|
####
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|
@ -78,6 +93,8 @@ http://localhost:7860/?__theme=light
|
||||||
http://localhost:7860/?__theme=dark
|
http://localhost:7860/?__theme=dark
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> ⚠️ 警告:最低要求 gradio-3.23.0 & sd-webui [4c1ad74](https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/4c1ad743e3baf1246db0711aa0107debf036a12b)
|
||||||
|
|
||||||
<div align="right">
|
<div align="right">
|
||||||
|
|
||||||
[![][back-to-top]](#readme-top)
|
[![][back-to-top]](#readme-top)
|
||||||
|
|
|
||||||
23
README.md
23
README.md
|
|
@ -15,8 +15,7 @@ English · [简体中文](./README-zh_CN.md) · [Changelog](./CHANGELOG.md) · [
|
||||||
[![release][release-shield]][release-url]
|
[![release][release-shield]][release-url]
|
||||||
[![releaseDate][release-date-shield]][release-date-url]
|
[![releaseDate][release-date-shield]][release-date-url]
|
||||||
[![ciTest][ci-test-shield]][ci-test-url]
|
[![ciTest][ci-test-shield]][ci-test-url]
|
||||||
[![ciRelease][ci-release-shield]][ci-release-url]
|
[![ciRelease][ci-release-shield]][ci-release-url] <br/>
|
||||||
<br/>
|
|
||||||
[![contributors][contributors-shield]][contributors-url]
|
[![contributors][contributors-shield]][contributors-url]
|
||||||
[![forks][forks-shield]][forks-url]
|
[![forks][forks-shield]][forks-url]
|
||||||
[![stargazers][stargazers-shield]][stargazers-url]
|
[![stargazers][stargazers-shield]][stargazers-url]
|
||||||
|
|
@ -26,7 +25,23 @@ English · [简体中文](./README-zh_CN.md) · [Changelog](./CHANGELOG.md) · [
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> ⚠️⚠️⚠️ Warning: minimum requirements gradio-3.23.0 & sd-webui [4c1ad74](https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/4c1ad743e3baf1246db0711aa0107debf036a12b)
|
<details>
|
||||||
|
<summary><kbd>Table of contents</kbd></summary>
|
||||||
|
|
||||||
|
#### TOC
|
||||||
|
|
||||||
|
- [✨ Features](#-features)
|
||||||
|
- [🖥 Environment Support](#-environment-support)
|
||||||
|
- [📦 Installation](#-installation)
|
||||||
|
- [⚒️ Recommended Settings](#️-recommended-settings)
|
||||||
|
- [🪄 Prompt formatting](#-prompt-formatting)
|
||||||
|
- [⌨️ Local Development](#️-local-development)
|
||||||
|
- [🤝 Contributing](#-contributing)
|
||||||
|
- [🔗 Credits](#-credits)
|
||||||
|
|
||||||
|
####
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|
@ -79,6 +94,8 @@ http://localhost:7860/?__theme=light
|
||||||
http://localhost:7860/?__theme=dark
|
http://localhost:7860/?__theme=dark
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> ⚠️ Warning: minimum requirements gradio-3.23.0 & sd-webui [4c1ad74](https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/4c1ad743e3baf1246db0711aa0107debf036a12b)
|
||||||
|
|
||||||
<div align="right">
|
<div align="right">
|
||||||
|
|
||||||
[![][back-to-top]](#readme-top)
|
[![][back-to-top]](#readme-top)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
extends: ['gitmoji'],
|
extends: ['gitmoji'],
|
||||||
}
|
};
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
23
package.json
23
package.json
|
|
@ -13,38 +13,38 @@
|
||||||
"build": "umi build",
|
"build": "umi build",
|
||||||
"dev": "umi build",
|
"dev": "umi build",
|
||||||
"lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\" --fix",
|
"lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\" --fix",
|
||||||
"lint:md": "remark . -f -q",
|
"lint:md": "remark . --quiet --frail --output",
|
||||||
|
"lint:style": "stylelint \"src/**/*.{css,less,js,jsx,ts,tsx}\" --fix",
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"prettier": "prettier -c --write \"**/**\"",
|
"prettier": "prettier -c --write \"**/**\"",
|
||||||
"release": "semantic-release",
|
"release": "semantic-release",
|
||||||
"sd-debug": "cd ../../ && ./webui.sh",
|
"sd-debug": "cd ../../ && ./webui.sh",
|
||||||
"setup": "umi setup",
|
"setup": "umi setup",
|
||||||
"start": "umi build",
|
"start": "umi build",
|
||||||
"stylelint": "stylelint \"src/**/*.{css,less,js,jsx,ts,tsx}\" --fix",
|
|
||||||
"test": "npm run lint",
|
"test": "npm run lint",
|
||||||
"type-check": "tsc -p tsconfig-check.json"
|
"type-check": "tsc -p tsconfig-check.json"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*.md": [
|
"*.md": [
|
||||||
"remark -f -q",
|
"remark --quiet --frail --output --",
|
||||||
"prettier --write --no-error-on-unmatched-pattern"
|
"prettier --write --no-error-on-unmatched-pattern"
|
||||||
],
|
],
|
||||||
"*.json": [
|
"*.json": [
|
||||||
"prettier --write --no-error-on-unmatched-pattern"
|
"prettier --write --no-error-on-unmatched-pattern"
|
||||||
],
|
],
|
||||||
"*.{css,less}": [
|
"*.{css,less}": [
|
||||||
"stylelint --fix",
|
"stylelint --fix --allow-empty-input",
|
||||||
"prettier --write"
|
"prettier --write"
|
||||||
],
|
],
|
||||||
"*.{js,jsx}": [
|
"*.{js,jsx}": [
|
||||||
"stylelint --fix",
|
"prettier --write",
|
||||||
"eslint --fix",
|
"stylelint --fix --allow-empty-input",
|
||||||
"prettier --write"
|
"eslint --fix"
|
||||||
],
|
],
|
||||||
"*.{ts,tsx}": [
|
"*.{ts,tsx}": [
|
||||||
|
"prettier --parser=typescript --write",
|
||||||
"stylelint --fix",
|
"stylelint --fix",
|
||||||
"eslint --fix",
|
"eslint --fix"
|
||||||
"prettier --parser=typescript --write"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
@ -79,10 +79,10 @@
|
||||||
"lint-staged": "^13",
|
"lint-staged": "^13",
|
||||||
"lodash-es": "^4",
|
"lodash-es": "^4",
|
||||||
"lucide-react": "^0",
|
"lucide-react": "^0",
|
||||||
"object-to-css-variables": "^0.2",
|
"object-to-css-variables": "^0",
|
||||||
"polished": "^4",
|
"polished": "^4",
|
||||||
"postcss-less": "^6",
|
"postcss-less": "^6",
|
||||||
"postcss-styled-syntax": "^0.4",
|
"postcss-styled-syntax": "^0",
|
||||||
"prettier": "^2",
|
"prettier": "^2",
|
||||||
"prettier-plugin-organize-imports": "^3",
|
"prettier-plugin-organize-imports": "^3",
|
||||||
"prettier-plugin-packagejson": "^2",
|
"prettier-plugin-packagejson": "^2",
|
||||||
|
|
@ -100,6 +100,7 @@
|
||||||
"remark-lint": "^9",
|
"remark-lint": "^9",
|
||||||
"remark-lint-list-item-indent": "^3",
|
"remark-lint-list-item-indent": "^3",
|
||||||
"remark-preset-lint-recommended": "^6",
|
"remark-preset-lint-recommended": "^6",
|
||||||
|
"remark-toc": "^8",
|
||||||
"semantic-release": "^21",
|
"semantic-release": "^21",
|
||||||
"semantic-release-config-gitmoji": "^1",
|
"semantic-release-config-gitmoji": "^1",
|
||||||
"styled-components": "^5",
|
"styled-components": "^5",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { createStyles, css, cx } from 'antd-style'
|
import { createStyles, css, cx } from 'antd-style';
|
||||||
|
|
||||||
const offset = 17
|
const offset = 17;
|
||||||
const toggleLength = 40
|
const toggleLength = 40;
|
||||||
const toggleShort = 16
|
const toggleShort = 16;
|
||||||
|
|
||||||
export const useStyle = createStyles(({ token }, prefix: string) => {
|
export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
const commonHandle = css`
|
const commonHandle = css`
|
||||||
|
|
@ -20,7 +20,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
background: ${token.colorPrimary};
|
background: ${token.colorPrimary};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`;
|
||||||
|
|
||||||
const commonToggle = css`
|
const commonToggle = css`
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
@ -61,12 +61,12 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
background: ${token.colorFill};
|
background: ${token.colorFill};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`;
|
||||||
|
|
||||||
const float = css`
|
const float = css`
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 2000;
|
z-index: 2000;
|
||||||
`
|
`;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
container: cx(
|
container: cx(
|
||||||
|
|
@ -80,7 +80,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
fixed: css`
|
fixed: css`
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
@ -92,7 +92,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
rightFloat: cx(
|
rightFloat: cx(
|
||||||
float,
|
float,
|
||||||
|
|
@ -101,7 +101,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
topFloat: cx(
|
topFloat: cx(
|
||||||
float,
|
float,
|
||||||
|
|
@ -110,7 +110,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
right: 0;
|
right: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
bottomFloat: cx(
|
bottomFloat: cx(
|
||||||
float,
|
float,
|
||||||
|
|
@ -119,7 +119,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
toggleLeft: cx(
|
toggleLeft: cx(
|
||||||
`${prefix}-toggle`,
|
`${prefix}-toggle`,
|
||||||
|
|
@ -138,7 +138,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
|
|
||||||
border-radius: 4px 0 0 4px;
|
border-radius: 4px 0 0 4px;
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
toggleRight: cx(
|
toggleRight: cx(
|
||||||
`${prefix}-toggle`,
|
`${prefix}-toggle`,
|
||||||
|
|
@ -157,7 +157,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
|
|
||||||
border-radius: 0 4px 4px 0;
|
border-radius: 0 4px 4px 0;
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
toggleTop: cx(
|
toggleTop: cx(
|
||||||
`${prefix}-toggle`,
|
`${prefix}-toggle`,
|
||||||
|
|
@ -177,7 +177,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
|
|
||||||
border-radius: 4px 4px 0 0;
|
border-radius: 4px 4px 0 0;
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
toggleBottom: cx(
|
toggleBottom: cx(
|
||||||
`${prefix}-toggle`,
|
`${prefix}-toggle`,
|
||||||
|
|
@ -197,7 +197,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
|
|
||||||
border-radius: 0 0 4px 4px;
|
border-radius: 0 0 4px 4px;
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
panel: cx(
|
panel: cx(
|
||||||
`${prefix}-fixed`,
|
`${prefix}-fixed`,
|
||||||
|
|
@ -205,7 +205,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background: ${token.colorBgContainer};
|
background: ${token.colorBgContainer};
|
||||||
transition: all 0.2s ${token.motionEaseOut};
|
transition: all 0.2s ${token.motionEaseOut};
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
handlerIcon: css`
|
handlerIcon: css`
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -223,7 +223,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
`${prefix}-left-handle`
|
`${prefix}-left-handle`,
|
||||||
),
|
),
|
||||||
rightHandle: cx(
|
rightHandle: cx(
|
||||||
css`
|
css`
|
||||||
|
|
@ -234,7 +234,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
`${prefix}-right-handle`
|
`${prefix}-right-handle`,
|
||||||
),
|
),
|
||||||
topHandle: cx(
|
topHandle: cx(
|
||||||
`${prefix}-top-handle`,
|
`${prefix}-top-handle`,
|
||||||
|
|
@ -246,7 +246,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
bottomHandle: cx(
|
bottomHandle: cx(
|
||||||
`${prefix}-bottom-handle`,
|
`${prefix}-bottom-handle`,
|
||||||
|
|
@ -258,7 +258,7 @@ export const useStyle = createStyles(({ token }, prefix: string) => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
}
|
}
|
||||||
`
|
`,
|
||||||
),
|
),
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
import { placementType } from './index'
|
import { placementType } from './index';
|
||||||
|
|
||||||
export const revesePlacement = (placement: placementType) => {
|
export const revesePlacement = (placement: placementType) => {
|
||||||
switch (placement) {
|
switch (placement) {
|
||||||
case 'bottom':
|
case 'bottom':
|
||||||
return 'top'
|
return 'top';
|
||||||
case 'top':
|
case 'top':
|
||||||
return 'bottom'
|
return 'bottom';
|
||||||
case 'right':
|
case 'right':
|
||||||
return 'left'
|
return 'left';
|
||||||
case 'left':
|
case 'left':
|
||||||
return 'right'
|
return 'right';
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import React, { useCallback, useMemo } from 'react';
|
import React, { useCallback, useMemo } from 'react';
|
||||||
import { WithContext, ReactTagsProps as WithContextProps } from 'react-tag-input';
|
import { ReactTagsProps as WithContextProps,WithContext } from 'react-tag-input';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import { genTagType, suggestions } from './utils';
|
import { genTagType, suggestions } from './utils';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
export { default as Content } from './Content'
|
export { default as Content } from './Content';
|
||||||
export { default as DraggablePanel } from './DraggablePanel'
|
export { default as DraggablePanel } from './DraggablePanel';
|
||||||
export { default as ExtraNetworkSidebar } from './ExtraNetworkSidebar'
|
export { default as ExtraNetworkSidebar } from './ExtraNetworkSidebar';
|
||||||
export { default as Header } from './Header'
|
export { default as Header } from './Header';
|
||||||
export { default as Sidebar } from './Sidebar'
|
export { default as Sidebar } from './Sidebar';
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,29 @@
|
||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
function checkIsDarkMode() {
|
function checkIsDarkMode() {
|
||||||
try {
|
try {
|
||||||
return window.matchMedia('(prefers-color-scheme: dark)').matches
|
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return false
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useIsDarkMode() {
|
export function useIsDarkMode() {
|
||||||
const [isDarkMode, setIsDarkMode] = useState(checkIsDarkMode())
|
const [isDarkMode, setIsDarkMode] = useState(checkIsDarkMode());
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const mqList = window.matchMedia('(prefers-color-scheme: dark)')
|
const mqList = window.matchMedia('(prefers-color-scheme: dark)');
|
||||||
|
|
||||||
const listener = (event: any) => {
|
const listener = (event: any) => {
|
||||||
setIsDarkMode(event.matches)
|
setIsDarkMode(event.matches);
|
||||||
}
|
};
|
||||||
|
|
||||||
mqList.addEventListener('change', listener)
|
mqList.addEventListener('change', listener);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
mqList.removeEventListener('change', listener)
|
mqList.removeEventListener('change', listener);
|
||||||
}
|
};
|
||||||
}, [])
|
}, []);
|
||||||
|
|
||||||
return isDarkMode
|
return isDarkMode;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,198 +1,211 @@
|
||||||
const TAB_PREFIX_LIST = ['txt2img', 'img2img']
|
const TAB_PREFIX_LIST = ['txt2img', 'img2img'];
|
||||||
const MODEL_TYPE_LIST: ['textual_inversion', 'hypernetworks', 'checkpoints', 'lora', 'lycoris'] = [
|
const MODEL_TYPE_LIST: ['textual_inversion', 'hypernetworks', 'checkpoints', 'lora', 'lycoris'] = [
|
||||||
'textual_inversion',
|
'textual_inversion',
|
||||||
'hypernetworks',
|
'hypernetworks',
|
||||||
'checkpoints',
|
'checkpoints',
|
||||||
'lora',
|
'lora',
|
||||||
'lycoris',
|
'lycoris',
|
||||||
]
|
];
|
||||||
const MODEL_TYPE = {
|
const MODEL_TYPE = {
|
||||||
textual_inversion: 'ti',
|
textual_inversion: 'ti',
|
||||||
hypernetworks: 'hyper',
|
hypernetworks: 'hyper',
|
||||||
checkpoints: 'ckp',
|
checkpoints: 'ckp',
|
||||||
lora: 'lora',
|
lora: 'lora',
|
||||||
lycoris: 'lycoris',
|
lycoris: 'lycoris',
|
||||||
}
|
};
|
||||||
const CARDID_SUFFIX = 'cards'
|
const CARDID_SUFFIX = 'cards';
|
||||||
|
|
||||||
// CSS
|
// CSS
|
||||||
const BTN_MARGIN = '0'
|
const BTN_MARGIN = '0';
|
||||||
const BTN_FONT_SIZE = '15px'
|
const BTN_FONT_SIZE = '15px';
|
||||||
const BTN_THUMB_FONT_SIZE = '100%'
|
const BTN_THUMB_FONT_SIZE = '100%';
|
||||||
const BTN_THUMB_DISPLAY = 'inline'
|
const BTN_THUMB_DISPLAY = 'inline';
|
||||||
const BTN_THUMB_POS = 'static'
|
const BTN_THUMB_POS = 'static';
|
||||||
const BTN_THUMB_BACKGROUND_IMAGE = 'none'
|
const BTN_THUMB_BACKGROUND_IMAGE = 'none';
|
||||||
const BTN_THUMB_BACKGROUND = 'rgba(0, 0, 0, 0.8)'
|
const BTN_THUMB_BACKGROUND = 'rgba(0, 0, 0, 0.8)';
|
||||||
const CH_BTN_TXTS = ['🌐', '💡', '🏷️']
|
const CH_BTN_TXTS = ['🌐', '💡', '🏷️'];
|
||||||
|
|
||||||
const styleBtn = (node: HTMLElement, isThumbMode: boolean) => {
|
const styleBtn = (node: HTMLElement, isThumbMode: boolean) => {
|
||||||
if (!isThumbMode) {
|
if (!isThumbMode) {
|
||||||
node.style.fontSize = BTN_FONT_SIZE
|
node.style.fontSize = BTN_FONT_SIZE;
|
||||||
node.style.margin = BTN_MARGIN
|
node.style.margin = BTN_MARGIN;
|
||||||
} else {
|
} else {
|
||||||
node.style.display = BTN_THUMB_DISPLAY
|
node.style.display = BTN_THUMB_DISPLAY;
|
||||||
node.style.fontSize = BTN_THUMB_FONT_SIZE
|
node.style.fontSize = BTN_THUMB_FONT_SIZE;
|
||||||
node.style.position = BTN_THUMB_POS
|
node.style.position = BTN_THUMB_POS;
|
||||||
node.style.backgroundImage = BTN_THUMB_BACKGROUND_IMAGE
|
node.style.backgroundImage = BTN_THUMB_BACKGROUND_IMAGE;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
const updateCardForCivitai = () => {
|
const updateCardForCivitai = () => {
|
||||||
if (!gradioApp().querySelector('#tab_civitai_helper')) return
|
if (!gradioApp().querySelector('#tab_civitai_helper')) return;
|
||||||
|
|
||||||
const replacePreviewText = getTranslation('replace preview') || 'replace preview'
|
const replacePreviewText = getTranslation('replace preview') || 'replace preview';
|
||||||
|
|
||||||
// Get component
|
// Get component
|
||||||
const chAlwaysDisplayCkb = gradioApp().querySelector('#ch_always_display_ckb input') as HTMLInputElement
|
const chAlwaysDisplayCkb = gradioApp().querySelector(
|
||||||
const chShowBtnOnThumbCkb = gradioApp().querySelector('#ch_show_btn_on_thumb_ckb input') as HTMLInputElement
|
'#ch_always_display_ckb input',
|
||||||
const chAlwaysDisplay = chAlwaysDisplayCkb?.checked || false
|
) as HTMLInputElement;
|
||||||
const chShowBtnOnThumb = chShowBtnOnThumbCkb?.checked || false
|
const chShowBtnOnThumbCkb = gradioApp().querySelector(
|
||||||
|
'#ch_show_btn_on_thumb_ckb input',
|
||||||
|
) as HTMLInputElement;
|
||||||
|
const chAlwaysDisplay = chAlwaysDisplayCkb?.checked || false;
|
||||||
|
const chShowBtnOnThumb = chShowBtnOnThumbCkb?.checked || false;
|
||||||
|
|
||||||
// Change all "replace preview" into an icon
|
// Change all "replace preview" into an icon
|
||||||
let extraNetworkId = ''
|
let extraNetworkId = '';
|
||||||
let extraNetworkNode: any = null
|
let extraNetworkNode: any = null;
|
||||||
let metadataButton: any = null
|
let metadataButton: any = null;
|
||||||
let additionalNode: any = null
|
let additionalNode: any = null;
|
||||||
let replacePreviewBtn: any = null
|
let replacePreviewBtn: any = null;
|
||||||
let ulNode: any = null
|
let ulNode: any = null;
|
||||||
let searchTermNode: any = null
|
let searchTermNode: any = null;
|
||||||
let searchTerm = ''
|
let searchTerm = '';
|
||||||
let modelType = ''
|
let modelType = '';
|
||||||
let cards = null
|
let cards = null;
|
||||||
let needToAddButtons = false
|
let needToAddButtons = false;
|
||||||
let isThumbMode = false
|
let isThumbMode = false;
|
||||||
|
|
||||||
// Get current tab
|
// Get current tab
|
||||||
TAB_PREFIX_LIST.forEach((activeTabType) => {
|
TAB_PREFIX_LIST.forEach((activeTabType) => {
|
||||||
MODEL_TYPE_LIST.forEach((jsModelType) => {
|
MODEL_TYPE_LIST.forEach((jsModelType) => {
|
||||||
modelType = MODEL_TYPE[jsModelType]
|
modelType = MODEL_TYPE[jsModelType];
|
||||||
// Get model_type for python side
|
// Get model_type for python side
|
||||||
|
|
||||||
extraNetworkId = `${activeTabType}_${jsModelType}_${CARDID_SUFFIX}`
|
extraNetworkId = `${activeTabType}_${jsModelType}_${CARDID_SUFFIX}`;
|
||||||
extraNetworkNode = gradioApp().getElementById(extraNetworkId)
|
extraNetworkNode = gradioApp().getElementById(extraNetworkId);
|
||||||
|
|
||||||
// Check if extra network node exists
|
// Check if extra network node exists
|
||||||
if (extraNetworkNode === null) return
|
if (extraNetworkNode === null) return;
|
||||||
|
|
||||||
// Check if extr network is under thumbnail mode
|
// Check if extr network is under thumbnail mode
|
||||||
isThumbMode = false
|
isThumbMode = false;
|
||||||
if (extraNetworkNode?.className === 'extra-network-thumbs') isThumbMode = true
|
if (extraNetworkNode?.className === 'extra-network-thumbs') isThumbMode = true;
|
||||||
|
|
||||||
// Get all card nodes
|
// Get all card nodes
|
||||||
cards = extraNetworkNode.querySelectorAll('.card')
|
cards = extraNetworkNode.querySelectorAll('.card');
|
||||||
for (const card of cards) {
|
for (const card of cards) {
|
||||||
if (card.querySelectorAll('.actions .additional a').length > 2) return
|
if (card.querySelectorAll('.actions .additional a').length > 2) return;
|
||||||
// Metadata_buttoncard
|
// Metadata_buttoncard
|
||||||
metadataButton = card.querySelector('.metadata-button')
|
metadataButton = card.querySelector('.metadata-button');
|
||||||
// Additional node
|
// Additional node
|
||||||
additionalNode = card.querySelector('.actions .additional')
|
additionalNode = card.querySelector('.actions .additional');
|
||||||
// Get ul node, which is the parent of all buttons
|
// Get ul node, which is the parent of all buttons
|
||||||
ulNode = card.querySelector('.actions .additional ul')
|
ulNode = card.querySelector('.actions .additional ul');
|
||||||
// Replace preview text button
|
// Replace preview text button
|
||||||
replacePreviewBtn = card.querySelector('.actions .additional a')
|
replacePreviewBtn = card.querySelector('.actions .additional a');
|
||||||
|
|
||||||
// Check thumb mode
|
// Check thumb mode
|
||||||
if (isThumbMode && additionalNode) {
|
if (isThumbMode && additionalNode) {
|
||||||
additionalNode.style.display = null
|
additionalNode.style.display = null;
|
||||||
|
|
||||||
if (chShowBtnOnThumb) {
|
if (chShowBtnOnThumb) {
|
||||||
ulNode.style.background = BTN_THUMB_BACKGROUND
|
ulNode.style.background = BTN_THUMB_BACKGROUND;
|
||||||
} else {
|
} else {
|
||||||
// Reset
|
// Reset
|
||||||
ulNode.style.background = null
|
ulNode.style.background = null;
|
||||||
// Remove existed buttons
|
// Remove existed buttons
|
||||||
if (ulNode) {
|
if (ulNode) {
|
||||||
// Find all .a child nodes
|
// Find all .a child nodes
|
||||||
const atags = ulNode.querySelectorAll('a')
|
const atags = ulNode.querySelectorAll('a');
|
||||||
|
|
||||||
for (const atag of atags) {
|
for (const atag of atags) {
|
||||||
// Reset display
|
// Reset display
|
||||||
atag.style.display = null
|
atag.style.display = null;
|
||||||
// Remove extension's button
|
// Remove extension's button
|
||||||
if (CH_BTN_TXTS.indexOf(atag.innerHTML) >= 0) {
|
if (CH_BTN_TXTS.indexOf(atag.innerHTML) >= 0) {
|
||||||
// Need to remove
|
// Need to remove
|
||||||
ulNode.removeChild(atag)
|
ulNode.removeChild(atag);
|
||||||
} else {
|
} else {
|
||||||
// Do not remove, just reset
|
// Do not remove, just reset
|
||||||
atag.innerHTML = replacePreviewText
|
atag.innerHTML = replacePreviewText;
|
||||||
atag.style.display = null
|
atag.style.display = null;
|
||||||
atag.style.fontSize = null
|
atag.style.fontSize = null;
|
||||||
atag.style.position = null
|
atag.style.position = null;
|
||||||
atag.style.backgroundImage = null
|
atag.style.backgroundImage = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also remove br tag in ul
|
// Also remove br tag in ul
|
||||||
const brtag = ulNode.querySelector('br')
|
const brtag = ulNode.querySelector('br');
|
||||||
if (brtag) ulNode.removeChild(brtag)
|
if (brtag) ulNode.removeChild(brtag);
|
||||||
}
|
}
|
||||||
// Just reset and remove nodes, do nothing else
|
// Just reset and remove nodes, do nothing else
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Full preview mode
|
// Full preview mode
|
||||||
additionalNode.style.display = chAlwaysDisplay ? 'block' : null
|
additionalNode.style.display = chAlwaysDisplay ? 'block' : null;
|
||||||
|
|
||||||
// Remove br tag
|
// Remove br tag
|
||||||
const brtag = ulNode.querySelector('br')
|
const brtag = ulNode.querySelector('br');
|
||||||
if (brtag) ulNode.removeChild(brtag)
|
if (brtag) ulNode.removeChild(brtag);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change replace preview text button into icon
|
// Change replace preview text button into icon
|
||||||
if (replacePreviewBtn?.innerHTML !== '🖼️') {
|
if (replacePreviewBtn?.innerHTML !== '🖼️') {
|
||||||
needToAddButtons = true
|
needToAddButtons = true;
|
||||||
replacePreviewBtn.innerHTML = '🖼️'
|
replacePreviewBtn.innerHTML = '🖼️';
|
||||||
styleBtn(replacePreviewBtn, isThumbMode)
|
styleBtn(replacePreviewBtn, isThumbMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!needToAddButtons) return
|
if (!needToAddButtons) return;
|
||||||
// Search_term node
|
// Search_term node
|
||||||
// Search_term = subfolder path + model name + ext
|
// Search_term = subfolder path + model name + ext
|
||||||
searchTermNode = card.querySelector('.actions .additional .search_term')
|
searchTermNode = card.querySelector('.actions .additional .search_term');
|
||||||
if (!searchTermNode) return
|
if (!searchTermNode) return;
|
||||||
// Get search_term
|
// Get search_term
|
||||||
searchTerm = searchTermNode.innerHTML
|
searchTerm = searchTermNode.innerHTML;
|
||||||
if (!searchTerm) return
|
if (!searchTerm) return;
|
||||||
|
|
||||||
// Then we need to add 3 buttons to each ul node:
|
// Then we need to add 3 buttons to each ul node:
|
||||||
const openUrlNode = document.createElement('a')
|
const openUrlNode = document.createElement('a');
|
||||||
openUrlNode.href = '#'
|
openUrlNode.href = '#';
|
||||||
openUrlNode.innerHTML = '🌐'
|
openUrlNode.innerHTML = '🌐';
|
||||||
styleBtn(openUrlNode, isThumbMode)
|
styleBtn(openUrlNode, isThumbMode);
|
||||||
openUrlNode.title = "Open this model's civitai url"
|
openUrlNode.title = "Open this model's civitai url";
|
||||||
openUrlNode.setAttribute('onclick', `open_model_url(event, '${modelType}', '${searchTerm}')`)
|
openUrlNode.setAttribute(
|
||||||
|
'onclick',
|
||||||
|
`open_model_url(event, '${modelType}', '${searchTerm}')`,
|
||||||
|
);
|
||||||
|
|
||||||
const addTriggerWordsNode = document.createElement('a')
|
const addTriggerWordsNode = document.createElement('a');
|
||||||
addTriggerWordsNode.href = '#'
|
addTriggerWordsNode.href = '#';
|
||||||
addTriggerWordsNode.innerHTML = '💡'
|
addTriggerWordsNode.innerHTML = '💡';
|
||||||
styleBtn(addTriggerWordsNode, isThumbMode)
|
styleBtn(addTriggerWordsNode, isThumbMode);
|
||||||
addTriggerWordsNode.title = 'Add trigger words to prompt'
|
addTriggerWordsNode.title = 'Add trigger words to prompt';
|
||||||
addTriggerWordsNode.setAttribute('onclick', `add_trigger_words(event, '${modelType}', '${searchTerm}')`)
|
addTriggerWordsNode.setAttribute(
|
||||||
|
'onclick',
|
||||||
|
`add_trigger_words(event, '${modelType}', '${searchTerm}')`,
|
||||||
|
);
|
||||||
|
|
||||||
const usePreviewPromptNode = document.createElement('a')
|
const usePreviewPromptNode = document.createElement('a');
|
||||||
usePreviewPromptNode.href = '#'
|
usePreviewPromptNode.href = '#';
|
||||||
usePreviewPromptNode.innerHTML = '🏷️'
|
usePreviewPromptNode.innerHTML = '🏷️';
|
||||||
styleBtn(usePreviewPromptNode, isThumbMode)
|
styleBtn(usePreviewPromptNode, isThumbMode);
|
||||||
usePreviewPromptNode.title = 'Use prompt from preview image'
|
usePreviewPromptNode.title = 'Use prompt from preview image';
|
||||||
usePreviewPromptNode.setAttribute('onclick', `use_preview_prompt(event, '${modelType}', '${searchTerm}')`)
|
usePreviewPromptNode.setAttribute(
|
||||||
|
'onclick',
|
||||||
|
`use_preview_prompt(event, '${modelType}', '${searchTerm}')`,
|
||||||
|
);
|
||||||
|
|
||||||
// Add to card
|
// Add to card
|
||||||
ulNode.appendChild(openUrlNode)
|
ulNode.appendChild(openUrlNode);
|
||||||
// Add br if metadata_button exists
|
// Add br if metadata_button exists
|
||||||
if (isThumbMode && metadataButton) ulNode.appendChild(document.createElement('br'))
|
if (isThumbMode && metadataButton) ulNode.appendChild(document.createElement('br'));
|
||||||
ulNode.appendChild(addTriggerWordsNode)
|
ulNode.appendChild(addTriggerWordsNode);
|
||||||
ulNode.appendChild(usePreviewPromptNode)
|
ulNode.appendChild(usePreviewPromptNode);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const fixInterval = setInterval(() => {
|
const fixInterval = setInterval(() => {
|
||||||
const checkDom = document.querySelector('#txt2img_lora_cards')
|
const checkDom = document.querySelector('#txt2img_lora_cards');
|
||||||
if (checkDom) {
|
if (checkDom) {
|
||||||
updateCardForCivitai()
|
updateCardForCivitai();
|
||||||
clearInterval(fixInterval)
|
clearInterval(fixInterval);
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 1000);
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,67 +1,67 @@
|
||||||
const MIN_WIDTH = 240
|
const MIN_WIDTH = 240;
|
||||||
|
|
||||||
const addDraggable = (tabId: string) => {
|
const addDraggable = (tabId: string) => {
|
||||||
const settings = document.getElementById(`${tabId}_settings`)
|
const settings = document.getElementById(`${tabId}_settings`);
|
||||||
const checkDraggableLine = document.querySelector(`#tab_${tabId} .draggable-line`)
|
const checkDraggableLine = document.querySelector(`#tab_${tabId} .draggable-line`);
|
||||||
if (!settings || checkDraggableLine) return
|
if (!settings || checkDraggableLine) return;
|
||||||
|
|
||||||
settings.style.minWidth = `min(${MIN_WIDTH}px, 100%)`
|
settings.style.minWidth = `min(${MIN_WIDTH}px, 100%)`;
|
||||||
|
|
||||||
const lineWrapper = document.createElement('div')
|
const lineWrapper = document.createElement('div');
|
||||||
lineWrapper.classList.add('draggable-line')
|
lineWrapper.classList.add('draggable-line');
|
||||||
|
|
||||||
settings.insertAdjacentElement('afterend', lineWrapper)
|
settings.insertAdjacentElement('afterend', lineWrapper);
|
||||||
|
|
||||||
const container: HTMLElement | any = settings.parentElement
|
const container: HTMLElement | any = settings.parentElement;
|
||||||
container.classList.add('draggable-container')
|
container.classList.add('draggable-container');
|
||||||
|
|
||||||
const results = document.getElementById(`${tabId}_results`)
|
const results = document.getElementById(`${tabId}_results`);
|
||||||
if (!results) return
|
if (!results) return;
|
||||||
|
|
||||||
results.style.minWidth = `${MIN_WIDTH}px`
|
results.style.minWidth = `${MIN_WIDTH}px`;
|
||||||
|
|
||||||
let linePosition = 50
|
let linePosition = 50;
|
||||||
settings.style.flexBasis = `${linePosition}%`
|
settings.style.flexBasis = `${linePosition}%`;
|
||||||
results.style.flexBasis = `${100 - linePosition}%`
|
results.style.flexBasis = `${100 - linePosition}%`;
|
||||||
|
|
||||||
let isDragging = false
|
let isDragging = false;
|
||||||
|
|
||||||
lineWrapper.addEventListener('mousedown', (e) => {
|
lineWrapper.addEventListener('mousedown', (e) => {
|
||||||
isDragging = true
|
isDragging = true;
|
||||||
e.preventDefault()
|
e.preventDefault();
|
||||||
})
|
});
|
||||||
|
|
||||||
document.addEventListener('mousemove', (event) => {
|
document.addEventListener('mousemove', (event) => {
|
||||||
if (!isDragging) return
|
if (!isDragging) return;
|
||||||
|
|
||||||
const tab: HTMLElement | any = document.querySelector(`#tab_${tabId}`)
|
const tab: HTMLElement | any = document.querySelector(`#tab_${tabId}`);
|
||||||
if (!tab) return
|
if (!tab) return;
|
||||||
|
|
||||||
let offsetX = tab.offsetLeft
|
let offsetX = tab.offsetLeft;
|
||||||
let parent = tab.offsetParent
|
let parent = tab.offsetParent;
|
||||||
|
|
||||||
while (parent) {
|
while (parent) {
|
||||||
offsetX += parent.offsetLeft
|
offsetX += parent.offsetLeft;
|
||||||
parent = parent.offsetParent
|
parent = parent.offsetParent;
|
||||||
}
|
}
|
||||||
|
|
||||||
const containerWidth = container.offsetWidth
|
const containerWidth = container.offsetWidth;
|
||||||
const mouseX = event.clientX
|
const mouseX = event.clientX;
|
||||||
const linePosition = ((mouseX - offsetX) / containerWidth) * 100
|
const linePosition = ((mouseX - offsetX) / containerWidth) * 100;
|
||||||
|
|
||||||
if (linePosition <= (MIN_WIDTH / containerWidth) * 100) return
|
if (linePosition <= (MIN_WIDTH / containerWidth) * 100) return;
|
||||||
if (linePosition >= (1 - MIN_WIDTH / containerWidth) * 100) return
|
if (linePosition >= (1 - MIN_WIDTH / containerWidth) * 100) return;
|
||||||
|
|
||||||
settings.style.flexBasis = `${linePosition}%`
|
settings.style.flexBasis = `${linePosition}%`;
|
||||||
results.style.flexBasis = `${100 - linePosition}%`
|
results.style.flexBasis = `${100 - linePosition}%`;
|
||||||
})
|
});
|
||||||
|
|
||||||
document.addEventListener('mouseup', () => {
|
document.addEventListener('mouseup', () => {
|
||||||
isDragging = false
|
isDragging = false;
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
addDraggable('txt2img')
|
addDraggable('txt2img');
|
||||||
addDraggable('img2img')
|
addDraggable('img2img');
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,73 +1,73 @@
|
||||||
const replaceIcon = (button: HTMLButtonElement, emoji: string[], svg: string) => {
|
const replaceIcon = (button: HTMLButtonElement, emoji: string[], svg: string) => {
|
||||||
if (!button?.textContent) return
|
if (!button?.textContent) return;
|
||||||
emoji.forEach((e) => {
|
emoji.forEach((e) => {
|
||||||
if (button?.textContent?.includes(e)) {
|
if (button?.textContent?.includes(e)) {
|
||||||
button.innerHTML = `<span role="img" class="anticon anticon-replace" aria-label={button.textContent}><svg viewBox="64 64 896 896" focusable="false" width="1em" height="1em" fill="currentColor" aria-hidden="true">${svg}</svg></span>`
|
button.innerHTML = `<span role="img" class="anticon anticon-replace" aria-label={button.textContent}><svg viewBox="64 64 896 896" focusable="false" width="1em" height="1em" fill="currentColor" aria-hidden="true">${svg}</svg></span>`;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
document.querySelectorAll('button').forEach((button) => {
|
document.querySelectorAll('button').forEach((button) => {
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['📂'],
|
['📂'],
|
||||||
'<path d="M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"></path>'
|
'<path d="M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['🔄', '🔁'],
|
['🔄', '🔁'],
|
||||||
'<path d="M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z"></path>'
|
'<path d="M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['↙️'],
|
['↙️'],
|
||||||
'<path d="M603.3 327.5l-246 178a7.95 7.95 0 000 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path>'
|
'<path d="M603.3 327.5l-246 178a7.95 7.95 0 000 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['🗑️'],
|
['🗑️'],
|
||||||
'<path d="M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"></path>'
|
'<path d="M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['📋'],
|
['📋'],
|
||||||
'<path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z"></path>'
|
'<path d="M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['💾'],
|
['💾'],
|
||||||
'<path d="M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"></path>'
|
'<path d="M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['🎲️'],
|
['🎲️'],
|
||||||
'<path d="M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0011.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 00-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 00-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z"></path>'
|
'<path d="M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0011.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 00-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 00-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['♻️'],
|
['♻️'],
|
||||||
'<path d="M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 000 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z"></path>'
|
'<path d="M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 000 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['🪄'],
|
['🪄'],
|
||||||
'<defs><style></style></defs><path d="M899.1 869.6l-53-305.6H864c14.4 0 26-11.6 26-26V346c0-14.4-11.6-26-26-26H618V138c0-14.4-11.6-26-26-26H432c-14.4 0-26 11.6-26 26v182H160c-14.4 0-26 11.6-26 26v192c0 14.4 11.6 26 26 26h17.9l-53 305.6a25.95 25.95 0 0025.6 30.4h723c1.5 0 3-.1 4.4-.4a25.88 25.88 0 0021.2-30zM204 390h272V182h72v208h272v104H204V390zm468 440V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H416V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H202.8l45.1-260H776l45.1 260H672z"></path>'
|
'<defs><style></style></defs><path d="M899.1 869.6l-53-305.6H864c14.4 0 26-11.6 26-26V346c0-14.4-11.6-26-26-26H618V138c0-14.4-11.6-26-26-26H432c-14.4 0-26 11.6-26 26v182H160c-14.4 0-26 11.6-26 26v192c0 14.4 11.6 26 26 26h17.9l-53 305.6a25.95 25.95 0 0025.6 30.4h723c1.5 0 3-.1 4.4-.4a25.88 25.88 0 0021.2-30zM204 390h272V182h72v208h272v104H204V390zm468 440V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H416V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H202.8l45.1-260H776l45.1 260H672z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['⚙️'],
|
['⚙️'],
|
||||||
'<path d="M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"></path>'
|
'<path d="M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['➡️'],
|
['➡️'],
|
||||||
'<path d="M666.7 505.5l-246-178A8 8 0 00408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path>'
|
'<path d="M666.7 505.5l-246-178A8 8 0 00408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path>',
|
||||||
)
|
);
|
||||||
replaceIcon(
|
replaceIcon(
|
||||||
button,
|
button,
|
||||||
['⇅'],
|
['⇅'],
|
||||||
'<path d="M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"></path>'
|
'<path d="M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"></path>',
|
||||||
)
|
);
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
export default () => {
|
export default () => {
|
||||||
// favicon
|
// favicon
|
||||||
const favicon: HTMLLinkElement = document.createElement('link')
|
const favicon: HTMLLinkElement = document.createElement('link');
|
||||||
favicon.rel = 'icon'
|
favicon.rel = 'icon';
|
||||||
favicon.type = 'image/svg+xml'
|
favicon.type = 'image/svg+xml';
|
||||||
favicon.href = 'https://gw.alipayobjects.com/zos/bmw-prod/51a51720-8a30-4430-b6c9-be5712364f04.svg'
|
favicon.href =
|
||||||
document.getElementsByTagName('head')[0].appendChild(favicon)
|
'https://gw.alipayobjects.com/zos/bmw-prod/51a51720-8a30-4430-b6c9-be5712364f04.svg';
|
||||||
}
|
document.getElementsByTagName('head')[0].appendChild(favicon);
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
[id$='_script_container'] {
|
[id$='_script_container'] {
|
||||||
.block.svelte-mppz8v:not(.livePreview, .gradio-gallery, .gradio-image, .gradio-video, .gradio-file) {
|
.block.svelte-mppz8v:not(
|
||||||
|
.livePreview,
|
||||||
|
.gradio-gallery,
|
||||||
|
.gradio-image,
|
||||||
|
.gradio-video,
|
||||||
|
.gradio-file
|
||||||
|
) {
|
||||||
border: unset !important;
|
border: unset !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,10 @@
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Shadow */
|
/* Shadow */
|
||||||
--box-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%);
|
--box-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%),
|
||||||
--box-shadow-secondary: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%);
|
0 9px 28px 8px rgb(0 0 0 / 5%);
|
||||||
|
--box-shadow-secondary: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%),
|
||||||
|
0 9px 28px 8px rgb(0 0 0 / 5%);
|
||||||
|
|
||||||
/* Img */
|
/* Img */
|
||||||
--gallery-background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAFpJREFUWAntljEKADAIA23p6v//qQ+wfUEcCu1yriEgp0FHRJSJcnehmmWm1Dv/lO4HIg1AAAKjTqm03ea88zMCCEDgO4HV5bS757f+7wRoAAIQ4B9gByAAgQ3pfiDmXmAeEwAAAABJRU5ErkJggg==')
|
--gallery-background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAFpJREFUWAntljEKADAIA23p6v//qQ+wfUEcCu1yriEgp0FHRJSJcnehmmWm1Dv/lO4HIg1AAAKjTqm03ea88zMCCEDgO4HV5bS757f+7wRoAAIQ4B9gByAAgQ3pfiDmXmAeEwAAAABJRU5ErkJggg==')
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,11 @@
|
||||||
--color-info: #1677ff;
|
--color-info: #1677ff;
|
||||||
--color-text-base: #000;
|
--color-text-base: #000;
|
||||||
--color-bg-base: #fff;
|
--color-bg-base: #fff;
|
||||||
--font-family: 'HarmonyOS Sans', -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, 'Helvetica Neue', arial,
|
--font-family: 'HarmonyOS Sans', -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
|
||||||
'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
'Helvetica Neue', arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||||||
--font-family-code: 'Hack Nerd Font Mono', hack, 'SFMono-Regular', consolas, 'Liberation Mono', menlo, courier,
|
'Segoe UI Symbol', 'Noto Color Emoji';
|
||||||
monospace;
|
--font-family-code: 'Hack Nerd Font Mono', hack, 'SFMono-Regular', consolas, 'Liberation Mono',
|
||||||
|
menlo, courier, monospace;
|
||||||
--font-size: 14px;
|
--font-size: 14px;
|
||||||
--line-width: 1px;
|
--line-width: 1px;
|
||||||
--line-type: solid;
|
--line-type: solid;
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
// scripts.js
|
// scripts.js
|
||||||
|
|
||||||
declare const gradioApp: () => DocumentFragment
|
declare const gradioApp: () => DocumentFragment;
|
||||||
declare const get_uiCurrentTab: () => HTMLElement
|
declare const get_uiCurrentTab: () => HTMLElement;
|
||||||
declare const get_uiCurrentTabContent: () => HTMLElement
|
declare const get_uiCurrentTabContent: () => HTMLElement;
|
||||||
declare const uiUpdateCallbacks: ((m: unknown) => void)[]
|
declare const uiUpdateCallbacks: ((m: unknown) => void)[];
|
||||||
declare const uiLoadedCallbacks: ((m: unknown) => void)[]
|
declare const uiLoadedCallbacks: ((m: unknown) => void)[];
|
||||||
declare const uiTabChangeCallbacks: ((m: unknown) => void)[]
|
declare const uiTabChangeCallbacks: ((m: unknown) => void)[];
|
||||||
declare const optionsChangedCallbacks: ((m: unknown) => void)[]
|
declare const optionsChangedCallbacks: ((m: unknown) => void)[];
|
||||||
declare let uiCurrentTab: Element | null
|
declare let uiCurrentTab: Element | null;
|
||||||
declare const onUiUpdate: (callback: (m: unknown) => void) => void
|
declare const onUiUpdate: (callback: (m: unknown) => void) => void;
|
||||||
declare const onUiLoaded: (callback: (m: unknown) => void) => void
|
declare const onUiLoaded: (callback: (m: unknown) => void) => void;
|
||||||
declare const onUiTabChange: (callback: (m: unknown) => void) => void
|
declare const onUiTabChange: (callback: (m: unknown) => void) => void;
|
||||||
declare const onOptionsChanged: (callback: (m: unknown) => void) => void
|
declare const onOptionsChanged: (callback: (m: unknown) => void) => void;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { Theme as AntdStyleTheme } from 'antd-style'
|
import { Theme as AntdStyleTheme } from 'antd-style';
|
||||||
|
|
||||||
declare module 'styled-components' {
|
declare module 'styled-components' {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
import React from 'react'
|
import React from 'react';
|
||||||
|
|
||||||
export type DivProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>
|
export type DivProps = React.DetailedHTMLProps<
|
||||||
|
React.HTMLAttributes<HTMLDivElement>,
|
||||||
|
HTMLDivElement
|
||||||
|
>;
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,38 @@
|
||||||
// ui.js
|
// ui.js
|
||||||
|
|
||||||
declare const set_theme: (theme: string) => void
|
declare const set_theme: (theme: string) => void;
|
||||||
declare const all_gallery_buttons: () => Element[]
|
declare const all_gallery_buttons: () => Element[];
|
||||||
declare const selected_gallery_button: () => Element | null
|
declare const selected_gallery_button: () => Element | null;
|
||||||
declare const selected_gallery_index: () => number
|
declare const selected_gallery_index: () => number;
|
||||||
declare const extract_image_from_gallery: (gallery: Element[]) => Element[]
|
declare const extract_image_from_gallery: (gallery: Element[]) => Element[];
|
||||||
declare const args_to_array: (args: IArguments) => any[]
|
declare const args_to_array: (args: IArguments) => any[];
|
||||||
declare const switch_to_txt2img: () => any[]
|
declare const switch_to_txt2img: () => any[];
|
||||||
declare const switch_to_img2img_tab: (no: number) => void
|
declare const switch_to_img2img_tab: (no: number) => void;
|
||||||
declare const switch_to_img2img: () => any[]
|
declare const switch_to_img2img: () => any[];
|
||||||
declare const switch_to_sketch: () => any[]
|
declare const switch_to_sketch: () => any[];
|
||||||
declare const switch_to_inpaint_sketch: () => any[]
|
declare const switch_to_inpaint_sketch: () => any[];
|
||||||
declare const switch_to_inpaint: () => any[]
|
declare const switch_to_inpaint: () => any[];
|
||||||
declare const switch_to_extras: () => any[]
|
declare const switch_to_extras: () => any[];
|
||||||
declare const get_tab_index: (tabId: string) => number
|
declare const get_tab_index: (tabId: string) => number;
|
||||||
declare const create_tab_index_args: (tabId: string, args: any[]) => any[]
|
declare const create_tab_index_args: (tabId: string, args: any[]) => any[];
|
||||||
declare const get_img2img_tab_index: () => any[]
|
declare const get_img2img_tab_index: () => any[];
|
||||||
declare const create_submit_args: (args: any[]) => any[]
|
declare const create_submit_args: (args: any[]) => any[];
|
||||||
declare const showSubmitButtons: (tabname: string, show: boolean) => void
|
declare const showSubmitButtons: (tabname: string, show: boolean) => void;
|
||||||
declare const submit: () => any[]
|
declare const submit: () => any[];
|
||||||
declare const submit_img2img: () => any[]
|
declare const submit_img2img: () => any[];
|
||||||
declare const modelmerger: () => any[]
|
declare const modelmerger: () => any[];
|
||||||
declare const ask_for_style_name: (
|
declare const ask_for_style_name: (
|
||||||
arg0: any,
|
arg0: any,
|
||||||
prompt_text: string,
|
prompt_text: string,
|
||||||
negative_prompt_text: string
|
negative_prompt_text: string,
|
||||||
) => [string, string, string]
|
) => [string, string, string];
|
||||||
declare const confirm_clear_prompt: (prompt: string, negative_prompt: string) => [string, string]
|
declare const confirm_clear_prompt: (prompt: string, negative_prompt: string) => [string, string];
|
||||||
declare const recalculatePromptTokens: (name: string) => void
|
declare const recalculatePromptTokens: (name: string) => void;
|
||||||
declare const recalculate_prompts_txt2img: () => any[]
|
declare const recalculate_prompts_txt2img: () => any[];
|
||||||
declare const recalculate_prompts_img2img: () => any[]
|
declare const recalculate_prompts_img2img: () => any[];
|
||||||
declare const update_txt2img_tokens: (...args: any[]) => any
|
declare const update_txt2img_tokens: (...args: any[]) => any;
|
||||||
declare const update_img2img_tokens: (...args: any[]) => any
|
declare const update_img2img_tokens: (...args: any[]) => any;
|
||||||
declare const restart_reload: () => any[]
|
declare const restart_reload: () => any[];
|
||||||
declare const updateInput: (target: Element) => void
|
declare const updateInput: (target: Element) => void;
|
||||||
declare const selectCheckpoint: (name: string) => void
|
declare const selectCheckpoint: (name: string) => void;
|
||||||
declare const getTranslation: (text: string) => string
|
declare const getTranslation: (text: string) => string;
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
import 'umi/typings'
|
import 'umi/typings';
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue