Files
archived-linsa/web/lib/providers/deep-link-provider.tsx
Aslam c3e99d1366 feat: command palette (#140)
* wip

* feat: new command palette

* chore: add universal search

* chore: cleanup

* feat: use title class for heading

* feat: add topic

* chore: advance search
2024-09-06 12:22:48 +03:00

36 lines
895 B
TypeScript

"use client"
import React, { useEffect, ReactNode } from "react"
interface DeepLinkProviderProps {
children: ReactNode
}
export function DeepLinkProvider({ children }: DeepLinkProviderProps) {
useEffect(() => {
const eventHandlers: { [key: string]: (event: Event) => void } = {
click: (event: Event) => {
const e = event as MouseEvent
// console.log("Click event:", { x: e.clientX, y: e.clientY })
},
keydown: (event: Event) => {
const e = event as KeyboardEvent
// console.log("Keydown event:", { key: e.key, code: e.code })
}
}
// just a react thing
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
window.addEventListener(eventType, handler)
})
return () => {
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
window.removeEventListener(eventType, handler)
})
}
}, [])
return <>{children}</>
}