@symfony/ux-turbo
Version:
Hotwire Turbo integration for Symfony
36 lines (35 loc) • 1.14 kB
JavaScript
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 };