import { name } from '@/../package.json' import { browser, createShadowRootUi, defineContentScript } from '#imports' import createElement from '@/utils/createElement' import '@/assets/style.css' import { defineProxy } from 'comctx' import { InjectAdapter as BrowserRuntimeInjectAdapter } from '@/service/adapter/browserRuntime' import { ProvideAdapter as CustomEventProvideAdapter } from '@/service/adapter/customEvent' import type { Counter } from '@/service/counter' export default defineContentScript({ world: 'ISOLATED', matches: ['*://*.example.com/*'], runAt: 'document_end', cssInjectionMode: 'ui', async main(ctx) { const [, injectBackgroundCounter] = defineProxy(() => ({}) as Counter, { namespace: browser.runtime.id, debug: import.meta.env.DEV }) const counter = injectBackgroundCounter(new BrowserRuntimeInjectAdapter('content')) // The bridge exposed to injected-script const [provideContentCounter] = defineProxy(() => counter, { namespace: '__comctx-example__', debug: import.meta.env.DEV }) provideContentCounter(new CustomEventProvideAdapter('content')) const ui = await createShadowRootUi(ctx, { name, position: 'inline', anchor: 'body', append: 'last', mode: 'open', inheritStyles: true, onMount: async (container) => { const initValue = await counter.getValue() const app = createElement(`
content-script -> background