import { defineContentScript } from '#imports' import createElement from '@/utils/createElement' import { InjectAdapter as CustomEventInjectAdapter } from '@/service/adapter/customEvent' import '@/assets/style.css' import { defineProxy } from 'comctx' import type { Counter } from '@/service/counter' export default defineContentScript({ world: 'MAIN', runAt: 'document_end', matches: ['*://*.example.com/*'], main: async () => { document.head.querySelectorAll('style').forEach((style) => style.remove()) document.body.querySelector('div')?.remove() const [, injectContentCounter] = defineProxy(() => ({}) as Counter, { namespace: '__comctx-example__', debug: import.meta.env.DEV }) const counter = injectContentCounter(new CustomEventInjectAdapter('injected')) const initValue = await counter.getValue() const app = createElement(`

injected-script example

injected-script -> content-script -> background

${initValue}

Background Value: ${initValue}

`) app.querySelector('#decrement')!.addEventListener('click', async () => { await counter.decrement() }) app.querySelector('#increment')!.addEventListener('click', async () => { await counter.increment() }) counter.onChange((value) => { console.log('injected-script:', value) app.querySelector('#value')!.textContent = value.toString() app.querySelector('#background-value')!.textContent = `Background Value: ${value}` }) document.body.append(app) } })