UNPKG

@symfony/ux-turbo

Version:

Hotwire Turbo integration for Symfony

36 lines (35 loc) 1.14 kB
import { Controller } from "@hotwired/stimulus"; import { connectStreamSource, disconnectStreamSource } from "@hotwired/turbo"; var _Class = class extends Controller { initialize() { const errorMessages = []; if (!this.hasHubValue) errorMessages.push("A \"hub\" value pointing to the Mercure hub must be provided."); if (!this.hasTopicValue && !this.hasTopicsValue) errorMessages.push("Either \"topic\" or \"topics\" value must be provided."); if (errorMessages.length) throw new Error(errorMessages.join(" ")); const u = new URL(this.hubValue); if (this.hasTopicValue) u.searchParams.append("topic", this.topicValue); else this.topicsValue.forEach((topic) => { u.searchParams.append("topic", topic); }); this.url = u.toString(); } connect() { if (this.url) { this.es = new EventSource(this.url, { withCredentials: this.withCredentialsValue }); connectStreamSource(this.es); } } disconnect() { if (this.es) { this.es.close(); disconnectStreamSource(this.es); } } }; _Class.values = { topic: String, topics: Array, hub: String, withCredentials: Boolean }; export { _Class as default };