diff --git a/lib/shadowDom.ts b/lib/shadowDom.ts deleted file mode 100644 index 9eff7eea..00000000 --- a/lib/shadowDom.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Plugin } from "vite"; - -export default function shadowDom(): Plugin { - return { - name: 'merge-css-shadow-dom', - enforce: 'post', - apply: 'serve', - transform(src, id) { - if (/\.(css).*$/.test(id)) { - const fn = - "import { updateStyle, removeStyle } from '@/shadowDomUtils.ts';\n"; - let updatedSrc = fn + src; - updatedSrc = updatedSrc.replace( - '__vite__updateStyle(', - 'updateStyle(', - ); - updatedSrc = updatedSrc.replace( - '__vite__removeStyle(', - 'removeStyle(', - ); - return { - code: updatedSrc, - }; - } - } - } -} \ No newline at end of file diff --git a/src/interface/components/Button.svelte b/src/interface/components/Button.svelte index 97f07499..de26f3b2 100644 --- a/src/interface/components/Button.svelte +++ b/src/interface/components/Button.svelte @@ -2,6 +2,6 @@ let { onClick, text } = $props<{ onClick: () => void, text: string, [key: string]: any }>(); - \ No newline at end of file diff --git a/src/interface/index.ts b/src/interface/index.ts index af9715be..e044d2dd 100644 --- a/src/interface/index.ts +++ b/src/interface/index.ts @@ -1,25 +1,8 @@ import "./index.css" -import { mount } from "svelte" -import type { ComponentType } from "svelte" import Settings from "./pages/settings.svelte" import IconFamily from '@/resources/fonts/IconFamily.woff' import browser from "webextension-polyfill" - -export default function renderSvelte( - Component: ComponentType | any, - mountPoint: ShadowRoot | HTMLElement, - props: Record = {}, -) { - const app = mount(Component, { - target: mountPoint, - props: { - standalone: true, - ...props, - }, - }) - - return app -} +import renderSvelte from "./main" function InjectCustomIcons() { console.info('[BetterSEQTA+] Injecting Icons') diff --git a/src/interface/main.ts b/src/interface/main.ts index ac5ab2e5..c7d1e02d 100644 --- a/src/interface/main.ts +++ b/src/interface/main.ts @@ -1,7 +1,6 @@ -//import styles from "./index.css?inline" import { mount } from "svelte" import type { ComponentType } from "svelte" -import './index.css' +import style from './index.css?inline' export default function renderSvelte( Component: ComponentType | any, @@ -16,5 +15,9 @@ export default function renderSvelte( }, }) + const styleElement = document.createElement('style') + styleElement.textContent = style + mountPoint.appendChild(styleElement) + return app } diff --git a/src/shadowDomUtils.ts b/src/shadowDomUtils.ts deleted file mode 100644 index 5ab6339e..00000000 --- a/src/shadowDomUtils.ts +++ /dev/null @@ -1,59 +0,0 @@ -const sheetsMap = new Map(); -export function updateStyle(id: string, content: string) { - let style = sheetsMap.get(id); - { - if (style && !(style instanceof HTMLStyleElement)) { - removeStyle(id); - style = undefined; - } - if (!style) { - style = document.createElement('style'); - style.setAttribute('type', 'text/css'); - style.innerHTML = content; - if (window.location.href.includes('chrome-extension://')) { - document.head.appendChild(style); - } else { - const root = document.getElementById('ExtensionPopup'); - - // if no root try again in a second - if (!root) { - setTimeout(() => updateStyle(id, content), 1000); - return; - } - const shadowEl = root?.shadowRoot; - shadowEl?.appendChild(style); - } - } else { - style.innerHTML = content; - } - } - sheetsMap.set(id, style); -} - -export function removeStyle(id: string) { - const style = sheetsMap.get(id); - if (style) { - if (window.location.href.includes('chrome-extension://')) { - if (style instanceof CSSStyleSheet) { - (document as any).adoptedStyleSheets = ( - document as any - ).adoptedStyleSheets.filter((s: any) => s !== style); - } else { - document.head.removeChild(style); - } - } else { - const root = document.getElementById('ExtensionPopup'); - const shadowEl: any = root?.shadowRoot; - if (style instanceof CSSStyleSheet) { - if (shadowEl) { - shadowEl.adoptedStyleSheets = shadowEl.adoptedStyleSheets.filter( - (s: any) => s !== style, - ); - } - } else if (shadowEl) { - shadowEl.removeChild(style); - } - } - sheetsMap.delete(id); - } -} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 6ac8c430..9254e6d8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,7 +18,7 @@ import { firefox } from './src/manifests/firefox'; import { opera } from './src/manifests/opera'; import { safari } from './src/manifests/safari'; import { crx } from '@crxjs/vite-plugin'; -import shadowDom from './lib/shadowDom'; + import touchGlobalCSSPlugin from './lib/touchGlobalCSS'; const targets: BuildTarget[] = [ chrome, brave, edge, firefox, opera, safari @@ -40,7 +40,6 @@ export default defineConfig(({ command }) => ({ browser: mode.toLowerCase() === "firefox" ? "firefox" : "chrome" }), updateManifestPlugin(), - shadowDom(), touchGlobalCSSPlugin(), ...(command === 'build' ? [ClosePlugin()] : []) ],