New Feature: Keyword Grouping / One-Click Keyword Addition
新功能:关键词分组 / 一键添加关键词pull/174/head
parent
ec53d79bc6
commit
787575aca2
|
|
@ -129,6 +129,10 @@ Translation supports almost all national languages, but the UI interface of most
|
|||
|
||||

|
||||
|
||||
- [One-Click Keyword Addition](https://aiodoc.physton.com/GroupTags.html)
|
||||
|
||||

|
||||
|
||||
## Donate
|
||||
|
||||
[Donation list](https://aiodoc.physton.com/Donate.html)
|
||||
|
|
|
|||
|
|
@ -135,6 +135,10 @@ sd-webui-prompt-all-in-one 是一个基于 [stable-diffusion-webui](https://gith
|
|||
|
||||

|
||||
|
||||
- [一键添加关键词](https://aiodoc.physton.com/zh-CN/GroupTags.html)
|
||||
|
||||

|
||||
|
||||
## 捐赠
|
||||
|
||||
[捐赠列表](https://aiodoc.physton.com/zh-CN/Donate.html)
|
||||
|
|
|
|||
|
|
@ -129,6 +129,10 @@ sd-webui-prompt-all-in-one - это расширение, основанное
|
|||
|
||||

|
||||
|
||||
- [Добавление ключевых слов в один клик](https://aiodoc.physton.com/ru/GroupTags.html)
|
||||
|
||||

|
||||
|
||||
## Пожертвования
|
||||
|
||||
[Список пожертвований](https://aiodoc.physton.com/ru/Donate.html)
|
||||
|
|
|
|||
|
|
@ -135,6 +135,10 @@ sd-webui-prompt-all-in-one 是一個基於 [stable-diffusion-webui](https://gith
|
|||
|
||||

|
||||
|
||||
- [一鍵添加關鍵詞](https://aiodoc.physton.com/zh-TW/GroupTags.html)
|
||||
|
||||

|
||||
|
||||
## 捐贈
|
||||
|
||||
[捐贈列表](https://aiodoc.physton.com/zh-TW/Donate.html)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
117
i18n.json
117
i18n.json
|
|
@ -132,7 +132,14 @@
|
|||
"disabled": "禁止",
|
||||
"last_input_prompt": "最后输入的提示词",
|
||||
"is_break_before_wrap": "是否在 “BREAK” 关键词前面加换行符。<br/>勾选后自动添加换行符。<br/>取消勾选将不做任何处理。",
|
||||
"is_break_after_wrap": "是否在 “BREAK” 关键词后面加换行符。<br/>勾选后自动添加换行符。<br/>取消勾选将不做任何处理。"
|
||||
"is_break_after_wrap": "是否在 “BREAK” 关键词后面加换行符。<br/>勾选后自动添加换行符。<br/>取消勾选将不做任何处理。",
|
||||
"show_panel": "显示面板",
|
||||
"hide_panel": "隐藏面板",
|
||||
"show_group_tags": "显示分组标签",
|
||||
"hide_group_tags": "隐藏分组标签",
|
||||
"tags-copyright": "提示词整合来源 路过银河(知乎)、未知作者(Google Drive)、互联网等等,感谢这些作者的无私奉献!",
|
||||
"reset_default_color": "重置为默认颜色",
|
||||
"clear_color": "清除颜色"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -266,7 +273,14 @@
|
|||
"disabled": "禁止",
|
||||
"last_input_prompt": "最後輸入的提示詞",
|
||||
"is_break_before_wrap": "是否在“BREAK”關鍵詞前面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
|
||||
"is_break_after_wrap": "是否在“BREAK”關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。"
|
||||
"is_break_after_wrap": "是否在“BREAK”關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
|
||||
"show_panel": "顯示面板",
|
||||
"hide_panel": "隱藏面板",
|
||||
"show_group_tags": "顯示分組標籤",
|
||||
"hide_group_tags": "隱藏分組標籤",
|
||||
"tags-copyright": "提示詞整合來源 路過銀河(知乎)、未知作者(Google Drive)、互聯網等等,感謝這些作者的無私奉獻!",
|
||||
"reset_default_color": "重置為預設顏色",
|
||||
"clear_color": "清除顏色"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -400,7 +414,14 @@
|
|||
"disabled": "禁止",
|
||||
"last_input_prompt": "最後輸入的提示詞",
|
||||
"is_break_before_wrap": "是否在「BREAK」關鍵詞前面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
|
||||
"is_break_after_wrap": "是否在「BREAK」關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。"
|
||||
"is_break_after_wrap": "是否在「BREAK」關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
|
||||
"show_panel": "顯示面板",
|
||||
"hide_panel": "隱藏面板",
|
||||
"show_group_tags": "顯示分組標籤",
|
||||
"hide_group_tags": "隱藏分組標籤",
|
||||
"tags-copyright": "提示詞整合來源 路過銀河(知乎)、未知作者(Google Drive)、互聯網等等,感謝這些作者的無私奉獻!",
|
||||
"reset_default_color": "重置為預設顏色",
|
||||
"clear_color": "清除顏色"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -534,7 +555,14 @@
|
|||
"disabled": "Disabled",
|
||||
"last_input_prompt": "Last input prompt",
|
||||
"is_break_before_wrap": "Whether to add a line break before the \"BREAK\" keyword.<br/>When selected, a line break will be automatically added.<br/>Deselecting will not perform any action.",
|
||||
"is_break_after_wrap": "Whether to add a line break after the \"BREAK\" keyword.<br/>When selected, a line break will be automatically added.<br/>Deselecting will not perform any action."
|
||||
"is_break_after_wrap": "Whether to add a line break after the \"BREAK\" keyword.<br/>When selected, a line break will be automatically added.<br/>Deselecting will not perform any action.",
|
||||
"show_panel": "Show Panel",
|
||||
"hide_panel": "Hide Panel",
|
||||
"show_group_tags": "Show Group Tags",
|
||||
"hide_group_tags": "Hide Group Tags",
|
||||
"tags-copyright": "Prompt words integration source from 路过银河(知乎)、unknown author(Google Drive)、internet, etc. Thanks to these selfless contributors!",
|
||||
"reset_default_color": "Reset to Default Color",
|
||||
"clear_color": "Clear Color"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -679,7 +707,14 @@
|
|||
"disabled": "معطل",
|
||||
"last_input_prompt": "آخر تلميح مدخل",
|
||||
"is_break_before_wrap": "هل ترغب في إضافة فاصلة قبل كلمة \"BREAK\".<br/>عند تحديدها، سيتم إضافة فاصلة تلقائيًا.<br/>عند إلغاء التحديد، لن يتم أي تغيير.",
|
||||
"is_break_after_wrap": "هل ترغب في إضافة فاصلة بعد كلمة \"BREAK\".<br/>عند تحديدها، سيتم إضافة فاصلة تلقائيًا.<br/>عند إلغاء التحديد، لن يتم أي تغيير."
|
||||
"is_break_after_wrap": "هل ترغب في إضافة فاصلة بعد كلمة \"BREAK\".<br/>عند تحديدها، سيتم إضافة فاصلة تلقائيًا.<br/>عند إلغاء التحديد، لن يتم أي تغيير.",
|
||||
"show_panel": "عرض اللوحة",
|
||||
"hide_panel": "إخفاء اللوحة",
|
||||
"show_group_tags": "عرض علامات المجموعة",
|
||||
"hide_group_tags": "إخفاء علامات المجموعة",
|
||||
"tags-copyright": "مصدر دمج كلمات التلميح من لُطْفٍ بالمجرّة (زهو)، مؤلف غير معروف (جوجل درايف)، الإنترنت، وما إلى ذلك. شكرًا لهؤلاء المساهمين الذين يعملون بلا مقابل!",
|
||||
"reset_default_color": "إعادة تعيين اللون الافتراضي",
|
||||
"clear_color": "مسح اللون"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -912,7 +947,14 @@
|
|||
"disabled": "Désactivé",
|
||||
"last_input_prompt": "Dernier prompt d'entrée",
|
||||
"is_break_before_wrap": "Ajouter un saut de ligne avant le mot clé \"BREAK\".<br/>Lorsqu'il est sélectionné, un saut de ligne sera automatiquement ajouté.<br/>La désélection n'effectuera aucune action.",
|
||||
"is_break_after_wrap": "Ajouter un saut de ligne après le mot clé \"BREAK\".<br/>Lorsqu'il est sélectionné, un saut de ligne sera automatiquement ajouté.<br/>La désélection n'effectuera aucune action."
|
||||
"is_break_after_wrap": "Ajouter un saut de ligne après le mot clé \"BREAK\".<br/>Lorsqu'il est sélectionné, un saut de ligne sera automatiquement ajouté.<br/>La désélection n'effectuera aucune action.",
|
||||
"show_panel": "Afficher le panneau",
|
||||
"hide_panel": "Masquer le panneau",
|
||||
"show_group_tags": "Afficher les balises de groupe",
|
||||
"hide_group_tags": "Masquer les balises de groupe",
|
||||
"tags-copyright": "Source d'intégration des mots d'invite provenant de 路过银河(知乎)、auteur inconnu(Google Drive)、internet, etc. Merci à ces contributeurs altruistes !",
|
||||
"reset_default_color": "Réinitialiser la couleur par défaut",
|
||||
"clear_color": "Effacer la couleur"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1060,7 +1102,14 @@
|
|||
"disabled": "Deaktiviert",
|
||||
"last_input_prompt": "Letzte Eingabeaufforderung",
|
||||
"is_break_before_wrap": "Ob vor dem Schlüsselwort \"BREAK\" ein Zeilenumbruch hinzugefügt werden soll.<br/>Wenn ausgewählt, wird automatisch ein Zeilenumbruch hinzugefügt.<br/>Durch Abwählen wird keine Aktion durchgeführt.",
|
||||
"is_break_after_wrap": "Ob nach dem Schlüsselwort \"BREAK\" ein Zeilenumbruch hinzugefügt werden soll.<br/>Wenn ausgewählt, wird automatisch ein Zeilenumbruch hinzugefügt.<br/>Durch Abwählen wird keine Aktion durchgeführt."
|
||||
"is_break_after_wrap": "Ob nach dem Schlüsselwort \"BREAK\" ein Zeilenumbruch hinzugefügt werden soll.<br/>Wenn ausgewählt, wird automatisch ein Zeilenumbruch hinzugefügt.<br/>Durch Abwählen wird keine Aktion durchgeführt.",
|
||||
"show_panel": "Panel anzeigen",
|
||||
"hide_panel": "Panel ausblenden",
|
||||
"show_group_tags": "Gruppentags anzeigen",
|
||||
"hide_group_tags": "Gruppentags ausblenden",
|
||||
"tags-copyright": "Quelle für die Integration von Hinweiswörtern von 路过银河(知乎)、unbekannter Autor(Google Drive)、Internet usw. Vielen Dank an diese selbstlosen Beitragenden!",
|
||||
"reset_default_color": "Auf Standardfarbe zurücksetzen",
|
||||
"clear_color": "Farbe löschen"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1258,7 +1307,14 @@
|
|||
"disabled": "Disabilitato",
|
||||
"last_input_prompt": "Ultimo prompt di input",
|
||||
"is_break_before_wrap": "Se aggiungere un'interruzione di riga prima della parola chiave \"BREAK\".<br/>Quando selezionato, verrà aggiunta automaticamente un'interruzione di riga.<br/>La deselezione non eseguirà alcuna azione.",
|
||||
"is_break_after_wrap": "Se aggiungere un'interruzione di riga dopo la parola chiave \"BREAK\".<br/>Quando selezionato, verrà aggiunta automaticamente un'interruzione di riga.<br/>La deselezione non eseguirà alcuna azione."
|
||||
"is_break_after_wrap": "Se aggiungere un'interruzione di riga dopo la parola chiave \"BREAK\".<br/>Quando selezionato, verrà aggiunta automaticamente un'interruzione di riga.<br/>La deselezione non eseguirà alcuna azione.",
|
||||
"show_panel": "Mostra pannello",
|
||||
"hide_panel": "Nascondi pannello",
|
||||
"show_group_tags": "Mostra tag di gruppo",
|
||||
"hide_group_tags": "Nascondi tag di gruppo",
|
||||
"tags-copyright": "Fonte di integrazione delle parole di suggerimento da 路过银河(知乎)、autore sconosciuto(Google Drive)、internet, ecc. Grazie a questi generosi contributori!",
|
||||
"reset_default_color": "Ripristina colore predefinito",
|
||||
"clear_color": "Cancella colore"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1391,7 +1447,14 @@
|
|||
"disabled": "無効",
|
||||
"last_input_prompt": "最後の入力プロンプト",
|
||||
"is_break_before_wrap": "「BREAK」キーワードの前に改行を追加するかどうか。<br/>選択すると自動的に改行が追加されます。<br/>選択を解除すると何も行われません。",
|
||||
"is_break_after_wrap": "「BREAK」キーワードの後に改行を追加するかどうか。<br/>選択すると自動的に改行が追加されます。<br/>選択を解除すると何も行われません。"
|
||||
"is_break_after_wrap": "「BREAK」キーワードの後に改行を追加するかどうか。<br/>選択すると自動的に改行が追加されます。<br/>選択を解除すると何も行われません。",
|
||||
"show_panel": "パネルを表示",
|
||||
"hide_panel": "パネルを非表示",
|
||||
"show_group_tags": "グループタグを表示",
|
||||
"hide_group_tags": "グループタグを非表示",
|
||||
"tags-copyright": "プロンプトの単語統合元 路过银河(知乎)、不明な作者(Google Drive)、インターネットなど、これらの無私の貢献者に感謝します!",
|
||||
"reset_default_color": "デフォルトの色にリセット",
|
||||
"clear_color": "色をクリア"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1549,7 +1612,14 @@
|
|||
"disabled": "비활성화됨",
|
||||
"last_input_prompt": "마지막 입력 프롬프트",
|
||||
"is_break_before_wrap": "\"BREAK\" 키워드 앞에 줄 바꿈을 추가하시겠습니까?<br/>선택하면 자동으로 줄 바꿈이 추가됩니다.<br/>선택 취소 시 아무 작업도 수행되지 않습니다.",
|
||||
"is_break_after_wrap": "\"BREAK\" 키워드 뒤에 줄 바꿈을 추가하시겠습니까?<br/>선택하면 자동으로 줄 바꿈이 추가됩니다.<br/>선택 취소 시 아무 작업도 수행되지 않습니다."
|
||||
"is_break_after_wrap": "\"BREAK\" 키워드 뒤에 줄 바꿈을 추가하시겠습니까?<br/>선택하면 자동으로 줄 바꿈이 추가됩니다.<br/>선택 취소 시 아무 작업도 수행되지 않습니다.",
|
||||
"show_panel": "패널 표시",
|
||||
"hide_panel": "패널 숨기기",
|
||||
"show_group_tags": "그룹 태그 표시",
|
||||
"hide_group_tags": "그룹 태그 숨기기",
|
||||
"tags-copyright": "프롬프트 단어 통합 출처: 路过银河(知乎)、알 수 없는 작성자(Google Drive)、인터넷 등. 이러한 무비한 기여자들에게 감사드립니다!",
|
||||
"reset_default_color": "기본 색상으로 재설정",
|
||||
"clear_color": "색상 지우기"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1797,7 +1867,14 @@
|
|||
"disabled": "Desativado",
|
||||
"last_input_prompt": "Último prompt de entrada",
|
||||
"is_break_before_wrap": "Se deseja adicionar uma quebra de linha antes da palavra-chave \"BREAK\".<br/>Quando selecionado, uma quebra de linha será adicionada automaticamente.<br/>Desmarcar não executará nenhuma ação.",
|
||||
"is_break_after_wrap": "Se deseja adicionar uma quebra de linha após a palavra-chave \"BREAK\".<br/>Quando selecionado, uma quebra de linha será adicionada automaticamente.<br/>Desmarcar não executará nenhuma ação."
|
||||
"is_break_after_wrap": "Se deseja adicionar uma quebra de linha após a palavra-chave \"BREAK\".<br/>Quando selecionado, uma quebra de linha será adicionada automaticamente.<br/>Desmarcar não executará nenhuma ação.",
|
||||
"show_panel": "Mostrar painel",
|
||||
"hide_panel": "Ocultar painel",
|
||||
"show_group_tags": "Mostrar etiquetas de grupo",
|
||||
"hide_group_tags": "Ocultar etiquetas de grupo",
|
||||
"tags-copyright": "Fonte de integração de palavras-chave de 路过银河(知乎)、autor desconhecido(Google Drive)、internet, etc. Obrigado a esses contribuidores altruístas!",
|
||||
"reset_default_color": "Redefinir para cor padrão",
|
||||
"clear_color": "Limpar cor"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1945,7 +2022,14 @@
|
|||
"disabled": "Отключено",
|
||||
"last_input_prompt": "Последний запрос на ввод",
|
||||
"is_break_before_wrap": "Добавить перенос строки перед ключевым словом \"BREAK\".<br/>При выборе автоматически будет добавлен перенос строки.<br/>Снятие выбора не приведет к выполнению никаких действий.",
|
||||
"is_break_after_wrap": "Добавить перенос строки после ключевого слова \"BREAK\".<br/>При выборе автоматически будет добавлен перенос строки.<br/>Снятие выбора не приведет к выполнению никаких действий."
|
||||
"is_break_after_wrap": "Добавить перенос строки после ключевого слова \"BREAK\".<br/>При выборе автоматически будет добавлен перенос строки.<br/>Снятие выбора не приведет к выполнению никаких действий.",
|
||||
"show_panel": "Показать панель",
|
||||
"hide_panel": "Скрыть панель",
|
||||
"show_group_tags": "Показать групповые теги",
|
||||
"hide_group_tags": "Скрыть групповые теги",
|
||||
"tags-copyright": "Источник интеграции ключевых слов от 路过银河(知乎)、неизвестный автор(Google Drive)、интернет и т.д. Благодарим этих бескорыстных участников!",
|
||||
"reset_default_color": "Сбросить настройки цвета",
|
||||
"clear_color": "Очистить цвет"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -2108,7 +2192,14 @@
|
|||
"disabled": "Deshabilitado",
|
||||
"last_input_prompt": "Última indicación de entrada",
|
||||
"is_break_before_wrap": "Si agregar un salto de línea antes de la palabra clave \"BREAK\".<br/>Cuando está seleccionado, se agregará automáticamente un salto de línea.<br/>Si no está seleccionado, no se realizará ninguna acción.",
|
||||
"is_break_after_wrap": "Si agregar un salto de línea después de la palabra clave \"BREAK\".<br/>Cuando está seleccionado, se agregará automáticamente un salto de línea.<br/>Si no está seleccionado, no se realizará ninguna acción."
|
||||
"is_break_after_wrap": "Si agregar un salto de línea después de la palabra clave \"BREAK\".<br/>Cuando está seleccionado, se agregará automáticamente un salto de línea.<br/>Si no está seleccionado, no se realizará ninguna acción.",
|
||||
"show_panel": "Mostrar panel",
|
||||
"hide_panel": "Ocultar panel",
|
||||
"show_group_tags": "Mostrar etiquetas de grupo",
|
||||
"hide_group_tags": "Ocultar etiquetas de grupo",
|
||||
"tags-copyright": "Fuente de integración de palabras clave de 路过银河(知乎)、autor desconocido(Google Drive)、internet, etc. ¡Gracias a estos generosos colaboradores!",
|
||||
"reset_default_color": "Restablecer a color predeterminado",
|
||||
"clear_color": "Borrar color"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -20,6 +20,7 @@ from scripts.physton_prompt.gen_openai import gen_openai
|
|||
from scripts.physton_prompt.get_lang import get_lang
|
||||
from scripts.physton_prompt.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
|
||||
from scripts.physton_prompt.mbart50 import initialize as mbart50_initialize, translate as mbart50_translate
|
||||
from scripts.physton_prompt.get_group_tags import get_group_tags
|
||||
|
||||
try:
|
||||
from modules.shared import cmd_opts
|
||||
|
|
@ -368,6 +369,10 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
|
|||
except Exception as e:
|
||||
return {"success": False, 'message': str(e)}
|
||||
|
||||
@app.get("/physton_prompt/get_group_tags")
|
||||
async def _get_group_tags(lang: str):
|
||||
return {"tags": get_group_tags(lang)}
|
||||
|
||||
try:
|
||||
translate_api = st.get('translateApi')
|
||||
if translate_api == 'mbart50':
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
import os
|
||||
|
||||
def get_group_tags(lang):
|
||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
tags_file = os.path.join(current_dir, '../../group_tags/', 'custom.yaml')
|
||||
if not os.path.exists(tags_file):
|
||||
tags_file = os.path.join(current_dir, '../../group_tags/', lang + '.yaml')
|
||||
if not os.path.exists(tags_file):
|
||||
tags_file = os.path.join(current_dir, '../../group_tags/', 'default.yaml')
|
||||
if not os.path.exists(tags_file):
|
||||
return ''
|
||||
|
||||
tags_file = os.path.normpath(tags_file)
|
||||
tags = ''
|
||||
try:
|
||||
with open(tags_file, 'r', encoding='utf8') as f:
|
||||
tags = f.read()
|
||||
except:
|
||||
pass
|
||||
return tags
|
||||
|
|
@ -10,17 +10,21 @@
|
|||
"dependencies": {
|
||||
"autosize-input": "^1.0.2",
|
||||
"axios": "^1.4.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"papaparse": "^5.4.1",
|
||||
"sortablejs": "^1.15.0",
|
||||
"tinycolor2": "^1.6.0",
|
||||
"tippy.js": "^6.3.7",
|
||||
"toastr": "^2.1.4",
|
||||
"vue": "^3.2.47",
|
||||
"vue-clipboard3": "^2.0.0"
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue3-colorpicker": "^2.2.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^4.0.0",
|
||||
"less": "^4.1.3",
|
||||
"less-loader": "^11.1.0",
|
||||
"sass": "^1.65.1",
|
||||
"vite": "^4.1.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,10 @@
|
|||
@click:show-about="onShowAbout"
|
||||
:theme="theme"
|
||||
@click:switch-theme="onSwitchTheme"
|
||||
:group-tags="groupTags"
|
||||
:hide-group-tags="item.hideGroupTags"
|
||||
v-model:group-tags-color="groupTagsColor"
|
||||
@update:hide-group-tags="onUpdateHideGroupTags(item.id, $event)"
|
||||
></physton-prompt>
|
||||
</template>
|
||||
<translate-setting ref="translateSetting" v-model:language-code="languageCode"
|
||||
|
|
@ -123,6 +127,8 @@ import PackagesState from "@/components/packagesState.vue";
|
|||
import ChatgptPrompt from "@/components/chatgptPrompt.vue";
|
||||
import About from "@/components/about.vue";
|
||||
import globals from "../globals";
|
||||
import jsYaml from "js-yaml";
|
||||
import {ref} from "vue";
|
||||
|
||||
export default {
|
||||
name: 'App',
|
||||
|
|
@ -160,6 +166,8 @@ export default {
|
|||
hideDefaultInput: false,
|
||||
hidePanelKey: 'txt2ImgHidePanel',
|
||||
hidePanel: false,
|
||||
hideGroupTagsKey: 'txt2ImgHideGroupTags',
|
||||
hideGroupTags: false,
|
||||
id: 'phystonPrompt_txt2img_prompt'
|
||||
},
|
||||
{
|
||||
|
|
@ -179,6 +187,8 @@ export default {
|
|||
hideDefaultInput: false,
|
||||
hidePanelKey: 'txt2ImgNegHidePanel',
|
||||
hidePanel: false,
|
||||
hideGroupTagsKey: 'txt2ImgNegHideGroupTags',
|
||||
hideGroupTags: false,
|
||||
id: 'phystonPrompt_txt2img_neg_prompt'
|
||||
},
|
||||
{
|
||||
|
|
@ -198,6 +208,8 @@ export default {
|
|||
hideDefaultInput: false,
|
||||
hidePanelKey: 'img2ImgHidePanel',
|
||||
hidePanel: false,
|
||||
hideGroupTagsKey: 'img2ImgHideGroupTags',
|
||||
hideGroupTags: false,
|
||||
id: 'phystonPrompt_img2img_prompt'
|
||||
},
|
||||
{
|
||||
|
|
@ -217,6 +229,8 @@ export default {
|
|||
hideDefaultInput: false,
|
||||
hidePanelKey: 'img2ImgNegHidePanel',
|
||||
hidePanel: false,
|
||||
hideGroupTagsKey: 'img2ImgNegHideGroupTags',
|
||||
hideGroupTags: false,
|
||||
id: 'phystonPrompt_img2img_neg_prompt'
|
||||
},
|
||||
],
|
||||
|
|
@ -265,6 +279,9 @@ export default {
|
|||
isLatestVersion: true,
|
||||
|
||||
theme: 'dark',
|
||||
|
||||
groupTags: [],
|
||||
groupTagsColor: {},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
|
@ -276,6 +293,7 @@ export default {
|
|||
this.gradioAPI.setData('languageCode', val).then(data => {
|
||||
}).catch(err => {
|
||||
})
|
||||
this.loadGroupTags()
|
||||
},
|
||||
immediate: false,
|
||||
},
|
||||
|
|
@ -428,6 +446,17 @@ export default {
|
|||
},
|
||||
immediate: false,
|
||||
},
|
||||
groupTagsColor: {
|
||||
handler: function (val, oldVal) {
|
||||
if (!this.startWatchSave) return
|
||||
console.log('onGroupTagsColorChange', val, oldVal)
|
||||
this.gradioAPI.setData('groupTagsColor', val).then(data => {
|
||||
}).catch(err => {
|
||||
})
|
||||
},
|
||||
deep: true,
|
||||
immediate: false,
|
||||
},
|
||||
onlyCsvOnAuto() {
|
||||
if (!this.startWatchSave) return
|
||||
console.log('onOnlyCsvOnAutoChange', this.onlyCsvOnAuto)
|
||||
|
|
@ -439,6 +468,7 @@ export default {
|
|||
mounted() {
|
||||
common.loadCSS('toastr.min.css', 'physton-prompt-toastr', true, true, false)
|
||||
common.loadCSS('tippy.css', 'physton-prompt-tippy', true, true, false)
|
||||
common.loadCSS('vue3-colorpicker.css', 'physton-prompt-vue3-colorpicker', true, true, false)
|
||||
common.loadCSS('main.min.css', 'physton-prompt-main', true)
|
||||
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
|
|
@ -482,10 +512,11 @@ export default {
|
|||
},
|
||||
init() {
|
||||
this.loadExtraNetworks()
|
||||
let dataListsKeys = ['languageCode', 'autoTranslate', 'autoTranslateToEnglish', 'autoTranslateToLocal', 'autoRemoveSpace', 'autoRemoveLastComma', 'autoKeepWeightZero', 'autoKeepWeightOne', 'autoBreakBeforeWrap', 'autoBreakAfterWrap', /*'hideDefaultInput', */'translateApi', 'enableTooltip', 'tagCompleteFile', 'onlyCsvOnAuto', 'extensionSelect.minimalist']
|
||||
let dataListsKeys = ['languageCode', 'autoTranslate', 'autoTranslateToEnglish', 'autoTranslateToLocal', 'autoRemoveSpace', 'autoRemoveLastComma', 'autoKeepWeightZero', 'autoKeepWeightOne', 'autoBreakBeforeWrap', 'autoBreakAfterWrap', /*'hideDefaultInput', */'translateApi', 'enableTooltip', 'tagCompleteFile', 'onlyCsvOnAuto', 'extensionSelect.minimalist', 'groupTagsColor']
|
||||
this.prompts.forEach(item => {
|
||||
dataListsKeys.push(item.hideDefaultInputKey)
|
||||
dataListsKeys.push(item.hidePanelKey)
|
||||
dataListsKeys.push(item.hideGroupTagsKey)
|
||||
})
|
||||
|
||||
this.gradioAPI.getDatas(dataListsKeys).then(data => {
|
||||
|
|
@ -596,6 +627,16 @@ export default {
|
|||
this.gradioAPI.setData('extensionSelect.minimalist', true)
|
||||
}
|
||||
|
||||
if (data.groupTagsColor !== null) {
|
||||
if (typeof data.groupTagsColor === 'object') {
|
||||
this.groupTagsColor = {}
|
||||
for (let key in data.groupTagsColor) {
|
||||
let color = data.groupTagsColor[key]
|
||||
this.groupTagsColor[key] = ref(common.fitterInputColor(color))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.updateTranslateApiConfig()
|
||||
this.$refs.extensionCss.init()
|
||||
|
||||
|
|
@ -606,6 +647,9 @@ export default {
|
|||
if (data[item.hidePanelKey] !== null) {
|
||||
item.hidePanel = data[item.hidePanelKey]
|
||||
}
|
||||
if (data[item.hideGroupTagsKey] !== null) {
|
||||
item.hideGroupTags = data[item.hideGroupTagsKey]
|
||||
}
|
||||
item.$prompt = common.gradioApp().querySelector("#" + item.prompt)
|
||||
item.$textarea = item.$prompt.getElementsByTagName("textarea")[0]
|
||||
item.$steps = common.gradioApp().querySelector("#" + item.steps)
|
||||
|
|
@ -622,6 +666,7 @@ export default {
|
|||
})
|
||||
|
||||
this.handlePaste()
|
||||
this.loadGroupTags()
|
||||
|
||||
/*this.gradioAPI.getVersion().then(res => {
|
||||
this.version = res.version
|
||||
|
|
@ -640,6 +685,23 @@ export default {
|
|||
})*/
|
||||
})
|
||||
},
|
||||
loadGroupTags() {
|
||||
this.gradioAPI.getGroupTags(this.languageCode).then(data => {
|
||||
if (!data || data === '') {
|
||||
this.groupTags = []
|
||||
} else {
|
||||
try {
|
||||
this.groupTags = jsYaml.load(data)
|
||||
if (!Array.isArray(this.groupTags)) {
|
||||
this.groupTags = []
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
this.groupTags = []
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
updateTippyState() {
|
||||
for (const $tippy of this.$tippyList) {
|
||||
if (this.enableTooltip) {
|
||||
|
|
@ -778,6 +840,12 @@ export default {
|
|||
item.hidePanel = value
|
||||
this.gradioAPI.setData(item.hidePanelKey, item.hidePanel)
|
||||
},
|
||||
onUpdateHideGroupTags(id, value) {
|
||||
const item = this.prompts.find(item => item.id == id)
|
||||
if (!item) return
|
||||
item.hideGroupTags = value
|
||||
this.gradioAPI.setData(item.hideGroupTagsKey, item.hideGroupTags)
|
||||
},
|
||||
onShowHistory(id, e) {
|
||||
this.$refs.favorite.hide()
|
||||
this.historyCurrentPrompt = id
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<div class="physton-prompt" :name="name">
|
||||
<div :class="['prompt-main', hidePanel ? 'fold': '']" @click="onPromptMainClick">
|
||||
<div class="prompt-header">
|
||||
<div class="prompt-unfold" @click="onUnfoldClick">
|
||||
<div class="prompt-unfold" @click="onUnfoldClick" v-tooltip="getLang(hidePanel ? 'show_panel' : 'hide_panel')">
|
||||
<icon-svg class="hover-scale-120" name="unfold"/>
|
||||
</div>
|
||||
<div class="prompt-header-title">{{ neg ? getLang('negative_prompt') : getLang('prompt') }}</div>
|
||||
|
|
@ -276,6 +276,7 @@
|
|||
<template v-else>
|
||||
<div v-show="!editing[tag.id]"
|
||||
:class="tag.classes"
|
||||
:style="getTagColorStyle(tag)"
|
||||
:ref="'promptTagValue-' + tag.id"
|
||||
v-tooltip="getLang('click_to_edit') + '<br/>' + getLang('dblclick_to_disable') + '<br/>' + getLang('drop_to_order')"
|
||||
@click="onTagClick(tag.id, $event)" @dblclick="onTagDblclick(tag.id)"
|
||||
|
|
@ -402,6 +403,58 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="groupTags.length" :class="['show-group-tags', hideGroupTags ? 'hided': '']" @click="onClickHideGroupTags"
|
||||
v-tooltip="getLang(hideGroupTags ? 'show_group_tags' : 'hide_group_tags')">
|
||||
<icon-svg class="hover-scale-120" name="unfold"/>
|
||||
</div>
|
||||
<div class="group-tabs" v-show="!hideGroupTags && groupTags.length">
|
||||
<div class="group-header" ref="groupTabsHeader">
|
||||
<div v-for="(item, index) in groupTags" :key="index" :class="['group-tab', index == groupTagsActive ? 'active' : '']" @click="activeGroupTab(index)">{{ item.name }}</div>
|
||||
</div>
|
||||
<div class="group-body">
|
||||
<div v-for="(item, index) in groupTags" :key="index" :class="['group-main', index == groupTagsActive ? 'active' : '']">
|
||||
<div class="sub-group-header" v-if="index == groupTagsActive">
|
||||
<div class="sub-group-tab" v-for="(group, subIndex) in item.groups" :key="subIndex" :class="['sub-group-tab', subIndex == subGroupTagsActive ? 'active' : '']" @click="activeSubGroupTab(subIndex)">{{ group.name }}</div>
|
||||
</div>
|
||||
<div class="sub-group-body" v-if="index == groupTagsActive">
|
||||
<div v-for="(group, subIndex) in item.groups" :key="subIndex" :class="['sub-group-main', subIndex == subGroupTagsActive ? 'active' : '']">
|
||||
<div class="group-tags" v-if="subIndex == subGroupTagsActive">
|
||||
<div class="tag-item" v-for="(local, en) in group.tags"
|
||||
v-tooltip="getGroupTagTooltip(local, en)" unaffected="true"
|
||||
@click="onClickGroupTag(local, en)" v-html="renderGroupTag(local, en, item.name, group.name)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-footer">
|
||||
<div class="tags-color">
|
||||
<div>标签颜色:</div>
|
||||
<div class="tags-color-picker hover-scale-120"
|
||||
v-tooltip="groupTagsColor[getTagsColorKey(item.name, group.name)]"
|
||||
unaffected="true">
|
||||
<color-picker
|
||||
:theme="theme == 'dark' ? 'black' : 'white'"
|
||||
v-model:pureColor="groupTagsColor[getTagsColorKey(item.name, group.name)]"
|
||||
@pureColorChange="onTagsColorChange(getTagsColorKey(item.name, group.name))"
|
||||
/>
|
||||
</div>
|
||||
<div class="tags-color-reset hover-scale-120"
|
||||
v-tooltip="getLang('reset_default_color')"
|
||||
@click="onClickResetTagsColor(getTagsColorKey(item.name, group.name))">
|
||||
<icon-svg name="reset"/>
|
||||
</div>
|
||||
<div class="tags-color-clear hover-scale-120"
|
||||
v-tooltip="getLang('clear_color')"
|
||||
@click="onClickClearTagsColor(getTagsColorKey(item.name, group.name))">
|
||||
<icon-svg name="clear"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags-copyright">{{ getLang('tags-copyright') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<highlight-prompt ref="highlightPrompt" :textarea="textarea" :hide-default-input="hideDefaultInput"/>
|
||||
</div>
|
||||
|
|
@ -417,17 +470,20 @@ import VueNumberInput from '@/components/vue-number-input.vue'
|
|||
import HeaderMixin from "@/mixins/phystonPrompt/headerMixin"
|
||||
import DropMixin from "@/mixins/phystonPrompt/dropMixin"
|
||||
import TagMixin from "@/mixins/phystonPrompt/tagMixin"
|
||||
import GroupTagsMixin from "@/mixins/phystonPrompt/groupTagsMixin"
|
||||
import IconSvg from "@/components/iconSvg.vue"
|
||||
import HighlightPrompt from "@/components/highlightPrompt.vue";
|
||||
import HighlightPrompt from "@/components/highlightPrompt.vue"
|
||||
import {ColorPicker} from "vue3-colorpicker"
|
||||
|
||||
export default {
|
||||
name: 'PhystonPrompt',
|
||||
components: {
|
||||
HighlightPrompt,
|
||||
VueNumberInput,
|
||||
IconSvg
|
||||
IconSvg,
|
||||
ColorPicker,
|
||||
},
|
||||
mixins: [LanguageMixin, HeaderMixin, DropMixin, TagMixin],
|
||||
mixins: [LanguageMixin, HeaderMixin, DropMixin, TagMixin, GroupTagsMixin],
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
|
|
@ -537,8 +593,20 @@ export default {
|
|||
type: String,
|
||||
default: 'dark',
|
||||
},
|
||||
groupTags: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
emits: ['update:languageCode', 'update:autoTranslate', 'update:autoTranslateToEnglish', 'update:autoTranslateToLocal', 'update:autoRemoveSpace', 'update:autoRemoveLastComma', 'update:autoKeepWeightZero', 'update:autoKeepWeightOne', 'update:hideDefaultInput', 'update:hidePanel', 'update:enableTooltip', 'update:translateApi', 'click:translateApi', 'click:promptFormat', 'click:selectTheme', 'click:switchTheme', 'click:showAbout', 'click:selectLanguage', 'click:showHistory', 'click:showFavorite', 'refreshFavorites', 'click:showChatgpt'],
|
||||
hideGroupTags: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
groupTagsColor: {
|
||||
type: Object,
|
||||
default: () => ({}),
|
||||
},
|
||||
},
|
||||
emits: ['update:languageCode', 'update:autoTranslate', 'update:autoTranslateToEnglish', 'update:autoTranslateToLocal', 'update:autoRemoveSpace', 'update:autoRemoveLastComma', 'update:autoKeepWeightZero', 'update:autoKeepWeightOne', 'update:hideDefaultInput', 'update:hidePanel', 'update:enableTooltip', 'update:translateApi', 'click:translateApi', 'click:promptFormat', 'click:selectTheme', 'click:switchTheme', 'click:showAbout', 'click:selectLanguage', 'click:showHistory', 'click:showFavorite', 'refreshFavorites', 'click:showChatgpt', 'update:hideGroupTags', 'update:groupTagsColor'],
|
||||
data() {
|
||||
return {
|
||||
prompt: '',
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@ onUiLoaded(() => {
|
|||
mounted(el, binding) {
|
||||
// data-tippy-content
|
||||
el.setAttribute('data-tippy-content', binding.value)
|
||||
// 如果有 unaffected 属性,则不受 localStorage 控制
|
||||
let unaffected = el.getAttribute('unaffected')
|
||||
unaffected = unaffected === null ? false : unaffected === 'true'
|
||||
const instance = tippy(el, {
|
||||
placement: 'bottom',
|
||||
theme: 'light',
|
||||
allowHTML: true,
|
||||
onCreate(instance, partialProps) {
|
||||
if (unaffected) return
|
||||
const enable = localStorage.getItem('phystonPromptEnableTooltip') === 'true'
|
||||
if (!enable) {
|
||||
instance.disable()
|
||||
|
|
@ -33,7 +37,7 @@ onUiLoaded(() => {
|
|||
},
|
||||
})
|
||||
el.$tippyInstance = instance
|
||||
app.config.globalProperties.$tippyList.push(instance)
|
||||
if (!unaffected) app.config.globalProperties.$tippyList.push(instance)
|
||||
},
|
||||
updated(el, binding) {
|
||||
el.setAttribute('data-tippy-content', binding.value)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,112 @@
|
|||
import common from "@/utils/common"
|
||||
import {ref} from "vue"
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
groupTagsActive: 0,
|
||||
subGroupTagsActive: 0,
|
||||
groupTagsColorKeyCache: {},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
groupTags: {
|
||||
handler() {
|
||||
for (let item of this.groupTags) {
|
||||
for (let group of item.groups) {
|
||||
let key = this.getTagsColorKey(item.name, group.name)
|
||||
if (!this.groupTagsColor[key]) {
|
||||
this.groupTagsColor[key] = ref(common.fitterInputColor(group.color))
|
||||
}
|
||||
for (let en in group.tags) {
|
||||
this.groupTagsColorKeyCache[en] = key
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
activeGroupTab(index) {
|
||||
this.groupTagsActive = index
|
||||
this.subGroupTagsActive = 0
|
||||
let scrollLeft = this.$refs.groupTabsHeader.children[index].offsetLeft - this.$refs.groupTabsHeader.offsetWidth / 2 + this.$refs.groupTabsHeader.children[index].offsetWidth / 2
|
||||
this.$refs.groupTabsHeader.scrollTo({
|
||||
left: scrollLeft,
|
||||
behavior: 'smooth'
|
||||
})
|
||||
},
|
||||
activeSubGroupTab(index) {
|
||||
this.subGroupTagsActive = index
|
||||
},
|
||||
onClickHideGroupTags() {
|
||||
this.$emit('update:hideGroupTags', !this.hideGroupTags)
|
||||
},
|
||||
onClickGroupTag(local, en) {
|
||||
this._appendTag(en, local, false, -1, 'text')
|
||||
},
|
||||
getGroupTagTooltip(local, en) {
|
||||
let html = ''
|
||||
if (local && local !== en) {
|
||||
html += local + '<br/>'
|
||||
}
|
||||
html += en
|
||||
return html
|
||||
},
|
||||
renderGroupTag(local, en, groupName = '', subGroupName = '') {
|
||||
let html = ''
|
||||
let style = ''
|
||||
let colorKey = this.getTagsColorKey(groupName, subGroupName)
|
||||
let color = ''
|
||||
if (this.groupTagsColor[colorKey]) {
|
||||
color = this.groupTagsColor[colorKey]
|
||||
if (common.isColorTransparent(color)) {
|
||||
// 如果是纯透明,则设为空
|
||||
color = ''
|
||||
}
|
||||
}
|
||||
if (color) {
|
||||
style = 'style="background: ' + color + '"'
|
||||
}
|
||||
if (local && local !== en) {
|
||||
html += '<div class="tag-local" ' + style + '>' + local + '</div>'
|
||||
html += '<div class="tag-en">' + en + '</div>'
|
||||
} else {
|
||||
html += '<div class="tag-local" ' + style + '>' + en + '</div>'
|
||||
}
|
||||
return html
|
||||
},
|
||||
getTagsColorKey(groupName, subGroupName) {
|
||||
return groupName + '||' + subGroupName
|
||||
},
|
||||
onTagsColorChange(key) {
|
||||
this.$emit('update:groupTagsColor', this.groupTagsColor)
|
||||
},
|
||||
onClickResetTagsColor(key) {
|
||||
for (let item of this.groupTags) {
|
||||
for (let group of item.groups) {
|
||||
let key2 = this.getTagsColorKey(item.name, group.name)
|
||||
if (key === key2) {
|
||||
this.groupTagsColor[key] = ref(common.fitterInputColor(group.color))
|
||||
}
|
||||
}
|
||||
}
|
||||
this.onTagsColorChange(key)
|
||||
},
|
||||
onClickClearTagsColor(key) {
|
||||
this.groupTagsColor[key] = ref('rgba(0,0,0,0)')
|
||||
this.onTagsColorChange(key)
|
||||
},
|
||||
getTagColorStyle(tag) {
|
||||
if (tag.isLora || tag.isLyco || tag.isEmbedding) return {}
|
||||
if (!this.groupTagsColorKeyCache[tag.value]) return {}
|
||||
let key = this.groupTagsColorKeyCache[tag.value]
|
||||
if (!this.groupTagsColor[key]) return {}
|
||||
let color = this.groupTagsColor[key]
|
||||
if (common.isColorTransparent(color)) return {}
|
||||
return {background: color}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,8 @@
|
|||
import splitTags from "@/utils/splitTags";
|
||||
import globals from "../../globals";
|
||||
import tinycolor from "tinycolor2";
|
||||
|
||||
const cache = {}
|
||||
|
||||
export default {
|
||||
loraRegex: /^\<lora:\s*([^\:]+)\s*(:)?\s*([0-9\.]+)?\>$/,
|
||||
|
|
@ -597,4 +600,28 @@ export default {
|
|||
return document.body
|
||||
}
|
||||
},
|
||||
|
||||
fitterInputColor(color, defaultColor = 'rgba(0,0,0,0)') {
|
||||
let cacheKey = 'fitterInputColor:' + color + ':' + defaultColor
|
||||
if (cache[cacheKey]) return cache[cacheKey]
|
||||
|
||||
if (!color || color === '' || color === 'default' || color === 'none' || color === 'null' || color === 'undefined' || color === 'false' || color === 'true') {
|
||||
cache[cacheKey] = defaultColor
|
||||
return defaultColor
|
||||
}
|
||||
if (!tinycolor(color).isValid()) {
|
||||
cache[cacheKey] = defaultColor
|
||||
return defaultColor
|
||||
}
|
||||
cache[cacheKey] = color
|
||||
return color
|
||||
},
|
||||
|
||||
isColorTransparent(color) {
|
||||
let cacheKey = 'isColorTransparent:' + color
|
||||
if (cache[cacheKey]) return cache[cacheKey]
|
||||
let result = tinycolor(color).getAlpha() === 0
|
||||
cache[cacheKey] = result
|
||||
return result
|
||||
},
|
||||
}
|
||||
|
|
@ -179,4 +179,8 @@ export default class GradioAPI {
|
|||
const config = {timeout: 100000000000}
|
||||
return (await this.api.post("/mbart50_initialize", {}, config)).data
|
||||
}
|
||||
|
||||
async getGroupTags(lang) {
|
||||
return (await this.api.get("/get_group_tags", {params: {lang}})).data.tags
|
||||
}
|
||||
}
|
||||
|
|
@ -191,6 +191,21 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
|
||||
--pp-pt-pal-sgt-iconSvgUnfold-color: #4d4f4d;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header
|
||||
--pp-pt-gt-groupHeader-background: rgba(0, 0, 0, 0.06);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:hover.active
|
||||
--pp-pt-gt-gh-groupTabHoverActive-background: #999999;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(0, 0, 0, 0.06);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab:hover.active
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom: 2px solid #999999;
|
||||
}
|
||||
|
||||
&.dark {
|
||||
|
|
@ -287,6 +302,21 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
|
||||
--pp-pt-pal-sgt-iconSvgUnfold-color: #b3b3b3;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header
|
||||
--pp-pt-gt-groupHeader-background: rgba(255, 255, 255, 0.12);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:hover.active
|
||||
--pp-pt-gt-gh-groupTabHoverActive-background: #636363;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(255, 255, 255, 0.12);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab:hover.active
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom: 2px solid #636363;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="uuid-29d31e47-8da9-4f3b-8d2f-4d64199acd89" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 103.38 112">
|
||||
<path d="m93.91,112H10.35c-5.17,0-8.61-3.44-8.61-8.61v-.86l6.02-42.22c-4.31-.86-7.76-4.31-7.76-8.61v-17.23c0-5.17,3.45-8.61,8.61-8.61h25.85V8.61c0-5.17,3.45-8.61,8.61-8.61h17.23c5.17,0,8.61,3.44,8.61,8.61v17.23h25.85c5.17,0,8.61,3.44,8.61,8.61v17.23c0,4.31-3.45,7.75-7.76,8.62l6.02,42.22c.86,4.31-2.59,9.48-6.9,9.48,0,0-.84,0-.84,0Zm-15.51-21.54v12.92h15.51l-6.02-43.08H16.37l-6.02,43.08h15.51v-12.92c0-2.38,1.93-4.31,4.31-4.31s4.31,1.93,4.31,4.31v12.92h12.92v-12.92c0-2.38,1.93-4.31,4.31-4.31s4.31,1.93,4.31,4.31v12.92h12.92v-12.92c0-2.38,1.93-4.31,4.31-4.31h.84c2.38,0,4.31,1.93,4.31,4.31ZM9.47,34.46v17.23h86.15v-17.23H9.47ZM43.93,8.61v17.23h17.23V8.61h-17.23Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 848 B |
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="uuid-403228a1-4a37-4731-b179-5bc02baf0e16" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96.06 93.75">
|
||||
<path d="m49.19,37.44c2.56,0,4.94,1.06,6.62,2.75s2.75,4.06,2.75,6.62-1.06,4.94-2.75,6.62-4.06,2.75-6.62,2.75-4.94-1.06-6.62-2.75-2.75-4.06-2.75-6.62,1.06-4.94,2.75-6.62,4.06-2.75,6.62-2.75Z"/>
|
||||
<path d="m7.25,25.94c3.5-7.06,8.81-13.19,15.38-17.69C30.44,2.88,39.69,0,49.19,0c12.44,0,24.31,4.94,33.12,13.75s13.75,20.69,13.75,33.12-4.94,24.31-13.75,33.12-20.69,13.75-33.12,13.75c-11.75,0-23-4.38-31.69-12.31S3.5,62.69,2.5,51l-.19-1.88,7.44-.62.19,1.88c.88,9.81,5.31,18.94,12.62,25.62,7.25,6.69,16.75,10.31,26.56,10.31,10.5,0,20.44-4.12,27.81-11.5s11.5-17.38,11.5-27.81-4.12-20.44-11.5-27.81-17.38-11.5-27.81-11.5c-8,0-15.75,2.44-22.31,6.94-5.12,3.56-9.31,8.19-12.25,13.62l-7.31-2.12v-.19Z"/>
|
||||
<path d="m25.94,29l-17.62,5.94-1.75.56-.62-1.75L0,16.06l25.94,12.94Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 946 B |
426
styles/main.less
426
styles/main.less
|
|
@ -133,6 +133,12 @@
|
|||
// .physton-prompt .prompt-main.fold .prompt-tags
|
||||
--pp-pmf-promptTags-display: none;
|
||||
|
||||
// .physton-prompt .prompt-main.fold .show-group-tags
|
||||
--pp-pmf-showGroupTags-display: none;
|
||||
|
||||
// .physton-prompt .prompt-main.fold .group-tabs
|
||||
--pp-pmf-groupTabs-display: none;
|
||||
|
||||
// .physton-prompt .prompt-header
|
||||
--pp-promptHeader-margin: 0;
|
||||
//--pp-promptHeader-padding: 5px 10px;
|
||||
|
|
@ -885,6 +891,184 @@
|
|||
--pp-pt-pal-pag-td-tl-ti-itemTagLocalValue-font-size: 12px;
|
||||
--pp-pt-pal-pag-td-tl-ti-itemTagLocalValue-margin-top: 2px;
|
||||
|
||||
// .physton-prompt .prompt-tags .show-group-tags
|
||||
--pp-pt-pal-showGroupTags-position: relative;
|
||||
--pp-pt-pal-showGroupTags-width: 20px;
|
||||
--pp-pt-pal-showGroupTags-height: 20px;
|
||||
--pp-pt-pal-showGroupTags-margin-top: -10px;
|
||||
--pp-pt-pal-showGroupTags-margin-left: calc(100% - 22px);
|
||||
--pp-pt-pal-showGroupTags-cursor: pointer;
|
||||
|
||||
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
|
||||
--pp-pt-pal-sgt-iconSvgUnfold-width: 20px;
|
||||
--pp-pt-pal-sgt-iconSvgUnfold-height: 20px;
|
||||
--pp-pt-pal-sgt-iconSvgUnfold-color: rgba(39, 105, 155, .5);
|
||||
|
||||
// .physton-prompt .prompt-tags .show-group-tags.hided
|
||||
--pp-pt-pal-showGroupTagsHided-transform: rotate(180deg);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs
|
||||
--pp-pt-groupTabs-margin-top: 2px;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header
|
||||
--pp-pt-gt-groupHeader-display: flex;
|
||||
--pp-pt-gt-groupHeader-flex-wrap: nowrap;
|
||||
--pp-pt-gt-groupHeader-background: rgba(39, 105, 155, 0.1);
|
||||
--pp-pt-gt-groupHeader-border-radius: 6px;
|
||||
--pp-pt-gt-groupHeader-border-bottom-left-radius: 0;
|
||||
--pp-pt-gt-groupHeader-border-bottom-right-radius: 0;
|
||||
--pp-pt-gt-groupHeader-overflow: hidden;
|
||||
--pp-pt-gt-groupHeader-overflow-x: auto;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header::-webkit-scrollbar
|
||||
--pp-pt-gt-groupHeaderWebkitScrollbar-height: 4px;
|
||||
--pp-pt-gt-groupHeaderWebkitScrollbar-background: rgba(39, 105, 155, 0.3);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header::-webkit-scrollbar-thumb
|
||||
--pp-pt-gt-groupHeaderWebkitScrollbarThumb-background: rgba(39, 105, 155, 0.5);
|
||||
--pp-pt-gt-groupHeaderWebkitScrollbarThumb-border-radius: 2px;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header::-webkit-scrollbar-thumb:hover
|
||||
--pp-pt-gt-groupHeaderWebkitScrollbarThumbHover-background: rgba(39, 105, 155, 0.7);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab
|
||||
--pp-pt-gt-gh-groupTab-cursor: pointer;
|
||||
--pp-pt-gt-gh-groupTab-padding: 8px 14px;
|
||||
--pp-pt-gt-gh-groupTab-border-right: 1px solid #e0e0e0;
|
||||
--pp-pt-gt-gh-groupTab-font-size: 14px;
|
||||
--pp-pt-gt-gh-groupTab-color: #000;
|
||||
--pp-pt-gt-gh-groupTab-white-space: nowrap;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:hover.active
|
||||
--pp-pt-gt-gh-groupTabHoverActive-background: #262d97;
|
||||
--pp-pt-gt-gh-groupTabHoverActive-color: #fff;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:last-child
|
||||
--pp-pt-gt-gh-groupTabLastChild-border-right: 0;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body
|
||||
--pp-pt-gt-groupBody-padding: 4px;
|
||||
--pp-pt-gt-groupBody-border: 1px dashed rgba(39, 105, 155, .3);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main
|
||||
--pp-pt-gt-gb-groupMain-display: none;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main.active
|
||||
--pp-pt-gt-gb-groupMainActive-display: block;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header
|
||||
--pp-pt-gt-gb-gm-subGroupHeader-display: flex;
|
||||
--pp-pt-gt-gb-gm-subGroupHeader-flex-wrap: wrap;
|
||||
--pp-pt-gt-gb-gm-subGroupHeader-align-items: center;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-cursor: pointer;
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-padding: 6px 10px;
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-border-bottom: 2px solid transparent;
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(28, 71, 104, 0.1);
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-border-radius: 2px;
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-margin-bottom: 4px;
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-font-size: 14px;
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-color: #000;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab:hover.active
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom: 2px solid @common-blue;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main
|
||||
--pp-pt-gt-gb-gm-subGroupMain-display: none;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main.active
|
||||
--pp-pt-gt-gb-gm-subGroupMainActive-display: block;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags
|
||||
--pp-pt-gt-gb-gm-sgm-groupTags-display: flex;
|
||||
--pp-pt-gt-gb-gm-sgm-groupTags-flex-wrap: wrap;
|
||||
--pp-pt-gt-gb-gm-sgm-groupTags-align-items: self-start;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item
|
||||
--pp-pt-gt-gb-gm-sgm-gt-tagItem-margin: 4px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-tagItem-cursor: pointer;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item:hover
|
||||
--pp-pt-gt-gb-gm-sgm-gt-tagItemHover-background: rgba(0, 0, 0, .1);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-local
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-padding: 4px 10px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-background: rgba(0, 187, 255, .1);
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-top-left-radius: 4px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-bottom-left-radius: 4px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-align: center;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-font-size: 14px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-color: #2c2c2c;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-max-width: 300px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-white-space: nowrap;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-overflow: ellipsis;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-overflow: hidden;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-en
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-padding: 4px 10px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-background: rgba(0, 0, 0, .06);
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-top-right-radius: 4px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-bottom-right-radius: 4px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-align: center;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-font-size: 12px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-color: #7f7f7f;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-max-width: 300px;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-white-space: nowrap;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-overflow: ellipsis;
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-overflow: hidden;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer
|
||||
--pp-pt-gt-gb-gm-sgm-tagsFooter-margin-top: 5px;
|
||||
--pp-pt-gt-gb-gm-sgm-tagsFooter-padding-top: 5px;
|
||||
--pp-pt-gt-gb-gm-sgm-tagsFooter-display: flex;
|
||||
--pp-pt-gt-gb-gm-sgm-tagsFooter-justify-content: space-between;
|
||||
--pp-pt-gt-gb-gm-sgm-tagsFooter-align-items: center;
|
||||
--pp-pt-gt-gb-gm-sgm-tagsFooter-border-top: 1px dashed rgba(0, 0, 0, 0.04);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsColor-display: flex;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsColor-justify-content: flex-start;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsColor-align-items: center;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color > div
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-div-font-size: 14px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-div-color: #7f7f7f;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-div-white-space: nowrap;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-reset, .tags-color-clear
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-width: 20px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-height: 20px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border-radius: 2px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border: 1px solid #ccc;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-display: flex;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-justify-content: center;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-align-items: center;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-margin-left: 5px;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-reset, .tags-color-clear icon-svg-reset, icon-svg-clear
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-width: 16px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-height: 16px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-color: #7f7f7f;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-width: 16px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-height: 16px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-color: #7f7f7f;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-picker
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorPicker-margin-left: 5px;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .vc-color-wrap
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-width: 20px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-height: 20px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-border: 1px solid #ccc;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-margin-right: 0;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-copyright
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-color: #7f7f7f;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-font-size: 12px;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform-origin: top right;
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform: scale(.9);
|
||||
|
||||
// .physton-prompt-favorite, .physton-prompt-history
|
||||
--ppfpph-width: 500px;
|
||||
--ppfpph-padding: 0;
|
||||
|
|
@ -2088,6 +2272,14 @@
|
|||
.prompt-tags {
|
||||
display: var(--pp-pmf-promptTags-display);
|
||||
}
|
||||
|
||||
.show-group-tags {
|
||||
display: var(--pp-pmf-showGroupTags-display);
|
||||
}
|
||||
|
||||
.group-tabs {
|
||||
display: var(--pp-pmf-groupTabs-display);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2914,6 +3106,209 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.show-group-tags {
|
||||
position: var(--pp-pt-pal-showGroupTags-position);
|
||||
width: var(--pp-pt-pal-showGroupTags-width);
|
||||
height: var(--pp-pt-pal-showGroupTags-height);
|
||||
margin-top: var(--pp-pt-pal-showGroupTags-margin-top);
|
||||
margin-left: var(--pp-pt-pal-showGroupTags-margin-left);
|
||||
cursor: var(--pp-pt-pal-showGroupTags-cursor);
|
||||
.set-icon-svg(var(--pp-pt-pal-sgt-iconSvgUnfold-width), var(--pp-pt-pal-sgt-iconSvgUnfold-height), var(--pp-pt-pal-sgt-iconSvgUnfold-color), icon-svg-unfold);
|
||||
|
||||
&.hided {
|
||||
transform: var(--pp-pt-pal-showGroupTagsHided-transform);
|
||||
}
|
||||
}
|
||||
|
||||
.group-tabs {
|
||||
margin-top: var(--pp-pt-groupTabs-margin-top);
|
||||
|
||||
.group-header {
|
||||
display: var(--pp-pt-gt-groupHeader-display);
|
||||
flex-wrap: var(--pp-pt-gt-groupHeader-flex-wrap);
|
||||
background: var(--pp-pt-gt-groupHeader-background);
|
||||
border-radius: var(--pp-pt-gt-groupHeader-border-radius);
|
||||
border-bottom-left-radius: var(--pp-pt-gt-groupHeader-border-bottom-left-radius);
|
||||
border-bottom-right-radius: var(--pp-pt-gt-groupHeader-border-bottom-right-radius);
|
||||
overflow: var(--pp-pt-gt-groupHeader-overflow);
|
||||
overflow-x: var(--pp-pt-gt-groupHeader-overflow-x);
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
height: var(--pp-pt-gt-groupHeaderWebkitScrollbar-height);
|
||||
background: var(--pp-pt-gt-groupHeaderWebkitScrollbar-background);
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: var(--pp-pt-gt-groupHeaderWebkitScrollbarThumb-background);
|
||||
border-radius: var(--pp-pt-gt-groupHeaderWebkitScrollbarThumb-border-radius);
|
||||
|
||||
&:hover {
|
||||
background: var(--pp-pt-gt-groupHeaderWebkitScrollbarThumbHover-background);
|
||||
}
|
||||
}
|
||||
|
||||
.group-tab {
|
||||
cursor: var(--pp-pt-gt-gh-groupTab-cursor);
|
||||
padding: var(--pp-pt-gt-gh-groupTab-padding);
|
||||
border-right: var(--pp-pt-gt-gh-groupTab-border-right);
|
||||
font-size: var(--pp-pt-gt-gh-groupTab-font-size);
|
||||
color: var(--pp-pt-gt-gh-groupTab-color);
|
||||
white-space: var(--pp-pt-gt-gh-groupTab-white-space);
|
||||
|
||||
&:hover, &.active {
|
||||
background: var(--pp-pt-gt-gh-groupTabHoverActive-background);
|
||||
color: var(--pp-pt-gt-gh-groupTabHoverActive-color);
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-right: var(--pp-pt-gt-gh-groupTabLastChild-border-right);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.group-body {
|
||||
padding: var(--pp-pt-gt-groupBody-padding);
|
||||
border: var(--pp-pt-gt-groupBody-border);
|
||||
|
||||
.group-main {
|
||||
display: var(--pp-pt-gt-gb-groupMain-display);
|
||||
|
||||
&.active {
|
||||
display: var(--pp-pt-gt-gb-groupMainActive-display);
|
||||
}
|
||||
|
||||
.sub-group-header {
|
||||
display: var(--pp-pt-gt-gb-gm-subGroupHeader-display);
|
||||
flex-wrap: var(--pp-pt-gt-gb-gm-subGroupHeader-flex-wrap);
|
||||
align-items: var(--pp-pt-gt-gb-gm-subGroupHeader-align-items);
|
||||
|
||||
.sub-group-tab {
|
||||
cursor: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-cursor);
|
||||
padding: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-padding);
|
||||
border-bottom: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-border-bottom);
|
||||
background: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-background);
|
||||
border-radius: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-border-radius);
|
||||
margin-bottom: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-margin-bottom);
|
||||
font-size: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-font-size);
|
||||
color: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-color);
|
||||
|
||||
&:hover, &.active {
|
||||
border-bottom: var(--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sub-group-body {
|
||||
|
||||
}
|
||||
|
||||
.sub-group-main {
|
||||
display: var(--pp-pt-gt-gb-gm-subGroupMain-display);
|
||||
|
||||
&.active {
|
||||
display: var(--pp-pt-gt-gb-gm-subGroupMainActive-display);
|
||||
}
|
||||
|
||||
.group-tags {
|
||||
display: var(--pp-pt-gt-gb-gm-sgm-groupTags-display);
|
||||
flex-wrap: var(--pp-pt-gt-gb-gm-sgm-groupTags-flex-wrap);
|
||||
align-items: var(--pp-pt-gt-gb-gm-sgm-groupTags-align-items);
|
||||
|
||||
.tag-item {
|
||||
margin: var(--pp-pt-gt-gb-gm-sgm-gt-tagItem-margin);
|
||||
cursor: var(--pp-pt-gt-gb-gm-sgm-gt-tagItem-cursor);
|
||||
|
||||
&:hover {
|
||||
background: var(--pp-pt-gt-gb-gm-sgm-gt-tagItemHover-background);
|
||||
}
|
||||
|
||||
.tag-local {
|
||||
padding: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-padding);
|
||||
background: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-background);
|
||||
border-top-left-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-top-left-radius);
|
||||
border-bottom-left-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-bottom-left-radius);
|
||||
text-align: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-align);
|
||||
font-size: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-font-size);
|
||||
color: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-color);
|
||||
max-width: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-max-width);
|
||||
white-space: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-white-space);
|
||||
text-overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-overflow);
|
||||
overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-overflow);
|
||||
}
|
||||
|
||||
.tag-en {
|
||||
padding: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-padding);
|
||||
background: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-background);
|
||||
border-top-right-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-top-right-radius);
|
||||
border-bottom-right-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-bottom-right-radius);
|
||||
text-align: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-align);
|
||||
font-size: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-font-size);
|
||||
color: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-color);
|
||||
max-width: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-max-width);
|
||||
white-space: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-white-space);
|
||||
text-overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-overflow);
|
||||
overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-overflow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tags-footer {
|
||||
margin-top: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-margin-top);
|
||||
padding-top: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-padding-top);
|
||||
display: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-display);
|
||||
justify-content: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-justify-content);
|
||||
align-items: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-align-items);
|
||||
border-top: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-border-top);
|
||||
|
||||
.tags-color {
|
||||
display: var(--pp-pt-gt-gb-gm-sgm-tf-tagsColor-display);
|
||||
justify-content: var(--pp-pt-gt-gb-gm-sgm-tf-tagsColor-justify-content);
|
||||
align-items: var(--pp-pt-gt-gb-gm-sgm-tf-tagsColor-align-items);
|
||||
|
||||
> div {
|
||||
font-size: var(--pp-pt-gt-gb-gm-sgm-tf-tc-div-font-size);
|
||||
color: var(--pp-pt-gt-gb-gm-sgm-tf-tc-div-color);
|
||||
white-space: var(--pp-pt-gt-gb-gm-sgm-tf-tc-div-white-space);
|
||||
}
|
||||
|
||||
.tags-color-reset, .tags-color-clear {
|
||||
width: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-width);
|
||||
height: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-height);
|
||||
border-radius: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border-radius);
|
||||
border: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border);
|
||||
display: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-display);
|
||||
justify-content: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-justify-content);
|
||||
align-items: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-align-items);
|
||||
margin-left: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-margin-left);
|
||||
|
||||
.set-icon-svg(var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-width), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-height), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-color), icon-svg-reset);
|
||||
.set-icon-svg(var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-width), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-height), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-color), icon-svg-clear);
|
||||
}
|
||||
|
||||
.tags-color-picker {
|
||||
margin-left: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorPicker-margin-left);
|
||||
}
|
||||
|
||||
.vc-color-wrap {
|
||||
width: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-width) !important;
|
||||
height: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-height) !important;
|
||||
border: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-border);
|
||||
margin-right: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-margin-right) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tags-copyright {
|
||||
color: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-color);
|
||||
font-size: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-font-size);
|
||||
transform-origin: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform-origin);
|
||||
transform: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.physton-prompt-favorite, .physton-prompt-history {
|
||||
|
|
@ -3976,7 +4371,6 @@
|
|||
}
|
||||
|
||||
|
||||
|
||||
.physton-gradio-container {
|
||||
&.light {
|
||||
// 浅色主题
|
||||
|
|
@ -4070,5 +4464,35 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
|
||||
--pp-pt-pal-sgt-iconSvgUnfold-color: rgba(28, 71, 104, 1);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header
|
||||
--pp-pt-gt-groupHeader-background: rgba(28, 71, 104, 0.5);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab
|
||||
--pp-pt-gt-gh-groupTab-color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(28, 71, 104, 0.5);
|
||||
--pp-pt-gt-gb-gm-sgh-subGroupTab-color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-local
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-en
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-background: rgba(255, 255, 255, 0.12);
|
||||
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-color: #a6a6a6;
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color > div
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-div-color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-reset, .tags-color-clear icon-svg-reset, icon-svg-clear
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-color: rgba(255, 255, 255, 0.85);
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-copyright
|
||||
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3395,6 +3395,7 @@
|
|||
"support": {
|
||||
"zh_CN": "cn",
|
||||
"zh_HK": "yue",
|
||||
"zh_TW": "yue",
|
||||
"en_US": "en",
|
||||
"en_GB": "en",
|
||||
"af_ZA": "af",
|
||||
|
|
@ -3504,6 +3505,7 @@
|
|||
"support": {
|
||||
"zh_CN": "cn",
|
||||
"zh_HK": "yue",
|
||||
"zh_TW": "yue",
|
||||
"en_US": "en",
|
||||
"en_GB": "en",
|
||||
"ar_SA": "ar",
|
||||
|
|
|
|||
Loading…
Reference in New Issue