export default class extends HTMLElement { connectedCallback () { this.addEventListener('click', this.dispatch) } disconnectedCallback () { this.removeEventListener('click', this.dispatch) } dispatch = async () => { const bridge = window.webkit?.messageHandlers?.modal if (!bridge || this.dataset.loading) return let detail = this.dataset.detail || 'null' if (this.dataset.src) { this.dataset.loading = 'true' try { const response = await fetch(this.dataset.src, { headers: { Accept: 'application/json' } }) if (!response.ok) return detail = await response.text() } catch { return } finally { delete this.dataset.loading } } bridge.postMessage({ action: 'dispatch', name: this.dataset.name, detail }) } }