UNPKG

ziko

Version:

A versatile JavaScript library offering a rich set of Hyperscript Based UI components, advanced mathematical utilities, interactivity ,animations, client side routing and more ...

38 lines (37 loc) 1.2 kB
import { useEventEmitter } from "../../../hooks/use-event-emitter.js"; class ZikoUseFavIcon{ constructor(FavIcon,withEmitter=true){ this.#init(); this.cache={ Emitter:null } if(withEmitter)this.useEventEmitter(); this.set(FavIcon); } #init(){ this.__FavIcon__ = document.querySelector("link[rel*='icon']") || document?.createElement('link'); this.__FavIcon__.type = 'image/x-icon'; this.__FavIcon__.rel = 'shortcut icon'; return this; } set(href){ if(href!==this.__FavIcon__.href){ this.__FavIcon__.href=href; if(this.cache.Emitter)this.cache.Emitter.emit("ziko:favicon-changed"); } return this; } get current(){ return document.__FavIcon__.href; } onChange(callback){ if(this.cache.Emitter)this.cache.Emitter.on("ziko:favicon-changed",callback); return this; } useEventEmitter(){ this.cache.Emitter=useEventEmitter(); return this; } } const useFavIcon=(FavIcon,withEmitter)=>new ZikoUseFavIcon(FavIcon,withEmitter); export{ useFavIcon }