36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
import { connectStreamSource, disconnectStreamSource } from '@hotwired/turbo';
|
|
|
|
class default_1 extends Controller {
|
|
initialize() {
|
|
const errorMessages = [];
|
|
if (!this.hasHubValue)
|
|
errorMessages.push('A "hub" value pointing to the Mercure hub must be provided.');
|
|
if (!this.hasTopicValue)
|
|
errorMessages.push('A "topic" value must be provided.');
|
|
if (errorMessages.length)
|
|
throw new Error(errorMessages.join(' '));
|
|
const u = new URL(this.hubValue);
|
|
u.searchParams.append('topic', this.topicValue);
|
|
this.url = u.toString();
|
|
}
|
|
connect() {
|
|
if (this.url) {
|
|
this.es = new EventSource(this.url);
|
|
connectStreamSource(this.es);
|
|
}
|
|
}
|
|
disconnect() {
|
|
if (this.es) {
|
|
this.es.close();
|
|
disconnectStreamSource(this.es);
|
|
}
|
|
}
|
|
}
|
|
default_1.values = {
|
|
topic: String,
|
|
hub: String,
|
|
};
|
|
|
|
export { default_1 as default };
|