43 行
1.0 KiB
TypeScript
43 行
1.0 KiB
TypeScript
import type { XWebViewConfig } from './types'
|
|
|
|
export type XWebViewControllerAPI = {
|
|
refresh: () => void
|
|
close: () => void
|
|
goBack: () => void
|
|
goForward: () => void
|
|
copyUrl: () => void
|
|
postMessageToWeb: (jsString: string) => void
|
|
getTitle: () => string
|
|
}
|
|
|
|
let _config: XWebViewConfig = {}
|
|
let _controller: XWebViewControllerAPI | null = null
|
|
|
|
export function openXWebView(
|
|
navigate: (pluginId: string) => void,
|
|
config: XWebViewConfig,
|
|
) {
|
|
_config = { ...config }
|
|
navigate('xwebview')
|
|
}
|
|
|
|
export function getXWebViewConfig(): XWebViewConfig {
|
|
return _config
|
|
}
|
|
|
|
export function setXWebViewController(
|
|
controller: XWebViewControllerAPI | null,
|
|
) {
|
|
_controller = controller
|
|
}
|
|
|
|
export const XWebViewControl: XWebViewControllerAPI = {
|
|
refresh: () => _controller?.refresh(),
|
|
close: () => _controller?.close(),
|
|
goBack: () => _controller?.goBack(),
|
|
goForward: () => _controller?.goForward(),
|
|
copyUrl: () => _controller?.copyUrl(),
|
|
postMessageToWeb: js => _controller?.postMessageToWeb(js),
|
|
getTitle: () => _controller?.getTitle() ?? '',
|
|
}
|