cleanup
This commit is contained in:
parent
cd180a6d8c
commit
921881d980
4 changed files with 11 additions and 11 deletions
2
framework/assets/dist/htmgo.js
vendored
2
framework/assets/dist/htmgo.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -46,7 +46,6 @@ function onUrlChange(newUrl: string) {
|
|||
for (let [key, values] of url.searchParams) {
|
||||
let eventName = "qs:" + key;
|
||||
if (triggers.includes(eventName)) {
|
||||
console.log("triggering", eventName);
|
||||
htmx.trigger(element, eventName, null);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,15 @@
|
|||
import {ws} from "./ws";
|
||||
|
||||
window.onload = addWsEventHandlers;
|
||||
window.onload = function () {
|
||||
const elements = document.querySelectorAll("[hx-extension]");
|
||||
for (let element of Array.from(elements)) {
|
||||
const value = element.getAttribute("hx-extension");
|
||||
if(value != null && value.split(" ").includes("ws")) {
|
||||
addWsEventHandlers()
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function sendWs(message: Record<string, any>) {
|
||||
if(ws != null && ws.readyState === WebSocket.OPEN) {
|
||||
|
|
@ -16,20 +25,16 @@ function walk(node: Node, cb: (node: Node) => void) {
|
|||
}
|
||||
|
||||
export function addWsEventHandlers() {
|
||||
console.log('add ws event handlers')
|
||||
const observer = new MutationObserver(register)
|
||||
observer.observe(document.body, {childList: true, subtree: true})
|
||||
|
||||
let added = new Set<string>();
|
||||
|
||||
function register(mutations: MutationRecord[]) {
|
||||
console.log(mutations)
|
||||
|
||||
for (let mutation of mutations) {
|
||||
for (let removedNode of Array.from(mutation.removedNodes)) {
|
||||
walk(removedNode, (node) => {
|
||||
if (node instanceof HTMLElement) {
|
||||
console.log('removing', node.innerHTML)
|
||||
const handlerId = node.getAttribute("data-handler-id")
|
||||
if(handlerId) {
|
||||
added.delete(handlerId)
|
||||
|
|
@ -53,11 +58,9 @@ export function addWsEventHandlers() {
|
|||
|
||||
ids.add(id);
|
||||
if (added.has(id)) {
|
||||
console.debug('already added, skipping', id)
|
||||
return;
|
||||
}
|
||||
added.add(id);
|
||||
console.debug('adding event listener for ws send', id, event)
|
||||
element.addEventListener(event, (e) => {
|
||||
sendWs({id, event})
|
||||
});
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ function connectWs(ele: Element, url: string, attempt: number = 0) {
|
|||
ws.addEventListener("close", function(event) {
|
||||
htmx.trigger(ele, "htmx:wsClose", {event: event});
|
||||
const delay = exponentialBackoff(attempt);
|
||||
console.info(`ws closed, reconnecting in ${delay}ms`)
|
||||
setTimeout(() => {
|
||||
connectWs(ele, url, attempt + 1)
|
||||
}, delay)
|
||||
|
|
@ -69,7 +68,6 @@ function connectWs(ele: Element, url: string, attempt: number = 0) {
|
|||
})
|
||||
|
||||
ws.addEventListener("message", function(event) {
|
||||
console.debug('ws message:', event.data)
|
||||
const settleInfo = api.makeSettleInfo(ele);
|
||||
htmx.trigger(ele, "htmx:wsBeforeMessage", {event: event});
|
||||
const response = event.data
|
||||
|
|
|
|||
Loading…
Reference in a new issue