@@ -123,8 +127,11 @@
Policy Group
-
+ placeholder
+
+
+
@@ -139,6 +146,11 @@
Descending
+
+
+
+
@@ -176,7 +188,10 @@
"theme-auto": "跟随系统",
"import-profile": "导入配置",
"one-per-line": "一行一个",
- "supports-regex": "支持正则表达式"
+ "supports-regex": "支持正则表达式",
+ "group-rules": "策略组规则",
+ "group-rules-placeholder": "Json格式: {\"US\": [\"US-CA\", \"US-TX\"], \"CN\": [\"CN-BJ\", \"CN-SH\"]}, 支持正则表达式",
+ "group": "启用策略组"
},
"en": {
"template": "Template",
@@ -199,7 +214,10 @@
"theme-auto": "Auto",
"import-profile": "Import Profile",
"one-per-line": "One per line",
- "supports-regex": "Supports regex"
+ "supports-regex": "Supports regex",
+ "group-rules": "Group Rules",
+ "group-rules-placeholder": "Json format: {\"US\": [\"US-CA\", \"US-TX\"], \"CN\": [\"CN-BJ\", \"CN-SH\"]}, support regex",
+ "group": "Enable Policy Group"
},
"ru": {
"template": "Шаблон",
@@ -222,11 +240,14 @@
"theme-auto": "Системная",
"import-profile": "Импортировать профиль",
"one-per-line": "Одна на строку",
- "supports-regex": "Поддерживает рег. выражения"
+ "supports-regex": "Поддерживает рег. выражения",
+ "group-rules": "Группа правил",
+ "group-rules-placeholder": "Формат JSON: {\"US\": [\"US-CA\", \"US-TX\"], \"CN\": [\"CN-BJ\", \"CN-SH\"]}, поддержка регулярных выражений",
+ "group": "Включить группу политик"
}
};
- document.addEventListener('DOMContentLoaded', function() {
+ document.addEventListener('DOMContentLoaded', function () {
setupLanguage();
setupTheme();
listenInput();
@@ -242,7 +263,7 @@
languageMenu.value = savedLang;
changeLanguage(savedLang);
- languageMenu.addEventListener('change', function() {
+ languageMenu.addEventListener('change', function () {
changeLanguage(languageMenu.value);
});
}
@@ -257,8 +278,10 @@
const translation = translations[lang][key];
if (translation) {
if (element.tagName.toLowerCase() === 'mdui-text-field' ||
- element.tagName.toLowerCase() === 'mdui-select') {
+ element.tagName.toLowerCase() === 'mdui-select') {
element.setAttribute('label', translation);
+ } else if (element.tagName.toLowerCase() === 'mdui-checkbox') {
+ element.innerHTML = translation;
} else {
element.textContent = translation;
}
@@ -279,7 +302,7 @@
document.documentElement.className = "mdui-theme-" + savedTheme;
themeMenu.value = savedTheme;
- themeMenu.addEventListener("change", function() {
+ themeMenu.addEventListener("change", function () {
const newTheme = themeMenu.value;
document.documentElement.className = "mdui-theme-" + newTheme;
localStorage.setItem("theme", newTheme);
@@ -344,14 +367,16 @@
const groupType = document.getElementById("group-type").value;
const sort = document.getElementById("sort").value;
const sortType = document.getElementById("sort-type").value;
-
+ const groupRules = document.getElementById("group-rules").value;
+ const group = document.getElementById("group").value;
+
let rename = {};
for (let i = 0; i < renameFrom.length; i++) {
if (renameFrom[i] && renameTo[i]) {
rename[renameFrom[i]] = renameTo[i];
}
}
-
+
// Only generate link if there is some user input (subscription, proxy, delete, or rename)
if (
subscription.length === 0 &&
@@ -362,15 +387,15 @@
output.value = "";
return;
}
-
+
// Determine base URL using window.location.origin and window.location.pathname
let basePath = window.location.pathname;
// Remove trailing slash if exists
- if(basePath.endsWith('/')){
+ if (basePath.endsWith('/')) {
basePath = basePath.slice(0, -1);
}
const baseURL = window.location.origin + basePath;
-
+
const data = {
subscription,
proxy,
@@ -379,17 +404,11 @@
rename,
"group-type": groupType,
sort,
- "sort-type": sortType
+ "sort-type": sortType,
+ "group-rules": groupRules,
+ group: group === "true"
};
- output.value = baseURL + "/convert?data=" + encodeBase64(JSON.stringify(data));
- }
-
- function encodeBase64(str) {
- return btoa(
- encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
- return String.fromCharCode("0x" + p1);
- })
- ).replace(/\+/g, "-").replace(/\//g, "_");
+ output.value = baseURL + "/convert?data=" + btoa(unescape(encodeURIComponent(JSON.stringify(data)))).replace(/\+/g, "-").replace(/\//g, "_");
}
function openProfileLink() {
@@ -418,4 +437,5 @@
}
-
+
+