From c6de68c4c4bda3edcf6cf012bd98adea3baf866b Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Thu, 25 Jul 2024 15:17:57 +0300 Subject: Migrating popup to svelte --- src/pages/options_src/App.svelte | 118 +++++++++++ src/pages/options_src/General/Exceptions.svelte | 108 ++++++++++ src/pages/options_src/General/General.svelte | 70 +++++++ .../options_src/General/SettingsButtons.svelte | 118 +++++++++++ src/pages/options_src/Services/FrontendIcon.svelte | 43 ++++ src/pages/options_src/Services/Instances.svelte | 233 +++++++++++++++++++++ src/pages/options_src/Services/RedirectType.svelte | 99 +++++++++ src/pages/options_src/Services/ServiceIcon.svelte | 40 ++++ src/pages/options_src/Services/Services.svelte | 188 +++++++++++++++++ src/pages/options_src/Sidebar.svelte | 43 ++++ src/pages/options_src/main.js | 7 + src/pages/options_src/stores.js | 5 + 12 files changed, 1072 insertions(+) create mode 100644 src/pages/options_src/App.svelte create mode 100644 src/pages/options_src/General/Exceptions.svelte create mode 100644 src/pages/options_src/General/General.svelte create mode 100644 src/pages/options_src/General/SettingsButtons.svelte create mode 100644 src/pages/options_src/Services/FrontendIcon.svelte create mode 100644 src/pages/options_src/Services/Instances.svelte create mode 100644 src/pages/options_src/Services/RedirectType.svelte create mode 100644 src/pages/options_src/Services/ServiceIcon.svelte create mode 100644 src/pages/options_src/Services/Services.svelte create mode 100644 src/pages/options_src/Sidebar.svelte create mode 100644 src/pages/options_src/main.js create mode 100644 src/pages/options_src/stores.js (limited to 'src/pages/options_src') diff --git a/src/pages/options_src/App.svelte b/src/pages/options_src/App.svelte new file mode 100644 index 00000000..6bbacb9b --- /dev/null +++ b/src/pages/options_src/App.svelte @@ -0,0 +1,118 @@ + + +{#if _options && _config} +
+ + {#if _page == "general"} + + {:else if _page == "services"} + + {/if} +
+{:else} +

Loading...

+{/if} + + diff --git a/src/pages/options_src/General/Exceptions.svelte b/src/pages/options_src/General/Exceptions.svelte new file mode 100644 index 00000000..4ef5591b --- /dev/null +++ b/src/pages/options_src/General/Exceptions.svelte @@ -0,0 +1,108 @@ + + +
+ + + + +
+ { + if (e.key === "Enter") addException() + }} + /> + + + + + + + + + +
diff --git a/src/pages/options_src/Services/FrontendIcon.svelte b/src/pages/options_src/Services/FrontendIcon.svelte new file mode 100644 index 00000000..24942fd6 --- /dev/null +++ b/src/pages/options_src/Services/FrontendIcon.svelte @@ -0,0 +1,43 @@ + + +{#if imageType} + {#if imageType == "svgMono"} + {#if theme == "dark"} + {details.label} + {:else} + {details.label} + {/if} + {:else} + {details.label} + {/if} +{/if} diff --git a/src/pages/options_src/Services/Instances.svelte b/src/pages/options_src/Services/Instances.svelte new file mode 100644 index 00000000..892e395b --- /dev/null +++ b/src/pages/options_src/Services/Instances.svelte @@ -0,0 +1,233 @@ + + +{#if serviceConf.frontends[selectedFrontend].instanceList && redirects && blacklist} +
+
+
+ +
+ + + + + + + e.key === "Enter" && addInstance()} + /> + + + + {#each _options[selectedFrontend] as instance} + + + {instance} + {#if isCustomInstance(instance)} + custom + {/if} + {#if pingCache && pingCache[instance]} + {pingCache[instance].value} + {/if} + + + +
+ {/each} + + {#if redirects !== "disabled" && blacklist !== "disabled"} + {#if redirects[selectedFrontend] && redirects[selectedFrontend]["clearnet"]} + {#each Object.entries(_config.networks) as [networkName, network]} + {#if redirects[selectedFrontend] && redirects[selectedFrontend][networkName] && redirects[selectedFrontend][networkName].length > 0} + + +
+ {#each redirects[selectedFrontend][networkName] as instance} + + + {instance} + {#if blacklist.cloudflare.includes(instance)} + + cloudflare + + {/if} + {#if _options[selectedFrontend].includes(instance)} + chosen + {/if} + {#if pingCache && pingCache[instance]} + {pingCache[instance].value} + {/if} + + + +
+ {/each} + {/if} + {/each} + {:else} + + {/if} + {/if} +
+{/if} + + diff --git a/src/pages/options_src/Services/RedirectType.svelte b/src/pages/options_src/Services/RedirectType.svelte new file mode 100644 index 00000000..7f7a2843 --- /dev/null +++ b/src/pages/options_src/Services/RedirectType.svelte @@ -0,0 +1,99 @@ + + + { + serviceOptions.redirectType = e.target.options[e.target.options.selectedIndex].value + options.set(_options) + }} + {values} +/> + +{#if serviceConf.frontends[frontendName].desktopApp && serviceOptions.redirectType != "main_frame"} + + + { + serviceOptions.embedFrontend = e.detail.value + options.set(_options) + }} + items={embeddableFrontends} + > +
+ + {item.label} +
+
+ + {selection.label} +
+
+
+{/if} diff --git a/src/pages/options_src/Services/ServiceIcon.svelte b/src/pages/options_src/Services/ServiceIcon.svelte new file mode 100644 index 00000000..89393cf6 --- /dev/null +++ b/src/pages/options_src/Services/ServiceIcon.svelte @@ -0,0 +1,40 @@ + + +{#if imageType} + {#if imageType == "svgMono"} + {#if theme == "dark"} + {details.label} + {:else} + {details.label} + {/if} + {:else} + {details.label} + {/if} +{/if} diff --git a/src/pages/options_src/Services/Services.svelte b/src/pages/options_src/Services/Services.svelte new file mode 100644 index 00000000..cb1efacb --- /dev/null +++ b/src/pages/options_src/Services/Services.svelte @@ -0,0 +1,188 @@ + + +
+ + + (selectedService = e.detail.value)} + items={[ + ...Object.entries(_config.services).map(([serviceKey, service]) => { + return { value: serviceKey, label: service.name } + }), + ]} + > +
+ + {item.label} +
+
+ + {selection.label} +
+
+
+ +
+ + { + serviceOptions.enabled = e.target.checked + options.set(_options) + }} + /> + +
+ { + if (e.target.checked && !_options.popupServices.includes(selectedService)) { + _options.popupServices.push(selectedService) + } else if (_options.popupServices.includes(selectedService)) { + const index = _options.popupServices.indexOf(selectedService) + if (index !== -1) _options.popupServices.splice(index, 1) + } + options.set(_options) + }} + /> + + + + + { + serviceOptions.frontend = e.detail.value + options.set(_options) + }} + items={[ + ...Object.entries(serviceConf.frontends).map(([frontendId, frontend]) => ({ + value: frontendId, + label: frontend.name, + })), + ]} + > +
+ + {item.label} +
+
+ + {selection.label} +
+
+
+ + + + { + serviceOptions.unsupportedUrls = e.target.options[e.target.options.selectedIndex].value + options.set(_options) + }} + values={[ + { value: "bypass", name: "Bypass" }, + { value: "block", name: "Block" }, + ]} + /> + + {#if selectedService == "search"} + + + + {/if} + + + + +
+
+ + diff --git a/src/pages/options_src/Sidebar.svelte b/src/pages/options_src/Sidebar.svelte new file mode 100644 index 00000000..ff44995f --- /dev/null +++ b/src/pages/options_src/Sidebar.svelte @@ -0,0 +1,43 @@ + + +
+ page.set("general")} style={$page == "general" && "color: var(--active);"}> + + General + + page.set("services")} style={$page == "services" && "color: var(--active);"}> + + Services + + + + About + +
+ + diff --git a/src/pages/options_src/main.js b/src/pages/options_src/main.js new file mode 100644 index 00000000..c4012f4a --- /dev/null +++ b/src/pages/options_src/main.js @@ -0,0 +1,7 @@ +import App from "./App.svelte" + +const app = new App({ + target: document.body, +}) + +export default app diff --git a/src/pages/options_src/stores.js b/src/pages/options_src/stores.js new file mode 100644 index 00000000..782f6064 --- /dev/null +++ b/src/pages/options_src/stores.js @@ -0,0 +1,5 @@ +import { writable } from "svelte/store" + +export const options = writable(null) +export const config = writable(null) +export const page = writable("general") -- cgit 1.4.1