import React from 'react' import { createRoot } from 'react-dom/client' import { Remesh } from 'remesh' import { RemeshRoot } from 'remesh-react' import { RemeshLogger } from 'remesh-logger' import { defineContentScript } from 'wxt/sandbox' import { createShadowRootUi } from 'wxt/client' import App from './App' import { IndexDBStorageImpl, BrowserSyncStorageImpl } from '@/domain/impls/Storage' import { PeerRoomImpl } from '@/domain/impls/PeerRoom' // import { PeerRoomImpl } from '@/domain/impls/PeerRoom2' import '@/assets/styles/tailwind.css' import '@/assets/styles/sonner.css' import { createElement } from '@/utils' import { ToastImpl } from '@/domain/impls/Toast' export default defineContentScript({ cssInjectionMode: 'ui', runAt: 'document_end', matches: ['https://*/*'], excludeMatches: ['*://localhost/*', '*://127.0.0.1/*'], async main(ctx) { const store = Remesh.store({ externs: [IndexDBStorageImpl, BrowserSyncStorageImpl, PeerRoomImpl, ToastImpl], inspectors: __DEV__ ? [RemeshLogger()] : [] }) const ui = await createShadowRootUi(ctx, { name: __NAME__, position: 'inline', anchor: 'body', append: 'last', mode: 'open', onMount: (container) => { const app = createElement('
') container.append(app) const root = createRoot(app) root.render( ) return root }, onRemove: (root) => { root?.unmount() } }) ui.mount() } })